| … | … | @@ -1,13 +1,13 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/hyperdiscovery", |
| 3 | "version": "1.1.1", | |
| 3 | "version": "1.2.0", | |
| 4 | 4 | "description": "Peer discovery powered by HyperDHT", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "dependencies": { |
| 7 | 7 | "b4a": "^1.6.7", |
| 8 | "compact-encoding": "^2.16.1", | |
| 8 | "compact-encoding": "^3.0.0", | |
| 9 | 9 | "hypercore-crypto": "^3.6.0", |
| 10 | "hyperdb": "^5.0.0", | |
| 10 | "hyperdb": "^6.6.3", | |
| 11 | 11 | "hyperdht": "^6.20.5", |
| 12 | 12 | "hyperschema": "^1.12.1", |
| 13 | 13 | "protomux": "^3.10.1", |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/hyperindex", |
| 3 | "version": "2.3.5", | |
| 3 | "version": "2.4.0", | |
| 4 | 4 | "description": "Indexing and aggregation on Hyperbee", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "files": [ |
| … | … | @@ -27,6 +27,7 @@ |
| 27 | 27 | "homepage": "https://github.com/holepunchto/hyperindex#readme", |
| 28 | 28 | "devDependencies": { |
| 29 | 29 | "brittle": "^3.2.1", |
| 30 | "compact-encoding": "^3.0.1", | |
| 30 | 31 | "hyperbee": "^2.12.0", |
| 31 | 32 | "hypercore": "^10.9.2", |
| 32 | 33 | "random-access-memory": "^6.2.0", |
| … | … | @@ -37,7 +38,6 @@ |
| 37 | 38 | }, |
| 38 | 39 | "dependencies": { |
| 39 | 40 | "b4a": "^1.6.6", |
| 40 | "compact-encoding": "^2.11.0", | |
| 41 | 41 | "index-encoder": "3.3.1", |
| 42 | 42 | "mutexify": "^1.4.0", |
| 43 | 43 | "ready-resource": "^1.0.0", |
| … | … | @@ -15,26 +15,26 @@ module.exports = class extends t { |
| 15 | 15 | clients() { |
| 16 | 16 | return this._clientsBySwarmId.values() |
| 17 | 17 | } |
| 18 | updateStatus(t, e, s = null, l = null) { | |
| 19 | let a = this._statusById.get(e) | |
| 20 | const d = null === t ? null : this._clientsBySwarmId.get(t) || null | |
| 21 | a || | |
| 22 | ((a = { ready: !1, stream: new MediaStream(), videoMuted: !1 !== s, audioMuted: !1 !== l }), | |
| 23 | this._statusById.set(e, a)) | |
| 24 | let u = !1 | |
| 25 | ;(null !== s && ((u = u || a.videoMuted !== s), (a.videoMuted = s)), | |
| 26 | null !== l && ((u = u || a.audioMuted !== l), (a.audioMuted = l))) | |
| 27 | const n = null !== d && null !== a.stream | |
| 28 | if (n) { | |
| 29 | const t = d.remoteStreams.get(e) | |
| 18 | updateStatus(t, e, s = null, a = null) { | |
| 19 | let d = this._statusById.get(e) | |
| 20 | const l = null === t ? null : this._clientsBySwarmId.get(t) || null | |
| 21 | d || | |
| 22 | ((d = { ready: !1, stream: new MediaStream(), videoMuted: !1 !== s, audioMuted: !1 !== a }), | |
| 23 | this._statusById.set(e, d)) | |
| 24 | let n = !1 | |
| 25 | ;(null !== s && ((n = n || d.videoMuted !== s), (d.videoMuted = s)), | |
| 26 | null !== a && ((n = n || d.audioMuted !== a), (d.audioMuted = a))) | |
| 27 | const i = null !== l && null !== d.stream | |
| 28 | if (i) { | |
| 29 | const t = l.remoteStreams.get(e) | |
| 30 | 30 | if (t) { |
| 31 | const e = a.stream | |
| 31 | const e = d.stream | |
| 32 | 32 | t.getTracks().forEach((t) => { |
| 33 | 33 | e.getTrackById(t.id) || e.addTrack(t) |
| 34 | 34 | }) |
| 35 | } else d.remoteStreams.set(e, a.stream) | |
| 35 | } else l.remoteStreams.set(e, d.stream) | |
| 36 | 36 | } |
| 37 | return (a.ready !== n && ((u = !0), (a.ready = n)), u && this.emit("change", e, a), a) | |
| 37 | return (d.ready !== i && ((n = !0), (d.ready = i)), n && this.emit("change", e, d), d) | |
| 38 | 38 | } |
| 39 | 39 | getStatus(t) { |
| 40 | 40 | let e = this._statusById.get(t) |
| … | … | @@ -43,4 +43,8 @@ module.exports = class extends t { |
| 43 | 43 | deleteStatus(t) { |
| 44 | 44 | this._statusById.delete(t) |
| 45 | 45 | } |
| 46 | emitChangeOnTrackAdded(t) { | |
| 47 | const e = this._statusById.get(t) | |
| 48 | e && e.ready && 0 !== e.stream.getVideoTracks().length && this.emit("change", t, e) | |
| 49 | } | |
| 46 | 50 | } |
| … | … | @@ -89,7 +89,8 @@ module.exports = class extends e { |
| 89 | 89 | : "2" === t.mid && |
| 90 | 90 | ((this._screenTransceiver = t), |
| 91 | 91 | null !== this.remoteScreenStreamId && |
| 92 | this._remotes.getStatus(this.remoteScreenStreamId).stream.addTrack(e)), | |
| 92 | (this._remotes.getStatus(this.remoteScreenStreamId).stream.addTrack(e), | |
| 93 | this._remotes.emitChangeOnTrackAdded(this.remoteScreenStreamId))), | |
| 93 | 94 | this.isPolite && this._trackReady.notify(), |
| 94 | 95 | this._maybeEmitReady()) |
| 95 | 96 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-call", |
| 3 | "version": "10.3.3", | |
| 3 | "version": "10.3.4", | |
| 4 | 4 | "description": "Track management and relaying for Keet", |
| 5 | 5 | "main": "client/index.js", |
| 6 | 6 | "files": [ |
| … | … | @@ -0,0 +1 @@ |
| 1 | * text=auto eol=lf |
| … | … | @@ -0,0 +1,23 @@ |
| 1 | name: Build Status | |
| 2 | on: | |
| 3 | push: | |
| 4 | branches: | |
| 5 | - main | |
| 6 | pull_request: | |
| 7 | branches: | |
| 8 | - main | |
| 9 | jobs: | |
| 10 | build: | |
| 11 | strategy: | |
| 12 | matrix: | |
| 13 | node-version: [lts/*] | |
| 14 | os: [ubuntu-latest, macos-latest, windows-latest] | |
| 15 | runs-on: ${{ matrix.os }} | |
| 16 | steps: | |
| 17 | - uses: actions/checkout@v2 | |
| 18 | - name: Use Node.js ${{ matrix.node-version }} | |
| 19 | uses: actions/setup-node@v2 | |
| 20 | with: | |
| 21 | node-version: ${{ matrix.node-version }} | |
| 22 | - run: npm install | |
| 23 | - run: npm test |
| … | … | @@ -0,0 +1 @@ |
| 1 | prettier-config-holepunch |
| … | … | @@ -0,0 +1,201 @@ |
| 1 | Apache License | |
| 2 | Version 2.0, January 2004 | |
| 3 | http://www.apache.org/licenses/ | |
| 4 | ||
| 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |
| 6 | ||
| 7 | 1. Definitions. | |
| 8 | ||
| 9 | "License" shall mean the terms and conditions for use, reproduction, | |
| 10 | and distribution as defined by Sections 1 through 9 of this document. | |
| 11 | ||
| 12 | "Licensor" shall mean the copyright owner or entity authorized by | |
| 13 | the copyright owner that is granting the License. | |
| 14 | ||
| 15 | "Legal Entity" shall mean the union of the acting entity and all | |
| 16 | other entities that control, are controlled by, or are under common | |
| 17 | control with that entity. For the purposes of this definition, | |
| 18 | "control" means (i) the power, direct or indirect, to cause the | |
| 19 | direction or management of such entity, whether by contract or | |
| 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the | |
| 21 | outstanding shares, or (iii) beneficial ownership of such entity. | |
| 22 | ||
| 23 | "You" (or "Your") shall mean an individual or Legal Entity | |
| 24 | exercising permissions granted by this License. | |
| 25 | ||
| 26 | "Source" form shall mean the preferred form for making modifications, | |
| 27 | including but not limited to software source code, documentation | |
| 28 | source, and configuration files. | |
| 29 | ||
| 30 | "Object" form shall mean any form resulting from mechanical | |
| 31 | transformation or translation of a Source form, including but | |
| 32 | not limited to compiled object code, generated documentation, | |
| 33 | and conversions to other media types. | |
| 34 | ||
| 35 | "Work" shall mean the work of authorship, whether in Source or | |
| 36 | Object form, made available under the License, as indicated by a | |
| 37 | copyright notice that is included in or attached to the work | |
| 38 | (an example is provided in the Appendix below). | |
| 39 | ||
| 40 | "Derivative Works" shall mean any work, whether in Source or Object | |
| 41 | form, that is based on (or derived from) the Work and for which the | |
| 42 | editorial revisions, annotations, elaborations, or other modifications | |
| 43 | represent, as a whole, an original work of authorship. For the purposes | |
| 44 | of this License, Derivative Works shall not include works that remain | |
| 45 | separable from, or merely link (or bind by name) to the interfaces of, | |
| 46 | the Work and Derivative Works thereof. | |
| 47 | ||
| 48 | "Contribution" shall mean any work of authorship, including | |
| 49 | the original version of the Work and any modifications or additions | |
| 50 | to that Work or Derivative Works thereof, that is intentionally | |
| 51 | submitted to Licensor for inclusion in the Work by the copyright owner | |
| 52 | or by an individual or Legal Entity authorized to submit on behalf of | |
| 53 | the copyright owner. For the purposes of this definition, "submitted" | |
| 54 | means any form of electronic, verbal, or written communication sent | |
| 55 | to the Licensor or its representatives, including but not limited to | |
| 56 | communication on electronic mailing lists, source code control systems, | |
| 57 | and issue tracking systems that are managed by, or on behalf of, the | |
| 58 | Licensor for the purpose of discussing and improving the Work, but | |
| 59 | excluding communication that is conspicuously marked or otherwise | |
| 60 | designated in writing by the copyright owner as "Not a Contribution." | |
| 61 | ||
| 62 | "Contributor" shall mean Licensor and any individual or Legal Entity | |
| 63 | on behalf of whom a Contribution has been received by Licensor and | |
| 64 | subsequently incorporated within the Work. | |
| 65 | ||
| 66 | 2. Grant of Copyright License. Subject to the terms and conditions of | |
| 67 | this License, each Contributor hereby grants to You a perpetual, | |
| 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
| 69 | copyright license to reproduce, prepare Derivative Works of, | |
| 70 | publicly display, publicly perform, sublicense, and distribute the | |
| 71 | Work and such Derivative Works in Source or Object form. | |
| 72 | ||
| 73 | 3. Grant of Patent License. Subject to the terms and conditions of | |
| 74 | this License, each Contributor hereby grants to You a perpetual, | |
| 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
| 76 | (except as stated in this section) patent license to make, have made, | |
| 77 | use, offer to sell, sell, import, and otherwise transfer the Work, | |
| 78 | where such license applies only to those patent claims licensable | |
| 79 | by such Contributor that are necessarily infringed by their | |
| 80 | Contribution(s) alone or by combination of their Contribution(s) | |
| 81 | with the Work to which such Contribution(s) was submitted. If You | |
| 82 | institute patent litigation against any entity (including a | |
| 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work | |
| 84 | or a Contribution incorporated within the Work constitutes direct | |
| 85 | or contributory patent infringement, then any patent licenses | |
| 86 | granted to You under this License for that Work shall terminate | |
| 87 | as of the date such litigation is filed. | |
| 88 | ||
| 89 | 4. Redistribution. You may reproduce and distribute copies of the | |
| 90 | Work or Derivative Works thereof in any medium, with or without | |
| 91 | modifications, and in Source or Object form, provided that You | |
| 92 | meet the following conditions: | |
| 93 | ||
| 94 | (a) You must give any other recipients of the Work or | |
| 95 | Derivative Works a copy of this License; and | |
| 96 | ||
| 97 | (b) You must cause any modified files to carry prominent notices | |
| 98 | stating that You changed the files; and | |
| 99 | ||
| 100 | (c) You must retain, in the Source form of any Derivative Works | |
| 101 | that You distribute, all copyright, patent, trademark, and | |
| 102 | attribution notices from the Source form of the Work, | |
| 103 | excluding those notices that do not pertain to any part of | |
| 104 | the Derivative Works; and | |
| 105 | ||
| 106 | (d) If the Work includes a "NOTICE" text file as part of its | |
| 107 | distribution, then any Derivative Works that You distribute must | |
| 108 | include a readable copy of the attribution notices contained | |
| 109 | within such NOTICE file, excluding those notices that do not | |
| 110 | pertain to any part of the Derivative Works, in at least one | |
| 111 | of the following places: within a NOTICE text file distributed | |
| 112 | as part of the Derivative Works; within the Source form or | |
| 113 | documentation, if provided along with the Derivative Works; or, | |
| 114 | within a display generated by the Derivative Works, if and | |
| 115 | wherever such third-party notices normally appear. The contents | |
| 116 | of the NOTICE file are for informational purposes only and | |
| 117 | do not modify the License. You may add Your own attribution | |
| 118 | notices within Derivative Works that You distribute, alongside | |
| 119 | or as an addendum to the NOTICE text from the Work, provided | |
| 120 | that such additional attribution notices cannot be construed | |
| 121 | as modifying the License. | |
| 122 | ||
| 123 | You may add Your own copyright statement to Your modifications and | |
| 124 | may provide additional or different license terms and conditions | |
| 125 | for use, reproduction, or distribution of Your modifications, or | |
| 126 | for any such Derivative Works as a whole, provided Your use, | |
| 127 | reproduction, and distribution of the Work otherwise complies with | |
| 128 | the conditions stated in this License. | |
| 129 | ||
| 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, | |
| 131 | any Contribution intentionally submitted for inclusion in the Work | |
| 132 | by You to the Licensor shall be under the terms and conditions of | |
| 133 | this License, without any additional terms or conditions. | |
| 134 | Notwithstanding the above, nothing herein shall supersede or modify | |
| 135 | the terms of any separate license agreement you may have executed | |
| 136 | with Licensor regarding such Contributions. | |
| 137 | ||
| 138 | 6. Trademarks. This License does not grant permission to use the trade | |
| 139 | names, trademarks, service marks, or product names of the Licensor, | |
| 140 | except as required for reasonable and customary use in describing the | |
| 141 | origin of the Work and reproducing the content of the NOTICE file. | |
| 142 | ||
| 143 | 7. Disclaimer of Warranty. Unless required by applicable law or | |
| 144 | agreed to in writing, Licensor provides the Work (and each | |
| 145 | Contributor provides its Contributions) on an "AS IS" BASIS, | |
| 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |
| 147 | implied, including, without limitation, any warranties or conditions | |
| 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |
| 149 | PARTICULAR PURPOSE. You are solely responsible for determining the | |
| 150 | appropriateness of using or redistributing the Work and assume any | |
| 151 | risks associated with Your exercise of permissions under this License. | |
| 152 | ||
| 153 | 8. Limitation of Liability. In no event and under no legal theory, | |
| 154 | whether in tort (including negligence), contract, or otherwise, | |
| 155 | unless required by applicable law (such as deliberate and grossly | |
| 156 | negligent acts) or agreed to in writing, shall any Contributor be | |
| 157 | liable to You for damages, including any direct, indirect, special, | |
| 158 | incidental, or consequential damages of any character arising as a | |
| 159 | result of this License or out of the use or inability to use the | |
| 160 | Work (including but not limited to damages for loss of goodwill, | |
| 161 | work stoppage, computer failure or malfunction, or any and all | |
| 162 | other commercial damages or losses), even if such Contributor | |
| 163 | has been advised of the possibility of such damages. | |
| 164 | ||
| 165 | 9. Accepting Warranty or Additional Liability. While redistributing | |
| 166 | the Work or Derivative Works thereof, You may choose to offer, | |
| 167 | and charge a fee for, acceptance of support, warranty, indemnity, | |
| 168 | or other liability obligations and/or rights consistent with this | |
| 169 | License. However, in accepting such obligations, You may act only | |
| 170 | on Your own behalf and on Your sole responsibility, not on behalf | |
| 171 | of any other Contributor, and only if You agree to indemnify, | |
| 172 | defend, and hold each Contributor harmless for any liability | |
| 173 | incurred by, or claims asserted against, such Contributor by reason | |
| 174 | of your accepting any such warranty or additional liability. | |
| 175 | ||
| 176 | END OF TERMS AND CONDITIONS | |
| 177 | ||
| 178 | APPENDIX: How to apply the Apache License to your work. | |
| 179 | ||
| 180 | To apply the Apache License to your work, attach the following | |
| 181 | boilerplate notice, with the fields enclosed by brackets "[]" | |
| 182 | replaced with your own identifying information. (Don't include | |
| 183 | the brackets!) The text should be enclosed in the appropriate | |
| 184 | comment syntax for the file format. We also recommend that a | |
| 185 | file or class name and description of purpose be included on the | |
| 186 | same "printed page" as the copyright notice for easier | |
| 187 | identification within third-party archives. | |
| 188 | ||
| 189 | Copyright [yyyy] [name of copyright owner] | |
| 190 | ||
| 191 | Licensed under the Apache License, Version 2.0 (the "License"); | |
| 192 | you may not use this file except in compliance with the License. | |
| 193 | You may obtain a copy of the License at | |
| 194 | ||
| 195 | http://www.apache.org/licenses/LICENSE-2.0 | |
| 196 | ||
| 197 | Unless required by applicable law or agreed to in writing, software | |
| 198 | distributed under the License is distributed on an "AS IS" BASIS, | |
| 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 200 | See the License for the specific language governing permissions and | |
| 201 | limitations under the License. |
| … | … | @@ -0,0 +1,13 @@ |
| 1 | Copyright 2023 Holepunch Inc | |
| 2 | ||
| 3 | Licensed under the Apache License, Version 2.0 (the "License"); | |
| 4 | you may not use this file except in compliance with the License. | |
| 5 | You may obtain a copy of the License at | |
| 6 | ||
| 7 | http://www.apache.org/licenses/LICENSE-2.0 | |
| 8 | ||
| 9 | Unless required by applicable law or agreed to in writing, software | |
| 10 | distributed under the License is distributed on an "AS IS" BASIS, | |
| 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 12 | See the License for the specific language governing permissions and | |
| 13 | limitations under the License. |
| … | … | @@ -0,0 +1,165 @@ |
| 1 | # compact-encoding | |
| 2 | ||
| 3 | A series of compact encoding schemes for building small and fast parsers and serializers | |
| 4 | ||
| 5 | ``` | |
| 6 | npm install compact-encoding | |
| 7 | ``` | |
| 8 | ||
| 9 | ## Usage | |
| 10 | ||
| 11 | ```js | |
| 12 | const cenc = require('compact-encoding') | |
| 13 | ||
| 14 | const state = cenc.state() | |
| 15 | ||
| 16 | // use preencode to figure out how big a buffer is needed | |
| 17 | cenc.uint.preencode(state, 42) | |
| 18 | cenc.string.preencode(state, 'hi') | |
| 19 | ||
| 20 | console.log(state) // { start: 0, end: 4, buffer: null } | |
| 21 | ||
| 22 | state.buffer = Buffer.allocUnsafe(state.end) | |
| 23 | ||
| 24 | // then use encode to actually encode it to the buffer | |
| 25 | cenc.uint.encode(state, 42) | |
| 26 | cenc.string.encode(state, 'hi') | |
| 27 | ||
| 28 | // to decode it simply use decode instead | |
| 29 | ||
| 30 | state.start = 0 | |
| 31 | cenc.uint.decode(state) // 42 | |
| 32 | cenc.string.decode(state) // 'hi' | |
| 33 | ``` | |
| 34 | ||
| 35 | ## Encoder API | |
| 36 | ||
| 37 | #### `state` | |
| 38 | ||
| 39 | Should be an object that looks like this `{ start, end, buffer }`. | |
| 40 | ||
| 41 | You can also get a blank state object using `cenc.state()`. | |
| 42 | ||
| 43 | - `start` is the byte offset to start encoding/decoding at. | |
| 44 | - `end` is the byte offset indicating the end of the buffer. | |
| 45 | - `buffer` should be either a Node.js Buffer or Uint8Array. | |
| 46 | ||
| 47 | #### `enc.preencode(state, val)` | |
| 48 | ||
| 49 | Does a fast preencode dry-run that only sets state.end. | |
| 50 | Use this to figure out how big of a buffer you need. | |
| 51 | ||
| 52 | #### `enc.encode(state, val)` | |
| 53 | ||
| 54 | Encodes `val` into `state.buffer` at position `state.start`. | |
| 55 | Updates `state.start` to point after the encoded value when done. | |
| 56 | ||
| 57 | #### `val = enc.decode(state)` | |
| 58 | ||
| 59 | Decodes a value from `state.buffer` as position `state.start`. | |
| 60 | Updates `state.start` to point after the decoded value when done in the buffer. | |
| 61 | ||
| 62 | ## Helpers | |
| 63 | ||
| 64 | If you are just encoding to a buffer or decoding from one you can use the `encode` and `decode` helpers | |
| 65 | to reduce your boilerplate | |
| 66 | ||
| 67 | ```js | |
| 68 | const buf = cenc.encode(cenc.bool, true) | |
| 69 | const bool = cenc.decode(cenc.bool, buf) | |
| 70 | ``` | |
| 71 | ||
| 72 | ## Bundled encodings | |
| 73 | ||
| 74 | The following encodings are bundled as they are primitives that can be used | |
| 75 | to build others on top. Feel free to PR more that are missing. | |
| 76 | ||
| 77 | - `cenc.raw` - Pass through encodes a buffer, i.e. a basic copy. | |
| 78 | - `cenc.uint` - Encodes a uint using the smallest fixed size encoding with a prefix to signal which one. Useful for uints that can be a wide range of values. | |
| 79 | - `cenc.uint8` - Encodes a fixed size uint8. | |
| 80 | - `cenc.uint16` - Encodes a fixed size uint16. Useful for things like ports. | |
| 81 | - `cenc.uint24` - Encodes a fixed size uint24. Useful for message framing. | |
| 82 | - `cenc.uint32` - Encodes a fixed size uint32. Useful for very large message framing. | |
| 83 | - `cenc.uint40` - Encodes a fixed size uint40. | |
| 84 | - `cenc.uint48` - Encodes a fixed size uint48. | |
| 85 | - `cenc.uint56` - Encodes a fixed size uint56. | |
| 86 | - `cenc.uint64` - Encodes a fixed size uint64. | |
| 87 | - `cenc.int` - Encodes an int using `cenc.uint` with ZigZag encoding. | |
| 88 | - `cenc.int8` - Encodes a fixed size int8 using `cenc.uint8` with ZigZag encoding. | |
| 89 | - `cenc.int16` - Encodes a fixed size int16 using `cenc.uint16` with ZigZag encoding. | |
| 90 | - `cenc.int24` - Encodes a fixed size int24 using `cenc.uint24` with ZigZag encoding. | |
| 91 | - `cenc.int32` - Encodes a fixed size int32 using `cenc.uint32` with ZigZag encoding. | |
| 92 | - `cenc.int40` - Encodes a fixed size int40 using `cenc.uint40` with ZigZag encoding. | |
| 93 | - `cenc.int48` - Encodes a fixed size int48 using `cenc.uint48` with ZigZag encoding. | |
| 94 | - `cenc.int56` - Encodes a fixed size int56 using `cenc.uint56` with ZigZag encoding. | |
| 95 | - `cenc.int64` - Encodes a fixed size int64 using `cenc.uint64` with ZigZag encoding. | |
| 96 | - `cenc.biguint64` - Encodes a fixed size biguint64. | |
| 97 | - `cenc.bigint64` - Encodes a fixed size bigint64 using `cenc.biguint64` with ZigZag encoding. | |
| 98 | - `cenc.biguint` - Encodes a biguint with its word count uint prefixed. | |
| 99 | - `cenc.bigint` - Encodes a bigint using `cenc.biguint` with ZigZag encoding. | |
| 100 | - `cenc.float32` - Encodes a fixed size float32. | |
| 101 | - `cenc.float64` - Encodes a fixed size float64. | |
| 102 | - `cenc.buffer` - Encodes a buffer with its length uint prefixed. When decoding an empty buffer, `null` is returned. | |
| 103 | - `cenc.raw.buffer` - Encodes a buffer without a length prefixed. | |
| 104 | - `cenc.arraybuffer` - Encodes an arraybuffer with its length uint prefixed. | |
| 105 | - `cenc.raw.arraybuffer` - Encodes an arraybuffer without a length prefixed. | |
| 106 | - `cenc.uint8array` - Encodes a uint8array with its element length uint prefixed. | |
| 107 | - `cenc.raw.uint8array` - Encodes a uint8array without a length prefixed. | |
| 108 | - `cenc.uint16array` - Encodes a uint16array with its element length uint prefixed. | |
| 109 | - `cenc.raw.uint16array` - Encodes a uint16array without a length prefixed. | |
| 110 | - `cenc.uint32array` - Encodes a uint32array with its element length uint prefixed. | |
| 111 | - `cenc.raw.uint32array` - Encodes a uint32array without a length prefixed. | |
| 112 | - `cenc.int8array` - Encodes a int8array with its element length uint prefixed. | |
| 113 | - `cenc.raw.int8array` - Encodes a int8array without a length prefixed. | |
| 114 | - `cenc.int16array` - Encodes a int16array with its element length uint prefixed. | |
| 115 | - `cenc.raw.int16array` - Encodes a int16array without a length prefixed. | |
| 116 | - `cenc.int32array` - Encodes a int32array with its element length uint prefixed. | |
| 117 | - `cenc.raw.int32array` - Encodes a int32array without a length prefixed. | |
| 118 | - `cenc.biguint64array` - Encodes a biguint64array with its element length uint prefixed. | |
| 119 | - `cenc.raw.biguint64array` - Encodes a biguint64array without a length prefixed. | |
| 120 | - `cenc.bigint64array` - Encodes a bigint64array with its element length uint prefixed. | |
| 121 | - `cenc.raw.bigint64array` - Encodes a bigint64array without a length prefixed. | |
| 122 | - `cenc.float32array` - Encodes a float32array with its element length uint prefixed. | |
| 123 | - `cenc.raw.float32array` - Encodes a float32array without a length prefixed. | |
| 124 | - `cenc.float64array` - Encodes a float64array with its element length uint prefixed. | |
| 125 | - `cenc.raw.float64array` - Encodes a float64array without a length prefixed. | |
| 126 | - `cenc.bool` - Encodes a boolean as 1 or 0. | |
| 127 | - `cenc.string`, `cenc.utf8` - Encodes a utf-8 string, similar to buffer. | |
| 128 | - `cenc.raw.string`, `cenc.raw.utf8` - Encodes a utf-8 string without a length prefixed. | |
| 129 | - `cenc.string.fixed(n)`, `cenc.utf8.fixed(n)` - Encodes a fixed sized utf-8 string. | |
| 130 | - `cenc.ascii` - Encodes an ascii string. | |
| 131 | - `cenc.raw.ascii` - Encodes an ascii string without a length prefixed. | |
| 132 | - `cenc.ascii.fixed(n)` - Encodes a fixed size ascii string. | |
| 133 | - `cenc.hex` - Encodes a hex string. | |
| 134 | - `cenc.raw.hex` - Encodes a hex string without a length prefixed. | |
| 135 | - `cenc.hex.fixed(n)` - Encodes a fixed size hex string. | |
| 136 | - `cenc.base64` - Encodes a base64 string. | |
| 137 | - `cenc.raw.base64` - Encodes a base64 string without a length prefixed. | |
| 138 | - `cenc.base64.fixed(n)` - Encodes a fixed size base64 string. | |
| 139 | - `cenc.utf16le`, `cenc.ucs2` - Encodes a utf16le string. | |
| 140 | - `cenc.raw.utf16le`, `cenc.raw.ucs2` - Encodes a utf16le string without a length prefixed. | |
| 141 | - `cenc.utf16le.fixed(n)`, `cenc.ucs2.fixed(n)` - Encodes a fixed size utf16le string. | |
| 142 | - `cenc.fixed32` - Encodes a fixed 32 byte buffer. | |
| 143 | - `cenc.fixed64` - Encodes a fixed 64 byte buffer. | |
| 144 | - `cenc.fixed(n)` - Makes a fixed sized encoder. | |
| 145 | - `cenc.date(d)` - Encodes a date object. | |
| 146 | - `cenc.array(enc)` - Makes an array encoder from another encoder. Arrays are uint prefixed with their length. | |
| 147 | - `cenc.raw.array(enc)` - Makes an array encoder from another encoder, without a length prefixed. | |
| 148 | - `cenc.json` - Encodes a JSON value as utf-8. | |
| 149 | - `cenc.raw.json` - Encodes a JSON value as utf-8 without a length prefixed. | |
| 150 | - `cenc.ndjson` - Encodes a JSON value as newline delimited utf-8. | |
| 151 | - `cenc.raw.ndjson` - Encodes a JSON value as newline delimited utf-8 without a length prefixed. | |
| 152 | - `cenc.any` - Encodes any JSON representable value into a self described buffer. Like JSON + buffer, but using compact types. Useful for schemaless codecs. | |
| 153 | - `cenc.port` - Encodes a port number for network addresses. | |
| 154 | - `cenc.ipv4` - Encodes an IPv4 network address. | |
| 155 | - `cenc.ipv4Address` Encodes an IPv4 network address and a port number. | |
| 156 | - `cenc.ipv6` - Encodes an IPv6 network address. | |
| 157 | - `cenc.ipv6Address` Encodes an IPv6 network address and a port number. | |
| 158 | - `cenc.ip` - Encodes a dual IPv4/6 network address. | |
| 159 | - `cenc.ipAddress` Encodes a dual IPv4/6 network address and a port number. | |
| 160 | - `cenc.from(enc)` - Makes a compact encoder from a [codec](https://github.com/mafintosh/codecs) or [abstract-encoding](https://github.com/mafintosh/abstract-encoding). | |
| 161 | - `cenc.none` - Helper for when you want to just express nothing | |
| 162 | ||
| 163 | ## License | |
| 164 | ||
| 165 | Apache 2.0 |
| … | … | @@ -0,0 +1 @@ |
| 1 | const r=exports.LE=255===new Uint8Array(new Uint16Array([255]).buffer)[0];exports.BE=!r; |
| … | … | @@ -0,0 +1 @@ |
| 1 | const e=require("b4a"),{BE:t}=require("./endian");exports.state=function(e=0,t=0,r=null){return{start:e,end:t,buffer:r}};const r=exports.raw=require("./raw"),n=exports.uint={preencode(e,t){e.end+=t<=252?1:t<=65535?3:t<=4294967295?5:9},encode(e,t){t<=252?o.encode(e,t):t<=65535?(e.buffer[e.start++]=253,d.encode(e,t)):t<=4294967295?(e.buffer[e.start++]=254,c.encode(e,t)):(e.buffer[e.start++]=255,i.encode(e,t))},decode(e){const t=o.decode(e);return t<=252?t:253===t?d.decode(e):254===t?c.decode(e):i.decode(e)}},o=exports.uint8={preencode(e,t){e.end+=1},encode(e,t){R(t),e.buffer[e.start++]=t},decode(e){if(e.start>=e.end)throw new Error("Out of bounds");return e.buffer[e.start++]}},d=exports.uint16={preencode(e,t){e.end+=2},encode(e,t){R(t),e.buffer[e.start++]=t,e.buffer[e.start++]=t>>>8},decode(e){if(e.end-e.start<2)throw new Error("Out of bounds");return e.buffer[e.start++]+256*e.buffer[e.start++]}},s=exports.uint24={preencode(e,t){e.end+=3},encode(e,t){R(t),e.buffer[e.start++]=t,e.buffer[e.start++]=t>>>8,e.buffer[e.start++]=t>>>16},decode(e){if(e.end-e.start<3)throw new Error("Out of bounds");return e.buffer[e.start++]+256*e.buffer[e.start++]+65536*e.buffer[e.start++]}},c=exports.uint32={preencode(e,t){e.end+=4},encode(e,t){R(t),e.buffer[e.start++]=t,e.buffer[e.start++]=t>>>8,e.buffer[e.start++]=t>>>16,e.buffer[e.start++]=t>>>24},decode(e){if(e.end-e.start<4)throw new Error("Out of bounds");return e.buffer[e.start++]+256*e.buffer[e.start++]+65536*e.buffer[e.start++]+16777216*e.buffer[e.start++]}},f=exports.uint40={preencode(e,t){e.end+=5},encode(e,t){R(t);const r=Math.floor(t/256);o.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<5)throw new Error("Out of bounds");return o.decode(e)+256*c.decode(e)}},u=exports.uint48={preencode(e,t){e.end+=6},encode(e,t){R(t);const r=Math.floor(t/65536);d.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<6)throw new Error("Out of bounds");return d.decode(e)+65536*c.decode(e)}},a=exports.uint56={preencode(e,t){e.end+=7},encode(e,t){R(t);const r=Math.floor(t/16777216);s.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<7)throw new Error("Out of bounds");return s.decode(e)+16777216*c.decode(e)}},i=exports.uint64={preencode(e,t){e.end+=8},encode(e,t){R(t);const r=Math.floor(t/4294967296);c.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<8)throw new Error("Out of bounds");return c.decode(e)+4294967296*c.decode(e)}},p=exports.int=k(n);exports.int8=k(o),exports.int16=k(d),exports.int24=k(s),exports.int32=k(c),exports.int40=k(f),exports.int48=k(u),exports.int56=k(a),exports.int64=k(i);const b=exports.biguint64={preencode(e,t){e.end+=8},encode(e,t){new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).setBigUint64(0,t,!0),e.start+=8},decode(e){if(e.end-e.start<8)throw new Error("Out of bounds");const t=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).getBigUint64(0,!0);return e.start+=8,t}};exports.bigint64=q(b);const l=exports.biguint={preencode(e,t){let r=0;for(let e=t;e;e>>=64n)r++;n.preencode(e,r),e.end+=8*r},encode(e,t){let r=0;for(let e=t;e;e>>=64n)r++;n.encode(e,r);const o=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8*r);for(let e=t,r=0;e;e>>=64n,r+=8)o.setBigUint64(r,BigInt.asUintN(64,e),!0);e.start+=8*r},decode(e){const t=n.decode(e);if(e.end-e.start<8*t)throw new Error("Out of bounds");const r=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8*t);let o=0n;for(let e=t-1;e>=0;e--)o=(o<<64n)+r.getBigUint64(8*e,!0);return e.start+=8*t,o}};exports.bigint=q(l),exports.lexint=require("./lexint"),exports.float32={preencode(e,t){e.end+=4},encode(e,t){new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,4).setFloat32(0,t,!0),e.start+=4},decode(e){if(e.end-e.start<4)throw new Error("Out of bounds");const t=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,4).getFloat32(0,!0);return e.start+=4,t}},exports.float64={preencode(e,t){e.end+=8},encode(e,t){new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).setFloat64(0,t,!0),e.start+=8},decode(e){if(e.end-e.start<8)throw new Error("Out of bounds");const t=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).getFloat64(0,!0);return e.start+=8,t}};const x=exports.buffer={preencode(e,t){t?y.preencode(e,t):e.end++},encode(e,t){t?y.encode(e,t):e.buffer[e.start++]=0},decode(e){const t=n.decode(e);if(0===t)return null;if(e.end-e.start<t)throw new Error("Out of bounds");return e.buffer.subarray(e.start,e.start+=t)}};function w(e,r){const o=e.BYTES_PER_ELEMENT;return{preencode(e,t){n.preencode(e,t.length),e.end+=t.byteLength},encode(e,o){n.encode(e,o.length);const d=new Uint8Array(o.buffer,o.byteOffset,o.byteLength);t&&r&&r(d),e.buffer.set(d,e.start),e.start+=o.byteLength},decode(d){const s=n.decode(d);let c=d.buffer.subarray(d.start,d.start+=s*o);if(c.byteLength!==s*o)throw new Error("Out of bounds");return c.byteOffset%o!==0&&(c=new Uint8Array(c)),t&&r&&r(c),new e(c.buffer,c.byteOffset,c.byteLength/o)}}}exports.binary={...x,preencode(e,t){"string"==typeof t?g.preencode(e,t):x.preencode(e,t)},encode(e,t){"string"==typeof t?g.encode(e,t):x.encode(e,t)}},exports.arraybuffer={preencode(e,t){n.preencode(e,t.byteLength),e.end+=t.byteLength},encode(e,t){n.encode(e,t.byteLength);const r=new Uint8Array(t);e.buffer.set(r,e.start),e.start+=t.byteLength},decode(e){const t=n.decode(e),r=new ArrayBuffer(t);return new Uint8Array(r).set(e.buffer.subarray(e.start,e.start+=t)),r}};const y=exports.uint8array=w(Uint8Array);function h(t){return{preencode(r,o){const d=e.byteLength(o,t);n.preencode(r,d),r.end+=d},encode(r,o){const d=e.byteLength(o,t);n.encode(r,d),e.write(r.buffer,o,r.start,t),r.start+=d},decode(r){const o=n.decode(r);if(r.end-r.start<o)throw new Error("Out of bounds");return e.toString(r.buffer,t,r.start,r.start+=o)},fixed:r=>({preencode(e){e.end+=r},encode(n,o){e.write(n.buffer,o,n.start,r,t),n.start+=r},decode(n){if(n.end-n.start<r)throw new Error("Out of bounds");return e.toString(n.buffer,t,n.start,n.start+=r)}})}}exports.uint16array=w(Uint16Array,e.swap16),exports.uint32array=w(Uint32Array,e.swap32),exports.int8array=w(Int8Array),exports.int16array=w(Int16Array,e.swap16),exports.int32array=w(Int32Array,e.swap32),exports.biguint64array=w(BigUint64Array,e.swap64),exports.bigint64array=w(BigInt64Array,e.swap64),exports.float32array=w(Float32Array,e.swap32),exports.float64array=w(Float64Array,e.swap64);const g=exports.string=exports.utf8=h("utf-8");exports.ascii=h("ascii"),exports.hex=h("hex"),exports.base64=h("base64"),exports.ucs2=exports.utf16le=h("utf16le"),exports.bool={preencode(e,t){e.end++},encode(e,t){e.buffer[e.start++]=t?1:0},decode(e){if(e.start>=e.end)throw Error("Out of bounds");return 1===e.buffer[e.start++]}};const O=exports.fixed=function(e){return{preencode(t,r){if(r.byteLength!==e)throw new Error("Incorrect buffer size");t.end+=e},encode(t,r){t.buffer.set(r,t.start),t.start+=e},decode(t){if(t.end-t.start<e)throw new Error("Out of bounds");return t.buffer.subarray(t.start,t.start+=e)}}};exports.fixed32=O(32),exports.fixed64=O(64),exports.array=function(e){return{preencode(t,r){n.preencode(t,r.length);for(let n=0;n<r.length;n++)e.preencode(t,r[n])},encode(t,r){n.encode(t,r.length);for(let n=0;n<r.length;n++)e.encode(t,r[n])},decode(t){const r=n.decode(t);if(r>1048576)throw new Error("Array is too big");const o=new Array(r);for(let n=0;n<r;n++)o[n]=e.decode(t);return o}}},exports.frame=function(e){const t=exports.state();return{preencode(t,r){const o=t.end;e.preencode(t,r),n.preencode(t,t.end-o)},encode(r,o){t.end=0,e.preencode(t,o),n.encode(r,t.end),e.encode(r,o)},decode(t){const r=t.end,o=n.decode(t);t.end=t.start+o;const d=e.decode(t);return t.start=t.end,t.end=r,d}}},exports.date={preencode(e,t){p.preencode(e,t.getTime())},encode(e,t){p.encode(e,t.getTime())},decode:(e,t)=>new Date(p.decode(e))},exports.json={preencode(e,t){g.preencode(e,JSON.stringify(t))},encode(e,t){g.encode(e,JSON.stringify(t))},decode:e=>JSON.parse(g.decode(e))},exports.ndjson={preencode(e,t){g.preencode(e,JSON.stringify(t)+"\n")},encode(e,t){g.encode(e,JSON.stringify(t)+"\n")},decode:e=>JSON.parse(g.decode(e))},exports.none={preencode(e,t){},encode(e,t){},decode:e=>null};const E={preencode(e,t){n.preencode(e,t.length);for(let r=0;r<t.length;r++)S.preencode(e,t[r])},encode(e,t){n.encode(e,t.length);for(let r=0;r<t.length;r++)S.encode(e,t[r])},decode(e){const t=[];let r=n.decode(e);for(;r-- >0;)t.push(S.decode(e));return t}},A={preencode(e,t){const r=Object.keys(t);n.preencode(e,r.length);for(const n of r)g.preencode(e,n),S.preencode(e,t[n])},encode(e,t){const r=Object.keys(t);n.encode(e,r.length);for(const n of r)g.encode(e,n),S.encode(e,t[n])},decode(e){let t=n.decode(e);const r={};for(;t-- >0;)r[g.decode(e)]=S.decode(e);return r}},L=[exports.none,exports.bool,exports.string,exports.buffer,exports.uint,exports.int,exports.float64,E,A,exports.date],S=exports.any={preencode(e,t){const r=V(t);n.preencode(e,r),L[r].preencode(e,t)},encode(e,t){const r=V(t);n.encode(e,r),L[r].encode(e,t)},decode(e){const t=n.decode(e);if(t>=L.length)throw new Error("Unknown type: "+t);return L[t].decode(e)}},U=exports.port=d,j=(e,t)=>({preencode(t,r){e.preencode(t,r.host),U.preencode(t,r.port)},encode(t,r){e.encode(t,r.host),U.encode(t,r.port)},decode:r=>({host:e.decode(r),family:t,port:U.decode(r)})}),B=exports.ipv4={preencode(e){e.end+=4},encode(e,t){const r=e.start+4;let n=0;for(;n<t.length;){let r,o=0;for(;n<t.length&&46!==(r=t.charCodeAt(n++));)o=10*o+(r-48);e.buffer[e.start++]=o}e.start=r},decode(e){if(e.end-e.start<4)throw new Error("Out of bounds");return e.buffer[e.start++]+"."+e.buffer[e.start++]+"."+e.buffer[e.start++]+"."+e.buffer[e.start++]}};exports.ipv4Address=j(B,4);const D=exports.ipv6={preencode(e){e.end+=16},encode(e,t){const r=e.start+16;let n=0,o=null;for(;n<t.length;){let r,d=0;for(;n<t.length&&58!==(r=t.charCodeAt(n++));)r>=48&&r<=57?d=16*d+(r-48):r>=65&&r<=70?d=16*d+(r-65+10):r>=97&&r<=102&&(d=16*d+(r-97+10));e.buffer[e.start++]=d>>>8,e.buffer[e.start++]=d,n<t.length&&58===t.charCodeAt(n)&&(n++,o=e.start)}if(null!==o){const t=r-e.start;e.buffer.copyWithin(o+t,o).fill(0,o,o+t)}e.start=r},decode(e){if(e.end-e.start<16)throw new Error("Out of bounds");return(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)}};exports.ipv6Address=j(D,6);const m=exports.ip={preencode(e,t){const r=t.includes(":")?6:4;o.preencode(e,r),4===r?B.preencode(e):D.preencode(e)},encode(e,t){const r=t.includes(":")?6:4;o.encode(e,r),4===r?B.encode(e,t):D.encode(e,t)},decode:e=>4===o.decode(e)?B.decode(e):D.decode(e)};exports.ipAddress={preencode(e,t){m.preencode(e,t.host),U.preencode(e,t.port)},encode(e,t){m.encode(e,t.host),U.encode(e,t.port)},decode(e){const t=o.decode(e);return{host:4===t?B.decode(e):D.decode(e),family:t,port:U.decode(e)}}};const N=exports.record=function(e,t){return{preencode(r,o){const d=Object.keys(o);n.preencode(r,d.length);for(const n of d)e.preencode(r,n),t.preencode(r,o[n])},encode(r,o){const d=Object.keys(o);n.encode(r,d.length);for(const n of d)e.encode(r,n),t.encode(r,o[n])},decode(r){const o=Object.create(null),d=n.decode(r);for(let n=0;n<d;n++)o[e.decode(r)]=t.decode(r);return o}}};function V(t){if(null==t)return 0;if("boolean"==typeof t)return 1;if("string"==typeof t)return 2;if(e.isBuffer(t))return 3;if("number"==typeof t)return Number.isInteger(t)?t>=0?4:5:6;if(Array.isArray(t))return 7;if(t instanceof Date)return 9;if("object"==typeof t)return 8;throw new Error("Unsupported type for "+t)}function I(e){switch(e){case"ascii":return r.ascii;case"utf-8":case"utf8":return r.utf8;case"hex":return r.hex;case"base64":return r.base64;case"utf16-le":case"utf16le":case"ucs-2":case"ucs2":return r.ucs2;case"ndjson":return r.ndjson;case"json":return r.json;default:return r.binary}}function F(e){let t=null,n=null;return{preencode(r,o){t=o,n=e.encode(o),r.end+=n.byteLength},encode(o,d){r.encode(o,d===t?n:e.encode(d)),t=n=null},decode:t=>e.decode(r.decode(t))}}function J(e){return{preencode(t,r){t.end+=e.encodingLength(r)},encode(t,r){e.encode(r,t.buffer,t.start),t.start+=e.encode.bytes},decode(t){const r=e.decode(t.buffer,t.start,t.end);return t.start+=e.decode.bytes,r}}}function k(e){return{preencode(t,r){e.preencode(t,M(r))},encode(t,r){e.encode(t,M(r))},decode:t=>v(e.decode(t))}}function v(e){return 0===e?e:1&e?-(e+1)/2:e/2}function M(e){return e<0?2*-e-1:0===e?0:2*e}function q(e){return{preencode(t,r){e.preencode(t,C(r))},encode(t,r){e.encode(t,C(r))},decode:t=>T(e.decode(t))}}function T(e){return 0n===e?e:0n==(1n&e)?e/2n:-(e+1n)/2n}function C(e){return e<0n?2n*-e-1n:0n===e?0n:2n*e}function R(e){if(e>=0==0)throw new Error("uint must be positive")}exports.stringRecord=N(g,g),exports.from=function(e){return"string"==typeof e?I(e):e.preencode?e:e.encodingLength?J(e):F(e)},exports.encode=function(t,r){const n=exports.state();return t.preencode(n,r),n.buffer=e.allocUnsafe(n.end),t.encode(n,r),n.buffer},exports.decode=function(e,t){return e.decode(exports.state(0,t.byteLength,t))}; |
| … | … | @@ -0,0 +1 @@ |
| 1 | function t(r,f){f<251?r.end++:f<256?r.end+=2:f<65536?r.end+=3:f<16777216?r.end+=4:f<4294967296?r.end+=5:(r.end++,t(r,Math.floor(Math.log(f)/Math.log(2))-32),r.end+=6)}function r(t,f){const e=f-251;if(f<251)t.buffer[t.start++]=f;else if(f<256)t.buffer[t.start++]=251,t.buffer[t.start++]=e;else if(f<65536)t.buffer[t.start++]=252,t.buffer[t.start++]=e>>8&255,t.buffer[t.start++]=255&e;else if(f<16777216)t.buffer[t.start++]=253,t.buffer[t.start++]=e>>16,t.buffer[t.start++]=e>>8&255,t.buffer[t.start++]=255&e;else if(f<4294967296)t.buffer[t.start++]=254,t.buffer[t.start++]=e>>24,t.buffer[t.start++]=e>>16&255,t.buffer[t.start++]=e>>8&255,t.buffer[t.start++]=255&e;else{const f=Math.floor(Math.log(e)/Math.log(2))-32;t.buffer[t.start++]=255,r(t,f);const s=e/Math.pow(2,f-11);for(let r=5;r>=0;r--)t.buffer[t.start++]=s/Math.pow(2,8*r)&255}}function f(t){const r=251;if(t.end-t.start<1)throw new Error("Out of bounds");const e=t.buffer[t.start++];if(e<r)return e;if(t.end-t.start<e-r+1)throw new Error("Out of bounds.");if(e<252)return t.buffer[t.start++]+r;if(e<253)return(t.buffer[t.start++]<<8)+t.buffer[t.start++]+r;if(e<254)return(t.buffer[t.start++]<<16)+(t.buffer[t.start++]<<8)+t.buffer[t.start++]+r;if(e<255)return 16777216*t.buffer[t.start++]+(t.buffer[t.start++]<<16)+(t.buffer[t.start++]<<8)+t.buffer[t.start++]+r;const s=f(t);if(t.end-t.start<6)throw new Error("Out of bounds");let u=0;for(let r=5;r>=0;r--)u+=t.buffer[t.start++]*Math.pow(2,8*r);return u*Math.pow(2,s-11)+r}module.exports={preencode:t,encode:r,decode:f}; |
| … | … | @@ -0,0 +1,28 @@ |
| 1 | { | |
| 2 | "name": "compact-encoding", | |
| 3 | "version": "2.19.2", | |
| 4 | "description": "A series of compact encoding schemes for building small and fast parsers and serializers", | |
| 5 | "main": "index.js", | |
| 6 | "dependencies": { | |
| 7 | "b4a": "^1.3.0" | |
| 8 | }, | |
| 9 | "devDependencies": { | |
| 10 | "brittle": "^3.0.0", | |
| 11 | "prettier": "^3.6.2", | |
| 12 | "prettier-config-holepunch": "^1.0.0" | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "format": "prettier . --write", | |
| 16 | "test": "prettier . --check && brittle test.js" | |
| 17 | }, | |
| 18 | "repository": { | |
| 19 | "type": "git", | |
| 20 | "url": "https://github.com/holepunchto/compact-encoding.git" | |
| 21 | }, | |
| 22 | "author": "Mathias Buus (@mafintosh)", | |
| 23 | "license": "Apache-2.0", | |
| 24 | "bugs": { | |
| 25 | "url": "https://github.com/holepunchto/compact-encoding/issues" | |
| 26 | }, | |
| 27 | "homepage": "https://github.com/holepunchto/compact-encoding" | |
| 28 | } |
| … | … | @@ -0,0 +1 @@ |
| 1 | const e=require("b4a"),{BE:r}=require("./endian");exports=module.exports={preencode(e,r){e.end+=r.byteLength},encode(e,r){e.buffer.set(r,e.start),e.start+=r.byteLength},decode(e){const r=e.buffer.subarray(e.start,e.end);return e.start=e.end,r}};const t=exports.buffer={preencode(e,r){r?o.preencode(e,r):e.end++},encode(e,r){r?o.encode(e,r):e.buffer[e.start++]=0},decode(e){const r=e.buffer.subarray(e.start);return 0===r.byteLength?null:(e.start=e.end,r)}};function n(e,t){const n=e.BYTES_PER_ELEMENT;return{preencode(e,r){e.end+=r.byteLength},encode(e,n){const o=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);r&&t&&t(o),e.buffer.set(o,e.start),e.start+=n.byteLength},decode(o){let s=o.buffer.subarray(o.start);return s.byteOffset%n!==0&&(s=new Uint8Array(s)),r&&t&&t(s),o.start=o.end,new e(s.buffer,s.byteOffset,s.byteLength/n)}}}exports.binary={...t,preencode(e,r){"string"==typeof r?a.preencode(e,r):t.preencode(e,r)},encode(e,r){"string"==typeof r?a.encode(e,r):t.encode(e,r)}},exports.arraybuffer={preencode(e,r){e.end+=r.byteLength},encode(e,r){const t=new Uint8Array(r);e.buffer.set(t,e.start),e.start+=r.byteLength},decode(e){const r=new ArrayBuffer(e.end-e.start);return new Uint8Array(r).set(e.buffer.subarray(e.start)),e.start=e.end,r}};const o=exports.uint8array=n(Uint8Array);function s(r){return{preencode(t,n){t.end+=e.byteLength(n,r)},encode(t,n){t.start+=e.write(t.buffer,n,t.start,r)},decode(t){const n=e.toString(t.buffer,r,t.start);return t.start=t.end,n}}}exports.uint16array=n(Uint16Array,e.swap16),exports.uint32array=n(Uint32Array,e.swap32),exports.int8array=n(Int8Array),exports.int16array=n(Int16Array,e.swap16),exports.int32array=n(Int32Array,e.swap32),exports.biguint64array=n(BigUint64Array,e.swap64),exports.bigint64array=n(BigInt64Array,e.swap64),exports.float32array=n(Float32Array,e.swap32),exports.float64array=n(Float64Array,e.swap64);const a=exports.string=exports.utf8=s("utf-8");exports.ascii=s("ascii"),exports.hex=s("hex"),exports.base64=s("base64"),exports.ucs2=exports.utf16le=s("utf16le"),exports.array=function(e){return{preencode(r,t){for(const n of t)e.preencode(r,n)},encode(r,t){for(const n of t)e.encode(r,n)},decode(r){const t=[];for(;r.start<r.end;)t.push(e.decode(r));return t}}},exports.json={preencode(e,r){a.preencode(e,JSON.stringify(r))},encode(e,r){a.encode(e,JSON.stringify(r))},decode:e=>JSON.parse(a.decode(e))},exports.ndjson={preencode(e,r){a.preencode(e,JSON.stringify(r)+"\n")},encode(e,r){a.encode(e,JSON.stringify(r)+"\n")},decode:e=>JSON.parse(a.decode(e))}; |
| … | … | @@ -0,0 +1 @@ |
| 1 | const e=require("./"),t=require("brittle"),a=require("b4a");t("uint",function(t){const n=e.state();e.uint.preencode(n,42),t.alike(n,e.state(0,1)),e.uint.preencode(n,4200),t.alike(n,e.state(0,4)),e.uint.preencode(n,Number.MAX_SAFE_INTEGER),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.uint.encode(n,42),t.alike(n,e.state(1,13,a.from([42,0,0,0,0,0,0,0,0,0,0,0,0]))),e.uint.encode(n,4200),t.alike(n,e.state(4,13,a.from([42,253,104,16,0,0,0,0,0,0,0,0,0]))),e.uint.encode(n,Number.MAX_SAFE_INTEGER),t.alike(n,e.state(13,13,a.from([42,253,104,16,255,255,255,255,255,255,255,31,0]))),n.start=0,t.is(e.uint.decode(n),42),t.is(e.uint.decode(n),4200),t.is(e.uint.decode(n),Number.MAX_SAFE_INTEGER),t.is(n.start,n.end),t.exception(()=>e.uint.decode(n))}),t("int",function(t){const n=e.state();e.int.preencode(n,42),t.alike(n,e.state(0,1)),e.int.preencode(n,-4200),t.alike(n,e.state(0,4)),n.buffer=a.alloc(n.end),e.int.encode(n,42),t.alike(n,e.state(1,4,a.from([84,0,0,0]))),e.int.encode(n,-4200),t.alike(n,e.state(4,4,a.from([84,253,207,32]))),n.start=0,t.is(e.int.decode(n),42),t.is(e.int.decode(n),-4200),t.is(n.start,n.end),t.exception(()=>e.int.decode(n))}),t("float64",function(t){const n=e.state();e.float64.preencode(n,162.2377294),t.alike(n,e.state(0,8)),n.buffer=a.alloc(n.end),t.alike(n,e.state(0,8,a.from([0,0,0,0,0,0,0,0]))),e.float64.encode(n,162.2377294),t.alike(n,e.state(8,8,a.from([135,201,175,122,155,71,100,64]))),n.start=0,t.is(e.float64.decode(n),162.2377294),t.is(n.start,n.end),t.exception(()=>e.float64.decode(n)),n.start=0,n.end=0,n.buffer=null,e.int.preencode(n,0),e.float64.preencode(n,162.2377294),t.alike(n,e.state(0,9)),n.buffer=a.alloc(n.end),t.alike(n,e.state(0,9,a.from([0,0,0,0,0,0,0,0,0]))),e.int.encode(n,0),e.float64.encode(n,162.2377294),t.alike(n,e.state(9,9,a.from([0,135,201,175,122,155,71,100,64]))),n.start=0,t.is(e.int.decode(n),0),t.is(e.float64.decode(n),162.2377294),t.is(n.start,n.end);const o=a.alloc(10);n.start=0,n.buffer=o.subarray(1),t.alike(n,e.state(0,9,a.from([0,0,0,0,0,0,0,0,0]))),e.int.encode(n,0),e.float64.encode(n,162.2377294),t.alike(n,e.state(9,9,a.from([0,135,201,175,122,155,71,100,64]))),t.alike(o,a.from([0,0,135,201,175,122,155,71,100,64])),n.start=0,t.is(e.int.decode(n),0),t.is(e.float64.decode(n),162.2377294),t.is(n.start,n.end),n.start=0,n.end=0,n.buffer=null,e.float64.preencode(n,162.2377294),n.buffer=a.alloc(n.end),e.float64.encode(n,0),t.alike(n,e.state(8,8,a.from([0,0,0,0,0,0,0,0]))),n.start=0,t.is(e.float64.decode(n),0),t.is(n.start,n.end),n.start=0,n.end=0,n.buffer=null,e.float64.preencode(n,1/0),n.buffer=a.alloc(n.end),e.float64.encode(n,1/0),t.alike(n,e.state(8,8,a.from([0,0,0,0,0,0,240,127]))),n.start=0,t.is(e.float64.decode(n),1/0),t.is(n.start,n.end),n.start=0,n.end=0,n.buffer=null,e.float64.preencode(n,.1+.2),n.buffer=a.alloc(n.end),e.float64.encode(n,.1+.2),t.alike(n,e.state(8,8,a.from([52,51,51,51,51,51,211,63]))),n.start=0,t.is(e.float64.decode(n),.1+.2),t.is(n.start,n.end)}),t("biguint64",function(t){const n=e.state(),o=0x0102030405060708n;e.biguint64.preencode(n,o),t.alike(n,e.state(0,8)),n.buffer=a.alloc(n.end),e.biguint64.encode(n,o),t.alike(n,e.state(8,8,a.from([8,7,6,5,4,3,2,1]))),n.start=0,t.is(e.biguint64.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.biguint64.decode(n))}),t("bigint64",function(t){const n=e.state(),o=-0x0102030405060708n;e.bigint64.preencode(n,o),t.alike(n,e.state(0,8)),n.buffer=a.alloc(n.end),e.bigint64.encode(n,o),t.alike(n,e.state(8,8,a.from([15,14,12,10,8,6,4,2]))),n.start=0,t.is(e.bigint64.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.bigint64.decode(n))}),t("biguint",function(t){const n=e.state(),o=0x0102030405060708090a0b0cn;e.biguint.preencode(n,o),t.alike(n,e.state(0,17)),n.buffer=a.alloc(n.end),e.biguint.encode(n,o),t.alike(n,e.state(17,17,a.from([2,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0]))),n.start=0,t.is(e.biguint.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.biguint.decode(n))}),t("bigint",function(t){const n=e.state(),o=-0x0102030405060708090a0b0cn;e.bigint.preencode(n,o),t.alike(n,e.state(0,17)),n.buffer=a.alloc(n.end),e.bigint.encode(n,o),t.alike(n,e.state(17,17,a.from([2,23,22,20,18,16,14,12,10,8,6,4,2,0,0,0,0]))),n.start=0,t.is(e.bigint.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.bigint.decode(n))}),t("buffer",function(t){const n=e.state();e.buffer.preencode(n,a.from("hi")),t.alike(n,e.state(0,3)),e.buffer.preencode(n,a.from("hello")),t.alike(n,e.state(0,9)),e.buffer.preencode(n,null),t.alike(n,e.state(0,10)),n.buffer=a.alloc(n.end),e.buffer.encode(n,a.from("hi")),t.alike(n,e.state(3,10,a.from("hi\0\0\0\0\0\0\0"))),e.buffer.encode(n,a.from("hello")),t.alike(n,e.state(9,10,a.from("hihello\0"))),e.buffer.encode(n,null),t.alike(n,e.state(10,10,a.from("hihello\0"))),n.start=0,t.alike(e.buffer.decode(n),a.from("hi")),t.alike(e.buffer.decode(n),a.from("hello")),t.is(e.buffer.decode(n),null),t.is(n.start,n.end),t.exception(()=>e.buffer.decode(n))}),t("arraybuffer",function(t){const n=e.state(),o=new ArrayBuffer(4);a.from(o).fill("a");const r=new ArrayBuffer(8);a.from(r).fill("b"),e.arraybuffer.preencode(n,o),t.alike(n,e.state(0,5)),e.arraybuffer.preencode(n,r),t.alike(n,e.state(0,14)),n.buffer=a.alloc(n.end),e.arraybuffer.encode(n,o),t.alike(n,e.state(5,14,a.from("aaaa\0\0\0\0\0\0\0\0\0"))),e.arraybuffer.encode(n,r),t.alike(n,e.state(14,14,a.from("aaaa\bbbbbbbbb"))),n.start=0,t.alike(e.arraybuffer.decode(n),o),t.alike(e.arraybuffer.decode(n),r),t.is(n.start,n.end),t.exception(()=>e.arraybuffer.decode(n))}),t("raw",function(t){const n=e.state();e.raw.preencode(n,a.from("hi")),t.alike(n,e.state(0,2)),n.buffer=a.alloc(n.end),e.raw.encode(n,a.from("hi")),t.alike(n,e.state(2,2,a.from("hi"))),n.start=0,t.alike(e.raw.decode(n),a.from("hi")),t.is(n.start,n.end)}),t("raw uint8array",function(t){const n=e.state();e.raw.uint8array.preencode(n,Uint8Array.of(1,2)),t.alike(n,e.state(0,2)),e.raw.uint8array.preencode(n,Uint8Array.of(3,4)),t.alike(n,e.state(0,4)),n.buffer=a.alloc(n.end),e.raw.uint8array.encode(n,Uint8Array.of(1,2)),t.alike(n,e.state(2,4,a.from([1,2,0,0]))),e.raw.uint8array.encode(n,Uint8Array.of(3,4)),t.alike(n,e.state(4,4,a.from([1,2,3,4]))),n.start=0,t.alike(e.raw.uint8array.decode(n),Uint8Array.of(1,2,3,4)),t.alike(e.raw.uint8array.decode(n),Uint8Array.of())}),t("uint16array",function(t){const n=e.state();e.uint16array.preencode(n,new Uint16Array([1,2,3])),t.alike(n,e.state(0,7)),n.buffer=a.alloc(n.end),e.uint16array.encode(n,new Uint16Array([1,2,3])),t.alike(n,e.state(7,7,a.from([3,1,0,2,0,3,0]))),n.start=0,t.alike(e.uint16array.decode(n),new Uint16Array([1,2,3])),t.is(n.start,n.end),t.exception(()=>e.uint16array.decode(n))}),t("uint32array",function(t){const n=e.state();e.uint32array.preencode(n,new Uint32Array([1])),t.alike(n,e.state(0,5)),e.uint32array.preencode(n,new Uint32Array([42,43])),t.alike(n,e.state(0,14)),n.buffer=a.alloc(n.end),e.uint32array.encode(n,new Uint32Array([1])),t.alike(n,e.state(5,14,a.from([1,1,0,0,0,0,0,0,0,0,0,0,0,0]))),e.uint32array.encode(n,new Uint32Array([42,43])),t.alike(n,e.state(14,14,a.from([1,1,0,0,0,2,42,0,0,0,43,0,0,0]))),n.start=0,t.alike(e.uint32array.decode(n),new Uint32Array([1])),t.alike(e.uint32array.decode(n),new Uint32Array([42,43])),t.is(n.start,n.end),t.exception(()=>e.uint32array.decode(n))}),t("int16array",function(t){const n=e.state();e.int16array.preencode(n,new Int16Array([1,-2,3])),t.alike(n,e.state(0,7)),n.buffer=a.alloc(n.end),e.int16array.encode(n,new Int16Array([1,-2,3])),t.alike(n,e.state(7,7,a.from([3,1,0,254,255,3,0]))),n.start=0,t.alike(e.int16array.decode(n),new Int16Array([1,-2,3])),t.is(n.start,n.end),t.exception(()=>e.int16array.decode(n))}),t("int32array",function(t){const n=e.state();e.int32array.preencode(n,new Int32Array([1,-2,3])),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.int32array.encode(n,new Int32Array([1,-2,3])),t.alike(n,e.state(13,13,a.from([3,1,0,0,0,254,255,255,255,3,0,0,0]))),n.start=0,t.alike(e.int32array.decode(n),new Int32Array([1,-2,3])),t.is(n.start,n.end),t.exception(()=>e.int32array.decode(n))}),t("biguint64array",function(t){const n=e.state(),o=new BigUint64Array([0x01020304n,0x05060708n,0x090a0b0cn]);e.biguint64array.preencode(n,o),t.alike(n,e.state(0,25)),n.buffer=a.alloc(n.end),e.biguint64array.encode(n,o),t.alike(n,e.state(25,25,a.from([3,4,3,2,1,0,0,0,0,8,7,6,5,0,0,0,0,12,11,10,9,0,0,0,0]))),n.start=0,t.alike(e.biguint64array.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.biguint64array.decode(n))}),t("bigint64array",function(t){const n=e.state(),o=new BigInt64Array([-0x01020304n,0x05060708n,-0x090a0b0cn]);e.bigint64array.preencode(n,o),t.alike(n,e.state(0,25)),n.buffer=a.alloc(n.end),e.bigint64array.encode(n,o),t.alike(n,e.state(25,25,a.from([3,252,252,253,254,255,255,255,255,8,7,6,5,0,0,0,0,244,244,245,246,255,255,255,255]))),n.start=0,t.alike(e.bigint64array.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.bigint64array.decode(n))}),t("float32array",function(t){const n=e.state();e.float32array.preencode(n,new Float32Array([1.1,-2.2,3.3])),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.float32array.encode(n,new Float32Array([1.1,-2.2,3.3])),t.alike(n,e.state(13,13,a.from([3,205,204,140,63,205,204,12,192,51,51,83,64]))),n.start=0,t.alike(e.float32array.decode(n),new Float32Array([1.1,-2.2,3.3])),t.is(n.start,n.end),t.exception(()=>e.float32array.decode(n))}),t("float64array",function(t){const n=e.state();e.float64array.preencode(n,new Float64Array([1.1,-2.2,3.3])),t.alike(n,e.state(0,25)),n.buffer=a.alloc(n.end),e.float64array.encode(n,new Float64Array([1.1,-2.2,3.3])),t.alike(n,e.state(25,25,a.from([3,154,153,153,153,153,153,241,63,154,153,153,153,153,153,1,192,102,102,102,102,102,102,10,64]))),n.start=0,t.alike(e.float64array.decode(n),new Float64Array([1.1,-2.2,3.3])),t.is(n.start,n.end),t.exception(()=>e.float64array.decode(n))}),t("string",function(t){const n=e.state();e.string.preencode(n,"🌾"),t.alike(n,e.state(0,5)),e.string.preencode(n,"høsten er fin"),t.alike(n,e.state(0,20)),n.buffer=a.alloc(n.end),e.string.encode(n,"🌾"),t.alike(n,e.state(5,20,a.from("🌾\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"))),e.string.encode(n,"høsten er fin"),t.alike(n,e.state(20,20,a.from("🌾høsten er fin"))),n.start=0,t.is(e.string.decode(n),"🌾"),t.is(e.string.decode(n),"høsten er fin"),t.is(n.start,n.end),t.exception(()=>e.string.decode(n))}),t("raw string",function(t){const n=e.state();e.raw.string.preencode(n,"hello"),t.alike(n,e.state(0,5)),e.raw.string.preencode(n," world"),t.alike(n,e.state(0,11)),n.buffer=a.alloc(n.end),e.raw.string.encode(n,"hello"),e.raw.string.encode(n," world"),t.alike(n,e.state(11,11,a.from("hello world"))),n.start=0,t.is(e.raw.string.decode(n),"hello world"),t.is(e.raw.string.decode(n),"")}),t("fixed32",function(t){const n=e.state();e.fixed32.preencode(n,a.alloc(32).fill("a")),t.alike(n,e.state(0,32)),e.fixed32.preencode(n,a.alloc(32).fill("b")),t.alike(n,e.state(0,64)),n.buffer=a.alloc(n.end),e.fixed32.encode(n,a.alloc(32).fill("a")),t.alike(n,e.state(32,64,a.alloc(64).fill("a",0,32))),e.fixed32.encode(n,a.alloc(32).fill("b")),t.alike(n,e.state(64,64,a.alloc(64).fill("a",0,32).fill("b",32,64))),n.start=0,t.alike(e.fixed32.decode(n),a.alloc(32).fill("a")),t.alike(e.fixed32.decode(n),a.alloc(32).fill("b")),t.is(n.start,n.end),t.exception(()=>e.fixed32.decode(n))}),t("fixed64",function(t){const n=e.state();e.fixed64.preencode(n,a.alloc(64).fill("a")),t.alike(n,e.state(0,64)),e.fixed64.preencode(n,a.alloc(64).fill("b")),t.alike(n,e.state(0,128)),n.buffer=a.alloc(n.end),e.fixed64.encode(n,a.alloc(64).fill("a")),t.alike(n,e.state(64,128,a.alloc(128).fill("a",0,64))),e.fixed64.encode(n,a.alloc(64).fill("b")),t.alike(n,e.state(128,128,a.alloc(128).fill("a",0,64).fill("b",64,128))),n.start=0,t.alike(e.fixed64.decode(n),a.alloc(64).fill("a")),t.alike(e.fixed64.decode(n),a.alloc(64).fill("b")),t.is(n.start,n.end),t.exception(()=>e.fixed64.decode(n))}),t("fixed n",function(t){const n=e.state(),o=e.fixed(3);o.preencode(n,a.alloc(3).fill("a")),t.alike(n,e.state(0,3)),o.preencode(n,a.alloc(3).fill("b")),t.alike(n,e.state(0,6)),n.buffer=a.alloc(n.end),o.encode(n,a.alloc(3).fill("a")),t.alike(n,e.state(3,6,a.alloc(6).fill("a",0,3))),o.encode(n,a.alloc(3).fill("b")),t.alike(n,e.state(6,6,a.alloc(6).fill("a",0,3).fill("b",3,6))),n.start=0,t.alike(o.decode(n),a.alloc(3).fill("a")),t.alike(o.decode(n),a.alloc(3).fill("b")),t.is(n.start,n.end),t.exception(()=>o.decode(n)),n.start=4,t.exception(()=>o.decode(n))}),t("error for incorrect buffer sizes when encoding fixed-length buffers",function(t){const n=a.from("aa","hex"),o=a.from("aa".repeat(500),"hex");t.exception(()=>e.encode(e.fixed32,n),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed64,n),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed(100),n),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed32,o),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed64,o),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed(100),o),/Incorrect buffer size/)}),t("array",function(t){const n=e.state(),o=e.array(e.bool);o.preencode(n,[!0,!1,!0]),t.alike(n,e.state(0,4)),o.preencode(n,[!1,!1,!0,!0]),t.alike(n,e.state(0,9)),n.buffer=a.alloc(n.end),o.encode(n,[!0,!1,!0]),t.alike(n,e.state(4,9,a.from([3,1,0,1,0,0,0,0,0]))),o.encode(n,[!1,!1,!0,!0]),t.alike(n,e.state(9,9,a.from([3,1,0,1,4,0,0,1,1]))),n.start=0,t.alike(o.decode(n),[!0,!1,!0]),t.alike(o.decode(n),[!1,!1,!0,!0]),t.is(n.start,n.end),t.exception(()=>o.decode(n))}),t("raw array",function(t){const n=e.state(),o=e.raw.array(e.bool);o.preencode(n,[!0]),t.alike(n,e.state(0,1)),o.preencode(n,[!0]),t.alike(n,e.state(0,2)),n.buffer=a.alloc(n.end),o.encode(n,[!0]),t.alike(n,e.state(1,2,a.from([1,0]))),o.encode(n,[!0]),t.alike(n,e.state(2,2,a.from([1,1]))),n.start=0,t.alike(o.decode(n),[!0,!0]),t.alike(o.decode(n),[])}),t("json",function(t){const n=e.state();e.json.preencode(n,{a:1,b:2}),t.alike(n,e.state(0,14)),n.buffer=a.alloc(n.end),e.json.encode(n,{a:1,b:2}),t.alike(n,e.state(14,14,a.concat([a.from([13]),a.from('{"a":1,"b":2}')]))),n.start=0,t.alike(e.json.decode(n),{a:1,b:2}),t.exception(()=>e.json.decode(n))}),t("raw json",function(t){const n=e.state();e.raw.json.preencode(n,{a:1,b:2}),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.raw.json.encode(n,{a:1,b:2}),t.alike(n,e.state(13,13,a.from('{"a":1,"b":2}'))),n.start=0,t.alike(e.raw.json.decode(n),{a:1,b:2}),t.exception(()=>e.json.decode(n))}),t("lexint: big numbers",function(t){t.plan(1);let n,o=e.encode(e.lexint,0),r=1;for(n=1;n<Number.MAX_VALUE;n+=r){const t=e.encode(e.lexint,n);if(a.compare(t,o)<1)break;o=t,r=1+Math.pow(245,Math.ceil(Math.log(n)/Math.log(256)))}t.is(n,1/0)}),t("lexint: range precision",function(t){t.plan(2);const a=1e55,n=10000000000001e42,o=e.encode(e.lexint,a).toString("hex"),r=e.encode(e.lexint,n).toString("hex");t.not(a,n),t.not(o,r)}),t("lexint: range precision",function(t){let n=e.encode(e.lexint,0);for(let o=0,r=1e55;o<1e3;r=1e55+1e46*++o){const o=e.encode(e.lexint,r);a.compare(o,n)<1&&t.fail("cur <= prev"),n=o}t.ok(!0),t.end()}),t("lexint: small numbers",function(t){let n=e.encode(e.lexint,0);for(let o=1;o<1048576;o++){const r=e.encode(e.lexint,o);a.compare(r,n)<1&&t.fail("cur <= prev"),n=r}t.ok(!0),t.end()}),t("lexint: throws",function(t){t.exception(()=>{e.decode(e.lexint,a.alloc(1,251))});let n=252;const o=e.state();e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n<<=8,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n<<=8,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n*=256,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n*=65536,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),t.end()}),t("lexint: unpack",function(t){let a,n=1;for(a=1;a<Number.MAX_VALUE;a+=n){const t=e.encode(e.lexint,a);o(a,e.decode(e.lexint,t)),n=1+Math.pow(245,Math.ceil(Math.log(a)/Math.log(256)))}function o(e,a){const n=e+" !=~ "+a;/e\+\d+$/.test(e)||/e\+\d+$/.test(a)?String(e).slice(0,8)===String(a).slice(0,8)&&/e\+(\d+)$/.exec(e)[1]===/e\+(\d+)$/.exec(a)[1]||t.fail(n):String(e).slice(0,8)===String(a).slice(0,8)&&String(e).length===String(a).length||t.fail(n)}t.is(a,1/0),t.end()}),t("date",function(t){const a=new Date;t.alike(e.decode(e.date,e.encode(e.date,a)),a)}),t("any",function(t){const a={hello:"world",num:42,neg:-42,arr:[{yes:1},{no:!1}],nest:{},today:new Date,float:.54};t.alike(e.decode(e.any,e.encode(e.any,a)),a);const n=new Array(3);t.alike(e.decode(e.any,e.encode(e.any,n)),[null,null,null])}),t("framed",function(t){const n=e.frame(e.uint);t.alike(e.encode(n,42),a.from([1,42])),t.alike(e.decode(n,a.from([1,42])),42),t.alike(e.encode(n,4200),a.from([3,253,104,16])),t.alike(e.decode(n,a.from([3,253,104,16])),4200)}),t("port",function(t){const a=Buffer.from([52,18]);t.alike(e.encode(e.port,4660),a),t.alike(e.decode(e.port,a),4660)}),t("ipv4",function(t){const a="1.2.3.4",n=Buffer.from([1,2,3,4]);t.alike(e.encode(e.ipv4,a),n),t.alike(e.decode(e.ipv4,n),a)}),t("ipv4 + port",function(t){const a="1.2.3.4";t.alike(e.decode(e.ipv4Address,e.encode(e.ipv4Address,{host:a,port:1234})),{host:a,family:4,port:1234})}),t("ipv6",function(t){const a="1:2:3:4:5:6:7:8",n=Buffer.from([0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8]);t.alike(e.encode(e.ipv6,a),n),t.alike(e.decode(e.ipv6,n),a),t.test("abbreviated",function(t){const a=Buffer.from([0,1,0,2,0,0,0,0,0,0,0,0,0,7,0,8]);t.alike(e.encode(e.ipv6,"1:2::7:8"),a),t.alike(e.decode(e.ipv6,a),"1:2:0:0:0:0:7:8")}),t.test("prefix abbreviated",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,5,0,6,0,7,0,8]);t.alike(e.encode(e.ipv6,"::5:6:7:8"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:5:6:7:8")}),t.test("suffix abbreviated",function(t){const a=Buffer.from([0,1,0,2,0,3,0,4,0,0,0,0,0,0,0,0]);t.alike(e.encode(e.ipv6,"1:2:3:4::"),a),t.alike(e.decode(e.ipv6,a),"1:2:3:4:0:0:0:0")}),t.test("any",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);t.alike(e.encode(e.ipv6,"::"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:0:0:0:0")}),t.test("lowercase hex",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,205]);t.alike(e.encode(e.ipv6,"::abcd"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:0:0:0:abcd")}),t.test("uppercase hex",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,205]);t.alike(e.encode(e.ipv6,"::ABCD"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:0:0:0:abcd")})}),t("ipv6 + port",function(t){const a="1:2:3:4:5:6:7:8";t.alike(e.decode(e.ipv6Address,e.encode(e.ipv6Address,{host:a,port:1234})),{host:a,family:6,port:1234})}),t("dual ip",function(t){{const a="1.2.3.4";t.alike(e.decode(e.ip,e.encode(e.ip,a)),a,"ipv4")}{const a="1:2:3:4:5:6:7:8";t.alike(e.decode(e.ip,e.encode(e.ip,a)),a,"ipv6")}}),t("dual ip + port",function(t){const a=1234;{const n="1.2.3.4";t.alike(e.decode(e.ipAddress,e.encode(e.ipAddress,{host:n,port:a})),{host:n,family:4,port:a},"ipv4")}{const n="1:2:3:4:5:6:7:8";t.alike(e.decode(e.ipAddress,e.encode(e.ipAddress,{host:n,port:a})),{host:n,family:6,port:a},"ipv6")}}),t("record",function(t){const a=e.record(e.string,e.string);t.alike(e.decode(a,e.encode(a,{a:"hello",b:"world"})),Object.assign(Object.create(null),{a:"hello",b:"world"}))}),t("record - nested",function(t){const a=e.record(e.string,e.record(e.string,e.string));t.alike(e.decode(a,e.encode(a,{a:{b:"record"},c:{d:"nested",e:"test"}})),Object.assign(Object.create(null),{a:Object.assign(Object.create(null),{b:"record"}),c:Object.assign(Object.create(null),{d:"nested",e:"test"})}))}),t("stringRecord",function(t){t.alike(e.decode(e.stringRecord,e.encode(e.stringRecord,{a:"hello",b:"world"})),Object.assign(Object.create(null),{a:"hello",b:"world"}))}); |
| … | … | @@ -2,27 +2,27 @@ |
| 2 | 2 | "nightly": { |
| 3 | 3 | "bundles": { |
| 4 | 4 | "key": "yssst9xdnypg7dbbkc3a4hrusnyb8n4n7e3a9yw469fuuf4i4tso", |
| 5 | "length": 206 | |
| 5 | "length": 221 | |
| 6 | 6 | }, |
| 7 | 7 | "config": { |
| 8 | 8 | "key": "5hdn7otebmiachsu4u5d86rp8ejhhmrrm6sstg198fun6rmf41qo", |
| 9 | "length": 13 | |
| 9 | "length": 14 | |
| 10 | 10 | } |
| 11 | 11 | }, |
| 12 | 12 | "internal": { |
| 13 | 13 | "bundles": { |
| 14 | 14 | "key": "yssst9xdnypg7dbbkc3a4hrusnyb8n4n7e3a9yw469fuuf4i4tso", |
| 15 | "length": 206 | |
| 15 | "length": 221 | |
| 16 | 16 | }, |
| 17 | 17 | "config": { |
| 18 | 18 | "key": "5hdn7otebmiachsu4u5d86rp8ejhhmrrm6sstg198fun6rmf41qo", |
| 19 | "length": 13 | |
| 19 | "length": 14 | |
| 20 | 20 | } |
| 21 | 21 | }, |
| 22 | 22 | "production": { |
| 23 | 23 | "bundles": { |
| 24 | 24 | "key": "eu5e6dieybhbshpzo6nxy8pwycb341qdywkbwqmtjmww174bfnjo", |
| 25 | "length": 206 | |
| 25 | "length": 221 | |
| 26 | 26 | }, |
| 27 | 27 | "config": { |
| 28 | 28 | "key": "w94a4mrokgp4hu757rhipc3isrxstiyupnpabat357hh6jutwrro", |
| … | … | @@ -30,13 +30,9 @@ |
| 30 | 30 | } |
| 31 | 31 | }, |
| 32 | 32 | "prerelease": { |
| 33 | "bundles": { | |
| 34 | "key": "yssst9xdnypg7dbbkc3a4hrusnyb8n4n7e3a9yw469fuuf4i4tso", | |
| 35 | "length": 206 | |
| 36 | }, | |
| 37 | 33 | "config": { |
| 38 | 34 | "key": "3i34itm8zqhweq4oxjw3ebg1kyhywqn9359shn9sr1twmm7jdpuo", |
| 39 | "length": 10 | |
| 35 | "length": 11 | |
| 40 | 36 | } |
| 41 | 37 | } |
| 42 | 38 | } |
| … | … | @@ -1,102 +1,104 @@ |
| 1 | 1 | const e = require("keet-identity-key"), |
| 2 | t = require("hypercore-storage"), | |
| 3 | i = require("hypercore-id-encoding"), | |
| 4 | s = require("ready-resource"), | |
| 5 | r = require("ready-guard"), | |
| 6 | o = require("hyperswarm"), | |
| 7 | a = require("hyperdht"), | |
| 8 | n = require("corestore"), | |
| 9 | l = require("hypercore"), | |
| 10 | c = require("hyperblobs"), | |
| 11 | h = require("autobase"), | |
| 12 | d = require("scope-lock"), | |
| 13 | y = require("rache"), | |
| 14 | u = require("protomux-wakeup"), | |
| 15 | p = require("promaphore"), | |
| 16 | m = require("safety-catch"), | |
| 17 | g = require("task-backoff"), | |
| 18 | b = require("hypercore-crypto"), | |
| 19 | w = require("compact-encoding"), | |
| 20 | f = require("z32"), | |
| 21 | v = require("b4a"), | |
| 22 | k = require("fs"), | |
| 23 | P = require("path"), | |
| 2 | { ProofEncoding: t } = require("keet-identity-key/lib/encoding"), | |
| 3 | i = require("hypercore-storage"), | |
| 4 | s = require("hypercore-id-encoding"), | |
| 5 | r = require("ready-resource"), | |
| 6 | o = require("ready-guard"), | |
| 7 | a = require("hyperswarm"), | |
| 8 | n = require("hyperdht"), | |
| 9 | l = require("corestore"), | |
| 10 | c = require("hypercore"), | |
| 11 | h = require("hyperblobs"), | |
| 12 | d = require("autobase"), | |
| 13 | y = require("scope-lock"), | |
| 14 | u = require("rache"), | |
| 15 | p = require("protomux-wakeup"), | |
| 16 | m = require("promaphore"), | |
| 17 | g = require("safety-catch"), | |
| 18 | b = require("task-backoff"), | |
| 19 | w = require("hypercore-crypto"), | |
| 20 | f = require("compact-encoding"), | |
| 21 | v = require("z32"), | |
| 22 | k = require("b4a"), | |
| 23 | P = require("fs"), | |
| 24 | K = require("path"), | |
| 24 | 25 | _ = require("blind-peering"), |
| 25 | K = require("multi-profile-store"), | |
| 26 | T = require("hyperconf") | |
| 27 | ;(l.enable(l.SMALL_WANTS), l.setRecoveryPeers && l.setRecoveryPeers([])) | |
| 28 | const R = require("@holepunchto/keet-push"), | |
| 29 | L = require("@holepunchto/keet-unread-anchors"), | |
| 30 | { generateMnemonic: E } = require("bip39-mnemonic"), | |
| 31 | { HyperDiscoveryClient: C } = require("@holepunchto/hyperdiscovery"), | |
| 32 | B = require("@holepunchto/keet-indexing"), | |
| 33 | x = require("./schema/versions"), | |
| 34 | I = require("./lib/api/v1"), | |
| 35 | D = require("./lib/api/v2"), | |
| 36 | S = require("./lib/core/crypto"), | |
| 37 | A = require("./lib/core/local"), | |
| 38 | q = require("./lib/core/files"), | |
| 39 | O = require("./lib/core/tasks"), | |
| 40 | M = require("./lib/core/sync"), | |
| 41 | V = require("./lib/core/migrations/3/apply"), | |
| 42 | { SwarmWorker: U } = require("./lib/core/swarm"), | |
| 26 | T = require("multi-profile-store"), | |
| 27 | R = require("hyperconf") | |
| 28 | ;(c.enable(c.SMALL_WANTS), c.setRecoveryPeers && c.setRecoveryPeers([])) | |
| 29 | const L = require("@holepunchto/keet-push"), | |
| 30 | E = require("@holepunchto/keet-unread-anchors"), | |
| 31 | { generateMnemonic: C } = require("bip39-mnemonic"), | |
| 32 | { HyperDiscoveryClient: B } = require("@holepunchto/hyperdiscovery"), | |
| 33 | x = require("@holepunchto/keet-indexing"), | |
| 34 | D = require("./schema/versions"), | |
| 35 | { FEATURES: I } = D, | |
| 36 | S = require("./lib/api/v1"), | |
| 37 | A = require("./lib/api/v2"), | |
| 38 | O = require("./lib/core/crypto"), | |
| 39 | q = require("./lib/core/local"), | |
| 40 | V = require("./lib/core/files"), | |
| 41 | M = require("./lib/core/tasks"), | |
| 42 | U = require("./lib/core/sync"), | |
| 43 | N = require("./lib/core/migrations/3/apply"), | |
| 44 | { SwarmWorker: F } = require("./lib/core/swarm"), | |
| 43 | 45 | { |
| 44 | getWriterKey: N, | |
| 45 | getInvitationId: F, | |
| 46 | createInvitation: W, | |
| 47 | generateRoomCapabilities: $, | |
| 48 | generateIdentityPairingName: j, | |
| 49 | generateRoomPairingName: G, | |
| 46 | getWriterKey: W, | |
| 47 | getInvitationId: j, | |
| 48 | createInvitation: $, | |
| 49 | generateRoomCapabilities: G, | |
| 50 | generateIdentityPairingName: H, | |
| 51 | generateRoomPairingName: J, | |
| 50 | 52 | } = require("./lib/core/invitations"), |
| 51 | { getMemberForDeviceKey: H } = require("./lib/core/contract/query"), | |
| 52 | { restoreAvatar: J } = require("./lib/core/contract/avatars"), | |
| 53 | { RoomStatus: Y } = require("./lib/core/contract/identity/private"), | |
| 54 | { DEBUG_FLAGS: z, DHT_SETTINGS: X } = require("./lib/core/debug/debugging"), | |
| 55 | { KeetContract: Q } = require("./lib/core/contract"), | |
| 56 | { KeetContractError: Z } = require("./lib/core/contract/errors.js"), | |
| 57 | ee = require("./lib/core/log"), | |
| 53 | { getMemberForDeviceKey: Y } = require("./lib/core/contract/query"), | |
| 54 | { restoreAvatar: z } = require("./lib/core/contract/avatars"), | |
| 55 | { RoomStatus: Q } = require("./lib/core/contract/identity/private"), | |
| 56 | { DEBUG_FLAGS: X, DHT_SETTINGS: Z } = require("./lib/core/debug/debugging"), | |
| 57 | { KeetContract: ee } = require("./lib/core/contract"), | |
| 58 | { KeetContractError: te } = require("./lib/core/contract/errors.js"), | |
| 59 | ie = require("./lib/core/log"), | |
| 58 | 60 | { |
| 59 | 61 | contract: { |
| 60 | hyperdispatch: { decode: te, DispatchError: ie }, | |
| 61 | hyperschema: { getEnum: se, getEncoding: re, encode: oe, decode: ae }, | |
| 62 | hyperdispatch: { decode: se, DispatchError: re }, | |
| 63 | hyperschema: { getEnum: oe, getEncoding: ae, encode: ne, decode: le }, | |
| 62 | 64 | }, |
| 63 | 65 | local: { |
| 64 | hyperschema: { getEnum: ne }, | |
| 66 | hyperschema: { getEnum: ce }, | |
| 65 | 67 | }, |
| 66 | config: { hyperconf: le }, | |
| 68 | config: { hyperconf: he }, | |
| 67 | 69 | } = require("./schema/spec"), |
| 68 | ce = re("@keet-private-id/profile-discovery-record"), | |
| 69 | he = se("@keet/build-type"), | |
| 70 | de = require("./lib/core/users"), | |
| 71 | ye = require("protomux-rpc-client"), | |
| 72 | { KeetErrorManager: ue, KeetErrorV2: pe } = require("./lib/errors"), | |
| 73 | { Version: me } = require("bare-semver"), | |
| 74 | { roomMigrationsStats: ge } = require("./lib/core/contract/stats/local"), | |
| 75 | be = require("./lib/bundle"), | |
| 76 | we = ne("@local/keet-state"), | |
| 77 | fe = 2592e6, | |
| 78 | ve = "keet-swarm-keypair", | |
| 79 | ke = "keet-core", | |
| 80 | Pe = "keet-unreads", | |
| 81 | _e = "keet-bundles", | |
| 82 | Ke = 1e4, | |
| 83 | Te = 3e3, | |
| 84 | Re = 4, | |
| 85 | Le = 5e3, | |
| 86 | Ee = v.alloc(32), | |
| 87 | Ce = 1, | |
| 88 | Be = 500, | |
| 89 | xe = 9, | |
| 90 | Ie = 1728e5, | |
| 91 | De = 5, | |
| 92 | Se = 10, | |
| 93 | Ae = 1711547109544, | |
| 94 | qe = require("./lib/env"), | |
| 95 | Oe = 64, | |
| 96 | Me = 3, | |
| 97 | Ve = 30, | |
| 98 | Ue = 4 | |
| 99 | class Ne { | |
| 70 | de = ae("@keet-private-id/profile-discovery-record"), | |
| 71 | ye = oe("@keet/build-type"), | |
| 72 | ue = require("./lib/core/users"), | |
| 73 | pe = require("protomux-rpc-client"), | |
| 74 | { KeetErrorManager: me, KeetErrorV2: ge } = require("./lib/errors"), | |
| 75 | { Version: be } = require("bare-semver"), | |
| 76 | { roomMigrationsStats: we } = require("./lib/core/contract/stats/local"), | |
| 77 | fe = require("./lib/bundle"), | |
| 78 | ve = ce("@local/keet-state"), | |
| 79 | ke = 2592e6, | |
| 80 | Pe = "keet-swarm-keypair", | |
| 81 | Ke = "keet-core", | |
| 82 | _e = "keet-unreads", | |
| 83 | Te = "keet-bundles", | |
| 84 | Re = 1e4, | |
| 85 | Le = 3e3, | |
| 86 | Ee = 4, | |
| 87 | Ce = 5e3, | |
| 88 | Be = k.alloc(32), | |
| 89 | xe = 1, | |
| 90 | De = 500, | |
| 91 | Ie = 9, | |
| 92 | Se = 1728e5, | |
| 93 | Ae = 5, | |
| 94 | Oe = 10, | |
| 95 | qe = 1711547109544, | |
| 96 | Ve = require("./lib/env"), | |
| 97 | Me = 64, | |
| 98 | Ue = 3, | |
| 99 | Ne = 30, | |
| 100 | Fe = 4 | |
| 101 | class We { | |
| 100 | 102 | constructor(e, t) { |
| 101 | 103 | ;((this.keet = e), |
| 102 | 104 | (this.roomId = t), |
| … | … | @@ -125,7 +127,7 @@ class Ne { |
| 125 | 127 | return i && !(await this.keet.internalDryRun(this.room, this.room.view, [s])) |
| 126 | 128 | ? this._noop() |
| 127 | 129 | : ((this.length = await this.append(s)), |
| 128 | !this.pushLength && Ge(e) && (this.pushLength = this.length), | |
| 130 | !this.pushLength && Je(e) && (this.pushLength = this.length), | |
| 129 | 131 | this.length) |
| 130 | 132 | } |
| 131 | 133 | async append(e) { |
| … | … | @@ -154,16 +156,16 @@ class Ne { |
| 154 | 156 | (this.shouldPush = !1)) |
| 155 | 157 | } |
| 156 | 158 | } |
| 157 | class Fe extends s { | |
| 158 | constructor(e, t, s, r, o) { | |
| 159 | class je extends r { | |
| 160 | constructor(e, t, i, r, o) { | |
| 159 | 161 | ;(super(), |
| 160 | 162 | (this.keet = e), |
| 161 | 163 | (this.id = t), |
| 162 | (this.key = s), | |
| 164 | (this.key = i), | |
| 163 | 165 | (this.base = o), |
| 164 | 166 | (this.externalBlobs = null), |
| 165 | 167 | (this.discoveryKey = r), |
| 166 | (this.discoveryId = i.encode(this.discoveryKey)), | |
| 168 | (this.discoveryId = s.encode(this.discoveryKey)), | |
| 167 | 169 | (this.view = this.base.view), |
| 168 | 170 | (this.db = this.view.db), |
| 169 | 171 | (this.core = this.view.core), |
| … | … | @@ -173,11 +175,11 @@ class Fe extends s { |
| 173 | 175 | this.keet.push && (this.push = this.keet.push.room(this.key, this.discoveryKey)), |
| 174 | 176 | (this.refs = 0), |
| 175 | 177 | (this.idleTicks = 0), |
| 176 | (this._pushLock = new d({ debounce: !0 })), | |
| 177 | this.ready().catch(Je)) | |
| 178 | (this._pushLock = new y({ debounce: !0 })), | |
| 179 | this.ready().catch(ze)) | |
| 178 | 180 | } |
| 179 | 181 | get deviceId() { |
| 180 | return i.encode(this.deviceKey) | |
| 182 | return s.encode(this.deviceKey) | |
| 181 | 183 | } |
| 182 | 184 | get deviceKey() { |
| 183 | 185 | return this.base.local.key |
| … | … | @@ -185,12 +187,7 @@ class Fe extends s { |
| 185 | 187 | get encryptionKey() { |
| 186 | 188 | return this.base.encryptionKey |
| 187 | 189 | } |
| 188 | async getStats() { | |
| 189 | const [e, t, s] = await Promise.all([ | |
| 190 | this.keet.local.get("@local/rooms", { roomKey: this.key }), | |
| 191 | this.keet.local.get("@local/room-preferences", { roomKey: this.key }), | |
| 192 | this.keet.local.get("@local/writers-by-room-key", { roomKey: this.key }), | |
| 193 | ]) | |
| 190 | getQuickStats() { | |
| 194 | 191 | return { |
| 195 | 192 | view: { |
| 196 | 193 | peers: this.view.core.peers.length, |
| … | … | @@ -216,14 +213,55 @@ class Fe extends s { |
| 216 | 213 | flushing: !!this.base.flushing, |
| 217 | 214 | advancing: !!this.base._advancing, |
| 218 | 215 | }, |
| 216 | } | |
| 217 | } | |
| 218 | async getStats() { | |
| 219 | const [e, t, i] = await Promise.all([ | |
| 220 | this.keet.local.get("@local/rooms", { roomKey: this.key }), | |
| 221 | this.keet.local.get("@local/room-preferences", { roomKey: this.key }), | |
| 222 | this.keet.local.get("@local/writers-by-room-key", { roomKey: this.key }), | |
| 223 | ]), | |
| 224 | { view: r, system: o, base: a } = this.getQuickStats() | |
| 225 | return { | |
| 226 | view: r, | |
| 227 | system: o, | |
| 228 | base: a, | |
| 219 | 229 | writer: { |
| 220 | key: s.key ? i.encode(s.key) : null, | |
| 221 | roomKey: s?.roomKey ? i.encode(s.roomKey) : null, | |
| 230 | key: i.key ? s.encode(i.key) : null, | |
| 231 | roomKey: i?.roomKey ? s.encode(i.roomKey) : null, | |
| 222 | 232 | }, |
| 223 | 233 | status: e?.status, |
| 224 | 234 | preferences: t?.status, |
| 225 | 235 | } |
| 226 | 236 | } |
| 237 | async _createDeviceAttestation(e, t) { | |
| 238 | const i = await this.keet.internalEnterLocalTransaction() | |
| 239 | try { | |
| 240 | const s = this.keet.internalAttestData(e, t) | |
| 241 | return ( | |
| 242 | await i.insert("@local/device-attestations", { | |
| 243 | deviceKey: e, | |
| 244 | proof: s, | |
| 245 | createdAt: Date.now(), | |
| 246 | }), | |
| 247 | await i.flush(), | |
| 248 | s | |
| 249 | ) | |
| 250 | } finally { | |
| 251 | await this.keet.internalExitLocalTransaction() | |
| 252 | } | |
| 253 | } | |
| 254 | async _attestedPushNotify(e) { | |
| 255 | const t = this.deviceKey, | |
| 256 | [i, s] = await Promise.all([ | |
| 257 | this.keet.local.get("@local/identity"), | |
| 258 | this.keet.local.get("@local/device-attestations", { deviceKey: t }), | |
| 259 | ]), | |
| 260 | r = s?.createdAt || 0, | |
| 261 | o = i.proofShortenedAt || 0, | |
| 262 | a = !s || r < o ? await this._createDeviceAttestation(t, i) : s.proof | |
| 263 | await this.push.send(this.base.local, e, { version: 1, attest: a }) | |
| 264 | } | |
| 227 | 265 | async _safePushNotify(e) { |
| 228 | 266 | if ( |
| 229 | 267 | (this._pushLengths || (this._pushLengths = []), |
| … | … | @@ -235,7 +273,7 @@ class Fe extends s { |
| 235 | 273 | const t = this._pushLengths |
| 236 | 274 | this._pushLengths = null |
| 237 | 275 | try { |
| 238 | await this.push.send(this.base.local, t) | |
| 276 | await this._attestedPushNotify(t) | |
| 239 | 277 | } catch (e) { |
| 240 | 278 | this.keet.onerror(e, { roomKey: this.key }) |
| 241 | 279 | } |
| … | … | @@ -258,7 +296,7 @@ class Fe extends s { |
| 258 | 296 | const t = await this.db.get("@keet/devices", { key: e.core.key }) |
| 259 | 297 | t && (await this.db.get("@keet/members", { key: t.memberKey })) |
| 260 | 298 | } catch (e) { |
| 261 | m(e) | |
| 299 | g(e) | |
| 262 | 300 | } |
| 263 | 301 | }), |
| 264 | 302 | this.base.local.on("remote-contiguous-length", this._handleSentLengthChanged.bind(this)), |
| … | … | @@ -267,8 +305,8 @@ class Fe extends s { |
| 267 | 305 | }), |
| 268 | 306 | this.db.get("@keet/room-config").then((e) => { |
| 269 | 307 | this.keet.logger.debug("opened id: " + this.id + " title: " + e?.title) |
| 270 | }, m), | |
| 271 | (this.externalBlobs = new c( | |
| 308 | }, g), | |
| 309 | (this.externalBlobs = new h( | |
| 272 | 310 | this.keet.store.get({ |
| 273 | 311 | name: this.id + "/blobs", |
| 274 | 312 | encryptionKey: this.encryptionKey, |
| … | … | @@ -342,7 +380,7 @@ class Fe extends s { |
| 342 | 380 | e || this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) |
| 343 | 381 | const [t, i] = await Promise.all([ |
| 344 | 382 | this.db.get("@keet/system-digest"), |
| 345 | H(this.db, this.deviceKey), | |
| 383 | Y(this.db, this.deviceKey), | |
| 346 | 384 | ]) |
| 347 | 385 | if (!i?.status.isModerator || t?.abi.version >= this.keet.abi.autoupgrade) return |
| 348 | 386 | await this.keet.internalDispatchUpgrade(this.id, this.keet.abi.autoupgrade) |
| … | … | @@ -358,9 +396,9 @@ class Fe extends s { |
| 358 | 396 | this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) |
| 359 | 397 | const [e, t] = await Promise.all([ |
| 360 | 398 | this.keet.local.get("@local/identity"), |
| 361 | H(this.db, this.deviceKey), | |
| 399 | Y(this.db, this.deviceKey), | |
| 362 | 400 | ]) |
| 363 | if (this.closing || !e || !t || v.equals(this.key, e.privateProfileKey)) return | |
| 401 | if (this.closing || !e || !t || k.equals(this.key, e.privateProfileKey)) return | |
| 364 | 402 | const i = await this.keet.local.get("@local/rooms", { roomKey: e.privateProfileKey }) |
| 365 | 403 | if (this.closing) return |
| 366 | 404 | if (t.profile.timestamp >= i.selfMember.profile.timestamp) return |
| … | … | @@ -385,7 +423,7 @@ class Fe extends s { |
| 385 | 423 | return |
| 386 | 424 | const e = await this.keet.local.get("@local/room-metadata", { roomKey: this.key }) |
| 387 | 425 | if (this.closing || e.repairs >= 1) return |
| 388 | if (this.base.linearizer.size > Be) return | |
| 426 | if (this.base.linearizer.size > De) return | |
| 389 | 427 | const t = await this.db.get("@keet-private-id/identity") |
| 390 | 428 | if (this.closing || t) return |
| 391 | 429 | if (((e.repairs = 1), await this.base.repair(), this.closing)) return |
| … | … | @@ -401,7 +439,7 @@ class Fe extends s { |
| 401 | 439 | } |
| 402 | 440 | async _internalEncodeOperation(e, t, { view: i = this.view, timestamp: s = Date.now() } = {}) { |
| 403 | 441 | const r = await i.db.get("@keet/system-digest") |
| 404 | if (!this.keet.isValidBuildType(r)) throw pe.INVALID_BUILD_TYPE() | |
| 442 | if (!this.keet.isValidBuildType(r)) throw ge.INVALID_BUILD_TYPE() | |
| 405 | 443 | return ( |
| 406 | 444 | await this.keet.contractBundles.loadBundle(r ? r.abi.version : this.keet.abi.autoupgrade) |
| 407 | 445 | ).encodeOperation(e, { header: { timestamp: s }, ...t }) |
| … | … | @@ -412,7 +450,7 @@ class Fe extends s { |
| 412 | 450 | r = [] |
| 413 | 451 | let o = !1 |
| 414 | 452 | for (const { type: e, op: a } of i) |
| 415 | (r.push(this._internalEncodeOperation(e, a, { ...t, timestamp: s })), Ge(e) && (o = !0)) | |
| 453 | (r.push(this._internalEncodeOperation(e, a, { ...t, timestamp: s })), Je(e) && (o = !0)) | |
| 416 | 454 | return { encoded: await Promise.all(r), timestamp: s, shouldPush: o } |
| 417 | 455 | } |
| 418 | 456 | async _postAppend({ encoded: e = [], pushLength: t = 0, timestamp: i = Date.now() }) { |
| … | … | @@ -436,69 +474,69 @@ class Fe extends s { |
| 436 | 474 | return this.dispatchBatch([{ type: e, op: t }], i) |
| 437 | 475 | } |
| 438 | 476 | } |
| 439 | module.exports = class extends s { | |
| 440 | constructor(e, i = {}) { | |
| 477 | module.exports = class extends r { | |
| 478 | constructor(e, t = {}) { | |
| 441 | 479 | if ( |
| 442 | 480 | (super(), |
| 443 | 481 | (this.dir = e), |
| 444 | (this.opts = i), | |
| 445 | (this.isMobile = !!i.mobile), | |
| 446 | (this.isTesting = !!i.testing), | |
| 447 | (this.appVersion = i.appVersion ? me.parse(i.appVersion) : null), | |
| 448 | (this.forceBuildType = !!i.forceBuildType), | |
| 449 | !i.buildType) | |
| 482 | (this.opts = t), | |
| 483 | (this.isMobile = !!t.mobile), | |
| 484 | (this.isTesting = !!t.testing), | |
| 485 | (this.appVersion = t.appVersion ? be.parse(t.appVersion) : null), | |
| 486 | (this.forceBuildType = !!t.forceBuildType), | |
| 487 | !t.buildType) | |
| 450 | 488 | ) |
| 451 | throw pe.INVALID_BUILD_TYPE() | |
| 452 | ;((this.buildType = He(i.buildType)), | |
| 453 | (this.logger = new ee(i.logger)), | |
| 489 | throw ge.INVALID_BUILD_TYPE() | |
| 490 | ;((this.buildType = Ye(t.buildType)), | |
| 491 | (this.logger = new ie(t.logger)), | |
| 454 | 492 | this.isTesting && this.logger.mute()) |
| 455 | const s = qe(i.buildType) | |
| 456 | ;((this.isNightly = this.buildType === he.Nightly), | |
| 457 | (this.isExperimental = this.isTesting ? (i.experimental ?? this.isNightly) : this.isNightly), | |
| 458 | (this.offlineBoot = new r()), | |
| 459 | (this.onlineBoot = new r()), | |
| 493 | const s = Ve(t.buildType) | |
| 494 | ;((this.isNightly = this.buildType === ye.Nightly), | |
| 495 | (this.isExperimental = this.isTesting ? (t.experimental ?? this.isNightly) : this.isNightly), | |
| 496 | (this.offlineBoot = new o()), | |
| 497 | (this.onlineBoot = new o()), | |
| 460 | 498 | (this.debug = {}), |
| 461 | (this.versions = x), | |
| 462 | (this.abi = i.testingABI || { | |
| 463 | max: this.isExperimental ? x.EXPERIMENTAL : x.STABLE, | |
| 464 | autoupgrade: this.isExperimental ? x.EXPERIMENTAL : x.AUTOUPGRADE, | |
| 465 | production: x.STABLE, | |
| 499 | (this.versions = D), | |
| 500 | (this.abi = t.testingABI || { | |
| 501 | max: this.isExperimental ? D.EXPERIMENTAL : D.STABLE, | |
| 502 | autoupgrade: this.isExperimental ? D.EXPERIMENTAL : D.AUTOUPGRADE, | |
| 503 | production: D.STABLE, | |
| 466 | 504 | }), |
| 467 | (this.logout = i.logout), | |
| 468 | (this.storage = new t(e, i.storage)), | |
| 469 | (this.rootCorestore = new n(this.storage, { | |
| 470 | globalCache: new y({ maxSize: i.maxCacheSize }), | |
| 505 | (this.logout = t.logout), | |
| 506 | (this.storage = new i(e, t.storage)), | |
| 507 | (this.rootCorestore = new l(this.storage, { | |
| 508 | globalCache: new u({ maxSize: t.maxCacheSize }), | |
| 471 | 509 | manifestVersion: 2, |
| 472 | 510 | })), |
| 473 | (this.store = this.rootCorestore.namespace(ke)), | |
| 511 | (this.store = this.rootCorestore.namespace(Ke)), | |
| 474 | 512 | this.rootCorestore.watch(this._handleCoreOpen.bind(this)), |
| 475 | (this.local = A.rocks(this.storage.rocks.columnFamily("keet/local-database"))), | |
| 513 | (this.local = q.rocks(this.storage.rocks.columnFamily("keet/local-database"))), | |
| 476 | 514 | (this.discovery = null), |
| 477 | (this.gatekeepers = i.gatekeepers || []), | |
| 515 | (this.gatekeepers = t.gatekeepers || []), | |
| 478 | 516 | (this.push = null), |
| 479 | (this.protomuxWakeup = new u(this._handleWakeup.bind(this))), | |
| 480 | (this.backoff = new g()), | |
| 517 | (this.protomuxWakeup = new p(this._handleWakeup.bind(this))), | |
| 518 | (this.backoff = new b()), | |
| 481 | 519 | (this.rooms = new Map()), |
| 482 | 520 | (this.activeRooms = new Set()), |
| 483 | (this._transactionLock = new d()), | |
| 521 | (this._transactionLock = new y()), | |
| 484 | 522 | (this._tx = null), |
| 485 | 523 | (this.hyperconf = null), |
| 486 | 524 | (this.config = null), |
| 487 | 525 | (this.configMinVersion = null), |
| 488 | (this.errorManager = new ue(this, this.opts)), | |
| 489 | (this.swarmWorker = new U(this, this.opts.swarmWorker)), | |
| 490 | (this.files = new q(this, this.opts)), | |
| 491 | (this._onerror = i.onerror || m), | |
| 526 | (this.errorManager = new me(this, this.opts)), | |
| 527 | (this.swarmWorker = new F(this, this.opts.swarmWorker)), | |
| 528 | (this.files = new V(this, this.opts)), | |
| 529 | (this._onerror = t.onerror || g), | |
| 492 | 530 | (this.onerror = this.errorManager |
| 493 | 531 | ? (e, t = {}) => { |
| 494 | 532 | const i = this.errorManager.normalize(e, t) |
| 495 | 533 | ;(this.errorManager.add(i), this.logger.error(i), this._onerror(i)) |
| 496 | 534 | } |
| 497 | 535 | : this._onerror), |
| 498 | (this.apiV1 = new I(this, i)), | |
| 536 | (this.apiV1 = new S(this, t)), | |
| 499 | 537 | (this.backendAPI = this.apiV1), |
| 500 | 538 | (this.api = this.backendAPI.api.core), |
| 501 | (this.blindPeeringOpts = i.blindPeeringOpts || {}), | |
| 539 | (this.blindPeeringOpts = t.blindPeeringOpts || {}), | |
| 502 | 540 | (this.contractBundles = null), |
| 503 | 541 | (this.tasks = null), |
| 504 | 542 | (this.swarm = null), |
| … | … | @@ -510,22 +548,23 @@ module.exports = class extends s { |
| 510 | 548 | (this.discoveryCore = null), |
| 511 | 549 | (this.discoveryCoreSession = null), |
| 512 | 550 | (this.push = null), |
| 513 | (this.state = we.RESUME), | |
| 514 | (this._bundlesKey = i.bundlesKey || s.bundles.key), | |
| 515 | (this._bundlesLength = i.bundlesLength || s.bundles.length), | |
| 516 | (this._hyperconfKey = i.hyperconfKey || s.config.key), | |
| 517 | (this._hyperconfLength = i.hyperconfLength || s.config.length), | |
| 551 | (this.state = ve.RESUME), | |
| 552 | (this._bundlesKey = t.bundlesKey || s.bundles.key), | |
| 553 | (this._bundlesLength = t.bundlesLength || s.bundles.length), | |
| 554 | (this._hyperconfKey = t.hyperconfKey || s.config.key), | |
| 555 | (this._hyperconfLength = t.hyperconfLength || s.config.length), | |
| 518 | 556 | (this._disabledRooms = this.isTesting ? new Set() : null), |
| 519 | 557 | (this._verifiedRooms = this.isTesting ? new Set() : null), |
| 520 | (this._relayKeys = this.isTesting ? i.blindRelays || [] : null), | |
| 521 | (this._blindPeerKeys = this.isTesting ? i.blindMirroring || [] : null), | |
| 522 | (this._gatekeeperKeys = this.isTesting ? i.gatekeepers || [] : null), | |
| 523 | (this._discoveryBootstrapKeys = this.isTesting ? i.discoveryBootstrapKeys || [] : null), | |
| 524 | (this._disableUnreadSync = (this.isTesting && i.disableUnreadSync) || !1), | |
| 558 | (this._relayKeys = this.isTesting ? t.blindRelays || [] : null), | |
| 559 | (this._blindPeerKeys = this.isTesting ? t.blindMirroring || [] : null), | |
| 560 | (this._gatekeeperKeys = this.isTesting ? t.gatekeepers || [] : null), | |
| 561 | (this._discoveryBootstrapKeys = this.isTesting ? t.discoveryBootstrapKeys || [] : null), | |
| 562 | (this._disableUnreadSync = (this.isTesting && t.disableUnreadSync) || !1), | |
| 563 | (this._otaResyncPrivateProfileBump = (this.isTesting && t.otaResyncPrivateProfileBump) || 0), | |
| 525 | 564 | (this._migratedFrom = 0), |
| 526 | (this._unreadsLock = new d({ debounce: !0 })), | |
| 527 | (this._dhtOpts = i.dht), | |
| 528 | (this._swarmOpts = i.swarm), | |
| 565 | (this._unreadsLock = new y({ debounce: !0 })), | |
| 566 | (this._dhtOpts = t.dht), | |
| 567 | (this._swarmOpts = t.swarm), | |
| 529 | 568 | (this._pendingTasks = []), |
| 530 | 569 | (this._swarmTasks = []), |
| 531 | 570 | (this._runningTasks = new Set()), |
| … | … | @@ -534,29 +573,29 @@ module.exports = class extends s { |
| 534 | 573 | (this._pendingCandidates = new Map()), |
| 535 | 574 | (this._swarming = new Map()), |
| 536 | 575 | (this._pendingTraces = []), |
| 537 | (this._cacheLock = new d({ debounce: !0 })), | |
| 538 | (this._gcEnabled = !1 !== i.gc), | |
| 539 | (this._gcIdleTicks = i.gcIdleTicks || 4), | |
| 540 | (this._gcInterval = i.gcInterval || Le), | |
| 576 | (this._cacheLock = new y({ debounce: !0 })), | |
| 577 | (this._gcEnabled = !1 !== t.gc), | |
| 578 | (this._gcIdleTicks = t.gcIdleTicks || 4), | |
| 579 | (this._gcInterval = t.gcInterval || Ce), | |
| 541 | 580 | (this._gcTimer = null), |
| 542 | 581 | (this._gcClosingRooms = new Set()), |
| 543 | 582 | (this._boundAutobaseTrace = this._autobaseTrace.bind(this)), |
| 544 | (this.internalPairingTimeout = i.pairingTimeout || Te), | |
| 545 | (this._profileDiscoveryTimeout = i.profileDiscoveryTimeout || Ke), | |
| 583 | (this.internalPairingTimeout = t.pairingTimeout || Le), | |
| 584 | (this._profileDiscoveryTimeout = t.profileDiscoveryTimeout || Re), | |
| 546 | 585 | (this.migrationStatus = null), |
| 547 | (this._roomMigrations = new p(5)), | |
| 548 | (this._discoveryLock = new d({ debounce: !0 })), | |
| 549 | (this._discoverySemaphore = new p(Se)), | |
| 586 | (this._roomMigrations = new m(5)), | |
| 587 | (this._discoveryLock = new y({ debounce: !0 })), | |
| 588 | (this._discoverySemaphore = new m(Oe)), | |
| 550 | 589 | (this._discovering = new Map()), |
| 551 | (this.internalFastJoinSemaphore = new p(4)), | |
| 590 | (this.internalFastJoinSemaphore = new m(4)), | |
| 552 | 591 | (this.debugRunningFastJoins = 0), |
| 553 | 592 | (this.debugMaxRunningFastJoins = 0), |
| 554 | (this._rejectAnonymousProfiles = !1 !== i.rejectAnonymousProfiles), | |
| 555 | (this._registryOpts = this.isTesting ? i.userRegistry : null), | |
| 593 | (this._rejectAnonymousProfiles = !1 !== t.rejectAnonymousProfiles), | |
| 594 | (this._registryOpts = this.isTesting ? t.userRegistry : null), | |
| 556 | 595 | (this.rpcClient = null), |
| 557 | 596 | (this.userRegistry = null), |
| 558 | (this.ackThreshold = i.ackThreshold), | |
| 559 | (this.ackInterval = i.ackInterval), | |
| 597 | (this.ackThreshold = t.ackThreshold), | |
| 598 | (this.ackInterval = t.ackInterval), | |
| 560 | 599 | (this.stats = { |
| 561 | 600 | ops: 0, |
| 562 | 601 | appends: 0, |
| … | … | @@ -566,9 +605,9 @@ module.exports = class extends s { |
| 566 | 605 | downloaded: 0, |
| 567 | 606 | bytesDownloaded: 0, |
| 568 | 607 | }), |
| 569 | (this.debugForceMigrationFailure = i.debugForceMigrationFailure || null), | |
| 570 | (this.debugJoinPeer = i.debugJoinPeer || this._debugJoinPeer.bind(this)), | |
| 571 | (this.debugLeavePeer = i.debugLeavePeer || this._debugLeavePeer.bind(this)), | |
| 608 | (this.debugForceMigrationFailure = t.debugForceMigrationFailure || null), | |
| 609 | (this.debugJoinPeer = t.debugJoinPeer || this._debugJoinPeer.bind(this)), | |
| 610 | (this.debugLeavePeer = t.debugLeavePeer || this._debugLeavePeer.bind(this)), | |
| 572 | 611 | this.ready().catch(this.onerror)) |
| 573 | 612 | } |
| 574 | 613 | async backendReady() { |
| … | … | @@ -578,25 +617,25 @@ module.exports = class extends s { |
| 578 | 617 | return this.rootCorestore.storage.readOnly || !1 |
| 579 | 618 | } |
| 580 | 619 | get suspended() { |
| 581 | return this.state === we.SUSPEND | |
| 620 | return this.state === ve.SUSPEND | |
| 582 | 621 | } |
| 583 | 622 | async _openNetworking() { |
| 584 | 623 | const e = await this.getDHTSettings() |
| 585 | ;((this.swarm = new o({ | |
| 624 | ;((this.swarm = new a({ | |
| 586 | 625 | deferRandomPunch: !0, |
| 587 | dht: new a({ ...e, ...this._swarmOpts, ...this._dhtOpts }), | |
| 588 | maxPeers: Ve, | |
| 626 | dht: new n({ ...e, ...this._swarmOpts, ...this._dhtOpts }), | |
| 627 | maxPeers: Ne, | |
| 589 | 628 | ...this._swarmOpts, |
| 590 | 629 | relayThrough: this._relayThrough.bind(this), |
| 591 | keyPair: await this.rootCorestore.createKeyPair(ve), | |
| 630 | keyPair: await this.rootCorestore.createKeyPair(Pe), | |
| 592 | 631 | })), |
| 593 | (this.swarmId = i.encode(this.swarm.keyPair.publicKey)), | |
| 632 | (this.swarmId = s.encode(this.swarm.keyPair.publicKey)), | |
| 594 | 633 | this.swarm.on("connection", this._handleConnection.bind(this)), |
| 595 | 634 | (this.discovery = this._discoveryBootstrapKeys.length |
| 596 | ? new C(this._discoveryBootstrapKeys[0], { dht: this.swarm.dht }) | |
| 635 | ? new B(this._discoveryBootstrapKeys[0], { dht: this.swarm.dht }) | |
| 597 | 636 | : null), |
| 598 | (this.rpcClient = new ye(this.swarm.dht, { | |
| 599 | suspended: this.state === we.SUSPEND, | |
| 637 | (this.rpcClient = new pe(this.swarm.dht, { | |
| 638 | suspended: this.state === ve.SUSPEND, | |
| 600 | 639 | relayThrough: this._relayThrough.bind(this), |
| 601 | 640 | })), |
| 602 | 641 | (this.blindPeering = new _(this.swarm.dht, this.store, { |
| … | … | @@ -607,7 +646,7 @@ module.exports = class extends s { |
| 607 | 646 | ...this.blindPeeringOpts, |
| 608 | 647 | })), |
| 609 | 648 | this._gatekeeperKeys.length > 0 && |
| 610 | (this.push = new R(this._gatekeeperKeys, { dht: this.swarm.dht })), | |
| 649 | (this.push = new L(this._gatekeeperKeys, { dht: this.swarm.dht })), | |
| 611 | 650 | await this.swarmWorker.ready(), |
| 612 | 651 | await this.files.ready(), |
| 613 | 652 | this.readOnly && (this.blindPeering.suspend(), this.swarm.suspend())) |
| … | … | @@ -616,9 +655,9 @@ module.exports = class extends s { |
| 616 | 655 | if (!this.offlineBoot.enter()) return |
| 617 | 656 | ;(await this._ensureDebugState(), |
| 618 | 657 | await this.store.ready(), |
| 619 | (this.hyperconf = new T(le, this.store.get(this._hyperconfKey), { | |
| 658 | (this.hyperconf = new R(he, this.store.get(this._hyperconfKey), { | |
| 620 | 659 | minLength: this._hyperconfLength, |
| 621 | production: this.buildType === he.Production, | |
| 660 | production: this.buildType === ye.Production, | |
| 622 | 661 | })), |
| 623 | 662 | this.hyperconf.on("update", this._handleConfigUpdated.bind(this)), |
| 624 | 663 | await this.hyperconf.ready(), |
| … | … | @@ -627,11 +666,11 @@ module.exports = class extends s { |
| 627 | 666 | (this.abi.autoupgrade = this.config.versions.autoupgrade)) |
| 628 | 667 | const e = await this.local.get("@local/environment"), |
| 629 | 668 | t = !!e && e.latestOfflineAbi < this.abi.production |
| 630 | ;((this.contractBundles = new be(this, _e, { hydrate: t })), | |
| 669 | ;((this.contractBundles = new fe(this, Te, { hydrate: t })), | |
| 631 | 670 | await this.contractBundles.ready(), |
| 632 | 671 | t && (await this._bumpLocalAbiVersion()), |
| 633 | 672 | await this._openNetworking(), |
| 634 | (this.tasks = new O(this)), | |
| 673 | (this.tasks = new M(this)), | |
| 635 | 674 | await this.tasks.ready(), |
| 636 | 675 | this._gcEnabled && |
| 637 | 676 | (this._gcTimer = setInterval(this._closeIdleRooms.bind(this), this._gcInterval)), |
| … | … | @@ -655,7 +694,7 @@ module.exports = class extends s { |
| 655 | 694 | } |
| 656 | 695 | ;(this._migratedFrom > 0 && (await this._maybeRunPostMigrations(this._migratedFrom)), |
| 657 | 696 | this._registryOpts && |
| 658 | ((this.userRegistry = new de(this, this._registryOpts)), await this.userRegistry.ready()), | |
| 697 | ((this.userRegistry = new ue(this, this._registryOpts)), await this.userRegistry.ready()), | |
| 659 | 698 | this.onlineBoot.exit()) |
| 660 | 699 | } |
| 661 | 700 | } |
| … | … | @@ -671,7 +710,7 @@ module.exports = class extends s { |
| 671 | 710 | this._gcTimer && clearInterval(this._gcTimer), |
| 672 | 711 | this.backoff.destroy(), |
| 673 | 712 | this.internalTimeLog("keet-close", "destroyed backoff"), |
| 674 | this.state === we.SUSPEND && (await this.store.resume()), | |
| 713 | this.state === ve.SUSPEND && (await this.store.resume()), | |
| 675 | 714 | this.internalTimeLog("keet-close", "resumed from suspend"), |
| 676 | 715 | this.internalVerboseLog("Closing active calls"), |
| 677 | 716 | await this.backendAPI.closeActiveCalls(), |
| … | … | @@ -760,11 +799,11 @@ module.exports = class extends s { |
| 760 | 799 | const e = await this.internalEnterLocalTransaction() |
| 761 | 800 | try { |
| 762 | 801 | const t = (await e.get("@local/debug")) || {} |
| 763 | t.flags || (t.flags = z) | |
| 802 | t.flags || (t.flags = X) | |
| 764 | 803 | const i = new Set(), |
| 765 | 804 | s = {} |
| 766 | 805 | for (const e of t.flags) (i.add(e.key), (s[e.key] = e.value)) |
| 767 | for (const { key: e, value: s, description: r } of z) | |
| 806 | for (const { key: e, value: s, description: r } of X) | |
| 768 | 807 | i.has(e) || t.flags.push({ key: e, value: s, description: r }) |
| 769 | 808 | ;(await e.insert("@local/debug", t), await e.flush(), (this.debug = { ...s })) |
| 770 | 809 | } finally { |
| … | … | @@ -774,17 +813,17 @@ module.exports = class extends s { |
| 774 | 813 | isValidBuildType(e) { |
| 775 | 814 | if (!e) return !0 |
| 776 | 815 | if (this.isTesting && !this.forceBuildType) return !0 |
| 777 | const t = he.Production === this.buildType | |
| 816 | const t = ye.Production === this.buildType | |
| 778 | 817 | return !((!t && !e.settings.buildType) || (!t && e.settings.buildType !== this.buildType)) |
| 779 | 818 | } |
| 780 | 819 | async _ensureBuildType() { |
| 781 | 820 | if (this.isTesting && !this.forceBuildType) return |
| 782 | const e = he.Production === this.buildType, | |
| 821 | const e = ye.Production === this.buildType, | |
| 783 | 822 | t = await this.internalEnterLocalTransaction() |
| 784 | 823 | try { |
| 785 | 824 | const [i, s] = await Promise.all([t.get("@local/identity"), t.get("@local/environment")]) |
| 786 | if (!e && i && !s?.buildType) throw pe.INVALID_BUILD_TYPE() | |
| 787 | if (s && s.buildType !== this.buildType) throw pe.INVALID_BUILD_TYPE() | |
| 825 | if (!e && i && !s?.buildType) throw ge.INVALID_BUILD_TYPE() | |
| 826 | if (s && s.buildType !== this.buildType) throw ge.INVALID_BUILD_TYPE() | |
| 788 | 827 | if (s) return |
| 789 | 828 | ;(await t.insert("@local/environment", { buildType: this.buildType }), await t.flush()) |
| 790 | 829 | } catch (e) { |
| … | … | @@ -829,7 +868,7 @@ module.exports = class extends s { |
| 829 | 868 | ((this.config = this.hyperconf.current), |
| 830 | 869 | this.internalVerboseLog( |
| 831 | 870 | "OTA config updated, dkey:", |
| 832 | i.encode(this.hyperconf.core.discoveryKey), | |
| 871 | s.encode(this.hyperconf.core.discoveryKey), | |
| 833 | 872 | "length:", |
| 834 | 873 | this.hyperconf.core.length, |
| 835 | 874 | ), |
| … | … | @@ -837,10 +876,12 @@ module.exports = class extends s { |
| 837 | 876 | (this._relayKeys = this.config.services.blindRelays), |
| 838 | 877 | (this._gatekeeperKeys = this.config.services.gatekeepers), |
| 839 | 878 | (this._discoveryBootstrapKeys = this.config.services.discovery), |
| 840 | l.setRecoveryPeers && l.setRecoveryPeers(this.config.services.blindPeers), | |
| 841 | (this._disabledRooms = new Set(this.config.rooms.disabled.map((e) => i.encode(e)))), | |
| 842 | (this._verifiedRooms = new Set(this.config.rooms.verified?.map((e) => i.encode(e)))), | |
| 879 | c.setRecoveryPeers && c.setRecoveryPeers(this.config.services.blindPeers), | |
| 880 | (this._disabledRooms = new Set(this.config.rooms.disabled.map((e) => s.encode(e)))), | |
| 881 | (this._verifiedRooms = new Set(this.config.rooms.verified?.map((e) => s.encode(e)))), | |
| 843 | 882 | (this._disableUnreadSync = !0 === this.config.profile?.disableUnreadSync), |
| 883 | (this._otaResyncPrivateProfileBump = this.config.profile?.otaResyncPrivateProfileBump || 0), | |
| 884 | this._maybeOtaResyncPrivateProfile().catch(this.onerror), | |
| 844 | 885 | this._maybeUpgradeOpenRooms().catch(this.onerror), |
| 845 | 886 | this.config.services.userRegistries?.length && |
| 846 | 887 | (this._registryOpts = this.config.services.userRegistries[0]), |
| … | … | @@ -848,7 +889,7 @@ module.exports = class extends s { |
| 848 | 889 | this.config.versions.minVersion) |
| 849 | 890 | ) { |
| 850 | 891 | const { major: e, minor: t, patch: i } = this.config.versions.minVersion |
| 851 | this.configMinVersion = new me(e, t, i) | |
| 892 | this.configMinVersion = new be(e, t, i) | |
| 852 | 893 | } |
| 853 | 894 | ;(this.config.versions.autoupgrade > 0 && |
| 854 | 895 | (this.abi.autoupgrade = this.config.versions.autoupgrade), |
| … | … | @@ -863,7 +904,7 @@ module.exports = class extends s { |
| 863 | 904 | if (!(e < t)) return |
| 864 | 905 | const i = [], |
| 865 | 906 | s = async function (e, t) { |
| 866 | const [i, s] = await Promise.all([e.db.get("@keet/system-digest"), H(e.db, e.deviceKey)]) | |
| 907 | const [i, s] = await Promise.all([e.db.get("@keet/system-digest"), Y(e.db, e.deviceKey)]) | |
| 867 | 908 | !s?.status.isModerator || |
| 868 | 909 | i?.abi.version >= t || |
| 869 | 910 | (await this.internalDispatchUpgrade(e.id, t)) |
| … | … | @@ -871,8 +912,22 @@ module.exports = class extends s { |
| 871 | 912 | for (const [e, r] of this.rooms.entries()) i.push(s(r, t)) |
| 872 | 913 | return await Promise.all(i) |
| 873 | 914 | } |
| 915 | async _maybeOtaResyncPrivateProfile() { | |
| 916 | this.onlineBoot.opened || (await this.onlineBoot.ready()) | |
| 917 | const e = this._otaResyncPrivateProfileBump || 0, | |
| 918 | t = await this.internalEnterLocalTransaction() | |
| 919 | try { | |
| 920 | if (!(e > ((await t.get("@local/ota-actions"))?.otaResyncPrivateProfileBump || 0))) return | |
| 921 | if (null === (await this.internalResyncPrivateProfile())) return | |
| 922 | ;(await t.insert("@local/ota-actions", { otaResyncPrivateProfileBump: e }), await t.flush()) | |
| 923 | } catch (e) { | |
| 924 | this.onerror(e) | |
| 925 | } finally { | |
| 926 | await this.internalExitLocalTransaction() | |
| 927 | } | |
| 928 | } | |
| 874 | 929 | shouldForceUpdate() { |
| 875 | const e = this.config.versions.forceUpdate > x.FORCE_UPDATE, | |
| 930 | const e = this.config.versions.forceUpdate > D.FORCE_UPDATE, | |
| 876 | 931 | t = |
| 877 | 932 | this.configMinVersion && this.appVersion |
| 878 | 933 | ? this.configMinVersion.compare(this.appVersion) |
| … | … | @@ -894,8 +949,8 @@ module.exports = class extends s { |
| 894 | 949 | } |
| 895 | 950 | } |
| 896 | 951 | _handleCoreOpen(e) { |
| 897 | const t = new l({ core: e, weak: !0 }), | |
| 898 | i = new d({ debounce: !0 }) | |
| 952 | const t = new c({ core: e, weak: !0 }), | |
| 953 | i = new y({ debounce: !0 }) | |
| 899 | 954 | ;(t.on("verification-error", (e) => { |
| 900 | 955 | this.onerror(e, { coreKey: t.key, prefix: "CORE_VERIFICATION_ERROR" }) |
| 901 | 956 | }), |
| … | … | @@ -987,12 +1042,12 @@ module.exports = class extends s { |
| 987 | 1042 | } finally { |
| 988 | 1043 | await this.internalExitLocalTransaction() |
| 989 | 1044 | } |
| 990 | const s = await this.local.find("@local/room-migrations-by-priority").toArray(), | |
| 1045 | const i = await this.local.find("@local/room-migrations-by-priority").toArray(), | |
| 991 | 1046 | r = [], |
| 992 | 1047 | o = [], |
| 993 | 1048 | a = [] |
| 994 | for (const e of s) | |
| 995 | this._disabledRooms.has(i.encode(e.roomKey)) | |
| 1049 | for (const e of i) | |
| 1050 | this._disabledRooms.has(s.encode(e.roomKey)) | |
| 996 | 1051 | ? a.push(e) |
| 997 | 1052 | : e.v3?.privateProfile |
| 998 | 1053 | ? r.push(e) |
| … | … | @@ -1002,7 +1057,7 @@ module.exports = class extends s { |
| 1002 | 1057 | try { |
| 1003 | 1058 | for (const t of a) { |
| 1004 | 1059 | const i = await e.get("@local/room-migrations", { roomKey: t.roomKey }) |
| 1005 | ;(await e.delete("@local/room-migrations", t), await ge(e, null, i)) | |
| 1060 | ;(await e.delete("@local/room-migrations", t), await we(e, null, i)) | |
| 1006 | 1061 | } |
| 1007 | 1062 | await e.flush() |
| 1008 | 1063 | } finally { |
| … | … | @@ -1028,12 +1083,12 @@ module.exports = class extends s { |
| 1028 | 1083 | try { |
| 1029 | 1084 | e.timestamp = Date.now() |
| 1030 | 1085 | const i = await t.get("@local/room-migrations", e) |
| 1031 | ;(await t.insert("@local/room-migrations", e), await ge(t, e, i), await t.flush()) | |
| 1086 | ;(await t.insert("@local/room-migrations", e), await we(t, e, i), await t.flush()) | |
| 1032 | 1087 | } finally { |
| 1033 | 1088 | await this.internalExitLocalTransaction() |
| 1034 | 1089 | } |
| 1035 | 1090 | } |
| 1036 | const s = Date.now() - e.timestamp > Ie | |
| 1091 | const s = Date.now() - e.timestamp > Se | |
| 1037 | 1092 | let r = !1, |
| 1038 | 1093 | o = !1 |
| 1039 | 1094 | try { |
| … | … | @@ -1049,8 +1104,8 @@ module.exports = class extends s { |
| 1049 | 1104 | try { |
| 1050 | 1105 | const t = await a.get("@local/room-migrations", e) |
| 1051 | 1106 | ;(o |
| 1052 | ? (i || (e.errored = !r), await a.insert("@local/room-migrations", e), await ge(a, e, t)) | |
| 1053 | : (await a.delete("@local/room-migrations", e), await ge(a, null, t)), | |
| 1107 | ? (i || (e.errored = !r), await a.insert("@local/room-migrations", e), await we(a, e, t)) | |
| 1108 | : (await a.delete("@local/room-migrations", e), await we(a, null, t)), | |
| 1054 | 1109 | await a.flush()) |
| 1055 | 1110 | } finally { |
| 1056 | 1111 | await this.internalExitLocalTransaction() |
| … | … | @@ -1131,11 +1186,11 @@ module.exports = class extends s { |
| 1131 | 1186 | capabilities: { discoveryKeyPair: { publicKey: t } }, |
| 1132 | 1187 | }) |
| 1133 | 1188 | if (!e) continue |
| 1134 | const s = i.encode(e.discoveryKey) | |
| 1135 | if (this._discovering.has(s)) continue | |
| 1189 | const i = s.encode(e.discoveryKey) | |
| 1190 | if (this._discovering.has(i)) continue | |
| 1136 | 1191 | const r = this.internalOpenExistingRoom(e.roomKey) |
| 1137 | ;(this._discovering.set(s, { updated: !1, room: r, roomInfo: e }), | |
| 1138 | this._startDiscoverySwarming(e.capabilities.swarmTopic, s) || | |
| 1192 | ;(this._discovering.set(i, { updated: !1, room: r, roomInfo: e }), | |
| 1193 | this._startDiscoverySwarming(e.capabilities.swarmTopic, i) || | |
| 1139 | 1194 | this.internalReleaseRoom(r)) |
| 1140 | 1195 | } |
| 1141 | 1196 | await e.flush() |
| … | … | @@ -1170,22 +1225,22 @@ module.exports = class extends s { |
| 1170 | 1225 | this._refreshDiscoverySwarming() |
| 1171 | 1226 | } |
| 1172 | 1227 | async internalBlobsActiveInRoom(e) { |
| 1173 | const t = i.encode(e), | |
| 1174 | s = this.rooms.get(t) | |
| 1175 | if (!s) return | |
| 1228 | const t = s.encode(e), | |
| 1229 | i = this.rooms.get(t) | |
| 1230 | if (!i) return | |
| 1176 | 1231 | const r = await this.local.get("@local/rooms", { roomKey: e }) |
| 1177 | 1232 | if (!r) return |
| 1178 | 1233 | const { capabilities: o } = r |
| 1179 | 1234 | if (!o || !o.mailboxKeyPair) return |
| 1180 | 1235 | try { |
| 1181 | await s.ready() | |
| 1236 | await i.ready() | |
| 1182 | 1237 | } catch { |
| 1183 | 1238 | return |
| 1184 | 1239 | } |
| 1185 | if (!s.externalBlobs) return | |
| 1240 | if (!i.externalBlobs) return | |
| 1186 | 1241 | const a = await this._getMirrorKeys(e, r) |
| 1187 | s.closing || | |
| 1188 | this.blindPeering.addCoreBackground(s.externalBlobs.core, { | |
| 1242 | i.closing || | |
| 1243 | this.blindPeering.addCoreBackground(i.externalBlobs.core, { | |
| 1189 | 1244 | target: o.mailboxKeyPair.publicKey, |
| 1190 | 1245 | keys: a, |
| 1191 | 1246 | pick: 1, |
| … | … | @@ -1216,12 +1271,12 @@ module.exports = class extends s { |
| 1216 | 1271 | } |
| 1217 | 1272 | _handleConnection(e) { |
| 1218 | 1273 | if (this.closing) return void e.on("error", () => {}) |
| 1219 | const t = i.encode(e.publicKey), | |
| 1220 | s = i.encode(e.remotePublicKey), | |
| 1274 | const t = s.encode(e.publicKey), | |
| 1275 | i = s.encode(e.remotePublicKey), | |
| 1221 | 1276 | r = Date.now() |
| 1222 | 1277 | let o = 0 |
| 1223 | 1278 | this.internalVerboseLog( |
| 1224 | `got ${e.isInitiator ? "client" : "server"} connection from ${t} to ${s}`, | |
| 1279 | `got ${e.isInitiator ? "client" : "server"} connection from ${t} to ${i}`, | |
| 1225 | 1280 | ) |
| 1226 | 1281 | let a = null |
| 1227 | 1282 | ;(e.once("error", (e) => { |
| … | … | @@ -1229,7 +1284,7 @@ module.exports = class extends s { |
| 1229 | 1284 | }), |
| 1230 | 1285 | e.once("close", () => { |
| 1231 | 1286 | this.internalVerboseLog( |
| 1232 | `connection closed to ${s}, with err: ${a} (${Date.now() - r} ms ${o} bytes recv)`, | |
| 1287 | `connection closed to ${i}, with err: ${a} (${Date.now() - r} ms ${o} bytes recv)`, | |
| 1233 | 1288 | ) |
| 1234 | 1289 | }), |
| 1235 | 1290 | e.on("data", (e) => { |
| … | … | @@ -1240,7 +1295,7 @@ module.exports = class extends s { |
| 1240 | 1295 | } |
| 1241 | 1296 | async _createInitialIdentity() { |
| 1242 | 1297 | const t = e.generateMnemonic(), |
| 1243 | i = this.tasks.restoreIdentity(Ee, { mnemonic: t, recover: !1 }) | |
| 1298 | i = this.tasks.restoreIdentity(Be, { mnemonic: t, recover: !1 }) | |
| 1244 | 1299 | await i.run() |
| 1245 | 1300 | } |
| 1246 | 1301 | async _loadIdentity() { |
| … | … | @@ -1253,9 +1308,48 @@ module.exports = class extends s { |
| 1253 | 1308 | return |
| 1254 | 1309 | const t = await this.local.get("@local/rooms", { roomKey: e.privateProfileKey }) |
| 1255 | 1310 | ;((this.privateProfile = await this.internalOpenPrivateProfile({ opening: !0 })), |
| 1311 | this._shortenDeviceAttestations().catch(this.onerror), | |
| 1256 | 1312 | this.swarmWorker.startActiveSwarming(t.capabilities.swarmTopic), |
| 1257 | 1313 | await this.internalRefreshUnreads()) |
| 1258 | 1314 | } |
| 1315 | async internalResyncPrivateProfile() { | |
| 1316 | if (!this.privateProfile) return null | |
| 1317 | const e = [] | |
| 1318 | for await (const t of this.privateProfile.db.find("@keet-private-id/rooms")) | |
| 1319 | (await this.local.get("@local/rooms", { roomKey: t.roomKey })) || e.push(t) | |
| 1320 | for (const t of e) this.tasks.joinRoomKeys(t.roomKey, { keys: t }).runBackground() | |
| 1321 | } | |
| 1322 | async _shortenDeviceAttestations() { | |
| 1323 | const e = await this.local.get("@local/identity") | |
| 1324 | if (!e) return | |
| 1325 | const i = s.encode(e.privateProfileKey) | |
| 1326 | if (!(await this.internalFeatureSupported(i, I.SHORTEN_ATTESTATION))) return | |
| 1327 | const r = this.privateProfile.base.local.key, | |
| 1328 | o = f.decode(t, e.deviceProof).chain.length | |
| 1329 | for await (const i of this.privateProfile.db.find("@keet-private-id/device-identities")) { | |
| 1330 | const s = k.equals(i.deviceKey, r), | |
| 1331 | a = f.decode(t, i.deviceProof), | |
| 1332 | n = a.chain.length, | |
| 1333 | l = a.chain[n - 1].publicKey | |
| 1334 | if (!s && o + 1 < n) { | |
| 1335 | const t = He(e, i.deviceKey, l) | |
| 1336 | await this.privateProfile.dispatch("@keet-private-id/shorten-device-attestation", { | |
| 1337 | deviceKey: i.deviceKey, | |
| 1338 | deviceProof: t.deviceProof, | |
| 1339 | writerProof: t.privateProfileIdentity.proof, | |
| 1340 | }) | |
| 1341 | } | |
| 1342 | if (s && f.decode(t, i.deviceProof).chain.length < o) { | |
| 1343 | const t = await this.internalEnterLocalTransaction() | |
| 1344 | try { | |
| 1345 | const s = { ...e, deviceProof: i.deviceProof, proofShortenedAt: Date.now() } | |
| 1346 | ;(await t.insert("@local/identity", s), await t.flush()) | |
| 1347 | } finally { | |
| 1348 | await this.internalExitLocalTransaction() | |
| 1349 | } | |
| 1350 | } | |
| 1351 | } | |
| 1352 | } | |
| 1259 | 1353 | async internalDispatchUpgrade(e, t) { |
| 1260 | 1354 | if (!e || !t) return |
| 1261 | 1355 | const i = this.internalOpenExistingRoom(e) |
| … | … | @@ -1311,7 +1405,7 @@ module.exports = class extends s { |
| 1311 | 1405 | if (i?.profile.avatar) { |
| 1312 | 1406 | const t = this.internalOpenExistingRoom(e) |
| 1313 | 1407 | try { |
| 1314 | await J(t.blobs, i.profile.avatar) | |
| 1408 | await z(t.blobs, i.profile.avatar) | |
| 1315 | 1409 | } finally { |
| 1316 | 1410 | this.internalReleaseRoom(t) |
| 1317 | 1411 | } |
| … | … | @@ -1329,18 +1423,18 @@ module.exports = class extends s { |
| 1329 | 1423 | let i = null |
| 1330 | 1424 | t.internal || (i = (e, i) => this._cacheRoomReads(t.key, e, i)) |
| 1331 | 1425 | const s = { autoUpdate: !0, extension: !1, trace: i }, |
| 1332 | r = B.autobaseOpen(e, t), | |
| 1333 | o = Q.bee(e, { hyperdb: s }) | |
| 1426 | r = x.autobaseOpen(e, t), | |
| 1427 | o = ee.bee(e, { hyperdb: s }) | |
| 1334 | 1428 | return { ...o, core: o.cores.db, legacy: r, roomKey: t.key } |
| 1335 | 1429 | } |
| 1336 | 1430 | _autobaseClose(e) { |
| 1337 | 1431 | return Promise.all([e.db.close(), e.blobs.close(), e.legacy.close()]) |
| 1338 | 1432 | } |
| 1339 | 1433 | async _autobaseUpdate(e, t) { |
| 1340 | const s = new M(this, e, t.base, t) | |
| 1341 | await s.run() | |
| 1342 | const r = i.encode(t.base.discoveryKey) | |
| 1343 | s.runPostUpdate() | |
| 1434 | const i = new U(this, e, t.base, t) | |
| 1435 | await i.run() | |
| 1436 | const r = s.encode(t.base.discoveryKey) | |
| 1437 | i.runPostUpdate() | |
| 1344 | 1438 | const o = this._discovering.get(r) |
| 1345 | 1439 | o && ((o.updated = !0), this.swarmWorker.notifyDiscoveryUpdate(r)) |
| 1346 | 1440 | } |
| … | … | @@ -1350,7 +1444,7 @@ module.exports = class extends s { |
| 1350 | 1444 | let h = !1, |
| 1351 | 1445 | d = 0 |
| 1352 | 1446 | if (!(a.length > 0)) { |
| 1353 | if (((d = await V.autobaseApply(e, n, i)), d === e.length)) return !0 | |
| 1447 | if (((d = await N.autobaseApply(e, n, i)), d === e.length)) return !0 | |
| 1354 | 1448 | h = n.core.length > 0 |
| 1355 | 1449 | } |
| 1356 | 1450 | const y = o.transaction(), |
| … | … | @@ -1362,12 +1456,15 @@ module.exports = class extends s { |
| 1362 | 1456 | if (h) { |
| 1363 | 1457 | const t = e[d] |
| 1364 | 1458 | if (s || t?.optimistic) return !0 |
| 1365 | ;(i.preferFastForward(), await V.migrate(this.store, i.base, n, y, u, this.contractBundles)) | |
| 1459 | ;(i.preferFastForward(), await N.migrate(this.store, i.base, n, y, u, this.contractBundles)) | |
| 1366 | 1460 | } |
| 1367 | 1461 | const r = await y.get("@keet/system-digest") |
| 1368 | if (r && r.abi.version > this.abi.production) { | |
| 1369 | if (s) return !1 | |
| 1370 | i.interrupt({ unsupportedABI: r.abi.version, digest: r, nodes: e }) | |
| 1462 | if (r) { | |
| 1463 | const t = this.isNightly ? this.abi.max : this.abi.production | |
| 1464 | if (r.abi.version > t) { | |
| 1465 | if (s) return !1 | |
| 1466 | i.interrupt({ unsupportedABI: r.abi.version, digest: r, nodes: e }) | |
| 1467 | } | |
| 1371 | 1468 | } |
| 1372 | 1469 | g = r ? r.abi.version : this.abi.autoupgrade |
| 1373 | 1470 | let o = await this.contractBundles.loadBundle(g), |
| … | … | @@ -1375,27 +1472,28 @@ module.exports = class extends s { |
| 1375 | 1472 | y.setDefinition(o.spec.contract.hyperdb) |
| 1376 | 1473 | for (let r = d; r < e.length; r++) { |
| 1377 | 1474 | const n = e[r] |
| 1378 | if (!(w.decode(w.uint, n.value) < 2)) | |
| 1475 | if (!(f.decode(f.uint, n.value) < 2)) | |
| 1379 | 1476 | try { |
| 1380 | const e = te(n.value), | |
| 1381 | r = $e(y, u, n, i, t, a, { dryRun: s, trace: c, abi: this.abi }) | |
| 1382 | ;(await a.dispatch(e, r), | |
| 1383 | e && | |
| 1384 | "@keet/upgrade" === e.name && | |
| 1385 | ((g = e.value.version), | |
| 1477 | const r = se(n.value) | |
| 1478 | this._maybeLogAutobaseApply(r, s, e.length, g, l) | |
| 1479 | const h = Ge(y, u, n, i, t, a, { dryRun: s, trace: c, abi: this.abi }) | |
| 1480 | ;(await a.dispatch(r, h), | |
| 1481 | r && | |
| 1482 | "@keet/upgrade" === r.name && | |
| 1483 | ((g = r.value.version), | |
| 1386 | 1484 | (o = await this.contractBundles.loadBundle(g)), |
| 1387 | 1485 | (a = await this.contractBundles.loadRouter(g)), |
| 1388 | 1486 | y.setDefinition(o.spec.contract.hyperdb))) |
| 1389 | 1487 | } catch (e) { |
| 1390 | if (Z.isContractError(e)) throw e | |
| 1391 | if (ie.isDispatchError(e)) throw Z.DISPATCH_ERROR(e.message) | |
| 1488 | if (te.isContractError(e)) throw e | |
| 1489 | if (re.isDispatchError(e)) throw te.DISPATCH_ERROR(e.message) | |
| 1392 | 1490 | throw e |
| 1393 | 1491 | } |
| 1394 | 1492 | } |
| 1395 | 1493 | } catch (t) { |
| 1396 | 1494 | "BUNDLE_NOT_AVAILABLE" === t.code |
| 1397 | 1495 | ? i.interrupt({ unsupportedABI: t.abi, digest: null, nodes: e }) |
| 1398 | : Z.isContractError(t) | |
| 1496 | : te.isContractError(t) | |
| 1399 | 1497 | ? ((m = !0), (t.abi = g), (t.roomKey = l), (s && !this.isTesting) || this.onerror(t)) |
| 1400 | 1498 | : (p = t) |
| 1401 | 1499 | } |
| … | … | @@ -1409,6 +1507,26 @@ module.exports = class extends s { |
| 1409 | 1507 | throw p |
| 1410 | 1508 | return b |
| 1411 | 1509 | } |
| 1510 | _maybeLogAutobaseApply(e, t, i, r, o) { | |
| 1511 | try { | |
| 1512 | const a = s.encode(o), | |
| 1513 | n = this.rooms.get(a), | |
| 1514 | l = n ? n.getQuickStats() : null | |
| 1515 | this.logger.verboseDebug("[autobaseApply]", { | |
| 1516 | "op.name": e.name, | |
| 1517 | "op.id": e.id, | |
| 1518 | dryRun: t, | |
| 1519 | "nodes.length": i, | |
| 1520 | abi: r, | |
| 1521 | roomId: a, | |
| 1522 | "roomStats.view": l?.view, | |
| 1523 | "roomStats.system": l?.system, | |
| 1524 | "roomStats.base": l?.base, | |
| 1525 | }) | |
| 1526 | } catch (e) { | |
| 1527 | console.error("Failed to log autobase apply", e) | |
| 1528 | } | |
| 1529 | } | |
| 1412 | 1530 | _autobaseTrace({ type: e, value: t }) { |
| 1413 | 1531 | if ("@keet/add-device" !== e) return |
| 1414 | 1532 | const { request: i, response: s, invitation: r } = t, |
| … | … | @@ -1422,17 +1540,21 @@ module.exports = class extends s { |
| 1422 | 1540 | this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| 1423 | 1541 | const s = await this.local.get("@local/identity"), |
| 1424 | 1542 | r = await this.local.get("@local/rooms", { roomKey: s.privateProfileKey }) |
| 1425 | v.equals(e, r.capabilities.mailboxKeyPair.publicKey) || | |
| 1543 | k.equals(e, r.capabilities.mailboxKeyPair.publicKey) || | |
| 1426 | 1544 | this.tasks |
| 1427 | 1545 | .joinRoomResponse(t.publicKey, { mailbox: e, keyPair: t, response: i }) |
| 1428 | 1546 | .runBackground() |
| 1429 | 1547 | } |
| 1430 | 1548 | async _backgroundDrain(e) { |
| 1431 | 1549 | let t = await e.next() |
| 1432 | for (; !t.done && !this.closing; ) { | |
| 1433 | const i = await t.value | |
| 1434 | if (this.closing) return | |
| 1435 | t = await e.next(i) | |
| 1550 | try { | |
| 1551 | for (; !t.done && !this.closing; ) { | |
| 1552 | const i = await t.value | |
| 1553 | if (this.closing) return | |
| 1554 | t = await e.next(i) | |
| 1555 | } | |
| 1556 | } finally { | |
| 1557 | !t.done && e.return && (await e.return()) | |
| 1436 | 1558 | } |
| 1437 | 1559 | } |
| 1438 | 1560 | async _safeLoadLegacyUnreads() { |
| … | … | @@ -1468,26 +1590,26 @@ module.exports = class extends s { |
| 1468 | 1590 | e && |
| 1469 | 1591 | (yield this.privateProfile.internalEnsureUpgraded({ opening: !0 }), |
| 1470 | 1592 | (e = yield this.privateProfile.db.get("@keet/system-digest")), |
| 1471 | x.isFeatureSupported(e.abi.version, x.FEATURES.UNREADS) && (yield this._unreadsLock.lock())) | |
| 1593 | D.isFeatureSupported(e.abi.version, D.FEATURES.UNREADS) && (yield this._unreadsLock.lock())) | |
| 1472 | 1594 | ) |
| 1473 | 1595 | try { |
| 1474 | 1596 | const t = [] |
| 1475 | 1597 | let i = !0 |
| 1476 | const s = x.isFeatureSupported(e.abi.version, x.FEATURES.V2_UNREADS) | |
| 1598 | const s = D.isFeatureSupported(e.abi.version, D.FEATURES.V2_UNREADS) | |
| 1477 | 1599 | ? "@keet-private-id/unreads-v2" |
| 1478 | 1600 | : "@keet-private-id/unreads", |
| 1479 | 1601 | r = yield this.privateProfile.db.find(s).toArray() |
| 1480 | 1602 | for (const { deviceKey: e, key: s } of r) |
| 1481 | (v.equals(e, this.privateProfile.base.local.key) && (i = !1), t.push(s)) | |
| 1482 | if (this.unreads && ze(t, this.unreads.keys)) return | |
| 1603 | (k.equals(e, this.privateProfile.base.local.key) && (i = !1), t.push(s)) | |
| 1604 | if (this.unreads && Xe(t, this.unreads.keys)) return | |
| 1483 | 1605 | this.unreads && (yield this.unreads.close(), (this.unreads = null)) |
| 1484 | 1606 | const o = this.privateProfile, |
| 1485 | 1607 | a = o.base.encryptionKey, |
| 1486 | 1608 | n = this.store.namespace(o.key), |
| 1487 | l = n.namespace(Pe) | |
| 1609 | l = n.namespace(_e) | |
| 1488 | 1610 | yield n.close() |
| 1489 | 1611 | const c = yield o.base.wakeupCapability && o.base.wakeupCapability.key |
| 1490 | ;((this.unreads = new L(l, t, { | |
| 1612 | ;((this.unreads = new E(l, t, { | |
| 1491 | 1613 | blindPeering: this.blindPeering, |
| 1492 | 1614 | encryptionKey: a, |
| 1493 | 1615 | target: c, |
| … | … | @@ -1527,7 +1649,7 @@ module.exports = class extends s { |
| 1527 | 1649 | this.discoveryCore && (await this.discoveryCore.close()), |
| 1528 | 1650 | (this.discoveryCore = this.store.get({ |
| 1529 | 1651 | keyPair: e.profileDiscoveryKeyPair, |
| 1530 | valueEncoding: ce, | |
| 1652 | valueEncoding: de, | |
| 1531 | 1653 | encryptionKey: t, |
| 1532 | 1654 | manifest: i, |
| 1533 | 1655 | })), |
| … | … | @@ -1554,7 +1676,7 @@ module.exports = class extends s { |
| 1554 | 1676 | let s = !1 |
| 1555 | 1677 | if (t) |
| 1556 | 1678 | for (const r of t.base.heads()) |
| 1557 | e && v.equals(r.key, e.key) | |
| 1679 | e && k.equals(r.key, e.key) | |
| 1558 | 1680 | ? ((s = !0), i.push({ key: r.key, length: Math.max(r.length, e.length) })) |
| 1559 | 1681 | : i.push(r) |
| 1560 | 1682 | return (e && !s && i.push(e), i) |
| … | … | @@ -1578,7 +1700,7 @@ module.exports = class extends s { |
| 1578 | 1700 | e.refs -= 1 |
| 1579 | 1701 | } |
| 1580 | 1702 | internalOpenExistingRoom(e, t = {}) { |
| 1581 | return this.internalOpenRoom(i.decode(e), null, t) | |
| 1703 | return this.internalOpenRoom(s.decode(e), null, t) | |
| 1582 | 1704 | } |
| 1583 | 1705 | async internalOpenPrivateProfile({ opening: e = !1 } = {}) { |
| 1584 | 1706 | e || this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| … | … | @@ -1586,7 +1708,7 @@ module.exports = class extends s { |
| 1586 | 1708 | i = this.internalOpenExistingRoom(t.privateProfileKey, { bigBatches: !0 }) |
| 1587 | 1709 | return ( |
| 1588 | 1710 | await i.ready(), |
| 1589 | (this.privateProfile && v.equals(i.key, this.privateProfile.key)) || | |
| 1711 | (this.privateProfile && k.equals(i.key, this.privateProfile.key)) || | |
| 1590 | 1712 | (this.privateProfile && this.internalReleaseRoom(this.privateProfile), |
| 1591 | 1713 | (this.privateProfile = this.internalOpenExistingRoom(t.privateProfileKey, { |
| 1592 | 1714 | bigBatches: !0, |
| … | … | @@ -1605,25 +1727,25 @@ module.exports = class extends s { |
| 1605 | 1727 | } |
| 1606 | 1728 | } |
| 1607 | 1729 | async internalFeatureSupported(e, t) { |
| 1608 | const s = i.decode(e), | |
| 1609 | r = await this.local.get("@local/rooms", { roomKey: s }) | |
| 1730 | const i = s.decode(e), | |
| 1731 | r = await this.local.get("@local/rooms", { roomKey: i }) | |
| 1610 | 1732 | return !!r && this.versions.isFeatureSupported(r.digest.abi.version, t) |
| 1611 | 1733 | } |
| 1612 | internalOpenRoom(e, t, { fastForwardTo: s, mailbox: r, keyPair: o, bigBatches: a } = {}) { | |
| 1734 | internalOpenRoom(e, t, { fastForwardTo: i, mailbox: r, keyPair: o, bigBatches: a } = {}) { | |
| 1613 | 1735 | if (this.closing) throw new Error("Keet is closing") |
| 1614 | const n = i.encode(e), | |
| 1736 | const n = s.encode(e), | |
| 1615 | 1737 | l = this.rooms.get(n) |
| 1616 | 1738 | if (l) return ((l.idleTicks = 0), (l.refs += 1), l) |
| 1617 | const c = b.discoveryKey(e), | |
| 1618 | d = this.store.namespace(c) | |
| 1739 | const c = w.discoveryKey(e), | |
| 1740 | h = this.store.namespace(c) | |
| 1619 | 1741 | let y = null, |
| 1620 | 1742 | u = null, |
| 1621 | 1743 | p = null |
| 1622 | 1744 | ;(r || ((u = this.internalGetMailbox(e)), u.catch(this.onerror)), |
| 1623 | 1745 | o || ((y = this.internalGetKeyPair(e)), y.catch(this.onerror)), |
| 1624 | 1746 | t || ((p = this.internalGetEncryptionKey(e)), p.catch(this.onerror)), |
| 1625 | r && (r = { key: r, discoveryKey: b.discoveryKey(r) })) | |
| 1626 | const m = new h(d, e, { | |
| 1747 | r && (r = { key: r, discoveryKey: w.discoveryKey(r) })) | |
| 1748 | const m = new d(h, e, { | |
| 1627 | 1749 | backoff: this.backoff, |
| 1628 | 1750 | update: this._autobaseUpdate.bind(this), |
| 1629 | 1751 | apply: this._autobaseApply.bind(this), |
| … | … | @@ -1632,7 +1754,7 @@ module.exports = class extends s { |
| 1632 | 1754 | encryptionKey: t || p, |
| 1633 | 1755 | wakeupCapability: r || u, |
| 1634 | 1756 | keyPair: o || y, |
| 1635 | fastForward: !this.debug.disableFastForward && s, | |
| 1757 | fastForward: !this.debug.disableFastForward && i, | |
| 1636 | 1758 | ackThreshold: this.ackThreshold, |
| 1637 | 1759 | ackInterval: this.ackInterval, |
| 1638 | 1760 | wakeup: this.protomuxWakeup, |
| … | … | @@ -1651,7 +1773,7 @@ module.exports = class extends s { |
| 1651 | 1773 | ;(this.logger.warn("[autobase error] room=", m.id, "error=", t), |
| 1652 | 1774 | this.onerror(t, { roomKey: e, prefix: "AUTOBASE_ERROR" })) |
| 1653 | 1775 | })) |
| 1654 | const g = new Fe(this, n, e, c, m) | |
| 1776 | const g = new je(this, n, e, c, m) | |
| 1655 | 1777 | return (this.rooms.set(n, g), (g.refs += 1), g) |
| 1656 | 1778 | } |
| 1657 | 1779 | async updateDevice({ name: e } = {}) { |
| … | … | @@ -1697,12 +1819,12 @@ module.exports = class extends s { |
| 1697 | 1819 | : await i.close()) |
| 1698 | 1820 | } |
| 1699 | 1821 | async internalCreateRoom(e = {}) { |
| 1700 | const t = e.seed || b.randomBytes(32), | |
| 1701 | i = e.keyPair || b.keyPair(), | |
| 1702 | s = e.encryptionKey || b.randomBytes(32), | |
| 1703 | r = N(i.publicKey), | |
| 1704 | o = b.discoveryKey(r), | |
| 1705 | a = $(r, t), | |
| 1822 | const t = e.seed || w.randomBytes(32), | |
| 1823 | i = e.keyPair || w.keyPair(), | |
| 1824 | s = e.encryptionKey || w.randomBytes(32), | |
| 1825 | r = W(i.publicKey), | |
| 1826 | o = w.discoveryKey(r), | |
| 1827 | a = G(r, t), | |
| 1706 | 1828 | n = a.mailboxKeyPair.publicKey, |
| 1707 | 1829 | l = await this.internalEnterLocalTransaction() |
| 1708 | 1830 | try { |
| … | … | @@ -1741,7 +1863,7 @@ module.exports = class extends s { |
| 1741 | 1863 | await h.run(), |
| 1742 | 1864 | this.discovery && |
| 1743 | 1865 | this.discovery.subscribe(a.discoveryKeyPair.publicKey, { since: Date.now() }), |
| 1744 | this.swarmWorker.refresh().catch(Je), | |
| 1866 | this.swarmWorker.refresh().catch(ze), | |
| 1745 | 1867 | this.internalOpenExistingRoom(r) |
| 1746 | 1868 | ) |
| 1747 | 1869 | } |
| … | … | @@ -1764,7 +1886,7 @@ module.exports = class extends s { |
| 1764 | 1886 | } |
| 1765 | 1887 | await this.privateProfile.dispatch("@keet-private-id/update-room-status", { |
| 1766 | 1888 | roomKey: e, |
| 1767 | key: Y.IsActive, | |
| 1889 | key: Q.IsActive, | |
| 1768 | 1890 | status: { isActive: !1 }, |
| 1769 | 1891 | }) |
| 1770 | 1892 | } |
| … | … | @@ -1810,23 +1932,23 @@ module.exports = class extends s { |
| 1810 | 1932 | : this.internalCreateMemberUpdate(e) |
| 1811 | 1933 | : null |
| 1812 | 1934 | } |
| 1813 | internalCreateDeviceUpdate(t, i, { isPrivateProfile: s = !1, buildType: r = null } = {}) { | |
| 1814 | const o = t.identity | |
| 1815 | let a = null | |
| 1816 | t.privateProfile?.selfDevice && s && (a = t.privateProfile.selfDevice.profile.name) | |
| 1817 | const n = t.privateProfile?.digest.settings.buildType, | |
| 1818 | l = he.Production === n | |
| 1935 | internalAttestData(t, i) { | |
| 1936 | return e.attestData(t, i.deviceKeyPair, i.deviceProof) | |
| 1937 | } | |
| 1938 | internalCreateDeviceUpdate(e, t, { isPrivateProfile: i = !1, buildType: s = null } = {}) { | |
| 1939 | const r = e.identity | |
| 1940 | let o = null | |
| 1941 | e.privateProfile?.selfDevice && i && (o = e.privateProfile.selfDevice.profile.name) | |
| 1942 | const a = e.privateProfile?.digest.settings.buildType, | |
| 1943 | n = ye.Production === a | |
| 1819 | 1944 | return { |
| 1820 | 1945 | profile: { |
| 1821 | 1946 | swarmKey: this.swarm.keyPair.publicKey, |
| 1822 | name: a, | |
| 1947 | name: o, | |
| 1823 | 1948 | isMobile: this.isMobile, |
| 1824 | buildType: l && null === r ? null : n, | |
| 1825 | }, | |
| 1826 | attestation: { | |
| 1827 | memberKey: o.publicKey, | |
| 1828 | proof: e.attestData(i, o.deviceKeyPair, o.deviceProof), | |
| 1949 | buildType: n && null === s ? null : a, | |
| 1829 | 1950 | }, |
| 1951 | attestation: { memberKey: r.publicKey, proof: this.internalAttestData(t, r) }, | |
| 1830 | 1952 | } |
| 1831 | 1953 | } |
| 1832 | 1954 | internalCreateMemberUpdate(t, { profile: i } = {}) { |
| … | … | @@ -1834,7 +1956,7 @@ module.exports = class extends s { |
| 1834 | 1956 | r = t.privateProfile?.capabilities.mailboxKeyPair.publicKey || i.mailbox, |
| 1835 | 1957 | o = t.identity, |
| 1836 | 1958 | a = { ...s, ...i, mailbox: r, timestamp: Date.now() }, |
| 1837 | n = oe("@keet/member-profile", a) | |
| 1959 | n = ne("@keet/member-profile", a) | |
| 1838 | 1960 | return { |
| 1839 | 1961 | profile: a, |
| 1840 | 1962 | attestation: { |
| … | … | @@ -1854,26 +1976,26 @@ module.exports = class extends s { |
| 1854 | 1976 | } |
| 1855 | 1977 | internalDecodeInvitation(e) { |
| 1856 | 1978 | try { |
| 1857 | const t = "string" == typeof e ? f.decode(e) : e | |
| 1858 | return ae("@keet/sendable-invitation", t) | |
| 1979 | const t = "string" == typeof e ? v.decode(e) : e | |
| 1980 | return le("@keet/sendable-invitation", t) | |
| 1859 | 1981 | } catch { |
| 1860 | throw pe.INVALID_INVITE(`Invalid invite: ${e}`) | |
| 1982 | throw ge.INVALID_INVITE(`Invalid invite: ${e}`) | |
| 1861 | 1983 | } |
| 1862 | 1984 | } |
| 1863 | 1985 | internalDecodeContactInfo(e) { |
| 1864 | 1986 | try { |
| 1865 | const t = v.isBuffer(e) ? e : v.from(e, "base64") | |
| 1866 | return ae("@keet/member-contact-info", t) | |
| 1987 | const t = k.isBuffer(e) ? e : k.from(e, "base64") | |
| 1988 | return le("@keet/member-contact-info", t) | |
| 1867 | 1989 | } catch { |
| 1868 | throw pe.INVALID_CONTACT_INFO(`Invalid contact info: ${e}`) | |
| 1990 | throw ge.INVALID_CONTACT_INFO(`Invalid contact info: ${e}`) | |
| 1869 | 1991 | } |
| 1870 | 1992 | } |
| 1871 | 1993 | internalEncodeContactInfo(e) { |
| 1872 | return oe("@keet/member-contact-info", e) | |
| 1994 | return ne("@keet/member-contact-info", e) | |
| 1873 | 1995 | } |
| 1874 | 1996 | internalCreateContactInfoStruct(t, i, s = {}) { |
| 1875 | 1997 | const r = { ...i.selfMember.profile, ...s }, |
| 1876 | o = oe("@keet/member-profile", r), | |
| 1998 | o = ne("@keet/member-profile", r), | |
| 1877 | 1999 | a = { |
| 1878 | 2000 | profile: r, |
| 1879 | 2001 | attestation: { |
| … | … | @@ -1884,45 +2006,57 @@ module.exports = class extends s { |
| 1884 | 2006 | return this.internalEncodeContactInfo(a) |
| 1885 | 2007 | } |
| 1886 | 2008 | async wakeup() { |
| 1887 | ;((this.state = we.WAKEUP), this.opened || (await this.ready())) | |
| 2009 | ;((this.state = ve.WAKEUP), | |
| 2010 | this.internalVerboseLog("[Keet Core]", "await .ready"), | |
| 2011 | this.opened || (await this.ready())) | |
| 1888 | 2012 | const e = [this.resume(), this.swarmWorker.background()] |
| 1889 | await Promise.allSettled(e) | |
| 2013 | ;(this.internalVerboseLog("[Keet Core]", "await all promise"), | |
| 2014 | await Promise.allSettled(e), | |
| 2015 | this.internalVerboseLog("[Keet Core]", "promise settled")) | |
| 1890 | 2016 | } |
| 1891 | 2017 | async presuspend() { |
| 1892 | ;((this.state = we.PRESUSPEND), | |
| 2018 | ;((this.state = ve.PRESUSPEND), | |
| 1893 | 2019 | this.opened || (await this.ready()), |
| 1894 | 2020 | this.swarmWorker.setServerMode(!1)) |
| 1895 | 2021 | } |
| 1896 | 2022 | async suspend() { |
| 1897 | if ((this.internalVerboseLog("Core, suspend called"), this.state === we.SUSPEND)) return | |
| 1898 | ;((this.state = we.SUSPEND), | |
| 2023 | if ((this.internalVerboseLog("[Keet Core]", "suspend called"), this.state === ve.SUSPEND)) | |
| 2024 | return | |
| 2025 | ;((this.state = ve.SUSPEND), | |
| 1899 | 2026 | this.opened || (await this.ready()), |
| 1900 | this.internalVerboseLog("Core, suspend post ready")) | |
| 2027 | this.internalVerboseLog("[Keet Core]", "suspend post ready")) | |
| 1901 | 2028 | const e = [this._flushDHTCache()] |
| 1902 | 2029 | ;(this.blindPeering && |
| 1903 | (this.internalVerboseLog("Core, suspend adding blind peering"), | |
| 2030 | (this.internalVerboseLog("[Keet Core]", "suspend adding blind peering"), | |
| 1904 | 2031 | e.push(this.blindPeering.suspend())), |
| 1905 | this.push && (this.internalVerboseLog("Core, suspend push"), e.push(this.push.suspend())), | |
| 2032 | this.push && | |
| 2033 | (this.internalVerboseLog("[Keet Core]", "suspend push"), e.push(this.push.suspend())), | |
| 1906 | 2034 | this.discovery && |
| 1907 | (this.internalVerboseLog("Core, suspend discovery"), e.push(this.discovery.suspend())), | |
| 2035 | (this.internalVerboseLog("[Keet Core]", "suspend discovery"), | |
| 2036 | e.push(this.discovery.suspend())), | |
| 1908 | 2037 | await Promise.allSettled(e), |
| 1909 | this.internalVerboseLog("Core, all done"), | |
| 2038 | this.internalVerboseLog("[Keet Core]", "all done"), | |
| 1910 | 2039 | await this.rpcClient.suspend(), |
| 1911 | this.internalVerboseLog("Core, rpc suspended"), | |
| 2040 | this.internalVerboseLog("[Keet Core]", "rpc suspended"), | |
| 1912 | 2041 | await this.swarm.suspend(), |
| 1913 | this.internalVerboseLog("Core, swarm suspend"), | |
| 2042 | this.internalVerboseLog("[Keet Core]", "swarm suspend"), | |
| 1914 | 2043 | await this.files.server.suspend(), |
| 1915 | this.internalVerboseLog("Core, files suspend"), | |
| 2044 | this.internalVerboseLog("[Keet Core]", "files suspend"), | |
| 1916 | 2045 | await this.store.suspend(), |
| 1917 | this.internalVerboseLog("Core, store suspended, all done")) | |
| 2046 | this.internalVerboseLog("[Keet Core]", "store suspended, all done")) | |
| 1918 | 2047 | } |
| 1919 | 2048 | async resume() { |
| 1920 | if (this.state === we.RESUME) return | |
| 1921 | ;((this.state = we.RESUME), | |
| 2049 | if ((this.internalVerboseLog("[Keet Core]", "resume called"), this.state === ve.RESUME)) return | |
| 2050 | ;((this.state = ve.RESUME), | |
| 2051 | this.internalVerboseLog("[Keet Core]", "await this.ready"), | |
| 1922 | 2052 | this.opened || (await this.ready()), |
| 2053 | this.internalVerboseLog("[Keet Core]", "resume store"), | |
| 1923 | 2054 | await this.store.resume(), |
| 2055 | this.internalVerboseLog("[Keet Core]", "resume file server"), | |
| 1924 | 2056 | await this.files.server.resume(), |
| 2057 | this.internalVerboseLog("[Keet Core]", "resume swarm"), | |
| 1925 | 2058 | this.readOnly || (await this.swarm.resume()), |
| 2059 | this.internalVerboseLog("[Keet Core]", "resume rpc client"), | |
| 1926 | 2060 | await this.rpcClient.resume()) |
| 1927 | 2061 | const e = [] |
| 1928 | 2062 | ;(this.blindPeering && !this.readOnly && e.push(this.blindPeering.resume()), |
| … | … | @@ -1930,7 +2064,9 @@ module.exports = class extends s { |
| 1930 | 2064 | this.discovery && e.push(this.discovery.resume()), |
| 1931 | 2065 | this.swarmWorker.setServerMode(!0), |
| 1932 | 2066 | e.push(this.swarmWorker.unbackground()), |
| 1933 | await Promise.allSettled(e)) | |
| 2067 | this.internalVerboseLog("[Keet Core]", "await all promises"), | |
| 2068 | await Promise.allSettled(e), | |
| 2069 | this.internalVerboseLog("[Keet Core]", "all promises settled")) | |
| 1934 | 2070 | } |
| 1935 | 2071 | async _createInvitation(e, t) { |
| 1936 | 2072 | let { |
| … | … | @@ -1945,23 +2081,23 @@ module.exports = class extends s { |
| 1945 | 2081 | if ("2h" === i) i = Date.now() + 72e5 |
| 1946 | 2082 | else if ("2d" === i) i = Date.now() + 1728e5 |
| 1947 | 2083 | else { |
| 1948 | if ("2w" !== i) throw pe.UNKNOWN_EXPIRATION(`Unknown expiration: ${i}`, { roomKey: e.key }) | |
| 2084 | if ("2w" !== i) throw ge.UNKNOWN_EXPIRATION(`Unknown expiration: ${i}`, { roomKey: e.key }) | |
| 1949 | 2085 | i = Date.now() + 12096e5 |
| 1950 | 2086 | } |
| 1951 | 2087 | await e.ready() |
| 1952 | 2088 | const [{ seed: l }, c, h] = await Promise.all([ |
| 1953 | 2089 | e.db.get("@keet/room-capabilities"), |
| 1954 | H(e.db, e.deviceKey), | |
| 2090 | Y(e.db, e.deviceKey), | |
| 1955 | 2091 | e.db.get("@keet/system-digest"), |
| 1956 | 2092 | ]) |
| 1957 | 2093 | if ((r || s) && !c.status.isModerator) |
| 1958 | throw pe.MODERATORS_ONLY("Only moderators can create moderator invitations", { | |
| 2094 | throw ge.MODERATORS_ONLY("Only moderators can create moderator invitations", { | |
| 1959 | 2095 | roomKey: e.key, |
| 1960 | 2096 | }) |
| 1961 | const d = $(e.key, l), | |
| 2097 | const d = G(e.key, l), | |
| 1962 | 2098 | y = this.swarm.dht.toArray({ limit: 3 }) |
| 1963 | 2099 | if (n) |
| 1964 | return oe("@keet/sendable-invitation", { | |
| 2100 | return ne("@keet/sendable-invitation", { | |
| 1965 | 2101 | readonly: { |
| 1966 | 2102 | roomKey: e.key, |
| 1967 | 2103 | encryptionKey: e.encryptionKey, |
| … | … | @@ -1971,7 +2107,7 @@ module.exports = class extends s { |
| 1971 | 2107 | additionalNodes: y, |
| 1972 | 2108 | }) |
| 1973 | 2109 | const u = { key: e.key, encryptionKey: e.encryptionKey, fastForwardTo: e.base.getSystemKey() }, |
| 1974 | { invitation: p, seed: m } = W(u, { | |
| 2110 | { invitation: p, seed: m } = $(u, { | |
| 1975 | 2111 | requiresConfirmation: a, |
| 1976 | 2112 | expiration: i, |
| 1977 | 2113 | canModerate: r, |
| … | … | @@ -1991,16 +2127,16 @@ module.exports = class extends s { |
| 1991 | 2127 | o |
| 1992 | 2128 | ? (w.identity = { mailbox: b, invitationSeed: m, anchor: g, identityPublicKey: o }) |
| 1993 | 2129 | : (w.room = { mailbox: b, invitationSeed: m, anchor: g }), |
| 1994 | oe("@keet/sendable-invitation", w) | |
| 2130 | ne("@keet/sendable-invitation", w) | |
| 1995 | 2131 | ) |
| 1996 | 2132 | } |
| 1997 | 2133 | async createRoomInvitation(e, t = {}) { |
| 1998 | 2134 | this.opened || (await this.ready()) |
| 1999 | const s = i.decode(e), | |
| 2000 | r = this.internalOpenExistingRoom(s) | |
| 2135 | const i = s.decode(e), | |
| 2136 | r = this.internalOpenExistingRoom(i) | |
| 2001 | 2137 | try { |
| 2002 | 2138 | const e = await this._createInvitation(r, t) |
| 2003 | return f.encode(e) | |
| 2139 | return v.encode(e) | |
| 2004 | 2140 | } finally { |
| 2005 | 2141 | this.internalReleaseRoom(r) |
| 2006 | 2142 | } |
| … | … | @@ -2018,18 +2154,18 @@ module.exports = class extends s { |
| 2018 | 2154 | requiresConfirmation: !0, |
| 2019 | 2155 | identityPublicKey: e.publicKey, |
| 2020 | 2156 | }) |
| 2021 | return f.encode(i) | |
| 2157 | return v.encode(i) | |
| 2022 | 2158 | } finally { |
| 2023 | 2159 | this.internalReleaseRoom(t) |
| 2024 | 2160 | } |
| 2025 | 2161 | } |
| 2026 | async _startPairing(e, { deviceKeyPair: t, buildType: s = null } = {}) { | |
| 2162 | async _startPairing(e, { deviceKeyPair: t, buildType: i = null } = {}) { | |
| 2027 | 2163 | this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| 2028 | const r = F(e.invitationSeed), | |
| 2164 | const r = j(e.invitationSeed), | |
| 2029 | 2165 | o = e.invitationSeed, |
| 2030 | 2166 | a = e.mailbox, |
| 2031 | 2167 | n = e.anchor, |
| 2032 | l = { key: null, seedId: i.encode(o) }, | |
| 2168 | l = { key: null, seedId: s.encode(o) }, | |
| 2033 | 2169 | c = await this.local.get("@local/rooms-by-mailbox", { |
| 2034 | 2170 | capabilities: { mailboxKeyPair: { publicKey: a } }, |
| 2035 | 2171 | }) |
| … | … | @@ -2038,9 +2174,9 @@ module.exports = class extends s { |
| 2038 | 2174 | if (c.selfMember?.status.isRemoved) throw new Error("Removed member cannot rejoin") |
| 2039 | 2175 | h = await this.local.get("@local/room-preferences", { roomKey: c.roomKey }) |
| 2040 | 2176 | } |
| 2041 | if (h && h.status.isActive && !h.status.isReadOnly) return ((l.key = i.encode(c.roomKey)), l) | |
| 2042 | const d = b.keyPair(), | |
| 2043 | y = await this.store.createKeyPair(G(d.publicKey)), | |
| 2177 | if (h && h.status.isActive && !h.status.isReadOnly) return ((l.key = s.encode(c.roomKey)), l) | |
| 2178 | const d = w.keyPair(), | |
| 2179 | y = await this.store.createKeyPair(J(d.publicKey)), | |
| 2044 | 2180 | u = this.store.get({ keyPair: y, active: !1 }) |
| 2045 | 2181 | await u.ready() |
| 2046 | 2182 | const p = { key: u.key, length: 1 } |
| … | … | @@ -2055,11 +2191,11 @@ module.exports = class extends s { |
| 2055 | 2191 | initiator: p, |
| 2056 | 2192 | responseKeyPair: d, |
| 2057 | 2193 | invitationSeed: o, |
| 2058 | buildType: s, | |
| 2194 | buildType: i, | |
| 2059 | 2195 | }, |
| 2060 | w = await this.privateProfile.db.find("@keet-private-id/pending-invitations").toArray() | |
| 2061 | for (const e of w) | |
| 2062 | v.equals(e.mailbox, g.mailbox) && | |
| 2196 | b = await this.privateProfile.db.find("@keet-private-id/pending-invitations").toArray() | |
| 2197 | for (const e of b) | |
| 2198 | k.equals(e.mailbox, g.mailbox) && | |
| 2063 | 2199 | (await this.privateProfile.dispatch("@keet-private-id/remove-pending-invitation", e)) |
| 2064 | 2200 | return ( |
| 2065 | 2201 | await this.privateProfile.dispatch("@keet-private-id/add-pending-invitation", { |
| … | … | @@ -2068,9 +2204,9 @@ module.exports = class extends s { |
| 2068 | 2204 | l |
| 2069 | 2205 | ) |
| 2070 | 2206 | } |
| 2071 | async _openReadOnlyRoom({ roomKey: e, encryptionKey: t, seed: s, fastForwardTo: r }) { | |
| 2207 | async _openReadOnlyRoom({ roomKey: e, encryptionKey: t, seed: i, fastForwardTo: r }) { | |
| 2072 | 2208 | this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| 2073 | const { mailboxKeyPair: o, swarmTopic: a } = $(e, s), | |
| 2209 | const { mailboxKeyPair: o, swarmTopic: a } = G(e, i), | |
| 2074 | 2210 | n = this.internalOpenRoom(e, t, { mailbox: o.publicKey, fastForwardTo: { key: r } }) |
| 2075 | 2211 | return ( |
| 2076 | 2212 | await n.ready(), |
| … | … | @@ -2081,8 +2217,8 @@ module.exports = class extends s { |
| 2081 | 2217 | fastForwardTo: r, |
| 2082 | 2218 | isReadOnly: !0, |
| 2083 | 2219 | }), |
| 2084 | this.swarmWorker.startDiscoverySwarming(a, { roomId: i.encode(e) }), | |
| 2085 | { key: i.encode(e), seedId: i.encode(s) } | |
| 2220 | this.swarmWorker.startDiscoverySwarming(a, { roomId: s.encode(e) }), | |
| 2221 | { key: s.encode(e), seedId: s.encode(i) } | |
| 2086 | 2222 | ) |
| 2087 | 2223 | } |
| 2088 | 2224 | async startPairingRoom(e, t) { |
| … | … | @@ -2090,10 +2226,10 @@ module.exports = class extends s { |
| 2090 | 2226 | const i = this.internalDecodeInvitation(e), |
| 2091 | 2227 | s = await this.local.get("@local/rooms", { roomKey: this.privateProfile.key }), |
| 2092 | 2228 | r = i.buildType, |
| 2093 | o = s.digest.settings.buildType || he.Production | |
| 2094 | if (r && r !== o) throw pe.INVALID_BUILD_TYPE() | |
| 2229 | o = s.digest.settings.buildType || ye.Production | |
| 2230 | if (r && r !== o) throw ge.INVALID_BUILD_TYPE() | |
| 2095 | 2231 | if (i.readonly) return this._openReadOnlyRoom(i.readonly) |
| 2096 | if (!i.room) throw pe.INVALID_INVITATION_TYPE("Invalid room invitation") | |
| 2232 | if (!i.room) throw ge.INVALID_INVITATION_TYPE("Invalid room invitation") | |
| 2097 | 2233 | return this._startPairing(i.room, { ...t, buildType: r }) |
| 2098 | 2234 | } |
| 2099 | 2235 | async startPairingIdentity(e) { |
| … | … | @@ -2101,10 +2237,10 @@ module.exports = class extends s { |
| 2101 | 2237 | const t = this.internalDecodeInvitation(e), |
| 2102 | 2238 | i = await this.local.get("@local/rooms", { roomKey: this.privateProfile.key }), |
| 2103 | 2239 | s = t.buildType, |
| 2104 | r = i.digest.settings.buildType || he.Production | |
| 2105 | if (s && s !== r) throw pe.INVALID_BUILD_TYPE() | |
| 2106 | if (!t.identity) throw pe.INVALID_INVITATION_TYPE("Invalid device sync invitation") | |
| 2107 | const o = j(t.identity.identityPublicKey), | |
| 2240 | r = i.digest.settings.buildType || ye.Production | |
| 2241 | if (s && s !== r) throw ge.INVALID_BUILD_TYPE() | |
| 2242 | if (!t.identity) throw ge.INVALID_INVITATION_TYPE("Invalid device sync invitation") | |
| 2243 | const o = H(t.identity.identityPublicKey), | |
| 2108 | 2244 | a = await this.store.createKeyPair(o) |
| 2109 | 2245 | return this._startPairing(t.identity, { deviceKeyPair: a, buildType: s }) |
| 2110 | 2246 | } |
| … | … | @@ -2137,7 +2273,7 @@ module.exports = class extends s { |
| 2137 | 2273 | async getRecoveryPhrase() { |
| 2138 | 2274 | this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| 2139 | 2275 | const e = (await this.local.get("@local/identity")).entropy |
| 2140 | return e ? E({ entropy: e }) : null | |
| 2276 | return e ? C({ entropy: e }) : null | |
| 2141 | 2277 | } |
| 2142 | 2278 | async getEncryptedRecoveryPhrase(e) { |
| 2143 | 2279 | if ("string" != typeof e) throw new Error("Password required") |
| … | … | @@ -2145,27 +2281,27 @@ module.exports = class extends s { |
| 2145 | 2281 | const t = await this.getRecoveryPhrase() |
| 2146 | 2282 | if ("string" != typeof t) throw new Error("Recovery phrase reading failed") |
| 2147 | 2283 | if (0 === t.length) throw new Error("Recovery phrase reading failed") |
| 2148 | return S.encryptPhrase(t, e) | |
| 2284 | return O.encryptPhrase(t, e) | |
| 2149 | 2285 | } |
| 2150 | 2286 | decryptEncryptedRecoveryPhrase(e, t) { |
| 2151 | 2287 | if (!ArrayBuffer.isView(e)) throw new Error("Encrypted phrase should be an ArrayBuffer view") |
| 2152 | 2288 | if (0 === e.byteLength) throw new Error("Encrypted phrase should not be empty") |
| 2153 | 2289 | if ("string" != typeof t) throw new Error("Password required") |
| 2154 | 2290 | if (0 === t.length) throw new Error("Password should not be empty") |
| 2155 | return S.decryptPhrase(e, t) | |
| 2291 | return O.decryptPhrase(e, t) | |
| 2156 | 2292 | } |
| 2157 | 2293 | freeRecoveryPhrase(e) { |
| 2158 | S.free(e) | |
| 2294 | O.free(e) | |
| 2159 | 2295 | } |
| 2160 | 2296 | async storeRecoveryPhrase(t) { |
| 2161 | 2297 | this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| 2162 | 2298 | const i = await e.from({ mnemonic: t }), |
| 2163 | 2299 | s = await this.local.get("@local/identity"), |
| 2164 | 2300 | r = await this.local.get("@local/rooms", { roomKey: s.privateProfileKey }) |
| 2165 | if (!v.equals(s.publicKey, i.identityPublicKey)) throw new Error("Wrong recovery phrase") | |
| 2301 | if (!k.equals(s.publicKey, i.identityPublicKey)) throw new Error("Wrong recovery phrase") | |
| 2166 | 2302 | if (!r.identity.discoveryCoreKey) { |
| 2167 | 2303 | if ((await this.internalCreateDiscoveryCore(i), this.discoveryCore.length > 0)) { |
| 2168 | const e = Math.floor((Date.now() - Ae) / 1e3) | |
| 2304 | const e = Math.floor((Date.now() - qe) / 1e3) | |
| 2169 | 2305 | await this.discoveryCore.truncate(this.discoveryCore.length, e) |
| 2170 | 2306 | } |
| 2171 | 2307 | ;(await this.discoveryCore.append({ |
| … | … | @@ -2194,7 +2330,7 @@ module.exports = class extends s { |
| 2194 | 2330 | async restoreIdentity(t, { create: i = !0 } = {}) { |
| 2195 | 2331 | this.onlineBoot.opened || (await this.onlineBoot.ready()) |
| 2196 | 2332 | const [s] = await Promise.all([this.local.get("@local/identity"), e.from({ mnemonic: t })]), |
| 2197 | r = b.discoveryKey(s.privateProfileKey), | |
| 2333 | r = w.discoveryKey(s.privateProfileKey), | |
| 2198 | 2334 | o = this.tasks.restoreIdentity(r, { |
| 2199 | 2335 | mnemonic: t, |
| 2200 | 2336 | recover: !1 === i, |
| … | … | @@ -2217,11 +2353,11 @@ module.exports = class extends s { |
| 2217 | 2353 | let o = null |
| 2218 | 2354 | if (r.identity) { |
| 2219 | 2355 | const i = await this.local.get("@local/identity") |
| 2220 | if (!v.equals(i.privateProfileKey, e)) | |
| 2356 | if (!k.equals(i.privateProfileKey, e)) | |
| 2221 | 2357 | throw new Error( |
| 2222 | 2358 | "Accepting an identity device join request on a room that is not your private profile", |
| 2223 | 2359 | ) |
| 2224 | o = je(i, t, r.identity.devicePublicKey) | |
| 2360 | o = He(i, t, r.identity.devicePublicKey) | |
| 2225 | 2361 | } |
| 2226 | 2362 | await i.dispatch("@keet/accept-join-request", { deviceKey: t, identity: o }) |
| 2227 | 2363 | } finally { |
| … | … | @@ -2290,7 +2426,7 @@ module.exports = class extends s { |
| 2290 | 2426 | } |
| 2291 | 2427 | async _flushDHTCache() { |
| 2292 | 2428 | if (this.readOnly) return |
| 2293 | const e = this.swarm.dht.toArray({ limit: Oe }) | |
| 2429 | const e = this.swarm.dht.toArray({ limit: Me }) | |
| 2294 | 2430 | try { |
| 2295 | 2431 | await this._setCachedDHTNodes(e) |
| 2296 | 2432 | } catch (e) { |
| … | … | @@ -2301,10 +2437,10 @@ module.exports = class extends s { |
| 2301 | 2437 | const e = (await this.local.get("@local/hyperdht")) || {} |
| 2302 | 2438 | return { |
| 2303 | 2439 | nodes: e.nodes || [], |
| 2304 | concurrency: e.concurrency || X.concurrency, | |
| 2305 | maxWindow: e.maxWindow || X.maxWindow, | |
| 2306 | randomPunchInterval: e.randomPunchInterval || X.randomPunchInterval, | |
| 2307 | connectionKeepAlive: e.connectionKeepAlive || X.connectionKeepAlive, | |
| 2440 | concurrency: e.concurrency || Z.concurrency, | |
| 2441 | maxWindow: e.maxWindow || Z.maxWindow, | |
| 2442 | randomPunchInterval: e.randomPunchInterval || Z.randomPunchInterval, | |
| 2443 | connectionKeepAlive: e.connectionKeepAlive || Z.connectionKeepAlive, | |
| 2308 | 2444 | } |
| 2309 | 2445 | } |
| 2310 | 2446 | async _setCachedDHTNodes(e) { |
| … | … | @@ -2317,7 +2453,7 @@ module.exports = class extends s { |
| 2317 | 2453 | } |
| 2318 | 2454 | } |
| 2319 | 2455 | batch(e) { |
| 2320 | return new Ne(this, e) | |
| 2456 | return new We(this, e) | |
| 2321 | 2457 | } |
| 2322 | 2458 | async dispatch(e, t, i) { |
| 2323 | 2459 | this.opened || (await this.ready()) |
| … | … | @@ -2344,63 +2480,63 @@ module.exports = class extends s { |
| 2344 | 2480 | throw new Error("Must confirm self destruction") |
| 2345 | 2481 | ;(await this.ready(), await this.close()) |
| 2346 | 2482 | const t = Math.random().toString(16).slice(2), |
| 2347 | i = P.join(this.dir, "gc", t) | |
| 2483 | i = K.join(this.dir, "gc", t) | |
| 2348 | 2484 | try { |
| 2349 | await k.promises.mkdir(i, { recursive: !0 }) | |
| 2485 | await P.promises.mkdir(i, { recursive: !0 }) | |
| 2350 | 2486 | } catch {} |
| 2351 | 2487 | for (const e of ["cores", "db", "cache", "app-references"]) |
| 2352 | 2488 | try { |
| 2353 | await k.promises.rename(P.join(this.dir, e), P.join(i, e)) | |
| 2489 | await P.promises.rename(K.join(this.dir, e), K.join(i, e)) | |
| 2354 | 2490 | } catch {} |
| 2355 | await k.promises.rm(i, { recursive: !0 }) | |
| 2491 | await P.promises.rm(i, { recursive: !0 }) | |
| 2356 | 2492 | } |
| 2357 | 2493 | static from(e, t) { |
| 2358 | const i = K.migrate(e), | |
| 2494 | const i = T.migrate(e), | |
| 2359 | 2495 | s = i.active() || i.create({ name: "default" }) |
| 2360 | i.gc({ delay: fe }) | |
| 2496 | i.gc({ delay: ke }) | |
| 2361 | 2497 | const r = new this(s.storage, { |
| 2362 | 2498 | ...t, |
| 2363 | 2499 | logout: async () => { |
| 2364 | 2500 | ;(i.remove(s), |
| 2365 | 2501 | await new Promise((e) => setTimeout(e, 1e3)), |
| 2366 | 2502 | await r.close(), |
| 2367 | i.gc({ delay: fe })) | |
| 2503 | i.gc({ delay: ke })) | |
| 2368 | 2504 | }, |
| 2369 | 2505 | }) |
| 2370 | 2506 | return { profiles: i, keet: r } |
| 2371 | 2507 | } |
| 2372 | 2508 | static registerRPC(e, t, i) { |
| 2373 | return new D(e, t, i) | |
| 2509 | return new A(e, t, i) | |
| 2374 | 2510 | } |
| 2375 | 2511 | } |
| 2376 | const We = { | |
| 2377 | interrupt: Je, | |
| 2378 | addWriter: Je, | |
| 2379 | removeWriter: Je, | |
| 2380 | ackWriter: Je, | |
| 2381 | preferFastForward: Je, | |
| 2382 | removeable: Ye, | |
| 2512 | const $e = { | |
| 2513 | interrupt: ze, | |
| 2514 | addWriter: ze, | |
| 2515 | removeWriter: ze, | |
| 2516 | ackWriter: ze, | |
| 2517 | preferFastForward: ze, | |
| 2518 | removeable: Qe, | |
| 2383 | 2519 | createAnchor: (e, t) => ({ key: e, length: t }), |
| 2384 | 2520 | } |
| 2385 | function $e(e, t, i, s, r, o, { abi: a, trace: n, dryRun: l = !1 } = {}) { | |
| 2386 | return new Q.OpContext(e, t, { | |
| 2521 | function Ge(e, t, i, s, r, o, { abi: a, trace: n, dryRun: l = !1 } = {}) { | |
| 2522 | return new ee.OpContext(e, t, { | |
| 2387 | 2523 | fork: r.core.fork, |
| 2388 | 2524 | writer: { key: i.from.key, seq: i.length - 1 }, |
| 2389 | 2525 | genesis: 0 === r.core.length, |
| 2390 | 2526 | bootstrap: s.bootstrap, |
| 2391 | 2527 | router: o, |
| 2392 | hostcalls: l ? We : s, | |
| 2528 | hostcalls: l ? $e : s, | |
| 2393 | 2529 | dryRun: l, |
| 2394 | 2530 | abi: a, |
| 2395 | 2531 | trace: n, |
| 2396 | 2532 | }) |
| 2397 | 2533 | } |
| 2398 | function je(t, i, s) { | |
| 2534 | function He(t, i, s) { | |
| 2399 | 2535 | const r = e.attestDevice(s, t.deviceKeyPair, t.deviceProof), |
| 2400 | 2536 | o = e.attestData(i, t.deviceKeyPair, t.deviceProof) |
| 2401 | 2537 | return { privateProfileIdentity: { memberKey: t.publicKey, proof: o }, deviceProof: r } |
| 2402 | 2538 | } |
| 2403 | function Ge(e) { | |
| 2539 | function Je(e) { | |
| 2404 | 2540 | return ( |
| 2405 | 2541 | "@keet/add-chat-message" === e || |
| 2406 | 2542 | "@keet/start-call" === e || |
| … | … | @@ -2409,24 +2545,24 @@ function Ge(e) { |
| 2409 | 2545 | "@keet/end-call" === e |
| 2410 | 2546 | ) |
| 2411 | 2547 | } |
| 2412 | function He(e) { | |
| 2548 | function Ye(e) { | |
| 2413 | 2549 | switch (e) { |
| 2414 | 2550 | case "nightly": |
| 2415 | return he.Nightly | |
| 2551 | return ye.Nightly | |
| 2416 | 2552 | case "internal": |
| 2417 | return he.Internal | |
| 2553 | return ye.Internal | |
| 2418 | 2554 | case "production": |
| 2419 | return he.Production | |
| 2555 | return ye.Production | |
| 2420 | 2556 | default: |
| 2421 | throw pe.INVALID_BUILD_TYPE() | |
| 2557 | throw ge.INVALID_BUILD_TYPE() | |
| 2422 | 2558 | } |
| 2423 | 2559 | } |
| 2424 | function Je() {} | |
| 2425 | function Ye() { | |
| 2560 | function ze() {} | |
| 2561 | function Qe() { | |
| 2426 | 2562 | return !0 |
| 2427 | 2563 | } |
| 2428 | function ze(e, t) { | |
| 2564 | function Xe(e, t) { | |
| 2429 | 2565 | if (e.length !== t.length) return !1 |
| 2430 | for (let i = 0; i < e.length; i++) if (!v.equals(e[i], t[i])) return !1 | |
| 2566 | for (let i = 0; i < e.length; i++) if (!k.equals(e[i], t[i])) return !1 | |
| 2431 | 2567 | return !0 |
| 2432 | 2568 | } |
| … | … | @@ -557,6 +557,13 @@ |
| 557 | 557 | { |
| 558 | 558 | "name": "cancelDownload" |
| 559 | 559 | }, |
| 560 | { | |
| 561 | "name": "readFileStream", | |
| 562 | "subscription": true | |
| 563 | }, | |
| 564 | { | |
| 565 | "name": "saveToDisk" | |
| 566 | }, | |
| 560 | 567 | { |
| 561 | 568 | "name": "clearFile" |
| 562 | 569 | }, |
| … | … | @@ -1,7 +1,7 @@ |
| 1 | 1 | const e = require("hypercore-id-encoding"), |
| 2 | 2 | t = require("b4a") |
| 3 | 3 | function n({ start: e, length: t, content: n, preview: r }) { |
| 4 | return (r?.file && (r.file = d(r.file)), { range: { start: e, length: t }, url: n, preview: r }) | |
| 4 | return (r?.file && (r.file = a(r.file)), { range: { start: e, length: t }, url: n, preview: r }) | |
| 5 | 5 | } |
| 6 | 6 | function r(t) { |
| 7 | 7 | if (!t) return null |
| … | … | @@ -10,8 +10,8 @@ function r(t) { |
| 10 | 10 | } |
| 11 | 11 | function i(t) { |
| 12 | 12 | if (!t) return null |
| 13 | const { id: n, key: r, path: i, version: l, size: d } = t | |
| 14 | return { id: n, key: n ? e.decode(n) : r, path: i, version: l, size: d } | |
| 13 | const { id: n, key: r, path: i, version: l, size: a } = t | |
| 14 | return { id: n, key: n ? e.decode(n) : r, path: i, version: l, size: a } | |
| 15 | 15 | } |
| 16 | 16 | function l(e) { |
| 17 | 17 | return e |
| … | … | @@ -23,14 +23,14 @@ function l(e) { |
| 23 | 23 | } |
| 24 | 24 | : {} |
| 25 | 25 | } |
| 26 | function d(e) { | |
| 26 | function a(e) { | |
| 27 | 27 | return e && (e.pointer || e.preview) |
| 28 | 28 | ? (e.metadata?.userdata && (e.metadata.userdata = t.from(e.metadata.userdata, "base64")), |
| 29 | { ...e, pointer: l(e.pointer), preview: a(e.preview) }) | |
| 29 | { ...e, pointer: l(e.pointer), preview: d(e.preview) }) | |
| 30 | 30 | : null |
| 31 | 31 | } |
| 32 | function a(e) { | |
| 33 | return e ? { small: d(e.small), medium: d(e.medium), large: d(e.large) } : null | |
| 32 | function d(e) { | |
| 33 | return e ? { small: a(e.small), medium: a(e.medium), large: a(e.large) } : null | |
| 34 | 34 | } |
| 35 | 35 | function o(t, r) { |
| 36 | 36 | const i = |
| … | … | @@ -44,7 +44,7 @@ function o(t, r) { |
| 44 | 44 | language: e.language, |
| 45 | 45 | text: e.text, |
| 46 | 46 | })) || null, |
| 47 | a = { | |
| 47 | d = { | |
| 48 | 48 | httpLink: r?.httpLinks?.map(n), |
| 49 | 49 | pearLink: r?.pearLinks?.map(n), |
| 50 | 50 | mention: i, |
| … | … | @@ -70,15 +70,15 @@ function o(t, r) { |
| 70 | 70 | const c = !0 === r.forwarded, |
| 71 | 71 | u = [] |
| 72 | 72 | for (const e of r?.files || []) { |
| 73 | const t = d(e) | |
| 73 | const t = a(e) | |
| 74 | 74 | t && u.push(t) |
| 75 | 75 | } |
| 76 | return { text: t, replyTo: s, forwarded: c, display: a, files: u, event: o } | |
| 76 | return { text: t, replyTo: s, forwarded: c, display: d, files: u, event: o } | |
| 77 | 77 | } |
| 78 | function s({ gt: t, gte: n, lt: r, lte: i, limit: l, reverse: d } = {}) { | |
| 78 | function s({ gt: t, gte: n, lt: r, lte: i, limit: l, reverse: a } = {}) { | |
| 79 | 79 | return { |
| 80 | 80 | limit: l, |
| 81 | reverse: d, | |
| 81 | reverse: a, | |
| 82 | 82 | gt: t ? { key: e.decode(t) } : null, |
| 83 | 83 | gte: n ? { key: e.decode(n) } : null, |
| 84 | 84 | lt: r ? { key: e.decode(r) } : null, |
| … | … | @@ -99,39 +99,44 @@ function c(e, t) { |
| 99 | 99 | ) |
| 100 | 100 | } |
| 101 | 101 | function u( |
| 102 | { reverse: e = !0, limit: t = 50, gt: n, gte: r, lt: i, lte: l, type: d } = { | |
| 102 | { reverse: e = !0, limit: t = 50, gt: n, gte: r, lt: i, lte: l, type: a } = { | |
| 103 | 103 | reverse: !0, |
| 104 | 104 | limit: 50, |
| 105 | 105 | }, |
| 106 | 106 | ) { |
| 107 | const a = { reverse: e, limit: t } | |
| 107 | const d = { reverse: e, limit: t } | |
| 108 | 108 | return ( |
| 109 | Number.isInteger(n) && (a.gt = d ? { id: n, type: d } : { id: n }), | |
| 110 | Number.isInteger(r) && (a.gte = d ? { id: r, type: d } : { id: r }), | |
| 111 | Number.isInteger(i) && (a.lt = d ? { id: i, type: d } : { id: i }), | |
| 112 | Number.isInteger(l) && (a.lte = d ? { id: l, type: d } : { id: l }), | |
| 113 | d && | |
| 114 | (e && !a.lte && (a.lte = { type: d }), | |
| 115 | e || a.gte || (a.gte = { type: d }), | |
| 116 | a.lte && !a.gte && (a.gte = { type: d }), | |
| 117 | a.gte && !a.lte && (a.lte = { type: d })), | |
| 118 | a | |
| 109 | Number.isInteger(n) && (d.gt = a ? { id: n, type: a } : { id: n }), | |
| 110 | Number.isInteger(r) && (d.gte = a ? { id: r, type: a } : { id: r }), | |
| 111 | Number.isInteger(i) && (d.lt = a ? { id: i, type: a } : { id: i }), | |
| 112 | Number.isInteger(l) && (d.lte = a ? { id: l, type: a } : { id: l }), | |
| 113 | a && | |
| 114 | (e && !d.lte && (d.lte = { type: a }), | |
| 115 | e || d.gte || (d.gte = { type: a }), | |
| 116 | d.lte && !d.gte && (d.gte = { type: a }), | |
| 117 | d.gte && !d.lte && (d.lte = { type: a })), | |
| 118 | d | |
| 119 | 119 | ) |
| 120 | 120 | } |
| 121 | 121 | function g(t) { |
| 122 | 122 | return { key: e.decode(t.deviceId), seq: t.seq } |
| 123 | 123 | } |
| 124 | 124 | function p(e) { |
| 125 | return e ? { ...e, avatar: a(e.avatar), blindPeers: y(e.blindPeers) } : null | |
| 125 | return e ? { ...e, avatar: d(e.avatar), blindPeers: y(e.blindPeers) } : null | |
| 126 | 126 | } |
| 127 | 127 | function m(e) { |
| 128 | return e ? { disableReadReceipts: !0 === e.disableReadReceipts } : null | |
| 128 | return e | |
| 129 | ? { | |
| 130 | disableReadReceipts: !0 === e.disableReadReceipts, | |
| 131 | stripAttachmentMetadata: !0 === e.stripAttachmentMetadata, | |
| 132 | } | |
| 133 | : null | |
| 129 | 134 | } |
| 130 | 135 | function y(t) { |
| 131 | 136 | return t && Array.isArray(t) ? t.map((t) => e.decode(t)) : [] |
| 132 | 137 | } |
| 133 | 138 | function b({ memberId: t, blindWriters: n, displayName: r, avatar: i }) { |
| 134 | return { memberKey: e.decode(t), blindWriters: f(n), displayName: r, avatar: a(i) } | |
| 139 | return { memberKey: e.decode(t), blindWriters: f(n), displayName: r, avatar: d(i) } | |
| 135 | 140 | } |
| 136 | 141 | function f(t) { |
| 137 | 142 | return t && Array.isArray(t) |
| … | … | @@ -143,8 +148,8 @@ module.exports = { |
| 143 | 148 | decodeChatRangeOptions: c, |
| 144 | 149 | decodeKeyRangeOptions: s, |
| 145 | 150 | decodeChatMessage: o, |
| 146 | decodeImageFile: a, | |
| 147 | decodeFile: d, | |
| 151 | decodeImageFile: d, | |
| 152 | decodeFile: a, | |
| 148 | 153 | decodeMessageId: g, |
| 149 | 154 | decodeConfig: p, |
| 150 | 155 | decodeUserSettings: m, |
| … | … | @@ -3,9 +3,9 @@ const e = require("hypercore-id-encoding"), |
| 3 | 3 | getCapabilitiesForRole: t, |
| 4 | 4 | MemberRoles: n, |
| 5 | 5 | DISPLAY_TYPES: a, |
| 6 | GENERIC_EVENTS: s, | |
| 6 | GENERIC_EVENTS: r, | |
| 7 | 7 | } = require("@holepunchto/keet-core-api"), |
| 8 | r = require("b4a"), | |
| 8 | s = require("b4a"), | |
| 9 | 9 | { |
| 10 | 10 | contract: { |
| 11 | 11 | hyperschema: { getEnum: i }, |
| … | … | @@ -32,22 +32,22 @@ function c(t) { |
| 32 | 32 | } |
| 33 | 33 | function m(t) { |
| 34 | 34 | if (!t) return null |
| 35 | const { key: n, path: a, version: s, size: r } = t | |
| 36 | return { id: e.encode(n), path: a, version: s, size: r } | |
| 35 | const { key: n, path: a, version: r, size: s } = t | |
| 36 | return { id: e.encode(n), path: a, version: r, size: s } | |
| 37 | 37 | } |
| 38 | 38 | function u(e) { |
| 39 | 39 | if (!e) return null |
| 40 | const { inlined: t, blob: n, externalBlob: a, externalDrive: s } = e | |
| 40 | const { inlined: t, blob: n, externalBlob: a, externalDrive: r } = e | |
| 41 | 41 | return { |
| 42 | 42 | blob: n, |
| 43 | inlined: t ? r.toString(t, "base64") : null, | |
| 43 | inlined: t ? s.toString(t, "base64") : null, | |
| 44 | 44 | externalBlob: c(a), |
| 45 | externalDrive: m(s), | |
| 45 | externalDrive: m(r), | |
| 46 | 46 | } |
| 47 | 47 | } |
| 48 | 48 | function p(e) { |
| 49 | 49 | return e |
| 50 | ? (e.metadata?.userdata && (e.metadata.userdata = r.toString(e.metadata.userdata, "base64")), | |
| 50 | ? (e.metadata?.userdata && (e.metadata.userdata = s.toString(e.metadata.userdata, "base64")), | |
| 51 | 51 | { |
| 52 | 52 | hash: e.hash, |
| 53 | 53 | entry: e.entry, |
| … | … | @@ -75,55 +75,73 @@ function g(e) { |
| 75 | 75 | return e ? { small: p(e.small), medium: p(e.medium), large: p(e.large) } : null |
| 76 | 76 | } |
| 77 | 77 | function f(t) { |
| 78 | if (!t) return null | |
| 79 | const { memberJoined: n, memberLeft: a, memberRemoved: s } = t, | |
| 80 | r = n?.memberKey || a?.memberKey || s?.memberKey, | |
| 81 | i = r ? { memberId: e.encode(r) } : null | |
| 82 | return { ...t, memberJoined: n && i, memberLeft: a && i, memberRemoved: s && i } | |
| 83 | } | |
| 84 | function b({ record: t, member: n, memberId: r, localRoom: i }) { | |
| 85 | const { event: o, message: l, reactions: c = {}, labels: m = {} } = t, | |
| 86 | u = f(o) | |
| 87 | l && l.replyTo && (l.replyTo = d(l.replyTo)) | |
| 88 | let y = null | |
| 89 | ;(u && u.memberJoined && (y = { type: s.MEMBER_JOINED, value: u.memberJoined.memberId }), | |
| 90 | u && u.memberLeft && (y = { type: s.MEMBER_LEFT, value: u.memberLeft.memberId }), | |
| 91 | u && u.titleChanged && (y = { type: s.ROOM_TITLE_CHANGED, value: u.titleChanged }), | |
| 92 | u && u.callStarted && (y = { type: s.CALL_STARTED, value: null }), | |
| 93 | u && u.callHangup && (y = { type: s.CALL_HANGUP, value: null }), | |
| 94 | u && u.callMissed && (y = { type: s.CALL_MISSED, value: null })) | |
| 95 | const g = j(t) | |
| 78 | if (!t?.memberKey) return t | |
| 79 | const { memberKey: n, ...a } = t | |
| 80 | return { ...a, memberId: e.encode(n) } | |
| 81 | } | |
| 82 | function b(e) { | |
| 83 | return e | |
| 84 | ? { | |
| 85 | ...e, | |
| 86 | memberJoined: f(e.memberJoined), | |
| 87 | memberLeft: f(e.memberLeft), | |
| 88 | memberRemoved: f(e.memberRemoved), | |
| 89 | } | |
| 90 | : null | |
| 91 | } | |
| 92 | function v(e) { | |
| 93 | if (e) | |
| 94 | return e.memberJoined | |
| 95 | ? { type: r.MEMBER_JOINED, value: e.memberJoined.memberId } | |
| 96 | : e.memberLeft | |
| 97 | ? { type: r.MEMBER_LEFT, value: e.memberLeft.memberId } | |
| 98 | : e.titleChanged | |
| 99 | ? { type: r.ROOM_TITLE_CHANGED, value: e.titleChanged } | |
| 100 | : e.callStarted | |
| 101 | ? { type: r.CALL_STARTED, value: null } | |
| 102 | : e.callHangup | |
| 103 | ? { type: r.CALL_HANGUP, value: null } | |
| 104 | : e.callMissed | |
| 105 | ? { type: r.CALL_MISSED, value: null } | |
| 106 | : void 0 | |
| 107 | } | |
| 108 | function I({ record: t, member: n, memberId: r, localRoom: s }) { | |
| 109 | const { event: i, message: o, reactions: l = {}, labels: c = {} } = t, | |
| 110 | m = b(i), | |
| 111 | u = v(m), | |
| 112 | y = U(t) | |
| 96 | 113 | return ( |
| 97 | l && l.files && (l.files = l.files.map(p)), | |
| 114 | o?.replyTo && (o.replyTo = d(o.replyTo)), | |
| 115 | o?.files && (o.files = o.files.map(p)), | |
| 98 | 116 | { |
| 99 | 117 | timestamp: t.timestamp, |
| 100 | 118 | editedAt: t.editedAt, |
| 101 | 119 | memberId: r || e.encode(n?.key || t.oplog.key), |
| 102 | member: n ? M(n, i?.selfMember?.key) : null, | |
| 120 | member: n ? D(n, s?.selfMember?.key) : null, | |
| 103 | 121 | id: d(t.oplog), |
| 104 | 122 | deleted: t.status.isDeleted, |
| 105 | 123 | thread: t.id.thread, |
| 106 | 124 | clock: t.id.index, |
| 107 | message: { ...l, generic: u }, | |
| 108 | reactions: c, | |
| 109 | labels: m, | |
| 125 | message: { ...o, generic: m }, | |
| 126 | reactions: l, | |
| 127 | labels: c, | |
| 110 | 128 | read: t.read, |
| 111 | 129 | seq: t.id.index, |
| 112 | event: y, | |
| 113 | replyTo: l && l.replyTo ? l.replyTo : null, | |
| 114 | forwarded: !0 === l?.forwarded, | |
| 130 | event: u, | |
| 131 | replyTo: o && o.replyTo ? o.replyTo : null, | |
| 132 | forwarded: !0 === o?.forwarded, | |
| 115 | 133 | chat: { |
| 116 | text: l ? l.text : null, | |
| 134 | text: o ? o.text : null, | |
| 117 | 135 | edited: t.status.isEdited, |
| 118 | display: g, | |
| 119 | mentions: g.filter((e) => e.type === a.MENTION), | |
| 136 | display: y, | |
| 137 | mentions: y.filter((e) => e.type === a.MENTION), | |
| 120 | 138 | }, |
| 121 | files: l && l.files ? l.files : [], | |
| 122 | file: l && l.files ? l.files[0] : null, | |
| 139 | files: o && o.files ? o.files : [], | |
| 140 | file: o && o.files ? o.files[0] : null, | |
| 123 | 141 | } |
| 124 | 142 | ) |
| 125 | 143 | } |
| 126 | function v(e) { | |
| 144 | function k(e) { | |
| 127 | 145 | return e |
| 128 | 146 | ? { |
| 129 | 147 | total: e.total, |
| … | … | @@ -132,13 +150,13 @@ function v(e) { |
| 132 | 150 | } |
| 133 | 151 | : { total: 0, reactions: [] } |
| 134 | 152 | } |
| 135 | function I(e) { | |
| 153 | function K(e) { | |
| 136 | 154 | return e.map((e) => e.reaction) |
| 137 | 155 | } |
| 138 | function k(t) { | |
| 156 | function h(t) { | |
| 139 | 157 | return { sender: e.encode(t.sender), clock: t.clock, reaction: t.reaction } |
| 140 | 158 | } |
| 141 | function K(t) { | |
| 159 | function A(t) { | |
| 142 | 160 | return { |
| 143 | 161 | roomId: e.encode(t.roomKey), |
| 144 | 162 | discoveryId: e.encode(t.discoveryKey), |
| … | … | @@ -146,11 +164,11 @@ function K(t) { |
| 146 | 164 | recipient: t.dm ? e.encode(t.dm) : null, |
| 147 | 165 | } |
| 148 | 166 | } |
| 149 | function h({ roomInfo: t, preferences: n, lastMessageMember: a, storageInfo: s, fileStats: r }) { | |
| 167 | function M({ roomInfo: t, preferences: n, lastMessageMember: a, storageInfo: r, fileStats: s }) { | |
| 150 | 168 | const i = t.dm?.length ? e.encode(t.dm[0]) : null |
| 151 | 169 | let o = null |
| 152 | 170 | return ( |
| 153 | t.lastMessage && (o = { chat: b({ record: t.lastMessage, memberId: a?.memberId }), member: a }), | |
| 171 | t.lastMessage && (o = { chat: I({ record: t.lastMessage, memberId: a?.memberId }), member: a }), | |
| 154 | 172 | { |
| 155 | 173 | roomId: e.encode(t.roomKey), |
| 156 | 174 | discoveryId: e.encode(t.discoveryKey), |
| … | … | @@ -158,21 +176,21 @@ function h({ roomInfo: t, preferences: n, lastMessageMember: a, storageInfo: s, |
| 158 | 176 | stats: t.stats, |
| 159 | 177 | fork: t.fork, |
| 160 | 178 | self: { |
| 161 | sentLength: s ? s.hints.remoteContiguousLength : 0, | |
| 179 | sentLength: r ? r.hints.remoteContiguousLength : 0, | |
| 162 | 180 | deviceId: t.selfDevice ? e.encode(t.selfDevice.key) : null, |
| 163 | member: t.selfMember ? M(t.selfMember, t.selfMember.key) : null, | |
| 181 | member: t.selfMember ? D(t.selfMember, t.selfMember.key) : null, | |
| 164 | 182 | }, |
| 165 | digest: T(t.digest), | |
| 166 | config: C(t.config, t.digest), | |
| 183 | digest: N(t.digest), | |
| 184 | config: S(t.config, t.digest), | |
| 167 | 185 | preferences: n, |
| 168 | 186 | lastMessage: o, |
| 169 | 187 | dmMemberId: i, |
| 170 | fileStats: r ? { total: r.total } : null, | |
| 171 | activeCall: A(t.activeCall), | |
| 188 | fileStats: s ? { total: s.total } : null, | |
| 189 | activeCall: R(t.activeCall), | |
| 172 | 190 | } |
| 173 | 191 | ) |
| 174 | 192 | } |
| 175 | function A(t) { | |
| 193 | function R(t) { | |
| 176 | 194 | return t |
| 177 | 195 | ? { |
| 178 | 196 | callId: e.encode(t.callKey), |
| … | … | @@ -180,7 +198,7 @@ function A(t) { |
| 180 | 198 | } |
| 181 | 199 | : null |
| 182 | 200 | } |
| 183 | function M(t, n) { | |
| 201 | function D(t, n) { | |
| 184 | 202 | return t |
| 185 | 203 | ? { |
| 186 | 204 | memberId: e.encode(t.key), |
| … | … | @@ -189,16 +207,16 @@ function M(t, n) { |
| 189 | 207 | status: t.status, |
| 190 | 208 | displayName: t.profile.displayName, |
| 191 | 209 | inactive: !t.status.isActive, |
| 192 | capabilities: Y(t.status), | |
| 210 | capabilities: Q(t.status), | |
| 193 | 211 | avatar: g(t.profile.avatar), |
| 194 | local: !!n && r.equals(t.key, n), | |
| 212 | local: !!n && s.equals(t.key, n), | |
| 195 | 213 | pushNotifications: !0, |
| 196 | 214 | username: t.profile.username, |
| 197 | 215 | canDM: !!t.profile.mailbox, |
| 198 | 216 | } |
| 199 | 217 | : null |
| 200 | 218 | } |
| 201 | function R(t) { | |
| 219 | function E(t) { | |
| 202 | 220 | return { |
| 203 | 221 | id: { memberId: e.encode(t.memberKey), roomId: e.encode(t.keys.key) }, |
| 204 | 222 | roomId: e.encode(t.keys.key), |
| … | … | @@ -213,7 +231,7 @@ function R(t) { |
| 213 | 231 | sentAt: t.sentAt, |
| 214 | 232 | } |
| 215 | 233 | } |
| 216 | function D(t) { | |
| 234 | function T(t) { | |
| 217 | 235 | const n = e.encode(t.id) |
| 218 | 236 | return { |
| 219 | 237 | id: n, |
| … | … | @@ -223,24 +241,27 @@ function D(t) { |
| 223 | 241 | expires: -1, |
| 224 | 242 | } |
| 225 | 243 | } |
| 226 | function E(t) { | |
| 244 | function L(t) { | |
| 227 | 245 | if (!t) return null |
| 228 | 246 | const n = t.request, |
| 229 | 247 | a = n.deviceKey, |
| 230 | s = n.device.profile.name, | |
| 231 | r = n.identity.devicePublicKey | |
| 232 | return { deviceName: s, deviceId: e.encode(a), identityDeviceId: e.encode(r) } | |
| 248 | r = n.device.profile.name, | |
| 249 | s = n.identity.devicePublicKey | |
| 250 | return { deviceName: r, deviceId: e.encode(a), identityDeviceId: e.encode(s) } | |
| 233 | 251 | } |
| 234 | function T(e) { | |
| 252 | function N(e) { | |
| 235 | 253 | return { ...e } |
| 236 | 254 | } |
| 237 | function L(t) { | |
| 255 | function w(t) { | |
| 238 | 256 | return t ? t.map(e.encode) : null |
| 239 | 257 | } |
| 240 | function N(e) { | |
| 241 | return { disableReadReceipts: e?.disableReadReceipts || !1 } | |
| 258 | function C(e) { | |
| 259 | return { | |
| 260 | disableReadReceipts: e?.disableReadReceipts || !1, | |
| 261 | stripAttachmentMetadata: e?.stripAttachmentMetadata || !1, | |
| 262 | } | |
| 242 | 263 | } |
| 243 | function w(e) { | |
| 264 | function x(e) { | |
| 244 | 265 | return { |
| 245 | 266 | concurrency: e.concurrency, |
| 246 | 267 | maxWindow: e.maxWindow, |
| … | … | @@ -248,42 +269,45 @@ function w(e) { |
| 248 | 269 | connectionKeepAlive: e.connectionKeepAlive, |
| 249 | 270 | } |
| 250 | 271 | } |
| 251 | function C(e, t, n = []) { | |
| 272 | function S(e, t, n = []) { | |
| 252 | 273 | return e |
| 253 | 274 | ? { |
| 254 | 275 | ...e, |
| 255 | 276 | avatar: g(e.avatar), |
| 256 | roomType: V(t.settings.roomType), | |
| 277 | roomType: X(t.settings.roomType), | |
| 257 | 278 | experimental: t.settings.isExperimental, |
| 258 | 279 | locked: t.settings.isJoiningDisabled, |
| 259 | 280 | frozen: t.settings.isAppendingDisabled, |
| 260 | 281 | isMembershipEventsDisabled: t.settings.isMembershipEventsDisabled, |
| 261 | 282 | pinnedMessages: n, |
| 262 | 283 | canCall: String(!t.settings.isCallingDisabled), |
| 263 | blindPeers: L(e.blindPeers), | |
| 284 | blindPeers: w(e.blindPeers), | |
| 264 | 285 | } |
| 265 | 286 | : {} |
| 266 | 287 | } |
| 267 | function x(t) { | |
| 268 | return t | |
| 269 | ? { | |
| 270 | memberId: e.encode(t.attestation.memberKey), | |
| 271 | displayName: t.profile.displayName, | |
| 272 | username: t.profile.username, | |
| 273 | avatar: g(t.profile.avatar), | |
| 274 | contactInfo: r.toString(t.contactInfo, "base64"), | |
| 275 | count: t.count, | |
| 276 | } | |
| 277 | : null | |
| 288 | function B(t) { | |
| 289 | if (!t) return null | |
| 290 | let n = null | |
| 291 | return ( | |
| 292 | t.contactInfo && (n = s.toString(t.contactInfo, "base64")), | |
| 293 | { | |
| 294 | memberId: e.encode(t.attestation.memberKey), | |
| 295 | displayName: t.profile.displayName, | |
| 296 | username: t.profile.username, | |
| 297 | avatar: g(t.profile.avatar), | |
| 298 | count: t.count, | |
| 299 | contactInfo: n, | |
| 300 | } | |
| 301 | ) | |
| 278 | 302 | } |
| 279 | function S(t) { | |
| 303 | function O(t) { | |
| 280 | 304 | return t ? { username: t.username, memberId: t.memberKey ? e.encode(t.memberKey) : null } : null |
| 281 | 305 | } |
| 282 | function B(t, n, a, s) { | |
| 283 | let r = null | |
| 306 | function P(t, n, a, r) { | |
| 307 | let s = null | |
| 284 | 308 | return ( |
| 285 | 309 | a && |
| 286 | (r = { | |
| 310 | (s = { | |
| 287 | 311 | id: e.encode(a.roomKey), |
| 288 | 312 | status: { |
| 289 | 313 | isAccepted: !!a && 0 === a.stats.members.pending, |
| … | … | @@ -292,16 +316,21 @@ function B(t, n, a, s) { |
| 292 | 316 | }), |
| 293 | 317 | { |
| 294 | 318 | memberId: t, |
| 295 | activeRoom: r, | |
| 296 | pendingRequest: s ? R(s) : null, | |
| 319 | activeRoom: s, | |
| 320 | pendingRequest: r ? E(r) : null, | |
| 297 | 321 | contactStatus: { isBlocked: !!n?.status?.isBlocked }, |
| 298 | 322 | } |
| 299 | 323 | ) |
| 300 | 324 | } |
| 301 | function O(t) { | |
| 302 | return t ? { roomId: t.roomKey ? e.encode(t.roomKey) : null } : {} | |
| 325 | function _(t) { | |
| 326 | return t | |
| 327 | ? { | |
| 328 | roomId: t.roomKey ? e.encode(t.roomKey) : null, | |
| 329 | coreId: t.coreKey ? e.encode(t.coreKey) : null, | |
| 330 | } | |
| 331 | : {} | |
| 303 | 332 | } |
| 304 | function P(t) { | |
| 333 | function q(t) { | |
| 305 | 334 | return { |
| 306 | 335 | code: t.code, |
| 307 | 336 | message: t.message, |
| … | … | @@ -310,10 +339,10 @@ function P(t) { |
| 310 | 339 | isContractError: !0 === t.isContractError, |
| 311 | 340 | isKeetError: !0 === t.isKeetError, |
| 312 | 341 | roomId: t.roomKey ? e.encode(t.roomKey) : null, |
| 313 | details: O(t.details), | |
| 342 | details: _(t.details), | |
| 314 | 343 | } |
| 315 | 344 | } |
| 316 | function _(e, t, n) { | |
| 345 | function H(e, t, n) { | |
| 317 | 346 | const a = n?.displayName || "" |
| 318 | 347 | return { |
| 319 | 348 | id: e.messageId, |
| … | … | @@ -330,13 +359,13 @@ function _(e, t, n) { |
| 330 | 359 | userInfo: { |
| 331 | 360 | roomKey: e.roomId, |
| 332 | 361 | messageType: e.messageType, |
| 333 | isDmRoom: Q(t.roomType) === o.DirectMessage, | |
| 334 | isBroadcast: Q(t.roomType) === o.Broadcast, | |
| 362 | isDmRoom: Z(t.roomType) === o.DirectMessage, | |
| 363 | isBroadcast: Z(t.roomType) === o.Broadcast, | |
| 335 | 364 | profileName: a, |
| 336 | 365 | }, |
| 337 | 366 | } |
| 338 | 367 | } |
| 339 | function q(t) { | |
| 368 | function J(t) { | |
| 340 | 369 | if (!t) return null |
| 341 | 370 | const n = 1 === t.version |
| 342 | 371 | return { |
| … | … | @@ -345,28 +374,28 @@ function q(t) { |
| 345 | 374 | discoveryId: n ? e.encode(t.discoveryKey) : null, |
| 346 | 375 | createdAt: t.createdAt, |
| 347 | 376 | endedAt: t.endedAt, |
| 348 | members: t.members ? t.members.map(H) : [], | |
| 377 | members: t.members ? t.members.map(F) : [], | |
| 349 | 378 | } |
| 350 | 379 | } |
| 351 | function H(t) { | |
| 380 | function F(t) { | |
| 352 | 381 | return { |
| 353 | 382 | callId: e.encode(t.callKey), |
| 354 | 383 | memberId: e.encode(t.memberKey), |
| 355 | 384 | createdAt: t.createdAt, |
| 356 | devices: t.devices ? t.devices.map(J) : [], | |
| 385 | devices: t.devices ? t.devices.map(j) : [], | |
| 357 | 386 | } |
| 358 | 387 | } |
| 359 | function J(t) { | |
| 388 | function j(t) { | |
| 360 | 389 | return { |
| 361 | 390 | callId: e.encode(t.callKey), |
| 362 | 391 | memberId: e.encode(t.memberKey), |
| 363 | 392 | deviceId: e.encode(t.deviceKey), |
| 364 | 393 | swarmId: e.encode(t.swarmKey), |
| 365 | 394 | createdAt: t.createdAt, |
| 366 | streams: t.streams ? t.streams.map(F) : [], | |
| 395 | streams: t.streams ? t.streams.map(G) : [], | |
| 367 | 396 | } |
| 368 | 397 | } |
| 369 | function F(t) { | |
| 398 | function G(t) { | |
| 370 | 399 | return { |
| 371 | 400 | callId: e.encode(t.callKey), |
| 372 | 401 | streamId: e.encode(t.streamKey), |
| … | … | @@ -374,21 +403,21 @@ function F(t) { |
| 374 | 403 | createdAt: t.createdAt, |
| 375 | 404 | } |
| 376 | 405 | } |
| 377 | function j(e) { | |
| 406 | function U(e) { | |
| 378 | 407 | if (!e?.message?.display) return [] |
| 379 | 408 | let t = [] |
| 380 | 409 | return ( |
| 381 | 410 | e.message.display.mention && |
| 382 | ((e.message.display.mention = G(e.message.display.mention)), | |
| 411 | ((e.message.display.mention = W(e.message.display.mention)), | |
| 383 | 412 | (t = t.concat(e.message.display.mention))), |
| 384 | 413 | e.message.display.translation && |
| 385 | ((e.message.display.translation = U(e.message.display.translation)), | |
| 414 | ((e.message.display.translation = z(e.message.display.translation)), | |
| 386 | 415 | (t = t.concat(e.message.display.translation))), |
| 387 | 416 | e.message.display.httpLink && |
| 388 | ((e.message.display.httpLink = e.message.display.httpLink.map(z)), | |
| 417 | ((e.message.display.httpLink = e.message.display.httpLink.map(V)), | |
| 389 | 418 | (t = t.concat(e.message.display.httpLink))), |
| 390 | 419 | e.message.display.pearLink && |
| 391 | ((e.message.display.pearLink = e.message.display.pearLink.map(W)), | |
| 420 | ((e.message.display.pearLink = e.message.display.pearLink.map(Y)), | |
| 392 | 421 | (t = t.concat(e.message.display.pearLink))), |
| 393 | 422 | e.message.display.bold && |
| 394 | 423 | ((e.message.display.bold = e.message.display.bold.map((e) => ({ ...e, type: a.BOLD }))), |
| … | … | @@ -421,7 +450,7 @@ function j(e) { |
| 421 | 450 | t |
| 422 | 451 | ) |
| 423 | 452 | } |
| 424 | function G(t) { | |
| 453 | function W(t) { | |
| 425 | 454 | return Array.isArray(t) |
| 426 | 455 | ? t.map((t) => ({ |
| 427 | 456 | type: a.MENTION, |
| … | … | @@ -431,7 +460,7 @@ function G(t) { |
| 431 | 460 | })) |
| 432 | 461 | : [] |
| 433 | 462 | } |
| 434 | function U(e) { | |
| 463 | function z(e) { | |
| 435 | 464 | return Array.isArray(e) |
| 436 | 465 | ? e.map((e) => ({ |
| 437 | 466 | type: a.TRANSLATION, |
| … | … | @@ -442,10 +471,10 @@ function U(e) { |
| 442 | 471 | })) |
| 443 | 472 | : [] |
| 444 | 473 | } |
| 445 | function W(e) { | |
| 446 | return { ...z(e), type: a.PEAR_LINK } | |
| 474 | function Y(e) { | |
| 475 | return { ...V(e), type: a.PEAR_LINK } | |
| 447 | 476 | } |
| 448 | function z(e) { | |
| 477 | function V(e) { | |
| 449 | 478 | return ( |
| 450 | 479 | e?.preview?.file && (e.preview.file = p(e.preview.file)), |
| 451 | 480 | { |
| … | … | @@ -457,11 +486,11 @@ function z(e) { |
| 457 | 486 | } |
| 458 | 487 | ) |
| 459 | 488 | } |
| 460 | function Y(e) { | |
| 489 | function Q(e) { | |
| 461 | 490 | const a = e.isAdmin ? n.ADMIN : e.isModerator ? n.MODERATOR : n.PEER |
| 462 | 491 | return t(a) |
| 463 | 492 | } |
| 464 | function V(e) { | |
| 493 | function X(e) { | |
| 465 | 494 | switch (e) { |
| 466 | 495 | case o.Default: |
| 467 | 496 | return "0" |
| … | … | @@ -473,7 +502,7 @@ function V(e) { |
| 473 | 502 | throw new Error("Incompatible legacy room type:", e) |
| 474 | 503 | } |
| 475 | 504 | } |
| 476 | function Q(e) { | |
| 505 | function Z(e) { | |
| 477 | 506 | switch (e) { |
| 478 | 507 | case "0": |
| 479 | 508 | default: |
| … | … | @@ -485,29 +514,29 @@ function Q(e) { |
| 485 | 514 | } |
| 486 | 515 | } |
| 487 | 516 | module.exports = { |
| 488 | encodeReaction: k, | |
| 489 | encodeIdentityPairingRequest: E, | |
| 490 | encodePrivateRoomRecord: K, | |
| 491 | encodeDmRequest: R, | |
| 492 | encodeRoomRecord: h, | |
| 493 | encodeMemberRecord: M, | |
| 494 | encodeInvitationRecord: D, | |
| 495 | encodeChatMessage: b, | |
| 517 | encodeReaction: h, | |
| 518 | encodeIdentityPairingRequest: L, | |
| 519 | encodePrivateRoomRecord: A, | |
| 520 | encodeDmRequest: E, | |
| 521 | encodeRoomRecord: M, | |
| 522 | encodeMemberRecord: D, | |
| 523 | encodeInvitationRecord: T, | |
| 524 | encodeChatMessage: I, | |
| 496 | 525 | encodeImageFile: g, |
| 497 | 526 | encodeFile: p, |
| 498 | 527 | encodeFileEntry: y, |
| 499 | encodeReactionsDigest: v, | |
| 500 | encodeMyReactions: I, | |
| 501 | encodeDigest: T, | |
| 502 | encodeConfig: C, | |
| 503 | encodeUserSettings: N, | |
| 528 | encodeReactionsDigest: k, | |
| 529 | encodeMyReactions: K, | |
| 530 | encodeDigest: N, | |
| 531 | encodeConfig: S, | |
| 532 | encodeUserSettings: C, | |
| 504 | 533 | encodeMessageId: d, |
| 505 | 534 | encodeDevice: l, |
| 506 | encodeUser: x, | |
| 507 | encodeContactInfo: B, | |
| 508 | encodeReservation: S, | |
| 509 | encodeErrorRecord: P, | |
| 510 | encodeNotification: _, | |
| 511 | encodeHyperDHTSettings: w, | |
| 512 | encodeCallRecord: q, | |
| 535 | encodeUser: B, | |
| 536 | encodeContactInfo: P, | |
| 537 | encodeReservation: O, | |
| 538 | encodeErrorRecord: q, | |
| 539 | encodeNotification: H, | |
| 540 | encodeHyperDHTSettings: x, | |
| 541 | encodeCallRecord: J, | |
| 513 | 542 | } |
| … | … | @@ -6,7 +6,7 @@ const e = require("path"), |
| 6 | 6 | r = require("safety-catch"), |
| 7 | 7 | n = require("b4a"), |
| 8 | 8 | a = require("uncaughts"), |
| 9 | { Readable: c, Transform: h, pipeline: d } = require("streamx"), | |
| 9 | { Readable: c, Transform: d, pipeline: h } = require("streamx"), | |
| 10 | 10 | { Session: l, HeapSnapshot: u } = require("bare-inspector"), |
| 11 | 11 | m = require("bare-fs"), |
| 12 | 12 | p = require("process-top")(), |
| … | … | @@ -23,8 +23,8 @@ const e = require("path"), |
| 23 | 23 | { |
| 24 | 24 | encodeRoomRecord: k, |
| 25 | 25 | encodeConfig: _, |
| 26 | encodeDevice: w, | |
| 27 | encodeMemberRecord: v, | |
| 26 | encodeDevice: v, | |
| 27 | encodeMemberRecord: w, | |
| 28 | 28 | encodeInvitationRecord: R, |
| 29 | 29 | encodeFile: S, |
| 30 | 30 | encodeIdentityPairingRequest: M, |
| … | … | @@ -33,8 +33,8 @@ const e = require("path"), |
| 33 | 33 | encodeUser: E, |
| 34 | 34 | encodeContactInfo: K, |
| 35 | 35 | encodeImageFile: D, |
| 36 | encodeReservation: q, | |
| 37 | encodeFileEntry: P, | |
| 36 | encodeReservation: P, | |
| 37 | encodeFileEntry: q, | |
| 38 | 38 | encodeUserSettings: F, |
| 39 | 39 | encodeErrorRecord: x, |
| 40 | 40 | encodeNotification: A, |
| … | … | @@ -58,51 +58,52 @@ const e = require("path"), |
| 58 | 58 | X = y("@keet/label-type"), |
| 59 | 59 | $ = y("@keet/member-label-type"), |
| 60 | 60 | Q = y("@keet/system-settings-keys"), |
| 61 | { ContactRequestStatus: Z, RoomStatus: ee } = require("../../core/contract/identity/private.js"), | |
| 62 | { Config: te, CONFIG_INDEX_TO_KEY: se } = require("../../core/contract/config"), | |
| 63 | { Settings: ie } = require("../../core/contract/internal"), | |
| 61 | Z = y("@keet-private-id/user-settings-key"), | |
| 62 | { ContactRequestStatus: ee, RoomStatus: te } = require("../../core/contract/identity/private.js"), | |
| 63 | { Config: se, CONFIG_INDEX_TO_KEY: ie } = require("../../core/contract/config"), | |
| 64 | { Settings: oe } = require("../../core/contract/internal"), | |
| 64 | 65 | { |
| 65 | getChatMessages: oe, | |
| 66 | getChatMessage: re, | |
| 67 | getReactions: ne, | |
| 68 | isDMRead: ae, | |
| 69 | getCalls: ce, | |
| 66 | getChatMessages: re, | |
| 67 | getChatMessage: ne, | |
| 68 | getReactions: ae, | |
| 69 | isDMRead: ce, | |
| 70 | getCalls: de, | |
| 70 | 71 | } = require("./helpers.js"), |
| 71 | 72 | { MemberStatus: he } = require("../../core/contract/members/index.js"), |
| 72 | 73 | { |
| 73 | MemberRoles: de, | |
| 74 | DM_STATUSES: le, | |
| 75 | isValidPreferenceKey: ue, | |
| 76 | getPreferenceKeyName: me, | |
| 77 | CHAT_MESSAGE_REPORT_COUNT: pe, | |
| 78 | PREFERENCES: be, | |
| 79 | GENERIC_EVENTS: ge, | |
| 74 | MemberRoles: le, | |
| 75 | DM_STATUSES: ue, | |
| 76 | isValidPreferenceKey: me, | |
| 77 | getPreferenceKeyName: pe, | |
| 78 | CHAT_MESSAGE_REPORT_COUNT: be, | |
| 79 | PREFERENCES: ge, | |
| 80 | GENERIC_EVENTS: ye, | |
| 80 | 81 | } = require("@holepunchto/keet-core-api"), |
| 81 | { restoreAvatar: ye } = require("../../core/contract/avatars.js"), | |
| 82 | { getMemberForDeviceKey: fe } = require("../../core/contract/query.js"), | |
| 83 | ke = require("compact-encoding"), | |
| 84 | { DEBUG_FLAG_INDEX_BY_KEY: _e, DHT_SETTINGS: we } = require("../../core/debug/debugging.js"), | |
| 85 | ve = require("./inspector.js"), | |
| 86 | { FEATURES: Re } = require("../../../schema/versions"), | |
| 87 | Se = require("./calls.js"), | |
| 88 | Me = f("@local/keet-state"), | |
| 89 | Ie = 6e5, | |
| 90 | Ce = 2e4, | |
| 91 | Ee = "preferences_v1.json", | |
| 92 | Ke = "keet", | |
| 93 | De = "recent-rooms", | |
| 82 | { restoreAvatar: fe } = require("../../core/contract/avatars.js"), | |
| 83 | { getMemberForDeviceKey: ke } = require("../../core/contract/query.js"), | |
| 84 | _e = require("compact-encoding"), | |
| 85 | { DEBUG_FLAG_INDEX_BY_KEY: ve, DHT_SETTINGS: we } = require("../../core/debug/debugging.js"), | |
| 86 | Re = require("./inspector.js"), | |
| 87 | { FEATURES: Se } = require("../../../schema/versions"), | |
| 88 | Me = require("./calls.js"), | |
| 89 | Ie = f("@local/keet-state"), | |
| 90 | Ce = 6e5, | |
| 91 | Ee = 2e4, | |
| 92 | Ke = "preferences_v1.json", | |
| 93 | De = "keet", | |
| 94 | Pe = "recent-rooms", | |
| 94 | 95 | qe = "favorite-rooms", |
| 95 | Pe = "dm-rooms", | |
| 96 | Fe = "chat-changed", | |
| 97 | xe = "identity", | |
| 98 | Ae = "private-profile", | |
| 99 | Be = "identity-pairing-requests", | |
| 100 | Le = "migration-status", | |
| 101 | Ue = "room-preferences", | |
| 102 | Te = "unreads", | |
| 103 | Ne = "errors", | |
| 104 | Oe = "force-updates", | |
| 105 | je = { | |
| 96 | Fe = "dm-rooms", | |
| 97 | xe = "chat-changed", | |
| 98 | Ae = "identity", | |
| 99 | Be = "private-profile", | |
| 100 | Le = "identity-pairing-requests", | |
| 101 | Ue = "migration-status", | |
| 102 | Te = "room-preferences", | |
| 103 | Ne = "unreads", | |
| 104 | Oe = "errors", | |
| 105 | je = "force-updates", | |
| 106 | He = { | |
| 106 | 107 | "keet-core": require("../../../package.json").version, |
| 107 | 108 | autobase: require("autobase/package.json").version, |
| 108 | 109 | hypercore: require("hypercore/package.json").version, |
| … | … | @@ -112,7 +113,7 @@ const e = require("path"), |
| 112 | 113 | "keet-push": require("@holepunchto/keet-push/package.json").version, |
| 113 | 114 | corestore: require("corestore/package.json").version, |
| 114 | 115 | } |
| 115 | class He { | |
| 116 | class Ve { | |
| 116 | 117 | constructor(e, t) { |
| 117 | 118 | ;((this.api = e), (this.id = t), (this.subscriptions = [])) |
| 118 | 119 | } |
| … | … | @@ -161,7 +162,7 @@ class He { |
| 161 | 162 | ) |
| 162 | 163 | } |
| 163 | 164 | } |
| 164 | class Ve { | |
| 165 | class Ge { | |
| 165 | 166 | constructor(e) { |
| 166 | 167 | this.keet = e |
| 167 | 168 | } |
| … | … | @@ -234,13 +235,13 @@ class Ve { |
| 234 | 235 | } |
| 235 | 236 | } |
| 236 | 237 | } |
| 237 | class Ge { | |
| 238 | class ze { | |
| 238 | 239 | constructor(e, { onerror: t = r } = {}) { |
| 239 | 240 | ;((this.keet = e), |
| 240 | (this.context = new Ve(this.keet)), | |
| 241 | (this.context = new Ge(this.keet)), | |
| 241 | 242 | (this._onerror = t), |
| 242 | 243 | (this._subscriptions = new Map()), |
| 243 | (this._profileSubscriptions = new He(this, null, { isProfileSub: !0 })), | |
| 244 | (this._profileSubscriptions = new Ve(this, null, { isProfileSub: !0 })), | |
| 244 | 245 | this.keet.on("room-interrupted", this._handleRoomInterrupted.bind(this)), |
| 245 | 246 | this.keet.on("room-changed", this._handleRoomChanged.bind(this)), |
| 246 | 247 | this.keet.on("identity-changed", this._handleIdentityChanged.bind(this)), |
| … | … | @@ -421,6 +422,8 @@ class Ge { |
| 421 | 422 | ])), |
| 422 | 423 | (this.startDownload = this.context.create(this._startDownload.bind(this), ["files"])), |
| 423 | 424 | (this.cancelDownload = this.context.create(this._cancelDownload.bind(this), ["files"])), |
| 425 | (this.readFileStream = this.context.create(this._readFileStream.bind(this), ["files"])), | |
| 426 | (this.saveToDisk = this.context.create(this._saveToDisk.bind(this), ["files"])), | |
| 424 | 427 | (this.sendFile = this._timed(this._sendFile.bind(this))), |
| 425 | 428 | (this.sendFiles = this._timed(this._sendFiles.bind(this))), |
| 426 | 429 | (this.refreshFileLinks = this._timed(this._refreshFileLinks.bind(this))), |
| … | … | @@ -485,6 +488,7 @@ class Ge { |
| 485 | 488 | (this.updateConfig = this._timed(this._updateConfig.bind(this))), |
| 486 | 489 | (this.disableMembershipEvents = this._timed(this._disableMembershipEvents.bind(this))), |
| 487 | 490 | (this.enableMembershipEvents = this._timed(this._enableMembershipEvents.bind(this))), |
| 491 | (this.setRoomUnread = this._timed(this._setRoomUnread.bind(this))), | |
| 488 | 492 | (this.getLinkInfo = this._timed(this._getLinkInfo.bind(this))), |
| 489 | 493 | (this.lookupUsername = this._timed(this._lookupUsername.bind(this))), |
| 490 | 494 | (this.lookupUserByMemberId = this._timed(this._lookupUserByMemberId.bind(this))), |
| … | … | @@ -522,32 +526,32 @@ class Ge { |
| 522 | 526 | } |
| 523 | 527 | _disableMembershipEvents(e) { |
| 524 | 528 | return this.keet.dispatch(e, "@keet/update-system-settings", { |
| 525 | key: ie.IsMembershipEventsDisabled, | |
| 529 | key: oe.IsMembershipEventsDisabled, | |
| 526 | 530 | settings: { isMembershipEventsDisabled: !0 }, |
| 527 | 531 | }) |
| 528 | 532 | } |
| 529 | 533 | _enableMembershipEvents(e) { |
| 530 | 534 | return this.keet.dispatch(e, "@keet/update-system-settings", { |
| 531 | key: ie.IsMembershipEventsDisabled, | |
| 535 | key: oe.IsMembershipEventsDisabled, | |
| 532 | 536 | settings: { isMembershipEventsDisabled: !1 }, |
| 533 | 537 | }) |
| 534 | 538 | } |
| 535 | _addKeetSubscription(e = Ke, t) { | |
| 539 | _addKeetSubscription(e = De, t) { | |
| 536 | 540 | return this._addRoomSubscription(e, t) |
| 537 | 541 | } |
| 538 | 542 | _addRoomSubscription(e, t, { isProfileSub: s = !1, _isRoomSub: i = !0 } = {}) { |
| 539 | 543 | if (null === e && s) return this._profileSubscriptions.add(t) |
| 540 | 544 | let o = this._subscriptions.get(e) |
| 541 | return (o || ((o = new He(this, e)), this._subscriptions.set(e, o)), o.add(t)) | |
| 545 | return (o || ((o = new Ve(this, e)), this._subscriptions.set(e, o)), o.add(t)) | |
| 542 | 546 | } |
| 543 | 547 | _refreshSubscriptionsById(e) { |
| 544 | 548 | const t = |
| 545 | e === this.keet.privateProfile?.id ? this._subscriptions.get(Ae) : this._subscriptions.get(e) | |
| 549 | e === this.keet.privateProfile?.id ? this._subscriptions.get(Be) : this._subscriptions.get(e) | |
| 546 | 550 | t && t.refresh() |
| 547 | 551 | } |
| 548 | 552 | _handleIdentityPairingRequest(e) { |
| 549 | 553 | ;(this._identityPairingRequestsByDeviceId.set(s.encode(e.deviceKey), e), |
| 550 | this._refreshSubscriptionsById(Be)) | |
| 554 | this._refreshSubscriptionsById(Le)) | |
| 551 | 555 | } |
| 552 | 556 | _handleRoomInterrupted(e, { unsupportedABI: t, digest: s }) { |
| 553 | 557 | const i = this._subscriptions.get(e) |
| … | … | @@ -565,19 +569,19 @@ class Ge { |
| 565 | 569 | } |
| 566 | 570 | } |
| 567 | 571 | _handleRecentRoomsChanged(...e) { |
| 568 | const t = this._subscriptions.get(De) | |
| 572 | const t = this._subscriptions.get(Pe) | |
| 569 | 573 | t && t.push(e) |
| 570 | 574 | } |
| 571 | 575 | _handleDmRoomsChanged() { |
| 572 | const e = this._subscriptions.get(Pe) | |
| 576 | const e = this._subscriptions.get(Fe) | |
| 573 | 577 | e && e.refresh() |
| 574 | 578 | } |
| 575 | 579 | _handleRoomPreferencesChanged(...e) { |
| 576 | const t = this._subscriptions.get(Ue) | |
| 580 | const t = this._subscriptions.get(Te) | |
| 577 | 581 | t && t.push(e) |
| 578 | 582 | } |
| 579 | 583 | _handleUnreadAnchorsChanged() { |
| 580 | const e = this._subscriptions.get(Te) | |
| 584 | const e = this._subscriptions.get(Ne) | |
| 581 | 585 | e && e.refresh() |
| 582 | 586 | } |
| 583 | 587 | _handleRoomSentMessageLengthChanged(e) { |
| … | … | @@ -585,12 +589,12 @@ class Ge { |
| 585 | 589 | t && t.refresh({ name: "room-info" }) |
| 586 | 590 | } |
| 587 | 591 | _handleIdentityChanged() { |
| 588 | this._refreshSubscriptionsById(xe) | |
| 592 | this._refreshSubscriptionsById(Ae) | |
| 589 | 593 | } |
| 590 | 594 | async _handleChatChanged(...e) { |
| 591 | 595 | try { |
| 592 | 596 | this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) |
| 593 | const t = this._subscriptions.get(Fe) | |
| 597 | const t = this._subscriptions.get(xe) | |
| 594 | 598 | if (!t) return |
| 595 | 599 | const [s, i] = e |
| 596 | 600 | if (s === this.keet.privateProfile.id) return |
| … | … | @@ -600,15 +604,15 @@ class Ge { |
| 600 | 604 | } |
| 601 | 605 | } |
| 602 | 606 | _handleMigrationStatus(e) { |
| 603 | const t = this._subscriptions.get(Le) | |
| 607 | const t = this._subscriptions.get(Ue) | |
| 604 | 608 | t && t.push(e) |
| 605 | 609 | } |
| 606 | 610 | _handleKeetError(e) { |
| 607 | const t = this._subscriptions.get(Ne) | |
| 611 | const t = this._subscriptions.get(Oe) | |
| 608 | 612 | t && t.push(e) |
| 609 | 613 | } |
| 610 | 614 | _handleForceUpdate() { |
| 611 | const e = this._subscriptions.get(Oe) | |
| 615 | const e = this._subscriptions.get(je) | |
| 612 | 616 | e && e.refresh() |
| 613 | 617 | } |
| 614 | 618 | _handleVerifiedRoomsChanged() { |
| … | … | @@ -623,7 +627,7 @@ class Ge { |
| 623 | 627 | t && t.push(e) |
| 624 | 628 | } |
| 625 | 629 | getVersion() { |
| 626 | return { buildType: this.keet.buildType, abi: this.keet.abi, modules: je } | |
| 630 | return { buildType: this.keet.buildType, abi: this.keet.abi, modules: He } | |
| 627 | 631 | } |
| 628 | 632 | async _getSystemDigest({ db: e }) { |
| 629 | 633 | return await e.get("@keet/system-digest") |
| … | … | @@ -649,7 +653,7 @@ class Ge { |
| 649 | 653 | }) |
| 650 | 654 | } |
| 651 | 655 | subscribeForceUpdates() { |
| 652 | return this._addKeetSubscription(Oe, { | |
| 656 | return this._addKeetSubscription(je, { | |
| 653 | 657 | query: () => ({ showBanner: this.keet.shouldForceUpdate() }), |
| 654 | 658 | }) |
| 655 | 659 | } |
| … | … | @@ -703,8 +707,8 @@ class Ge { |
| 703 | 707 | i.get("@keet-private-id/settings"), |
| 704 | 708 | ]), |
| 705 | 709 | a = [] |
| 706 | for (const e of r) e.status.isActive && a.push({ ...w(e), confirmed: !0 }) | |
| 707 | const c = v(o.selfMember, o.selfMember.key) | |
| 710 | for (const e of r) e.status.isActive && a.push({ ...v(e), confirmed: !0 }) | |
| 711 | const c = w(o.selfMember, o.selfMember.key) | |
| 708 | 712 | return ( |
| 709 | 713 | (c.hasDiscoveryKey = !!o.identity.discoveryCoreKey), |
| 710 | 714 | (c.anonymous = !1), |
| … | … | @@ -715,6 +719,7 @@ class Ge { |
| 715 | 719 | (c.local = { deviceId: s.encode(t.deviceKey) }), |
| 716 | 720 | (c.settings = F(n)), |
| 717 | 721 | (c.isLoggedOut = o.selfDevice && !o.selfDevice.status.isActive), |
| 722 | (c.version = o?.digest.abi.version), | |
| 718 | 723 | c |
| 719 | 724 | ) |
| 720 | 725 | } |
| … | … | @@ -722,7 +727,7 @@ class Ge { |
| 722 | 727 | return e.dispatch("@keet/remove-device", { key: s.decode(t) }) |
| 723 | 728 | } |
| 724 | 729 | subscribeIdentity() { |
| 725 | return this._addKeetSubscription(xe, { query: () => this.getIdentity() }) | |
| 730 | return this._addKeetSubscription(Ae, { query: () => this.getIdentity() }) | |
| 726 | 731 | } |
| 727 | 732 | async _restoreIdentity(e, t = {}) { |
| 728 | 733 | await this.keet.restoreIdentity(e, t) |
| … | … | @@ -763,7 +768,7 @@ class Ge { |
| 763 | 768 | return (this.keet.internalReleaseRoom(e), 0 === t.length ? null : M(t[0])) |
| 764 | 769 | } |
| 765 | 770 | subscribeIdentityPairingRequests(...e) { |
| 766 | return this._addKeetSubscription(xe, { query: () => this.getIdentityPairingRequest() }) | |
| 771 | return this._addKeetSubscription(Ae, { query: () => this.getIdentityPairingRequest() }) | |
| 767 | 772 | } |
| 768 | 773 | async _updateIdentityProfile({ displayName: e, avatar: t }) { |
| 769 | 774 | await this.updateMember(e, t) |
| … | … | @@ -780,6 +785,14 @@ class Ge { |
| 780 | 785 | async _updateUserSettings(e, t) { |
| 781 | 786 | this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) |
| 782 | 787 | const s = { [e]: t } |
| 788 | if ( | |
| 789 | e === Z.stripAttachmentMetadata && | |
| 790 | !(await this.keet.internalFeatureSupported( | |
| 791 | this.keet.privateProfile.id, | |
| 792 | Se.STRIP_ATTACHMENT_METADATA, | |
| 793 | )) | |
| 794 | ) | |
| 795 | throw new Error("Stripping attachment metadata not supported") | |
| 783 | 796 | return this.keet.privateProfile.dispatch("@keet-private-id/update-settings", { |
| 784 | 797 | key: e, |
| 785 | 798 | settings: z(s), |
| … | … | @@ -800,7 +813,7 @@ class Ge { |
| 800 | 813 | } |
| 801 | 814 | } |
| 802 | 815 | async _createRoom(e = {}) { |
| 803 | const t = await this.keet.createRoom(tt(e)) | |
| 816 | const t = await this.keet.createRoom(st(e)) | |
| 804 | 817 | return s.encode(t) |
| 805 | 818 | } |
| 806 | 819 | _pairRoom(...e) { |
| … | … | @@ -822,10 +835,10 @@ class Ge { |
| 822 | 835 | } |
| 823 | 836 | } |
| 824 | 837 | subscribePendingRooms() { |
| 825 | return this._addKeetSubscription(xe, { query: () => this.getPendingRooms() }) | |
| 838 | return this._addKeetSubscription(Ae, { query: () => this.getPendingRooms() }) | |
| 826 | 839 | } |
| 827 | 840 | subscribePushNotificationChanges() { |
| 828 | return this._addKeetSubscription(Ue, { | |
| 841 | return this._addKeetSubscription(Te, { | |
| 829 | 842 | map: function (e) { |
| 830 | 843 | const [t, o, r] = e, |
| 831 | 844 | n = r || i.discoveryKey(o) |
| … | … | @@ -869,11 +882,8 @@ class Ge { |
| 869 | 882 | return e.linearizer.size |
| 870 | 883 | } |
| 871 | 884 | async _resyncPrivateProfile() { |
| 872 | this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) | |
| 873 | const e = [] | |
| 874 | for await (const t of this.keet.privateProfile.db.find("@keet-private-id/rooms")) | |
| 875 | (await this.keet.local.get("@local/rooms", { roomKey: t.roomKey })) || e.push(t) | |
| 876 | for (const t of e) this.keet.tasks.joinRoomKeys(t.roomKey, { keys: t }).runBackground() | |
| 885 | ;(this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()), | |
| 886 | await this.keet.internalResyncPrivateProfile()) | |
| 877 | 887 | } |
| 878 | 888 | bookmark(...e) { |
| 879 | 889 | throw (console.log("bookmark", ...e), new Error("Missing required method: bookmark")) |
| … | … | @@ -910,8 +920,8 @@ class Ge { |
| 910 | 920 | const o = s.decode(t), |
| 911 | 921 | r = await e.get("@local/rooms", { roomKey: o }) |
| 912 | 922 | if (!r) return null |
| 913 | let n = v(r.lastMember) | |
| 914 | const [a, c, h] = await Promise.all([ | |
| 923 | let n = w(r.lastMember) | |
| 924 | const [a, c, d] = await Promise.all([ | |
| 915 | 925 | e.get("@local/room-preferences", { roomKey: r.roomKey }), |
| 916 | 926 | r.lastMessage && !n |
| 917 | 927 | ? e.get("@local/devices", { device: { key: r.lastMessage.oplog.key } }) |
| … | … | @@ -924,12 +934,17 @@ class Ge { |
| 924 | 934 | (n = { id: s.encode(t.key), memberId: s.encode(t.key), displayName: t.profile.displayName }) |
| 925 | 935 | } |
| 926 | 936 | if (r.lastMessage) { |
| 927 | const e = ae(r, r.lastMessage.id) | |
| 937 | const e = ce(r, r.lastMessage.id) | |
| 928 | 938 | r.lastMessage.read = e |
| 929 | 939 | } |
| 930 | const d = r.selfDevice ? i.discoveryKey(r.selfDevice.key) : null, | |
| 931 | l = d ? await this.keet.storage.getInfo(d, { hints: !0, auth: !1, head: !1 }) : null, | |
| 932 | u = k({ roomInfo: r, preferences: a, lastMessageMember: n, storageInfo: l, fileStats: h }) | |
| 940 | if (r.lastMessage?.event?.memberRemoved) { | |
| 941 | const t = await e.get("@local/members", { key: r.lastMessage.event.memberRemoved.memberKey }), | |
| 942 | s = t?.profile?.displayName | |
| 943 | r.lastMessage.event.memberRemoved.displayName = s | |
| 944 | } | |
| 945 | const h = r.selfDevice ? i.discoveryKey(r.selfDevice.key) : null, | |
| 946 | l = h ? await this.keet.storage.getInfo(h, { hints: !0, auth: !1, head: !1 }) : null, | |
| 947 | u = k({ roomInfo: r, preferences: a, lastMessageMember: n, storageInfo: l, fileStats: d }) | |
| 933 | 948 | return ((u.isVerified = this.keet.isRoomVerified(t)), u) |
| 934 | 949 | } |
| 935 | 950 | async _searchRooms({ local: e }) { |
| … | … | @@ -956,7 +971,7 @@ class Ge { |
| 956 | 971 | return e.get("@local/rooms", { discoveryKey: s.decode(t) }) |
| 957 | 972 | } |
| 958 | 973 | subscribeRecentRooms(e) { |
| 959 | return this._addKeetSubscription(De, { | |
| 974 | return this._addKeetSubscription(Pe, { | |
| 960 | 975 | map: function (e) { |
| 961 | 976 | const [t, s, i] = e |
| 962 | 977 | return { type: t, timestamp: s, roomId: i } |
| … | … | @@ -977,13 +992,13 @@ class Ge { |
| 977 | 992 | return this._addRoomSubscription(e, { query: () => this.getRoomInfo(e, t), name: "room-info" }) |
| 978 | 993 | } |
| 979 | 994 | subscribeUnreadActivity(e = {}) { |
| 980 | return this._addKeetSubscription(Fe, { | |
| 995 | return this._addKeetSubscription(xe, { | |
| 981 | 996 | map: ({ roomId: t, index: s }) => |
| 982 | 997 | t ? (e.includeLength || e.includeIndex ? { roomId: t, index: s } : { roomId: t }) : null, |
| 983 | 998 | }) |
| 984 | 999 | } |
| 985 | 1000 | subscribeErrors() { |
| 986 | return this._addKeetSubscription(Ne, { map: (e) => x(e) }) | |
| 1001 | return this._addKeetSubscription(Oe, { map: (e) => x(e) }) | |
| 987 | 1002 | } |
| 988 | 1003 | subscribeNotifications() { |
| 989 | 1004 | const e = this.subscribeUnreadActivity({ includeIndex: !0 }), |
| … | … | @@ -1008,11 +1023,11 @@ class Ge { |
| 1008 | 1023 | if (i !== this._callRingingRoomId) continue |
| 1009 | 1024 | const e = await this.getChatMessage(i, o) |
| 1010 | 1025 | if (this.keet.closing) return |
| 1011 | e?.event?.type === ge.CALL_HANGUP && (yield { type: ge.CALL_HANGUP }) | |
| 1026 | e?.event?.type === ye.CALL_HANGUP && (yield { type: ye.CALL_HANGUP }) | |
| 1012 | 1027 | } |
| 1013 | 1028 | if (this._processingNotifications) continue |
| 1014 | 1029 | if (this.keet.backendAPI.api.call.callIsActive) continue |
| 1015 | const e = await this.getRoomPreferences(i, be.IS_FULLY_MUTED) | |
| 1030 | const e = await this.getRoomPreferences(i, ge.IS_FULLY_MUTED) | |
| 1016 | 1031 | if (this.keet.closing) return |
| 1017 | 1032 | if (e || this._processingNotifications) continue |
| 1018 | 1033 | const [r, n, a] = await Promise.all([ |
| … | … | @@ -1021,23 +1036,23 @@ class Ge { |
| 1021 | 1036 | this.keet.local.get("@local/identity"), |
| 1022 | 1037 | ]) |
| 1023 | 1038 | if (this.keet.closing) return |
| 1024 | if (!n || Math.abs(Date.now() - n.timestamp) > Ie) continue | |
| 1039 | if (!n || Math.abs(Date.now() - n.timestamp) > Ce) continue | |
| 1025 | 1040 | const c = await this.getBlockedMembers() |
| 1026 | 1041 | if (this.keet.closing) return |
| 1027 | 1042 | if (c.some((e) => e.memberId === n.memberId) || this._processingNotifications) continue |
| 1028 | 1043 | if (a && s.encode(a.publicKey) === n.memberId) continue |
| 1029 | const h = `${n.id.deviceId}/b${n.id.seq}`, | |
| 1030 | d = t(n), | |
| 1044 | const d = `${n.id.deviceId}/b${n.id.seq}`, | |
| 1045 | h = t(n), | |
| 1031 | 1046 | l = (n.files.length > 0 && n.files[0].metadata?.mimetype) || "", |
| 1032 | 1047 | u = await this.getMember(i, n.memberId) |
| 1033 | 1048 | if (this.keet.closing) return |
| 1034 | 1049 | const m = n.chat?.text || "", |
| 1035 | p = et(r.roomType) === W.DirectMessage | |
| 1036 | if (!this._processingNotifications && (m || d)) { | |
| 1037 | if (p && "call" === d) { | |
| 1038 | if (Math.abs(Date.now() - n.timestamp) > Ce) continue | |
| 1050 | p = tt(r.roomType) === W.DirectMessage | |
| 1051 | if (!this._processingNotifications && (m || h)) { | |
| 1052 | if (p && "call" === h) { | |
| 1053 | if (Math.abs(Date.now() - n.timestamp) > Ee) continue | |
| 1039 | 1054 | if (!(await this.getActiveCalls(i)).length) continue |
| 1040 | yield { type: ge.CALL_STARTED } | |
| 1055 | yield { type: ye.CALL_STARTED } | |
| 1041 | 1056 | } |
| 1042 | 1057 | const e = await this.getRoomInfo(i) |
| 1043 | 1058 | if (this.keet.closing) return |
| … | … | @@ -1045,12 +1060,12 @@ class Ge { |
| 1045 | 1060 | s = n.message?.generic?.locationShared |
| 1046 | 1061 | yield A( |
| 1047 | 1062 | { |
| 1048 | messageId: h, | |
| 1063 | messageId: d, | |
| 1049 | 1064 | roomId: i, |
| 1050 | 1065 | avatar: t, |
| 1051 | 1066 | location: s, |
| 1052 | 1067 | messageText: m, |
| 1053 | messageType: d, | |
| 1068 | messageType: h, | |
| 1054 | 1069 | fileType: l, |
| 1055 | 1070 | }, |
| 1056 | 1071 | r, |
| … | … | @@ -1059,7 +1074,7 @@ class Ge { |
| 1059 | 1074 | } |
| 1060 | 1075 | } |
| 1061 | 1076 | function t(e) { |
| 1062 | return e.event?.type === ge.CALL_STARTED | |
| 1077 | return e.event?.type === ye.CALL_STARTED | |
| 1063 | 1078 | ? "call" |
| 1064 | 1079 | : e.files?.length > 0 |
| 1065 | 1080 | ? "file" |
| … | … | @@ -1068,8 +1083,19 @@ class Ge { |
| 1068 | 1083 | : "" |
| 1069 | 1084 | } |
| 1070 | 1085 | } |
| 1071 | setRoomUnread(...e) { | |
| 1072 | throw (console.log("setRoomUnread", ...e), new Error("Missing required method: setRoomUnread")) | |
| 1086 | async _setRoomUnread(e, t = !0) { | |
| 1087 | this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) | |
| 1088 | const { privateProfileKey: i } = await this.keet.local.get("@local/identity"), | |
| 1089 | o = await this.keet.local.get("@local/rooms", { roomKey: i }) | |
| 1090 | if (!o) return | |
| 1091 | const { isFeatureSupported: r, FEATURES: n } = this.keet.versions | |
| 1092 | if (!r(o.digest.abi.version, n.ROOM_MARK_UNREAD)) | |
| 1093 | throw new Error("Manual unread is not supported") | |
| 1094 | await this.keet.privateProfile.dispatch("@keet-private-id/update-room-status", { | |
| 1095 | roomKey: s.decode(e), | |
| 1096 | key: te.IsUnread, | |
| 1097 | status: { isUnread: t }, | |
| 1098 | }) | |
| 1073 | 1099 | } |
| 1074 | 1100 | bumpRoomPriority(...e) { |
| 1075 | 1101 | throw ( |
| … | … | @@ -1085,13 +1111,13 @@ class Ge { |
| 1085 | 1111 | } |
| 1086 | 1112 | async _getDevice({ db: e }, t) { |
| 1087 | 1113 | const s = await e.findOne("@keet/devices", O({ gte: t, lte: t })) |
| 1088 | return s ? w(s) : null | |
| 1114 | return s ? v(s) : null | |
| 1089 | 1115 | } |
| 1090 | 1116 | async _getDevices({ db: e }, t) { |
| 1091 | return (await e.find("@keet/devices", O(t)).toArray()).map((e) => w(e)) | |
| 1117 | return (await e.find("@keet/devices", O(t)).toArray()).map((e) => v(e)) | |
| 1092 | 1118 | } |
| 1093 | 1119 | async moveIndexer(e, t, i) { |
| 1094 | if (!(await this.keet.internalFeatureSupported(e, Re.MOVE_INDEXER))) | |
| 1120 | if (!(await this.keet.internalFeatureSupported(e, Se.MOVE_INDEXER))) | |
| 1095 | 1121 | throw new Error("Move indexer not supported") |
| 1096 | 1122 | const o = s.decode(t), |
| 1097 | 1123 | r = s.decode(i) |
| … | … | @@ -1136,15 +1162,15 @@ class Ge { |
| 1136 | 1162 | return !!(await e.get("@keet/muted-members", { key: i })) |
| 1137 | 1163 | } |
| 1138 | 1164 | async _getMemberByDeviceId({ myKey: e, snapshot: t, blobsSnapshot: i }, o) { |
| 1139 | const r = await fe(t, s.decode(o)) | |
| 1140 | return r ? (await ye(i, r.profile.avatar), v(r, e)) : null | |
| 1165 | const r = await ke(t, s.decode(o)) | |
| 1166 | return r ? (await fe(i, r.profile.avatar), w(r, e)) : null | |
| 1141 | 1167 | } |
| 1142 | 1168 | async _getMemberBySwarmId({ myKey: e, snapshot: t, blobsSnapshot: i }, o) { |
| 1143 | 1169 | const r = s.decode(o), |
| 1144 | 1170 | n = await t.get("@keet/devices-by-swarm-key", { profile: { swarmKey: r } }) |
| 1145 | 1171 | if (!n) return null |
| 1146 | const a = await fe(t, n.key) | |
| 1147 | return a ? (await ye(i, a.profile.avatar), v(a, e)) : null | |
| 1172 | const a = await ke(t, n.key) | |
| 1173 | return a ? (await fe(i, a.profile.avatar), w(a, e)) : null | |
| 1148 | 1174 | } |
| 1149 | 1175 | async _getMemberCount({ db: e }) { |
| 1150 | 1176 | const t = await e.get("@keet/threads", { id: 0 }) |
| … | … | @@ -1154,7 +1180,7 @@ class Ge { |
| 1154 | 1180 | const i = [], |
| 1155 | 1181 | o = s.decode(t), |
| 1156 | 1182 | r = { gte: { memberKey: o }, lte: { memberKey: o } } |
| 1157 | for await (const t of e.find("@keet/devices-by-member-key", r)) i.push(w(t)) | |
| 1183 | for await (const t of e.find("@keet/devices-by-member-key", r)) i.push(v(t)) | |
| 1158 | 1184 | return i |
| 1159 | 1185 | } |
| 1160 | 1186 | getCurrentDeviceId(e) { |
| … | … | @@ -1168,12 +1194,12 @@ class Ge { |
| 1168 | 1194 | async _getMember({ roomId: e, myKey: t, base: i, snapshot: o, blobsSnapshot: r }, n, a = {}) { |
| 1169 | 1195 | const c = s.decode(n) |
| 1170 | 1196 | if (!0 === a.swarmId) return this.getMemberBySwarmId(e, n) |
| 1171 | const h = await o.get("@keet/members", { key: c }) | |
| 1172 | return h ? (await ye(r, h.profile.avatar), v(h, t)) : null | |
| 1197 | const d = await o.get("@keet/members", { key: c }) | |
| 1198 | return d ? (await fe(r, d.profile.avatar), w(d, t)) : null | |
| 1173 | 1199 | } |
| 1174 | 1200 | async _getActiveMember({ myKey: e, snapshot: t, blobsSnapshot: i }, o) { |
| 1175 | 1201 | const r = await t.get("@keet/active-members", { key: s.decode(o) }) |
| 1176 | return r ? (await ye(i, r.profile.avatar), v(r, e)) : null | |
| 1202 | return r ? (await fe(i, r.profile.avatar), w(r, e)) : null | |
| 1177 | 1203 | } |
| 1178 | 1204 | async _removeMember(e, t) { |
| 1179 | 1205 | const i = s.decode(e), |
| … | … | @@ -1186,19 +1212,19 @@ class Ge { |
| 1186 | 1212 | } |
| 1187 | 1213 | async _getMembers({ myKey: e, snapshot: t, blobsSnapshot: s }, i = {}) { |
| 1188 | 1214 | const o = await t.find("@keet/members", O(i)).toArray() |
| 1189 | return Promise.all(o.map(async (t) => (await ye(s, t.profile.avatar), v(t, e)))) | |
| 1215 | return Promise.all(o.map(async (t) => (await fe(s, t.profile.avatar), w(t, e)))) | |
| 1190 | 1216 | } |
| 1191 | 1217 | async _getActiveMembers({ myKey: e, snapshot: t, blobsSnapshot: s }, i = {}) { |
| 1192 | 1218 | const o = await t.find("@keet/active-members", O(i)).toArray() |
| 1193 | return Promise.all(o.map(async (t) => (await ye(s, t.profile.avatar), v(t, e)))) | |
| 1219 | return Promise.all(o.map(async (t) => (await fe(s, t.profile.avatar), w(t, e)))) | |
| 1194 | 1220 | } |
| 1195 | 1221 | async _getModerators({ myKey: e, snapshot: t, blobsSnapshot: s }, i = {}) { |
| 1196 | 1222 | const o = await t.find("@keet/moderators", O(i)).toArray() |
| 1197 | return Promise.all(o.map(async (t) => (await ye(s, t.profile.avatar), v(t, e)))) | |
| 1223 | return Promise.all(o.map(async (t) => (await fe(s, t.profile.avatar), w(t, e)))) | |
| 1198 | 1224 | } |
| 1199 | 1225 | async _waitUntilJoined({ roomKey: e, local: t }) { |
| 1200 | 1226 | const s = await t.get("@local/rooms", { roomKey: e }) |
| 1201 | return s ? v(s.selfMember) : null | |
| 1227 | return s ? w(s.selfMember) : null | |
| 1202 | 1228 | } |
| 1203 | 1229 | getMemberForDevice(...e) { |
| 1204 | 1230 | throw ( |
| … | … | @@ -1230,14 +1256,14 @@ class Ge { |
| 1230 | 1256 | _changeMemberRole(e, { memberId: t, role: i }) { |
| 1231 | 1257 | return this.keet.dispatch(e, "@keet/change-member-role", { |
| 1232 | 1258 | key: s.decode(t), |
| 1233 | isAdmin: i === de.ADMIN, | |
| 1234 | isModerator: i === de.ADMIN || i === de.MODERATOR, | |
| 1259 | isAdmin: i === le.ADMIN, | |
| 1260 | isModerator: i === le.ADMIN || i === le.MODERATOR, | |
| 1235 | 1261 | }) |
| 1236 | 1262 | } |
| 1237 | 1263 | async _getSearchMembers({ myKey: e, db: t, blobsSnapshot: s }, i, { limit: o = 50 } = {}) { |
| 1238 | 1264 | i = i.toLowerCase() |
| 1239 | 1265 | const r = await t.find("@keet/members-by-member-name", { gte: { name: i }, limit: o }).toArray() |
| 1240 | return (await Promise.all(r.map(async (t) => (await ye(s, t.profile.avatar), v(t, e))))).filter( | |
| 1266 | return (await Promise.all(r.map(async (t) => (await fe(s, t.profile.avatar), w(t, e))))).filter( | |
| 1241 | 1267 | (e) => e.name.startsWith(i), |
| 1242 | 1268 | ) |
| 1243 | 1269 | } |
| … | … | @@ -1266,7 +1292,7 @@ class Ge { |
| 1266 | 1292 | return K(i, r, n, a) |
| 1267 | 1293 | } |
| 1268 | 1294 | subscribeContactInfo(e) { |
| 1269 | return this._addRoomSubscription(Pe, { | |
| 1295 | return this._addRoomSubscription(Fe, { | |
| 1270 | 1296 | query: async () => { |
| 1271 | 1297 | const t = this.keet.local.snapshot() |
| 1272 | 1298 | try { |
| … | … | @@ -1296,7 +1322,7 @@ class Ge { |
| 1296 | 1322 | })) |
| 1297 | 1323 | } |
| 1298 | 1324 | subscribeBlockedMembers() { |
| 1299 | return this._addRoomSubscription(Ae, { query: () => this.getBlockedMembers() }) | |
| 1325 | return this._addRoomSubscription(Be, { query: () => this.getBlockedMembers() }) | |
| 1300 | 1326 | } |
| 1301 | 1327 | getConnectedMembers(...e) { |
| 1302 | 1328 | throw ( |
| … | … | @@ -1308,41 +1334,41 @@ class Ge { |
| 1308 | 1334 | return (console.log("subscribeConnectedMembers", ...e), new c()) |
| 1309 | 1335 | } |
| 1310 | 1336 | async _updateConfig(e, t, s) { |
| 1311 | const i = Ze(t) | |
| 1337 | const i = et(t) | |
| 1312 | 1338 | if (0 !== i) { |
| 1313 | const t = { [se[i - 1]]: s } | |
| 1339 | const t = { [ie[i - 1]]: s } | |
| 1314 | 1340 | await this.keet.dispatch(e, "@keet/update-room-config", { key: i, config: H(t) }) |
| 1315 | 1341 | } else if ("roomType" === t) { |
| 1316 | const t = et(s) | |
| 1342 | const t = tt(s) | |
| 1317 | 1343 | if (0 === t) throw new Error("Invalid room type") |
| 1318 | 1344 | await this.keet.dispatch(e, "@keet/update-system-settings", { |
| 1319 | key: ie.RoomType, | |
| 1345 | key: oe.RoomType, | |
| 1320 | 1346 | settings: { roomType: t }, |
| 1321 | 1347 | }) |
| 1322 | 1348 | } else { |
| 1323 | 1349 | if ("canCall" !== t) throw new Error("Invalid config key") |
| 1324 | 1350 | await this.keet.dispatch(e, "@keet/update-system-settings", { |
| 1325 | key: ie.IsCallingDisabled, | |
| 1351 | key: oe.IsCallingDisabled, | |
| 1326 | 1352 | settings: { isCallingDisabled: "false" === s }, |
| 1327 | 1353 | }) |
| 1328 | 1354 | } |
| 1329 | 1355 | } |
| 1330 | 1356 | async _updateRoomPreferences({ profile: e }, t, i, o) { |
| 1331 | if (!ue(i)) throw new Error(`invalid preference key: ${i}`) | |
| 1357 | if (!me(i)) throw new Error(`invalid preference key: ${i}`) | |
| 1332 | 1358 | const r = s.decode(t) |
| 1333 | 1359 | await this.keet.dispatch(e.id, "@keet-private-id/update-room-status", { |
| 1334 | 1360 | roomKey: r, |
| 1335 | key: Qe(i), | |
| 1336 | status: { [me(i)]: o }, | |
| 1361 | key: Ze(i), | |
| 1362 | status: { [pe(i)]: o }, | |
| 1337 | 1363 | }) |
| 1338 | 1364 | } |
| 1339 | 1365 | async _updateRoomSettings(e, t, i) { |
| 1340 | 1366 | if ( |
| 1341 | 1367 | t === Q.IsAttachmentsDisabled && |
| 1342 | !(await this.keet.internalFeatureSupported(e, Re.DISABLE_FILE_ATTACHMENTS)) | |
| 1368 | !(await this.keet.internalFeatureSupported(e, Se.DISABLE_FILE_ATTACHMENTS)) | |
| 1343 | 1369 | ) |
| 1344 | 1370 | throw new Error("Disabling file attachments not supported") |
| 1345 | if (t === Q.IsLinksDisabled && !(await this.keet.internalFeatureSupported(e, Re.DISABLE_LINKS))) | |
| 1371 | if (t === Q.IsLinksDisabled && !(await this.keet.internalFeatureSupported(e, Se.DISABLE_LINKS))) | |
| 1346 | 1372 | throw new Error("Disabling links not supported") |
| 1347 | 1373 | const o = s.decode(e) |
| 1348 | 1374 | return this.keet.dispatch(o, "@keet/update-system-settings", { key: t, settings: i }) |
| … | … | @@ -1361,7 +1387,7 @@ class Ge { |
| 1361 | 1387 | r = await e.get("@local/room-preferences", { roomKey: o }) |
| 1362 | 1388 | if (!r) return null |
| 1363 | 1389 | const { status: n } = r |
| 1364 | return ue(i) ? (i ? n[me(i)] : n) : null | |
| 1390 | return me(i) ? (i ? n[pe(i)] : n) : null | |
| 1365 | 1391 | } |
| 1366 | 1392 | async _getConfig({ roomKey: e, local: t }, s) { |
| 1367 | 1393 | const i = await t.get("@local/rooms", { roomKey: e }) |
| … | … | @@ -1378,13 +1404,13 @@ class Ge { |
| 1378 | 1404 | r = await this.keet.local.get("@local/rooms", { roomKey: o }) |
| 1379 | 1405 | if (!r) return |
| 1380 | 1406 | const n = T(t, i), |
| 1381 | a = st(n), | |
| 1382 | { isFeatureSupported: c, FEATURES: h } = this.keet.versions, | |
| 1383 | d = c(r.digest.abi.version, h.MULTI_FILES) | |
| 1384 | if (n.files.length && !d) throw new Error("multi files not supported") | |
| 1407 | a = it(n), | |
| 1408 | { isFeatureSupported: c, FEATURES: d } = this.keet.versions, | |
| 1409 | h = c(r.digest.abi.version, d.MULTI_FILES) | |
| 1410 | if (n.files.length && !h) throw new Error("multi files not supported") | |
| 1385 | 1411 | const l = this.keet.batch(e) |
| 1386 | 1412 | return 0 !== (await l.dispatch("@keet/add-chat-message", { timestamp: Date.now(), message: n })) |
| 1387 | ? ((a.files.length || a.pearLink.length || a.httpLink.length) && (await it(l, a)), | |
| 1413 | ? ((a.files.length || a.pearLink.length || a.httpLink.length) && (await ot(l, a)), | |
| 1388 | 1414 | await l.flush()) |
| 1389 | 1415 | : void 0 |
| 1390 | 1416 | } |
| … | … | @@ -1394,13 +1420,13 @@ class Ge { |
| 1394 | 1420 | if (!n) return |
| 1395 | 1421 | const a = N(t), |
| 1396 | 1422 | c = T(i, o), |
| 1397 | h = st(c), | |
| 1398 | { isFeatureSupported: d, FEATURES: l } = this.keet.versions, | |
| 1399 | u = d(n.digest.abi.version, l.MULTI_FILES) | |
| 1423 | d = it(c), | |
| 1424 | { isFeatureSupported: h, FEATURES: l } = this.keet.versions, | |
| 1425 | u = h(n.digest.abi.version, l.MULTI_FILES) | |
| 1400 | 1426 | if (c.files.length && !u) throw new Error("multi files not supported") |
| 1401 | 1427 | const m = this.keet.batch(e) |
| 1402 | 1428 | 0 !== (await m.dispatch("@keet/update-chat-message", { oplog: a, message: c })) && |
| 1403 | ((h.files.length || h.pearLink.length || h.httpLink.length) && (await it(m, h, a)), | |
| 1429 | ((d.files.length || d.pearLink.length || d.httpLink.length) && (await ot(m, d, a)), | |
| 1404 | 1430 | await m.flush()) |
| 1405 | 1431 | } |
| 1406 | 1432 | async _removeChatMessage( |
| … | … | @@ -1424,16 +1450,16 @@ class Ge { |
| 1424 | 1450 | a, |
| 1425 | 1451 | c, |
| 1426 | 1452 | ) { |
| 1427 | const [h, d] = await Promise.all([ | |
| 1453 | const [d, h] = await Promise.all([ | |
| 1428 | 1454 | this.keet.local.get("@local/rooms", { roomKey: e }), |
| 1429 | 1455 | this.keet.local.get("@local/rooms", { roomKey: s.decode(c) }), |
| 1430 | 1456 | ]) |
| 1431 | if (!h || !d) return | |
| 1457 | if (!d || !h) return | |
| 1432 | 1458 | const { isFeatureSupported: l, FEATURES: u } = this.keet.versions |
| 1433 | if (!l(h.digest.abi.version, u.FORWARDED_MESSAGE)) | |
| 1434 | throw new Error("Message forwarding not supported") | |
| 1435 | 1459 | if (!l(d.digest.abi.version, u.FORWARDED_MESSAGE)) |
| 1436 | 1460 | throw new Error("Message forwarding not supported") |
| 1461 | if (!l(h.digest.abi.version, u.FORWARDED_MESSAGE)) | |
| 1462 | throw new Error("Message forwarding not supported") | |
| 1437 | 1463 | const m = await o.get("@keet/chat-by-message-id", { oplog: N(a) }) |
| 1438 | 1464 | if (!m) throw new Error("Source message not found") |
| 1439 | 1465 | if (!m.message.text) throw new Error("Source message has no text") |
| … | … | @@ -1457,27 +1483,27 @@ class Ge { |
| 1457 | 1483 | return this.keet.dispatch(e, "@keet/pin-chat-message", { oplog: N(t), isPinned: !1 }) |
| 1458 | 1484 | } |
| 1459 | 1485 | async startCall(e, t = {}) { |
| 1460 | const o = await this.keet.internalFeatureSupported(e, Re.CALLS_V2) | |
| 1486 | const o = await this.keet.internalFeatureSupported(e, Se.CALLS_V2) | |
| 1461 | 1487 | if ((this.keet.backendAPI.call.setSkipJoinLeave(o), !o)) return this.addCallStartedEvent(e) |
| 1462 | 1488 | const r = s.decode(e), |
| 1463 | 1489 | { version: n, callId: a, encryptionId: c } = t |
| 1464 | 1490 | if (!n) throw new Error("Call version required") |
| 1465 | 1491 | if (2 === n && !a) throw new Error("Calls v2 requires callId") |
| 1466 | const h = await this.keet.local.get("@local/rooms", { roomKey: r }), | |
| 1467 | d = 2 === n ? s.decode(a) : i.randomBytes(32), | |
| 1468 | l = c ? s.decode(c) : h.encryptionKey, | |
| 1469 | u = 1 === n ? h.discoveryKey : null, | |
| 1492 | const d = await this.keet.local.get("@local/rooms", { roomKey: r }), | |
| 1493 | h = 2 === n ? s.decode(a) : i.randomBytes(32), | |
| 1494 | l = c ? s.decode(c) : d.encryptionKey, | |
| 1495 | u = 1 === n ? d.discoveryKey : null, | |
| 1470 | 1496 | m = Array.isArray(t?.streams) ? t.streams : [] |
| 1471 | 1497 | return this.keet.dispatch(e, "@keet/start-call", { |
| 1472 | 1498 | version: n, |
| 1473 | callKey: d, | |
| 1499 | callKey: h, | |
| 1474 | 1500 | encryptionKey: l, |
| 1475 | 1501 | discoveryKey: u, |
| 1476 | 1502 | streams: m.map((e) => s.decode(e)), |
| 1477 | 1503 | }) |
| 1478 | 1504 | } |
| 1479 | 1505 | async joinCall(e, t, i = []) { |
| 1480 | const o = await this.keet.internalFeatureSupported(e, Re.CALLS_V2) | |
| 1506 | const o = await this.keet.internalFeatureSupported(e, Se.CALLS_V2) | |
| 1481 | 1507 | if ((this.keet.backendAPI.call.setSkipJoinLeave(o), o)) |
| 1482 | 1508 | return this.keet.dispatch(e, "@keet/join-call", { |
| 1483 | 1509 | callKey: s.decode(t), |
| … | … | @@ -1485,11 +1511,11 @@ class Ge { |
| 1485 | 1511 | }) |
| 1486 | 1512 | } |
| 1487 | 1513 | async leaveCall(e, t) { |
| 1488 | if (await this.keet.internalFeatureSupported(e, Re.CALLS_V2)) | |
| 1514 | if (await this.keet.internalFeatureSupported(e, Se.CALLS_V2)) | |
| 1489 | 1515 | return this.keet.dispatch(e, "@keet/leave-call", { callKey: s.decode(t) }) |
| 1490 | 1516 | } |
| 1491 | 1517 | async endCall(e, t) { |
| 1492 | if (!(await this.keet.internalFeatureSupported(e, Re.CALLS_V2))) { | |
| 1518 | if (!(await this.keet.internalFeatureSupported(e, Se.CALLS_V2))) { | |
| 1493 | 1519 | const t = s.decode(e) |
| 1494 | 1520 | if (!(await this.keet.local.get("@local/rooms", { roomKey: t })).dm) return |
| 1495 | 1521 | return this.addCallHangupEvent(e) |
| … | … | @@ -1497,7 +1523,7 @@ class Ge { |
| 1497 | 1523 | return this.keet.dispatch(e, "@keet/end-call", { callKey: s.decode(t) }) |
| 1498 | 1524 | } |
| 1499 | 1525 | async addCallStream(e, t, i) { |
| 1500 | if (!(await this.keet.internalFeatureSupported(e, Re.CALLS_V2))) | |
| 1526 | if (!(await this.keet.internalFeatureSupported(e, Se.CALLS_V2))) | |
| 1501 | 1527 | throw new Error("Calls v2 is not supported") |
| 1502 | 1528 | return this.keet.dispatch(e, "@keet/add-call-stream", { |
| 1503 | 1529 | callKey: s.decode(t), |
| … | … | @@ -1505,7 +1531,7 @@ class Ge { |
| 1505 | 1531 | }) |
| 1506 | 1532 | } |
| 1507 | 1533 | async removeCallStream(e, t, i) { |
| 1508 | if (!(await this.keet.internalFeatureSupported(e, Re.CALLS_V2))) | |
| 1534 | if (!(await this.keet.internalFeatureSupported(e, Se.CALLS_V2))) | |
| 1509 | 1535 | throw new Error("Calls v2 is not supported") |
| 1510 | 1536 | return this.keet.dispatch(e, "@keet/remove-call-stream", { |
| 1511 | 1537 | callKey: s.decode(t), |
| … | … | @@ -1513,10 +1539,10 @@ class Ge { |
| 1513 | 1539 | }) |
| 1514 | 1540 | } |
| 1515 | 1541 | async _getActiveCalls({ snapshot: e }) { |
| 1516 | return ce(e, "@keet/active-calls-by-timestamp") | |
| 1542 | return de(e, "@keet/active-calls-by-timestamp") | |
| 1517 | 1543 | } |
| 1518 | 1544 | async _getCalls({ snapshot: e }) { |
| 1519 | return ce(e, "@keet/calls-by-timestamp") | |
| 1545 | return de(e, "@keet/calls-by-timestamp") | |
| 1520 | 1546 | } |
| 1521 | 1547 | subscribeActiveCalls(e, ...t) { |
| 1522 | 1548 | return this._addRoomSubscription(e, { query: () => this.getActiveCalls(e, ...t) }) |
| … | … | @@ -1554,7 +1580,7 @@ class Ge { |
| 1554 | 1580 | } |
| 1555 | 1581 | async _getChatMessage({ roomKey: e, local: t, snapshot: s, blobsSnapshot: i, files: o }, r) { |
| 1556 | 1582 | return ( |
| 1557 | await oe( | |
| 1583 | await re( | |
| 1558 | 1584 | async function () { |
| 1559 | 1585 | const t = U(e, { gte: r, lte: r }) |
| 1560 | 1586 | return await s.findOne("@keet/chat", t) |
| … | … | @@ -1569,7 +1595,7 @@ class Ge { |
| 1569 | 1595 | } |
| 1570 | 1596 | async _getChatMessageById({ roomKey: e, local: t, snapshot: s, blobsSnapshot: i, files: o }, r) { |
| 1571 | 1597 | return ( |
| 1572 | await oe( | |
| 1598 | await re( | |
| 1573 | 1599 | async function () { |
| 1574 | 1600 | return await s.get("@keet/chat-by-message-id", { oplog: N(r) }) |
| 1575 | 1601 | }, |
| … | … | @@ -1582,7 +1608,7 @@ class Ge { |
| 1582 | 1608 | )[0] |
| 1583 | 1609 | } |
| 1584 | 1610 | async _getChatMessages({ roomKey: e, local: t, snapshot: s, blobsSnapshot: i, files: o }, r) { |
| 1585 | return await oe( | |
| 1611 | return await re( | |
| 1586 | 1612 | async function () { |
| 1587 | 1613 | const t = U(e, r) |
| 1588 | 1614 | return await s.find("@keet/chat", t).toArray() |
| … | … | @@ -1598,7 +1624,7 @@ class Ge { |
| 1598 | 1624 | { roomKey: e, local: t, snapshot: s, blobsSnapshot: i, files: o }, |
| 1599 | 1625 | r, |
| 1600 | 1626 | ) { |
| 1601 | return await oe( | |
| 1627 | return await re( | |
| 1602 | 1628 | async function () { |
| 1603 | 1629 | return await s.find("@keet/pinned-chat-messages", r).toArray() |
| 1604 | 1630 | }, |
| … | … | @@ -1639,19 +1665,19 @@ class Ge { |
| 1639 | 1665 | { limit: a = 1e3, reverse: c = !0 } = {}, |
| 1640 | 1666 | ) { |
| 1641 | 1667 | if (!n || !n.length) return [] |
| 1642 | const h = await s.get("@local/rooms", { roomKey: t }) | |
| 1643 | if (!h) return [] | |
| 1668 | const d = await s.get("@local/rooms", { roomKey: t }) | |
| 1669 | if (!d) return [] | |
| 1644 | 1670 | if (!(n = n.map((e) => e.replace(/\s/g, "").toLowerCase()).filter((e) => e)).length) return [] |
| 1645 | const d = [] | |
| 1671 | const h = [] | |
| 1646 | 1672 | for await (const s of e.find("@keet/chat", { limit: a, reverse: c })) { |
| 1647 | 1673 | if (!s.message?.text) continue |
| 1648 | 1674 | const a = s.message.text.replace(/\s/g, "").toLowerCase() |
| 1649 | 1675 | if (n.every((e) => a.indexOf(e) > -1)) { |
| 1650 | const n = re(t, e, i, h, o, s) | |
| 1651 | ;(n.catch(r), d.push(n)) | |
| 1676 | const n = ne(t, e, i, d, o, s) | |
| 1677 | ;(n.catch(r), h.push(n)) | |
| 1652 | 1678 | } |
| 1653 | 1679 | } |
| 1654 | return Promise.all(d) | |
| 1680 | return Promise.all(h) | |
| 1655 | 1681 | } |
| 1656 | 1682 | createChatSearchStream(e, t, s) { |
| 1657 | 1683 | return c.from(this._createChatSearchGenerator(e, t, s)) |
| … | … | @@ -1665,8 +1691,8 @@ class Ge { |
| 1665 | 1691 | const a = this.keet.internalOpenExistingRoom(r) |
| 1666 | 1692 | await a.ready() |
| 1667 | 1693 | const c = a.db.snapshot(), |
| 1668 | h = a.blobs.snapshot(), | |
| 1669 | d = this.keet.local.snapshot(), | |
| 1694 | d = a.blobs.snapshot(), | |
| 1695 | h = this.keet.local.snapshot(), | |
| 1670 | 1696 | l = this.keet.files, |
| 1671 | 1697 | u = c.find("@keet/chat", { limit: i, reverse: o }) |
| 1672 | 1698 | try { |
| … | … | @@ -1677,21 +1703,35 @@ class Ge { |
| 1677 | 1703 | } catch (e) { |
| 1678 | 1704 | this.keet.onerror(e) |
| 1679 | 1705 | } finally { |
| 1680 | ;(await d.close(), await c.close(), await h.close(), this.keet.internalReleaseRoom(a)) | |
| 1706 | ;(await h.close(), await c.close(), await d.close(), this.keet.internalReleaseRoom(a)) | |
| 1681 | 1707 | } |
| 1682 | 1708 | async function m(e) { |
| 1683 | if (!e.message?.text) return | |
| 1684 | const i = e.message.text.replace(/\s/g, "").toLowerCase() | |
| 1685 | if (!t.every((e) => i.indexOf(e) > -1)) return | |
| 1686 | const o = await re(r, c, h, n, l, e) | |
| 1687 | if (o.labels.flagged || o.labels.flags >= pe) return | |
| 1709 | const t = p(e.message?.text), | |
| 1710 | i = !!e.message?.files.length | |
| 1711 | if (!i && !b(t)) return | |
| 1712 | const o = await ne(r, c, d, n, l, e) | |
| 1713 | if ( | |
| 1714 | i && | |
| 1715 | !b(t) && | |
| 1716 | !(function (e) { | |
| 1717 | return e.files.some((e) => b(p(e.metadata?.name))) | |
| 1718 | })(o) | |
| 1719 | ) | |
| 1720 | return | |
| 1721 | if (o.labels.flagged || o.labels.flags >= be) return | |
| 1688 | 1722 | const a = s.decode(o.memberId) |
| 1689 | return (await d.get("@local/blocked-contacts", { memberKey: a })) || | |
| 1723 | return (await h.get("@local/blocked-contacts", { memberKey: a })) || | |
| 1690 | 1724 | (await c.get("@keet/muted-members", { key: a })) || |
| 1691 | 1725 | o.reactions.digest.reactions.find((e) => "⚠️" === e.text) |
| 1692 | 1726 | ? void 0 |
| 1693 | 1727 | : o |
| 1694 | 1728 | } |
| 1729 | function p(e) { | |
| 1730 | return e ? e.replace(/\s/g, "").toLowerCase() : "" | |
| 1731 | } | |
| 1732 | function b(e) { | |
| 1733 | return !!e && t.every((t) => e.indexOf(t) > -1) | |
| 1734 | } | |
| 1695 | 1735 | } |
| 1696 | 1736 | _sendDMFromContact(e, { message: t = null } = {}) { |
| 1697 | 1737 | return this.keet.sendContactRequestFromContact(e, { message: t }) |
| … | … | @@ -1711,7 +1751,7 @@ class Ge { |
| 1711 | 1751 | return this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status", { |
| 1712 | 1752 | memberKey: s.decode(e), |
| 1713 | 1753 | roomKey: s.decode(t), |
| 1714 | key: Z.IsSeen, | |
| 1754 | key: ee.IsSeen, | |
| 1715 | 1755 | status: { isSeen: o }, |
| 1716 | 1756 | }) |
| 1717 | 1757 | } |
| … | … | @@ -1719,15 +1759,15 @@ class Ge { |
| 1719 | 1759 | if (!e) return [] |
| 1720 | 1760 | const i = |
| 1721 | 1761 | { |
| 1722 | [le.ACCEPTED]: "@keet-private-id/accepted-contact-requests-v2", | |
| 1723 | [le.REJECTED]: "@keet-private-id/rejected-contact-requests-v2", | |
| 1724 | [le.PENDING]: "@keet-private-id/pending-contact-requests-v2", | |
| 1725 | [le.DISCARDED]: "@keet-private-id/discarded-contact-requests-v2", | |
| 1762 | [ue.ACCEPTED]: "@keet-private-id/accepted-contact-requests-v2", | |
| 1763 | [ue.REJECTED]: "@keet-private-id/rejected-contact-requests-v2", | |
| 1764 | [ue.PENDING]: "@keet-private-id/pending-contact-requests-v2", | |
| 1765 | [ue.DISCARDED]: "@keet-private-id/discarded-contact-requests-v2", | |
| 1726 | 1766 | }[t] || "@keet-private-id/pending-contact-requests-v2" |
| 1727 | 1767 | return (await e.find(i, { reverse: s }).toArray()).map(I) |
| 1728 | 1768 | } |
| 1729 | 1769 | subscribeDmRequestsByStatus(e, t = {}) { |
| 1730 | return this._addRoomSubscription(Ae, { query: () => this.getDmRequestsByStatus(e, t) }) | |
| 1770 | return this._addRoomSubscription(Be, { query: () => this.getDmRequestsByStatus(e, t) }) | |
| 1731 | 1771 | } |
| 1732 | 1772 | async _getPrivateMailboxRecords({ profile: e }, t = {}) { |
| 1733 | 1773 | console.warn("Deprecated: getPrivateMailboxRecords") |
| … | … | @@ -1767,7 +1807,7 @@ class Ge { |
| 1767 | 1807 | this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status", { |
| 1768 | 1808 | memberKey: s.decode(e), |
| 1769 | 1809 | roomKey: s.decode(t), |
| 1770 | key: Z.IsAccepted, | |
| 1810 | key: ee.IsAccepted, | |
| 1771 | 1811 | status: { isAccepted: !0 }, |
| 1772 | 1812 | }) |
| 1773 | 1813 | ) |
| … | … | @@ -1778,7 +1818,7 @@ class Ge { |
| 1778 | 1818 | this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status", { |
| 1779 | 1819 | memberKey: s.decode(e), |
| 1780 | 1820 | roomKey: s.decode(t), |
| 1781 | key: Z.IsRejected, | |
| 1821 | key: ee.IsRejected, | |
| 1782 | 1822 | status: { isRejected: !0 }, |
| 1783 | 1823 | }) |
| 1784 | 1824 | ) |
| … | … | @@ -1789,7 +1829,7 @@ class Ge { |
| 1789 | 1829 | this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status", { |
| 1790 | 1830 | memberKey: s.decode(e), |
| 1791 | 1831 | roomKey: s.decode(t), |
| 1792 | key: Z.IsDiscarded, | |
| 1832 | key: ee.IsDiscarded, | |
| 1793 | 1833 | status: { isDiscarded: !0 }, |
| 1794 | 1834 | }) |
| 1795 | 1835 | ) |
| … | … | @@ -1821,7 +1861,7 @@ class Ge { |
| 1821 | 1861 | } |
| 1822 | 1862 | async _getReactions({ roomKey: e, snapshot: t, local: s }, i) { |
| 1823 | 1863 | const o = N(i) |
| 1824 | return ne({ roomKey: e, snapshot: t, local: s, oplog: o }) | |
| 1864 | return ae({ roomKey: e, snapshot: t, local: s, oplog: o }) | |
| 1825 | 1865 | } |
| 1826 | 1866 | subscribeReactions(e, t) { |
| 1827 | 1867 | return this._addRoomSubscription(e, { query: () => this.getReactions(e, t) }) |
| … | … | @@ -1866,12 +1906,12 @@ class Ge { |
| 1866 | 1906 | limit: n <= 50 ? n : 50, |
| 1867 | 1907 | reverse: !0, |
| 1868 | 1908 | }), |
| 1869 | h = [] | |
| 1870 | for await (const { id: e } of c) h.push(d(e)) | |
| 1871 | return await Promise.all(h) | |
| 1872 | async function d(t) { | |
| 1909 | d = [] | |
| 1910 | for await (const { id: e } of c) d.push(h(e)) | |
| 1911 | return await Promise.all(d) | |
| 1912 | async function h(t) { | |
| 1873 | 1913 | const r = await s.findOne("@keet/chat", { gte: { id: t }, lte: { id: t } }) |
| 1874 | return re(e, s, i, a, o, r) | |
| 1914 | return ne(e, s, i, a, o, r) | |
| 1875 | 1915 | } |
| 1876 | 1916 | } |
| 1877 | 1917 | _addChatReport(e, t) { |
| … | … | @@ -1898,9 +1938,9 @@ class Ge { |
| 1898 | 1938 | } |
| 1899 | 1939 | subscribeAddFile(e, t, i) { |
| 1900 | 1940 | const o = s.decode(e) |
| 1901 | return d( | |
| 1941 | return h( | |
| 1902 | 1942 | this.keet.files.subscribeAddFile(o, t, i), |
| 1903 | new h({ | |
| 1943 | new d({ | |
| 1904 | 1944 | transform(e, t) { |
| 1905 | 1945 | t(null, { ...e, result: S(e.result) }) |
| 1906 | 1946 | }, |
| … | … | @@ -1979,14 +2019,14 @@ class Ge { |
| 1979 | 2019 | } |
| 1980 | 2020 | async _getFileEntry({ roomKey: e, files: t }, s) { |
| 1981 | 2021 | const i = await t.getFileEntry(e, j(s)) |
| 1982 | return P(i) | |
| 2022 | return q(i) | |
| 1983 | 2023 | } |
| 1984 | 2024 | async _getLocalFiles({ roomKey: e, files: t, blobsSnapshot: s }) { |
| 1985 | 2025 | const i = await t.getLocalFiles(e) |
| 1986 | 2026 | return Promise.all( |
| 1987 | 2027 | i.map(async (i) => { |
| 1988 | 2028 | const o = await t.getFileEntryWithPreview(e, i.file, { loadBlob: (e) => s.get(e) }) |
| 1989 | return { ...S(o.file), entry: P(o) } | |
| 2029 | return { ...S(o.file), entry: q(o) } | |
| 1990 | 2030 | }), |
| 1991 | 2031 | ) |
| 1992 | 2032 | } |
| … | … | @@ -2000,7 +2040,7 @@ class Ge { |
| 2000 | 2040 | ...S(r.file), |
| 2001 | 2041 | id: i.id, |
| 2002 | 2042 | messageId: { deviceId: s.encode(i.oplog.key), seq: i.oplog.seq }, |
| 2003 | entry: P(r), | |
| 2043 | entry: q(r), | |
| 2004 | 2044 | } |
| 2005 | 2045 | }), |
| 2006 | 2046 | ) |
| … | … | @@ -2011,6 +2051,12 @@ class Ge { |
| 2011 | 2051 | _cancelDownload({ roomKey: e, files: t }, s) { |
| 2012 | 2052 | return t.cancelDownload(e, s) |
| 2013 | 2053 | } |
| 2054 | _readFileStream({ roomKey: e, files: t }, s) { | |
| 2055 | return t.readFileStream(e, j(s)) | |
| 2056 | } | |
| 2057 | _saveToDisk({ roomKey: e, files: t }, s, i) { | |
| 2058 | return t.saveToDisk(e, j(s), i) | |
| 2059 | } | |
| 2014 | 2060 | async _clearFile({ roomId: e, roomKey: t, files: s }, i) { |
| 2015 | 2061 | ;(i.preview?.large?.pointer?.externalBlob && (await s.clearFile(t, j(i.preview.large))), |
| 2016 | 2062 | await s.clearFile(t, j(i)), |
| … | … | @@ -2035,7 +2081,7 @@ class Ge { |
| 2035 | 2081 | } |
| 2036 | 2082 | getStats() { |
| 2037 | 2083 | return { |
| 2038 | suspended: this.keet.state === Me.SUSPEND, | |
| 2084 | suspended: this.keet.state === Ie.SUSPEND, | |
| 2039 | 2085 | connections: this.keet.swarm.connections.size, |
| 2040 | 2086 | openRooms: this.keet.rooms.size, |
| 2041 | 2087 | openCores: this.keet.store.cores.size, |
| … | … | @@ -2089,18 +2135,18 @@ class Ge { |
| 2089 | 2135 | i = await this.keet.userRegistry.getReservationsByKey(t) |
| 2090 | 2136 | if (!i || !i.length) return null |
| 2091 | 2137 | const o = i[0] |
| 2092 | return q(o) | |
| 2138 | return P(o) | |
| 2093 | 2139 | } |
| 2094 | 2140 | subscribeUsername() { |
| 2095 | 2141 | const e = this.keet.userRegistry.subscribeUsername() |
| 2096 | return d( | |
| 2142 | return h( | |
| 2097 | 2143 | e, |
| 2098 | new h({ | |
| 2144 | new d({ | |
| 2099 | 2145 | transform(e, t) { |
| 2100 | 2146 | if (!e) return t(null) |
| 2101 | 2147 | t(null, { |
| 2102 | 2148 | status: e.status, |
| 2103 | reservation: q(e.reservation), | |
| 2149 | reservation: P(e.reservation), | |
| 2104 | 2150 | record: E(e.record), |
| 2105 | 2151 | error: e.error, |
| 2106 | 2152 | }) |
| … | … | @@ -2112,7 +2158,7 @@ class Ge { |
| 2112 | 2158 | return this.keet.userRegistry.isAvailable(e) |
| 2113 | 2159 | } |
| 2114 | 2160 | subscribeSystemUpdateRequest() { |
| 2115 | return this._addKeetSubscription(Le, { | |
| 2161 | return this._addKeetSubscription(Ue, { | |
| 2116 | 2162 | query: () => this.keet.migrationStatus || { remaining: 0 }, |
| 2117 | 2163 | }) |
| 2118 | 2164 | } |
| … | … | @@ -2130,7 +2176,7 @@ class Ge { |
| 2130 | 2176 | return e?.flags || [] |
| 2131 | 2177 | } |
| 2132 | 2178 | async updateDebugFlag(e, t) { |
| 2133 | const s = _e.get(e) | |
| 2179 | const s = ve.get(e) | |
| 2134 | 2180 | if (!(s >= 0)) return |
| 2135 | 2181 | const i = await this.keet.internalEnterLocalTransaction() |
| 2136 | 2182 | try { |
| … | … | @@ -2141,9 +2187,9 @@ class Ge { |
| 2141 | 2187 | } |
| 2142 | 2188 | } |
| 2143 | 2189 | createErrorStream() { |
| 2144 | return d( | |
| 2190 | return h( | |
| 2145 | 2191 | this.keet.local.find("@local/errors"), |
| 2146 | new h({ | |
| 2192 | new d({ | |
| 2147 | 2193 | transform(e, t) { |
| 2148 | 2194 | t(null, x(e)) |
| 2149 | 2195 | }, |
| … | … | @@ -2208,7 +2254,7 @@ class Ge { |
| 2208 | 2254 | return this.keet.unreads.get(t) |
| 2209 | 2255 | } |
| 2210 | 2256 | _subscribeUnreadAnchor(e) { |
| 2211 | return this._addKeetSubscription(Te, { query: () => this.getUnreadAnchor(e) }) | |
| 2257 | return this._addKeetSubscription(Ne, { query: () => this.getUnreadAnchor(e) }) | |
| 2212 | 2258 | } |
| 2213 | 2259 | async _setRoomFavorite(e, t = !0) { |
| 2214 | 2260 | this.keet.onlineBoot.opened || (await this.keet.onlineBoot.ready()) |
| … | … | @@ -2220,12 +2266,12 @@ class Ge { |
| 2220 | 2266 | throw new Error("Favorite rooms is not supported") |
| 2221 | 2267 | await this.keet.privateProfile.dispatch("@keet-private-id/update-room-status", { |
| 2222 | 2268 | roomKey: s.decode(e), |
| 2223 | key: ee.IsFavorite, | |
| 2269 | key: te.IsFavorite, | |
| 2224 | 2270 | status: { isFavorite: t }, |
| 2225 | 2271 | }) |
| 2226 | 2272 | } |
| 2227 | 2273 | } |
| 2228 | class ze { | |
| 2274 | class Je { | |
| 2229 | 2275 | constructor(e) { |
| 2230 | 2276 | this.keet = e |
| 2231 | 2277 | } |
| … | … | @@ -2233,9 +2279,9 @@ class ze { |
| 2233 | 2279 | return (await this.keet.ready(), s.encode(this.keet.swarm.keyPair.publicKey)) |
| 2234 | 2280 | } |
| 2235 | 2281 | } |
| 2236 | class Je { | |
| 2282 | class We { | |
| 2237 | 2283 | constructor(t) { |
| 2238 | ;((this.keet = t), (this.preferences = new b(e.join(t.dir, Ee))), (this._subs = [])) | |
| 2284 | ;((this.keet = t), (this.preferences = new b(e.join(t.dir, Ke))), (this._subs = [])) | |
| 2239 | 2285 | } |
| 2240 | 2286 | async _bump() { |
| 2241 | 2287 | const e = await this.preferences.list() |
| … | … | @@ -2267,7 +2313,7 @@ class Je { |
| 2267 | 2313 | return (this._subs.push(t), t) |
| 2268 | 2314 | } |
| 2269 | 2315 | } |
| 2270 | class We { | |
| 2316 | class Ye { | |
| 2271 | 2317 | constructor(e, { onerror: t = r } = {}) { |
| 2272 | 2318 | ;((this.keet = e), |
| 2273 | 2319 | (this._status = null), |
| … | … | @@ -2340,7 +2386,7 @@ class We { |
| 2340 | 2386 | } |
| 2341 | 2387 | } |
| 2342 | 2388 | } |
| 2343 | class Ye { | |
| 2389 | class Xe { | |
| 2344 | 2390 | constructor() { |
| 2345 | 2391 | ;((this.subscriptions = []), |
| 2346 | 2392 | (this._handleError = this._handleError.bind(this)), |
| … | … | @@ -2363,9 +2409,9 @@ class Ye { |
| 2363 | 2409 | return (this.subscriptions.push(s), s) |
| 2364 | 2410 | } |
| 2365 | 2411 | } |
| 2366 | class Xe { | |
| 2412 | class $e { | |
| 2367 | 2413 | constructor(e) { |
| 2368 | ;((this.keet = e), (this.inspector = new ve())) | |
| 2414 | ;((this.keet = e), (this.inspector = new Re())) | |
| 2369 | 2415 | } |
| 2370 | 2416 | _getCurrentRoom() { |
| 2371 | 2417 | let e = null |
| … | … | @@ -2391,9 +2437,10 @@ class Xe { |
| 2391 | 2437 | hash(e) { |
| 2392 | 2438 | return i.hash(e) |
| 2393 | 2439 | } |
| 2394 | generateSyntheticError(e) { | |
| 2395 | if (!e) throw new Error("KEET_CORE_ERROR_UNHANDLED") | |
| 2396 | this.keet.onerror(new Error("KEET_CORE_ERROR_HANDLED")) | |
| 2440 | generateSyntheticError(e, t = {}) { | |
| 2441 | const s = new Error(t.message ?? t.code ?? "KEET_SYNTHETIC_ERROR") | |
| 2442 | if (((s.code = t.code ?? s.message), Object.assign(s, t), !e)) throw s | |
| 2443 | this.keet.onerror(s) | |
| 2397 | 2444 | } |
| 2398 | 2445 | async heapSnapshot( |
| 2399 | 2446 | e = "/tmp/keet-heapsnapshot-" + Bare.pid + "." + Date.now() + ".heapsnapshot", |
| … | … | @@ -2410,44 +2457,44 @@ class Xe { |
| 2410 | 2457 | await this.keet.unreads.reset() |
| 2411 | 2458 | } |
| 2412 | 2459 | } |
| 2413 | class $e { | |
| 2460 | class Qe { | |
| 2414 | 2461 | constructor(e) { |
| 2415 | 2462 | ;((this._rpcClient = e.rpcClient), (this.keet = e)) |
| 2416 | 2463 | } |
| 2417 | 2464 | send(e) { |
| 2418 | 2465 | if (this.keet.buildType === J.Production) |
| 2419 | 2466 | return this._rpcClient.makeRequest(this.keet.config.services.feedback, "send", e, { |
| 2420 | requestEncoding: ke.json, | |
| 2467 | requestEncoding: _e.json, | |
| 2421 | 2468 | }) |
| 2422 | 2469 | } |
| 2423 | 2470 | } |
| 2424 | function Qe(e) { | |
| 2471 | function Ze(e) { | |
| 2425 | 2472 | switch (e) { |
| 2426 | 2473 | case 1: |
| 2427 | return ee.IsFullyMuted | |
| 2474 | return te.IsFullyMuted | |
| 2428 | 2475 | case 2: |
| 2429 | return ee.IsMentionsOnlyMuted | |
| 2476 | return te.IsMentionsOnlyMuted | |
| 2430 | 2477 | default: |
| 2431 | 2478 | return 0 |
| 2432 | 2479 | } |
| 2433 | 2480 | } |
| 2434 | function Ze(e) { | |
| 2481 | function et(e) { | |
| 2435 | 2482 | switch (e) { |
| 2436 | 2483 | case "title": |
| 2437 | return te.Title | |
| 2484 | return se.Title | |
| 2438 | 2485 | case "avatar": |
| 2439 | return te.Avatar | |
| 2486 | return se.Avatar | |
| 2440 | 2487 | case "description": |
| 2441 | return te.Description | |
| 2488 | return se.Description | |
| 2442 | 2489 | case "supportedLanguages": |
| 2443 | return te.SupportedLanguages | |
| 2490 | return se.SupportedLanguages | |
| 2444 | 2491 | case "blindPeers": |
| 2445 | return te.BlindPeers | |
| 2492 | return se.BlindPeers | |
| 2446 | 2493 | default: |
| 2447 | 2494 | return 0 |
| 2448 | 2495 | } |
| 2449 | 2496 | } |
| 2450 | function et(e) { | |
| 2497 | function tt(e) { | |
| 2451 | 2498 | switch (e) { |
| 2452 | 2499 | case "0": |
| 2453 | 2500 | default: |
| … | … | @@ -2458,16 +2505,16 @@ function et(e) { |
| 2458 | 2505 | return W.DirectMessage |
| 2459 | 2506 | } |
| 2460 | 2507 | } |
| 2461 | function tt(e = {}) { | |
| 2508 | function st(e = {}) { | |
| 2462 | 2509 | return { |
| 2463 | 2510 | config: { title: e.config?.title, description: e.config?.description }, |
| 2464 | 2511 | settings: { |
| 2465 | roomType: et(e.config?.roomType), | |
| 2512 | roomType: tt(e.config?.roomType), | |
| 2466 | 2513 | isCallingDisabled: "false" === e.config?.canCall, |
| 2467 | 2514 | }, |
| 2468 | 2515 | } |
| 2469 | 2516 | } |
| 2470 | function st(e) { | |
| 2517 | function it(e) { | |
| 2471 | 2518 | const t = { files: [], httpLink: [], pearLink: [] }, |
| 2472 | 2519 | s = e.files || [] |
| 2473 | 2520 | for (let e = 0; e < s.length; e++) { |
| … | … | @@ -2491,7 +2538,7 @@ function st(e) { |
| 2491 | 2538 | return ((e.preview.file.preview = null), t) |
| 2492 | 2539 | } |
| 2493 | 2540 | } |
| 2494 | async function it(e, { files: t, httpLink: s, pearLink: i }, o = null) { | |
| 2541 | async function ot(e, { files: t, httpLink: s, pearLink: i }, o = null) { | |
| 2495 | 2542 | const r = o || { key: e.key, seq: e.length - 1 } |
| 2496 | 2543 | if (t.length) |
| 2497 | 2544 | for (const { index: s, preview: i } of t) |
| … | … | @@ -2521,7 +2568,7 @@ module.exports = class extends t { |
| 2521 | 2568 | (this.keet = e), |
| 2522 | 2569 | (this.opts = t), |
| 2523 | 2570 | (this.api = { |
| 2524 | core: new Ge(e, t), | |
| 2571 | core: new ze(e, t), | |
| 2525 | 2572 | swarm: null, |
| 2526 | 2573 | preferences: null, |
| 2527 | 2574 | network: null, |
| … | … | @@ -2544,12 +2591,12 @@ module.exports = class extends t { |
| 2544 | 2591 | } |
| 2545 | 2592 | async _open() { |
| 2546 | 2593 | ;(await this.keet.ready(), |
| 2547 | (this.api.swarm = new ze(this.keet, this.opts)), | |
| 2548 | (this.api.preferences = new Je(this.keet, this.opts)), | |
| 2549 | (this.api.network = new We(this.keet, this.opts)), | |
| 2550 | (this.api.error = new Ye(this.keet, this.opts)), | |
| 2551 | (this.api.debug = new Xe(this.keet, this.opts)), | |
| 2552 | (this.api.feedback = new $e(this.keet))) | |
| 2594 | (this.api.swarm = new Je(this.keet, this.opts)), | |
| 2595 | (this.api.preferences = new We(this.keet, this.opts)), | |
| 2596 | (this.api.network = new Ye(this.keet, this.opts)), | |
| 2597 | (this.api.error = new Xe(this.keet, this.opts)), | |
| 2598 | (this.api.debug = new $e(this.keet, this.opts)), | |
| 2599 | (this.api.feedback = new Qe(this.keet))) | |
| 2553 | 2600 | const { isFeatureSupported: e, FEATURES: t } = this.keet.versions |
| 2554 | 2601 | ;((this.call = this.api.call = |
| 2555 | 2602 | new g(this.keet.swarm, { skipJoinLeave: e(this.keet.abi.autoupgrade, t.CALLS_V2) })), |
| … | … | @@ -2578,7 +2625,7 @@ module.exports = class extends t { |
| 2578 | 2625 | r = s?.deviceKey || null |
| 2579 | 2626 | if (!s && !o) return |
| 2580 | 2627 | const n = { joinPeer: this.keet.debugJoinPeer, leavePeer: this.keet.debugLeavePeer }, |
| 2581 | a = new Se(this.keet.swarm, { call: i, prev: o, deviceKey: r, debug: n }) | |
| 2628 | a = new Me(this.keet.swarm, { call: i, prev: o, deviceKey: r, debug: n }) | |
| 2582 | 2629 | if ((a.refresh(), a.ended)) return this.callsByRoomId.delete(e) |
| 2583 | 2630 | this.callsByRoomId.set(e, a) |
| 2584 | 2631 | } |
| … | … | @@ -1,9 +1,9 @@ |
| 1 | const { Console: s, Server: e } = require("bare-inspector"), | |
| 1 | const { Console: e, Server: s } = require("bare-inspector"), | |
| 2 | 2 | { once: o } = require("bare-events") |
| 3 | class l { | |
| 4 | constructor({ port: s = 0, host: e = "localhost" } = {}) { | |
| 5 | ;((this.port = s), | |
| 6 | (this.host = e), | |
| 3 | class r { | |
| 4 | constructor({ port: e = 0, host: s = "127.0.0.1" } = {}) { | |
| 5 | ;((this.port = e), | |
| 6 | (this.host = s), | |
| 7 | 7 | (this._server = null), |
| 8 | 8 | (this._url = null), |
| 9 | 9 | (this._bareConsole = null), |
| … | … | @@ -13,35 +13,35 @@ class l { |
| 13 | 13 | return this._url |
| 14 | 14 | } |
| 15 | 15 | _overrideConsole() { |
| 16 | this._bareConsole || (this._bareConsole = new s()) | |
| 17 | const e = {} | |
| 18 | for (const s of Object.keys(this._bareConsole)) | |
| 19 | e[s] = (...e) => { | |
| 20 | ;(this._bareConsole[s](...e), this._oldConsole[s](...e)) | |
| 16 | this._bareConsole || (this._bareConsole = new e()) | |
| 17 | const s = {} | |
| 18 | for (const e of Object.keys(this._bareConsole)) | |
| 19 | s[e] = (...s) => { | |
| 20 | ;(this._bareConsole[e](...s), this._oldConsole[e](...s)) | |
| 21 | 21 | } |
| 22 | global.console = e | |
| 22 | global.console = s | |
| 23 | 23 | } |
| 24 | 24 | _resetConsole() { |
| 25 | 25 | global.console = this._oldConsole |
| 26 | 26 | } |
| 27 | 27 | async enable() { |
| 28 | ;((this._server = new e(this.port, this.host)), | |
| 28 | ;((this._server = new s(this.port, this.host)), | |
| 29 | 29 | this._server.on("close", () => { |
| 30 | 30 | this._resetConsole() |
| 31 | 31 | }), |
| 32 | 32 | await o(this._server, "listening"), |
| 33 | 33 | this._overrideConsole()) |
| 34 | const { port: s } = this._server.address() | |
| 34 | const { port: e } = this._server.address() | |
| 35 | 35 | return ( |
| 36 | (this._url = `devtools://devtools/bundled/js_app.html?ws=localhost:${s}`), | |
| 36 | (this._url = `devtools://devtools/bundled/js_app.html?ws=127.0.0.1:${e}`), | |
| 37 | 37 | console.log(`Keet core inspector url: ${this._url}`), |
| 38 | 38 | this._url |
| 39 | 39 | ) |
| 40 | 40 | } |
| 41 | 41 | async disable() { |
| 42 | 42 | this._server && |
| 43 | (await new Promise((s) => { | |
| 44 | this._server.close(s) | |
| 43 | (await new Promise((e) => { | |
| 44 | this._server.close(e) | |
| 45 | 45 | }), |
| 46 | 46 | (this._server = null), |
| 47 | 47 | this._resetConsole(), |
| … | … | @@ -49,4 +49,4 @@ class l { |
| 49 | 49 | (this._url = null)) |
| 50 | 50 | } |
| 51 | 51 | } |
| 52 | module.exports = l | |
| 52 | module.exports = r |
| … | … | @@ -15,13 +15,13 @@ class c extends s { |
| 15 | 15 | } |
| 16 | 16 | async _open() { |
| 17 | 17 | ;(console.log(0), |
| 18 | (this._server = new o.Server(0, "localhost")), | |
| 18 | (this._server = new o.Server(0, "127.0.0.1")), | |
| 19 | 19 | console.log(1), |
| 20 | 20 | await new Promise((e) => this._server.once("listening", e)), |
| 21 | 21 | console.log(2)) |
| 22 | 22 | const { port: e } = this._server.address() |
| 23 | 23 | ;(console.log(5), |
| 24 | (this.url = `devtools://devtools/bundled/js_app.html?ws=localhost:${e}`), | |
| 24 | (this.url = `devtools://devtools/bundled/js_app.html?ws=127.0.0.1:${e}`), | |
| 25 | 25 | console.log(`Keet core inspector url: ${this.url}`), |
| 26 | 26 | console.log(6)) |
| 27 | 27 | } |
| … | … | @@ -5,14 +5,15 @@ const e = require("ready-resource"), |
| 5 | 5 | i = require("hypercore/messages"), |
| 6 | 6 | o = require("bare-zlib"), |
| 7 | 7 | { EXPERIMENTAL: n } = require("../../schema/versions"), |
| 8 | { KeetContractError: u } = require("../core/contract/errors"), | |
| 9 | a = require("../core/contract/index.js"), | |
| 10 | c = require("compact-encoding"), | |
| 11 | h = c.array(i.wire.data), | |
| 8 | { KeetContractError: a } = require("../core/contract/errors"), | |
| 9 | u = require("./patch"), | |
| 10 | c = require("../core/contract/index.js"), | |
| 11 | h = require("compact-encoding"), | |
| 12 | l = h.array(i.wire.data), | |
| 12 | 13 | d = 12, |
| 13 | l = 25, | |
| 14 | b = 25, | |
| 14 | 15 | _ = "/lib/contract/index.js", |
| 15 | b = "/lib/core/contract/index.js" | |
| 16 | p = "/lib/core/contract/index.js" | |
| 16 | 17 | function y(e) { |
| 17 | 18 | return new Promise((r, t) => { |
| 18 | 19 | o.gunzip(e, (e, s) => { |
| … | … | @@ -39,7 +40,7 @@ module.exports = class extends e { |
| 39 | 40 | let e = [] |
| 40 | 41 | try { |
| 41 | 42 | const r = require("./latest-bundle.trace.js") |
| 42 | e = c.decode(h, await y(r)) | |
| 43 | e = h.decode(l, await y(r)) | |
| 43 | 44 | } catch (e) { |
| 44 | 45 | this.keet.onerror(e, { prefix: "TRACE_LOAD_ERROR" }) |
| 45 | 46 | } |
| … | … | @@ -60,12 +61,15 @@ module.exports = class extends e { |
| 60 | 61 | } |
| 61 | 62 | async loadBundle(e) { |
| 62 | 63 | if (this._bundles[e]) return this._bundles[e] |
| 63 | if (e >= n) return ((this._bundles[e] = a), a) | |
| 64 | if (e >= n) return ((this._bundles[e] = c), c) | |
| 64 | 65 | const r = e < d ? d : e, |
| 65 | t = r >= l ? b : _, | |
| 66 | t = r >= b ? p : _, | |
| 66 | 67 | s = await this._bee.findABI(r) |
| 67 | if (!s) throw u.BUNDLE_NOT_AVAILABLE(r) | |
| 68 | const i = await this._bee.load(new URL("../..", module.url), t, s) | |
| 68 | if (!s) throw a.BUNDLE_NOT_AVAILABLE(r) | |
| 69 | const i = await this._bee.load(new URL("../..", module.url), t, s, { | |
| 70 | map: (r, t) => | |
| 71 | "/lib/core/contract/helpers.js" !== r || (28 !== e && 29 !== e) ? t : u.helpers, | |
| 72 | }) | |
| 69 | 73 | return ((this._bundles[e] = i.exports), this._bundles[e]) |
| 70 | 74 | } |
| 71 | 75 | async loadRouter(e) { |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | const b4a = require("b4a") |
| 2 | 2 | |
| 3 | 3 | module.exports = b4a.from( |
| 4 | "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e7p+WPKDbqnc2txbulia3Q1m128tX51aWF/uro/POuXq5j1nOli9m+su+FFuNghya7udmdajoBgf1bbubjlb93buNqe3qzeWL90u1HfvFK4UDw/j3Xubd1YOlxc373rX7qzfLN+5VPDXK3e7N1fcWxd2j655R43abDBTvbG6t3Vre/3a3sLe6uHewvTt9s3W+t0re3e7xfJMt3S7trt2/ShcKYVbs3utpdyuX3Ve3bvbulC/dKMd1bt3Lu6O701fXF1efdRZ23p1dq2+FKxULx3drrv3xndvTM/4hyuPbpR222s3rxbudeKlrcL48u745uK99YJXW3x0L56Jy6vX713e9vaOZsej4MJDZ7vVXuxcdu+FuavlnWjh3q2rW4eRt7zdvR4WLoxfOVpYPVwKne3y2sxK9dr16Wt3tovTC8sz5aMlIPk+qM50gsNoJ6wFtbY3vZvLBZ1OeerS1OXK1oWVxaPb7fH2nUvX1ldnw72tS49WvMW4fHdvam+vufZoq9WtLN/aGS+WjraaW5ur8cbheHl7+079erQ3E21dL25fvn1rtdU4ai0tNoLCbqNbaBRbue3DYG91Krh9u/OwGxytTrtrtzadq9HV6wuNGxevzR560zcLO0f1S8WH/l5r72599mjv6u3K2mp15kFpZ/PexqV2adqplTa6nbvRxWJ3oXI9atSurRbuTTuF8JK/52+Xty87wdHt1Si4EjdyYWsmuH2z0l2KvMLN602vMlsa3+5ciR7ONOLLe9Pl6dkHW1dWOqtbD+5eql67EF+dKec2px6UussLj7q3g+vXbq893FqvPbiz3Anv3li6svzQubH2aA8wnMgvPbx1O9yMrjp7dspKQUvMSxdS4GBfGo7TdgCnLSmc9lpV4rS3q7uOW2i2tyo7a8tbu5XLCxuV8m5up1Penp2+FR7dW9+7OL1281Ln8Mq1Kw9Kdx7enF04dO4uNu5U9h607+7V62vt1ZmVK2v3rnu5+NZi48KrmzcelV99OHN5x90q5x5di4pT4fVHd8pT7sKV+pVrlzer08GFB87F+G5pcS0obF5zrux2bkxv1Gcbu11nunlhdrt556hYu9CcqtWul/2p1fVcfHd8YWZx4VbtaHH9aiHo7NTq7WDt6vajw1zh0eqD1sP4zs2txuruwhV/urR3/dqm36gc3okv7swE3uY64MxX7j14ePfyFedC9Vbde7B278be9q2V3Ydrjejmc077nNM+57TPOa3CaXl/woG1x1RUAnCegzrsmWN0OstPW+BIlQecthu7a+g2yMIWkfm9nno4gg5J2ggtjjziNoIWdLSZ71hJFmXu+TIPwlJL5nBy3ygK7kP7h3u/KtSLAYOUfHIA+o3TX3555NwIdOP1My+ffvrp3XjNUKcVz914jT5346UO0XM3Xs/deD1344UQP3fj9dyN13M3Xs/deD1342Uq8dyNFy333I1Xkv+1cuMFMx/B7ZuWS9r7bD18cSvwuYev5x6+nnv4eu7hi2Y+9/D1NffwxZWJvGYLkH9QrLQjMJVBqA7cc49gZ/MIBrJmSN6rGs6OET53FqZww6dwFvbC6feOnH5h5q9feoc1fuvJxce/9Ikf+UcPfuYr5x4svP2//PY/3f1Lv/edv/rdf/Jvx07/4sjpD2c/8+e/4/t+7Ef/3btv/Xc/XP+h6Odrv/cD/7Dw2X/9lc9899H729/zg986ffpDI18t/vbbz/2H77/zp1/4+M/+yP/2N6fufel/+uPca3M/9tvv/J7v+fLlf7nYOPzDfxOOnDv3m6DSkXPnoYOyX505/b1pxSKSCatCYHEopw62SvQstF+7eadnSVHGSEakt1tUTBePsdodtrfcdqMWaKaL9PWQ2EDTUVydvG8BUQPw1UIMBxzdH+QDkrbCQsuIZcoW4EpuCOpYd7wGkK5W3e4WoDQxfhpqGRedBrSsaXsao0rrmI9g3hUimNdFjDTopGxp2jBYmrbF4szUlBmQdkQAakHabpVB7wqHDqDO/KEI46DUSG+xWhFhmclqUUhW7WZvOQ2vvACvNKDCbr4losFHTYinYO+nQN/BaiunLPBrAbJe/HOn5pSDDkm4b9Xs4xUMmM9ZKwQwPwN+8oD52Z5s01rNuFbMok9CDUzHqgVRjNS6ABHanrUfmpToDcFAqUyWgmGo+Zh0NKggDJc4DZUkrUAX/zuxCYF2c+Fkqw24fAnbxJbt48nJycDC4Zny6IPEaur1rJJNQtQlJiRccRpANh+z4jS8U35s2vKiFXIQh4rNvTn2giZH7LLHckxLHtDWbaSwCk0N0UHeDWFxavEpx+FmfQsoRD3jWD7UazUVYQqqJQrRRUVKFvSUhekbKWMTtVWoey/N8jaeZcuxItEg0ucmGy/0yIsSM8n9htW2Dq2i1RpsNChaO8ayTaA4qQ4X50wLiM8qQ4BLBhZipkpxSBm2fXIydkgUYiu8mXKDqMrTIc3RIW30iN1DAdFfm6e/dkJ/NbutUItVtQMwX7F1OImDsW67Jddrxdk5KcGukjq2bSNdjkXzk8l3b46rDheAvtXUNkCKraXTY1zOOthkQigMptMIJ/ed0YEBxFlrm6tcRFcog3O4WBQlwWJz1GkZpgxucbaJOSMay222Pr2e2d6T0VE7WUCh1QJ0WqAJchFGmbvJAoJFdskC6lcRo8PDrFWitpRlbtnHybLnRweQ6Vjt5KSotc9oTi6EgVMuOVEsERxbw7toCIrQQRs1in/dzuXSaQ4j3RajmtdCGxyMiucUG265D1Y8F+s2CTp4I/DgxnAszUnC/nCPO2DAfGtdsPZQGc+uwnh2CeOhbAcdRAHXIexHx3KaVtdqDGY3Ij/xzsZP+oDrWUZT4RZ4HNu2o9YDaThlxVCtLch4gDK78/LSh+Hii3Z3rjgP5ljkAh2rSA2TOTHN9iZRD7L5oi13wRIQYN0MqXieFO9Z8SQWaebpDzLShxnfas4zk2icx6CzeQYO1wzpfQsxKrjMIWeiS97iuAZJZ98WY0mYs/FcDosvgFNRQQf/FgSYsVwPSEXKAJAVDuMtE2bSSjZ7iZSNDKXAM5SGmZ1IBFUEcppM9uuE7LGJIib6kFG4b7BhiYalbw1gH/omm55vIOFSXxJuIhIuWWUtCXft8lx3PtOVSBgs4b4k3B1Ews2+JOwzKmXM6HU7Tj5OTjIMxI4Tivcl6maUH1pyFkf4Sinkn1RvJckmzc/2hWCz1c0q9lELGSypYZkwkctLFjx5uGBsEpENUH7Y3W778ORUtho2teHho5bDo1fJaYGNpOHF8CIqa7XtrugipUNsZg9tH8xJ7IDzkANOMWx1H06WHF9d3CiZfLonJwlUz0Ksgcktw5TvIYoqYP4CzeCyBdKfKqBAhxid0clIxGXJsJg/iBCLbXIe8ZBwmph2eRYB3cIoV8ixBTmG0GUQNrMF5y4fTHJfveyc24jcY3pHoJkHWf4l3XESAufXLBwAF4Wsd/nYutCiiVpyQedTZC0T2611QDlUUmbjxBK4mqAdF2wv4Yi7Q5crQgNgOi3bmFDlidF1DQhboEpCylhWqFlYeljo2QVr05brn2ziywZr1W5Mwrsk6xhd9bEbjofg0JzZhAbeWWvFjjSzTy/JSZzmieR2AkwCsUs9ZkwD7PWWXEPW2rKRpyFAordg0PPMinUctEAZ9OIEty3ihggbw6JpWwBScLKKGOFDEVxMpoSPhPPJpHU2lDz8Sa9shbQpWz2DAyEm2tZMLob4OxkwVoCjA8G9nmWkekzcLgOxQXCi1LZCcgHkcO2wEnTQag5X2cwcw7udPGeZh9uVsmi0+6wiGW5mKCXQ0zrYqSE9cSwv4lhdcmTt2Q427i+ddRc1LrfBO+qQRfXm/gE4b5YN22/XLhnOCIINN8RTkk4DM2AmA/kACNK6SlV0wXqABCGfT1aruEyN504gdjmJPOSU6uT0g9BlrTidpizIA1snRR4LyB2NKbA77IyjzSHAm0Mcdo8DuwwYZA+9TEFOKfW4x1vGSkMOl1eJUXezZwfYVncSpDiNKNPk7Jtx//R49rtW3XBSEWgCmb6S6sQdyCfOkwRwYcGitkoQ+qs2Qmr1kxN1+ulZpZ7wnyK9fQR7f1Ni4UkmQtnKdMBhmyHVuFpknrpUyqhPkqtN6HK94kHNP9Czk5PGvF4+GjBYljR32TxGs8BIuwkmBUtoCrk95NwRJHjBJkY3fq8nESMhwBCxHN/gG6ydicAREvV2yHmPmVDeyPhZwBz6UGqZ9bYEKBXI43Tc+pFMuScal8ucYAGdT0pgsLxkXcteKPq2Xx7bFf3Y9qSrZebood+9cjvjWBEeUOfsAxrCAVUPO/Ru9S30cStzzG1/LnZYEDOHBRzrcthZD5CGsZeA8gj77DuZLhAFehKQfp9pZCKVV4GMiLvPg4dscj00Rw2pXcYXIHR4cqJ3K9LU+rRKamIX5ox/2ByihOMEvPQD9iu+edwtZCAJSVlckNw08qXo5WPAS1vQHQB/KwqGHamrsRcH/HBWQIkZ7GLCA819OJ6Dg91HinIVyjjKoImSKYJRAaDnt0gDHIE7kMAdzZiB5EiZFP5qmD5b9O1dpPRuOcOtC9eCBprJo5uHO50sbX4H5648TI47uMUOf7r4j8czSB1JJ9s1ZvuBfqPWQJb7bemAJQ586pJeOqDbxz7ZycyVwPyoDBnlyEKcFqo5FBSHi4pvOrjmcGBs7LCHzKZ+7Njuz27FEaBFrwDEJzEerqTA5QCcpnFwBWu6ltD04FczI0RTofgl4jh0MHPXUkvch1qIyJesfEIdkTy7gFrIZhbSLMrdjJtbMrAeGVh++CP9sOp5Amu2yg8O/j83OjnT6Jg4Zp/R2eAkIXKhgOU3WRiCMlCke//WXNnhQVB6Bg9FYXIoomf6EuggmxH8xIbuUMAWbftQ9BtwcAoN4ig0YUzURPKBBRPwGxS+FCv37JCJAfOrmcACB7xsvjy/mSnjn8if2LQ8ZjvcmJHLgOPksd7hL4F7SEYnddB7dlXWv51hCFzJy9hgCm2jC0e0J3lmYnUwsRIKzYQyiabTUB5Lp4Esw9goOicQ3CofZbdftmvp3XOxFoRKjx9kyH4j9VZQ56A9h695ptPMMH13ZRdphpd2P1mn3DacXPuHfTbjUazr4fNv7T57a5/z5fHGN2zaRQzEWHR3Ch9HycmU3ljQLPHYOmD0/eQh2QOSDbpQlaZjLcO9qboWfvkmPVFkJn5eznQkku63hGMQd2LXOR5L+KQpXg2G4+iaSZqsqBzrCxWZBmeF+OQkfr1A3SLLdwdiwJosO4gU9uOJ3H02tfuARD3w3yBdGl8Z/VtkMQjPDbFF3zOeodDafzpANu+WknjoN/iixR41OaohPjX5lJ7qeFYQkfs7HOw31/Q1kF9X6MWmySclL7ldO5AgsfwJzmHdkxOPW9RcUDn5WkKlH7il1cGahYBdcMzzspLXTHB65Vezi6ZhXhUtXXWPzwPE03P1k5OM3HTbg6dLjdYLoGNvsCqXTH6L3H5WP9shySpZh2+B5pTTiKwf9VYI0lMI0hMIcpC637Mn12JfdcCWrT0lWgU9Rdf0FN1Kp2vaoxbIYP6cdaSs3M3DrUhLZWI6ey/SqR6OtayWSMDkWTAR5WVCjZutCbxiyhMitQRYhFE805bo+1CMxtflx9dNtmDNQgSrny5FYV/VrEbL1W7WQrp8c2E8w7m8buShhWRcpkM2nBLmIVh+xaxVHlJlC7thVvSzuOID9bMIEVft1jxZU2tuJebXF56gHk0iU62BmKN6WlDFsyp65WVsaU9x2cm/1W1IDjSxWjTLvq33r0mzH0jZ2BkoM221lpT8oMVlH8juPUsltxVP8PezKeuh0gRk/iQCrei7gUcsZe1I2dCepUqzJ0JoB2rd6guDiTNlrekHhFa0qHFYyj9Bb+mL8yBHEggBQEsoZS1rnJkW7+f3rHWmUg+WLHpnx9d1+W34G+dCVcD3GNzyfIvB2kDv9vT9iu7/RxLPFFwqK/Biolb/YY3LUJKFHKEO9Kj6rsmhXKq+mKjV66okWchD6xDOV98nK/UP9r76TmrOMKaBRRlseN5J7Uo+Kvo0oskM8IXiBedDIgxIYdnQ39Fvnf7wJ0bOvQCjen3fJ07fkVZsWPpbqxBTlHhYUxTVuMQjxiWSeYpDzVOgPQWol16RRCZbk5BlbAOevMjdjeSDAWYofl9jDNWoo2Qw6pCtUMoGK5SuwQqFHO1h+7G1S4MquZFBwKltKZUMDc5sagxkpqi6ns60pG4yLWkh0xLcFWRQcrXdaHQTU5N1+CQKBnDT51OvOocB8gpy3zqEFidkKKDJSVIemZ0o5fOzEIiUz1/oWR3UggVoPopMWCoQIfnM53pWEeUTuQfVXkB7AmnKNuL95APsqyUnLFPbGNf1AcIqREi1TWETaXnUQFoetYuVz1+AJjOgfP6iYiqzmjmOak7oluEURuh2DzWWTFQEL/jOeNHU1V+28C/8pQCaBsI5I/JzOXnkKzFxFMpv8OQU29Nz8WsuOXfPxePj9MaRqvk4lueDhYMOxJFVAfIMoN4O6PxuAFaZGGXNt+CtIVwR7n58H9reJFhkSKKvlYe2DqUsVd8i65ezwSnBQcvH4zmDDQ5HR0j9VyUkqIzSrw/0OX+n47Ty8G60p/d1L+iKwSnF/s3JSLpgJN3XYjqSLhvJUccO58PJEpn18Vx+2opsTiKL9937pJsO10lK2jBoAh0spKhAx3TIptKK0d2zfPAswIdIos3wNSFHReEEkiO8hQf/XHrYirn55uZeJds4UUNdBFsigAHnh1BJtFU4wxWdtqmay9Jtej9EhfWvzWhR7P0XL739gqer0IIO6SEJDUEKDL3mCqLWX1lh4NN01/A0rdc8KGccU79CO9IqAdiynhFUuw8SLH30jGLzkKjKntoH+83+D/ZgjdPTJB0FczdpmwTNkoFtIq/6qsGMpOcq0yV/dRSw9vo2JZYh3pF8pQuQ4ZXVd6Qwg2OJ+eT1qGw72tejkvB6VNYTAuxwN1ElbUONdbqfIMmmTV65QY3wpVyM8KnHuV+3WuDc3tFSsGlRGqdDjvui2SDYBtgkL5WDt23xnUS/fOqGtVOxD+cP0TUE3meKdgvNVRX8BeWq85mxqvoy2pH1ROGtTHUSbUl2xVJKwJsjLnHbdcpwt4V3MXkgROGtrGIJXZf2f2m2pD25OSl8G3Z+Wq+0wdcn2W+2b9aZeji/2d+agcAkoTd4gyBzWqV7SQMw9Cq8AhIG8LVcLktRnX2Jd4lpwKg2MqTHX8YOwpfNchss7X+V/mIPWmdtZUw5WMBpb+KLZtU0JbnWBntV3y0TPYu1n3bjlJdbPEl+9Vly1F3As1mS0Ea4z27dtEPyVDE91xbJZXo+nK/bIV5v+QCsPRiTkSzibN5HCT5LQGhaQKZUV+AcvGKOuQRQtMVZ1B4ikSEmwmZ90Lpq9SwiPILxLDeHF4sP+RVyqNGXeZhhM3XWPRVtqeQ5v88eKhOEZuvcYtQZM17loecXJoZHPdH8PeDeXtpQddhAryF9OQiHpFc5FrCBDvtZsjPJCmkItxU6hJlrZrGrZbfBGX0ZACANb0JtsBQ10bZ543Vr//B+PgL/9aw22Sk61phiXp5O15XNRcvZwrfM2doKZwuflrOFAym8nVB4CChBDWV3lDmma0d416c7Ek9yhNicnhSjMnnpg7xRbznQ1SuT6w+AwstwvwLKFUJg5mu+Vbcb8w3hgEt4lD/Xms+06LzYsdWipOSAn5hq6tl8yzYMER0YyrB6eiNJfWdbdIqgvn1Lw4RWnlLjIjDoXHT1D65DTYW5gDIVIW8AIC7vg0xsmqcGsgW4DQDYM6PNv35a+837eQ/814Na02hm/HlfvLXQPo7puxckg++AAWsog7+TERUXns1pc5ix5k6gnAJ0SbCM7LOxCNcpihn3saDB51pkg3FwBwPuLJb4NOCCWFLBaohDmXrCgWuuIR/KYpvoKFldcihr2IBrWqotlHgoaxgOZcWgDG39eBW7es9uWMcR9FwX5ltwHUX5Q7aKO1YTq/9D70dta78IRGZ9eM7gLBPZMtrXmdBQcS8YuIcWkdcMupGRezjdgkOAhI+n06uiWDdjWIkFu08n6bPkBBxntM1sM3DF3L5F1f8wRXiZOgzurGMMXkYYL2tbBYPUU4PqLriV0MI2ifG7CwTSAfuz1AFON0TVCzFNnqwtYoLroQtsQYhAagi7QC6AjiQL8eub86AzuTxvDs35tuFS2VV+og8RDORwSS8PZ1jA3bGa+Ey/YFfnKQMlHCE6OZm2HtqDu2jR5cRsIxNZPXGI0SMb40KfRWfhAclv9uaerncPKStvZgLroeACx+dOgGXtCXBR3GPZ8QxrOSWSjyr4IEsMwy0OFIf0dhfDi0NiJ2VJAAw0kgd6ZxWTOFsycQnuZTzT3ly3N0Cm1ULWT3DagSA+Jqir4neodNqzbbs6mbxMAVGdJsFHKFRRJ53WlDVeGPEElbOSAviLvXqhr+TZC3tage9eXF3wG77DdeZpYr4Cm+TzAkfR2q/fzzvgv56V0TQUGZMlB1tcvZDIWpFFlvOa9W1wpjGQCvysNXYoLuJVO9Ocx6chsHaz4zmrgFLopkQSt+m112ryPAPJMNLcfZEM8QKMvfCw84zmcI48hnGkyjMMioCJ24Q3FHRPSjmmANRniMhRZzs56kTWtrD+h5LDa7wcXsPlZTZxdZA0qBrc8Mrrz+hC3tgZ7L5e8gaCZrauv1p48LVonlEkHdw8Ts9Z0ugSJrztTxzOTjQ9GkPEWhUVioRKsZpU8mhWGAibPD9tm2Gh2hOkvJS1YAYiuk8Y7uHAipEMTdWwtvrXrfP+URvYEl2pzX6lzK5Gdvu3jywsRdlL023K42jPVwZ2gyHfGaoRiRLd+tCNoQIubdRin5og3xPKovm+2r9tZDVgjeSlgV0WwB9wS2UZLhVy0djadydy93ucsUaS575u59Jp9zW7Rd7+e5xRUQLWkVAc6FB0FBQbHFhRQrGnQ1GkKBRdP/9+/pZF1YnaUFzkFIngXk2/ORUikFztzb3r66P492dFWe8lWbUqa1TaIwDD6uSNnP6lkdNz5//Z7/zuyBvf0fjol1+59vHf/s//j5M/OKr++/sv/dT/9f3f3fjs7/zeH/3VkXPnvgjARs697dzEuTdG3msK1r7zxXPfwAdo//b+4zVy+tVzj/Gx36DwR91Tu3qNP1HdL7aZGwX0kE8cPCeRKEsZ1ypRih7LuGO2HU9usbiRJyclIF5D5eqSQtyKIlupN3feQLUfHJ5k05rxoTveFOElkAJ/62MaQKI1nuix/qYU0v430sYAlvB3UvDXR158c/6NF94cfeP8mx9+Y2TrjTfnv/i2N29+8e1vpr/4wpOxL468+bEvnt/6ItTg/G++evRjI/DHu14a+WoT/PzqN4P/yCSCeZIC3ZP6+VD3s9PEd055juoKHLdCF+t2ZspWAAWIinfklmdnJoUMfO5yJ9ueH0s5xK6rZ+nRGHDoEODwpPmy/TqRsRgSEri0nLUwcJ5gYelAEIIen99yZyL34VvoCS49TDcApLYP4dB9SFSpLBNI5JbAgoMgQ3RJi8+AjO8hK2foJymly4Udjt9Chy9deLYdBviefYcBUqHD3tmotAyaVB4fB5/CoRLIA5M4uIlUSNSUAQmCugUspq9MAJOGj/KKjIR+PpefzkL7I6Hw/AxInRt+2fjZPp17qp716RabiuPE4Y06ib4tr01iyY4tpaRDfy7tz7MGsxJYoVNUfplBkEp9WN0TWrNraEPDpDh7HksDbIDkaThxdahjQtFwzUA6z5uVCjj7GbgpgsChpU0Q3djtj4IFpx7YWV17BjSmf0tMzeBHkqtUGUuLq1KTySrU5xnKwQlqDTdBHa9sHPia61Vr8cAxFVHoyvODgaDV3mBYbU/acP3BgGyZFtjblW4l3A9G5oZrHMjmMKyt2BmYCTlCE5A1lDyNgBQAApfBbx8FAU6n2xJckgch25EbQo9YRqZLARDaNj48QGDNuNNsM4uFnWGclTYYMVWYkLRs/gJJorXPX6EwpI753CWS4kVboQujM8/PEu6s4cHSEA83vkMN7llGdthh1Y+pjr/rOTnsE2DdwTzrisS6aXcA1zYDJd3JXwBgbTmfdiF/BSHRbxK0/fncJQQlNjgPFbfI9OXHxjKzoD1ZuFtUzirvapcEDMVl4BHkvdMkKnuP3DPIyiq9CDX3qVatcxgJG2LPq9NmEewql4K4tTyqebZxjtRNsDj0OEWTaslhegtB85HY7i7jrc2sdcQ+KjAokZnRen4DhoEw8jqSnyXtS6e1/YXy2lHshr7TWEBQXVlO5XJ56KUQqZYdGcBRtpl3ksYx9gnbwlgnXyVjngJixEH1zFEdlv5jMsSAnGU0+gzF8CyPNJNwPT0vQoQEOV4k5/BtRMyua4JALUMc70gj5B4ySgRdrbOPRhZa6UlkeSgzqwCGOw/5YxF1VwnVEaXNnuTAAW1h/plOb3kySpwDgWpOVDOfkGCumfJoZYz0CF5GfbA4orq5w0ldj7RUx3duiJ4N1y21TyoJHQ51GiKNByci2iJ0GKrLhEEag84/W56cCxsBCKr/0WiVEUoVCJT2qtUB/7Z4goFxAI5dQhflyajpNBpQc0eAwMmQfpouDDyaTtckAJwOIRpOWAWLryMBoGQzIaAKEvkNYWNEgMpiKtDON2s0v+fhFgdciwVSwM0NkubyV2ukrcPzCFQb4hCrikCEqkLMoSbnoYoQV+hoJm/XNE/6UYTy6hJ6EUWcXDNU4qbIoKF4lEvLXUOb4Tajn13o9GXVWheZja89Q0HX+1mrJKUFrUZQhRGwxGT87AWwS+no2SDhWK/bMzNQj4MIItpzAsvl6cynIxTaMhL9MJHG61qubbbSZhkjYFPG5mvbLtOdykqs0C5xX7G9zX15doH7cuzyJHIl8hoaS42gzDa6ct63UF/zIdWRiC0cT4wJgKQnubSjwQSpdulsVIuOWVifgy3/xJvNvOHcdab9m6mLQDIPsmI4uAw9FywqlE39eWV86lKItNDnXQ8RLuUn+jZESvKTjl1JirXR8rzEEnBYJnzAxCl8uKb5S0Tiet3OvQrphzkrms/N8GIX3/SSlvz/bPRD6MTgdcDNMQmiBabYz0oBtMAcozSm1jWWuYBTEsq4Qoq1KUO8hBNo2Cx0gkQpYjitscwlgou6FiJ9hDhmIFZIXDtPsSjIELM1QUZyhiUIA2zYHc+2UJLe43WSdHIGJ8h9v0AWz9XhrtY07Fl7fyazQrxhmc6gcKNaGfIOOIidhuFkjj25Db4cFlDoygtXxhBaPTVjWG1P1p5ZT/SZRMPmLfdTk5OgfvohsAgS7dg8HE76QHp+2u77ky3PR2dObSZxuGfKTQI38mLJBcjPKg2nGi3Ceg2SSQJg4M4aVAb5ROyeuW99OqbvlcqD+3bQ1LshxJeSTqJRkmI1yRtamsHKnr6FBwUGf8NjAGSb5B0HiDes5XnS11zaM4g2D4ZbmiV5lrXrqySMFl4quM06yl9mgvhK1lpgH2tZa4N9PMxat9jHg6y1qWw6y9KhjDj/AxiV4xzS1ADYpQzoNQxUI6VCGTFKekzq0lekr0VThQY/GSsXjhWNWLlMBwqwJIIwv8ClQXT5DS4BIcvfSlLg+O7Zx0tuxWk34nzOYo4K8zOWELAjP9uzbgy3lcP4e6/PcpHmkG+sTGrPr/tBxx91/XYzpe7YgUARCiVYt/tJqdTbIifeLR+13BDetgMezEl4MGgtYLLUmyIv6bUIA2Z5idC3CA65fA4n/pn8NFKBEK6tK1jwK8SxU6o1BahEPKRQa55fT/KxkIgBkPzIHJ/Mz1y8ZJSDrWRM0ukbEkemOZjJiVjT6UNPAmd5Zun6+fhPmgf/LCNvGPbhzwO0BnSxdkN6FeLnhDsdSHPCnxLkOeEODNKc8EcH05zwhwnNZOTJLHBHC2EyuHx8wLDYGOXJeII5Af0+lO8M4R52ne0QV7PWI/ZxO2tdU3a367JcWfRAGUV7COuwG8RNFCMISO27YMClPfH6pIq7H2IzVn4PBYjy1wXVIuKf6hEvf3DltfvtzaFfr5AN6RAPVQSObyryDWfQ8LqjNEB+UhIdxGUt5c2cC0aJIUxd6Dh1t93aDVpeqY9aXMcJmxhG7K3wpqM2asgWDW6OqS38iDYlp5fclMuV53mxkqtSr5/GKjTN112wlBzkxJsBZK17ym5NDw5Q7o4bJpULkgtZKHbmmk7vyvsRia4MfpXdqBR6LfrOr8XHwSCum7uMjOLaLagu7JbXHL/aBgJOlE5vyxWpQBgD5tvQunvLBWwunb4r75gsz7xlon6y/ZKEmab7JNfo+eT+yNDy+SviDVNSO94n9TuUPAsDpuAM4/+0g/90I28a9uG3TNRdopWn19rAPUbPUbvKcxTXR/IqpUei9ilPRgRsZfPbCt6kN/RiDW6v83c1W9srZ9I4GFK3YChFAsgADthe6gCu5bKvVwDrcZUzw4F0gsJuEWBBKaMFui6drA4m9QXVUvx5iTheOOBOQhAqDwoKJ6HAtQ8s31XGMnClQWQ1Dz3IgTvZt3zfoSftD1yOLfeZjpLaA1NDmaElbItWewMFMh6GYnSoNHiELSsx89Tp46CoUKraAdJ6H76LXtnYN+pPcJjuCWj0OIQXRq10k3gw1HcrTtbOEhB+k68QhigYvs/1fkr+3ETFMmGzpz1V6SGQXiW5oOPptCcjSjIND988CLnsM6uC9Se3WFhbXBd07Tfo6ghdMfVjGL2q/jRNnxZdkc7RQ2OB2wD4UOnq+/S858p7AFTC1tFHX2VwXikGS49mZRbqTwvLsq2G093op2DLwcAiVI5Yl+mKihJYd7Ovzi4F6KNSg9vIHo64RrC3IyJn8aqwSH9W+xIX9Lsixvo26ridZdCGGrFhh0s/VoMfwfro6yTXxQFzKpDro3hjcb0gxgt9BSooLq0rgg9tff6KGQOUelpun0MGOrcQ2xAdSScQUJDtQ3k+1WZ+RldltFom+vsJfeJn6SJgB4nUL986Gd6MDV0err/DdvYt307RNvSnIn8Q+dBRYjdVyj3QFdMtUDvZVcGubTVUAbWtCKJ08yjJOZy/HklSbYtCKYfBWJwXWemm0OZEVMHRVkmSXStqP5a8Z9CPJe+Z9GPJG7IfzWci2WFdR0Nm5FV9sA2Hb0nuk2owoB9CJERKkKo4aDE0BlmxO/xA4feiLWa+OES31SJ8V6Rc00HkSG1iSRYUieH0FqaTFWJPbZ5YXLPmUFJyJ8+C1oiT76ceC0ezcP6S0oaZKiYcp+JCe4JEhdmFBzn22QWf1bNOKxaB1QMAvmUsyuONC8FWaI8FgoBP+ptO1xXxng6oUbgnAGbRXmi9oen6dmsarZfq+fbrG68StUlyr2uuTnGJfJEnBxKB+JBPY1E1NKJ8XSfKryY0UXWhOdyZeOKqPFvEzcqzY4irwniq6J+eGxJc+VX3DKyw49pF19py7UPX2lX3wY6821FaSnS/8ayl01syKCEwE5njbETkHS25GpT0WW0qLeuIMt/RkJiGmLZ0xLSdEFMNtKiQfO6Cz3V1vJJhEWN2p9Pb8vCIAFmSwkX1TqcLujIchPk4JyJnpzqpvElP1pIRoOZz4y23XcGM2i4VEBs+vIKhFP0cqstvy5OlRESHivMFZUqhonEyh1BYX0w+j8DnjkYUlCcBLim3DJhdxC+DhGMuygXOxvGXXJkHJJX15dSLw3DqBF9+aVg+u6hbGlf7HSDdo5bXxzKXB3h2h8MEJzseEict0SJ0CRM2cSY9LpYcn6j7ukyTAqRhVWej4kKfVyFNr8/W5bd8REzqIIdExbpVNyJMm4EbEXY6pCPClBeU42LOqDWw4tpLrrWWLLGrYIk9PNuOvKLuyOTWGCA2GqElkpjjl2pBCMdauj1D6dolWYIcFOdzitREmd3scIO01tRUbTt1upNck3Xt1TFOVRgo2Sv88g7tNf5TVZHkrDmC5Kq9lNiahRZuASCseN5XLxUSnfiZdIy0ux/AJ6HlZPIfgnFYUPnrA5ld0heeZYWPai7GKQp9eVNhzQvXA/62gLtCXpYO2RuwV7dUGt4460OXJ+t/bAz/zuXJOiGkExsiSzcdLjfP8MpFr2GN3WBDtQNVVayh1ln/G199l5V6zItD0OrQysoiNi0IIXdfHLq9//eHrg8F4T37TLcTb32UTSSpNuZrOhuWUqOJ3G+cfc7OMJBDdxM25XbCDjcBn7mefO6Bz0fJ5w3wec3ltIO81uGFQrkMWDOQBG/2O3lALcZ0+rbMPWFyVhBUrxsFVahPjX1YptOPZCiSg6SYV2HgdaggH6AoSYvytSnNYgosZehF1INT7TQ2AFSUTl9TblRFCCYulY0SIiw1pKZtomVLhW4mD+J+Ja8HSEKjPeAUhZAejtRI5v5FlRj1XmCYpiuaKk7yw/Pki/PE5SeT5AuTxIFIM+SLM8TXJU+P0i80PVwJ09x8TXRxkRB7WznrsbMKfOa4rmTTeEHwgeyRkku7nMdjA986FpVXNKmXVNcISbrXFJSKRAzVdPUS8R0oPdxV+dEds/SgvXbiw6NIzOqOQYxQ75ckJBp54g4vT4ghWbS3Sfdg915RmdM9k4yXcC3y2pFO75ieXkynZ5KPDs/3DJ3XHJz5CoXbb1qbZjzu6ZQPNCfmHWXuoaqXOi6iGCvKpbCIW7YPQFbZXnWtoPw0t9v9jlblsuGyc+hHDrMHS4Jfi3z4m+MBN53lskh+Phguq/T/sPc2vZEkS4LYzF40Oiw0gA669lBU4BEbVdNksXtqspHD5WcVi6wii2SxyLoUkpFBMoqZEVmRkfyot30WIEgnYSXooLtuOiyki65aHbX6CYJ0FaCDAOm0A/n3l5l7eCRZb6ffGzy8ama4+YeZu5mbm5ubDfubeVpDapUuum0auoEjZtnP3Pa62XnKYbS6bxE7aAPKhphOhi/m0qBe2jYPfutQNkTWekNnooBz0Mw/BzZRm3moh5KhiSYDRWwwVCra5lI6HfZneTqJ50zmlDVwiSD9rqZuAS76/O5eA4sqRrOtAs4bO1dklhkigm/qsN9s2B8M0xGjyWVHmsx8NBn5aGLwJHN3JKrKDuJ6RwpCOwcpbnGhm6E0HaE09e40cnjY2DpMwwybhpHzkbSK8ekOtieNO06TRXPa+7r2R/BGMYOgPIQO/XmUZ3kxabx1LSj/fQfsQlnurBbmipcbRHVuPANIxpn42gLnwuEEo+dagxAeRCgk1WMfqHy/H9Jbw4shUGseTJ411b17t8C9I5TV8bpYRcSU96AYQj3u7d0b3+jCv6UI3GhhfryUXkFeuO26XVme3IgDKVtkNx5ZZ6/u2/gdDvaKdIn1h2yHt6Y0CXvkcmHlRnbkkurG2Rv2KL2vIYX3ulLYFEOhMCiVDFBjWPDZzQ6TAHvxxPXIBYxL94YOe2J2eR/TypcKjKylG4tmOcnYw095FbNCflNGvKN0PYR0vZuHrjY977rRCF1Nd0OwXlC16qTjPoQyF30Py4Ldzp9UwGgiZluW4Ohj0COIkxlJUXBWwG1ccXXYhUL4w+L3+Gg/nk4sO6bifESV8DmfUqzXh/2jYfo2hPtlTa1eHld1WkgH3lRekCYQM59WVyzfVAEPB2cUbUNw+4/3X6DNBYMfN1Uo7DFzWtAb1RFZdpv65zr5eax/viU/d4bgZt6wgfKJpa/WVZgo+XE/v2yUNZQ97Nu8HpRXRqABmnL3mMZRMQIM0G+v6au8iY4sQL+9LaZTK5IACwhDzXrrzIFdtq2DCDAAfRewSV9b21EEGAQfrAwExgMJcMMrM2COqoxfJVwPalL+07K5BEy6MAusSY4k2bKlpl2swSmhkmQTB6aF6o2oQDJJjl1gs5hZUSFuSbLrukFY5dz4iiCdJPtuRRvAbyL/014eLWsjfmHEr4o5lsR86yG0GOLN8ibe7Dix5Zp/Uo0wO0VsAgATT2alPwYgxkpSjid6JelwGXol6fAYYA31OCl1ZAx3DWkAERrDIqso5dExdsFdgU3MnpgCsq4I9D7qFQMPTNIMLioPwfx9dY3isfxssuQyZMkVyJGrQX7xvaDxrryvT7XynCWxDJfEClwRbL7xGaI3P1+x+dnHdFEsJj8dTLc8XSDEvtUEVt/y3aPQ8MQVyNL1VWsG+wTyC8TsK7gDoCzjTWBA79aIzusg9tU29DstoNVNvFiF3lfzqCAAkZwCLKzZsP91mG5AbLa92HRTsbdxhDrozxyn7ejDNHMtGvb30tOhcelPZ3QpPYAKXeeAIJ2jffCwxEnyzlVcuKGT3oiy0MQsLlqSnGJg0RE8zJAdUiRdWi/5jM4Cr/hi4nJ0i7thkCGGBggB4iVceywNM1xG6I0fswvTnfUd2Fl5HDsxdCoDT8H9DZGBHxiHvdHi44As4I+Q4T50Ex+zemTbkEU4/TfQyM8j6vst9zzgPz33foiVPqx3j4VXDwQdBWTtDyZrk5ax9CeiPnaEfoPdmr02eZ/TfWO4tJR+g98/0u+vhv1vw/Q9LN2npWfD/vthes7+/QRhvlCYRVb6mf2bV+FzY2m5Vl83zYQGGFP8OskHNfsgTwMX1cgIQ9cMRkVmHAFIHzrsM1G0vhRS1eeFGzyU6YpsgBL3Jjf1ee6v0pDpmI64yb/1rFdyrn8NT26lZHeJV5J8c6FkEfPUE9gmySsXTBZRMEqDJHnvgtDPzMeHUSVJzlwAXsBdfIZE/Jy7APQP5p5HKZckn9xy9l3W3+ABWBexRjZ4WFhJ4CT57ELxAsNFyCB5knxxT5pGaeiY+VtbTf6lFLGOYhZR2woKL5/w2gkunPZVE7FkuqwX72Lpcgwt1YXWa7DHSRqzPfIbKJbkZTvkK1BMqcvCJ7wHRZy0PeYHdgYPrXSLYL5f56CMUbZHz59rn9CKjKg9dv5cWwQQnKY9fgb9DE/UmozSV40fQL9gB5yqApvBFdkLykrt9nlFVXAdPJj63FQBi26T3zd+cy0pZAZXriVVlWvxZYpSqsJ4kCXjgoiSJeZGNBk90BSkmat58AK2nZNzXtlAEP6d5Xy65QBuR+w7KrZqprUSVJTM4sqoijrHh6jklRiOElm8by2yWE9mnFXGKpc8fam0ewHhwyLHOdQ22YmRujRIDRTStLTobOq9ksilSWQDQFG4NChsii1B3tIgrylcbs2jX5RCTNAJ6sNcmaULvaqArszRYUxeglKBC+PzDAgIhghnc1DI0OBsnoFm1fxJK4M0OlG+a6r+6TAtqn5ZpYOnYqemnZ2K78tO359bEPbAnaq7sUfTwh7Fd2GP78QATZABiidkAGyNM8srXePTql9V6YSt8dlTrfFp+xqf/OMaR9f4tGWNT35La3waXOOTP9QaH1U+A37AIWV7WNiJeWTSNZ2Z57B4upw8vDsjKY+RtU1k5eHdmfl4LiHD4mHwWE4Mj+m7KIc5fEAFgsPZTSD1TZMLh4ambwaL55HV2uvBUvoQiVjhQyqrZlSzMUxXrSomdYQiDDh2BRP7HvBkFFJBrAoGjXsxWMOFY8UNXZBp8TEjA25ffohLIpKgxXpqzAZL860IbkxqyIxsAEQA1Gtjl8Xpqr3XUz0iC/tC/xyQn7f65w71QYIr4dKdIZiGsJLJ/AKZW/AyNGJkzphzvfGkLZfFSwQ1j1c0vXhguUWS5MKFESXGMee29Zhjr0E5ACOzJmtSZ/dlhxcmqC4rd0Vaa8umm5doOMXQJQyI56NcK9naaIYQDPLAZWWt/yy49PHcREEG4ZkVy5Qn+bGzEEl0e3jyIemLeW8OUWBK2KlYuwA7Jj/crJKyW4zVrqr+fZXuaZaaEQ67rvq3VXr3m2KsqwjG2mtnrOs/Pca6amOsvRbGuv7jYawrH2PtBRjrGmOsw6r/OT3RfFUTvjqCauahud5M5/gTt0DS3fasP1S0dyqjNRHX+kM1+FxjfGJ8ZC6gFJm3cPTrvtFnzne+tu2hr6NDz54j1ZBxr5vj5jOf2YPeooPerPonVXoMh77Vbeikoaj52IpFijYYO0dbQVzVrG06s7ZDCbALUd/piHprtmlxzKFXtzuWLAD4B+ScG1Nc4L5jcqSD+9A+9HhyV+9H7mM+l5Ipwd54c+zZ0FCrBznjZEjYd7gRoJ4oTseBXvEuTWoSAWmJX9426gKPJx9MZcMeD56v2IEsYAoKHMrckybir202gdS3TprUGoFc5fNzCnbS/AJvU75WS0vpNrxOdxZS6TtvljKN6he3giTr1Eomyq/ZgsqPLvZcyoJmGIOaa69Ez5vmWPGB4t6CnjHjA4bWJGt5onlBv1SWetApnTlPPpupVUzTfyqdQAaDSBpPws8NKknfwRW+4coRTJJaMq+LmNjoIEujBYEQqxthsdrC7KeUHgeQHqfflR6n35Eep4+ixwdKjzda2fu0lH6E1Pngo47/YeEbt0pGo/y5SZs/oITxPBx8Uz3H2kNo8sGkCfo0kNfuvalscrzG9oKI55XtyTOMKIAiJcS2J4mGT1sRKS+8L8SxAflGgx66jIFhozLpHH6MaWaPQPYvkTQC8UTbxt6Ff4ufE+dd+GNzkRh5RdpS2yDk7JjaI/y6T+XSQJ/A4Y+1SNOvNGd/I8e49/GknKjYaQZBVQbCzarOgw8GXUhJkKP8qiCjJTVfuQLCLPabLdyGlfnCrB54Wm/ghc5aCMWu+PmRw+zXXV7VKyx6VeoOJZyTwxwIu8h6hdkAzui2cK4Xz6ul9JP+9X4pXaz6b6r0s/GNLK+8pAG8hyVQQkc5UUKrEpznznznuXO3YFhcsdjkn9yCbDAZXBSjoilyKwYyF/BJsggq8H3Dij732QUyo89dVFVDqDWYbLGALGRBlA60A8HaLsmIBiORQDdJhm4dG8C/3vlw9V2dHSmucvtWGZHs9rmf+hm6255X9sJWhDY3W4fKCOMYBIe7dFrZ1LYOkZLUABlGagMU0NlFk9HZbNslMuS7M9u0d27r8p8qS49vfS/PqUcteQbBiPIu1A16pbQI7HFGDLl67TModrDurRKoHEa9tVDtvSRAQxeIcnZZ0rhUJdgHSjfiZ1DFI+JmCtXcsozT5nRtRHcrzbiaAhI97NYUk6bsf0sHEJ26EzpsE2/cKip9s5MtOBJL2SjeIoJ5XbZprSoTdOOEgp1CCkTorRuuBipN6PMllKOPHYNKgQDwCzs385uoENjObWwQVPBIBLHp3hCUUHxi9/ONwhIv4ZetfHsX9v3SSNyW+bd3MSQiSvxALOda/IKRWPriP5I/6wf2DigY5W+KxhXmYqsJhRa+HEybHe4Dc+JGWwhOCxpo0jtaZKht4wwM0mRvOSfYkrCGg+aP8kUhViOyAhFb4/A97ptBDW1SEg1tRPa/9BKqaTNXeZmy16tHBC8afgyoQ9QMmw83eexTQ3zKxgItBZsxLxiMir2ZokBOQ4Na1Xojo5B545Bto0ofIJZjoKKBGIoSDgcyh6f29LHT/T3GeMiWVHOSeIzNLmXNdryN4C24KxUGkJFRbPHQMhdPh5AI6Pp4vIyG4tGTlVAsbzEsPeKwqasJjH+OiSIJaQ5SfPVEtb2Jl9vWSTcuo5wX8K4uGuxxcvsROyIpHQ5ldmnSZxIKsZ5GpLRLVcs++XhVqmPtDdEX9hyaZz6aZ4HbuAzEs/fBKfXDeTaoUnjsydRqJehBbVKw6JYirVW7zDiQXQFofSbjUaSzQEKcDA93nhm+yZkVblaHJjeqenU8l6hRFMXJGaalj5AYFRFHaIegXajpIaWrVGaoUlmjXwv066BvnSb6puYwsX7NQg4rmZsloVbKaZE6lO0NDE1lmgoK9iZmHN/Z2hU4z4JA5isEDI1jfk3PgXdQLl77j4ChOOZoLvlrz5nPG8gczSYvznnXJqEteI/QP6QYnmihtEeE0hFUYA5dBUY51UDjkyd7zaGl2xj1fZUxvxxTGzOy15w4mtA6xeotnLd1/7xFZq9Z98xWh+w163Z2D99OsfV9t2MzPIGZwjR4ygagS6ppwZNJ4ipgVvE8WVvN8LdO9zqPu9lJrIk+Tn9A4ygEKNaZXBG08hIq3tjfJUandQXgaD1lCrAKmw0snJjxoMFBvAlyiSDehCIJOmDZb+9VKjOVCWW6Qzp7eDvTz1FYMnUR3PKglGU6GguPxTY9Iox7YCVH4W+YSIuD24qqfN58eV2eCJnZxVjcJ3PEKvITMmIVAkoPtSeGL6OK6aEaT31YcDFK3mO9AWwS4B39c4v83C37V2W6H6+qhs06WZxZx1Cvjl0l0rHA2YXCD8zQRqWS4KbHs7SxzDa0+ISgA2YqZ8d3g0mS7Pg0Xlosc9XYX09XkmQ3VO10hTsT/URrqmw4vgHKvDh+jVliLXjDwUkwhz0EK1+QOzoja5A5RMUViO4csKQFFohndfiXBlwXuH5tLpHO66PT4phnZcy5LNA1Ea/6A4Nh4zkPHJfWQQDeLQTTH9EdJHOslVrrb6SVuhA+mKbSv5xMYZJG2065QkC8e5NJzN4qgdyBl18WvVU6penaLgCVGZnElBDp6u+aSt2vVEv9AtW8r1211CcyoyuOMmIYx4hE10Rt2rRhRlKDpYg2Mw74eYz9EsyWV1KKabkmJdhwbO/mmbub//LV4q6AQv+UIguVQfOJlxjBZVPZgGIkhgLha+lIAsj0DSYffJaBlrvtTF0t1Y4YaIzDv83Wy8kgwNZKQKwQMMCnwzHh9VB1XIsaMFVpmzLtBmTa7a5Mq3xrkLiM8YdMpxXkuLltTqYJ7o3PSDE8LYlUTw8gnu8eIZx81+On4HocyxTxLp4qbp9Ih1hvCPXeWawQuG0LZYk4dbOrxpxmnOckG/zuyRMC33nXIKEDD0DezHWtH3ru8e6P6srf+77k3W/AFwDeQ/XfFY5Mb3cP4PpWKVdxZrgJ1DFuAn4gKkg/UjHzWp80p4Rk3yBjfPRZHl+7BeDYI+vjldGaiM3xo2lzlCrea8fg+Ioi8x6y1Kuu0jIqs86ph9NsTngVLy/bM+ucYqselZivTIk5f2ad08KWmWeUwueQwmfzU9hJKDoPufB0otEUYMlEO24GPIYKASjKKzPrT5blEzvQylH+Jc8MgxaNxkL2fx5156X6dkz69tivuoZjEcMy4rHIYRkBWeSwZEiW1BgWj4LPvtFhiQj4PGzLYknzcH3WEqMg05OBBbEIfe1KNpWf3QKy/KadTkPq8bfH5x+8fnV2cfkMnu7hi473nhpjYIDY6PCNBwwUHaW5dsXbx0XHUXDa+2yt5kB6c/nittszgmGmwzHSJ3MZ4Iah+wL3ohoSiZSBfNpGQjp7DxhaT41VdW9dcxeg0L2h+bLYgO1lub0PlBnNCplpnD7RTA1Z/3OZNs5SLX0KV9myCZRSEykz57tcRRkoEFpK7RaEWKCELFC2sEBpBEKQbx/JoBrva01e6Hmr+bvS5Bgzfi2v5lXkMAqi5MNphxMuQDWMZJ54ul6+jCAdRjfsdiHmqoeogKX5lq/pZ9YL8n5t/hygrfrNenrTk4EnMvm4upYbfMPFS6FkysCQIFNvmDSOuXydyq172OvUgjBdOoDbQ+G+upw/BXmR4RrDPCnIC5PcESnIpxS9SUZmLZ1BwTJ1+TysFLVLHKYDTnxixXyj/ZPMbxQ4u5XY2c15pG22wzbMqcWCAf2shfslKggenifcPpRQfCBDTjOHE3FrO4j0MrEZMvZlt3zrYGieGdO0Dc6TZzRpqWbhX/xHtRFko7ZgRT6t6ibGAN0aVQ/rx98J2oPJg76nIEawHFDke00Z0JAo315CUk7viia7/l3wMYzx5++zwTT/4cce+89yb+TIs6VfLup8cPPLML8czEZNr7muq7sfyvzuh+26rurfLXwop7PJpKIJhn4QbS4Q/Tr1D6nreJ5gMPDQIZY/9nBRjFZA9KsUDIqzxg8jg6M6j+nXdIyxQYtxF7qSeFlGnzNGg2lz/FBmNLEUWksD+K1fGkZ7yRR1EzJ/BUbt4z7k8IGM3jf0R9izfKoHxKFXGXxcpnoAwm8FhL1iZDKzzz5Eyr+QH/qAuXbw1whz+6DbjZgizON/blRAfc/vs/5OepH1z9NbePDSL17Fwwf1FPICHMksAO8B2Abzp3NF+rO0KaczkxB2IXYYvXAjbzLnd31kO1tKr/SvW6IE7GHz//gHSzeuKmo/hX30eyavj1+SXIGArhYAOoFZ3wUTE/iYl1A31sy6BGjD3o86psphVAiRwFxW+dyPqaznujeWTjffMyvHAQ9b4lfYEr+Gq1gvEBb4ybPbYAGoNE+zUj8r2w0jrZpU5uGnUAMSOOORqneaTffIBB/GW1hCl5KU7wrqKvdgGj5uXyTJnXsAun3BTgjsgKD2GI+pQ2+bXmvH7Qtt6HjBLvSpRqJtum5PMoZ24ECCHIA0dqiNQiAajaUHxUcYJtqchZgLKkOBnGxuX7DrqDuYwILTrsdpyXbz2tToOUbsxTtqQDjxboj+S9pN+ha/Hkdf0yr4wEXtkV7kJ2SC1smOXaZv45d6q3N4ifkpu6s3xotbQnHnZDLwFnMBle/sQRpdS2h78hkbrcz859ZBm4brHP9FXeYO3GxdvMDPeaIj5StM4TXXGW0HWC7sW+6hcgSJA/SNs2FgdG4hcgyFMfLGcz1mBHHD2oJNdtA/MjdQvwFyEvRXzxyn9NryQC+knWSQygeT3CDpDkcYJKnvILVDrsOI7qbPIHUvPMAeGW0RXj4iQolIq131cCnlOZup5t5bSffzAdfiey/SzVE+qNnfqylNUE3/3NVPYX5SH/eoefVn9VM9BPqb9Jjw36b1MrX3Mj0h/9khusfJYHrT+1v283hU3bGfyz+y3+yAzD8s/5puRgrI4pLw0PLyEnLQvimru/KHvJyNF5DA/5a4BKeX9Dj+ON7RQfIP5P+IK9m/q1DvxsrxbsRP8N3iEyAqcrsTYhu2HlTjjvoZxvXtGkHl+A1mwFsw4LBiegvWwFuQcuhO1j8p01243nfcc7D39duOdQXpfedmvGnbcSI378cvd88zX2YYDb7CqvEniuEbaNdZxP92qcbfLoYulUV7PTvobvBJ49esv5h++a0Lhy7eco8SJP/C8JTzKTf/cAVLtJfdb1cCqSuF1RaPum19UvhCaL4B5dW2K6/YTbYtqbYtSSUATBnFrm23Hen0TvdNrwdO/5TYT4s9+PpVycPq+VVe5tNimiTvXOObKHlaPqa/Re/K2Ut0pJKxUU8y26L34renW3RxtL1Bn916JgmdoT9qKaK2WxrjDzzTFUSgueTqtXfgtOOupR5PJlezK5SDOQTCsM3c8qqaTouJsrZ0eQjg2mJCrv26o4CZ5kN3BDvEG4seLHPtx4aCOyyW+bgqaRZt86qAzd6WvEc7KcZ5NfPZhj3QoTf8aAXtpJ+z7/KMg7gvqjF73uaHhx81dozJQazpQNpuMUTCz54+RCBdcPUosJePvZmf/FxW7VY3n/lc+n6mUlg4we+Wl0SKf3BNbUZpB78+t+GAbx+CJY7i41zwUFS9eD7O8NVu8TadebSbXO11kzNG1+PI0E3hA2Z/eh0vuW6ixPIhdknod9MJC2afnw2223hE8zetm74ha+CV/nlKfr7XPw/IzzP98wP5ea5/7pKfn/TPDfJzUf/cJz8/658fqXyq1c/XVMTWgM6GXKxtC6CSh5myAyotbyStgUrPy6RNUGl6X4BlUCt9XwwDoUrNrr5KOyFPzc6ScwJz4dryiuxoXFzVZICnK3yIPzkv/j1uMX6HGHA7FXAxw8ppfCv0Vo+nSLaInCTfYK5kC4LdYKoZSJJX4MpeFTLXFzkzSfLehVRlrE05YUlyBpqUZRQQzmOSnLs1IJBZlU5zknzyVdpjzsxw/pNk0VdFxaBKscWRJJ/dihCIae3m0iEC2T35WeV+jeKPlHPa2CbEM0GG8XFLO6t04pNIJonjkI7s0Z03ujLGfFwxB0sE+OEJvefick0CHzt+ZlW38aVxvZ6ldHH16rR2r7aSZu0bODxmxnUXAXgFANTiIAfYZu09bEBdi70k5WegHK4Deo5t1s69kOz+7AUdzScvjLpU+5mOahHeAMKbNiIACOhnAGrNbo+IA5p4y71tpPpaVfe387SE2oTHgMYdrSr3M3ZVYTeDteFrwFTZhCsUDA+hSV85NvusjrhLdON7fSSLbnAxMiN80cAN7JOO7+VooyocyEsZ22tMljJ/D/no+F1yREYELzkiI34XVFxV8C42lh4fnQjdRae8xiYb89SiXMREnMdtmL5co86vQYDN60HzFn3KiHhxuT2Gu2vpy/IFEy1Dp1bdrq/MaBV1e23q/nmVFnV/XKUDraXX9VI6rfs3GRFp6mNGPs70zwGR7yP985J67NU0Yc24ZsG/ddFdtZTek47SC/1tQhNP1DS0xk0NjvXG4p7mo0uRdUW5pJBP3KtVLW6RwGVVrnWpAb0UH6ir81t50v5ZfByOlebyd/1l5tRBKD3cz8ur5nqqdBdZxttg3SrV5e/6K8u0THjHC93FCIxHECOsT3DLp2s/LaveVhjPcZ/kzcFotLb848qq/7wQYdBwNSOPF5Flm26A15LIS1O4BdQPhKgAA/e72uVwZ+/y+WVV4wm9CT0Znf0YcUk7dbu0PWMn2Eh9AfGYY49aT0kyA5VVoQTlE54kIwyUFy6lcv0lySUYrUjNUxqBi8cukI5dbK3UJHlwIY1SCkzDGd2DSRzzx1rugk6SN66Fyig16uiFniQX+Ag43u7y9/h76qcyCFckya3bhVHK6zjMkiQfXUR0od/S9icrSaIthh4ZEhQguPRARUdYbviERlBiYOIiJCv8giIoJWJFRIx8aBcOkZKhVSzEyoSuAqGrNOgkCrrKAZ8QeKwZGgn52NgR3grbH3NgvYGAh8gJ/DRDex/1p2ZTl/2J+XMcYSK3TqUwoKTIn8bjSdJ355obe4OUMl9vmnJe6034c46Z/XhjJB1DL1PND+Q8O16bQa9QxQjkPDteGwEAkbZtlRRegkIVwP4lKR6DYmPh00PseO0BgAzH9Og6XrsHJcZi74m1/jMdxRv3biDVy1wC0rPreO0CtCkf0ApmoIfXMXa9ZaxtGYaYCHUCewua1Mu6J5iAingC+hG7w7hiOvUedkxquWS+AsdlLJZS+HL5yj4rY8GRQvfLYlVdOWfi63hsjKgT7Rc3aYfYapGuLU5iBgjr5sTwG3P1i3/Lg0XaWp2GAh5rCE3a755w2rQSJpoqQZLE2/NiHtKoy2jh91GxJ+ulevsfDNp+EwrX7qbhWEWAKFPe1TQYzmH8MmaTcucy5AR9k+if1TuLGyfocz7fraKA7t05vHhCUKnToznkywme6aCTfDlBMgB0kC+8Qu/EwWm97u+lb6EZYt09mTD6eQ+srruOqy8HHvdYWrVSdei2Q8OGTaee9+82iFEz7kAWeARkDEidlphh2cgYUN2V2ogIR2zkCDDHJAKsrVuqnktY/MiCvufBCTwvdbuTFqUr1D7Xa0dGdfF+YJyoBZar0nH3B/xRjpi0nnz2RyaN21nrpdTEUOoWL9FngJZe85JF9Pa9Ftyq+5/TTchMW+6ql4Fr3Ids1WRUXXlsRkU5zMlG9to9/5Nft0V+ZwfgWaHTRXThyWjwwNNAvYcGL1WKckPdxxpijhxb1iLTyHgxQdHAcHDh+dkKR8eLC1yBW7YHph3zCpxNiv5rM07qoHvUHYY9OW4wZMlpQ+BHzhvGSHsCMxrF+n3trqVjuIyMCWY5SZQ7kD/EEhrn0g6yZDeFvlnlIZD8fXo6jL80MQLOsn5CGebZWxymVOzC+6Idc5VT13W583eJFLij1pbbgre66Rov1YcdNact8QL3qdj4CtWKfVdraItqegP8SfctpSEYz/TGF8l032Qej85E0fgSrxipl5fOvAg/BuNiTPsWdM4ZhXtRWD136dbbp0ky1XxEzAZ1Ga7Xg04w6UuDRPrbhpJh7quTPCZUiTQwGvKH2cai3l6U/vzKthyCTfqcBttsuV6kAEa4oAsjF8DssYY3+NXvfqFNXrnzWmDKMybajwY4WtTtIiRXN+KXVkREAZ1h1X91581IJ6YhOi8d9rQ+vNbQRHLzvepHMQ2hGVh4cXnlcHT/kAvQfF2vM97KV/U68FaNvL2PW43v6L54CneVd133RV+073fxu2NLtO93lp26Ldr3QfxOGVzU3gTJ3qUhUhyDCfEM9ENHs43XECKMRZoDYu04uE0EaS7GsAPqeR/PzLHFmsevH/ld02RQ0MBl6HFOlAaCn5qNRG2FaNxSdCjoOOKFR9uOJNrsif7xCHvsWUvwkLPMrtRuuAREX6XcCKsGhxzm06wuJo0wUaA1DBifDcjs2Yg5ze/3BqNZrmPCgH6lKRqdCgSdjrh4EYk/at2IiK/L8pSFPx1hiEpA6bVm9CmLVv1tsGcldFcZ1PXg4XfqUUS9tJR+87r6SRIMn1+OBldkyb52j3Tse4BvGP0YUOAwa0CxLkytTrQfT1NWw6Tqa8xl8xXB+XXTTPaL8qa3nB7mg5r9ufJr+j7G81FGUVl58iAqZ3SjPYey/sy/0SJ+g2zJuPk0PDus6wco6yJb65m5tfJliXnzfYr0jjTvfNrHD0eK3hnhCNxgmU38GCzSWfgMJeKiz3qIe53V1CkeDz5XWbvUClM37UzxdgUzWbyH25xGeFYL1DyI+LqYQ3XGiXMtNmTPeCH3Lrpm6Bjv986mP4oU9XuviOILcsxTjRfNMZ83/d9Tl28GvJzuTrfvJ3ldjPOyGYx6K+QDjeBEZOxWMaWOxMPeC/JtfTLhuVbU11XylV6Xm99+It9EJNTrYrJ9S9qcqsKfaTNNM8iux9b3vyHfqXTSX14SmjYdxNTLJxdTVdN/ladlE9QZ2IvNkhQRuV65HMC+85W0Kl52ZrOa+iI8eNQ0A8KoNx7cfyzKYXXnqaXKjTr1gHwYH87K7Hq3JKclIgh8qiGEtMdc5hk/7ueT9VFxm/vH7kKGdB5NOa31ADJp3cehhHEd5kPXuBXzYeJNoY3NbceJnWNWHzGlTzKfrZMZr6MwCvUEFamOUoErfYMqPTG8FfyFuiKGhFv1vGSHmMsaL/EaCJqyBk1U7jlHZEQm5GVvIS8X0qLpLRTNQlrPegv1bCElWC/k0wVCqt7CMF/4Na0jpZiIKF/xOPK07Z47Lcsytj2DIL0CiBULgowHQLywIMhIAcSqBUFwABA/RcTYN0WvFVzfjvOvvovw+TJuPsWfDeCHFfmF4Mu/vJBfCH78y6qqNRVffpJfyPjVMEVIfrkLNk3/65BMINDkGuBKNCipv2cN366UVzPmCuoJdtHk925cisb2yFEth5uFbVqeGLSVXmM/SuFt9GpLwyB1e/AARfXBAaRDRPgk7EEQErq5W6AUPFBzyN2EB3HG1NxpPFrGZU38lVfbtU/k5Vf4JidwDTZpiBo/g0hO3Gnpfps3saZkvtu8SUT+EorGiKJxCdEYPR6N0ROgMYpEY0ww2CHH897yr+lDF/X16UOV3kNiXlbue8xhKF9A6T98i3RmD1AgXuQjh/6X1XNvl/7+0M6QnszJKoa9y8p0cuXpv1CBwTKEIU/5SKu9B0eGXNDFeQun86JxbEWYow39LtxTHlx4h1yyUbRFtDmkLdM3QKzeC4UPfSjOnEXM5IIu0txN4IYifQWRvvkeSN88PdI38yC9B5nGs8bj9z5s3UZueXA5Bna66wYYP/eapaX0Dp5gHUFQCq5EjTgNPT5cQ29IMjLfU8R8WDT5cL2x7T+rygS6SZnPc4rUAMah5VFOlkjf7olTPQVTn3/iL7W38lEus9n+Ygoyi2QovfzEQinlsUD5iNaVYii54HHOEp+o0eo6HK6hQ9I4Iq3LlNGrl3F2nPbqVFKk16QaMXUmY0njgi6T7BSJQqnZ7IkJZs6ZBXvsfkiF3Qlk/kO/+oE9Zeev5mz2P/SoH+BtuqyMqB+H1h7F3wthIuAoXtltS/qN4tJyVx2LVThDdwC/9aa/mL6N0aucS5q/FR6d1LZIoyMc5VleTBrflU0XSwfSqny6JCIyMF9dMmgMcgH5uPBruhmvO6It/FW/X3XWKJetaVru9wHOa2hn3KycHlMe2mlU3IG3RKrtQjyOffrDplvA7j523K/TvGnI4dUNIXyMahCb1lfZIN4aokMcmzoEVfs3zQ+ybm/H0SL2gzbjlR87pStlVV5w010ddkkSAKGN0Ozb2AXN9mUYRHQ/8o2968DRUccznZFMdOXHsANvKtrvieGstDj7ftUreJ+s4C9wLj13/fQPjyHIiPLoKSdbZuYL34Dla5RTMcybQTGaJslXmD2HlQTu0swGhCCEF/8OVkGUvPjgyISWmIkXihS2VkC41Az7WGMfUU3Gt/qYnChVTMwsZdgS5UWHompSMVS9RIu1r9iLtW16F7d9/OHtdm85/bi+t/3hsLeSHtJPx4fb77Z6L1L51+qv6UYXo8LqkxsV3j2VkZDryY8zEso2Yo2EXNfE9IpTw2xz8O/WbPMhnsJBH7gY881BjPmmo7NcqxnnoNWM4/Onm9ecc+DM9huqqHyEdH4zj60xjohvutkgI4gkNJQ3MfmhcTK8hhTw4BJv68DG3cnWcRBn6/gGbR2vqa3jVWfu8com0gdGDF+uXXCSt4uNQ3o8e+ECjw7MP6rQkHzjiWE+XHjKc/s385s6wgNo40SPzep7dPZG1aD5eRXMRVM0M66aeCCq8oqDAIIL+JbmPG3Za5ZX6+laBmlkJayUontG5dA5xPmsqxyKuLiifkJbCszxmosXTm0XW243mIOduSDC115Wa74rl0+UiotN/zz9DFX1T65WHCYljWM0Gu3Fx3Uz9XH2ZpkolvlgTPTWRbdnUWK8bzaDx/gPdXaoqKd5d+4O1zgJgpGtreCPy5lJ9JOlnQeWDkZZP1k9JwNA4bnI2522kcbTT2682+h4R76DhnLzE8RDQgwJvNVzcRoSFrja2MFzOeRK4DmM+wh9lcFirjB5QbhvWBDuqwp4UHY9PKO5z89XQ5BmVUy8/5zrrvRf8mKeVRuxJIcFtiTRw2oRtVailwVYBvXaEPP8LOl8ZQXYc8qi454jCWNvJWURvZXoBpBNorTII7D0bAA1RamBKNVPg1L9RCjVHVAqKEoDiFIxL0r+YyJbNxDrojvWnvOg0QFClSKSKqlqx0ezKaXZBNJs+gej2fQPRLPpk9Fshsjsp1GMcA9hFnAdXAy/5GnWhrTEo8+I0n9YypMY1NzK05OrSRaFQxuWS+y5KP3d9CjfO8CI5HYBXUoyCnzBrohGr585+qY6hVwlfz99agQF2Nxyqu2KVy+WCJNEWGIF74DNfkxxFhJd4StiPWOYGeFyLqkWihgQBAmTOSz1pneDOnwNKCFa9VsB53+6G5pBD6JBLLuLHQxbHNV4oTB/ZIHQBY+SFdpAkRlrsjZWYJPKcWuhUQRvGMdPyOPWtOGpOJQy8d2lADaY4EgeKSTC1iNT+wFbR1iCPMwhQSBvq3i9YQY3wVq53ASOYvUAN/rGFxhcPF+2MZbVsuYcf3xQyjn3GOdgzkuDabPJw/G1vrC1YW3rripBV8kFGc274uq6GT30FsQfCyl7eVQORr0F+ddCelhXwxl7ZtRb0H8v/JreFnGXjc7jINlZywshNYCWd0LGkPzvhb7jWx+JjvPgRw3fefZjDNf3tOeGHgavIHFvzMOg4SjkeCOrg5wFgjgI3aijmPAfpv1ew373ovrdi+53z+n3DgqswPNqU1a9+JFH6KTx4g4uL0dFma9fFN4YqDaYX1zhzTKJ5XtE7RFWLQMMjw7Kq1vb8BbrrKrfVpep209PjNIfeOSwUD5Fh0vpSdE/LNKjQl1h1kRvWtcglBZvGcxW0V8v0k1dtF0vpcfs447+OCaY7OqfxwRmX/98Txr/WvT3i/RLAS5NC3ppus362tBVPpRL6buiv1Gkp+zfA120QRr/oH/ukp9vYLNHtNmPGuyhoCE4SS+/XM5Kxrk/fCvI0v191c9/VZ9eFXQayaS8+HHp94Khq36WqsB55wWdNHJoVFXee6uIGYBVzljHUjIJgfrPb/K8+WvqPPKMppBbkPLkAxeQ/3xUkZ3rr5vB9GaqyrayX4y6ItKmXf1VbYJMH6ZNPn4m3Qaf3eQPurW8+cUdyXQ2mVQ10VKeycd8CjqzoNklrN3z2AR4JiIwPSuGfz2b5rU1BI1PYyHLKtIYkrrRbatXrg4/Qzo/teAY69gAF4V/O9km28gPZdX8cFnNyuEPC/+MSDg9e+f+2aOiUfVQmiNgrz8I8pp8Zqk2B1By0FBCCs6evuKKhkQAQHDirIkt7JHkNYvK+YwLcgU1sCg2qi6eTaqC7n8KYmpC0EBaz4Y0YAM1K+jOJgBonDeD4aAZKJCRhfs932KfDckKyUGflygsOrwx6NmFuHAhVMmVWVKMyUJ/ZpUfgrZ5+gIFcAIAaFLzWk/4W4tVmdrptrGFrG0HZBMBGRMpI6bUgT42oQcXhSrY8QxGV931jEVD7JsQ2fWgccq/oiTT5V+slW0VHYD1bPHum4BIU0AfESCeDEXLRijv8lzP2HtQbOZFUWBnEIwlOVEAn2zGKsrhs0lurMpFa5aGw2ca5pniVgU9zK3+WO7EcI3SqiGTrDwzAvRqqZQjC0MnsNRSCYHTgiRH1o6IEaxlCdaTCzTBWppNhuaOMMIacmAuLRgqRcmORiUoFaaWaBpjrdU8h+kzSToF/YBD85h7EPw+1DjZT64xUl91qPRsQFcBjaSrql+3VtcTZFQ7CVTTIi2EvhZC9vLTgwX7wo4HUouU3GUVozm48DcwVgnWOLUXClHI6VOTZ4yrkfEc4OCKxZAqH/AqGc+Wi9V44+kEQr4H5BFzAhE9t0A5u/ihF+0h0OPKMxbpnfIPBP/sgFeTEHQ+NKFpimGw0CoLZJBl+aR5ZkIizdZDe/K/5FlrnWII5Y0WRlbhJTnmP3MgLpHqnK/0bjEeIoQXoHBAFxY02WTLKwXN93qk0lWgUl2NsAm+HiKc4h3VIYYny1xlSrsTDIpOAJG9OY3JpSCPMMhRftk4cOsWHOEwyjgMveEzpoDY4G9dOrgAO0OUs2ygXQtInrFYuBOtCqEwlKdJSw7sFwfZkokiWacgaoqWXxYo2eJvyGpieRW0BEJ7ZqBWUx8xOM2CFTyriKclmp8sGMbPAGZQARbBAWeVTQRW6mqvIxSIN2icpC4tMHKYMw9hDxVYA7IhRz+/gWMPgd9Z4FTWWtCQaY4qhMVa6rytEGHRUufYqjMh8q6lwq4zsEFmFe+jxdNn09l4PKj1GvrqgXN07m1ANwmKDO0dRrMA/AFGL0MlR6p8tKpc1dVs4or113ar1HpR51fFtKnpDn9ZKcBv9nCZ0uDqgO/t/vIynxaYEK9KG5WrmhzWEbisRFB2zTyw2sCsZhpnhCKi9XQf4O0LTtlxcSUOnxYtJr569ax8RurqanBwl766Aj2lX8GqD368ZtQUoKXLvQ/SPope+MDo0iXDqKsJNo5bXzURv9JUQ8EauYmvrOrseemdT6sRNazAjuGw70LYRrVw5B8H496oRt76GlEzP70bTLTdxNsnO9M7FpQQsJZ6IUKwZuGov7Sg7qm20bLaDSQwkdfCyC76H9rgnX3uTYgQsg4c1rcWpOzRIQ28byGmv+vzdgy5/u9Q5lNsvYtqaKhOWVwtLdgjK7gT0fjqmRPhP9oMfNWdCbGJgzQ08zUkjDfPlGeawODZ7bJW6bpW1nuCrMmvBi4G2Q3drMsh2ezK7JnFvGMb1hboD3ah3oec5XBvw5EtSw5XjlVV1VIf1LG3SC2tbUBnI7UHfB2C1WcyG0oLSsdM7QFzjdU2mH3rtIkMyLpvOLYB+KHbNqE8o01qFdRXQdnSLPB9G5zm/Xl2yRP/PGu0CvLVBlOS+7LIR0PDDu3rnOJkd7xhg3IPHg5swZ3acKN8cIuBHTjNUUcPBOyDQ2/CnlVtaEEW8Btn7ZPtFvC2VeEjxg/5s9sVZCSv4bLQduna7viaOq1gmkpZw+XjrNIMAdF5y/WRFIJpHQppYqLzcGtOtOF4Xh/Ne3apczA4tEsdM/iRXWoZtt9a13p0ZfL7Kn66R6TuplVBGnPYVuhaU44xUG1fNHT0XQtSbKxeI+BXC1reDbi66xenzcGwKkcPXgvqtgnu1fTIatQ86KvBDFDWVobrW6c1LgItlfIAWxbPBiz8vGZMZI0Bo/Ybd5FczK6e0VfImgMRCK1I2VTHrvjfWyANu6koiWyitiVMP4LgWTUa8RjUcs/WW/YnezkJ8TC4KDDDb7yzwdC+6r8mCNXDa6D1lJ18EmoLuqkH5XQ08NvXCnsMs9IyHQ28/gsMTqMy9QFSvhbAFHlMmfJVFcwYrn3Z5oLxYAEwOxCD0kpO48ohDYSdahtEYARrXHlGAMxHez5Ax350Z8HJIxIh0jMetA0Zw0njiiQBq0W1vW7GEyVaHYm/7psvcP38trv3y6a3irDq+M05u/ZKzqkfi2RlEQVIa09+WC3FWx1xNmwI5H7/XaSrzoEXTgtasEyt5hCrnr9vd+G99oO67gI2uxG8ubbONR17E35vt8ovHof5PXqfcm4B8+s16qas5aoFwDRUq7yyPHy4umkBZBYA0wnN4qYAYoAUP+Pu61ogFhj3I4ATC5BBOOtrBiGUTmMBjiCgume2z4cQkI/KBRwX1sJlWoNDrYcCru2rzNad7q3+EAezWwuAb7P1YIoJqCsISverQZNdP+PsidzY2WPMiWpVVyXb8t2biqCnG3VRrP3Obp8K6gjMfBul+yrzf1M5MQ2X4ow6Uw55cnPjo+FgrCCsYsO5mJcqv2IyEt7rYtH/VPwyroazUf48v6f7/7T/e2HaPG7qWdb0Fov0Km/Ej0/sB3Xk652JP0mbRHr2zgsxnt6rQnb9vqCRFE/FC7lvhX4s9+sv/+Qv/uPJILshasY//Wvxx/Mv06r8D5nKMs2u8/GAGrXp+eQ/+WuadOQzH+f0rxGI59mX6T/5t//Zn//9//dv/vzP/s9/+r/8v//d1V/8+u//H6Pt//v6fz9//uV/SlcW/vXN85X/9j//bz6f/6f/9r/487//fwb/5M/+57+c/kfbK//qv/zfjv6Df+/2n/2r//5//bN/c3T1qf6v//K/+h9vFqp/+T/8+Z/92b9mDZL//cVf/vnf/1/kz7//l+QfRrzfZ7381z49+xV1/rsFZFALS2yKfxnlzQ9kBn6RM/34OEbxIVw98YbQ4K3eIFP+sK3ZEyAzzb8+AhNeOy7I2FcUhw45VNtSFdPhkBNCA1+QoyiFswHbjZkYTkJpR1NVy/c2PD6SFhwgCMb0SITtaExPhLAbjin+Vd6N9d7LfpVNHyag7/Cct9tVXD7zyp/PvNK7wu+c5uWTdCfB+Yrn1bmHbcqlAHJzYRZAy32pUaEvy1oSjTpPu3lYWPftH3+RbecrbwsKO4h7d6aDm7a9OjMhzTWsI4iiyWzihnFBI6wdXF6SbdUjTRnEPhfvHoiHJg83QQD28R3GRRYbT8tgwiPxDcOkpNEpDERndIkUqg7xMk89lsYmboLuiqGX8Nc5fQ3XSlO7Cay+SQwGDbHhsCgmE/V4Z7SUzgBaWvqVBMaT/5gXUokwJsu6YSk0PYASgALrdw1JMnHfO6syCkmP89Te5xW6EoA1O+NaPPq2TRf7RSxFRklWOWAZ4cMYmcxNqHqXmQhVHzzvIP1STA+52XntBRp2m8lgh8Rx9I0ibhfKxpIVpykm33FJTnEiorvyJouW6BCp7QfS6PRWCdjELZco9F6yRvBNQo6/t/wzg0JySojp6/3VX/3uBRkPC/Z/2VXfRVmCHEF9MkJGT/GoysU3JOild9OH68XqOdAt7DNGw6atIzno1LEPSCnaNiqjxt3oPIWb4EU0nabPYc0YbClob+qEF9BPNwmA+nG5lN4HBG1R0vemQ6+sE+VLYnxJguJL9TXxkGuDQT24eqpRakJv1SxV6IUHnBX7ZacYnBKfdCxKdJpdKuFpNcwkKC4cIVnCNIkgSBdqBEgRL/LEMIXUw2URW0hU4k3dEnOMTNg9+CDYyJjEu0CU3Fu1Eu+X0hv1Y7aUXoFleesKK/7YzzwWycu4JLkBgYl4CSWouHVNki8Dt0leQoGuB9Nr/wmJlvpXnuxMLT3Rrlp9tDoPyHX7HMMIXXUmchGYxaEFcYJL6DbqNCQGT05EckTsMHTjLgwxGHb+IcN0SukgeqstR6M9tVCuiELZ30vvyP+PfGEtaMqV8WA0SpI9N68L/UzXzzgfFrNxklw7APz7Esv6Vl8R5rtzANhn/0JgHWj9jbWmFgGrK8OyIfOtBm3ueXzElTFiaynw4VZ6uKZpTYw1Xkaw3piE2AMKEeuKCYdrt4x1xKTCHTJ5h3HhRyQVKyMlGpY5qXQ2RZ1yi6VCAnFA6GZ4YoZGWCdr5y0SeweJRUHzr2XON5Ej8AQmV2lmRK1dd77TuwU7cM/K46ID1n23EZxMYvDYyNFhgzG7LdZL/uGjY8cC+ThqV93PjF9N/8QKnbVu/Bp0y/nGkzHS0MUUP5rojeDUK6wgeSs0nMbAE05jq9uqZcesdXbVpNi/mO6KR3F4uqNuRxbZPF/mFaGPap5+kueCTbCyVVBJmmxwfTguSjFC+vttxZ6WV7WQUvTbIffgFlpSqRF7qavNGHv+rD5sDEqqer3QrRxfD4bVnfj+86qMUcnTpBXTI37/vra8Yqpd5tAzdPn/NvCwkGjnA2OOKV49kdQtNfDic8y+Cbx6LLcg+6JXxktRbSYF4s/8Ax+/OEGyLyZe9PvPoi2BkJlfbuWlyDB3PAdTCBIrnhCUXFEfLAJ7dsdujKKx53yikVzhH1zcVwXz7MaZ1hDxjNrPXFHINyzfGZRuVF8ibcA8SQdaxu+7243DVhNYfctkjGfm4LAoJvtPhgleKJ6ZPBpPpEQ3PT8JUtEISpudOO1DJDNCyyZFyc6caCF/IunLnOtJ9dY5da4/jCCSCRfRT2z0/LgFEMOx8gQk7JbmNkp9QbPXRsQL7pDBlmedKlNOlF6WCho4meBi89iy7INxrJmhmYRATE0kvw+eKYuu/A2liH9ZSrd1EsSl9FT92FlKD9SPr0vpO7DpbDiHMu4wRJbFNjjOUZcjUnDqFFD3Q9KN85XqiG7Oz43neEd4L0gXSPtmsD3RZG9DO8WIILDT3rbxjTbXOzU+sMZ6B3aMvg/9328JV6DldKOuBsNsMG16K+lWUedZ81ZkE3zxa/qmQwa6F0+ege5jSEulTsA0DJ6h3m3fT/KaWtuJDDY0vDdVQcNlbfGEsUNT05sIAazKtNK3SQ65Zomh/r3llL8uJtvU22+qYF44QdZJD00zyK7HFpRWDyXUflHe6HKuJHIApj+qkH9rKz/97NWDU02TJHnjSGRZwoWc3WqSBCI0erXrf6T/cz/xu1DeQ/b484DsgRnW3ji3QuacGKcDZ07MU4I7J8aBwZkT8+jgmxPzMIFMhoy3axwtrMkwyvkBI9XxLwU9yZwQvG+xHDPfdHjIpfS1+vFxKX0Fdrdvrl55QUNFAu8hkaQ5EMGaaO0nhODOnvjtOWw71LC/VXMPJQ31vlmuRSIR9Gs3wrSoj2e7i769ooHRYi6qBJw5VPrJ5+F1BlPmuIb6QTG6qO738ofDQVETbQncxus8CBzCh8Ld4CafTU6qSZEF3OJoIHUO4+TgeR4cVOSI2ofjG4tJUbv7nhlU3O28Z6qVRpe4f5rq0Ddf52acVQ6wlH7yphqnencz8rlciFIqQge3A6LuJsn+wIHgBUvMKXia1cVE3vOj7RkwTOou/w2LMi4fDO2L90LTJNlxO4JAvAUut2l4vcOciLkkOXd3TFXm3zIZnmq/5DipfdIY9Jq2H3lGvvbStjDp3vk+ie9Q7iy0TEEH+s9L/Pko7yN7/JbJ0BVeebjXBseYXUftg+soA0dxK4U3AnHqCYqQrWxtB7SrsZGGNbq9rp0jW9tiJ4+DSN+CKEcCKgA+q710QKRWrn4t0lQI4MzwGQ85Tio6BTRypXOy+vwcrwhrmeclEZz8s3ESolC9PLdPQlXe/5yWOaBllTtEjEnAbBO5yp8H6wdJL8Zf5YZYDkxHBjGISsWDem+wSHUxKwZrCmnH2rKCyXRYDSRHBvN6j0exGHpxk4EEYtCzmsHbsG4YUe0mldAetBrNO1tE+dW/arJkB/E430SmX2rchS2v9r5Cp4fKuZV8rh9uJ0nhNqQLPRffJogvYUgon7uNBY4CNn6Pr46Fig+PGL+q8JqWV4u5vc7ZReNXYwNIdb89eD+9VuTuHkCdsLH1EXQGN51iuPbod2YRANxVkz2bfhdysDVgaBWpR2y460qqEtx3M+izKwECLjV8jOriyBiEujsSepbpCsv8Z9GbuCpkIub+NpBuXYgWRbFYcuG0ar8EC/jraHNxlQpkhJ7kSShnYCEeLwQVKqoubQDFR46+99LfAktKlwcOGR1SmJG/AyuvlN7MT2QqMzOiMV2/1OuTX0tfEHGgtX7X6uS5M/agHIdvLLKPtk6pnGTBVVS2LR9JJWWpAnaglz4r0ETvqmTXTmdQQZ0ARVRuHplbYoRLdzTVia2UGi14q5sqq9wUJoaKmhrgvczRXS8hHtuDJ8Bje/AkeGwPIvEYP4lmx30dfZnniquSbMP1o/Q+pwdP8xEqIXOCRDLBqWY8uuJDPKH4fdGher4YgTasYqLilPoOIhdwiJmrKIqIFod8neyKuDv+ieU9I4eSLH/epVlvmyaeeCvGmlXJ/g4Dh5V7LXEuc/qeQLsw5/Qgp9MRkZ9XXaeVq8DwAMCtjPcuvXklOgr0WGAp+ALfJLkB6r0kqFe5FwB+1d4avWfo+LiRQeNavTl+fPBwUfs09xvEdMpr9O7N5cBH1Ls1v8kOMVX+BlPl9/SauMrpc7hOMnHPnS0R4u3pBOKeRU/Y/PzSULTV28s7iMK7vH+fp0d5/zZPD+E+eOfudnItad9vPmtJcuSCigXmW+a8mC3yO3S5epz0VW9wLWOLsneHLDFkMR1hi+lEL6ZrMqJ1/fOQJnSD9NJkoalAdo2z8YlLHhtgSXzht39MJCbJOlbHgPAf5+zG1anOqe/zk03dBtjwDXq7Ywcts7E7FeyBxzsY2p0xd/kTd7JSpwPmOL8OppQ6Gus5pMr6pv55QX4ewyndcieBp7shwm5qsoGWmJtuhW4Sfyt3ZYDuLCipN2MktW6vtxUrZzcx1tgNHSDz+0kReJlrAjzd4VC3qY6HIkjLdJNGq6/HvFAeF7NBKdx9c+VJQb5xV2ev40LgVgjBuhvKjz4i6j7EIRG8bsUoorwZDIqo06GkiHJeAMfFZa/XwJe8v5Wn+5rFdgmL7XTbkb/AHVlYjUnD3kdoWhMblNl1VVNaO9Yz9h1lyYxKUF5uOFILZ3Z/wA0xWt9Q0XFivpPGkLHxYoITy9f8xWTvur9v/oQuksZrjkqb2jP91qxO+QjIwmrWSlf8mj7xK0nDvLu/0iuhDT35O4QO21C+fnXFpbzh2QByFDGMyybw+r7KyA3XV9NaYJiQN5xD9inF6gCu4dOuF12F6/9xGn/PVbg+IQKJU1uk+w6X7zrcckkzrBcNRapj6qqSRvFZ2OKLowz68TOH5dWB6sp2ayiIWO6lTboPf3jSBVYQ37M7WSceT2XfkoSD+a6zkYIefcv9Tfc560DIaDTpUD5qcfiOyJlv+ucH8vO1/vmG/HyVG95BxeR2dX04JKKZaILvQycP6sWYJB9d6Uk/L1mK6jevokr9qXnQ5yR57UKJEqbFkO2ftCyCUifJqWs2lUXKgWX4fDAcFnSqB6N3BGqaJK+ARdWGUOrS0Ksh0lqRnrbay1Yq3Uof5Hjp2wOmoUkMDEch5ofjDFKFf4EaIx4FRnm6sqkyND8+T6U9T0a5nqTSmiQDxJmh0p4hsy93egBebHqMGr65+S6+uEyJ/QjOeuqsQq85voFigT27IHsNSiXKPU4betdxCm7RHCylrxHTdF+BJoFGTN10cY34jGoP51Aenfm1B9TsxPybjoTxyBZWZx41AtqXnEYQfeLM1CdMcI816RNFbxEKp08+HU9LLXHbkSQHvqsX3+lZlLPD8ycP8sjB2ezQsn7L3hB6fMKcD5AT84G7opirF6SLrcbaeimtkg/7n0nRsL+Xp9VwHut26Gg1HHqMndGXHP4IlqJ9tPF4y3GLpXM4tJdfSciVZsP+Zp7WkFqli26bhm7giFn2M7e9bnaechit7lvEDtqAsiGmk+GLuTSol7bNg986lA2Rtd7QmSjgHDTzz4FN1GYe6qFkaKLJQBEbDJWKtrmUTof9SZ6O4jmTOWUNXCJIv6upW4CLPr+718CiitFsq4Dzxs7lXleDISL4pg77TYb9wTCdMZpcdqTJxEeTmY8mBk/ylMBJ8g5xvSMFoZ2DFLe40E1Qms5Qmnp3Gjk8bGwdpmGCTcPM+Uhaxfj0HbYnjTtOk0Vz2vu69kfwRjGDoDyEDv15lGd5MWm8dS0o/30H7EJZ7qwW5oqXG0R1bjwDSMaZ+NoC58LhBKPnWoMQHkQoJNVjH6h8vxjSW8P7IVBrHkyeNdW9C7fAvSOU1fG6WEXElPegGEI97u1dGN/owr+lCNxoYX68lF5BXrjtul1ZntyIAylbZDceWWev7tv4HQ72inSJ9Ydsh7emNAl75HJh5UZ25JLqxtkb9ii9ryGF97pS2BRDoTAolQxQY1jw2c0OkwB78cT1yAWMS/eGDntidnkf08qXCoyspRuLZjnJ2MNPeRWzQn5TRryjdD2CdL2bh642Pe+60QhdTXdDsF5Qteqw4z6EMpfI/e4yUvysWk3EbMsSHH0MegJxMiMpCs4KuI0rrg67UAh/WPweH+3H04llx1Scj6gSPudTivX6sH8yTN+GcL+sqdXL46pOC+nAm8oL0gRi5tPqiuWbKuDh4IyibQhu//H+C7S5YPDjpgqFPWZOC3qjOiHLblP/XCc/j/XPt+Tn7hDczBs2UD6x9NW6ChMlP+7nl42yhrKHfZvXg/LKCDRAs/oc0zgqRoAB+u01fZU30ZEF6Le3xXRqRRJgAWGoWW+dObDLtnUQAQag7wI2WTZQK4oAg+CDlYHAeCABbnhlBkyZR+qYpZFa+2nZXAImXZgF1iRHkmzZUtMu1uCUUEmyiQPTQvVGVCCZJMcusFnMrKgQtyT54L6qtcq58RVBOkneuBVtAL+J/E97ebSsjfiFEb8q5lgS862H0GKIN8ubeLPjxJZr/kk1wuwUsQkATDyZlf4YgBgrSTme6JWkw2XolaTDY4A11OOk1JEx3DWkAURoDIusopRHx/gA7gpsYvbEFJB1RWOIgDM39YqBByZpBheVh2D+PrpG8Vh+NllyGbLkCuTI1SC/+F7QeFfex6daec6SWIZLYgWuCDbf+AzRm5+P2PzsY7ooFpOfDqZbni4QYt9qAqtv+e5RaHjiCmTp2tGawT6B/Aox2wF3AJRlvAkM6N0a0XkdxHZsQ7/TAlrdxItV6O2YRwUBiOQUYGHNhv2dYboNsdnwYtNNxd7AEeqgP3OcNqIP08y1aNjfSw+GxqU/ndGl9B1U6DoHBOkc7YOHJU6SU1dx4YZOeiPKQhOzuGhJcoCBRUfwMEN2SJF0ab3kMzoLvOKLicvRLe6GQYYYGiAEiJdw7bE0zHAZoTd+zC5Md9ZTsLPyOHZi6FQGHoD7GyIDPzAOe6PFxzuygD9ChvvQTXzM6pFtQxbh9N9AIz+PqO+33POA//Tc+yFW+rDePRZePRB0FJC1P5isTVrG0p+I+tgR+g12a/bN5H1O9+3h0lL6Gn7/SL+/GvZfD9P3sHSflp4N+++H6Tn79xOE+UphFlnpZ/ZvXoXPjaXlWn3dNBMaYEzx6yQf1OyDPA1cVCMjDF0zGBWZcQQgfeiwz0TR+lJIVZ8XbvBQpiuyAUrcm9zU57m/ipGUvP2sV3Ku/wZPbqVkd4lXkrx2oWQR89QT2CbJKxdMFlEwSoMkee+C0M/Mx4dRJUnOXABewF18hkT8nLsA9A/mnkcplySf3HL2Xdbf4AFYF7FGNnhYWEngJPnsQvECw0XIIDmhpXvSNEpDx8zf2mryL6WIdRSziNpWUHj5hNdOcOG0r5qIJdNlvXgXS5djaKkutL6BPU7SmO2Rr0GxJC/bIV+BYkpdFj7hPSjipO0xP7AzeGilWwTz/ToHZYyyPXr+XPuEVmRE7bHz59oigOA07fEz6Gd4otZklL5q/AD6DTvgVBXYDK7IXlBWarfPK6qC6+DB1OemClh0m/y+8ZtrSSEzuHItqapciy9TlFIVxoMsGRdElCwxN6LJ6IGmIM1czYMXsO2cnPPKBoLw7yzn0y0HcDti31GxVTOtlaCiZBZXRlXUOT5EJa/EcJTI4n1rkcV6MuOsMla55OlLpd0LCB8WOc6htslOjNSlQWqgkKalRWdT75VELk0iGwCKwqVBYVNsCfKWBnlN4XJrHv2iFGKCTlAf5sosXehVBXRljg5j8hKUClwYn2dAQDBEOJuDQoYGZ/MMNKvmT1oZpNGJ8l1T9Q+GaVH1yyodPBU7Ne3sVHxfdvr+3IKwB+5U3Y09mhb2KL4Le3wnBmiCDFA8IQNga5xZXukan1b9qkpHbI1PnmqNT9vX+Ogf1zi6xqcta3z0W1rj0+AaH/2h1vis8hnwAw4p28PCTswjk67pzDyHxdPl5OHdGUl5jKxtIisP787Mx3MJGRYPg8dyYnhM30U5zOEDKhAczm4CqW+aXDg0NH0zWDyPrNZe3y2lD5GIFT6ksmpGNRvDdNWqYlJHKMKAY1cwse8BT0YhFcSqYNC4F4M1XDhW3NAFmRYfMzLg9uWHuCQiCVqsp8ZssDTfiuDGpIbMyAZABEC9NnZZnK7aCz3VM7Kw7/XPAfl5q3/uUh8kuBIu3RmCaQgrmcwvkLkFL0MjRuaMOdcbT9pyWbxEUPN4RdOLB5ZbJEnuXRhRYhxzbluPOfYalAMwMmuyJnV2X3Z4YYLqsnJXpLW2bLp5iYZTDF3CgHg+yrWSrY1mCMEgD1xW1vrPgksfz00UZBCeWbFMeZIfOwuRRLeHJx+SvpgX5hAFpoSdirV7sGPyw80qKbvFWO2q6l9U6Z5mqQnhsOuqf1uld78pxrqKYKy9dsa6/tNjrKs2xtprYazrPx7GuvIx1l6Asa4xxjqq+p/TQ81XNeGrE6hmHpnrzXSOP3QLJN1tz/ojRXunMloTca0/UoPPNcaHxkfmAkqReQtHv+4bfeZ852vbHvo6OvTsOVINGfe6OW4+85k96C066M2qf1ilx3DoW92GThqKmo+tWKRog7FztBXEVc3apjNru5QAXyDqux1Rb802LY459Op215IFAP+AnHNjigvcd02OdHAf2oceT+7q/ch9zOdSMiXYG2+OPRsaavUgZ5wMCfsONwLUE8XpONAr3qVJTSIgLfHL20Zd4PHkg6ls2OPBs4MdyAKmoMChzD1pIv7aZhNIfeukSa0RyFU+P6dgJ82v8DZlp1paSjfgdbqzkErfebOUaVS/uhUkWadWMlF+zRZUfnSx51IWNMMY1Fx7JXreNMeKDxT3FvSMGR8wtCZZyxPNC/q1stSDTunMefLZTK1imv5T6QQyGETSeBJ+blNJegpX+LYrRzBJasm8LmJiu4MsjRYEQqxuh8VqC7MfUHq8g/Q4+K70OPiO9Dh4FD0+UHq80crep6X0I6TOBx91/A8L37hVMhrlz03a/AEljOfh4JvqOdYeQpMPJk3Qp4G8du9NZZPjG7YXRDyvbE+eYUQBFCkhXnuSaPi0FZHywvtCHBuQbzToocsYGDYqk87hx5hm9ghk/xJJIxBPtNfYu/DX8XPivAt/bC4SI69IW2obhJwdU3uEX/epXBroEzj8sRZp+pXm7NfkGPc+npQTFTvNIKjKQLhZ1XnwwaALKQlylF8VZLSk5itXQJjFfrOF27AyX5jVA0/rDbzQWQuh2BU/P3KY/brLq3qFRa9K3aGEc3KYA2EXWa8wG8AZ3RbO9eJ5tZR+0r/eL6WLVf9NlX42vpHllZc0gPewBEroLCdKaFWC89yZ7zx37hYMiysWm/yTW5ANJoOLYlQ0RW7FQOYCPkkWQQW+b1jR5z67QGb0uYuqagi1BpMtFpCFLIjSgXYgWNslGdFgJBLoJsnQrWMD+Nc7H66+q7MjxVVu3yojkt0+91M/Q3fb88pe2IrQ5mbrUBlhHIPgcJdOK5va1iFSkhogw0htgAI6u2gyOpttu0SGfHdmm/bObV3+U2Xp8a3v5Tn1qCXPIBhR3oW6Qa+UFoE9zoghV699BsUO1r1VApXDqLcWqr2XBGjoAlHOLksal6oE+0DpRvwMqnhE3EyhmluWcdqcro3obqUZV1NAoofdmmLSlP3X6QCiU3dCh23ijVtFpW92sgVHYikbxVtEMK/LNq1VZYJunFCwU0iBCL31lauBShP6fAnl6GPHoFIgAPzCzs38JioEtnMbGwQVPBJBbLo3BCUUn9j9/NXAEi/hl618exf2/dJI3Jb5t3cxJCJK/EAs51r8gpFY+uI/kj/rB/YOKBjlb4rGFeZiqwmFFr4cTJsd7gNz4kZbCE4LGmjSO1pkqG3jDAzSZG85J9iSsIaD5o/yRSFWI7ICEVvj8D3um0ANbVQSDW1G9r/0EqppE1d5mbLXq0cELxp+DKhD1AybDzd57FNDfMrGAi0FmzEvGIyKvYmiQE5Dg1rVejOjkHnjkG2jSh8glmOgooEYihIOBzKHp/b0sdP9BcZ4yJZUc5J4jM0uZc12vI3gLbgrFQaQkVFs8dAy90+HkAjo+ni8jIbi0ZOVUCxvMSw94rCpqwmMf46JIglpDlJ89US1vYmX29ZJNy6jnBfwri4a7HFy+xE7IikdDmV2adJnEgqxnkaktEtVyz75eFWqY+0N0Rf2HJpnPppngdu4DMSz98Ep9cN5NqhSeOzJ1Gol6EFtUrDoliKtVbvMOJBdAWh9JuNRpLNAQpwMD3eeGb7JmRVuVocmN6p6dTyXqFEUxckZpqWPkBgVEUdoh6BdqOkhpatUZqhSWaNfC/TroG+dJvqm5jCyfk1CDiuZmyWhVsppkTqU7Q0MTWWaCgr2RmYc38naFTjPgkDmKwQMjWN+Tc+Bd1AuXvuPgKE45mgu+WvPmc8byBzNJi/OedcmoS14j9A/ohgeaqG0R4TSCVRgjlwFRjnVQOOTJ3vNkaXbGPV9lTG/HFMbM7LXHDqa0DrF6i2ct3X/vEVmr1n3zFaH7DXrdnYP306x9X23YzM8gZnCNHjKBqBLqmnBk0niKmBW8TxZW83wt073Oo+72UmsiT5Of0DjKAQo1plcEbTyEire2N8lRqd1BeBoPWUKsAqbDSycmPGgwUG8CXKJIN6EIgk6YNlv71UqM5UJZbpDOnt4O9PPUVgydRHc8qCUZToaC4/FNj0ijHtgJUfhb5hIi4Pbiqp83nx5XZ4ImdnFWNwnc8Qq8hMyYhUCSg+1J4Yvo4rpoRpPfVhwMUreY70BbBLgXf1zi/z8UvavynQ/XlUNm3WyOLOOoV4du0qkY4GzC4UfmKGNSiXBTY9naWOZbWjxCUEHzFTOju8GkyTZ9Wm8tFjmqrG/nq4kyZdQtdMV7kz0E62psuH4Bijz4vg1Zom14A0HJ8Ec9hCsfEHu6IysQeYQFVcgunPAkhZYIJ7V4V8acF3g+rW5RDqvj06LY56VMeeyQNdEvOoPDIaN5zxwXFoHAXi3EEx/RHeQzLFWaq2/kVbqQvhgmkr/cjKFSRptO+UKAfHuTSYxe6sEchdefln0VumUpmtfAKjMyCSmhEhXf9dU6u5QLfUrVPN2umqpT2RGVxxlxDCOEYmuidq0acOMpAZLEW1mHPDzGPslmC2vpBTTck1KsOHY3s0zdzf/ZcfiroBC/5QiC5VB84mXGMFlU9mAYiSGAmGndCQBZPoGkw8+y0DL3XamrpZqRww0xuHfZuvlZBBgayUgVggY4NPhmPB6qDquRQ2YqrRBmXYbMu1GV6ZVvjVIXMb4Q6bTCnLc3DAn0wT3xmekGB6URKqn7yCep48QTr7r8QNwPY5lijiNp4rbJ9Ih1htCvVOLFQK3baEsEQdudtWY04zznGSD3z15QuA77xokdOAByJu5rvVDzz3e/1Fd+Xvfl7z/DfgCwHuo/vuBI9Pb3QO4vlXKVZwZbgJ1jJuAH4gK0o9UzHzTJ80pIdlryBgffZbHb24BOPbI+nhltCZic/xo2hylivfNMTi+osi8hyz1qqu0jMqsc+bhNJsTXsXLy/bMOmfYqkcl5itTYs6fWedsYMvMM0rhc0jhs/kp7CQUnYdceDrRaAqwZKIdNwMeQ4UAFOWVmfUny/KJHWjlKP+SZ4ZBi0ZjIfs/j7rzUn07Jn177Fddw7GIYRnxWOSwjIAsclgyJEtqDItHwWff6LBEBHwetmWxpHm4PmuJUZDpycCCWIS+diWbys9uAVl+006nIfX42+PzD16/Oru4fAZP9/BFx3tPjTEwQGx0+MYDBoqO0ly74u3jouMoOO19tlZzIL25fHHb7RnBMNPhGOmTuQxww9B9gXtRDYlEykA+bSMhnb0HDK2nxqq6t665C1Do3tB8WWzA9rLc3gfKjGaFzDROn2imhqz/uUwbZ6mWPoWrbNkESqmJlJnzXa6iDBQILaV2C0IsUEIWKFtYoDQCIci3j2RQjfe1Ji/0vNX8XWlyjBm/llfzKnIYBVHy4bTDCRegGkYyTzxdL19GkA6jG3a7EHPVQ1TA0nzL1/Qz6wV5vzZ/DtBW/WY9venJwBOZfFxdyw2+4eKlUDJlYEiQqTdMGsdcvk7l1j3sdWpBmC4dwO2hcF9dzp+CvMhwjWGeFOSFSe6IFORTit4oI7OWTqBgmbp8HlaK2iUO0wFHPrFivtH+SeY3CpzdSuzs5jzSNtthG+bUYsGAftbC/RIVBA/PE24fSig+kCGnmcOJuLUdRHoZ2QwZ+7JbvnUwNM+MadoG58kzmrRUs/Av/qPaDLJRW7Ain1Z1E2OAbo2qh/Xj7wTtweRB31MQI1gOKPK9pgxoSJRvLyEpp3dFk13/LvgYxvjz99lgmv/wY4/9Z7k3c+TZ0i8XdT64+WWYXw5mo6bXXNfV3Q9lfvfDdl1X9e8WPpTT2WRS0QRDP4g2F4h+nfqH1HU8TzAYeOgQyx97uChGKyD6VQoGxVnjh5nBUZ3H9Gs6xtigxbgLXUm8LKPPGaPBtDl+KDOaWAqtpQH81i8No71kiroJmb8Co/ZxH3L4QEbvG/oj7Fk+1QPi0KsMPi5TPQDhtwLCXjEymdlnHyLlX8gPfcBcO/hrhLl90O1GTBHm8T83KqC+5xdZfze9z/rn6S08eOkXr+Lhg3oKeQ+OZBaA9wBsg/nTuSL9WdqU05lJCLsQO4zeu5E3mfO7PrKdLaVX+tctUQL2sPl//IOlG1cVtZ/CPvo9k9fHL0muQEBXCwCdwKzvgokJfMxLqBtrZl0CtGHvRx1T5TAqhEhgLqt87sdU1nPdG0unm++ZleOAhy3xK2yJX8NVrBcIC/zk2W2wAFSap1mpn5XthpFWTSrz8FOoAQmc8UjVO82me2SCj+ItLKFLScp3BXWVezANH7cvkuTOPQDdvmAnBHZAUHuMx9Sht02vteP2hTZ0vGAX+lQj0TZdtycZQztwIEEOQBo71EYhEI3G0oPiIwwTbc5CzAWVoUBONrcv2HXUHUxgwWnX47Rku3ltavQcI/biHTUgHHo3RP8l7SZ9i1+Po69pFXzgovZEL/JDMkHrZMcu07fxS73VObzE/JTd1RvjxS2huHMyGXiLuYDKd/Ygja4ltD35jI1WZv5z66BNw3WO/6Iuc+duti5e4Oc80ZHyFabwmuuMtgMsF/Yt91A5gsQB+sbZMDA6txA5hsIYeeO5HjOCuGFtwSY76J+YG6jfADkJ+qtnjlN6bXmgF9JOMkjlg0lukHSHIwyS1HeQ2iHXYUR302eQuheeY3mqtggvHxGhRKTVrnq4lPKczVRz762k+/mAa/G9F+nmKB/U7O/VlCaopn/u6qcwP6mPe9S8+rP6qR4C/U16TPhv03qZ2nuZnpD/7BDd42Qwven9Lft5PKru2M/lH9lvdkDmH5Z/TTcjBWRxSXhoeXkJOWjflNVd+UNezsYLSOB/S1yC00t6HH8c7+gg+Qfyf8SV7N9VqHdj5Xg34if4bvEJEBW53QmxDVsPqnFH/Qzj+naNoHL8BjPgLRhwWDG9BWvgLUg5dDfrH5bpF7jed91zsPf12651Bel952a8adt1Ijfvxy93zzNfZhgNvsKq8SeK4Rto11nE/3apxt8uhi6VRXs9O+hu8EnjTtZfTL/+1oVDF2+5RwmSf2F4yvmUm3+4giXay+63K4HUlcJqi0fdhj4pfCU034byasOVV+wm25ZUG5akEgCmjGLXthuOdDrVfdPrgYM/JfbTYg++flXysHp+lZf5tJgmyalrfBMlT8vH9LfoXTl7iY5UMjbqSWZb9F789nSLLo62N+izW88koTP0Ry1F1HZLY/yBZ7qCCDSXXL12Ck477lrq8WRyNbtCeTeHQBi2mVteVdNpMVHWli4PAVxbTMi1X3cUMNN86I5gh3hj0YNlrv3YUHCHxTIfVyXNom1eFbDZ25L3aCfFOK9mPtuwBzr0hh+toJ30c/ZdnnEQ90U1Zs/b/PDwo8aOMTmINR1I2y2GSPjZ04cIpAuuHgX28rE385Ofy6rd6uYzn0vfz1QKCyf43fKSSPFPrqnNKO3g1+c2HPDtQ7DEUXycCx6KqhfPxxm+2i3epjOPdpOrvW5yxuh6HBm6KXzC7E/f4iXXTZRYPsQuCf1uOmHB7POzwXYbj2h+rXXTN2QNvNI/D8jP9/rnO/LzTP/8QH6e659fyM9P+uc2+bmof+6Tn5/1z49UPtXq5zcqYmtAZ0Mu1rYFUMnDTNkBlZY3ktZApedl0iaoNL0vwDKolb4vhoFQpWZXX6WdkKdmZ8k5gblwbXlFdjQurmoywNMVPsSfnBf/HrcYv0MMuJ0KuJhh5TS+FXqrx1MkW0ROktcwV7IFwW4w1QwkyStwZa8KmeuLnJkkee9CqjLWppywJDkDTcoyCgjnMUnO3RoQyKxKp5kIL1+lPebMDOc/SRZ9VVQMqhRbHEny2a0IgZjWbi4dIpDdk59V7tco/kg5p41tQjwTZBgft7SzSic+iWSSOA7pyB7deaMrY8zHFXOwRIAfntB7Li7XJPCx42dWdRtfGtfrWUoXV69Oa/dqK2nWXoPDY2ZcdxGAVwBALQ5ygG3W3sMG1LXYS1J+BsrhOqDn2Gbt3AvJ7s9e0NF88sKoS7Wf6agW4Q0gvGkjAoCAfgag1uz2iDigibfc20aqr1V1fyNPS6hNeAxo3NGqcj9jVxV2M1gbvgZMlU24QsHwEJr0lWOzz+qIu0Q3vtdHsugGFyMzwhcN3MA+6fhejjaqwoG8lLG9xmQp8/eQj47fJUdkRPCSIzLid0HFVQXvYmPp8dGJ0F10ymtssjFPLcpFTMR53IbpyzXq/BoE2LweNG/Rp4yIF5fbY7i7lr4sXzDRMnRq1e36yoxWUbfXpu6fV2lR98dVOtBael0vpdO6f5OlI/0xq6nHnU62TuT7TP+8pB57NU1YM65Z8G9ddFctpReko/RefxvRxBM1Da1xU4NjvbG4p/noUmRdUS4p5BP3alWLWyRwWZVrXWpAL8UH6ur8Vp60fxYfh2Olufxdf5k5dRBKD/fz8qq5nirdRZbxNli3SnX5u/7KMi0T3vFCdzEC4xHECOsT3PLp2k/LqrcVxnPcJ3lzMBqtLf+4suo/L0QYNFzNyONFZNmmG+C1JPLSFG4B9QMhKsDA/a52OdzZu3x+WdV4Qm9CT0ZnP0Zc0k7dLm3P2BE2Ul9APObYo9ZTkkxAZVUoQfmEJ8kMA+WFS6lcf0lyCUYrUvOURuDisQukYxdbKzVJHlxIo5QC03BGF2ASx/yxlrugibbmWqiMUqOOXuhJco+PgOPtLn+Pv6d+KoNwRZLcul0YpbyOwyxEgXQR0YV+S9ufrCSJthh6ZEhQgODSAxUdYbnhExpBiYGJi5Cs8AuKoJSIFREx8qFdOERKhlaxECsTugqErtKgkyjoKgd8QuCxZmgk5GNjR3grbH/MgfUGAh4iR/DTBO191p+aTV32R+bPcYSJ3DqVwoCSIn8ajydJ351rbuwNUsp8vWnKea034s85JvbjjZl0DL1MNT+Q8+x4bQK9QhUjkPPseG0GAETatlVSeAkKVQD7l6R4DIqNhU8PseO1BwAyHNOj63jtApQYi70n1vrPdBSL7t1Aqpe5BKRn1/HaPWhTPqAVzEAPr2PsestY2zIMMRHqBPYWNKmXdU8wARXxBPQzdodxxXTqPeyY1HLJfAWOy1gspfDl8pV9VsaCI4Xul8WqunLOxNfx2BhRJ9ovbtIOsdUiXVucxAwQ1s2J4Tfm6hf/lgeLtLU6DQU81hCatN894bRpJUw0VYIkibfnxTykUZfRwu+jYk/WS/X2Pxi0/SYUrt1Nw7GKAFGmvKtpMJyj+GXMJuXOZcgJ+ibRP6t3FjdO0Od8vltFAd27c3jxkKBSpydzyJdDPNNBJ/lyiGQA6CBfeIXeoYPTet3fS99CM8S6ezJh9PMeWF13HVdfDjzusbRqperQbYeGDZtOPe/fbRCjZtyBLPAIyBiQOi0xw7KRMaC6K7UREY7YyBFgjkkEWFu3VD2XsPiRBX3PgxN4Xup2Jy1KV6h9rteOjOri/cA4UQssV6Xj7g/4oxwxaT357I9MGrez1kupiaHULV6izwAtveYli+jtey24Vfc/p5uQmbbcVS8D17gP2arJqLry2IyKcpjTjWwKTQa3RX5nB+BZodNFdOHJaPDA00C9hwYvVYpyQ93HGmKOHFvWItPIeDFB0cBwcOH52QpHx4sLXIFbtgemHfMKnE2KPhmdeb7pHHWHYU+OGwxZctoQ+JHzhjHSnsCMRrF+X7tr6RguI2OCWU4S5Q7kD7GExrm0gyzZTaFvVnkIJH+fng7jL02MgLOsn1CGefYWhykVX+B90a65yqnrutz5u0QK3FVry23BW910jZfqw66a05Z4gftUbOxAtWLf1RraopreAH/SfUtpCMYzvfFFMt03mcejM1E0vsYrRurlpTMvwo/BuBjTvgWdc0bhXhRWz1269fZpkkw1HxGzQV2G6/WgE0z60iCR/jagZJj76iSPCVUiDYyG/GG2sai3F6U/v7Ith2CTPqfBNluuFymAES7owsgFMHus4Q1+9btfaJNX7rwWmPKMifajAY4WdbsIydXt+KUVEVFAZ1j1X915M9KJaYjOS4c9rQ+vNTSR3Hyv+lFMQ2gGFl5cXjkc3T/kAjRf1+uMt/JVvQ68VSNv7+NW4yndFw/grnLadV/0Rfs+jd8dW6J9n1p26rZo3+/id8rgovYmSPYuDZHiGEyIZ6AfOpptvIYQYSzSHBBrx8FtIkhzMYYdUM/7eGaOLdY8fv3I75omg4IGLkOPc6I0EPzUbCRqK0TjlqJDQccRLzzadiTRZk/0j0fYY89agoecZXaldsMlIPoq5UZYNTjkMJ9mdTFphIkCrWHA+GxAZs9GzGl+vzcYzXIdEwb0K03R6FQg6HTExYtI/FHrRkR8XZanLPzpCENUAkqvNaNPWbTqb4M9K6G7yqCuBw+/U48i6qWl9LXX1U+SYPj8cjS4Ikv2m3ukY98DfMPox4ACh1kDinVhanWi/XiashomVb9hLpuvCM6vm2ayX5Q3veX0MB/U7M+VX9P3MZ6PMorKypMHUTmjG+05lPVn/o0W8RtkS8bNp+HZYV0/QFkX2VrPzK2VL0vMm+9TpHekeefTPn44UvTOCEfgBsts4sdgkc7CZygRF33WQ9zrrKZO8XjwucrapVaYumlnircrmMniPdzmNMKzWqDmQcTXxRyqM06ca7Ehe8YLuXfRNUPHeL93Nv1RpKjfe0UUX5Bjnmq8aI75vOn/nrp8M+DldHe6fT/J62Kcl81g1FshH2gEJyJjt4opdSQe9l6Qb+uTCc+1or6ukq/0utz89hP5JiKhXheT7VvS5lQV/kybaZpBdj22vv8N+U6lk/7yktC06SCmXj65mKqa/qs8LZugzsBebJakiMj1yuUA9p2vpFXxsjOb1dQX4cGjphkQRr3x4P5jUQ6rO08tVW7UqQfkw/hwVmbXuyU5LRFB4FMNIaQ95jLP+HE/n6yPitvcP3YXMqTzaMpprQeQSes+DiWM6zAfusatmA8TbwptbG47Tuwcs/qIKX2S+WydzHgdhVGoJ6hIdZQKXOkbVOmJ4a3gL9QVMSTcquclO8Rc1niJ10DQlDVoonLPOSIjMiEvewt5uZAWTW+haBbSetZbqGcLKcF6IZ8uEFL1Fob5wq9pHSnFRET5iseRp2333GlZlrHtGQTpFUCsWBBkPADihQVBRgogVi0IggOA+Ckixr4peq3g+nacf/VdhM+XcfMp/mwAP6zILwRf/uWF/ELw419WVa2p+PKT/ELGr4YpQvLLXbBp+jtDMoFAk2uAK9GgpP6eNXy7Ul7NmCuoJ9hFk9+7cSka2yNHtRxuFrZpeWLQVnqN/SiFt9GrLQ2D1O3BAxTVBweQDhHhk7AHQUjo5m6BUvBAzSF3Ex7EGVNzp/FoGZc18Vdebdc+kZdf4ZucwDXYqCFq/AQiOXKnpftt3siakvlu80YR+UsoGjOKxiVEY/Z4NGZPgMYsEo0xwWCHHM97y7+mD13U16cPVXoBiXlZue8xh6F8AaX/8C3SmT1AgXiRjxz6X1bPvV36+0M7Q3oyJ6sY9i4r08mVp/9CBQbLEIY85SOt9h4cGXJPF+ctnM77xrEVYY429LtwT3lw4R1yyUbRFtHmkLZM3wCxeu8VPvShOHMWMZMLukhzN4EbivQVRPrmeyB98/RI38yD9B5kGs8aj9/7sHUbueXB5RjY6a4bYPzca5aW0jt4gnUEQSm4EjXiNPT4cA29IcnIfE8R82HR5MP1xrb/rCoT6CZlPs8pUgMYh5ZHOVkifbsnTvUUTH3+ib/U3spHucxm+4spyCySofTyEwullMcC5SNaV4qh5ILHOUt8okar63C4hg5J44i0LlNGr17G2XHaq1NJkV6TasTUmYwljQu6TLJTJAqlZrMnJpg5ZxbssfsRFXaHkPmP/OoH9pSdv5qz2f/Io36At+myMqJ+HFl7FH8vhImAk3hlty3pN4pLy111LFbhDN0B/Nab/mL6Nkavci5p/lZ4dFLbIo2OcJRneTFpfFc2XSwdSKvy6ZKIyMB8dcmgMcgF5OPCr+lmvO6ItvBX/X7VWaNctqZpud8HOK+hnXGzcnpMeWi3UXEH3hKp9gXicezTHzbdAnb3set+neZNQw6vbgjhY1SD2LS+ygbx1hAd4tjUIajav2l+kHV7u44WsR+0Ga/82CldKavygpvu6rBLkgAIbYRm38YuaLYvwyCi+5Fv7F0Hjo46numMZKIrP4YdeFPRfk8MZ6XF2XdHr+B9soK/wrn03PXTPzyGICPKo6ecbJmZL3wDlq9RTsUwbwbFaJokOzB7DisJ3KWZDQhBCC/+HayCKHnxwZEJLTETLxQpbK2AcKkZ9rHGPuJ++Z7Vx+REqWJiZinDligvOhRVk4qh6iVarO1gL9Y26F3c9vGHt9u95fTj+t72h8PeSnpIPx0fbr/b6r1I5V+rv6bbXYwKq09uVDh9KiMh15MfZySUbcQaCbmuiekVB4bZ5t2/W7PNh3gKB33gYsw372LMNx2d5VrNOO9azTg+f7p5zTnvnNl+QxWVj5DOb+axNcYR8U03G2QEkYSG8iYmPzROhm+QAh5c4m0d2Lg72Trexdk6XkNbxzdq63jVmXu8son0gRHDl2sXnOTtYuOQHs9euMCjA/OPKjQk33himA8XnvLc/tr8po7wANo40WOz+h6dvVE1aH5eBXPRFM2MqyYeiKq84iCA4AK+pTlPW/aa5dV6upZBGlkJK6XonlE5dA5xPusqhyIurqif0JYCc7zm4oVT28WW2w3mYGcuiPC1l9Wa78rlE6XiYtM/Tz9DVf2TqxWHSUnjGI1Ge/Fx3Ux9nL1ZJoplPhjTaD9uz6LEeN9sBo/xH+rsUFFP8+7cHa5xEgQjW1vBH5czk+gnSzsPLB2Msn6yek4GgMJzkbc7bSONp5/ceLfR8Y58Bw3l5ieIh4QYEnir5+I0JCxwtbGD53LIlcBzGPcR+iqDxVxh8oJw37Ag3FcV8KDsenhGc5+fr4Zum3Li/edcd6X/khfzrNqIJTkssCWJHlaLqLUSvSzAMqjXhpjnZ0nnKyvAnlMWHfccSRh7KymL6K1EN4BsEqVFHoGlZwOoKUoNRKl+GpTqJ0Kp7oBSQVEaQJSKeVHyHxPZuoFYF92x9pwHjQ4QqhSRVElVOz6aTSnNRpBm0z8YzaZ/IJpNn4xmE0RmP41ihHsIs4Dr4GL4JU+zNqQlHn1GlP7DUp7EoOZWnp5cTbIoHNqwXGLPRenvpkf53gFGJLcL6FKSUeALdkU0ev3M0TfVKeQq+fvpUzMowOaWU21XvHqxRJgkwhIreAds9mOKs5DoCl8R6xnDzAiXc0m1UMSAIEiYzGGpN70b1OFrQAnRqt8KOP/T3dAMehANYtld7GDY4qjGC4X5IwuELniUrNAGisxYk7WxAptUjlsLjSJ4wzh+Qh63pg1PxaGUie8uBbDBBEfySCERth6Z2g/YOsIS5GEOCQJ5W8XrDTO4CdbK5SZwFKsHuNE3vsDg4vmyjbGsljXn+OODUs65wDgHc14aTJtNHo6v9YWtDWtbd1UJukruyWjeFVfXzeihtyD+WEjZy6NyMOotyL8W0sO6Gs7YM6Pegv574df0toi7bHQeB8nOWl4IqQG0vBMyhuR/L/Qd3/pIdJwHP2r4zrMfY7i+pz039DB4BYl7Yx4GDUchxxtZHeQsEMRB6EYdxYT/MO33Gva7F9XvXnS/e06/d1BgBZ5Xm7LqxY88QieNF3dweTkqynz9ovDGQLXB/OIKb5ZJLN8jao+wahlgeHRQXt3ahrdYZ1X9trpM3X56YpT+wCNHRf8uSw+xXQWhsk6tp8Pb3r5IkiN3Rm9fMAoxX2XleuKZOu13441Fe/tCH2WZ31ZOGVyFoQU94dFHzPEjM6pQicbDg0S7s1hM8Bh6ODNyyd2+YDGqj1zTaSpI0eOkYRFKCDLa34cPf9W7Ak4Kmv1pvaDZn94W/UGdbhU06dNm0R/V6XFBQz3vFv1ZnX4paGan/YJmdtop+g91+pWa1zeK/n2dbhc05vwpXEj/mH3lKdI0nbgcJhOtrMNbB5Zr5a37/funadpyu7RTr2xiI41N03QMKntzsOxioDANyxcwWiQTy74L5E3GsuNCIvlYvoJJ9KZkGbrRjduzsmzgI3jKNE3bbheT1vQslYvIP6ZpikvT1DkR00nxHJcPqHAISwafWAjKBEwghKSBXxQE5UCsEIiRAO3sH8n7rYwfy/VdWb4rv3di9q6c7mPzR1nSTwrLWLZeWIayt+bPAdS0PFmYYO+T/pbZ1Ky/af68jFPYLPM7tOeLrEu1yLrUmFmXCp51aSBfGU15/NqRnXVpIvPjzOysS5drx0AztLIuXa7tAgCVdely7QsoNLIuXa7tg2In69Ll2g4A4VmXLte+ghI869Ll2nCKd+NmXbpc2wBtIlmXLjtkXbpc2wZNerIuXa5V7jipIn3ANOB38Ih94B6x3aRKEgoDMY/Y1lIT6+DAOW9/iDfh3vzppUFC3Vd/M4mOcAEkUxrJVEW9yshqFHh9dKOyGpUxWY0gEF30bwqagOAjXPRv3EUPEhdJMBTGXPY3+jjMEwq8cdb8t6Lf5Onrol/k6av49W9cHH1zXTGkQlJOnQKVBUEzjs7knSSv3Ya8icXl+jZBfHZzd6z4QLFRomvdGbBvtK7zNU/MHrz+FELpm7l1ylkrzVwiRvbz5cRd2WuvgYMY9cFmpoiz+PlVTPvenZQ5sk69t+g0b9ap9wZiFKdziE3mrjg5w3rBCY73S2qV7a2DVPdKX9GYkr5SGrPHmNkUW4zoqkNGHT1kdLxQcGbTOImp1rC5k1aplKRBsSlnue215qei/zpLF4v+qyz9XPTfZ2k+6J8RHXDQP8/SatD/lKXloL+YEQWv/zlLa6K81mkzgAvC2AiJsvj/s/cmPZIkS5rYqyaHbIBszABz4Y052TGOCjyLyIzIrMwqT3pnx77vexQKAXMzc3cLdzfzMDOPrSZ54GlOvPEP8MoLCfBIAjyRPBL8CwR5miH4B16DqmpmuoiK2uLhWct7D+iul+Emuol+IiqqKioSRjxhBp+S9M6Qxs3ka+LAs+/TX97nRPTCiP2S7WPnb0M/oD9sSQroA/hGhhrzHTP/9ThbHvh+mb2uWgmDhNhMx97dmHRUbJjnh343Ih08X0y7+J0c21A9LrS0QTYa11B8AcWsJXOg0ZiB9OLjrCVxptG4gZT8G6szZxhBog2rzL9RQp2PZCsHS+hEclHKZrKFMhWin2XynP9kD2YqkpPMWtjkNBoOLKgTMamVp67RiGAp5XuBCfdniNxy2NbCbEXAVkNrTajWx2ldkE6G0AngWYBNzNI2hs6Q9vHKVcxb6W6F/JtevL21wOySFST8fK3vt/m0ktUj/Dyjb6rzCSX2dvj5Rq8gn0qyKQ8/e1qOYn3u6N48/OwaKemc0V16+Dk00uTz1PxAexVodPrMNOkmPfzsaKTKjDTpHj38HGEpjH19HUT9Kdr0yd4uP4rEKJ4S76DTiT3TA0hKsIvHlIEeGVhrxU2Z2pHtRlZrWo5ASWpDf6YoWsC/GcqxKJq2tkeLwRaNNN0G+7N4Xv+O7s3ot2as7stiu/VkDexW2xrp0ynvn+h1tWtIjcq/z6YT0G40oIXM+kX+13tM3TKWUyq4VMmfZfLViIUaHpjo2Xfz0pZ1jy9ptDd8MZPb5OuZUjFb0/AlRWdMMVeqsKQWPwqYUV2XZh1lOtGUoZShh2oh7QBQ7iTTirGmVJSuMc04wFTK2G7dWx271Sd2vh7NE07+iCi/hJ6kS9suL7FdO7EbjY5mBWWfZtnem+W4JIuRfnaQZfcM53t23DPvyejXgg1Z1hhHXFYvBx0tnh6CjZU55GPC92fy8CqMrdrA9FHpyBnblbZtWffpRi3rEtupdTRAZN1hW7RIQxTtRvN9ye7tyW7tWG1b82Z4Umf+r+mgp5gO+kmC3V9COugnGfZ/zumgHysac7H/XJ53JiNCDydHNjF+lNugtxalRw2ie2qd9Kl10v0VrJP7mtZJ/8/fOrmvY530f5vWyX0F66SPWSc71DrpUevkQUfjTi3rpFfJOkl+fetkZyLrpFdunSTTtE52XmSd9Aqtk2Qy6+SYWieHunVy/Ffr5KtZJ8d/YdbJ8V+KdXJa0TrBgl0ynp88BY4B7zKBWWUKGq40XT9KDPFOw6JIlUxXIp0y9ah8oSxQefyUVOSRZVMoOZ9borXsWg15skyG2sxSa9IJWdJPqtRDKcMRlJ7VNr863tNV5S+RpRZ7NPLCPLQVfNC0pLOmZFGrFYGPp83RnkkWJMbJvM1MMfNW7NZ6Yp3ok/QV49ma49WuwEX0NxmvFg1Ju6KsUb9gSNoa8Wff6vFnk88rmEm8VVUxoxFbNaVZEJM11VrGIKy3Ng+8fDxr7dqtW9tat3mcx4gGYxYk1DBYZjRrduvOts7Fp2Wyhh2wH/fFj0PC0TPx5wmh2RZ/HpHKL+zWtm09ixbzjz6NLLnJ2toQRc7IInBktzZs65L990p8WiOVX4s/b8mfM3q1p7TaG0H25BP8xbQVN27N2FYYt25sK4jpQJyYNhGxrwn976fOOGBPIF/58bfe7M9kRfnCf7JjikwCtXdvZ3/OXkaGLWIe5DM1itmSMyuKxMYi2RzpRQas4fyJZ/Yy9R/7npe8oTM+Ry/tXucPM8/Sl6b/OAgde/AmseN+zL+tOp+ksmS5Gw3sJ7X4RiSTxE9x4g3n8vjrc2RtErV5ySfYk3g8GoVR4rlzeVY0Tu0o1CyapdryUCaYy1LZz/num3HsRUoXxHgSZbCsIPV+EZUuK62mjjJzSOMHCh17g6gSPPrmd7lrwXj4KgiTVx2yJLivXv+RbNnF7I3Ms0ffmPIWArkHLI0OGbxgn/xVWJ+UHXR55HTq9PldmltWI9InTplYX+2JF7Gr17n0RSynshWODcL2XLZl5BSxTEFN6DmXZr6ldqxobKAR5ftNTjJWxp6dP8y59ABCa7OD0qLdG2otQ4pHSMG/dOUv/pAAfU75fqzVnXplcYJDjSAi4h+JCd9TRJW528E6VhFsA5IVhGRItEw2pYD6RKa22z7/sGXojCh6a+iLoNiVKZyenYDv6yjLxPc7BdnKp30Nz4rsbheoNE50gRCl7xuEbtT1neeJGTvSPstPHTjZpU7G3i1wgmtVsPzAnRt5EipnlFly3TlBM8ellVO7ntKeNyQ7nOISgVIifzcxZyf0MbZK6ngIMIQvrNBKCJ1QJB6CnczLVugSrCVINMBqGo9ceUUYYxUBmo5CQ7UoWdGoBqXKVFFNQ6y2KPUamctZx6mfcOp0m6eTt4sqJ+tJD2N1t0ahOZuigGCww4v3SouLCZKKHRYUEyqtaPhCCanwE53V1oUtA6VQKR4UFak6HfhrmKgUljhQgUK2YDRnzxyTaqQ/+zg5FzGkyBlexEn9k7AS24ZGdMojjT3ZnOgDvVJIU3ExU8+oXaBxH0j7rvdI5UcnvwHk4aiI2nNlaurUpQEtVEhsx/FGyZxMiVQbuerk33pOaRnf1fWNUEbKxw7Zks0Big5SPJUrsVoMXYTxGaneoUeFmiyyQZdTp2s9UqhbUCgKB9gE91xEUoy9OsbGyR6jydruEKOiE0B0r3dPJIRTnmKUA6+TALolhY5IGBUcNjx3jhkgKvke5AMk2HJRyVKJbhWifI/F8kYLUwiloTJNagK0d2CwAVNFeRmfmClCfymkZInvz2WXM0IDoS0zUqWqC4xOiGCo71WyMxIhTwoNk2eNxg41EcEJR6HKBPYVWq9jlCitUNpJdRQyspmTN2FPoYaBvCJgn/f1vheRPyjkVNcq1LrQnIaIiJWU2QsRZVFS5kQpMyL6rqTALeiY7Sifd9HP8Vw8Hg7tSGBo3UAHbO5ljW85KdK1c4xnBfT7GL8kkxwpcqEU6UbheATV+rNaKz29iLyuHycRXeE7ISfcVLvLjAZoAx6p7XmBF/uYEg8DdSjdiGzWETonQIYMj3n0YrZcTD6cyQwRYaebCO/fpZxNXabpfCi8GJjKReNgjpQVxfTOdUxls+Fx+0ov+mQe15geBQjt0jZRqlvRRxMZhS7pRhSOsH7cm4qNyCpD7SDJDNUw0q9emJfZMfLbi8MBPVjRG9a7/VA02ko1nJr7waS3UiV7pkr4zMcP9kicmxjbZHt6cIJSRCy0XhEjWLV6r+9Khm4otlaCdmkQmMorEWQ4/LMyerDObRcxIi+jd2uzZFBq75AKjkqYaW76qnyEqf0POHNdtVw7dCXTyalWSij2igXgRCSmcvJEmLc2tqk4mBCVOUhFI1NF2eHNHL91z0Ywd78gTLq6hcWakJdMrwbattOni3XgksUucOYU4R2qtKpCf1I/inUIwKGt0pElK+9u3ldeVGh9rYy6RAptrRKChVTtcK+IVuzJVCqhKMExtYEMHlarZOqt0wrSIeW+4UQlSDfd6hHKHK1SmKCmAvwsTSHfVck7NsFrJ4webAK2RJgg6yoZ19wd3xu40jm0qXE6JrXhNZU0fS+XEit0ByodezaHkO2D6qhnEUJ2BvidvuUTVpBCvA2wT5ZbTbaVAheYPHhz94tIT551WIhz6UhtuEe9pDBLJYh0+ACUOgiJCEUktqQ6mbChkCqk0DpCElW6h8iXL4x66lewMThWv4Jj8FP1q3Kwvadc61FkpvdV6e4e0borSoH8MIcthfA05QQjFeeLko1+q1BmC6vxEHBdoc7vBqDtegfqtN0wGDwZT1CXZXKjpUfQKGTQVIIdQClLGW5vHUS4ClRMyn0MFnP2iJqvQjARjGmH2tsQJO1xd46mcxQSiFAIQ0rlOnbFf6SQJOymIiC6iZ4tYfaRTu6Eg4GXbqqzNVss2dcqnDL1YLd97OC3urOBq17198iAIrenWT1BLZ+ESKFOIjuIB7b5fM1X+zAOlKMj2+i/wOjEUGITIZXrjJgOHjOmTEUzYSwu3SlzwXhSCNg5EKMSRk4C9ZAgwna1CaIwCkt0DT3Qjo92TITg/OhBocu3SIRJc2lcOqQPhwlUSRmtUNUqboYjrlqBxl8yzZd2/bxX3/tlxVgkO9UxH+fcqkhmMZdzUc7c2YT1ZKYVWrzUEWdNpUDu988ruursG+mEotVgqlSHnOqZ24bAezaTQncBVdzIuFNrPbV01EX4SK01vXh0vUf0PuVKIU6v12i+B6FXFQJmoSrfQ8XDJzU3FQJHIWA2ofw58TU1QD7PpXlAhEL0MelHCAcKIaMA+BrpFNymUQjHOiG/Z1b3hzph2itIOPQV4KYxFFV2PPk6truOaju1lfYQB7N7hSBdZiM7xhRUVyel65WdOL25VDyRGzu1jx4xraIwYEs+vKlQKdX9Y7bwtv/+nVCXOj2n+iCkG6lVsq95iQVR8b5aJLWpBOF7Ie4qYYoMQfhRiLnCuBQYgu57IblqhWbCS7lC5HBGlPlBSK9aOd0UcbJFYUclRv86QS145SvUqN8bVsxWisk+cBj1SKPGqIa2Jg0YWRvvseLVJ8qJyX6s0GVB3S3osqB6KOqyIDtUybAzJVFMoO7URnCc7Q0EvQDIko0IYLZNEPL3VpgOKn1qAwpCwfJVlVBeyQX5d2JjqHMlXbIFsRjkll3kH0sdmyOzi+w4pg9hmEd07tDPvGb5W0Tp9YxDXbCzCM7Sj9KLGk6hfJae2KRfeWgX0pO01U7cGsefhqE7Hnjz3iPdNcStn7MLkZMkGjtJsxNbXS/J/hizP6j7b3OQ/ZPUSWyu5ijO+tO047zpmIZATs6zh1x+LN50ffn0N3/79yMCJ7I5+bs32T/mb+Mw+JeM1bHT84Y2vQqjpxr/+k1AqrtJ+5lNhkox79zGf/jmD3/4X/9pM/mG/ONv/uN/8c0/tcg//+n/ib/5Axvsz07T+9KiJzx+5H37Gqnk9SyZksW3nwYenQ/3U/6gqmq+rr4hERoPta6+P0HfHuLxbUUF8NU89qpvYI4h5ExhMLF394KRpKWrDINQomNIKo9hlL8jK0p84RCR09OjoUNC6zNUJo+QlzOMMytlzEL9ggF/eD/dAZP6pj9gUqky4Oop8vpTePwczNPz8fX0ePw0NKfTU8jQx2Sh+SmzUjh/F1pVbMLJHh4XjKxgWNhbM30SzQEZ+kjk/KLgDEr7LEpD0ct57I1hjZxUVRI/pRgWD94wJRRX64YUGc6gTcvi3wVl8e8CQ/w7dLBYf0o6U9wTUzdM4fH0oHdfKVreqNoEPfiukfE9jyYPLOWpWgVWXmYGo9ZHk9KiIxnzZ3wjmvrC9A46mA8IDZVx9NUs/Ug1wpDAmm7DjYQ5AUt9wl8vNRpjLX9V/o1S0kO7NLqHQenmBKzacZRFLkX5nn82q1g6GK5Z8w7zKBGiZzy1UN46Ty2UtyHyCvnxYRbn5B3+an9WZ3E1/lZibh3OVmUrztPqr9LpmLJH//AJcR4NNB1OFksbJxLDYWFRxvB7PoTm96wSfJHI+0/DoaJBCPj00UAE7/JIBJ269i4qEjQqlUFH8BQ8uKkM4mGV2Mo6XpSWC5rV26xiYbNoW8jz8HybpufiMYXiGtbjM0wppsYtLeFTPK+XrDJaNcBplo1ZPOImBPyPzqz1WKBoiyOKBSJ2VoBGFMt6Te01JXzWE7RTlQBaAQyg1TaQa/HEVN2pxhML5HhiARZPLKgST4wpx4J4YihPKjCkDjcKWFFd5YloYmZdlEUTC0qjiQWfn8qCiQWf24iR2+dIfCTSKAITzFpdDZZ9qKxgZLFACr11r8XayINvBSL4lockCUzjbwWFgcUCLbCYijwQWIzXy9EnAov157ERoaiTB1dhZNWGpY9Jh1C/0m4ojyoWyFHFws/35qBiZP+jxQ3PgooVb416HCjdWWun1bMeyP8vmbKA0xxVQ5b3rQezW9GfKX6GnuuPh43GDiBIf6cUAzui+fMeAAH72QwE1oCw31htHASsLJ7/l80377S85qU9DqQeK1BIuxuI7spHa1lfq+sI1loaG04ziFhTTDnsaLHhaUNMKzwgk3daIVu7xEVqr656Ay9JNTnCKnVR5NTUPNIT9rDF8JDj53TWOiHYOa4WvsWnsWfAb+yJ1Kx1aEiFcwJ+VzMyBf/QWnjfaISFQeVCLKgcD8uVtGAlOJuyzmM9R7ut9RnWSLbGxu6jfa8QwCtpOUpEn0PpL791Iv1lV8467rvN0GJjbSZ5Ap3IYmHffG4AZiNZaNiGCFQr9VDLtllL7EKZi78fb2VPXw3R0uqt31n1KcyJgSyqlyOUrRqS9Dgs4mq85A79gIdy8+O9kAWQCEXGOrLdSN9p8KirfGDfi2JjJp4f+A/LdkBNr3eilpOe7YYP2e9ZRhPK9XcUP358nHrZZPlMsIw7Dgr/38c4lEHUiPiajiud4pBOMR9XOsfst2xcaehB9otAxvdZsXGuED+kP6T9z3aQ7Bd5XPT3D1ld2YCa2RhpHTRjBgPX+gRCkbGYy0TGyUX+g8Jgw+pYT1DE6FM5EYNcTH+AY3+fCc9etaM1POZneQzLdMEy7UHpQnVX8QyYBQzDd+apV0v54bBSBVZeOTJGA5BlWUjRkexObST4x+wx2YvHiXwRVU/OAiurBOXNVsXghvQA2ZAZZuQHbM+JR51jD6Hx9PVosFAq699RfUadk+MV2q7BMhEEBu2MVGWwT9ThmcdWMDB8VFhw24IBmkZXwXxxMItG+0mPRUtsm6rWDOMSMWhSpjQdK+OBnKGZmje8581srAsN32DarFUTTQfOMipfjsKtVFTSPmPIX+aG+N2stc//2J21bvkfW7PWuYgKOGsdaIvOMtiUpU5dBBb72naOuo+RD7fgA3UyJs2AX6mNCHMfL8/jDeGtIE0g9cshYrMqm8vCiSVLZBo396XfaHXNW+kHVlnzXPxC+bvd+nk1c91ZsJaj0HYdO06ai9aqH3kOz4r97ot1Vm0p9zvE2Hk3q/kBnQX9IHwIXnnBePgai8IvI0JDgrVZZKVSL6lTeu0hzLu1x5EX0dN2ooMlC2879GlQvFU/ptE7XNnSG2UKmH8TRh/Nmi1/kcy/NJ933PNHa9SnN+Y0mUEYpIm+WQtJYju9oUIlmYcZ1a4f9MX3PHlfkIYXDeeZ8ygbqznzpJMnHj1lly9nMONk9oUpOVBro3GupRTLv5mt67/yf97M/DqcN7C9+n4gb4EdrJ2BWyF5TqTdAZgTeZcA50TaMIA5kbcOpjmRNxPIZDSzWZC2FspkSN/TDYbFedTM+Jkm4TvHkns/8xVib9ba4H9szlpH2ur2DO3Ktk/KaN5D6QsLg7nJ3nsSq/2UMBysic/zet1FFZtrlddQUlHzWXEtSqtpbsj2h1QeXW8vKt9e0fCHVS6qMjq5q/Qnk4fXpdYByNkss3GedN6CV05yvsuUwjSEB7vvjUen4ch3CtziHuxomNKoo1UmRu9UxR6Vd8fUF5mjavNN2XKEjTelSxxLahL3T+MNmubrSo64nBLMWtcFOYhYKC6Dy0X2lapQ+94m5m6j4cK0xukHSuJ6sRP5o/yeH61PokmN+gWqdfmzwN3sVWDcaASwIZ0orYGd47AgmoeeR+PeX2lJkvJv5iWTjZOvl+mY+DopdfqzWKAMPf/8vXrCJFrPkn2gKxSchZIpqMH/SZk/GedNbK++ZLLhZl55uNdGOmJ2HeVq11HSGLNbKbwSfUzNjCM0jVKg1StGkx+ssey3V8jSNlPL46Cib0ElRwKqAG74WmoTreXxv2aI6vG0PcMN2EGlcaVpQfCBxqcFO6ubebygXkreL6WEzRtpJ0Spmp6n7oQCr3VjhZ7Gy8ADTOQtV2Zy4M0Xli9kfdb/wJPUcsF0OPoITB1Nd42ZSzPqvcHiUVZBDFYVUo+yZOVFcH8cWqKpux0wr/fqQ/Rd49jycCFVhqdUg9eh3DCi1g3P6WIYViRkZ4UYv+KvhEDWrj7mfpGTvzRREQR2frUX6k4PIbiVnPelnOs+rEh8NFx8yyTZYZ/ZFawYbpEiW9IQsP4bfHWUoZjGUcWvqhjT+dWip+KcXTSG0gJg+VLKc+1++rPvwTWAOmFj+Ch0BpedYlLr0ezMkhGkrposOMJ+kYOtREOL5HaEA3GVmxKp72ahz25OUOBSk/aRXxxJneB3R5mdJbvCMv9ZPDFk0RFx6m+j860O0ypxrCq7cF6VX4IV+OuI4+LAygaT2Um4440ljSJ7vFBoUFFzydEMn7z3LL2koQZq9Yy8gk0G27dkb0PwxI85BTVkC5AX5t7MUzoqy5vlpn8g8JleS7eJOhBWPzx1MtwZG4ZcbbxVB/vi06m8D8UoCsrgk3OJn1Rp50Dfm06BxmJVJau2NdAN1LFmiOaLhwO/SEkRgKU6Vo1SqQZjcdlkzReFsWSiWhJ50wG2a0cfR+JPYRyJP5VxJH7FcQynYtmlvo6GjzShA1mGoxfZfaAFQ/UVTELmBKmbgxavxmArPlVnVHpfxPMIVhm2XkQeCvhq2oi09S460FDMgiYcpjjZyqJrmSc2bRnZlDjefJ1qjXXK48RrkTBL50+UNszUo9A4HY/u3JTcavfizyfyZ7futKYmsL4BSE8ZHyG/00K0F+i2QDHws/E2GveaeZ8z1GjcZwRm017pvaHreL+RTuNWvdx/vPM6qE2Wex85Ok1LNB9lOKQ9avbl3/IGMVP+HjPlewITNI/iTj2d2IOzlQVynJ5C7Cn81KufXBtmdTV7Xg1V+OC1Hj1ryWv1PetUXwcf4GqXY0n4fqez1mgsQdIMYCaYp58ZyB9QuBqc9HlrOpYxUDYfEIghYFrCwHQowLRDenQi/jwlfx7r/BJsoQl/tqS98SFkj0owm/2S3v4xldhonGBlJArzdk6tnO/qQHmTn6wFK2Ddl/gN+67VzPoOCqgdr+5gqDbG3OUP4WRZoAHmOH+iTSl1NBZzSI31VfFnm/y5rk/pCpyENKkVUXaxLAZCY67CAvU0/ooHdYBorFBTr1bR1KK+5kpVPbuKicZe0QbSexz5BS9zZYLpbQ5FnXx7mAVpiVdoTopomH7Mt4uOHWTuvh73pCC/pa7ORseFglshZNT1hvziLaJoI9skaq9bMY5wbwaJI3x3mHOEOy9o28UFo9fAndda8axdIWJ7RMS26q3Id/qKnJ0ak4qNj9CEJWYHTi+MKK/B6Rn7HRVJh2rQ9LvkSJ05s5sDbmS9NXUV7SfmOyl1Gesvpjh1Y8Bp3cninbR25T91F0npNUcgjtod8dYssdIeEGBFn0P9UEH4xC82IubdvUavhJbF5G8RPuzr+nUNqsv8hmdZ06PIwXheBV7eVBi54VqTTwukI+RlsMm+paM61zF8W/eiy4f+H7fV77l86BOSDeJWVemmzeVBjVuu/BjWOAzOqhPqqmJVkrPiE198yFo7ZuFQvDpQW1mtDSXJ4B6qrNv+5VlXgKB0za51OvFyLpsgqXfmq86GpbVogvtZ/TmrwcjKw6Rd2RTq8IDomWfx5zb5c0P8eUb+PPIk7yB/dP9+yXWJaiaW4EXRzoN6MTYam1B70p9nFUP12WioUn/qNAxno7EBqbIvzIr50GiQmrPQ841GBI9N80/cgcWdt13Xp1NtD/YJVdxoHGknqioFN5dco4VIS1X0tBVetrnRze3BdFzi9uADXYLzEUiOQswPB3SSh3/RLUY8Cgz3dGVTJVl+6TyF6jxJ38UkhcokSSRghkJ1huS24PRo42LTI5Uwzc1X8cVlRuymttfjexV6zfGsfc5Gzy7INrSv+ZCbKW/oXUek3aKBUea+RszSPdKq1Cxi6qaLW8SX1Hq40vXRpdl6QI+dmH/TcXZ4pCqrS4MZoZ8vgUoQe+JStidkcsNp0jUd3oyunK5NNp7QWtltR6Phm65eTLvn7DvbPF8bBo9snOUGldPvvDWEH9eY8wHmZAARxVy9dL6oZqxql9Iintu6IZ/cVs+zAneS0+2irZXrGg47K19ymCNYZvWjlVc/OS456XRdFX4hYZfluK1Vz0p0boVwuGUWujRG7GTfgfXVO+cJ3crmvsLswjMgx8VsMhzMocQ9q2wezKdDjotgPaIz4etzEE0+BypTo0m4h7IhqswGOjDb5Sba6qwVu62xZ42qSyZzyrIhE3K/qxh+wFWf2d3LVrgiVVuq4Iyxc1OvK9tFFF8MxG/stmzXGjCedGryZGziycDEE0km08TfjYaNuN6RD0UrB/lc4kI3Rnk6QHlqXGny7mF9qzENY2waBuBHUismpza2Jg1rTpPCc9r6kvBHMEYx00nTEDr0z2PP8fxRYiyrUJnvO/Qm+MmdUsNE8XILhzrxOAsGWe2Iryxwrt6dwui5SicyDyKUktqxT1S/t116a/joambNkyyzsrnXhh/gHWFeHC+LFUSO8p64QPDHvc229BsFfp8O4F4o8/VZq6vLQr/ucqV4ciMOpAxk9wZdp6K7X32F01tFmsTaQ5bDvqxNij1yU2UFIzummuoerA09yu8dncO9uhyW1VBRGJQwD1AjneCzmx2mAXrVmWvQC5iU9lwgnti5vElo85cKjK0hjEWz0HDYw8/8KmaR/E0F8YHydUnn68MkfFX5+VCPRyiaHlwNL6hZdVpzHUKFi76HZcFuJ08qIFVRZVnOydHHoIf6mORIiplkFbiNc6kudqHI/GHxe3y0HUMjyjkml3zElDA5n9JRn7itQ9c6Lhp7J6KnXgZXdfqRdjwJjSRJQcx8WpyLfBIWeDiAXpR1AbZf3X+BVlcY/DgJi8IeM6cFsVAdEtitij9PyJ/r4s9j8ueeq93MS2eg6cTSV+s8TFT+467XSfhpKHvYt9Kzg64UaIDm7jqhcVSkAAP0t036Km8kIgvQ3/b8OFYiCbD3h/RYb4k5sOd1iyACaYgvfhewwnL+KlEEGEXa2TwQWBpIID2Y/Z5+zrPFnbBkcZ+/W5AhIPOFncDK7Gg0VlStqX4W5JRRjcYqTkw/8jei2SAbjXVILH9mp6j62BqNGL6qVb6np7bIoBuNESyoEpiPyP+y4VGCjerAqI6KCSAxGR6KwFD9WF4eN9tOrMDjH0sMmO0iVjUCeZzslH5dI5GQxB1PBJJEuAyBJBEeQ8NQM2WliIwBMSQIstAYCluzr2l0jFi7K1CZ2cymgOCKUI+0PTf1itE3TPkxeFbY1eZvDA/Fq8qzLJILukgu6hL5vlBeTC9ojMgbTwt5ABILOiQWdUSw+cZniN78jLH52cVsUSwmP+1MvTxdWoh9pQqsvOK7R6n1HVdBlq4tYRnsEso1fWRb2h0AFRljAgN6t0ZsXjCwLfWgH9SAFpfHxQo0t+StQkaI5BRgYc3c1pZr7eujWTaOpp6JvYwPqIb9nI5pufJmmrkWua2ede5Kl/50RmetA92gqx0QpHa0jzQscaNxCw2X9KCTCNFHFuCPhkVrNM4xqsoBPOSIHblG6igP+URbBW/4qkTlqBd1Q2JCBQ4gw6+u3soDacixMooe+LFDYbqs3mrLahrELu05e+Wn3d0Q/bfNpOtMqI4DAt5NXdi266mOcTRQz4+zUPpn+gF/Gk3ffGqfBvune97tqpqHtW443RUdQXuhi/W2LNakZiz1SVYe2z6fYTdmz7Lcp3zfd2dnrQ399036+5Hb2nCtC/3rLv166bYuXOuK/fdap1mjNDPs6w37rxcU7xkDxa26lyQjGlyMC+vIsyP2Q74TaIcDKQRdYg98RzL/SRsi5DMxsm793MxPPy6nYUwX8wooc/ueYsszX5WETEc8SI/7S/d5QSrzz/quLciFPR9Xo7EBqfJPzEsvG22jcQTJ8k+UjPKg0biAJPRn5t/DuNJoXEKC9EPq3uMS5XMFCeg/mGse5VyjcQ2/s9/z8stp8NUZrJLlNCRszuBG4wZSpR8k9yCJ5Y3GAO4ypa9FW8zfG5rMUKqAoyogKkNQMXyKsVMInHLUVIBMHbwYwVJnCxrwy6xnbYnLecyWyA3tc85etkAeaZ8pd1nohAvtU8raJvMBu9Q3rHSJYH5fV9o3xtkm3Xt+vkYLMqY22d7z84xGkfK0me4/b/TdtGBj7qeWbj4H2ObGDbTFoEvWgiDgq71HISz+vKPWeFBwmpt4j4n5qJZ8ZIetqZHkBuB7aidZPIRHoxFAkuzLLHMhGg2eaPpRB1oe6Qe2nJM9XpDoJOnvLN/TPSMIYUPsd1RtJcxkJUPhOis1RXnEubSLXF9l3eEqK21bqCzWkhxjle2cO2nq0vzMS1M+6fmRym1ZnBirQ4nVmj1qhQqfZas3Z3IoM1ki4BwOJQ7LaitjbyixV1Yu9/K2r5I9TIZTaA6ntiwLKxdopnI6HCbkgfY1GwuTc0dTEGwgqZhrH9kwUjEPtWr5/OUnDPmBE5W7JGidu1YUtILAsqclTkm5OEVfV5y+vrQg4oE7VNcTj6REPKKvIh5fSQCSQgGIpigAGMbZqSvFeBy03MAaMYyPp4XxuBzjo79iHMV4XILx0e8J43Ehxke/FMYHgenwvsAZZc311aQ8ecI1kZXn0J9ePp60OSkhj5SxLcvIkzYn5+Lp6AKLh8Bj+TAMx95+4Hr64yktMJxaBVJePnJJqfVjb0aL55AV1uvBrPVUcWC+aVBOOKaWjXR0VWpiUicoIoBDqJjY7wVejJlWyFDBqHEPBqW7el/xgy5daPE+Ix0uhx/ijogkZ1GeGbPO0lwrmTQ2El0YWQeIAkg+D6GIU9S2xVQPCLAfxZ82+bMv/tyj2Yh1JHTgDOkpCIM8kV9B1hb8Gxot0mPCuZQYUpbnn2fJ0Awe0fTSgeUVaTQeIU32Rdrm9Eu3OSoG8w5IWTVZlSKzL9u8MEXVCSAiFWypfDMyDecYCmGNeSbOlbKtjGcIw3QZ6AQK/p1C6ON5iQoFJM2qGFppgh81A1E+3CaeeCj3w2zLXcxGSsTJ//yorZjp5uY9+dbHRK0btNqB1RMiNSYSthO0+oH18LsSrG4FweqVC9bOX55gdcsEq1ciWDt/PoLVNQlWr0CwdjDBWgpaN9apkCuHyNWhbmYuyXiTHeNP4Yec76pX/RLnPSiMlkTc6pd45z0x4lPpR+b+SQdzrPf+xNR7B/yeYlvt+gnadWceKYb0+0TudzrzjtrpFdrp1aB1GljretdX6nWdVFRpPlaqDopWWHWOVgrHymdtFczaHmXAnT70vZpDL800nW1z6NXtnqILtPEX6DmYkjob+56iNNSxu+qmx5C3erfiOmZyJ4nJ6KX3xoYFDT31IHscBwn5ri8EqBcKaLigVbxJmZtEQSrqN60bdX/HEw9aecUG750tbENWcBRUsCmDO03EV1uuAimv7DTpaQRylZ/uU7Cd5pp+m7IVzM5ay/p1OgBSaNpvhnkK1TVYIGdrrCYSZddshcaP+Gy4lNWqYQIqYy9E95tyX/GOGjwF8T7jHdZPkxR4ojlB1wLFPKiVyjxNPOtwFNPUn9wmyANBNCJDss99qklvdYTvQz2CaVJF59VRE/s1dGllRZCp1f1itVoi7OeUHwc6P86/Kj/OvyI/zl/Ej23KjzNh7F3PWps6d7ZN3DE/KjyDRRwa4Q8mbN5GGWN4NHgWzGP1ITzZlnmCPgtMSzfPApUdz9haUOFpZXniDCkCYJYOomNIoGGyVrJ0F8bX4ViHTL1BN11Sx7BeyXwufogpZ45A1q8sYQTiidbB3oRvVJ8T8Cb8pXlIpJwiZWltEHbWTOtR/LKP59FAn7/hD7VI1UdCsjfINu6iOitHPG6axFCefXAljLzCx4KQMmfIsdf1SW9JySOoIOTP5mMLWDE/vpCLFzyrl8aFzlrREOuOzzw47Py6zot6PopmYMGuFOfjkDvCLrKOsDOAS7osXAnwHM1a1+Kvi1lrJmidBdaN9BuBlxfS4N1BqBmhA48YoWGo7ecuTfu5K/jB9bssLvk1/ODYI7vtD/zE95T4x6mCbzRmtALpuqFEnruBRHLkuXYYJoRb9miVBWMhgAgBNaBgdQekR/YgS57baASwjEpgxnvaXXFXp0aJC2DbPBuSWn/qpX6JrrZXgQpszmh5sQVcRgRHYri+SluBym1lE5mzWhsMY7VEqvEZDpPxWa4bMlmXu0v1aO9KteWvA8WOL30rn3KPnuRJDCPGe2Zu0CulGe08Toofl3y+0T6DUTffEypPj3irDLX5PSEKIBGVbCckkp2E2jrgwGifhSYeUTcxlhCumjUnSiO2myPH1Mwo0c1uREfih60Ny9aHE9UaDlvEfViEp24GoZ4qjjKvFK8RGXkUllmtPAu0D8LAxjoHKtitQ2iB5kfokyWTow8dC42CjMCs7GDWt6xAwXKujgYZCh6FoGqqN2RI6HiqrudDX1Evxa9a0+U9O98PpaRtjnl5z7pEVImZiOVbqw6YfJSm2I/kn9ETewZUGOEvRmMKp2orKQor3LHjZD31gTmFkRYKpwUNMmnsLdLVsn4WdFIW73xOMEgo3UFzR5kiEPMeKUGIlX6YHvaNdQttFM7Sh6mtK6ujm2ljaLzE7OXqMRkXDT2mmUP0GNZzV9K4p5L6zCsrqKmwGvmCQSrYHHMOeDQsqFKsOZA+Mm8csmwE1pM+yqFmomnxE3M6nEjuHl/Th6D5NiZ4yJIUpSwxHDZDzsr1GCvBa4BI1YPH5BFs8bAyj9MbUBbM9eXjkiqqPry8EDrKPjZKgzpMonCkxz7HVFFOKXcy+9UQ0fa+ut5WdrrVsskZCR8iP8EeJpdvsSskpMOp5CZl/oyKwqtbFdLZWbxmk37shnxbe0/shR7guWPiuVNwG+dosexNdNz8iMCHPA3GTp5WLdRa4IuU/umeDlqYdo60Ietq1GJPlkaQdgqS4Th4qHNH8k12lFCzIiy5VNRo40GmVuIozs5iXpoYiXERcYQGDK3DTQMroVHpoEZlgv7qo7/aLcW0aMmWw0j5a1zksOLADAkJN059C3C2aUuWSmxlHGyO5Bi+489dbT+rBTFfJGRoDPMdug980PXijnkLWBTDHM0jv2PY8xmDmKOZ5LN93o7MaIXeoPSX6AhPhVLqEaV0qBswS9CA4U41+uGTIXPNkmLbSOVNhTG/HNkakzLXnAJL6ISO6liftxPzvFXMXHNimK0amWtO1MweppVi5esux3J4Ajl9aeEuWyOd5VVnMtlo4LlYuTKsn7FVDn0Lmhc53OVGqh7RV7Mf0DgKBRyrza4KvDIyqvphf534nMoVALB6QksbVfGxgTImdnigxeMtSY5LFPGqrpJ0Byz17T1PY8azoMTrpLGnvbF4jsISqWeBLQ+C/BsPxfIDC8MWHxO5PVDzonyfflm370Nq8RlT5dV5ISQnFmMhn+QO86BPSId59CfR1Wba+zyemOip9NCHhRWjzF0X6n+VEO+JP1fIn3dhqxtau9UN1eJDHafaoY5kXK1DExKcv6kfMy8wyRbNTQSYGE+xxRz1mMWkAgGZbJqdPNijRmPPZO/Sz3mWGvXX88VG466o2Pli6krEzDueB8fUwTwjjtlezkedSQYYUyYaaheUTEGwd5JcyF3kQoFYzgXnaAUAMaDDDA0dF7h1LUOkNj5qgWMSZEwICxQT1Q1/7bgwMuwG1kNlG6DfLBQmPqLrhwPOKoXNH+Vn1H7mgSmb/AuNWE/PqJ5SLhIS48okM7P5nlDu6VdfCr95IqX4851GmudiyqaEaFdz01TrblEbdU038rbq2qhTOkTnEiVFL66iEuEBtXyirecilUSK2DLDAi+PoVmDqfoq12JCr+UazB0qa7kD1/JPW4pwFVjz09RYqAqaTLtU0VsqkyUqxmFdH2yFQBEgSYkw9WA6Fii52Hb4vVICtEAk7fxVqV5o2AVSzfXDIiHTxNQdElEvKo7aUDYzlJapyO7rIrtcV2S5Xw0Sj7H6BhPUgmw1l+W5lMmNcRnpCM9DotOtA32cty9QTaar8XPtahzLEHFbnSuwTaRBrDWEe7cy94pu2oqyQ5zDrKpVdjLgKclyeu9kCH0P3jTk1AWPP84mutIveurx9Gd13W98W/L0O/AD0O+gWk8+UOnlrgGptRXmKHYkF4GkiouAmYgq0k2qZp7FPjMmLNvQBWPTdOr4DD9om568PF4YLYmcN27K5425gfcMDhuP6GAudJE6qqstK2XUaRskTZWEo+r6sjyjThtDPaoxj2SNOXlGnbav6sxLyuErncOXk3MYJBKdhF14GtHKHGBJRGsuBmn8FELgB10524/jeCM1yMqxd+s50mEWjcRC1v804s73/LcT0rbh8KpuKJasW1IslrxbUjCWvFt5OBZL6lYa/Z79RruVRb5PQ7bMhDT/1o3QGD6ZHkcDxIzuZxewqbyBHwj84lp7If7w2+Dvr718Bat4/gSeruEzwHOP97Ggg1jv8IVH6yjaSxm72bvHGeAkGDdvFDQXpDXPX9vWe0LgOiIUI30u52jS4MLXt+3QJRrJ0fJoS4no1DXAVZ4Z8+LGsvIqQKmbrvyqWKJtOp66DoQOzQbpiDFdk/lInNZNaEUAqqHJ4ApLFoEwt0RCB/yeo8jRPmRWSgI/FIlAqItAWCICoRQEIX/3SDqVGF9qph8N7zS/DWWJkWPXpsWMhhzGQZR9OO9wxhVwDWOZIZauUS4rsA7jG3a1UOWah5iAofKOr+Uor8dbifynjdZqPtQTi14edMLJH1Yn+QIfperF5zrFljRIbAyRlo48f5manu1hL1N9InSWrS8PPnxxOXnqcd/BLYZJUo/7MrsrpB6P6fBGDpk1a6wrlhjKebFRVK5xmA04MqkV+X322zyvUcHeLcT2buCBtlwPWzBjRQQL7LMS6c+HgozD8HzbNCR0PLpAxg6QRPysXYvyMlIFsuqr7jzdtWR5OszSliQv36Pl59Qs9It5qzbQxagsUJHJqupXOX4ujaiHtWNuBG1BlkHTMxApUI72yfSSssBConLb0VkZP/iJ0/u28CGM9M+fHTv2Xr1tsv9ZaA6APpv91I48u//J9Tr2eJA0k14UPrwKvIdXa1EURt++Pgvi8WgU0sRCr7I6XxP72jJ3qW5/ptAZfdORwR97tJj1NqNoBUyVKJ1KRePVQJKo2n36Yg2pzn3Ste3QpG3h7+YAYGEWC9J6hDkGRlliDlnJskQs2Svo1MvvBDYlfUWVbNJC6mF6dojqWeVHU6AaaRDYCJBLD9NgjCPR1etQDZelGjVIpKxHXzFsaqvVNAZCkgXkjHjmE9+SepolnaGXFCcONE3aOoSkyZWy4BUuoeg5hrqIqlWhR8cOzLxnXuP0U48qHi3SgSJrp+j1MGXOI9tB9fVt4CPcBvIs9DV2go/KTlCuodJmMM9B/1h1P3hPVUZX1/n3ZivUvG6qOvreYH0a1kPU6rx3ylc0ls4aMwCKnAyZ7aXMi+4Lt8X9lmv7Axb47eUt12nW2KbMMl49uuzjbUh4EI8HTC5upL2d6mcE0hUXTuBVufIPs8dokv75wCJzV7n1D81v51Q9pFdpCniBjqvKoLQR4YqueHAFI6u+z67qQq8vTtAlJgSX4U76Wi8BN+HpsNIYTWa9+lAdWqWuxKH0esZIYvY2zqahss8xQlqCNdRJGMdbsTewYaRFwywAXjWfYXy4vyQAR5Knr3jN5Gh+wAniB1wNjUt0XTzVV5Wluuui6TZnqfrqWHKbsySvkaW3OYdkTJt5TqYF6zDPv7T4xTrRbRr0osfvfBv8w+Issi/pB+FD8MoLxsPXSIx0pfvaI0PrmLJ8RWf5sZnl2IbUHozhBcexgdfa5jErizD5WGYyo0OfSa5WPIjoG+9Psf4brjyrDQC9wzSPYJ3Owp6ui9fNJ3bIZrEThUNjOEVF0y6ywyvz67oQf12n6lRQCVOm64bjOLglVLoK+omrSqzLhv7qSnEdHrZpx97ISVvtPSAdFNGHSUhUoPaSjOo+9CXZHZl2+qKcES9YW/Ha48iLfJrgzR40F8kPNNG4H3RX/dhuD8hS/478tjQapbeq/Nf35NcVezCQf/uO/JYFZ+n5ozUagjnmHz/QapLEdnpD5feP5HeqncQv33+xduuoqe+nrqa2SPNe0HztBa8tP2m+9pPXVjRuvo7Gry0vJr/Hr0n55mvXe/3FWqvY1+yEKDusonU3Yb8W8rMqRkFa1SgWFQrSH43inUJBeqpRvFcoyBg0iu8qnJnJDFYOy9RzO+Hw9bNyDkbHzzrwajH/hYw3/eVd/gsZX/rLe14qzn75Lv+F9J93Mztiy7G+7LCc1bq+XtYyE6VZbNfg7wOa6NwuyLDLYt0Cx0llJRI1F1er1ykr+Cy1taxX8jqaa8rZEx5Pl7lUTrR/rn4WULYfrngqULzFLTgfOKer2oE+yPOXH3OcT+GY47ziMcc2HcaZPoztlw9jewrD2K44jE0ygvWB3W0ufLGe62jzhalr8w2dmZ1phxh/1jVH2xsA/nemFFn8GSiTtCXF+fbFAcVZrc1nR53VIwrOC306j+C5aEnQ+mf4O2BXXilaI1odUhfiR3kkn5nqsfrhoNPz00s66Ct90JdfY9CX0x/05SSDvtaFxoBxU7gbPVg8hls0wI0eJ16HY0GI+BlHi/107czOWjf6lqdTN0T8DNwjsZ7hj0ClmOqKe8J37ACQKMd4Jc35jO+vOMGsKJXdBRqKICELZVcmpG3JqUmu/7PIk/shfWGcp8/TcuWUhKmfUbZogFkopwwOECam1eUYyi59D9dRg2Qie7iZ0lu+iWLgpyySA+BHlhhYMxuXIVFO7kSQUS3iVCI7YTbBzAnWZ/fLXkKUnZvopiIU8MITmoEXdJMeNBAT3PyA8s8LI+aHp6xRjBBVAQEyggm93fGx1PZgR0dV7JpeML6Q4M9ykgp2FXBpepfddNOtNn1gduw5nj9KYsPFbJ1bVqTWZtZkFkmAZWUmncYoXyM/kt11VGWMqe2I1vCvWq2gtkW5oEzTQquljfkz2lh6ymL5VIbsRGSXSuiLAm0cfmKwHyL4gR0F2vBXPXZrXi1eJ1IhXhtiQ/iJZDFQsz+Sf+AxW+1EtSJGidgFjKvP5NfYBQyqa4RC/7Aqu4GxpkOQ3UBNr7HSXcE40a2raoH3J90djIFS6lDcD3U+d8xrR8EEVGJix7CmmFhbzqQM8J0qfnY4G550DhjGUt10xvpdy3SWO1lgOrcTzXR+Sojp/FhbejDXzNQkbKPMMMXN1AxD9bNk81UXL82Xk3fM3KuiLpn6U0X4UrsPl7C42ZZ/4xahRi0ZiNis9tHZG4R28uG9NheJn4xddjRpoAiDbkqiMTyjL6nOUJeK2bRYU5SSWJMXwr4yhyeqh7r6mO/r6qEK56D0FmaVkwHvqOrKqeycFDaD+VHJgCg+RVVqM/pbUS7uJK0r6yHR9s09uPUsc+537MFADVtR6Ckkb5dZ9Ks4iTx7GDcaO9rznfTLrKCVAwyY/TmUqAWi8It32HJ3pe211jNpjy03nO6we8pGtfChgc5ZM1sNe2uNwxOxtz5vK+7Fe+orcpN3CRooqDDmB81hwZiHRP7Jxt3MOk8vVHfghaoayiKjXCxwO1E26IT2vTGp3RKVvlMqfYe69C1NLH1muTo1yZV5LwmR/mlpItRWgOQpCkkMK0vVsFIZFhoMks+n2L36CZ2vY33NOam75uSMAeE+qy8logJkkThR2JON0rAArNAhrepDWpnOkFamNKSVGkNap0Pa04e0PumQzNtEhht91Ov1R23YD0oNIFxZr8gVi9dj4tkd5dmuzrO7X4xnd78Qz+6mxrMtXWdPyTDC32KT7iD3DD+k4bjcoiy16dfflvGUdWpi42nqZpLC4aIFCzJ7Ik5/NTvK5KyrGU6og5pp0cwFRfcU50xjIdVcns33B1M2369oT61VP8Ao1VOlsag4WCocSRRrrOJgUFI7sjorUl3FNw5ixrBjhOWJtFqRZ34hSWkEigKtFz/YUfHr75yi1L7N6Mze+0UzaBho4Sjrqx1stPhQqyuFyT34WQTGMl0hDigcCZOJhMDIyvstlEbxE/H9Kcq4Mm3oyzBhTHx1LYB1prAnL1QSxadHsvWjLR3FGuSWzNC+3+0lg6fm6+wfr62tIKGZfwfN1/m/XluHUeiO06zer8W/X3+xziteIwF327yxEp9b3oESz1upS2YP3K/oPZsPB7jQ8u4DR1qpuyZn2QNq5m/rzD0w3FKql44H2KUjepN4AK4Iz2i7m3q7Z5XaPavc7hlo91lvUq1arYUe3/Ns3Umr51lH1bUN9ZDZ0JKFofFcUPnPyqOFZZkWcpsFjUblNyvb3ADCeZG0Is+6TFq+Z11N5D9xAceYBzXpw2CB/NWzCGwm0qg0GpewIiybiwvCk3KSSvnjL5J5vKNYL7WVeVbvsKm38BKITU2xGZbFSLmQF9X82XdfDh0gpZ5BIp5dagdV1LFPn1k5BQtrZEm8JqcmBbr86aSz6X0P+TNziDCWVagME/ot1gSPNajUkMfgQuaocEATj6ZgKNDAMkcq5FjQ2yaTGXzWF9eUXGmxuWimZPEKk5btWjcJjWfgRZrGm9F8SjI5uIEfclFQdeSM6kIiCqMlMX2aY31G9ifJsX4DdLYbIVoJMb2GWWaS0jd2EqFBTNPvuI9Z1FrxrDBq7XrE7NF4G0SAhXnWsFlSBnwaeont2olNNU2e3d0OnB6MXO/x31GpoYco2XclKidLP8OEJIjUVUTqkcIW0R191yH1TCrDu6VLQKAYiK2w+KhB8opMY/nmicMCK+8X2TOkzbEowHqyBCmBzWIjSd3OotYwsKKKAEr9KOTcVHZEoEBD9wMtyH6fzVaQuNFI9G2CrWX7lHUcq4DPFqPG9RnvFa7oeAdLeod0rVxnYRGPxDS9zRxKAittsEnjqzhwVlhrRF+FnxNMU/m6BBXZY8SmJnYddWYNaAict1Qg7ajVDqw4aj2SnkStfmCN9fnuYE8/4LSagyQFIIEL8HARQcEEdnK3DfRUVPYmsTHsUIUqBVONIY2I2Djv3TMIjLTEG/R3MwTzDnAQ5gEv8yi+rLzu+Z2zzsg3I9NwjqG41phn4lwp28p4hjBMF4xOoAiFU6jJ6p2NUH2XPc/IA1YmUvC3SLj/GJy/s5XUltVrHs2SeoLHminBxtl8T76NMJEcRC0/sjpRa42o3kg7++vUfTvRgXcbRISddP1VTvBY3NFCqZHeC5iP75Rq2J6gU/3dQke5H5A6ajiHw/uMd1g/hOuUvjboqI4NEz0t4KOQXxdknccP5CkKnhgK2hU1aYHKLH8Mh2uNSk/b0tRHuLdqPm6+B3qMWodWP2r1rHsd1oaAeY8QvHzLCD+AjS3h7/uX3Y2xOHlKJQzNWDi8RwW2Uhe1/kFuZzdTaFfRfuooVrXho4rYvpqjpwaA33KtmGm4xGK7g0i5/XlvehRDMdyNaO7AHpjsoiTXv91E1rCl31gi699svmqlrV8nX7UsAraSixrmqS7bFIHk1CItSqIlp/alTFQ2T04dy8mpR5+7mm2AJKceGZJTRzRN00PU2gutJSZop5igTSUH5w6s4Lecg/PBJKrFmRaXior93nNwvjBn3Y5S9LedZfMB1Tilcz/hxKOzjqkr1NsDu9fdgVn1gFllTqnHQ3uzTQbwChGaiocCT+02X0mpiaTMgyk1i7LnqSk17c8PmoIzpNS0Py9ppHpKTXPTVCMeVj1mSlF6/ztLWmbY3N//xpKSaUdY937hLguJFiw2FUGO1lDKQFaQbVxkIDMTMb/hiB7NH9PUF9ZKRHO0rOpbEtz9JeX6ibYvyR4KHps2LCvwQ//PIQGL5jrD2YPzBmdMAVcwliCHAb9UghWAbqd1our0Y3X7tfKSFKmoRIT51tsR+zLKMyVfqsimYlfOpmIbNnHrFbVqtfCKpjiKbwsCJ+7pPfh68aW/bvzo7OZxGgGj73SuSIff8upvvBAGNuCEGZ/NJ9xy9XxV0y1d/A7ZNISJ+l/Q+QmujlXbqujWGNpOQeGqtMtWpS22Kq2xVWm53qq0a1qVtkyr0tpf0qq0i65KW+iqtPa7XpV21VVpS12V1n7/q9I+tiq9KGZivyAmIuua4Sk5c7Bkh/Xnv+PD+jRcAbvPPWCD2Y5aM451NoX7p22oYv4au6vwDmxb0Tx/TrG7toufCf9OY3dtVjSQDRGtoECXRKxKndHMIaqeo9ZzYm3UOgop6xKmY4QnWS3lchS12ol1UbF7mUQc6Z6MXyV0ieYlwZs3t13UsKlVlI/FEUmOZNGZOCLJJWZO/vX947TeP/7lvnDUH6RUib8P3ychm6tQetri6M8Zk+rPGZMazxmxaqmqv6qqVo2PkOq+EwJu66mWLXzsc43J+O/7qd9v9bHeZAAH2wolYbKEdf0ZnhnBzOe8+o5IedhWC75lr+QmgnfVd28VwH8TtfYjy/N5EMglAl3yl28FPg+xtkZ35oJkRLMAMprEb4W+FYlPO4TSZz/a4sch7ZT4s01oRuLPPsHh2G+NfGsgWsw/7tN4yB3W1lAU2Q5nrSe/NfStNvvvIyPos3bv6S+fOuOAuVK96vrferM/By3vC/+p51MAEzwuvp39OX9d1nIsfo655LN7mFlRZMdYJGOmXuSBNZw/k8te9/1j3/OSN/TOZS55Gnmv88dt25+kz1lqTJXi0JFJ4qc48YZzeTzLOXpywEnvFFLWGE/SOpenY+DUWwo1M57UljdlgrnsKHbOd9+MYy9SusCLJIlcZyqvc0jVI4WOeXKoBLeJ+XHiWjAevgrC5FUnHAfuq9d/9MjmgrN/ycx++tCOtxDKPWD+W2Ro/KvCG7HO0sGObD8SA1Ymx+/SxDQaUaRNizJtvtoTL2JuM3Pps0BOZSscG4TtuVHo09eUnCKWKeh5+ZxL0+bQ9Vo0NtKI8jcLnGSgjP0xfbA555L597Q2Oygt2r2h1jKkeIQU/EtX/uIPCYznlO9LWt3p2RonONUIIiK/kZjwY0UQmZqFdawg2AYkqwjJkKiJbEoB9bpMbbd9/mHP0BlJ1A19ERS7MoXTsxPwfQtlmfi+piBb+XSg4VmR3bMChSWUC0Lk+l0vTjjJka7NPE/M2IX22bFHhIsDP/E90dClThYGHb/LCa5VwfIDd27kSaicUWbJdecEzRyXVk7tekp73pCY18UlQqVE7vQxJyXMFVrJQ4AhPO2EVkLohCLxEOxkD9qELsFagkQjrKbxiCgTQTPAKgI0HYWGalGyXlENSpWpopqGWG3Zc+G5nHWc+gmnTr0PdfJ2UeVkPelhrO7WKDRnUxTQi0pefKe0uJggqdhpQTGh0oqGL5SQCj/RWW1d2DNQCpXiQVGRqtOBv4+JSmGJcxUoZJ9FI5zPMalG+nOAk3MRQ4ps40Uy/yqsxJmhEZ3yQmNPNif6QK8U0lRczNQzahfosfAce3VG5UcnvwHk4aiI2nNl6luyZGtACxQS23G8UTInUyLVJq46+beeU1rGd3V9I5SR8rFDNkBzgKKDFE/lSqwWQxdhfEaqd+hRoSaLbNDl1OlajxTqFhSKwgE2wTsuIinGXi1h46QPTO5lbXeKUdEJILqXPbsSOxCMcuB1EkB3otARCaOCw4bnzjEDRCU/hnyABHsuKlkq0Z1ClO+gWDo6YQqhNFSmSU2Adg0Mlj2vnsvL+MRMEfpLISVLfJ+gicio9yA0ENoyI1Wq2sTohAgG+l4luyEWpoFCw+RZo7EDTURwwnGgMoF9hdbrACVKK5R2Uh2FLH0VK1boQMNAXhGwz+/1vheRPyjkVNcq1LrQHAaIiJWUOQ4QZVFSZl0pMyL6rqTAHeiY7Sifd9HPMdn4D4d2JDC0ZaADNveyxrecFOnaLcazAvoDjF+SSY4U2VSKdKNwPIJq/VmtlZ5NRF7Xj5OIrvCdkBNuqN1lRgO0AS/U9rzAi31MiYehOpRuRDbr2DIXIkOGhzh6MVsuJh+9ZIaIsNNNhPfvUs4O/W62+VR4MTKVi8bBHCkriumd65jKZsPj9pVe9Mk8rjE9ChDapW2iVLeijyYyCl3SjSgcYf3om4plWYRlM1TDyH31wrxMz8hvLw4H9GBFb1jv9kPRaCvVcGjuB5PeSpUcmyrhMx8/2CNxbmJsk+3pwQlKEbHQekWMYNXqvV4rGbqh2H4J2qVBYCqvRJDh8LfL6ME6d1bEiLyM3q2NkkGpvUMquChhprnpq/IRpvY/4Mx11XLt0JVMJ9MZNigl9jIVC8CJiEzl5Ikwb21s41m7OiEqc5CKxqaKssObOX7lm41g7n5BmHR1C4s1QTkwp2NOT3hTexhbCZQC+faHgQfuP9oYqdiRS6taX70ASaFo3DZ3Fer8NA1q+x6o03bDYPBkPHPYMbFQ0Y1z94tCqRuRQ7dsyuTjGupUHQd2iXSikCTstCxwCIPoBkivcUUnd8LBwEsNuww3Ajar6gQx08Gbs9s+UvVe9eus3VrXWWtqn8muLh7YBZs3o8AFdI5FL26LBDsjpv3GlL+paIbM4tJnZfdzzwoB20YwKqHlNaEURJhOx6SnsMSVoQfa7uPaRAi2HzcKXb7CEibNpX582IF7AuUzoxUqXaFIhiOuZ8BOIkwM86XdXjgmSvPVaGQskm0KzLuBuOKt6thIJzR8AiGhVKe3PTS3DSf5yUwKpvlRoRyETnY91rMjTfv31VrTM2LXe0SPvrrqfSw7CaUOFELZKgTsvFH5fqj2zLOpCMgExwoBsZbVz6saf+nnudQzQyjBBJM0hHBXIWQUYOHd0in4YqoQrumE/EpAIVzWCdNeQcL9skv8c1Xw2DIS2TEmxds6KVXbduL05jx67Y+dDajt8zu2Nz3Sicht/71YoZ71ac8sKU78nhMfKcQpkzjZd0L5YXBPj5NFD94KFYiQCzrRVS9Cqs1Pb0WBj0IBKgWESSJovxd6S6FND+ME3Q9CWYFOqGd7vMSi6LavlECO5rBC44rNCKYPVF8KcIyFlRhWbOOD0GNoGxhlW6GU3AoEseD9vUxcfGzAi78T4+iZilPDSBQQnTs1FVC3kqKo6OpheVF5EyRkSMB9NdJlXzchRUnR7/VIFz9ulgs5FE3t4f41glQA7m7CgUlVLJuqyKw5UUaI0341DH4QY7rVxYmtpBjtecXaxRgODLVDMZKKnEGhyM0sQSy2NJvq5GsWlyjzTqhoTO+BMQuQbBiptTEITXmhDluspoJYzNmlTqwsrLzMRzHuK72MssaKMmLc13oZZbkVZYQumKmKwY9i8DdRkUcd9WWMzE51pz4NccqcIHkeO+pnl3vtynFRHep16VpqVGBHjsvMKZTPUvDU9GvmYenNkp6krR76rVP/0zB0xwNv3nukW8G49XN2hHqSRGMnaR76VtdLsj9O2R/UYbD5kP2T1EmUbXPJz/rT7Pl50zs+TRR+nrm4d33h7f7l09/87d+PbKdPJOvv3mT/mL+Nw+BfMlbHTs8b2vTwnMbD/NdvAlLdTdrPbDJUinnnNv7mT//1N3/67/797P8y/19u/s8/n/5f/+P//f/NDf7t4P98+G/+bfxf7fxP//T/rryy/4//7L//5g9/+N8I2Td/+A/+o3/xzZ/+23//p86/Y8z4eYsKeDZzTcLCZmC139vN5EuLKjE/8r59ncEgb/X1rPVzPiRH4UYoDzySapjP9UlMRkvKu62f05GQCtx287sv1kAinn/D/2/gt4lSjbjhxDRsRFTsG4rZtLJ4kqIS3NNaxi2KZO/bH3+yKA47Pgu2KxyBmT9oitMff8qAZLfCb9UjiGyHIpXrEFwGVkLKUqDnvvg/s01F8y19YNFM5ttPibfL9KCVPuwg/P+Un+nlCHYk7+Cu6M3POayfWj8H9tBroj2yWIDBfNreZqhlLuCtfxjnIvTjT7PiyzG90W5++3M3IbgY0LDH3cRrJuSfXtP50vr5y6woyWhT0s+UU9mrOVKI/Blkf7Li5O+EfyYVkb+dPGp/1vY5DUzB2OYobAtVtr3NecUKC3YJhRGmT8JTslYyT7Ri6JwFsd0h3+j7ilnLnsdoaRxtv9vNX9lRFUo6wHRBR/6L8q+bhmb24iaBTjpVbi4Db79Y7RxX3vzy2fr62rHA14KMrxHzMuYBEYjpkY/oPvTdV29brVbw+cefmj8GOfp2BPrQXYtU+X0Owhx/7RxUAVG+Rg7jwCTSu5MXD3Pd/cqlXW45P74lTBA4HUo4pQ/v2kIdE8ocuT0VuWI0McPtAoZbmV0/Mn79lHelnc+peIJWEc5tBM4jFc4jAOcRgPNounDeqQfnnbpwvodwHhbDua+ryUUZxo+ImjwWQJU9Z6VSZy9VkseYklxHlOSDCjW5PxRqiyYV2Z9YRfYRTD2qmHoEmHoEmHqcLqaO62HquC6mziCm1osxda5j6p2MqS0EU2sAU8ynWyqz/FJErWGIOkUQtY8hSnYhp7h6Z8LV+cS4OkdwtaXiagvgagvgamu6uFqrh6u1urhahrg6LcbVnXnpfS/ja1ddevnruLIFeE9g0HAWKDWyBJfgu5ctwXvYEsy7ri3EtxJyxfO/O3Q5XlERLY8tRfP7Cgsyb4Qvy3cTL8t3CNR3VajvAqjvAqjvThfqe/WgvlcX6ksQ6rfFUN8wQ/07Geonta3MVQFy7Qx71jpsDbKZjk/TsYi2niHiN16G+NWqRucmMDo3UJRvqyjPRsHw/V1Ng3NjYmRvIMg+UZF9ApB9ApB9Ml1kr9ZD9moJsg8VWD9DWG8Ww/oAwtrS8f1BxveRMks/sRfi/L33J7/zLYd5Mpvf634K5kfjuEfYyu0EXDKcf/NvMlL6zj2D0QUKo7n2U37OR29vJTwReH1QTYCDnIW08zWNgAMEP0cqfo4Afo4Afo5w/NCeXcyLw/Z5WRAyQnZ2tEOjjlG0ke78yMfyo8R3K5WW2Z8ULGRFAivsdGIvaW7PZ1DIAvJYou3m9pdP4jObgYt8si7Nmu+jjIwrVfNlrkifeRyCMj14bZxnVgMyzR/Vab7MWXNVf5ovkWm+Uqf5CkzzFZjmK/M0X9ee5ktpmjNOckZOd56v83meqaAKvidjuyErErvn9FbTKVp+2suBuGePBCA8T0WEUBMlSAg8FQppa3NVJP97FRIz/Ojaq4+JGQQTrB4JFJ4HUEF+UGHheWZcBF5VYLA55vH2b9iflsNmbInFY0jyKFufOmH07cCjLH/7Kfgv8t8/BX/8o7gUSAizPznkPy3OoR9DXZ98ya+jv0wRcAFfLhPPrFp+INxyPAg1BV+hV9vWigqRBbD0g4qlhIefCCcAEy8toykEaAohmkKIprAATdGEaHK8KnDyCJw8ASdPwCkgcPIonLyfWoJJPwZfEUMRx5BbgKEF5X5hUB8usSdsc6PjiNREZhRKFrnrvcwkj72qNrnvAaNcNK1Y5TYQAfV9JTsNRq8xCqxz15vYPHcxsRgAsRhAsRhAsRgYxGJSGz326hnpsVd3/zn2oKXue8WmeqcI6cpNR7c+0p80pMs+T7NWm6ri9IO+Dx1psO+8EPZPlWG/A2HfwWF/j8I+A3zd+4/O5IDvYIDvAsB3IeC7EPDdKQP+qSbgn8oA31bw3RxpcN8pgfuwCO6LZNQ9BsmQBW0JI9U06NeXgEcIEF4zMAsWFlW7YMhZ0Z/ALhhieOgDPPQhHvoQD/0Cu+BxQrugN0W7YDipXXDvFRgG996XTxIBMw0eOfCPixD0jvDpjNmX7tAPVPSs10fPAzQsWa0QOe9U5BxzpqxPgJxjDDnrADnrEDnrEDnrBch5mBA5Z1NEzvEvhpwHjpzzIuS8J3zaEjuTdO+rAmitPoCW8Z0JX6ZUIL0Hd1ycR2sTAOkcA9IaANIaBNIaBNJaAZCWJwTS1hSBdP6LAWmZA+m0CEjfET7ts0VsnHguhqO7+jjahcsYrdsEo+9UGJ1yDt1NAKNTDEZ3AEZ3EEZ3EEZ3BTDanRBG+1OE0ekvBqNdDqM9CUYnp8db+xvI2dzCB8KwJclOz8/l9gkcFFjdAlhRvJThagW3n6XDOPoVAgwcxO9x3t1OALA9DGC3AGC3EGC3EGC3BQBbmRBgS5UAVu1ETjDpx5BNTc3TuNo4W+E42yhSV8ph/0l9zbSqH6Zgz2WkRg61feXGC/eVq5X3lc9wX7mB7ys38eMUHsaJicHHutedk+8vNzAhOQFCcgKF5AQKycmU95erNfeXq7UPVA61HeZzyQ5zuwjt38toPwBo990ysB9JYMefeknVX2g4334hzo9QnPuuBvNLGeYEqts4yq8AysWQshOU7ysg3Hc5wLcnB/g2BvADAPADCPADCPCDKQP8qCbAj2oD/EID+GUJwK8lgJ9t7Z9K8P5BhvdMbXjfSPDWXydKVXsBhPb1C6F9UxXaQaBC+xqHdhKo0E6Hk8H6h3qwvp4c1tcYrGcArGcgrGcgrGemDOubmrC+qQ1rL4CwDoJiWDsBclOt4nvxLRl+GBBbOJvO5adDO/KCRLGDowBxZunXc2OJvbtqbiwujjNqQI9Y14DtvAj8WB2ebot1u6btzEvL8GIVSfAif6vwIj+o8CI/GG1nN5jMdg6D6W3OBJPSzRlNH+3dVTadk6DAdE6CL58kAja/bpBjYRCoulaHpHJFE2PQ893PGV7rIJCWYp2qhsNxIFR3yfPvWcumIkSptDufjqbYB8HLFPs4wBV7xpJMv9Mf2GjJ3wuKvu8Cff8zI2uKbhG1v0DUfn7jBeSRjjJ9oVDlNoh3y/J4j/gyMAgmXgYGmJzGQE5jKKcxlNPYIKeTLgPjoN4yMA5KlgE7UN98aYtAt2QRaFdYBJR3MyNM4liM1s91dX5WqrLq30Gglh6cZE/AXaj7wRVTm7NzNIHub2OYGgFMjSCmRhBTowLdv1NZ93MPNzGmHzOOMoWd/5up7WI/t6cibf1EtPUT0NY7XFvfm9BjmbQ3vS8a5tpwLw03zE/YtlzFruhNwa5geQerwauPwSuLiCwf0OkwA/dR93xKehPA7B6DWQ/ArAdh1oMw6xXArD+hiTGsZGJUO54TTPqRJVHOczFbhkWhqu1RG819juZH3PYwYpneYB1TLI/8IPDcFYbo9PW4guMzDMcTGCjVjZN1AOW0g0roZXiJsQjuwh75/JxNAOJHDMRnAMRnEMRnEMRnBSBenxDEx1ME8aMM4gyzYTpRvziO1zmOH0ptaOWpzfmvZkNvSTZ0UWwjqbNrmr388EJ7eeuF9vIybi8/GOzlUyCaPH54Ouz0wGSxysOeQtv5YXLb+QGT3XMgu+dQds+h7J5P2Xbeqmk7b5XZztoRyppmPS+XWM/7xhWDW0PpPaMke8ozoLuvIXtyIUcr5Aiu02MXUiJSSoRaiTAvQRNz53jVJDziEh4JCd9FJFyOLDZr7dEFlAu/tj9e0uR9/4XyvjuRvGecIn8t0r/yDpO/36nPV5UJ3ZeUwCdNRQRUL/As2bTivFry1zvxytWgMTJV8WFCVWHls2+JSeXqY39y9bGPqY87oD7uoPq4g+rjbsrqY7em+tgtUx976tZ7SVMetyXKY8OoPLhvAlQmVXWMesf8K+sYrjFqaJl02yYXiLQCEX+7gCsyVyvh8lNGMwcGWqlBXio2ciDWCsV5oTHeubFWYpyX8Iu0rM+1rC+07KpJQ9BdK2MlNPbBk78NDvaTCYz9DUziT4DEn0CJP4ESf1Jg7K/WPxjZkA9GDAowZ5Tl8c0n14mVdWbJ8cpKkSG/Qgz5FWDIr3JD/jAwXTwuKvfqz4qEV7l43JTWZUMcz1lrmy7N9Ku+LB9oy/LhC5flTcOynK7HF/nXXIG23DzvvLz6HgFb/FA2wsVd5QWQFzbGdDUVF/ALVW4qDydfJw8xqXkGUvMMpeYZSs3zlNdJJ+drK7A2a66Zm2Vr5ra6Zh5oa+ZRyZp5WXLgKEmIcjV/9VVOrWssgohIhlyVh0KVX2PQLD7kBu8rL/kkXE2gyy8xVF4BVF5BVF5BVF4V6PLr+rr8svSQmynpMlV8UaSKL4gqvgCq+Jqr4pkAcR1FgfeO3pnfcNW5/HRKdKr6oDvBzgMJVT1TrNoZS5AYAMVCl6tQegfuymc421mX6777xqDEKpIffifw4XcCH34nBQ+/k8nOAG+meAY4o5wBEqbSE0A3w2PFw765BYBEK0lKzvDeLdCX3QkLa0M667nrdGLVh91JXbMgSmDwCFb1XLZAqmBZUMGSJFz5TwAWXlp51w3AEkKwhBAsYQFYognB4iTTA4tg0o/TQInLUSIBQ7muHSTCIuIx6eIEBKXjWYDkR9jJSyPTxQkWms6XesRj09kq8LBEQml4OmPcQ1dwtm6AOhfD3gBgbwCxN4DYGxiwN/Hj6aTm4+mk7oHnONEeTyclj6cxwCkxELsY4J4E4PTchlLh9osx94RiboRhbseMubRjDHDGgIidyQHXwQDXBYDrQsB1IeC6UwbcU03APdUGXFsD3KgEcPcY4JSgiEMMcD0ccDztplS+/2LM9VDMPWKYOzZjjveNwQ6NXMicCyaH3T0GuyGA3RDCbghhN5wy7Ho1YderDbu+BrvHEtidJeY3De+U29P12kbWA47N4rQo8n1tAs9ezpKXnb08JEVnL9L5ypaMaQJT0bByvrJmRrk+ygzw1W48+cHLWTLxwcsZJgbrQAzWoRisQzFYn7IYPNQUg4faYnCuicFWiRgsF4mBcpF5CsSAmpU75Y/Z9nFZgDl+Zq27pBWzSvWzyF1NHpZfKA/7qDxkQ9KEYk8WioyouYxLxpJZMtjgUlmocqWXNcQFYnlygVjGBOIUCMQpFIhTKBCnUxaI/ZoCsV8mEHcK/pu7mjjslYjDrb4p16RCuXpbwU569LutkqMekyyh5z0bJQgzXQm9A1dCt5ybKxNs528xSK0ASK1ASK1ASK0UbOc3Km/n+TGiGNOP4sInF6SSs8OlpODscIkYgxIBm5MNPocnRVpUuchZBVq0cqjHQ5O9a0p9Nms9U42aEehKdVNTqicvVKqHqFLlI9TU6rasVjlZ8wRXrAdFhnU6xlS3VnlhyVvj2vVkcu16gonCKhCFVSgKq1AUVqesXQ9ratfDMu36rGrXTU27bpdo16MK2lW51LmYinY1yxiqXy/LgWZUseCm5oiz9GICFXuE4eoC4OoC4uoC4uqiQMVe1lexR5iKFfJUomQPipTsAVGyB0DJXvKpvCpQsu+VAJbXkyrZmTIla0oSOWvdSMr2OMtQoOlcz4E69+qFOnemps4NHFTnXuE6N3HKRAFkY6gSEFPXvVeT694rTEaugYxcQxm5hjJyPWXdO1NT986U6d4bVfd6jvYW2Cl5C+yU6t73ysPL0PkVdG9UHXAmHfwe3Fo5DmetM8FzYAfBF6tIvrVy4K2VA2+tnIJbK6e2DhZjmkQHJ07R413nyyeJIPXD444ObgUU0ZCTA4dow+wkaEVVisoFZuyomhp/zAW09NgMkvzwSddOKkbAs0GX8zOeACMuhpEYYCSGGIkhRuICjIwrY0S92Rw407vZFEz6McRAV/XpeF30jTn6/Aroo88PbYo+23G8UeK5RfDrTAK/rhl+eZul+APvCX3O2s4E+PMx/HUA/joQfx2Iv04B/roT4s+eIv78Xwl/XY6/pwr4o08G2xR/kXdLKi3G32gS/O2Y8Ze3WYo/8BTwibN2NAH+njD8jQD+RhB/I4i/UQH+dibEX3uK+Hv6lfC3w/F3XwF/NFbmkOLP9WPHjtxiAPYmAWDfDEDeaCkCQUTNe87c3gQIvMcQ2AMI7EEE9iACewUI7E+IwOEUEXj/KyGwzxH46Jj81d8rl0XHAFf98r33mSNFyqK7bNGpbMM9tyC23B/k+9J1bVv96LxsW33mYNvqPrKhfpA31H168eygW+lzB0Q1AkNcSDfQVS6G+tLW+dGZeOv8iAnNMRCaYyg0x1Bojg1CM+nWmbC+1tb5zCnZOmu3pOva5vmhZPO85VT1DX7/kXBhzRG+wXv2bRhpDsLL2Ob6azkInzomj3PaN+AmvMBgCK6KtjiPlyfQzlsY0JYB0JYh0JYh0JYLtPPphNp5bYraeUvWzhO6Cdf2Xz/lqnlfNw4ANGlOsjuHx2PX3Yl3gdYu93TZA9DKgrEDb+IUUyDj2D5n1+4EmNrHMLULMLULMbULMbVbgKm9CTF1N0VM7cuY+upg2uNgWnKQVziarUlTj906udvG8lNmaSqYWoEWZkpTBqyNgk0Ov+ROq4KWJbiDWeIsXJkAZ0sYzlYAzlYgzlYgzlYKcLYxIc5up4izJcWyTPkq35xXRFz9K3SOuBMNcVLeYOV2ZxUgqnKS7EMHJhDmbvEik7CSpuxZMyxPXmhYHqKGpTlZ9qZsXops2Se4kbldsDNTBpwng/+uyoWNnj/7ZHKr8wQTqFUgUKtQoFahQK1O2eo8rGl1Hta2Op81q3OzxOo8qKKEv1MubY4wu3LSrMPx5xq5h51Jbk6/o6EzL50KN6dXmiQevFASL1BJhDenjA/Zxk+NCnStsPpAEsg8Doi4Xg1oXbSmJtsiBnK4oJkaV173i6nUVgm8CXKUxsq28WByAT7ABPgICPARFOAjKMBHUxbgi5oCfFEmwJeKvDavNPG9LhHfG7P4YnKsPOrywmnJMV6o5C2zWfjRJ81BWOvWNu0SMNu+A1dyN3x+GC9qmm03GEhZRfLL1BC+TA3hy9Sw4GVqWPvaVowJyCcqqyW3uDNFp3gzzpdPM+AUL+DxV5LQcI6M4VJ5++VguHyBU8DXw2RYD5NsDEy/qqgEF3VJmM+gMwEqeWkZlQ5ApQNR6UBUOgWoDOujUowJcyb4mogMRUSgOoikV2yDsKKDQfht/QuOsRk7JgcDBDrgji3ibI4ngE6EQScG0IkhdGIInbgAOuPK0AE+BuH09qGCSdgNh4LFilvS2qAcc1D6Ya0FnN682WZY5iGQVQcEAM/KnordCSBqXHrBXZzPJ6EzAVJ9DKkdgNQORGoHIrVTgNTuhEi1p4hUX0Zq+Vr+tdDa5Wh9qqNCaQa8dljRS2Y0iQ7dMQPU6CWDKFGQF++Jc300ATSfMGiOADRHEJojCM1RATR3JoRme4rQfPr1legOh+V9HVjSy7NhWNF5pjcJLPtmWBqdZxBYgvuxe87x3gSwvMdg2QOw7EFY9iAsewWw7E8Iy+EUYXn/68Oyz2H5WAeW9OLsOKzqU3M2CS7Xzbg0+9QgwASXbI+c52cTAPMRA+YZAOYZBOYZBOZZATDXJwTm8RSB+fjrA3OdA/NBMzolICqPo84Bzirfg2yF6FntOGB5tsThrJKfbi3UwrKHLzuA3QrrXYUsh+hViOiGchVyahaobKDpUWqVxHX6BchDOPH56QMmVOdAqM6hUJ1DoTo3CNXEwdfDmsHXw5LzU+0CZC3Ugq+HJcHXdSWNxUsWAvJBuSi8ww6rftOh1wd22xtUjLseguxkrCwX3g/0TdpemKXh2aXf9Mjrmkjvv1Ckd1GRrhl5nQ1ED7uuTOa+JPRVwq6zOtWY66p+kHiYKoYPVW5GyyIIs/pEyPXJlcY+pjTugNK4g0rjDiqNuykrjd2aSmO3TGnsKTqiuaSpjNsSlbGBqwxJRSj3pSdfQ0VUujBdReUXpkb5sKCk+dYEduOFArs6icBu5oWKQzU/y+u1EM4Neb2W7kE3jQKpJE75IO4+F2vJpcgZPrkYbmBieALE8ASK4QkUw5Mpi6Ec0Xm1pkiu1l7HDzWhfC4Ryu0Cm/aDcu95MOl56FGopCFx51K7WwjSopJHXBOk7RcK0hEqSOZ32JeycAhHgW3cmL0CsiGNMJMKNGpm6cPr7clFYRsThQMgCgdQFA6gKBxMWRSOasL/qDb8LzT4X5bA/7oI/sr16gyAf4VnEzcS8JPhaC7yhuG952Yn/QL/75Rk45GWbPyF+L9B8Y89mAgi8GDiGsd8EoEHE9rgMuij8TsLnkxcTw76awz0MwD0MxD0MxD0M1MG/U1N0N/UBj2xZmG8gagk3kCkh/X8oIT1DCUg8LCeUYTHkfWSxA+6SlhPl4N40rCeUYSF9RzIAM3RGEfmULJ53xgajWE9nWjisJ68qBKEIAJBCCIYhCCCQQii6cKOsK8W7KKoLuxcDXaDEtiNI9ORAb4boJe2fiRvk1eZsbk+sLvKqa4dITuFdL/+dZLVdqIyexiJgLHIMAjuc8ec72wQNcE3xsBnA/DZEHw2BJ9tAB8LtBxNdgjsR9M7BBZM+jFM53Va+Wo3w4LD4M3wyyeJgIGgw/NedaMiDwQAZeUB5hMG134910Hk/KrkxAs/v0L9s9pC0b/J0i6DEyzlieeITnVCtVTeWpcr70SxWFxVdTnICkAmbNAK5sd+wMMeubN0nG//FU0PRqY6fHhFGb8WRQREr8+CfhA+UO+3fN5e0fddzVev/ziY/XQfwe2wVnW2hrTakfRjHgSeWUkhtZLi/CQspNvsODsJC+kBVizWpx1lagUbxElYP3c55kdgC+IIbJFbWPdAw8jTkK1m4jnquyLbynzm1Y0mNra6mOJ5AornCSqeJ6h4niZe9RbRVa9dc9XLvxK1wir/4x9/ar1Ffw2sdu0VcqStkDslK+RQ0ymSDlFim/ai2ruRvkGqtXOtj7JwP2rCPfytCPdZdeHulwi3kOBjuAUaRugW6KxAQNVDsY/V5JSL5XBysRxiYtkDYtmDYtmDYtmbslj2v6JY9muL5aMmlsclYrluNFw1IaXuCA/UZk3xUGS1nv/SVutWBcgidus7hmLgvLDO2X4+gd26juH0HOD0HOL0HOL0vMBu3ZrQbn2Yot26XmS31vFZIJrObKaeRV8+SQRs1re4mbpWtKQoPgvLYElxiGRWON09lZYVWgS+I/uguCrsa8vJ2m9lOdmtvpycostJxjBtSbmTl5SMqLmGLyu7cGdJyLN1RHhDvDeuI1ntfC1Zm3wtWcNkdBnI6DKU0WUoo8tTXktOv+Jaclp7LdnX1pK7krVkT19LoFh+VDwllrBlwiEb3sRzl5JaS4VBoNHF4hYDIstc6A/JQmEPR68lPBJ8fgRnanucmUsTrBB7GPqWAPqWIPqWIPqWClaI28orBH+OI8b0ozQHlpC7klc4u0V6fJfo8V2gx2+5Hl+pgBualHAj4kFEVuiUKSbHCVTxHEYlSn41QmOJlIMCBHxd4Qw8mQAUKxgoTgAoTiAoTiAoTgpAsTqh2bAxRbNhRTYbUJRVNBtqw22Vw+3QfLolAU65H35GFVWmc75eWOJNaH9kZi0wQz4ql8zbmhly+FsxQ46qmyGbFcwQ6Z47PbkSdsmBMmGHyGFVbqywAyv5yfwCN1iOkHVCuQP8uFjdbrGwi/DDyW2YQ0xhPAOF8QwVxjNUGM9TtmE2v6INs1nbhtnWbJiDEhvmopJyUG7PL6ekHMyO1KhyuILKIQu1ApWDcgN/rSmHi9+KcriprhyuqigH4dENlcOMMmEXZcpB+HzLyuEGUw4paaYc3tVSDrqz98XkyuECUw6XQDlcQuVwCZXD5ZSVw9VXVA5XtZXDtaYcZkqUg+eWv8zF1IXifxC407YlatyUYe2UOIeb1RLqIJ64ZrkQT4Hn+t4TtKfBw3XP5fB369vTvLQsAawiSQLI36oEkB9UCSA/GO3pxK29yRJjwg0DC9cIJVuvmyJb+IbYwjfAFk64LnXMiJbwq+QlDaeEXzIYz66efi5ywXKXlteWOyWjqevC5c5xfyPLXexWXu4it8Jyx9mpLXcDZcIEAwzLHa9IWe5iTKxT0my5+67Wcsdb4cud40683DmYsIdA2EMo7CEU9tAg7JMud2TevtpyF7l1lzvX1Zya3BKnpgmXO8UjxJ+SuhDL0Ndd7sxqCV3u7AK5oMtdZpQjyx0IMTDmE+pPsNyNMQnwgQT4UAJ8KAF+wXJn11/uxvhyx6fSwjVCyXIXuwXLXex++SQRsOmyuS7taIiWYKs4IXQV2NZ45frkVnrl+lHxRGhr61Tnt7JO7VRfp57QdUreh6mXRyMXfVnbkVYo6fpoxy17WZvHKfwo3BK+My5F+n6rM/kC1MHErwvErwvFrwvFrzvlBejpKy5AT7UXoLa2AI1KFqB7t/Xjk9WzHqx9a8XatmyPTKy16VlXRFpIFwLrNLBWAusisOzE2kms48RaS6ylxDpIrMSxzh1r27FmHOs0tFZCazO0rkLSPyuOrPvIOous3cg6iqwb8otr7bg/WUPS4IV1bQUe6ar16FkPnrXsWbueteJZbmDtBFY/sNYDazWwrgNrI7EuEytyrLFjdR1rx7H6pC3H2nOsDccKQisMrXFodUNrJ7T6obUeWp3I2oqs28hajazEtWz3J8nxiclD/OAnTo+h1Y69bFmJn+LEG2aeDK+b+fx+kkjaA8LLuZFHDydzgp5MQKMq01gOHb/LCR50Antkt/1BGqs3J9uXyW5DPxD5VXKSFZkkPwfJP27LH7Md4Ig01xEktqfTiK/3yNc5dlPjJ0+calOh8gPy0aacFfVcKRSpc634mgTyV+r5LFitfCLF0vQZuTdUTnaKkklcUr6n8erzbxfyN1m95dGiBa8SAyWRT6kzOyYyJxwHiczeYxNlHtQL4+WaqVCacD4nWzL3IkufnFMelFDqoEscZTq13CY53bljqFkPT80hayoCO0NXnbzQjKlQHvuB4ySESMv9XzlSDBQa5DZDADnxRI+jXiHBXjRxhkYmZOWvTXLKOEIkEozh3kijjeJMIU1dQ/Jvu9o3rd9HOgnUQTc6Sb5/5WNyi6dPnuod95PrdewxWdrz/QRdeoV10zdrc/w4jOsBRJNS0vjBjoYK5bVMmd1bF9cdeOYinChSlS1ZlCM7CSVuP6q1uENfUgsPWBNwvpbVJsYJgsVdbEWQxkWNQSEumGKnxCM7IrLN6VxNxac1xrHdpVMt5lcnHFIlQTSg1AepQF8pMPKDgIZOSsux2sXI1vFVQjgo5oSr+nJh6O41TsmS7PDJT1RkDTzKdnURigqVut7DjTLtrhe5rKrm9aKRSb8aE7DmJcemkubcmXnRrqmoOe0hB5Fx3TEnrON4cvC5F8mT+GLiIBKnTuuecQwwqwmf2Mrrn4jvyYEW1p1hWbOGptJFQXD5PNcurHe/a6qjMIIkn3NT6cJAf3zWTaWLw7FxzVJiNegi1Sldo/UyW/pirXpK5YS3EYLMAvpV4zJuWM8SVyuAH75x09mwbJNVbjzw5r3HURglcevn7AAhbrrS6VLcvBc71iHdzsbh4N5bEcdPPf4jOw1r9t0vn/7Z3/79yHb6RGH/3ZvsH/O3cRh8Pz//hv/fwG8T6Yi8/ICIiUpEOPYGAIEUnatHXb0ZQv26nOTv5t/kKxr5a/ZN7PS8of0mHnmOoM0LS5T/PP8tIrsPMvWv3gTEtLhJOc9PxvKvpMAfvvnDH/73P/3z//ybP/yH/+xf/M2ffvhP//Q//Cf56QcFvx95374mg2Il0168nrXOxDf2ge5480rJZ7cVzne9ZI2eXRB98O3rf0y3xCnnsu3xrBW3vG9d62y+/d6e70Th8NvXK0vvN9cf1laXlx5WV94sbi09f7/84HY+7h2E+/5J8tD78O7+vTe+7y0vxA/vnT3nIXz/dnjyw/b2m86bj0vLR73j8UP07vDy+9P7s6G/8NR+3D49+Hga7tzu+k/BG3v0tvvxqt3e3d7tn4ft5+s1++RhL7xc7SzeHi+6ncWLu/O4f9Df+OPR4HC8u3C5+nhy9nC43188cf94OVz78HDZfl5aizaClbWD7x+WTva+2zl9dz8+fdP1e2fxytsf9rzjD+HiyaPn7XQO7rd27fGb8eLgcOmx4z8sRF749u3qRefoaTtYWnz+4cPlxtvx2kXQWzhbP71bCYNdd/NsI1pdfPp+dfV8fdH7o/tw9vFxb+/o3dHleO3u4ez8bGH38M352b53PQjHzkPn48X15v/P3rv0SLI0C0LfuQMIhBhdZpZszm16Qqd0oh/16Dr1Zd+8Rb3f71dXsWhFRkRmRmVmRFZEZGZVHVpILNiDhAQLhMQW/gAICbbMFmkEQrODGWlYjBDr+wl/RPjTPNIjq/rM/e79FqdPZbi5u5m5ubm5ubn58dr8z9nC5c4guf00udm4XRsdZ0Fn6+dJtrS4/Uuwcvzc286egi9nK5PW8snaQ/ty/fDD8U0v2T9cef5l9+rgZnOye79x3rvbPezdH/88uO22WsGS33u4+fjc2ewe7PUPNzeGT6P1xU8eYtPumZ99ml/a7a0cbNyHiwvR2kF+e71zd7p53GkPF0cPi7t9/9I/3u9f9n5/NbkJ7j4Mxgut03F382fv4/NNdnTcm2xnn+6et8f7n/qfzu/3vV9O926vsoXB4cXZwf3Fx+jyl+ih/9i5311a+8V/iL98ubrsbH78/eD0fvNx+ecPtx92OtH5w88fTrdXPgxaHw47CwuL9+EvwS/rH5L957Pr9PlgODzfTlvbg/2jcevw4dBrj/r7D+NPZ0u33e7th98fHB89r9y0r06fdu5H98fPm5eDIN/vxsu7u73584+9sR8nT34wPLna/OQvXiaLR9db2x/Wj7aejn5e9ILOyZ33MTm4nX9aj7P5xSSZP7ycLAyfk1b+2D29PfVO7y5uBx/PO/tbyzdrvcsvayut8Ti/vDv5sjfe2ji5jXa+HJ0FX5bX4qP27dPZXni9dPm4Ez32u4vJQmf/4Or0+vxo52r96mB8tf7xZnQ2PLpdubp9agULT/5N9/Jw9zHd89PTxavh5vxl3PF+f3U7XOot74+y3tOXT5c/X338dLB18Dw5PP394mFvM9nrLD/e9MK7ny/3Py7E473nff9ydHi2vXY3yTdP137euvz5ZOPuaC3qbjzf5Qt5cLB798t5dPW4+HOWLD1458PRxuSX8C6d3w4usvW76+3TcRZtnT/tpmtLP688rh+MN1PvPDhc2Ovs7H7c+XLe+ri+tRA8bnZGw/vOwiQZZxdpN+mOoo+X8/PJZBJ8WP7wS/t0aW/j8Wb08+jL8s7RwWJ6dbr8vBdt5MHt1Yerq8Hh8+nwqb11ffFzy388HZyeHOTH45+D8/Mvvd3saiE73W2d/3JzfTDsPw43N/rJ2mX/aa3fGs6fj5Orgw/Jzc3k4Sl5PPgYHl6feNvZ9u56f//TzuI4+ni2dvHYW249xFfDq9ve4uPV9k378KCzcO9fnNwdL4/8j17XP36a3GafWk/r7d2s3905WLv76K2ly/FVfB6c/+IljzcHWbKS9+fT4UJyc9Z+2syitbPdQdRe9H8+n6xkDwv9/Jerj8HHxfvTlb3Jwen97XJnZynfXgjmTz7c+09b689PN8nuzs3hw+lR9/7L1iS93d9c2Xrw9g+fr5DCyWL/4fomPcm2vavmG/dNCy3Hy0tv5ubciZ2m9ZGmnWiadqejaNqbzqUXrg1Gp+2Lw63Ty/Yv68ft4HL+YhKcL368Th/vjq4+fTw8W56MV3ZW7v0vD2eL62PvdqP/pX11P7q96vUORwcLeyuHd7vRfH690V/6/cn+c/D7h4VfLsLTYP55J0Nrz+7zl+BDuL7SW9n55aTzMVm69z7lt/7GYbJ2suOtXE72Px73FvuXT97HwdLi+eDLY6u7NPjQ7e4G8YeDo/n89uf1hY316+7jxtH2WjK56PZGyeH2+fN4fu354H74kH85O+0fXK6vxB/9q92dk7jfHn/JP10sJNHJEdLMK3f3D7e/rHhLnetedH94t391fr13+XDYz87+pGn/pGn/pGn/pGk1TSsk2Popca/KI9UfWYIr6ajwCjgyvvo2p+2Ahin6UByq4xjYsJ8MsQes4bu8qFTuaJskgLCvk2+f/55h9/P3ZcP9J3UbgRcKofwD2Xahmv+ubtQD+wixHFX663/8D/569A/I3uFXvxF+U7YIRRfiJmH5M73UsszPW/lRauAmc7+G9Bhc+vp+EMXRYDRALeAT1Z9/Rp+8UZ6Mhp3UC0LHASsJEHNu/FfNRcdJ3reT1A+vhgHaxxmqCRCk2hKuhhAoDlAd51xHrihj59uUlDLK5icJl9X5xse5/+gnAKHVhbJE6XN1CRV8LrCF2KIWkZNjiEOzsKceb0yMYSEMLBYjVAIesMmixkAUUQwFoY3EFbBuzDv+qloDzUYByQalawEG5Pg1KC1LCO5cAKE+jG8EMY9c0Arft6PHMFhcmHNTWXRjLLpFoSQg8fughUcILkvDLEzHYWCGaPWTVoaYo1Yc+qK4Sd0b+57SMdSr1iVlTyNo/tVPvwatBq/NB7JsGywkLcPVhn7D57+R8nQjkfOpNwh/SuewF8F3c/TfCP3nof/62lCUeiJ+P0KonIedKMvTKMwcJ1L4KJfPEdKRUjzFB/6Ok2mDUZYxyPOw7z0h0BwCpYUYtoPEEVnoQ9LsSIEVCjEsdkom4zB9chxPlaWyCMO1wzBoIeWPpyosPCWEIirlFPxJpb9UTgKhpVYSCSIKCX8TEF9dKb4xFFfnl4tPJRqriwugJpsDB6rGKNkOkfX4WA5OnZGBh0XVi7FRCco8QNovXo0UZeVy4hsLqDwDyynRjSUEkKsAArGNFQQwUgEYmY35ZVTuqeUlaY1FjAAwzZlWHaKZ20b/tcTZG7oB1mR09gaYqV6rHwaOM3wvAbESsg4tOw5JWh21IwzbVmDLEvP6XLbGF+dlvLSVFVdBsSWrrIihsPap6CUSegKggNv0JbIUhbJ1JATJ6lAdgrLJBu16AcG0Af4PmqVORfOvw37059wx+4FWj542PAOdvcSpj5eScuDwAoAPGByno0CXJdiYI8dkjjNWQMhnwrkFPLDILsbHbo5zpcAVBQTyE4YMwtao4zjXqqzgz+bBLzEqBj+h/XNrbAEPX9FXqflIhwltmWi+zwNlVBlLAKERuSPU4qxJOGuEcokvicgXAUhhSsKZIopnwRFd5AZWBhk7x0ncEmlijnVUWSQoN7ABNlaLCkQblBxse11pygaj2aCErCCAa0CMn0zqAx7vknnFFLoiISgXT7GPRx+Y4jNMS95mQdtf/MVPaKLOYWwfAatR24TE78lxNBMepSyKjWVDL/e7ml0o06S2bmwaaFc0/kgrDc2KJ23on0kL2mds43W1PSCz3goJHsX4nHTXy7omS0eEMUx0vTHDiE/p1tSnvZjwaoVoYy1etVKeM338iA/iyh/I0rhmP7ri6044MAoZEjxqahfji+bzMvNixGjlDVlqDTxCiZA1+dQAX+CmwU9wj1oI/FY8GvwYJ/mP7WQUBz+++TkUqlxAcVyFh6JULzx44bNUjk2hdym1hfghdCoDlYqJlfflcjmesiUXis50FkQggxT6SwsbZt0PxkL0w6NcSjSbEFBcnp4DPMQcT1U2Ck/pYKWHB6oUuwvhCpqoGX0sE3SFED+y2SJASMXFnA/RnKel7BrBXHmJ4KF5/1l1dBUH9hc0Sv3B7YR58fe9S84v0H5+4gonGY2LApPGbtnnKVpd8nKPvsWuH8TfPv+Zwf/1DwHP0z8CPFkyxHv/Pvuzv/7Pf/jD2T//4Xf/5Hn47v/5n88XW5N/+uO//d/+V//0f/pvbvJ/6+//v//9nyf/5/+wdvd/Z3/9X/zwh3/x1z/8LvqP/7v/bOuv/r29s3/xf/2X/8nB//FPOn/59Mt/+r/8h//f8HC49r/9j//7f/3D7373v5IGf/jdv/6v/fkPf9hGf/7hX/6zH35X32GWMIdZDDjMYIXYC5/ARSIpc8zIahJUcGIbUAPicoAzX0K7egoMan7/FYjJwocXUEJr25CBIEEaUmsahiO0+/IPKCIwSBb6aOJiEAuSwPYMjYkUsnoGOotaUCkmOH8BwctLr0swau/1CUaNKj6oWlLKXdSoJH0aYiWNWscmBD0WUCpJUNjyb3tZvp2kEy8NLhOzwSOBgTZP3PxJaZ7tcKTK5e7WdtrEcxXEzURZBVmQWaUPotlrgudz4kqoENcJQ1j1X4j9N6b5MDy78wsWkqeJuaqQREhRhtl3UAlldmi0sN15Qq57GrQpgaCHWCaIpzysboIdg00lFsJnCjLVmJjQEDkpdKrvUoQugULWIVxmqIcHaGg3QJMoMDK+G0adbj6Vp3ITUH2RGQRap4bCgpSM2I5jOKc63oWtW/Ie3yPAcxy7K+OOQgwunCNHRIMQB10bAUsA6mobhDHZF6gedLEMQ+L9QeDlnlHplgCk2VFKrmAZzgPLYrOKxcQwzVoiXLiPRMwK3xHvvXCZ8z5Kj3nyPspO03AchRODy5zoYIXFdvy1Ym4dztqyFeap/baZ3FKmW+WCFEV1l+Q0FiqAODmNJQSm+bdLEhorpBF4kSjxxz7wBDpaZMPX+Iu/+GlxoXD+tOvau+CUGHpGHVFskEymcvQc1rCVdXmReq7oVu/TxsLGrTf0YWO7Pk1L4bZBHTWox+dMXwRb1nzK3us1bajFoI1MxvuJ6dbBnPvIfrTn5DMSRdFGcT+K8bmCQdcV5XMFfuqhZoE1ttce8zCNvf46gXpS7VShVITeTKMx0i+PBnBSbNadBXJMfWJcmOoUu2TKU2qYut5B5aizpZonFgypw40KVtirvALNQuvBuogIEtZ42mGfiCNRdk8mCIIZ0XiPgJErHQdJB0U9TSzHqrJKInwnWtwWISXt0SVEW+yLkjnqpML603FOhmqTtAQDdStdwl2TM5hIXtkZE72iXSZ9uDqNvJEOYRhFoNSJxFlQZkeWTpMuQmOr3VCBPNoRlRiRzZC2ShbIkP3PiXbAiJEgx8dVW6MuE5TenHvQ7LoT9N9pxVlvNvD6fcfpqueF+DOWn0EYRKOB4xwoAPT7HHlrPO2gyTdRAMhnsyCQDrj9RlpjQkDqwvFXZLwZ0uKaRzFOBIwlUaDoJhxd0bVW4GqvI0hvREN0NYOIdEWUw4FaRjoiWmECnjjUOFSLm9he3aQXX8FDlVhZFBl0gxyNqaSRxfCSyc/5nLuGZOfBbg8VBWqwVPI+GfaTzpx7qRpEuZePkFm7prpWyPkp11jjMryt0ugysaYoBxlTogvhCiKqYQlKpYowiK00IIFuXhFExIAsl6LRuBQ+kRPcNcBa00cVsJPxOB/VEzWyN1ojVx7ZnI0yci0QmY1woEa9fUbZfKM4tnV58/hTacxvaOIoo4iv7wsYHiXFfX+mWtAegV6eZaYNI2yFVxuROcW3hesevgFPd4X0y0XXC5JJ8X2Zt3VOk1Gszi+IRpJ8+lzF47+hBMw+qpggYVAZQeWouowg/GWJfuGysFJUG5V6a5l+oIizjZ4rE4S/LxdtFQSRygsrhRxtziD/BVNVnhpYali96nGPk61SbSB6qaBvz05tw1rUVn+Z9ohYwVxY+miT3Osbds70ivV0563UBFRfculiaF3tUliQku1XowQuLC7zv5hOoIQ3PTsL3KIRkDeHdrwhN+5N5JPkIobCIveJqZS57QWzod33OtkG7tB01YABGI0HDmKwH2SCzNRUkALTARoWAEkmesRxJkgC40lQ1L8XCAIFxlMQl/dtb3rc15GZaZPCt6Ybd73FrNuLOXed/diec4/Zj8M594T9uMfBPupKsaUFOhbxg+vaHomk+UGtKwU4lwXqRvlKspyIkSGkL7gjuBegC6B9IbSkyFSZNbZ4fEnxgEjWWBe+4eYax8IH0ljjhH/B/L1q/rpZhNTMu+tp4gW+l+WNBXczSkM/P6L5ExqL39x9u/U3av+U/NWiOc1nGI8Gb6DQdlEiNElwn7V4QBaYGpN4z0t8llBG5UfZ1uMwTLELGylOFpkfZftoX48042YZxrzEStaGhdZkZSusDD/3JJaweH203FPOd6Ph1hh1ljGY0m4jF2ZIB3nu+d2BBFQacQzoMIp7vJgadKT8Ey5vjaJ+QAhd+LRssFVxXB5jiOPsq9dhihKkpNRGHWd7qECzMvBexJ94rwZESoyvwXUDy1W70+yvKjsgXqp95YhFHA9qiMbYEFXGg9qipEQbD2rWkzJlPAoDnxSZxqMw+WnT+kg06BBQ+58ASSPBi/FeAJUzDjUoM9F4IKK3Ve8btqlv2LKwN+fush/Pc+6OtqTdqBZgK0J1tDgcmofQYN6QJ8WQfX2JuK0shDfv9barGja3Ki6cqKHGjRSkQ5tp7Irh6UJ9cJE9sz4HykLtdoghpkq4qUFRxZ9MsVJfNATUw5mBF/VbCc7vfepFKbJwtHPt4roNgzCRMPF64Wh4mQwjvyLADCc7pDAytdLpiI6UJUbT0THhIgeWi903hBMPV+28IZqAQpdwpBfr0DRet81fw7jxJozfuFHeeBPlb9x01HiTjt64yMR4g58gQki+CcI339w7O7uhiHBOighn1HRDnQnzc59bSJSL8GLUqQaxIEEgdDSIRQkCBz2rEEsSBCJBg/hUQhiDkWVj55uoyctIbtWVS8j+cb6IdMb0EwR+XCi/IHrpl8XyC6KPfllitbLiy6fyC8Ifzjj2zX3L7ozezblfoau7YVhxnJpHed8cj0JKye3qsZd7qeNcq8dTtIBEQISZn0bDMggCbE+AIccJoyEOnw6DQy/ujHCGL8d5q85hDYYeY/L7kF+1A152JdLoVCKEMZcSJYLHsHAsma9PR4N5/YTLo/OgTUFoVRk9hcs1WFyXvzWZa+KsvTuN0FcZy0JJJEc319r5m0AUOcExNaITQ85431bcGiUBLV8BkyPQ50xVUIVl+IRVrATWzEnIrBwPGaT8F85e4IeaLk5CZUvbDb0An9rGagFO7a5sdRN2MUapqVcTd7AUsJGEwuYUgzXiUN6cpmEzCd1c52gaKqws+7ZndRq+r6xfOQAFBWkorJoVgxLZywR7iwvjAoapkMT1NnIDNQW0I1kU7CFSMPAI12jo8RWYRM+exCgw0paG2RCpBKvoK6kZuA3t5A5MwUCgDWRlfAIdYSHlkwvJ7KjeVDcKpzBQmSrY5YnmlR7dkajHrzxLvuMM1YZ4odGHykEKH6o55q1a3DJpbgkkQPgbgpIkUkx02ASQVct0cVSbhbKck+PaK2FBcXm/kN90GKpLAcKuD8mHrVO8MO7NUTsFQHG3ftj3no6rIokFGNFg2DebZTjCszI4uQSoiB2iODJzSUCC2UyFCSXG/JJAYfAsc7rnHeBbHaZZccyWXTCvpps/FYFJ3LOfuAUxxTUNOMLIFagobmlUGlI4WmlfM6RK7EmqC0MLJHA31Ny0PMMM2VYWl2DgLCwlBPakVUheXIZtv44Hs+yVeTBjLp7EzZi0eEID3R0IyilxBkIE21FrSeqL3YYlCtUiFE+TnZJHzIWouuhWTA66AV9R8VrwpBuoA80OLReOSC3xcvwEi7LGlY0YWjBWFw3WckEYiBarAN6IFMP1UafjWU3MMgsdz8NXoeN5aElHK2wO8KNXGjWt1xiV1uuMSst2VDqvYqPS8FRDYRZ1YmRQpC+yYJUeDM1bGLckblU3bF3WjMHq7dkzip5GnrIbpxZk61VEUpRS05aqq6MYqSZvkYf+lMrJXvGMlXlgac/A9iqSLNCpzRrbFOmEWxFkFo8fr20YqYO6I0XWm+/HqYoBL3t+dU7ypxvhTetr8HnC16lHpGVO+c8n9POc/+yhn5czDYq6K+iVxwYTdbRoJYwFuJGUtoQFvY5zrm0IS3Ybt4MFgHkzKGFvQB3GG0Aa3geK+MPI24tCDzgLoTUaE1EcKEaNU/Fb2SG0+TuHNn9rXCYuEc0P9daeNXW0itdWXm/hWZP4qTc/+6pTtNVYC2ssOUdhc4KfuWyehu6mbm8cqVZFKUv8WgQdNcfZUEELATOJOS0mQn4Eiqvh/grrTZdlSCgbR4CIAcK0AQnTHhemB4TRBf+5iX5u6/zibJlEeXdP8KbsqeyRAeaKL/Qsn6hEx7mA6ggQZgeA3DjzAyj1TdHortoAQV/gt4q71jLBXakgI25/GCF3Rk4l9tTBcpUOyMHEhTakaOdzyMewg8bwnv/sop9b+pAeqoOAp1QY4BevxWnANea9WqGexj8MVR3AO6vU1Pc2mpq31zi01bP30NRYr3I5hI/DqOLSugjwau4E3iRzKBTZi7INnNMqHdDC0sHge3ERYc+SJuJv9FqBKQYJPi4kXgeA5loEv9ipwLso3ArarW+IHywwSeAH8yeU/GBxSKqDYd4YAnQcNg9D94RPr3U0va7rrcbH+mpcnDGgho13M4Uc7LHfTVLMasXXSr6D05FmQyflwv2F4taIOQ9Nga0JVRBPQIpElCF8IaWpGwJ+81ic2mnzRPyZmy9RBI2EH8z4/Apm6lIMkFzlq7HuheJ3UBacnFyquCIniPt89K8RI5515XplOgbd15QocI5SNgHXN1UGjkSvRFeGcOKwr3gybghZu7oU39Q9GI3UcK4b+3PRSA3xKqi4kRW6aQu/U+NUtHTbG8lgvLoISTJhm5lWfUIAk6z1Y54eUpAWaCnLrYEghcDHMuvO7FmHI0Mrc6mFcvapysg/8dLG62XfUtNsGfebAC02hGhUwFc2Zk66RQe6QA4cRQk1Q3Y1gwDIebbAKxuGu+U4rvK3n2IVmoZadrV8hS+fjSbVpSPzXWetq/VojK2sP2Y1GGlNJkbljq+bO2hBest/fkE/v/Kft3ibHLCfZzgsIRAiCqPheGktCNCajsPEgortKp5FjnOnrrr485y0u3lr3N3gqzT0jVrH+apCFSUkqTparZK4j4/nArW7ogiDeUEQ4cH2+seoOHOcQIVWIErDOjDuJHAly6sV/FpFuTdj+wZKCdszlDizuxMKWuxusbaZgDNnsfsMZDiEXQEdi1geC6GcD0QsDYQAwkYhlkdB7IUNgUYJGQIB1MD/73LJgmxp7rRtP9u24mPSt1pxQS85Xf+qlZak0tP1QDuZl8mj70kEGpi6JSLvSoBbojjA1qMfaHomDozWI+h0LF7JoK5DWQnFAWxG6t5FpRHAnowFWl0R3OBLTAl9ua5mUnXmcrxK/cPeCrgxndeabJjy4QNsvaQG6gGzQ+xQqMN7g+IORYaUx6CAaXCjjT4ORiTc8fTRj8yjbxtUGRnorhNUGYnEVQRVZvr4yhsyeYdFsksGzSxwR0FzLXT7OgMsDmmqvAQjlX8pODOmnaQY9/UjibkpOGOqD0CmOOxHgczhNpGUQdC8D90nnV3tuvIiEAmdUA3U9ur5K9v2sidxu9KXOQggqxEW3LYouNMGwuzlHKianQSUkKFo6YPwOPsgyFx9nIV9IB8erfmAKRtzs3Fjzu0EOOCkZz83STzqWGVCGXLaUQtgJW6OdB1LXBGanaqqjfnRacDpGFLhHWUCdoPmOHAPCE8mNXnSNfHkwMQTYVKSSG9kZ+0CUceooGoNRMVTooe7IE8PQJ4a18wSPQi3GsPQhYbhQPmIWoUm6i60up7WHCaJ57j3NR7AZMxUqYPSNGn453noh9EwN9aVoMwHd3oXzA0ttTBTTvRKUmems4JIO3/1tOToOjqVGdIlJIr4SRCSJJIjCv4ywOffa7plc26yXC/VAvW0u6wO14UqAn7pczYjWLKJxqXwDUv+A6HgiKvzzTl3Q58ND3UXLOkaCxA9T8TsyKDtZPl+sF/j9F6BLqH+gAXxQdQn1dcRqLpS8/dSXXWkrA6bhOF7Oos3ZzHkS01UlU0rKTObCSdS5JiSKIHNesY/oBqgiboZKDMUOmcyzdvyphnha6zmMpt3fJKSoDxZXEC/8Vy8IIzd1hl78fId0sUr7JAuLHdIhzXXInB64VQNJKn57I/HCE3YLM0lOJiq4F6nScyYW8ytilszbF5XxwMV9wHgoBSwH0MnkruVzf2afvwttAcL3HXy73EVB9op9tcZ7uvgQnKhODFf2654IQVXZzM/TyqCdhQspqGg9m8fkoObq7wenCdVSe7xZD/hC9Y9Er5r/nML/bziP4/Rz33+cx39fA602BPBfUtHG2dZ4e+lFh8Pw3bOHLnkkvNG14s7QlIc3+v3L3IPX0pmDl38bRffUB7yLDj421GUZTzrDXXQrpHrPGWryyzXDju72MBJQYQ8NyVqZTJJmuWGuIsXsS+1n/j0zKPrpaj407w4/CITiN9YpN1xTmS9KRdzcMwVx7mGgXEhBhW55ThXKrBYzFsuiHKcfbjxopx4jgFqHWdHDQSSAcw+/L9DQjBFAuyH337saw38TKNeNeT2JwciwWTPcKK57zmlZKtwrQGIBJKDhCsNRJAXFinF5YWnauLywlMzafLS4AmZVHlp8GRMEicbNBXTvoaYzLoG5TeSHgS8A+ZtMh8R0rqBNlZnqr/edoaKk2xen2QL+hxbqpoTpuuAJhk7ey0ZUwZ/Xh/8BX3syfiCo4PPos6gsdmFrErAcMwwLvVeVlQNR7kJqL4UUoqh9d1TxbuKO3w530WQZzplO5pPH88N45Mz+JwPWa8KYTuy415pAawuBZbgCo0d0egvAIFXYEjUR9DcCdxbnZovRmrqGctfYIJqWMKUpi/WG2MSjUDIequTdWcg605zfdHsLsbhy8NHdezuIFLv3le3qjep034n0l620bgTAyRRVcMIfw2aXTdMhAgLLNxIySQvT9g0QzYmeoD5VR0G6sGl/89QWwlQbp1pSUytVKYOEB6aL1qreOfGJo1S3TRJjPBKqgGS7bc401MgiVmOql70Ir5tnAbpq7Y+09Sw5CWvBFD5cYJnnp8wbZkk2GDQ4wfUEa7WlqO0LzvAi/defLWZoqTi2IG+SIM37HFiqWxJ7wb3NEcExEKfzbHANhe1DL3PVdSH9v6+xnXUSy7O7yLOKphD5pj+PU3Qdy9pRomb6aW7uNYwaWaJOyL/9nWYMwzTJqUD8u+TDvMWwzzqwy49FhRLZwXdPB/ibJ5syg5DLyUfymnbSvoBfwYh9/qRz19BwH3wFxCQkXkf8YcPcOE6zfhd5molTO+FfN/yPkfjk/XpAYZ5z1p4dWI68XNV/ooS8uRQQZDjRCpUWUREqCDTcTxNmIsiki8NEe84mQqCP5NzaMIOxxmqALRgzqVMcJyRCoD/IM9tYZY5Tl8tJ9/L+us0T3kbamSdpk0vOes4AxWKFhANy3ntOE8qnFBq1vl/RPJjFh4LybERm2kyUy0w1dJSKSrT5cRCSKwkxCge9utjwWGyQuaqGnVL5pKFMdKKS76SZdHTijFbyaqYaUWUpzQN4FArJcsDfuVkdaSVEZY28FMnq32w4jpNzo8fPlltaxCUmWSnnawOtGKBjQ28wU5Wn6AVvaVr9x5S7mO+xD+iJb7Df97go4ZK6xJZq2bjElvB3CZqwZagy3IuOc5YBSlKMFAaDvtPOEZffb6qKCAzCW1l41wHod+JvI8JQEdTjWNlB8fcBSl2F2BSmJ+A2pyli6BAUYjIJegw1x3tm7vtSE9CsnLiH2jTWP/SX6dpm5Q4wmRmi24wwulY4LRQWLA5ltgslDMexyKPBQDG4FhgsFBecjcWuCsUl6y1d2qQPdB8ReoharliR1JLmwsFOcRZNtZKC1pI0K2vKQZCCA211QoJGQ0SX9vRmmXjV/hRSi8aeeoPzafEPUia48SdvNZk6k6fTAffdzJ9/7miTw44Zr3e5OhOmRwH32VyfCfx71aK/8Erij8g4cSFjCX8NGm2EvecSPjla0n46XQJP/+ThEMSfjpFws//mCT8tFLCz38jCV9LTEcTFZEzW0EkP0RXPgIqPBEYvd4bdLQ74RE64RXR8gG/SH1/7kGfrhUPfBkc+1EchPp9NPhhLcixX9YXPSwUWnfsE1jQr3/E7dbrOXfDkrDIRJSfjOJc8lRNNS5xyBaaf0f6Zhl9r4i6LHQC240iaDjOQkJXxxX2a+lzFsYZQHi6+AHhk25afcefINuI2WR0Un0uEgTQ/E9Xj6CNzCYf6jUk2Hv85wT9vOA/nxE627okPGiuFfOzuLUfygMT+4Zkcq7lhrfuyuI5RJohghu7FcizXI6zp7uqSImwwbmYusGRZbBEQHjpmTTJX5sn2xaiqB4SVSKhJ3prPMY3LbuvxjwT56aybRrPAIbpc+AhkeTfrxR9IOOFG1VPEPq0cOzS9/FS4V2/3C3JRdMmgpKsFFGjmyKKBaVoOkWre7pnguxrllDZBTTVDpPmZuLe8ymFLYGtpHmRuOt/VBPr0GJi3U+fWFt/9ybW4bSJdT9lYm397ZlYh6aJdV8xsbagiXWc4HjjEz6xemhiXet25rEocGIg/4laUDJevgVwzJivVAZrAtcAjhn2ISf5RPhIXpQk1Ozr6F+Z0PeV71S6lew6IO7+e6AagPiViLjyXjvF+plgfZM0TxJ3V8f9uR7uqCGrEXm2pQo3aDtKz5XEsnG7UcZth3DgTKd9pybtldshYauDT2t35KMQlQEVuk59/qEgfkeclQrxgbzx0c9hafQM4sBueWww756WRwQL39xby70feQN14dXfQL0jI/RWX2vvtKNIYISmrbd06+V+0a/80WNvYaUt9t00s8KtwfWi5raQhECAIXJwN7MciIhDWIOrnUqAEXtAwu6mSBi4K2WH/1/EN0WEvqCogFtxsSAPMX+1tLPMSZxiMROBweACfXJoD+4DZ7e6oWLIuyR1XNEr3KU4DmgBl8wD2jZ4lcTwnnbZsCG6KowBh0GFo7LCaaB6QgwBYsaNvOIJgSPCin005AkJYu2cL4znkNzqJBoECbK+6bP2gZoBqmRrNotVbtIUotUMmMWApcuwg1Gb3fytFkPSr1nWskYgpoMSjEzgJpBqc+KhjGOStUUfuFgdh6nav84Ej2N7zWw9hcvELnGlKp0yTVPCkFxnSPpdGZJ+R4akL2KIRxiSxWwfEeKH9XT+eCb+mO/XZmoVH6du7Sis8UDWGO7PZvF7qD2AK57IFfCGLK3dyJQ0iSNIkVvcMp7+gJaQ27V4FurW8JCWSa8Vz14ZUyVACJmwAVWagBiElcjn6jvJ4gtSwOJTPBwF2S9QgoS+/ZgoCRJe+h6Z8LbYtOftAHbWfN6r+oore08L1P7wXUWckIdP7T6+e2PPyiHLcyib8fSR6I0kDStvzaqQJUPOw06EsEU126qCEIvNPjG1YeYbE6tX5JgQ6DIZ+kYS69JnJg46HKmTXoJR0UhcFZXqp7lERMghaVtNi4wdTE9kYXjk0rMz57b4r7M5dxw3s9jt8G8DxL5ejN9k6Oom5FOITMiDWNsMP4lCIHoKHtWCIOqQ5yZaaoHvDb1W1I/yKJTS2lMN7zhjrQJdOKTckB0VSMwN2UqSHLHLG26S1ESO01OhFQjSdoww8vo0sz8OHdF6kADMAk/R5SfBclbHRO2bhbnK7dNrDk/gcvsYy5LNGC2utgqXgZkjMFxfpt1E5rZklJes1oghrBZANT6rZBI+Szt9hcn6xHuKpRn3KP70my3xp/lwkqWNoNzDfmKBYQ2/tDfwgeVYz0POc0Gmqx2tWKG6sYSgenojEqmNFQTUhab2hEztU30lmNQy8pDCyXRTd2Jpz/HagPU2EXleQIJ71XNCyqVCSjz367lMSlxFSlykGACL8kRY/l7htQfgXQZkWJwLXNNwNSGqYAlfIH1JUtNzeSZYHNW7eTOgVzD/kjAN2JcqEyZ2SUIGH6ddSPU3Gpwczke6hob8PEkG1A/m7mVbj8MwjXBkN9pRL6AP+OY0Mok2o8xr9cOgsYi+rQ2HCCnx6xL6uuH1++K3T+hbMYm60XALH8RkrHAZN5Pnnt8dSN9/Qd+xz5d/WfnmPujrndn5u/Lqzt8jMjs24uauu6nP9qP6W7oNtUoW5jlinbp4HdXZ1G1IwEKLgGI4mrqtK+s3NpSN3R5hxoXOh716Ws/rj9Tdwp6tzivqAoTtSRoPw4H6bhsy302jZY2/YWDsCABHwUzBIaJgu++hhfCbe19nesy/+vTYsnZozu4Zv1eFq++1wv53cojfS3JY9vS6fnDSauNemVzrZHId6+O5bjLvDQeB9yq8wq+yUbBFsDmgLeAAdJ0RBB6AqlTT488TQvW1TvXJ96D65PWpPpmF6it92hik3P6UA5JcywMOXSArzjb29Y3pFT7beH6Fs419kAmZoRIPkBEycSG9mG3QG3NgJQ4wx01oAyxsnou5uVhjbGtZ1BFCjMugY0OEkfEoZV8fUGDXKLIB3FECHLFmR8VmoyJsSPcTN/erd4DTXqWihzwxnU14J8jOcVKXU0DepwIih8rdzwJcLMVpLxUvWN0QvbSry/RNLVMHzLhyY2nrgOlWyseeRIZW5VqZ0RdvS0v9LJ4gVdWu8Ar6zuJmELpfZqLyTj07KCPrhNSG9KWWisSG5Us57JkkM2z5jpL5GjZtjOmSokKFI1amBiAFVAkAVdYkgfTYemLvhpJWMM15Lg1JGfYXu+WjOfOOb3bMlq9BLVQA4el9ay8wwutXYGbnsM5DXqryoP6mvOoBp6qnvCqHBXz2w4gtgOo0PCuQFOd2nRe61ETN5ge6GEbSc0/ys12mjEa6BXOLLZi3cfOr+1U3Re9U0zIjGbuw7yTDtVQ/Nl6LwmCDPj6TKSbonWRYqi1VNiNan0LFxp1ogirVGm8V0zP0m53YDXx926ga1vo7ECUcDCSix5yxoRLwmfh2u++UssRg/aqcNWzB5UbgFlRJ1fPfls8IwZlx49cjqHhe5+V0CQ3Zk1dWAqn0ISoN6jBPk6H+yhykikpIEcniq+mNIQiPqWev1Y9ynE4HnKTI3AQysk0/HDW+4wH2auhS5M+w6iE7V2kbhGEtm/Rj7rPzyBSn6lZ47pt47le4enzt1UATHDM/lPy27EldhPmpF6XqYuqLi5ReNMZEc9POF07Scl8jgx2mERe6X3Fc4cPHFb5wX9mXXsxhb8EJNY0WnspSK37CzKzmpImNEA9VvUNcKBI7a/DSwEjVovRBizIFv0bgV68p+bibotkwlH6NqjajvvoQZcos08hVGNvwBDMlcwsGNobiQ0Sj1Vy7fKke4SwgKPAIx/NJ6JmuFD015s7uSbnizWolvEwKsrN4U461AgWViYF1ErxB4w8JiSOuknBKpb5uvgxV86VEdKTZNaanpIeSZSPUN1UG3IFD0fknPCU9UuygNiFroI9c2zxyxjfQ5PFqG8YLft8MflNLCq03PiX99H1XYzFHYTT28vCUvgRTucnWQOdY08WsRBoK7JlpQ8McKfDDDxNVXCVXuxcyaQqd2MZW2ZkPwBa/kmO12WXBKyOj7KO06jwxIsVuKUZP7GpUVXsNJJqI7yCHQQhNkKJCuvjxVScDN/9+8/liTvcJiPZsMgxS9xvKeB2TutJctjK4IWkE4k/N75C0gN26dsgrp1ePsjU/j8Yhy5ITZduotaejEc9/gj8eFa++nMRlGXuuIDtHi8EJf9q4zJWDWvLGCeYKzaIDpF2vk4qmxJRlTxcxZfnTAUxZInWOKUu/z3HkuWRIEn48U8fcmGghY6LDfz6hnz2/mftu1342v5KDkJnqY9UCUHy54CG58LJnaXHisTJ6GxWXnVk/yJ49l0caXky8oeN0VGTFYhX8esFxelUVrhfmuBfDjFP5jjWkqfzmTwKhbPWVyOCHc0LfPOZTQoglOS0f/i5l/nt4XkUZMAuAPvpQ3JosCLWloJYI1Bv/uoMPjrydWYGntuZThneNeXMsWb36IaVX+UQ5tUVkh7bP9oZpeZCRF1EhkbA1nHe8VS0UVXZlLyAQo/0icrGxhCA72pZSZnRjBQH1NKDyvXSkKc29YQ16QHYvE11HHtTdvby28hQiAWbVb5b6MxhUXNwYmHWTrInmpUBzrLFK3RQMuEaSl+LPB/Y7vNdTSaCOmU192Cgmmb0qb/XZf+Ar0x72FmnKIDe6kKYEqZdz3lfmPPcH5cocpolNTHOYaQOczETTBsGAJDIxV1dsoIjmhSTz9Fyfp6d15ym7H6PvEE7tpVFpBfA8nIrDKIKbfBCXhMQ1H2lv90En9PIFCskUFLpmMNBktlzONEnBKNI1yBoA2Xcp3VutOHitevF0zZdZfGSz/VCSjazTY0jDY45KRGUJXZEeZMPeHp8Wx1LYTG//VkV/GE3Dt38EYSFAwNjboaK4p0eKULsqLqXYFyJGUpuIETMQyXhI9Mwe3yt+QTy70GfGpskPvacWaLuYsj5cGawJeKA3RQ90adHtKe7nbULNoT6ptuvqS6t3or8a5po8F7btNeb0d6K/QnIP6sxtUWfO/k7016GsNe8Ji7d0Ft/PzmIl4ncWfoEsuLdmAYlUJ5Qd65StvxZl669G2Xotyk5qrnQ0hTC9DyW+zu374VDOM3we3oc+d6+RuGBk3dCc0+wdlewC9W3wqtXNRlygJaQjLtES8hGXaJUZiV0BLWpIkm8YreIdS5q1+NpvnobulXAqN+fu6wJxrVlKxf2LK7UAzays1vaO5T40ZCXQMr8pJkqZBRIbKNeyfcVxrEDQZosUz4GIgliKsltcKbn2ZdWTNa4kaS6WN0hRldnm6iU6eObjuY+2dzf6bHhWF7FWEiBlG4XKZy/PcWJH4JD1WVrJWHVjXXGFw9CNZ3F9E2AbqBVpjdv1m4PQ3eE0nSCazvzmle9+eXVrctck6Tsmb+7ZbzYFKDa5MRkULawwTPlUofmxCfwL7dJdcM7tgH7Ps99wJurMgjj1Ast2V86quiP+zJtnqg8SCmSpZQ1TXeKXZkpKNUkuRK1wZeEZ3wOglBduSC1PFo6oJkbBnT6xbmcLRSHBiIpM3taNRCkbAQyDWyAQhYAb4lDeEvq++mjA3DDVqHz7fexmk/LgSuCF+06+zcQL4dtXtcCtzjDi+htKaRzfvpL1DjlOah7TBrpYwJfdxKTQ8KD1bJzdU997gPoxdwL2IHLclEVCSOOsFfUMY1FhvJAwcZ2V2STK/e5PlRf1hD9/9b0s/PFjg/xvvhEoambucysNvd7nIGx7o37eAC5GZ6PhMMHvev9YtPkGmb6uGaW6+LwCMvoyVKSOgLIeFdgWEM3E1ZCiy8iPgaD6auP0zY2haVAVwlJ5stOzC7oGW9KaEaWZ1ajQFaBs+ileCVKdSl9dyqatATptfmqtgHWKCo3op3Z05ISOSKcjfzkd+SvQkVvS4aV13dMBzS+CT0zOQz+Mhnlm5agG6lW4rDOEF1TjDfDxzTd3aElG1P4JbOEvms2kdn6HeYnC+WZTUxurYGd0zXNHRIT6KdtieWiU2zoho1TZH5YSMVQLyJrUV7/qOVLKZuE2gQbh1gD/6YiJXUjFbih+YLlR+sJXPNqDGlqvPNbSA9yMhgI3+Ppell88xX4YGLZzHMC8peMwPD41SvOqw4YKrE02B2DpAdibUH/BHsu0QdJpwJfLmfWCL5iXCBQRo9ptccIm6kHzyXL3ZGn1VV0A80gEHL0GOPPlL7kRUW8ZLn4JFcBLX49pc89tpc2v7tiom/hFRZY8rqXOXhnAuBGRwQwK2VXhSH/Szk/pTGSEXAjZ960UMOw7XMF9QTqB/xojddOFxv/lN4U7am05eeCLLxIbo4Udp6d2LQMYQltUsGIAX3IFuSPVUxkwjXoz6WAoC8CFKhaIYhXOfItZSnDYEavMeL9ZCTaGRLwHifiBLsVcQEgyGMNqA6Wi4XOalJqnstww0KrIZZqSxjpx+4RP0y6Si1P79bk6BAQxGAcWS/H240XHmaizZrw4Jy6IBv7xBdO4WI8X2SIdYqtOOFhitcsXLOtFl3BawOEpyLKgyUDQd1jCeahliTxatseLZLmeqJLtFvwq12thrV8Cl3e8oJ/X3k9E2QbOTJoOrANeGHzF/uHSXmKnXeKY7VqEdm3BsAFb4zPtHM20h7TZ8d0j/vERMX6jBjHTb8cAt5ZefqcL0THV21rcTsdyX3n7HVcmwdEPWptFXHRWxEMfQQDXC2ZtUHTBT2Nw7PqC8ON6oUIZTLuZA3LWgq0VPLV1Auu8ncLYaq5CLLXXR1AouZq3VVvmo+aa+NN8UCPeXtOnWaxcSPOl22cskjxyy1wJ9OBGRac4uMEx4fjY5gEsul4gAeNHmk2AQ57QnD1H6hJp0D12YRnN5BChi3cNjQX3MPToDqKx6G70Qy8lfy+5OHMs/nOP34D9xD4e4AOoZfaTXQD+xb1A82xDSkfRWHEv0f+2kd1z6WW9xu/Jz4t+MiE/5z+S38TZQT/Mf3P37D0pyV/Nv35SzIuZTA2bLcNvFN3+otj117ga89tFmr/4IkndCyFqSHhFaKIYEp5qIeF4hm6nzZHvHuryvq3uwY2X3rcl15jxertwlX1b8Xzd24u7IbcHcQJXrtMpnJqgOghAPZI0L1kpnLOgKsKmaK8hPzpVmcpgK8W56tb/2LWDC0YK2xxRznALpgyKttre/I3SLDCbQB79saogdoq7NCV4+phvBtbx27e6wjoGDgJUd/+x6thXPfgksuVYUU/XvO8DZGde/V2aflzv6UkvmEJM3nfCOMyizHGuVRKLktedx/h30TsLfS06orGvNBb2VHYnLv7xGRfWKkAep+mDBI7Q32otwtZb/CSLlp2jYAK+uJquXmsbHVWWsNNlEaFCzm/2Z1AIwTR/0E6SZdGQuYPqeOVUZ1HVLS7eUYUf6bk+gTWyjFoji1G5gVCBY1fjcJDEONeTeE5BRm+zPMS7jAZhMjI5pg3QVal7wAr8PlZIvpebHCCElOFsSFdSjb4V7tAk194GNCfbKFEkfgewj+LhM+3cs6C+TMiBZ86ucBAWzrk7M62sU6MjZ4p3Lu497cVtpM53taM0Xmof9SxUstvn1guarBWhrJJnpO1lDq/piwIPuIyFMGLfGEYsYEfyLO1Cfqcze0HqWWnjU+hg0hwQWa2PTRGN0CJjeuueT5wbtLbf8p9X6Ocd/7mPfr7lP5/Rz6/85yHezeb8egNOb8l/3mOrgf/cwekc+c8znLQx10PYuPynsuePzwPm/2PGXb/0AjLzzi99gczAu9c8gtzWuxccg9TOE7+W/sHV5SV+AUFxE67OL5QdDaJOihC8XqAoflLStRhCcWzO+6YH80LlOJ8lVEQDn2UmO84XwPMhQpDZz0bAcW413cYKSbhNOTKOc6dCsjLSZjlgjvNWa7Isw4D6ODrOV7WGDiRWxcOMVJzKKbFYBC/H33ECUxWWc9KFhMNxEuDKiwJE1K8oOsiqV2tJ5eaV42/pzJk2barmTOWEMc2W6VOl1jyxnCR2M6Tm9Kg/N+pOjNlmxQxTomI+vOJxf71HYqREIVJkAD/w910sXI3UTdUjLSdf/aLtGX3hmAsB3GoATDjQvjVfvdMbYMdhK6j8rVauywHevuarX42Q5Nxskbxio+2A1TFvLGOsAg1OH+UGUgAINNFApdFtIHWAoGIVCttrad7cD91ctyYMfjMa3JWq2hU6opCbgdowNSCabEX4lX5ey1mfKrGPUV4vCIR4rG6Q0OFQaeEqOI6aJp8WTH4tMcnTAAkxvQ7+4uvfJS7C/e8SF+H+t26yLpWwBJfyDjhJNg0NMBQRhmcOUWuG8GR8ZRcH2VYCbHS9/Ai8ww1Ei6k9Vnc3pS8p5qxoGXrEr2zXVCa0CobXZnnzMXaHefMocUfcMveQ3u3nzU7qtvnHCH0c8J8jpNOf+M8J6vMxx0+Jt3L8useYF62j0ezkza9uL9cePdnBj550OWwPNXOA0+C5E2Wo5dyiWdhvF+9kl9lF8ScaVctyixZPbrN0oqU1tFJ8wKHWR+Uee7n4GAxKKyZGK7oXHJKXn7LSgClrkY5KwyXmb659WpYylSIS0IRHVITZ6qf5hbJsCZfR4Gf8bu3q/MeFJfMmIZ7mrYg1cwjQerHqh87UV5LLJ8OHagEO90Dr/kh7Vrlc2uCo8vh9O0l7hqLiES4jRVS99tVqcghuG8LUkKjUn3NFwXGcgVaZFZagdJwd5wkCpYUYtHwy/VHDtng1PRYeJ2ipQPx9AkkkHWes8YyXYmCcoK6jDeIAFwmS6zg9FUYo5Z1SSrtwnyWlVa8VxsKlQ138HedABRdKSRVlVqBORkoNXihq5L9ruqFaMUzXCpUqAdYHoDKo1gQmNVCpAyAFUDX7zVO/ct7bTnqbGT99ulvO9akTfeost57i1vO7zuSuObNN01o1Mc2uYf2rIb9mJppGUXMop9Qdya+yaLbUUP80AnvvN/siULvZFn8OpjqzYzndpJ7Wk07IRk7iL3H4JZ92Dc/Fs6yRlU9VDumVj5F8waNfhm62XS74aP85WB0AG7VS4tH+c7D6pAFQcUebz8Hqo1bIHphZQcUtrViQcLzpHKyO9QcPBnirOVjtaCWCcONd5mC1Z2ifII93l4PVrgbCHmX9hPsHDpwEKS5yuCM1jUAPtKa4ADeotGOljRsdAZvVU2LgnkN7mSlnVaeaExFKYld9KnQqu1ygrHRV572F+JwqO4nLGagRMoiEQy/CF+nga4u01Jw+hJbPdNANdA72bMueoob9HaE1e8YJqYWmH0VxsqfnZbGM0VGeltJh1Ue9zO5pnvBFCsUpPRRKQxWhdwBPpp+mwbyZyhhrrlSy5Puch5YBLAm5Lx4L+WMqHp3pVT03oz4ktgQAYW32YC/Avarz9rI/frfbQqv1jOfcUHM2Z6haPVMgyVGOc7tt1KT+yBAjYk3sERSlYUlbAd04UpT3JiIld/dmUOGb8J2nWgvSJnC7p4bGpRUamwpNF3mz627rTqQLzUWB+Wf0QmiLlbJlMlzD0jZWpQ2MzRKcBDPLDMkTZBBe0W7jbdwUS+iwfTE5IBAe40kmcekMBvDlj/CIGBW5Qi/kDZ/CVHjHCuzTTMydkbO12QryVN+RXKhHR/BWBNbVZA7Gxuz9NI4RvkpVDBh1n+PlZxJTj3k654oEFlboCmlKs2tLw7cwVZdBKKzbD3WVwM2LHh0gMA6qV77ilvlpNMwLDoOgAozZYOgJxsLY64/4YYZQvTQTgOVextUWUSOW9qcgPTKgiTEaiRDDTkOEXtB6a6yFh+Zed6Yf5nNz7pbx1AipsHbf6yBD915UH2H53Whfk1LzDXreqMCvskVRi5NvkGV8r9kVOMVz3gwC97hKAmP0DfW8ri5C5HsRpOaPUryDezLmDmAQNFb68SaKg2RiAGflxPLz0F+D01Hsd/fiPEzRWJp2MDpkgV4c+nTeh8O1PtpCmtFUIc2ThZAvBg2WFAqh8AUZ7OgPwFB8dkrt3JggWhoV2yGpMx6zDMbLRmLqMNhrA8IFog/WIWdKSTkyyBNIbzOCC+WgR8jq1DVWYFCAFOyHgWCxujmZwTi0TtZRN2cElJqjykSkaTugA9DrKvVSZ//sJ2n1I5cFgP2euKhQBvq+ZA8LIAdiZi/IfHuZmLeXRcOFNJuvZl3x89/rfM7dh0QNNB3wH1g+qkOxDeVZ7vnw2aQh61kQ5miTjTTblb7pISXGBbQoL5ZQ3bhQ6KgkwkgBjD4oOCIlIBlS/AH+C4jwH7C4Aq2IIAYVVGRpLTqHzIMryDx4RlJyvnVxdbTVmHdv1g62rk4bC+4p/nRxunW82Vh0y7+Wvrk3lrE05D7+0qtfx999Le2ZJ7nXf6H2LNuw1Z4EHtSeO3nTc88sY3KCUQpHVqn4CYAiiuVnEJMvefPevcX/3Anx5kiZvNUH/k61fousjfJNzzuGkwRSYCRma7xjuNDbnl+FEHeEQRhpGHy1wuCrNQZfFQyCqHmXu4necRDZdIygLDtGkFLHcYRGwCe9pxEOBsqj5q4b6Yj4BkRcvlcpT1hTFbQ8ZOVZNB0nV4H0dJ3qelsEAPAXBWgFut76kSiRHDkwgRjDU7YUCZKJjKSovdUUoOK660fCBDTfpWIvARYncfjiVBqp6zBLGLqAinO1mMTVRc2vuZtF2kz2ImUWl6z4TtnfPXu+vyBhuydyd8ZM60Mi5SOdZUMTy+rxZ2jgRF1ahxCtBpd2n9DU1mnqvw5N/VeiqV+DpgGh6UmnafA6NA1eiaZBDZoeyXRt6Wr10Uq/P1rr90dFv48JMztEtfd0lo5nZWnF+xMdtc1Cs8qjMK4/CqY3IzqQHgeHbGw5ZPCrD4XK7kTy2HYJiw/wujnROdz9Dhw+UNs0rJ3d1+PxQfVKKHG5+yIus7XvQOHzKeHzeYRDMS51Rp9+B0afa4yGojdOX4/N5zKbKx4gPH0Zk2lMyLnC4jXC4oeoeZK4RzqL12Zm8YNaE35pbW0GTj5IdeC30QqerdnyrNwpPyj82SBqfFNX4xtWanzDWo1vKGp8jwzMBRmYbX1g9mYeGPWtoAhRf2E3WHszDJb0uk/Rl+3o7dmOXhQ0fGAwL5TBPCSDea8P5qHVYB5aD+ahMphbZDDX9WHces1hlAdr6xUGCxyVrdlGBfPhmAzAiT4Ax1YDcGw9AMfKAFyTAbjSB+D6VeeRwY2Zhp4PuFWuX2M6QU5HoT9g/K5nnFVlq4DTELN4n4ztsz62+1Zju289tvvK2N6Qsd3Vx/bmX+HY3vyrGdub7zO2O2Rsz/Sx3bEa2x3rsd1RxvaLPqrwiRV9LRIsI+9YGcrCWFWbwEmW1LaxYa1VyUFPnlmEjLJUP/RC+ASgB/UWu+7u0Fi4b+vx5U6dCT0pbV414XeSKPekfHpVxGHIxp2yBH+tO6DW8cmEl6anS+lIoT+iZ9PxPS4yeyJJC9wRiWCFq7rrSZ4XuRn0YwedFJvdAXGfySRNpUcnZvphYe0gVjrYCVMucSHEhndwMCIkdhUoKxlHo6PoMzmhh0Q88L6XkCTtNtptmv2gtFx/c2L6+bggK7QR4ZAYP24BHhG/RDh0UizoAIj4TWSE4lMd6UwjAGBZwaKRYNGILUXD4vFMzWKeckgLsFkzkSsOTyPwaRfyUiCiaaPrxR38nJRbXqlf+OamXo0T0YVXPxHNPbTSRDrDcw9aTWZbfO2PUFGvpi5t12TLg1aycKHuZlqnK45iPX04U0+xn2hmm1j9nEqZhMqqUD29kmhm0dwmHjeyyBxtxJ5sdmVes527Q685DtyRjnWmolcEhAsng4PiHuNQBaUFxoOmQXExt/HxcyYNOO8C0IVCb5JvoehKOqKmoeiZOLyD4g6afro09BQtRY5gPJ5hwcOPLeEEDQMPO9yfIPVkVD+oJW3JwjHZbfVzecl3oBbwc1Yl++Fe4DjqLoYVVXC/gDDf0yrQhnCGEQawNYyhgLgBa3EgYX3qYmwafXF0iwuZbfFb4dgfyFJQdAQJgg/IwSOZJa16Q/6oDqH99cCiOlTXgjGFA/jRk5XSmEhvpx4RY4OAWhIxhmTFiohiLMcKET0y+br1iOgZJpMlET1ItK2IKISvpxBx4DX7njupR4R4xo+fozsANYr5WL8qz2UErJjFsX7Rld6P7QwFptgBpGtP67FDVXniHX3LcZWUj1zfgjjxyrTi/Dz38GW0S3uC6PmQOqB1L6OdS8M022W0c0VU19B8C92HmqSsGVSfG4xeSOMapBVxszNTXmjLNQ/gRjCSuXFkz4cpOYKs3zGvSikCvZU9/bgQ3JlseM0jz9302DUWf87dm4namlsD4r+o2hsgpLTpn1nk+C1cNfWvoVdsLSRkQUxVNHWtWutyP7QXIY4Wy80I2otmjU1RtEVXjCEb8YXlzjsL41x6Cy+IcuMj1LTQuD7RYvBaU9kRuEApfUIdiuzGLQG7OwJqnyVgm28LLtC24NBrbibuvdfcS9wtr3mRuOs6B+GDBrOra1uVejGnz6FRv6q7A8e5V2GFtOHhOMQuoy0VhHw3u73UTOgEvAjVnGZWiASaqQNIq9pKECqnkQjQp3vExKMSIC9p2twWJ1PePJTmljn9YoDDQomzLBbTxLC3+3IhW3q0eq8aSC7BuLGAyrY04wm/p8Mlch1J5AnZz1/rUnisWcJdL7fKun9iYW4ey4ay0rSx3WrbEjfTONY38SatSYzOE8WMufKax567rzs4rlSvBcFa9r9cSb6WAkD0tRAUrxTPyjPSCp57o4/BM7ieTR8CmdfP0FpTyWrVqs0az9ZcxQTtEoJ2iGid6ZzcVTlJcNrR/Vui2JQ1gWp6HZHlGP1d2buFhn1HGYMvfFrgVFm3Ota+hvQcqqXiXJyZqu9P+e/1moZqMu58wxDyE9ms8UVB/85rfvHct3ZY32muOmWnDqN8J6Gs7tAhfIud+Z2C7FfstA8zfKiTaZehI38OKeNMvwKRqZSwDLwqsxGoEU7Clpc0UB0Jxzhj8tDHG8CsvoEbZ2pJkRu7ji0fZ+/BFmwtw6JGI87kKZrqnPczxPlc53yqcr5oU2V7mr2HgUSel58bqcLwKGsGmevpaCH2I0tWRytS0RoigyaKO3vCeKP2NPmn2c3IC7IwHZFEh6HV6U2KVOuNNCKBfhdqouEpHBpm5OaCLolDVdB4aAkYniIku56+ORKfIvg8lKRR68bQx7SdTXnjIRMNJJ5fG7iPyNGq2Jz0Mxyg0tYlp68KBRig0pcGuSpApa8M1EDvcloCcN+Lj9B3nDSdnxF78VowiGIhu9bDKErD8gV4j+XO4PnCT+L+02skARfwYVnAS3xY1gsIHykPOMVHTAT+RGT4kSvXAZpOLV2kn8wibX2uPwzTQZThhCmZ4zyqDQqlxPh/HEapV+YRgXalDMC82xHa5DseVo9ue54MU6j2Wb9KXi3aTITpEvKUKfucOof+7J4bP/UXcCNH/4+ZtoFhCFUc/I/J5O7okjOeXRkqV1Nm0XXwfRNrxUbOLcgU6eo6pGeltnrWaqunqK0DwtKJztKD12Lpwaux9KAWS08JS8+zZpy5lzp9pzMrm3M7E+90hjl/bmH4lZdAMmlTO90YPFeMwTUy8g+6yK1ZidyatcitKSJ3RAZmgwzMpj4wRzMPzIbdwBzNMDAb9gNzVHdgNpSB2SMDc6EPzJ7VwOxZD8yeMjDbZGAO9SHZrjskWkTVtj3PTbcNtqXZb4yhuifc29K5d2/FvXtr7t0r3Fsn3DvWubdeU5MGUTbse0/HyFISLRtv7OVeakhhWBYbHei0mNjz69YKWcIEtEc0pCCMgMFcFwdT6Aay+2k7sPsdTLyHR+MEexqu8T9X9Q3zqLRu6ZFDYWofJp1OGJyMDCGcdR/cYV0IL+6wLkpzmzw4zA3nK2TaPSMBd2/sXROCM3VflcTSef6sFtDgqAMoOLzaX7svCZfQvqlxUTiqPbeFK3xfEh3WVONZUaO7s7CoFrE1kCd3J+wRYmTZICQCiwix7yaEzojG+qKjdVZTYw29LJskqar0z6wVjdAAoCzOxBEvQQ1W3y1R/3c6Tbe17dlsGPr4VXaZqNsa5ixvAaDqVrZmC1gDWW8JWV91VfbWalV7a72qvVVWtXCIOw6Gug4d2nSMoCw7RpBSxwnqcrvvdRrz39wY6B5S4ST8ef7Vw5/9ofXE7VWFdOC39IQMKeC5bjxUvve9VmiVRKpnjAJR+gU7BXq0io4hTcPBbfBlINJ6Ix7K8p0Om0no5jqjU5Uf00xPwgYrLqZDeCabeDudS4UopwJxpqAaAx8inQMGWuwTNkJ4W+Zp1JGsSM/oDfVznSF249eePuZgHw9khunOAQ3cWDPFFpEUtxtkCtjPL0Nsj6czGbyWoKFkwsdm9hmCemjvDU8ctrJfHZr3Co7qkMzMkT6Gw7ozk9spRpB2mgw2DbbP0H66gj1VdAOdSwwhKxMcBak1Y7YmcBL0Ey9fXtJEOo/yEU0yaYBI4g4F0eS2gJ/SnKEteerTag1eS5CwshJUisltE6kZIOPBfVIoj+d+bcuiE08RHfySWL9/YP9WIts0F3njkUUVeoPMcQZqx0UJTzEvvulkuh2oPtX2Kln/FVzLfSeA1uoCmNmfXDptC5MEYmslT80MVXWVPwfydhbG1uYqyFJ14x0329KiVef9sSnnGrFbcA548quguszV7+SrAwGN4qEs6e1pAkieaDbdhpTz/y8RUOhw5JFMuRaecmN9yj3OPOWMk6llmkywhAMC/vlxJnGdLostUBYhMXm0ExNriVAlIF1tqRKAB6tDBqunLwqduqtqyRd5JejYL5a8AWAZ7EjsKag0LHFdQtOBTlP3dWjqvhJN3Ro0TQhNpzpNk1lpMu8OieToZE/qk23YBgodAGyZWLLFZe2YmHZOmHapM+38N2Pa+W/EtPNXY9qarrNfyRoCrRHyUDndiKgKHm/pUYHBjClK/wZZTAVGM1pMr24bSbytWKxUNs/C4+9lPJkCPjRrSV8bKwyocn7Eit3ku4xjyIYqiBdsKCBjyPcyoh7sfRVTdZNwKgL7apiYWHgfqrWU3pWhH1GFVamr6pMYPlyQx+BoJk1mUBvTfAbxFDZXarps4qVV6bA5xDSbtgAzXScDKZ1GZiWNtdUNRCtMqL06gG1lwE+lawnzXRiuJbjbxRcEMhXEL3dLvJm6iCpfL9l4xfktDRp4Js+Nh++uASBkKjF5oYKodomJ1o62ZlRrj80ZtIc2r9lj2dWTWwSbNsNFWKtpbp6JJuwqULOfk9MmldQymzXmbEx41uxBswaQZ3znfYM+eqhJtCp0MqzseWQloIRcIGyOo0437z813hR/vHH38BNasddvvCn/euOepkkwoukM3/C/33xzty0PFLNJlPvdn3B0iJeFrLOGSs783OcWkureZwLGENDgFiQ4ASUNcrGEDMK2N+ojVVd9qPlNlJECbS1AnlDx43yDCgUjh2Dz40L5maFPvy+W3wV0GVa06MdSUA7Jzu9e5+6h1WnxofVp8aFyWrxFOl7XO96y6njLuuMtpeNjXV1tq36x1ijqB5ckL5OgqZbpO6h5mOUn7XY/isO1VmR8ZVYGMysrsFWir7Yln5iAE6yqqtGrxk3XVtuymy2gd+j/krADMMVLtcWwRIpL7adBkYTTDZJX8IYsbup0zr0eNk+G7hX/1kak75OPz8Pm1dC9If/uCpUQqjv8Z384554NmztD9wupdUv+veMAR4hxb4fNu6H7lfwbjljRJn6bbITa/9wexWQK/ZiMkAT9mjTDb+xTPMIMRexZnvu1mFhJ0ye5tAhh+YiE48/xGr6pRsEKvUZKui0VRKHX/oNeGOYfcKzqO5wX7E05ra8+q8XZaDhMUrR6v+t7cWfkdTjwrQhchPTJzX1JRJDsKctD1GKR8/9dL3zKGOhaLIKSA025rUMR4N0wjcZIPN5FwYdRFqZSo6xKlhZV+glaDj/kXtbjHW7KhaRVHHDGe3zOCwhvGH3Ar+V96Cet1tO7FLE6Dd75JG+fjKTviVRQE/YdQEwyFOGI0MsAF0PzOrCF9P+PcZL/2E5GcfDjm5+RYuLjnZvHG2s01oPE72TYTzqImZwQsZRv3jF7h16UMrhUGuCoE6NB0IByTaqkoY9kTEJ6K+Qd1b8MSuJsC43Eu2ES4YWLD7cIgdO1vAuiQRiTSygMaKgBDcLcC7zcYyB9ifZHuja+C5DEhVqfbRAWRG+g9axCtFQIVtITS6IBmoXvpPJTrW0aO8kAzjUAKsUM4EGazMRcVNs4AmRbAdkAQAZJUA6pAr0pQnutiBXsGZDhVS8MuHCIbRECX8hXyg9BlvHye0mypaJrTZ6lubtfofS4cgGA6EVqBrKjK+Mw5CN2phX73hBxsR/lUcg7+lJHpd/pbZKMZQwgDOVpGMXBu2EoyHAgAXhB8I4DvWOTm+sZCTwlCVCra+RSjfJK7Tsvx8aCDBqFgBzxa0RctQBwrHAUAqJW5IPiKgPqSQVqQy2NhoG45jxBDSkwj1A7aJxyz88Ree2EQY4lSKye0aBj1Yy1tKTzOlC/xX2VdyWTuTqCobMh0rShDt4Fx0GFOqhCAS1nXWjoLmtUeudhqUJS3eZab2p1PuBCtc2KalwBVTGJQW3J4syR1ZaldQMkV0va1BOa0yfSMzT1KmvsyuKELHmvhVcSrCcAfHaUDrwgiftPRvAzuHU2w4EqX+AqfC5oNW4NneiQSaBysxhCQIlJoHS2mqHzAOC7EdqToMkmCmEbhI94CuvgmQKeDKughxL0PTJHNCnuy2zw/XCYvxMhgWafFArvQ39qnVagKzWub6TC9qjff6dATIDqdNLylfAUGqYCVEdoTYIujH3J6gEqbVRUwglpgCp7kDgYsdqG6MTpYsaiKj2EoPAAIPVPEkdxKweC7IftXIHbguAosmqT6xIomrp4RtIc5++IHSaDH6ssUwGeA3DKykA3ElC5GU1xr1x9gTBYWaCWFNgzhd6YqMSyToSsNa5SZHpRO1nfM4O/lcCRpdNDcopmfzjhqieBECWgUlMpBMfNBKmU7vCKnGJ8YkkwRFNoMJNEm3ww4GUi84yUqjb/GghEGxT2nw8SGNoCi1vXjUQTmbIhZVezreNeBb4ugWOdL0Hr0/E6ASbvlDr7CaCGptTZleoMkSadUuEMFCFpm3KrEUs3pVQYgTbfKsR6vlT8FSzO0HZjMPBSLpdhDMMpu58kVtErQaEVOAbGoQI+j4ExEPY70FopVemkyWioLkIjudWMqMhOlOXpk2yX92V0iUGkmsMDub8wDrMIWnIOFFI6qRdAEnEqwQ2iDs768g7tFwHYSwm20m/3AHFSraH3sClVy8kuI/bRwGFVrINf6OB+0u+HdHwLh9w8n/bTnIn3saZBCBRf7zTp40AAfseQ/FXWuDZgoE2XKxOgMl+eQZFGahMt53EH7WQAraLOxBKWm/Ay3wdDtuYron9m8s4Wtjg32U2A40U6Aalk4mGVpsytqV46it+huryaTudXo+uYcoltMfSqgW+ka4R9d3wiJCZI2XcUm8CwjCE00mQI4eGbqhU5x8SNm6ZKUvvK3HdiqoN2sEkfe0L1joHtSBW1Vi30zXiQSWbVyMDUCBv5bOIN+f7FCvzdeIHbWkYsicNNNoFaVcDcaVLFOtKsTudkCrMM1c5N1cSF0bjneTBPEboNV93I0+AVo2yjihFlHWDJmEKUjB3QwOEUZpq73jJijDdqYueGATmeziK6j1ZYe2Jbr5UEXD3sW9bimy3bbpSR/GIzkmYXwZ3liMrMARoKU5M+pB7bdyzYtDQtxty2COpW5iuEqeYoxmuvsEaYADGfCmBshQGkpaaqhdBW145MtbXjC89Ii/E0dmisUhiNZmuxLZ/Vtjy/hw3wOECWZuy/k/TmQIaVV98nuZAbDcpEepThkH1R4luOMqvK6oy1OrI9wzW7DKhYPTLCB1Ww3LaXofgypRwCmsDExe/SAKRq5aqz9T0Aa2nXcCEDUN+g7Bd+h5vkythUgZ06SOD3MnjbQ+qgnaQTD83lnBuVWzIYW1nbUdgX5uO6qXNMk9zxiQxKIx8psAR3JcP1Q28Mge0rzeEgOQDsWeE30n5JKti1EvCNMkGQAaWpTqnCDjRpQmT+AJic6WLBbdhc7riLA/4g2zPPdfFRRDkCQHgafa6mdDBuLAFNDNOwHaZh7AsHqOcAnHY4cykDTdJIPNhfg0rfeUNsvHI7SgZSNlgbcqlySLknl0rHjttqzdao8w7nAOCTC4Dgc0Qu7KJtdBp0tbX9WAaj6wyfFnJpiANZyrU1QLyM+sLpuhmWzwsZhqwocvDOjc4RRbXuiuE9peArQSc7MkyhahSgMxEoG7UyP42GhWMCbPVLRQW4i1uxRitJdJvsLQChHDWGkdht2G8j1md5OgIsvEQEJaFPXaSguIGiFYuKTm0smgKtoJlp4MxsBpsfafBBWF2jrdUQ9K8K/FQNrCDf0qAB56LaRa+yErOL1GqT6mrU+lUrXercVd3capUjmyoKHza1OjgfSXU/21Z1lI7utUqQF17tat2yltLZiZkTzNmsdnVlVUfp6LkSP2Nfu7bVlO7OtHoTL87fkXBHrrV0cYsBsFu4rcK6Ezx6b2FAjCr33Jn6lKBCD2yJrqBc4QcaWNGYCphogGLgJ9eClWBgfGgKV+Gq0tSkaLh4GhDVRYmw6I9gGGkAnswwmsuqAlTxQ3cqQJVgsm4FqETNpAIQXx7RjiJPtQqKOXWpASgW1YOhhXf9CPWHpjBXj5WQdAJyM04DLqYm0vLcmgNapBoJMHEvTMBc2Rmbk8ThuhJMnnH71bAKs2+qoaWhPpsCWx4Xcn2jy4YG8xZWEEUkHNc2JgWhAoaZCqi7oQV1okGDkTZ+JRhvLtc7V9DLNAgaN1RG/mkW1FR4Zb1oaxWEfbuQ+p87ZbQKogkoVFZRa9lXVHDsmGoCAWVat916lZWuJ1ptKG5Ks8wsaymdPWjVoIArtbNNy1pKZxeApCRDo2AdTgNXgyE1+MKiLb1uagfHWgUyX7UTsBO94RiGvNZF2+BNuzJCcsVnbkxRkbtmSGVh2hEhyVb9QxjTOEyFOV8qIBXG3+mgQZSBrX6tAlWaDaTbFubrMLERjmtHCQSb0FJzQIiHuW/1iD0ygyrGTSZD0ojZIHwEY/VGEjD2Q1AHL/V7yfFrfQmWql98hZcbaxIAmaVS+VjujGxRJYCeBECcfmLxgcZfXPyO3uvmdpUEVW4uAMBLCZBAKNbzmg7Bwgrlmyk6IAumlgCPdECKlea7LgELty92Fijc2pRBiPLp+LLBtDftEte2BECjVlIvg0Ix7nVQHLTl5X73HfWA6XXWZRxDtCKlSUwiaFTnXOVtMnxxMDVfKItG+I4svnBY3u0kV8zKG5viZVsf32/EV0Tlj8LVWwYhFQvXbmkpu3GLEKG9eqNmNPo8SIJRP8SPGSUpfsOuCEa4IF6shjdyO2Fe/IjID3xXrpEWf6I20bLTyEcFPo14VHbtj1xkgV+XSWNGPH/Mt89/9m/++0PP7yEb9N/5UPzx/j5L4n9IfKGZ3w0HHg5Dwcb5P/oQo+a+UjyzDwDEe/8++90Pv/vdP/7D2T//Af3xb/y9P//hD9vozz/8y3/2w+8Isb/6jfBbs3h366c3QCNv5vCIfO6H+MWB5c/lwLw86y6N/3lBdlzWgE06WwoM3vn3X4GYLHx4ASW0tl1O7AeQhtSahuGo1Y/86sRnITJBc8sXAsD2DI2JFLJ6BjqLWqaUZvkLCNZy3r6QYDnp7SsRrGa9jepJqfA0upgPy/jEi5J4LHmPDzK36TnmZWLKc6KAmR+yk5pn755IlcuXT2ynDX2D3UDcTJRVkKVmHUjAHCn6q93l0oXnc6KkJpt3YtMrM67Uf2OBQJpzqOgPPcN5zkuXztQEKiKkKMPsO6iEoDdIADRaOB/4SbuNVkGDNiUQh1S9GyCe8rC6CQRwCK8wKrEQPlOQqcbEhIbISaFTPW260CVQyDqEywz1SL51uwGaRIGR8d0QJ3aZylO5Cai+yAwCrVNDYUFKePqLIVrbNbK49osRDJ7j4DssMXl8Knk/QGKNzWkjYAmAgflNf8cZac9rlWUYEgco4aN7o9ItAUizo8rXQstis4rFxDDNWiLMnnrlmLEHXsveyfOuBKboY3V+mT1MdUrvaKwuGt6l0llsx18r5tbhrC1bYZ5C+h3W5JgmpLqTVf0xHaq6S3KQ1jYDcXIaSwhspJaXJDRWSCPwIlHi35hfJlBaJks2fPjJr8Xyza92XXvX8C6TUUeU2T8NpnL0DLwtYFz0oQedYNWidqv3aWNh49ahl+LKXZqmpXDboI4a1OOz+oYUzuxhzafsvV7ThloM2lAeN3vibynPuY88pxGCrlC0UYxzJwVGXVeUzxX4OQ5IL7bXitQm6wTqSXs1mZeK0Js4Z4rjPBrASbFZdxbIMfWJcWGqU+ySKU+pYdMD2SBbqnliwZA63Khghb3KK9AstB6si4ggYY0HvL7McSTK7skEQTAjGu8RMHLHTBIRqR2eOmvO7elvNqvKiqa/EbdFZVyd42iLfVFC3sSm+tNxTtT04kUJBup6Wde8Q8KlZskrO2OiV7TLpA9Xp9mkx+8hikCpE4mzoMyOLJ0mXYTGVruhAnm0IyoxIpshbZUskCH7nxPtsQuMBBKo6q1RlwlKb849aHbdCfrv1JShEclHNvD6fcfpKqn9yGcsP4MwiEYDxzlQAOh3DNH30g6afBMFgHw2CwLpgNtvpDUmBKRumVMcGG+GtLjmUYwTAWNJFCi6CUdXdK0VuNrrCNIb0RBdzSAiXRHlcKCWkY6IVpgAg3de73VVbK9uhv0wp5q84hVVuigyaPpKqpbSEi+Gl0x+zufcNSQ7D3Z7qAjnIlS+kYvxc+6l4aHUNdW1EvWlR3qrEtonUEJ7iTVlYnqIMSW6EK4gohqWoFQaE8QnWoL4YkD0pKwuQaThSwmAyVutl+IzWQiJxhpgrYEP+2oJHXFi8Rke8l0jpznCK757Rf6T13nElzYvvOBbNi8+4LuhiaOMYjCIYgHDo4RkSEtSplrQHoEGlDDThhG2wquNyJzi28J1L8b20iJv5aLrBcmk+L7M2zqnt3hX5xdEI0lOa1rF47+hBMw+qpggYVAZQeWouowg/GWJfuGysFJUG5V6a5l+oIizjZ4rE4S/LxdtFQSRygsrhRxtziD/BVNVnhpYali96nGPk61SbSB6qaBvz05tw1rUVn+Z9ogks7Slj5Y++QiW0dPj6c5bqQmovuTShd95pLAgJduvRglcWAS4vZhOoIQ3PTsL3KIRkDeHdrwp3saFyY9isieEmUrS05jeJOVue8Fs4G9wGiwH41Ol3HjgIAb7QSbITE0FKTAdoGEBkGSiR3pzAH41mKKofy8QBAqMpyDig6fWpsd9HZmZNil8a7pJanNm3V7Muevsx/ace8x+HM65J+zH/Zx7redBV3Y6NGYGjey6tkci0e+odaUAR/yibpSv2KoTXvwr+oI7gnsBugDaF1OxF002tnhgSPE+SNZYF77h5hrHwgfSWONEzuB+1fx1s4iGmXfX08QLfC/LGwvuZpSGfn5E440bi9/c/RqvkC+++ivkz1qiefYSVvwex7/iPOnFSh+jhX3rcRim2IWNFGex3uPP+2hfjzTjJg3SCwqDDJesDQutycpWWNkG2jmKJYWVhouOKOe70XALx7BlDGZRfnULdZDnnt8dSEClEceADqO4x4upQUfKP+FylhB+deHTssFW9edczhDH2Vdy6ZclJMu93KjjVOTuN7xC9ifemxlfg+sGlkPvnsB2Z9kB8VLtK0cs4nhQQzTGhqgyHtQWJSXaeFCznpQp41EY+KTINB6FyU+b1keieIaF2v8ESBoJXoz3AqicP4tAmYnGAxG9DT00esOWhb05d5f9eJ5zd7Ql7Ua1AFsRqqPF4dD7h1VPGiH7+hJxW1kIb97rbVc1bG5VXDhRQ40bKUiHNtPYVZ8cKuqDi+yZ9TkQTrptc+RTwImo4k+mWKkvGgLq4czAi/qt5PEgfDr1ohRZONq5Nn8Sj0KYSJh4vXA0vEyGkV8RYIYf1qIwMrXS6YiOlCVG09Ex4SJyVO6+Ib4ypXbeEE1AoUs40ot1aBqv2+avYdx4E8Zv3ChvvInyN246arxJR29cZGK8CbM3CNHGmyB88829m+mxoRB4FUh+Zwh1OuWFIYSO+WUh2kumQyxJEIgEDeLTb/A6EaKfIMAfJkL00i/sSSJEH/2yxGplxZdP5ReEv+m5ordIH3pp6j39dDfnfmU/2JAjcQwrjlNJMltjPAopxTshb+zlXuo41+rxFC0gERAhu/RvbE+AIccJZdr+wyJrf+Y4b9U5rMHQY8woDk5DtE45zlftgLcsMzv8CGHMpUSJ4DEsHEvm69PRYF4/3h81a+CjE5XRU7hcg8V1+VuTuSbO2rvTCH2VsSyURHJ0c60/Ns+JIic4pkZ0YsgZ71v9CLmkgga0fAVMjkCfM1VBFZbhE1axElgzJyGzcjxkkPJfAd4ShpouTkL4hTBUVSnAT1AoW92EPc6k1NSriTvY4jGxJBQ2pxisEYfy5jQN8btmuc7RNFRYOe0pbZ3Vafi+sn7lABQUpKGwalYMSmQvE9Jbp2CYCknkbiM3UFNAO5JFUfnwLakBvGmJSfTsSYwCI23lpTkb8qRm4Da0kzvgydYC2kBWxifQERZSPrmQzI7qTXWbp5IzVbDLE80rPbojUY9f+TVcxxmqDfFCow+Vg5ie+NQIMVIBkwDhbwhKkkgx0WETQFYt08VRbRbKck6Oa6/EZ/t4v5DfdBiqSwHCrg/Jh61TvDDuzVE7BQCNSSUpzY+rIokFGNFg2DebZTjCszI4uQSoiB2iODJzSUCC2UyFCSXG/JJAYfAsc7rnHeBbHaZZccyWXTCvpps/FYFJ3LOfuAUxxTUNw9vvAhXFLY1KQwpHK+1rhlSJPTKLjC2QwN1Qc9OWEl3rvXH0d4XkxWXY9ut4MMXny4lnMebiSdyMSQtpg9UlgzsQlFPiDLR9dFyn1pLUF7sN2fvhlSIUT5OdkkfMhai66FZMDroBX1HxWvCkG6gDzQ4tF45ILRGePVMM1YFskgotGKuLBmu5IAxEi1UAb0SK4fqo0/GsPsU7Cx3Pw1eh43loSUcrbA5Cd6xT03qNUWm9zqi0bEel8yo2Kg1PNb15H3ViZFCkL7JglR4MzVsYtyRuFXiDnjVjsHp79oyip5Gn7MapBdl6FZEUpdS0perqKEaqyVukKT6lcrJX5BAxDyztGdheRZIFOrVZY5sinXArgszi8eO1DSN1UHekyHrz/ThVMeBlz6/OSda8YdP6Gnye8HXqEWmZU/7zCf085z976OflTIOi7gp65bHBRB0tWgljAW4kpS1hQa/jnGsbwpLdxu1gAWDeDErYG1CH8QaQhveBIv4w8vai0APOQmiNxkQUB4pR41T8VnYIbf7Ooc3fGpeJS0TzQ721Z00drSLz0OstPGsSP/XmZ191irYaa2GNJecobE5CdyNsnobupm5vHKlWRSlL/FoEHTXH2VBBCwEziTktJkJ+BIqr4f4K602XZUgoG0eAiAHCtAEJ0x4XpgeE0QX/uYl+buv84mzBD7fuCd6UPZU9MsBc8YWe5ROV6DgXUB0BwuwAkBtnfgClvika3VUbIOgL/FZx11omuCsVZMTtDyPkzsipxJ46WK7SATmYuNCGFO18DvkYdtAY3vOfXfRzSx/SQ3UQ6BPGSNll4jTgGvNerVBP4x+Gqg7gnVVq6nsbTc3baxza6tl7aGqsV7kcwsdhVHFpXQR4NXcCb5I5FIrsRdkGTvmaDmhh6WDwvbiIsA9ZSBT6Rq8VmGKQ4ONC4nUAaK5F8IudCryLwq2g3fqG+MECkwR+MH9CyQ8Wh6Q6GOaNIUDHYfMwdE/49FpH0+u63mp8rK/GxRkDath4N5NbYV7sd5MUs1rxtZLv4HT0sfak5cL9heLWiDkPTYGtCVUQT0CKRJQhfCGlqRsCfvNYnNpp80T8mZsvUQSNhB/M+PwKZupSDJBc5auxqnrFOygLTk4uVVyRE8R9PvrXiBHPunK9Mh2D7mtKFDhHKZuA65sqA0eiV6IrQzhx2Fc8GTeErF1dim/qHoxGajjXjf25aKSGeBVU3MgK3bSF36lxKlq67Y1kMF5d4Mgz12qmVZ8QwCRr/ZinhxSkBVrKcmsgSCHwscy6M3vW4cjQylxqoZx9qjLyT7y08XrZt9Q0W8b9JkCLDSEaFfCVjZmTbtGBLpADR1FCzZBdzSAAcp4t8MqG4W45jqv87adYhaahll0tX+HLZ6NJdenIfNdZ62o9GmMr649ZDUZak4lRuePr5g5akN7yn1/Qz6/85y3eJgfs5xkOSwiEiMJoOF5aCwK0puMwsaBiu4pnkePcqasu/jwn7W7eGnc3+CoNfcLLcb6qUEUJBsJ3p5K4j4/nArW7ogiDeUEQ4cH2+seoOHOcQIVWIErDOjDuJHAly6sV/FpFuTdj+wZKCdszlDizuxMKWuxusbaZgDNnsfsMZDiEXQEdi1geC6GcD0QsDYQAwkYhlkdB7IUNgUYJGQIB1MD/73LJgmxp7rRtP9u24mPSt1pxQS85Xf+qlZak0tP1QDuZl8lrkL1OoIGpWyJ84wLeEsUBth79QNMzcWC0HkGnI4mHPC9ch7ISigPYjNS9i0ojgD0ZC7S6IrjBl5gS+nJdzaTqzOV4lfqnOFR0nBvTea3JhinKifWSGqgHzA6xQ6EO7w2KOxQZUh6DAqbBjTb6OBiRcMfTRz8yj75tUGVkoLtOUGUkElcRVJnp4ytvyOQdFskuGTSzwB0FzbXQ7esMsDikqfISjFT+peDMmHaSYtzXjyTmpuCMqT4AmeKwHwUyh9tEUgZB8z50n3R2tevKi0AkdEI1UNur569s28uexO1KX+YggKxGWHDbouBOGwizl3OganYSUEKGoqUPwuPsgyBz9XEW9oF8eLTmA6ZszM3GjTm3E+CAk5793CTxqGOVCWXIaUctgJW4OdJ1LHFFaHaqqjbmR6cBp2NIhXeUCdgNmuPAPSA8mdTkSdfEkwMTT4RJSSK9kZ21C0Qdo4KqNRAVT4ke7oI8PQB5alwzS/Qg3GoMQxcahgPlI2oVmqi70Op6WnOYJJ7j3td4AJMxU6UOStOk4Z/noR9Gw9xYV4IyH9zpXTA3tNTCTDnRK0mdmc4KIu381dOSo+voVGZIl5Ao4idBSJJIjij4ywCff6/pls25yXK9VAvU0+6yOlwXqgj4pc/ZjGDJJhqXwjcs+Q+EgiOuzjfn3A19NjzUXbCkayxA9DwRsyODtpPl+8F+jdN7BbqE+gMWxAdRn1RfR6DqSs3fS3XVkbI6bBKG7+ks3pzFkC81UVU2raTMbCacSJFjSqIENusZ/4BqgCbqZqDMUOicyTRvy5tmhK+xmsts3vFJSoLyZHEB/cZz8YIwdltn7MXLd0gXr7BDurDcIR3WXIvA6YVTNZCk5rM/HiM0YbM0l+BgqoJ7nSYxY24xtypuzbB5XR0PVNwHgINSwH4MnUjuVjb3a/rxt9AeLHDXyb/HVRxop9hfZ7ivgwvJheLEfG274oUUXJ3N/DypCNpRsJiGgtq/fUgObq7yenCeVCW5x5P9hC9Y90j4rvnPLfTziv88Rj/3+c919PM50GJPBPctHW2cZYXlICw/HobtnDlyySXnDfJAciBEgPT7F/jlOyEZDv62i28oD3kWHPztKMoynvWGOmjXyHWestVllmuHnV1skDc8eZ6bErUymSTNckPcxYvYl1o+2XdBXuxb/TQvDr/IBOI3Fml3nBNZb8rFHBxzxXGuYWBciEFFbjnOlQosFvOWC6IcZx9uvCgnnmOAWsfZUQOBZACzD//vkBBMkQD74bcf+1oDP9OoVw25/cmBSDDZM5xo7ntOKdkq/P/tfV2PJFl20LQNeHcsGyOEQcZYNb3t3CpPVHVXdU/vbPbmluu7q+v7s7trmC1FRkZmRWVmRHREZH31lHjyA5KREFhI8MALEjZISDxjiRfb2MaeNyQGiRfgEf4BDOJ+f54bGZldPfaukXZ7KuOee+85555z7rn3nnvusQWgEkgOEo4sEEVeRKSUlBeZqknKi0zNZMlLXSZkMuWlLpMxaZys01RMLyzEdNbVKb+R9CDgNTBvk/uIkNZtWWO1Z+7XV9VQVclmbSWbs3XsSZlOuK4DumRs765kzBj8WXvw5+yxJ+MLjg4+i9qDxuY55FUCjiN5t3W0lxVNx1FvAqqvhZRiaHv1VPKu4pqczp8jyD2bsjVrTx/rhvPJGXzOh7xXg7A1fePeaAGsrgWW4Ar1NdXpZ4DAKzAk6qPVWGt5r21qXjmpGc1ZfgUTNIInTGl6VXlhTKIRCFkPbLJOHGSdWFtfNLuLc/iK8MocuxOI1JOZ8lbtJm3aT1TaeRv1EzVAElV1jPBpq3HmhYkSYYGFGxmZ5N0TNo2RjYkeYJ6aw0B3cOl/c9RWApRXzrSkplbiqQPayr1s2lrJOzdV0iiNmiZJEF5KNUBy9SXO8BRIapajshe9yN42ToN0as3PNDUseckrgQIGEqx5QSKsZZJgh8GOHzBHuNxaDrKevgHO3nsJzGZYScmxA32RBi/Y46SisSW9O7anJSIgFrY2xwrbPNQy9D4Xqw+t/QOL66iXQtVvFmfVmkLumP09S9B3P2lEiZfbpc9xrTRp5Ik3IP/2bJg9DNMmpX3y77UN8wDDXNnDrj0WFGtnBWdFkeJsnkJl09DPyAeuts2k15LPIBR+LwrkKwi4D/kCAnIyzyP58AEuXKQZv3muVsL0bijXLTMFGp+8Rw8w3GtWtqsTU8UvTPljJeTJIUZQrRaZULyIiBAjs1bzLWFmRSRfGiK+VstNEPyZnEMTdtRqqQlAC6Y8yoRabWAC4D/Ic1uYZbVazywn33n9RZqnvA01skjTpnPO1mp9E4oWEAsreV2rXZtwSqnb5v8YyY9beCpIThWxGSYz5QJTLi2lojJcTioISSUJcYpH9fmRcZjMkIVpRj3OXDIxRlYx5yuZFn2rGLOVzIq5VUR5StMAplYpmR7wKyfzA6uMsLSOnzqZ74EVF2lyfvzwyXzbgqDMJCvtZL5vFStsrOMFdjJ/Dc3oTdu6d5Fxv5BT/BWa4jvy50t81FDqXSJv1e1cYi9Y+kRN2BP0RM6lWu3CBGElGCgL0941jtE3n69iBUST0FI2LmwQ+p3I+wUB6Fim8cJYwYntggxvF2BSxD4B9Tn5FgFDUYnIJeiIrTvat9y2Iz0pycrJ/kCbxvrz/TrL2mRkI0xntroNRjgdK5xWChmbY43NSrngcazyWAEQDI4VBivlnLuxwl2lmLO2+qYGWQPNlqQeop4r3khqWrrAyCGbZRdWKaOFBN0GlmEghNBQW6uQkFEn8bUdq1kxfmwfhe+ikaf+kD4l3kbSuEi8y7tSprPhyrTxfpXp/euKrRxwzPpoynE2RDk23otyvCfxPysV/407FH9AwskWMpbw3aTRTLx9IuGHdyXhu8MlfP//Szgk4btDJHz/x0nCd0slfP8bkvCFxHU0URI5s9KK9Ifo+COgyhOB0d29QUe7Ux6hU14R5Q/4Reb7c29sdS154MuxsR/FrdC+jwY/rAVt7PP66g4LhbY39gksuK+/Jf3W4ylvqSJhkYuoIBnEhbZTNdS5xCFbSP+27MUy+l4SdclsgliNImg4zkJD18YV3teydRbGGUB4uPgB4ZNeVn7HnyBbj4Uy1jJbFwkCSP+z+S1oIbMsh3oBCfa6/HmJfh7InzcInVVbEt5YWyvuZ3FHfigPTOwbEuVcKBxv3fHiKUSaI4IbbyuQZ7lqtXV7q4qUKAucg6ELHF0GOQLKS8+kSfnaPFm2EEP1JjElEnqid4TH+IZl97WY5+LcULYN4xnAMFsH3iSa/Aelog9kvPCicgWhTwvHHn0fL1Pe9Ss8Ti5SmwhKssKiRpdVFBmlSJ2i+XV7Z4Ksa56gsgNI1TaTxnLinUuVwp7AStI4SLzFHyvF2qygWOfDFWvlL55ibQ5TrPMhirXyk6NYmy7FOi9RrBVIsbYTHG+8IxWrixTr2PYzt1WBUwP5d8wCznj9FsC2YL5RGawJXAPYFtiHkuQd5SN5UZJQ88JG/8iFfmB8p9JtZNcBcQ9mgGoA4kcq4sZ77RTrG4L1y6Sxk3jPbdxvRsMdNVRpRG6qUoUbrDpKN6XEinF7aYzbGuHAnk372oi0ly6HlKUOPq1d049CTAaU2Drz+QdG/JqqlQbxLX3hY5/D0ugZxIHn/Nhg1tvlRwRzt97rims/8gbq3J2/gXpCRuiBPdeeWEeRwAgNm2/p0st7ZV/5o8feykzL1t00s8Jrx9aLmdtCEwIFhsjBydhyoCIOYQ3OdiYBTuwBCTsZImHgqlQc/r9S3xRR+oKiAl6rkwV5iPm0op/lTuIUq5kIHA4XuCeH1uABcHZrOyqOvEtaxyW9wl2q44AmcM09oG2DV0kc72nzhh3RVWEMbBiUbFSWbBqYOyGOADHnQt7YCYEjwtg6GtoJacXWOV8YTyG5tUl0CBLkfdNn7VtmBijO1nwcr9xlKVSvGXCLAU9XYAejNr77Wy6GpF+3rOX1lpoOSnEygZtAps+JhzKOSdYWe+BicxyGWv9RFDyOq1vmyirME7vEpaZ0iJpmhCGFzZDsvTIke48Myd6JIT5hSB6LdUSIH9az+eO7+OO+X5ubVQKcurVjsMYHWeO4P5vHM1B7AFd8lSvgDVlau54baRIHkCGvcMt4+ANaSm5X9izUa8dDWi67xp69cqZKgBByYQOaNAUxCCuVz+V3ktUXpIDJhz0cBfkvUIKEXvUxMRIkvOt7ZMrbYsOetwPYOeLzXuVXXMV7WqD1h+8q4oQ8UrV7+O5NdVamIs+h7sbTR6KXkiwsvTVrQnKG7IedCGGLarZNA6EWu/fEzIbF3phavSTHhEKXy9F3kjgqfW7ioMORUdJLCCrqiWeiUv40l4oIOSRtm2mR8QbTNZkYrqT0rE15Tflrb8q7iBt57HXktz5iXzfGbzKc2S7kdYhcyI3YWgxfq0Kg7hRcmQWtqEOem2iaBYGf+s2oFxVRqKW1pxa+VruwKtCJQ8sN2TGB1NyQzSQpELv8dJmkJqrVuia0AUHajhFGfo9m9sehI1YPGoBb4Cm68iRYz+qYmH2LMFe9fXrN4Rqcbq9iXbIFo9XZ1uAyoDkKw+1p2kt0bmtOOWe1RQxhtQJq8dkkk/BZW+kbTLYV7zrWNO5K/Rk0mupP9+GkSBtBuYf3iRWG1QPub+ADyws7D7nMBZnNd6xig+r6EwTVtRvRSK1/ioDOINW+JKq9a88ElyM5ecjg5Lare1nRn5O1Ae/tUuU5gwTXqvuElEODlHjq7b5OSlxGSsxSDIBFRaJMf3fw2gPwLgNyLPYVrlm4uhA1sIQvkL5LUtN9XRMqHNV7RaNFr2D+gDANWJcaChN7JCFDgNMuZPYbDbUCzke6gIZ8P0n6dB/MW89XrtIwi3BkN1pRz6EP+OY0comWo9xv9sJW/TH6tpCmCCn16xP0dcnv9dRvn6BvTInOonQFH8TkovApbqYo/OCsr33/HvqO93zll09vvTf2fOfe/P30zjd/t4h2LMWN596yre1boy/plswqeVgUiHXm5LU1yqJuSQNWWgQMw9bQZR2vX18yFnbrhBkHNh/WR7N6fm9grhbWq9o8VhcgbF2zeBgOtHerkPvuGq3K+DsGphoB4Ci4KdhEFKz2fDQR3nrno6jH7J2rx0rlDc3xd8bPTeHq+c2w9542xM81OeQ93e0+OGm1fm4o1yJRrm17PBdd7r3jIPDchDf4xRsFWwSbA9oCDkAXBUHgAahJNT3+3CFUH9tU77wPqnfunuqdcag+stXGIeXVTzkgya14wGELZMnZxgt7YXqEzzZu7uBs4wXIhNxRSQbIKJm4kF3Ml+iNObCSBJiSLrQDFnbP1dxcojGxtGR1lBBjHnTsiDByHqW8sAcUWDWqbABXlABHKrOjZLFREjZk7xM3XpSvAIe9SkUPeWKqTXglKM5xMk9SQN6nAiKH+OpnDi7W4rSfsBesXhK79NyW6ZcjuTpgxpWXFX0dMN0Kf+xJZWhZrpUx9+Kr0jJ6Fk+QqvKt8BL69uJGK/RejUXliXl2wCPrlNSG9KWWksSG/KUc8UySG5a/o+S+hk0bE7aEVSjZiNWpAUgBTQJAVWWSQHqq7sSepJpVcOm8lIaEh/3FHn80Z7YWuDdm+WtQcyVAWL1fVxcY5fUrMLNzOMpDXqbxoPtNRdkDTmVPeZUOC/jshxNbANVheJYgqer2KC90mYma3Q90CYy05570Z7tcGY1sD+Y19mAexI1T79R2RU9M1zInGbvw3kmOa5n72HguCltL9PGZ3HBBTzTH0myptBnV+1Qq1k9UF9SoVn9guJ5h0OjEXiuwl42mY22/A8HhYCAVPbEZGxoBn0lQbfWdUZY4vF+Ts44luN4I3IIpqXb+W/6MEJwZN747gtjzOu9Ol9JQdfJ4JZDKAKLSYQ6LLEntV+YgU8QhVSTZV9cbQxAeQ89eyx/l2B0OeJkhdxPIyDb8cNT5jgfYq6NLlT9p2UN2ntE2CCNadtnHIhDnkRlO1W3wPHDxPCjZ6gmsVwNdcML9MPLbiid1Eea7fpSZk2mgTlJ20QUmWrp2gXKSVgQWGeIwjWyhByXHFQF8XBEo95UD7cUc8RacUtPp4ZksrcRPmJnlnHSxEeKhaXfIForGzhF46WCk6VEGoEeZgV8j8Kvf0Pa4G6rbkGq/BmWL0cB8iDITnmnkGYyt+4qbknuMgfVUfYhoMF9Yly/NI5w5BAUe4fgBCT2zjaJvxtxVe1KOvVlthJdpQXYV3pQTrUBBZWpgnQbvsPgpIXEgTRJOqdSz3ZfUdF84ogPLr3E9JZ1qno1S31UZ2A5M1c0/5SnpgeEHtQlZfXvk2u6Rc76Bpo9X2zFe8Ptm8JtaWmi98ynp6/c7G6s5CqMLvwh36UswpYtsC3RKNM20ElkosGdhDR06wvDDDxOVXCU3u1cyaSqdVI2tquY+AEv8Uo6NzK4KvHIyqnqU1ihPjGixW4bTE3sWVeW7BhpNZO+ggEEITZChQrb46k6VQbp/37i+uNN9AqI9ngyD1H2DMj6KS13qLldyuCFpBOJP3e+QNIHVunXIq6dXj/KFoIguQpElJ8pXUWvXWwOZ/wR/3GKvvuzEvEw8V5Dvo8lgRz5tzHPloJb8iwRzhWbRAdKuj5KKhmMqsqermIr86QCmIpG6xFSk35c4ylwyJAk/1tQL6Uw0kTPRkT+v0c9u0CgC76y6Nt/RBqFw1S9MD8DYywUPyZWXPbnHicfKudtobNm57YO+s+fJSMODSz+t1TomsmqxCX48V6t1yyocz03JXQw3Tvwda8hSBY1JhVAx+2pkyMM5pW8Z86khJJKc8oe/ucy/j51XVQbcAmCPPhS3pgvCyFIwkgiMNv6jDj448tXcCqza1p4yvGosGhea12sfUvqlT5RTX0Tf0A7E2jDjBxkFiwqJlKXhbM2ft0JR9a3sOQTi9F9ULtafIMiOtaTUGV3/FAF1LSD+XjqylO7esAXdIKuXS9tGboy6erlr46lEAoxr3yraz1a/5OJG322bdEs0qwWaY4vFbVOrLy2SPhU/26i+wrs7kwTamPHMRxXDpLPX5K2t/RuBofbwbpFlDArnFtKQIHWu84Gh83I/qDB0mCY2cemwsAY4mYllDVp9ksjEXd3wgSKaF5Lo6b6tp7uj6qm4H2OvEHarS6PRCrDzsKsOowru2oM4JCQuBMh6e29sQg/fwSC5gkIXHA6azpbDsZQUjCJdgLwBkH2H2r3VkoPXshdPFwKdxVtVlh9GspFFegzpeMzRiKjk0CXpQZaq++PD4liYz/TgJyr6w+kaPvgxCAsBAsYepIbhHh4pQv2qmEtxoESMZFUiRtxAJOMhsTPrcq34CvHswNaMZdc+9LpZYK1ieH24MlgT2IFeVneguUe3bmw/rxJqNm2lWh3VXlZ6J/rUoWu6LqxWt5jD34k+heQetJmrqs0c/53o01S3mueExSs2i8/HZ7ER8TsOv0AWnFdmAYlUJ5Rt25Qt3hVli3dG2eJIlO2MONPRFML0PpT6OncQhKmeZ3g/PA8Dub1G4oKRd0NzTot3VPID1LdjV23UbMQMLSUdMUdLyUfM0eIZiT0FLepIkm8YLfaOJc1afBw0dkPvSDmVm/Je2AJxbHlK7P7FkVmANCsfaXknch86shJYmd8MF4VngcQOyrHuX0kcSxCsskSKp0BEQSxV2WVXSo4D3fTk9SNNmtn0Bhkqnm1utEQHN3I8X6Dl3UtbG27MSayZtJCxjULjs18UOLEjcMh6o81korqzrjrDYej6jTq/KbB11Io2xz0PGv3QW5M07SCa9oLGUeC9unNv8rlL0tdcu7l735gKUGwKZzIoWljimEpVofmxCfw7+qXPQZ1bA/c9975BTbSZBXHqHTzb53pW1TX1Z9HYM/cgoUCWkbxhaksC7qZk1JIUStSKNBa+8z0ASjnbhrTyZOGIauIUnNiK9Xq8UBQSjGjI5OtRI1F4I4Bj8BoIRCHgjjiUB4S+0wANmBdmFpUP3o/f7DIe0gi847pTLjPxRPjgTj3wSmcY8egLSm0cH9yR9w5tnIx4TNuyxQK+7KYmhYYHrVtls3voew9QP+5OwB5UjruySChpnK2irmMsSpwXEiZuszK/jIrgbLL0op7y59vAz8OJR3Xyn9l6yzAzU8+aWeh3n7XCtj/oFXXgYnQ+SNMEv+s9wdq8j1xfz43SqPjcATL2NMRSR0BZjxi2DKKReBZSdBqZaCmmb2Scbr0YUoOyEJbSk51utaBrsCWrGVWaRY0SWwHKZpDhmSCzqQzMqWzYHGDTFmSVDbBNEbOIQVaNjoLQEdl0FO9OR3EHdBQV6fCzUbenWzS/CD4x2Q+DMEqLvNJGNVCvZMs6R3hBNe4DH+/femlFMqL2JNjCR41GMnJ+h1mNwtlGwzIb82BndM7zBkSEeplYYvlolNs2IYPMWB9yiUjNAjIn9cyvdo4U3izcJtAg3BqwfzoQYhdSsUvVDyI3Sk/5ike7P4LV48dadoCb01GQDl/Pz4uD6zgIW47lnARwL+kkjIxPjbKi7LChBGuXzwF4egD2LtTfYY3lWiDZNODL5cJ7wRfMOQIsYtS6LU7YRHfQAjLdXVf0+sougPkkAo5eAxz78pfeiGq3HBe/lArgpa+rrLHuNbPGqXfhtE3yoqJIHtc0tVcHcC5EdDCHQfZMONKftvIzOlMZoRdC/n0zAxz7jjRwr5BNkL8ukLk5g8b/3W8Kd8zaevLAd75I7IwWrtW6Ztc6gCO0xQRjA/guV5A7Wj2TAcOod5MOhrIAXChjgSpW4di3mLUEhx21ypj3m41gY0jEu5CIb9hSLAWEJINxzDZQKhqp06TUrcp6w0CrKpdpSprKidsvpZqeIbnYrT4/l4eAIAbjwGIt3v7ica12aWrNxeMpdUJ08E9OmM7J+uKxmKRD7NUpB0uiNn/BcrToEkkLODyMrAo0OQh6D1O4DLXkyKNp++Ixma4vTcn2GL/4fK3M9U/A6R1P6PsjryeifAlnJs36lQNeBHzJ+uGwusQOu8Qx3rUI69qCYwG2IDVtH2nam6zRCbwt+fEKMX5pBGKG344Bbi29+50uRMfQ3VZ2Ox3Lfentd1yZBEe/sdpkcdE5i4feggCO59zWgHUhT2Nw7Pqc8uN4rsQYDLuZA3K2AltLeFp1E9jm7RDGlnMVYml1ewSFkpt5W61pPmosqD/dBzXq7TVbzWLjQlqg3T4TkeSRx3Ml0IMbEx12cINjwvGxzRuw6HiOBIxvWT4BDnlCOruPzCWyoOviwjLS5BChi1cN9TlvM/TpCqL+2FvqhX5G/n7i4cyx+M91eQP2E/FxAx9APRU/xQXg73kHSM+WtHQU9U+9Q/SfVeT3HPp5t/598vOgl1ySn7OPyG+y2UE/zN5669V3UpIfzt59UsyDsVyNKkuGbyi6/Z1i1+/iasw3F2n+zhdJRr0QYoaEl4QmqiHhmRUSjjV0NWsMAm/TlvdVcw3uvPS+qm2NOa+3K1fZV42dr/Pq4u7I7UE2gUvn6QxOTVAeBGAeSbqnrAzOWVAWYcPaq+uPTpWmMljJcK66xR936+CBkcJVjijHuAXDg6IrLW/+XFkWmE0gj35cTZA4xX0yJHh6Wy4GFvHbt7bB2gYOAszt/m1zY9/cwSeRLduGeTqWfW8gP/PoL5L6SbtnJ70QBjGZ6YRxmEd5rXZskshK7laP8W/Wuwh9ZR3R2FcaC7urbyc+/vFzLiqbAH2chg8SOEI/0VZEzLf4SRYrOwdjAr64ms0fWwsdU5bwpstjhAo5v3kxhkFoDdsPWkvyPErFdtAou3LmZlHZLS7ZUck+0s3oBI6QZbQyshiVlxAqcOxqHPaTGOd6Us8pyOgt80O8w6gfJgPXxrQDuix1D1hB3scKyXe+yAFCSAXOjnQl5ehXwh1ScuttQHeyDY4i2XcA+2APn1nnnox6npADa85z5SAsnPLWxppZh0ZHjhXvzO49rcdtZM6fW0dpsrR61LNSqdo6d7SgyZEilE3ynLS924bX8ElBBlzGShhx4AwjVrAjeZaeQ/tOe9UFqVvJGu9CB5PugMhye+yKaIQmGddb91JxXqK5/bX8eYR+nsifL9DPB/LnDfp5Kn9u4tVsIa834PSW8uc59hrkzzWczlH+3MNJGws7hE3Kf6bv/Ek9EPt/wrnr8V1A4d4FfC9QOHjn1o6g9PXOlY1B6uepX/n+4PzTJ/ICgrFNOD87xzvqR50MIXg8R1H8xEjX4gjFqXLeNzyYFyrH+SyhIhr4rDO5VnsF7HyoEET7xQjUaq8t2yYKSbgNH5la7cSEFGWkTT5gtdoDq0lehgHtcazVTs0aNpBaFQ8zMnEmp9RiFZyPf63WclUROSc9SDhqtQS48mIAEfOrig7y6s1aWrl75vgJ1ZxhalOmM6UK49KW4aoykp5UVJJqGjKieoyuG6MqxnhaMYZKlOjDHR73j/ZIjJYoRIsMkAf+gYeFq555mXmkVSvmX1lrxkA55kIAry0AIRxo3VrMn9gNiOOwT1H5A6vclgO8fC3mT52Q5NzsMXnFxloBm2Nef4qxallw9ijXkQFAoIkFqo1uHZkDBBWbUNhfy4rGi9ArbG/CsW9Gg7sy07pCRxR6M1AbrgZUl42FX9nntZL1mRH7GBWjBYGQHauXSOhwqLRyFRxHTZNPc659LTXJUx8JMb0O/s7Xvzkuyv1vjoty/9t2WZ9wWIILvwNOkk1DAwxFhGHNIWbNEZ6Mr+ziINtSgKUzv9gC73AD0WJmj+XdDelLizljLUOP+PF2XWVKq2B4bV40rmIvLRpbiTeQnrmP7G6vaHQyry0/RuhjX/4cIJt+LX9eoj6vCvyUeLPAr3tcyKJFNJqdonHqdQvr0ZM1/OjJmYTtomY2cBo879IYaj23aB722uydbJ5dFH+iUbUityh7clukE+Xe0KfsAw613uJr7KfsY6vPvZgYzeh+a5O8/JRzB4bXIh1xxyWWb6598lTLVIpIQAqPqAjz+U9m53jZE1xGg5/xu7Xzs4/mnrgXCfGw3YrYcocAqxeb+9C5+UoyfzI8NQtwuAea9wfWs8p8aoOjyuOZdpJ1HUXsES4nRdS89sxqeghuG8LUkag0mPJUwanV+lZlUchB6TjXatcQKC3EoPzJ9CsLW/Zqeqw8TtA0geT7BJpI1moXFs9kKQbGCeo61iD2cZEiubVa14RRSmWnlNIzuE9OadlrhbFy6dAW/1ptwwRXSkkVQytQJwOjhixULfJfNNtQbhiGW4VSkwDbA9AYlFsClxkotQGQASjTfrfql+p9VaWvovHD1b2irg9V9KFaXlnFK+v3KMo9oma71Np0Md1bw/ZXR37NXHWNokaqp9Qd6K+yWL5Uan8agL33Gj0VqN1oqz/7QzezYz3dpJ3WkypkvSDxlzj8Uqpd3fewltVz/lRlSq98DPQLHj0eutn2pOCj9Wd/vg8s1LjEo/Vnf/7aAqDijhaf/fkrq1A8MPMpKm5axYqE40Vnf/7CfvCgj5ea/fmOVaIIN15l9ue7jvYJ8nh12Z8/s0DEo6yf4P6BAydFilkOd2SmEeiG1ZQU4DqVdmy0caMDYLG6SxzcfWgtM+SsatfaRISS2JWfCu3qWy5QVrqy814mPrvGSuJwDGqUDCJh6kf4Ih18bZGWutOH0PKxDrqBzsGeq7KH1ah+R2ihOuOU1ELDj6Ik2cPzslSM0TGelrJhzUe93NvTMuGLForDdyiMhkpC7wCeDD9Ng3kzlDGVuVLKkvdzHsoDWBJyXzxW8seUPDrTLXtuxnxI7AkAhK3Zm+oC3C07b+f9ybvdFaxa13nODTVX5QzVqucKJNkqcG63pRGp33LEiFQmdguK0qhIG4OubxnGexmRUnjrY5jwZfjO00gT0jJwu2cEi0sr1JcNmg6Kxpm3am8iHVhbFJh/zl0Ia7IylkyOa1jWwor7wNgtwUkw89yRPEEHkRWrLbydi2INHbEuJgcEymM8yWXMN4MBfOUjPCpGLFfogb7gM5gKr1iBdZqLuWNydmS2gjy1VyQH5tERvBSBbTXRwdiZvZ/GMcJXqdiA0e1zPP1cxnTHPJvyVAKZF/opacrya7njy1zVpyAUtu2btkmQ7kWXDhAYB9Xlr7jlQRalBeMwCKrAuB2GruIsXPi9gTzMUKpzNwGY7nVcqyLqxLL6KUiXDGjijEYixIjTEKUXNN86a+GhObc30zeLqSlvxXlqhExYu+d3kKN7rpqPkH93+tek1H2DXjaq8Iu3qFpx8g3yjM8tvwKneC4arZa3XSaBMfqGel40JyHynQWpBYMMr+CunbkDBASNlb56GcWt5NIBLsqJ5+ejv/q7gzg4W4+LMENj6VrB2JAMvTgMqN6H6UIPLSHdaJqQbmUh5KtBg5xCJRSekSGO/gAM1WenzM6dCaK1Uak6JKOMxziD8W4jMXQYqlsDwgViDxahzRROOXLIE8huC4KZcbAjZG3q6p/CoAApeB8GgsXmZmcM57Byso5Rc0ZAqTnKXESatgM6AD0uMy+jrJ+DJCt/5JIBVF8Tswo80Pdd1rAAciBm1QVZLi8T9/KSNcyk2X0160ie/x4XU94LSNRA1wH/geWjPBTbUZ4XfgCfTTqynrXCAi2ykWU7shc9pMQ5gbJyNoXazoVBRykRTgpg9EHBUSkBydDiD/BfQIR/X8QVWEUEMaigJEsr6xxyD44g9+AGScn+ysHR1kp91nu5sLFytFuf83bxp4Pdle3l+mOP//Xk1ntZMZaG3Md/cufX8Z/flfUsksLvvaP15G1UtZ4EHrSea0XD9/YqxuS0BhkcWWXipwCqKPLPICavisa59xr/c6LEmyNj8sAe+BPT+2VZG/WbnicCJw2EYaRmazwRuNDbnqdKiDvCIIwsDE4rYXBaGYNTA4NW1DgpvMTuuBVV6RhBVewYQWodxxEagYD0nkU4GKiIGs+9yEYkcCDiybUKP2HNTFB+yCqzaNZqhQlkp+s051sWACBfFKAV6HwbRKpESuTABGICT91TJEgmOpKq9TZTgKrzbhApCui+SyVeAmQncfjiVBaZ87BIGDqHiguzmMTVRY3TwssjS5P9yNBizor3lP3dr873d0jY7qvcHTPTekqkfGCzLHWxbDT+pA5OjEprCtHq2NLuEZraNk29u6Gpd0c09UagqU9ourZp6t8NTf07oqk/Ak1XRF2btlm9qmTfryrb9yvDvl8QZnaIae/aLL0Yl6Ul7090zDaZZdVH4WL0UXC9GdGB7Dg4ZBcVhwx+9YGZ7E6kj+0ZYfEGnjcvbQ6fvQcOb5htOubOs7vj8Ub5TKhx+eyduCzmvg2Dz7uEz/sRDsU4tBm9+x4YvW8xGore2L07Nu/rbC55gHD33ZhMY0L2DRYvEBa/iRo7ibdls3hhbBa/MWvCL60tjMHJN1od+G00xrOFqjzjK+U3Bn+WiBlfts34UiUzvlTZjC8ZZnydDMwBGZhVe2DWxx4Y862gCFF/UG2w1scYLO11H9ZX1dFbrzp6UaseAIN5YAzmJhnMc3swNysN5mblwdw0BnOFDOaiPYwrdzmM+mCt3MFggaOyMt6oYD5skwHYsQdgu9IAbFcegG1jAI7JABzZA3B8p3rk2MbMQj8AtlWO70KdoE1HpT9g/I7H1CreKrBpiFn8goztjT22LyqN7YvKY/vCGNuXZGyf22P78s9wbF/+2Yzty/cztmtkbPfssV2rNLZrlcd2zRjbV/aowidW9LVIsIy8Y+UoC2PTbAInWVrbzoatVrUNevLMIuSUZfahF8KnBe6gvsZbdydoLLwHo/HlxNSErpY2r5zwE02Uu1o+vTLiMGT9xJiCT0cd0MrxyYSXrqdL6UihP6Ib1/E9LnLvRJIW5EYkglWu6i4mRcFyM9jHDjYpVVYHZPtMJ2koPTYxww8LRw5ipYOdCOMSMyF2vIODESGxq0AZZxyNjqLP5IQ+EvGW/76EJGm30WrTvQ9Ky+03J4afjyuyQhtRDonx4xbgEfG7CIdNSgU6ACK+ERmh+JRHOtMIAFhWsGgkWDTiiqJR4fFMy2MeckgLsNlykUsOTyPwaRfyUiCiaenMjzv4OSmPX6mfu/Uyf4QT0bk7PxEtfDTTRDbDCx+aTcabfKsfoaJeXV1WnZMrHrSSiQt1N9Y8XXIU69vDmfmG/0Qz28Tm50zLJMSrQvXsSqqbRXOb+NLJIjpaj33d7cr9RrvwUr9x0fIGNta5iR4LCFdOBvvsHmNqgtIC50FTn13MrT96lmsDLrsAbKHSm7a3wLrSjqhpKHquDm+f3UGzT5dS37BS5AjGlxkWfPzYEk7Q0Pfxhvs1ZJ6c5ge1ZE1ZOCa7bX7ml3z7ZoE8ZzWyH663ajVzFSOKSrjPINz3tBjaEM4wwgC2jjFUEHdgrQ4kbE89jE29p44uu5DZVr+xjf2+LgWsI0gQAkAOroiWNEcb8itzCKtfD2TVoboVGMM2gK983ShdEOntjEbEhUNAKxJxAclKJSLYWF4YRHSJ8p2NRkTXoUwViehCol2JCCZ8XYOIDb/R873L0YhQz/jxc3QboEVxH+uX5bmMgBmTHeuzrux+qmoooGIbkK3dHY0dpslT7+hXHFfN+Oj1KxCnXpk2Nj/3fXwZ7bA6QfR8yBzQUS+j7WvDNN5ltH1DVBeQvoXemxFJWXCYPq81eEcaFyCriJsdm3JmLRd8gButgc6Nrep8GJIjqPI75mUpRaC3socfF4IrkyW/seV7y764xhJMeetjUTvi0oDsX5StDRBSlvrnFXL8sq2a0a+hlywtNGRBTE00bas60uV+aC1CNloqLkbQWjSvL6uirW7FOLIRH1RceedhXGhv4bWiwvkINS10zk+0GLzWxDsCJyijT6hDld24JWB1R0CrZwlYlcuCA7Qs2PQby4l37jfWE2/Fbxwk3qLNQfigwb3VtWpKvZrTZ9NpX83VQa12bsIqacPDixBvGa2YIOS7e9vLzIROwFmo5jC3QiXQTR1AWtlSglA5jESAPntHTD0qAfKSZo1VVZmKxqamW+70iy0cFko2y2I1TYx4u69QsqVH8+emg+QRjOtzqGzFcp7wezpSIheRRO6Q9fyxLYXblid85heVsu7vVHA3t3VH2Wja2W65b4mbqW/bi3iX1SRO547hxhz5jW3fe2FvcByZuxYEa33/5Ujba2EA6l4LQfHI2Fm5QVbB917aY3ADzmfDh0Dn9Q0015Sy2vRq8/pNZa5igp4TgtaIaO3ZnHxucpLgtGbvb6liw2sC1ew6Kssx+s/13S007GvGGLySaoFTZb22sQ4spKdQLRNndmZqvj8VzNg1HdV03OWCIZQnsnn9lYH+id945XsPqmF9Ym3VGSt1GOUTDWVzhQ7hy1bmJwayp3jTPszxoU5uXYaOgilkjHP7CkRuUiIy8JrMRqBOOA1bWVJHdTQc41zIQw8vAPPRHdw4N0tYbuxRfPk4nwFbqOoZshr1ONdVNLM5H+SI84XN+czkPGvTZHuWz8BAKs/553pmMDzKG63c8220EPuRJ2ujFZlopcihieLOujLeqD1L/ml2M/KCLExHpNHhaHV4kyrVdiP1SKHfg5qo+waH0pzcXLAlMTUFTYaWgOEpSrLr4Ysj9SmCZ6kmjVY3jj6GrWz4jYdcdZBkfm3gPqJEq2Rx0stxgErblpyeKRRggEpPG+SyAJWeMVB9u8thCcADP95C33HSdHlG7McLrX4UK9m13gyiLOQvwPsid4bMF74T967vIgm4go/IAs7xEVkvIHy0POAUHzUR+DWR4StpXPtInZq2SF+7RbryuX4aZv0oxwlT8lrtymxQKSXO/1UaZT7PIwKtSgWAe7WjtClXPKIeXfZcO1Ro5LN+k7yRaHMRZkvIdW6sc0Y59Bf33OSpv4IbOfq/yq0FjECo5OD/gih3x5aci/GNoXE1ZRxbB983qWzYyLkFUZEz24Z0K5mtbmWz1TXM1gZh6aXN0o27YunGnbF0YySW7hKW7ueNOPcObfp2xzY2+9VcvN0xdH6/guPHL4Hk2qJ2uDO4bziDC2Tk39git1BJ5BYqi9yCIXJbZGCWyMAs2wOzNfbALFUbmK0xBmap+sBsjTowS8bArJOBObAHZr3SwKxXHph1Y2BWycBs2kOyOuqQWBFVq9V57rptsKppvzOG6pxwb8Xm3nkl7p1X5t65wb1Fwr1tm3uLI1rSVpSnPf96G3lKqmfjX/iFnzlSGPJi5wY6LSb+/GJlg6xhAvojFlIQRsBgLqqDqXQD+f20HXj7HUy8h0djB+80HON/jkZ3zCPu3dIjB+ZqbyadTtjaGThCOEd9cEd0oby4I7rg7jZ5cFg6zkfItbtBAu69rL41oWymvjAlkW+e35gFNDhqAwoOL9+vfaEJl9K+q3FVOMp3btlW+AtNdERT9RvDjD4fh0UjETsC8uTuRHWEBFlVEFKBVYTEdxdCe8RivbLR2hvRYqV+nl8mmWn09yobGqUBwFjsqSPOQR1e32ti/k9sml6P7M/maRjgV9l1ol6P4M7KFgCqXuveLIN1kPWAkHVqm7IHlWa1B5VntQfGrBamuONWatvQtErHCKpixwhS6zhBXa72/E599taLge4hE07Cn2fvPPw5SCsrbrcspAO/padkSAHPdePU+N7zm2GlJFJdZxSI0S/YKdBjpegY0jQc3AZfBiKt1+NUl+8sbSShV9iMzkx+DHM9CRsqcTFLYU128XY4l5goZwpxrqAaBx8imwMOWqonbITwrpin0UayJD2jn9rnOinexh9ZfdzBPj7IDNedAxq4seCKLSIpbpeIClTXL0dsj28zGbyWYKHkwqeK9jmCemjvdV8dNt6vDS17BUc1JZo5sMcwHVUzpZ/iBGlnSX/Z4fuk1dUV7KmkG+hcIoW8THAUtNac2ZpAJeglfvH0iSXSRVQMaJJJB0QSdyiIJbcMfkhzjrZ01afV6rKWImG8ElSKyW0Tqekj58G7NiiPp962ddGJh4gOfkms19uo/laiWDSzvPHIowr9fl6r9c2OWYlMMa++6eS6HWg+1XYnWf8NXPm6E0Brfg7M7E8unbYVJYHYWspTN0NNWxVMgbwdh7EjcxVkqbnwjhttbdIa5f2xIecascc4Bzz5xajmufprxXxfQYM9lKW9PU0AyRPNrtuQev7/JwQUOhy5IirXxCp3Yavc1dgq51SmpkuZYAkHBPzZ1VjiOlwWm6AsQmJyVU1MKkuEKQHZfNOUADxYHTJYXXtS6Iw6q3K+6DNBp/pkKRsApsGOxh5GpWOKOyM0bdg0nd0NTWd3RNPZCDRdEpp2bZoux6XJvTokkmOTfTk62Y5loNIBwJbLimzxRDsupu0Tph3aTNv/xpi2/w0xbf/OmLZg2+w78oZAb4Q8VE4XIqaBx0t6VOBwY1jpnyOPiWE0psd0576RxtuSycpk8zg8fl/Okyvgw/KW7LmxxIHi+hEbflPgCY4hH4oRr/hQQMaQ9+VEvam+VzHUNimnIvBejRCTCrsP5VbK7srRj2rCysxV+UmMHC5ox2BrLEvmMBvD9gziIWwutXT5pZ+VpcOWEMN8Wgbmuk4GUjqMzFIaRzY3EK0wodXNAewrA/tUtpVw34WRVkJuuwSKQGaK+BUex1uYi6j09ZKlO9RvbdDAM3npPLx3CwAhU4rJOxqI8i0x1dux5oxy67E8hvWw9Fo8ll2u3CrYMA1XYSupuVsTXdiVoFZdJ4cplday0Bp3NiasNeuQ1gDyjO+8L9FHDy2JNoVOh9V3HkUJKCEHCJvtqHNW9K7r99kf9711/IRW7Pfq9/lf973dLGkNaDrD+/Lv+7feasUDxfwyKoKzSRwd4ueh6KxukjM79ayJpLr7jIAJBCy4OQ1OQcmCfMwhW2HbH/SQqSs/1LxVZYShbQXIEyomZutUKAQ5BJuJOf5ZoE+/P+bfFXQFVrRoggvKJln5ndvc3ax0WrxZ+bR40zgtXiEdL9odr1TqeKVyxytGx9u2uVo198Wag6jXOiR5mRRL9ZS+g1qEebHTbveiOFxoRs5XZnUwt7ECWyX2alXbE1Nwgk1VOXrluNnWalXfZmvRO/Q/IOwAXHFutgSWyHCZ/dQpknC6QfIKXiripnanvOO0sZN6R/JbG5H+gny8SRtHqfeS/PtcqYRQXZM/e+mUt5c21lLvFan1mvx7IgG2EOMepI2T1Dsl/4YDUbSM3yYboPaftQcxUaGJZIAk6G3SCG/Fp3iAGYrY83TqLVOspBGQXFqEsGJAwvGnZI3AVYOxwq6RkW65gWB27de7YVg8xLGq0zgv2H2u1kfPzOJ8kKZJhmbv6Z4fdwZ+RwK/VoFZSJ/e3KtEBcmv8yJELbKc/9Pd8DoXoAuxCkoONPW2NlWA6TSLLpB4TEeth4M8zLRGRZU8Y1V6CZoOHxZ+3pUdLuuFpFUccCZ7vCkYhJ9GD/FreQ97SbN5PZ0hVmet6YDk7dORDHyVCurCTgPEJKkKR4ReBzhI3fPACrL/E3FSTLSTQdyauP8xMkxyvAv3eGOLJnrQ+J2kvaSDmCkJUUvl4h2zN/WjTMBl2gBHnRgNggVUWFKlDX2kYxLSWyHT1P4KKI2zTTQS02kS4YlLDrcKgdO1TLeifhiTSygCKLWA+mHht/zCFyA9jfYrOjdOt5DEhVafbRAWRK9v9WxCNE0IUdJVS6I+0sJprXzXapvGTgqAfQuASrEAeKMpM3EXzTa2ANk2QJYAkH7S4kNqQC+r0H4zEgXrDmRk1QMHLhJiVYXAF/KN8k2QZbL8XJNsrejYkmdNd1+UGD1pXAAgepFagKzZxjgM5YjtWcWBnyIu9qIiCmVHr0Yx6Sd2myRjmQAIQ10No7g1nYaKDLc0AL/VmpZA00K5pZ3RwDOSALW8RqHV4Fdqp/0COws6aBQCciSvEUnTAsCJwkEIiBrLByVNBtSTCdSGWhqkLXXOuYYaMmCuoHbQOBV+UCDy2omAvNAgsXlGg45NM7bSms3rQP2y+yrTnMnSHMHQeYosbWiDn4HjYEJtlKGAprMzaOgOR6g07WOpQlLdllZvaHU54Eq15ZJq0gCVMUlArejiLJG1pqVFB6Q0S5bqKc3ZinQDqV5pjee6OCFP3m/imQTbCQCfNaMDv5XEvWsn+B7cutBwoMoruIrUBavGa0cnNmTSMrnJhhAwYhoo1VY3dNEC+O6E9jVosohC2LbCK6zCNnhugCdpGXSqQZ8jd8SS4p7OhiAI02JahQSavTYoPA+DoXWaLduoSXujFbYHvd60AXEJVKdKK2fCXWiYGKiN0IIGzZx9zesBKi2VVMIJaYAq65A4OLFahejE6WIuVFO6CUHhAUDmnySOkl4OBNkL24UBtwLBUWTNJhc1UKS6WCNpjvNp4ofp4Nsmy0yAmxaosjrQSw2IL0Yz3Ks0XyAMNhaoJQN2z6A3JiaR14mQtyZNik4vaifv+W7wBxo48nS6SE6R9oeX0vQkEKIEVGsqg+Ckm6CV0hUeyykmFUuDIZbCgrlMLOWDAQ8TnWek1PT5F0Ag2qCy/nyjgaElsLp0XUoskeENGauaVRv3MvBFDRzbfA3aVsfjBFDeIXVeJIAZGlLnuVYnRZZ0SIU9UIS0Zcpri1i6KKXCCLT5wCDWD7TiU7A4R8uNft/PpFyGMQxnrH6S2ESPg0IzcAyMQwl8EQNjoKx3oLlSq9LJkkFqTkIDvdWcmMhOlBfZte6X93R0iUNkusN9vb8wDvMImnI2DFI6md+CJGJXg+tHHZz1ZRqtFwHYQw22dN/uDcRJs4bdw7JWrSCrjDhAA4dNsQ1+YIMHSa8X0vFlG3KzUu2HbSaex5YFIVByvrOkTwIB+G1D8lda49iBgaUuRy5AQ19uQJFGZhNN53EHrWQAq2JqIoeVLrzO934q5nxD9Pdcu7PMF5cuuwvw4jFVQCqZeFg1lXntqpcN4mlUV1az6Tx1bh1TLoklhl21FTjpGuC9O6kIiQtS3zuKXWBYxhAaWZJCeASuaiznmLpws0xJVr2y3Dtx1UEr2KSHd0LtjoHlSBm1lVroufEgSlapkb6rETHy+aWfyvVLJfDpiznpazmxJBtuugvULAOWmyZlrCPN2nReDmGWo9q+q5o6MTrXPG/cKkKX4eY28jB4wylbKmMErwNMGUOI0rEDGtgcwkx31ytOjPFCTe3cMSDbw1lE19EGa3eq1msmLWkeXlSsJRdbVbsxRvJVlZF0bxGcVBxRnTlAQ2Hmsod0x3ZaBJty1+JC+hatUSvLGcJVcxDjuVeZI1yAmE8MGHthAGmZqyoT2vLakau2dXzhO2lxnsamzirMaXR7i239rLbpB13sgMct5GnGwbRmN/s6rD77XuuF0mkwFOlKh0P+BceXj7KoKupcWHV0f0Zadh3Q8Hp0hDfKYKVvr0PJaco4BHSBqZPfoQPItMplZ+vrANbaquFAB6B7g/q+8DRuUhpjVwVx6qCBn+vgbR+Zg3aSXfpIlwvpVK7oYGJmbUdhT9HHRVfnmCa94x0dlEY+UmAN7kiH64X+BQT2wmgOB8kBYDcGv5H1SzLFr9WAXxoKghwoy3RqFdYgpQmR+wNgsmeLhfRhC73jMxzwB/meRWGLjyHKEQAi0+hLM2WDSWcJaCLNwnaYhXGgHKDuA3DW4cyhDnSZRerB/gJUOu2n2HmVfpQOZCywlvRS45ByXS/Vjh1XzZrNQWca5wCQygVASB3RC8/QMjprnVlz+7YORucZqRZ6aYgDWfjc2kK8jHrK6bobVuqFDkNmFD1456XNEcO0PlfDe7jgG0EnazoMMzUG0J4KlA+aeZBFKduYAFt9VVIB7uK1WqOZJLZP9gCAMI4aw0jtNuy1EevzIhsAHl6igpLQpzNkoKSDYhWrhs5sLBoCbaCZW+DCbQabH1jwrbC8RtuqodhfE/i6HNhAvmlBA5uLZhfd0krCLzKrXZZXo96vWenQ5q65zW1W2apSxeDDslUH5yMp72e1Uh2jo3OrErQLb3a1WLGW0dmOmxNis9ns6qhSHaOjm1L8nH09r1rN6G7Pqnfpx8U0CXeUVssWtxgAew23xbw7ZUfvAQyIUZU7d64+NajQB1uiM6g0+C0LjDVmAiYWoBr4Ka1gKRgYH5rBVaSpdDWpOi6+BURtUaJM+gMYRhuAazeMtWVVAmrsQ3dKQI1gsrMSUI2ayxJAfHnEOorctSoY7tShBWB4VG8cLUz3ItQfUmFpHkshqQJKN84CZqqJrLz05oAWqUUCXNwDF7A0ds7mNHE4LgXTNe5FOazB7Jfl0NpQ7w2B5ceF0t7YsmHBPIANBIuEk9bGZSBMwDA3Ae1taMWcWNBgpE1QCiabK+zODfRyC4LGDfHIP8uDGgpvzBdtq4KybldS/8tNGauC6gIqlU3UmtUrGjh2XDWBgDKr27PRKhtdX1q1obgpyzOrWMvo7I1VDQq4MjtbrljL6OwAkJQkdQrW5jBwMxjSgmceLd91MzvYtioQfbVOwHbshmMY8tgWbcdu2pETUho+d2OGiXzuhjQmpjUVkizVH4YxjcM0mPOqBNJg/IkN2opysNXTMlCj2ZZ228J9HSZ2wknrqIFgF1prDgjxcPdtHrFHblDDucl1SBox2wqvwFi9gQaM9yHoBi/d99Lj13oaLDW/+AqvdNY0AKKlWvmF3hlZomoAXQ2AbPqpxRsWf3HxNL3XLf0qDYovLgDAQw2QQBje84INIcIK9ZspNqAIptYAt2xAipW1d80B2bYv3iwwuLWsgxDj0wl0h2l92CWuVQ2ARq1kfg6FYpzboDhoyy+Cs2m6A2bXWdRxDNGMlCUxiaAxN+dKb5Phi4OZ+0JZNMB3ZPGFQ363k1wx4zc21cu2Ab7fiK+I6h+Vq7cCQitWrt3SUnHjFiFCe/UHjWjwrJ+0Br0QP2aUZPgNOxaMcEB2ser+wOuEBfsRkR/4rlw9Y3+iNtG0Uy8GDJ96POBdBwMPeeDHPGnMQOaPuX32U9/6TuoHXeSD/txD9sfMeZ7Ef53shebBWdj3cRgKds5/9WGMmjuleOYPAYiZ4Dy/9/U/uff1P/1F77s//N0/+P5v/q2f/vzfHnb++H/8Svry/L/8/r/6T7999J+/yH7rh7/7X+998MGfILB7H/zMT/3Cva//4S9+/Zu/+PbDiYn7sd9HQjZx/9fPkOeconE6KxK6B4pnjvsehmH4Y7AnM7NPZh5Nx/Ty98zsLIVohWLfEUMtTLAqE0l7QjQ2gcW6mMBXISayJOjmreaEj2SEbgM3aUt9PyJNEFOIWEO/Rn0ySKgAI40+EIsnf6MvTWQJcUX832lW7PFCJrG4nBWRklsKcB/pxpmzLVIItUQKtHbabozaMDbt3Gzh4a+VtIEK4VZQgd5OiLTd3RApBVsiJTpz0FihZZObP6wcZBEr0xr8DpNetcU09DNcYebhZZJ1kfAgdyDvIgePi4DZsgTsJ01kUTEc7eVD1tN9ptlSaGZoRU208OeHQS8iEyj+uxc12W8n4EMaYW1A448acJYGVsvymwWah9lFmOmg9JsGSi1ATuGYObARZVAPmR7q4PyjVoPMDLnsnv4Gmk4H+ZkEw78AoDZa4QyyUGmPf9HAemHHD0jcPHJTqEIzcLNEq0ZcxQ5ZpopBoPsuxIXkpTrairWl1bQvQmrw9Izx+IxWNElDMyOtwH6jvvmflLv8FxNP3PDnpGFqIRVxbCf4BUSqJnhfHk2cMxPT0+RETzYf2xCon6A7UatN9HDcIActiHOJlBLVx/cksHJO4I/W8OCPdczZKC/Q7HUN12oPbm4eKlDT+KvVypmf5HB9viOV5GYlZBVabqJ293eWTw92V5YasxMVacFXn0UcA8wBAQC3EM4Rg8bG6GGUTyMfBl+TGFxNfPEFgAeqYLVE3DbcTJz2J5CRIxNeq44UGdOlf6TCgr8LLjClN0VANMIt7gTHkpTgKiYOrHVHBVpo1eEbqmAdWqjUSdLcAsXfWDHRwXqWFGTFzV5dsSpQfTWgmCWn2piFaZJHRYJXWFxvqF88cb8TFby7QdZjXz4+K4o0rz98iP4+GzRngqT/EHRtZnB10Y8/KM4SYnyfc2DqefTQ4oAsQyfuH21vri+tbB+sLNMihLuizQyFqt0jEcvRWlhicJb0w5RstVZv5Dv4YLwfch8MbxwiTSU3tjlaml9HPS0eU4Z7+tHszOzMI85GG5iIOAacm3k88wkIR7EhCx7c3iME+LgEEAeToOU+AZ6beeTonMDS8IKzsJfSeZHAl7TN3INpKck/elzeA7/PiGGfIsTn3KB82vvRk/Im+S0N1v3jmdnhsNPSTfjRJ+XN02CIaR99YtN1CRfZJCoZrzgPqNrs92Q9pABJ06eC/qPvzcwqvGg+8ZmoPJ35nviIXT+0tKd7lnjhxGC+P/NEg2miZWCPF35qFOLpJWGlT1VJVL14iuynCkLEh8XL6B5+8ixjjc9JVnOXm47XE6NX8V6SGM/HWrnSKuat3i+SRTJxxwEn6rGBdh72LwRSZvUb7DDwehLfKH38/el+HPaTOApYz0+UdkUWAyasBDFZnfC4GYaCE6Imsh0pjsYK2YqVD/1TWRtLBgnyYmP/VNZuNafx2x52s62wwFvzMRLfKEAU+72wNd1MrgTVApLkMGqJPR1WLDpvo5nWJ3smcEdnbOJDw6SIB7FNODOKlA69DJsAuzNWhKUSZ1WRHjeRW7MFLJ84V03CVPmJHEoJEbV01mriIMHI9eHpN4NwENpyJcHwMLA5QFdrvka2LASPoWIqNGcygu/82MZe2U/ghY+kotBSnB+Tc39W2n9qO/mmMgnMJRxSWu8jQxyJvXYpXtp4sOXhNFrnCQvzSCns++mZWlEtK5L+4GoaSYdqPOeM1inQpd8NBykDmJN8z3xEvd04NrDX052BTz0Ws5BeWWFHHBjJKA9t7rINjmkppHozrJjKPmPfJ2gExGLCR0txNDEoY6dIDJrBU0NjxMjl+ObP9TRfo//okYpWjiR10Fe7/URlWT7IyeljmzsHygyB4y+ncbh00gZUq4hi1CfJ1jnNVXZONXEEQIuJNFmGJi1/0DkrZJGofKWMlGLmbx7PKc0IV6oVXiwPd4aIELeD/nQHeZ/oR6rYbGU6FXrwkJOFLQE8qSsqhef2MBZC+T0QnjoWdBlaxV0R/gK2XFHA500HvnidEoeF0E1j6j3z4zjsMRmYM+Ywvn9ENUafV9lumYGtthdETYZZMR80VYBPtAlfSf9DmlYxoqsvVqCIJFrSBWF70JvuJEmreS0nZDGf04ki5BZ1zrRwqGiOlX0fmCdog0jmnppmNeP6MzunTVfXKZ0XOeNn1WmcrtetaaKPGIpzBrREWibT/OO1Ed5tR+oxTdOh2RaRriIZk55KW8FLeMSgkCqgG9Wsot4KxbeSposi2rxG8qWjK3Xdz7j3hWXkU3WpPV30U4UFWGk/vP3wgw/uffDBn379j75774Nv3fuFe1///e9+/XM1ulsfNvCxYZSFk8QTnfLw2UGBRr6ov1UUrv6WbcQXt7e3ssrMzEPxP7b9hZ0/3Aya+5GhW5DJnuqRR7/RFLf77Aiy7uOdfewJLNHQ9n329nbu4avUOIB9y496yPvZCK930ejUM1GwnyT9JSWVVj2xcFPDPKa8WCtmCk93NhDKG8gKLDHqyZlLPdDbY7t4CDTKt8gR2AI5kaq38LEF/bKaZDKH77VeHxGGli6oOpu5Mf4HONS53vPYJ8YE+nVgfGWsoYV9vW0SMs2vNlEUj/1e1FoUeTq7egW68sPUpI3P7kc5JeW+h/5cHfR611tIQFvk5xZNqpHvxOrXVf8iITspn3sXjbfrrH591ltX6tfn0E+rfv0xBmL1609uvUuCwSKeclHrn3tt3CD7iV8ZbZLyXRq6Q3pfIBEXDJV94i6wH8toBY6cC/brIETzxOdeBzfI6hMUeX2CIK9P8BL160/QL1y//sntMx/fX5oQR20bk2/p6TAewrweek2KLBuoHOmJ97bVRDJPrxDU/Vt2KvdZ7mWfN/xLPyomdql/M4OW95OfXU9Gnk+fMoxmkDhNllxlnvp86lnUnvyoNZlPsTdVg5mFxZ39w8mpZ2gBNdkLi4mi8ehZ8YNwht4Uf1Z8/DFD4S0OycHi6XvIlhaRjx+3zT1892aVXr05TMhrD+pLEDg9NeIJ0ojws+Jzr9VQWjEh+1Rh68mk7wVTM31Nf2fSAZqOAvSLvUNafDzLH5B+y8Ww/tEjT5XD+kezHiCI6PNtKQ3cjT649FOaM/sZZX2E3wAOM4jLmK78vteauuWcDBEnwx8UnJOh4OSE38jmsxl2KSf/eLb+yMsbynvTxWfh54xMXyGSi/ZHj24Fs8hjGJynFVHlHd/38qnbW0NGFybfcvLfjziKKBpVHL/44qMM/T+cQabG7+WThTLeytjbYlvId1KWkHNAErBPZtbHhg035Q1llEDVy6ZMPu2zVzw9Hr//frglbmaWKi9/nP7tzMxM5iHpISJUQRRE8/jNZIPCMyQJYh6sh5S6glMXCeqQiDqoKxBZhLpCoc7Ihinp8l10ZY18hiMq81x7CXm/hv0ibXQnM0SHaGV9+3hhc335dPFofXP59PD17gpqkiJauFkChXp6ocWdHawnbq4gHac9SS64yeQ4tUJkN8KqONH+LcQOJ98Sx124SqZc5t5Zkhd4dxi7PjLsgwuLMlR22lFKRWyRgA1eq4EN0DO0GHor3MRJ8s4ueQAhbE09azX8ydArpm7JIhrnLzYauiVMggUBE4zMAadrcNtoeXw+IZ7NgCDXxz0iY9I3HnYC2/ys66XehXcJSrBLKZ3DcX3r1mQ2QYgJkKBZAi+nbQ3EoT5dh+60GxfzFzOkbzLPNBspGasO+i+q15mf/KgzQ6eYGT6NfvHF5Qwacf6g1A8bs3NTyKp26OvijbZn1WigiVf5uB/6LTzbNj6anaojJ4pOZW1PI92Y/43RMubk/oz22zHz836NCb47I/4W82aX+xfaZH88h4HZh9vhEwQb0w6fS3rIoHe85pSnMfAHs7NTvKnRVRzJyLOwl4cTyK+YIM1M0qEtcCRPNNNGul6xvakpZYLl9Hf4X2iMx8Oy4BYsmfGD7ktiZSZzYvNM47Qo3l0IPTRXlU6ZXuLF3mDcidNUt2KG/VWicvQC6V2p5ADZoJLZut/IiCZ2kZs40MXl0Xw2321kVN/qCdK9biPhSjxVj8mHWHwgzaTIp7Q18NlHaa1WKB9Q1RRpK0figrgMBXM2u8P0Kr31mPOI+NnqV3eLL1QNufD6lmC8mRQjNeqcSqZUHhXsFl1TIICpc1dIZyFsVeR1yWqFcSanyGUcOTGBfoZk1et7XYe8ZvzB+ayivCKqnbCKHGZVPKsY+9cDSw5x4abb7UobA7RGX0EAaKXd59KGaw2YoBHh4T+8zy4+r+fon1tvwGaKS++jgTlV1Gpda3IBLVv2zpZtYFm2bFzLlg2V8IGU8AxJQmoJ19XkW647ylIvFDOSKnJM2PxbKm05l7ZMSBu2jT2HrCHbSWUtd8oPXwCqmNyWVbC2EBK3XYu9bqM339MWuMxGxc/S+cmUj0uj8FIuSj76k0pNd6qeNhws4ozhBovP0XmV1W7Kh2iAWJQCRmh9UusWK77oMqJD4QsvWgwFmagcQ4HsBh0Kf9ShcFewhiLD6p2A6n06WbjGqddIvH7jJQJ4lqj6nAh97n9ej9A/t/hFOTIy8Xys71pQmv0qzE8k833EsJ7F/AON+Xe12qzCa2UFihiZ6/wavjjTtlMMorbEYoxuT4cem2B8SmCirMViTmxLTHjXDe5YVViU2SscrHM9c1FWoEVZTBzwa7Yo6zWQ1cRL3NJFWc+xKMO5xuoDT3mgAe8Z97y3OPMMoibFepTXL4QWX3rsyme9jZZs3mdN5DJvgGOajDKQ6YyCgnxgE6mSqxnu7iVD59BmrdaUExnbh4MUjgAyO16rbehu3ZxDExcaJUTqOd3wNLMvwM3nKjz8UBn5k0pENNn1Fmz9p0Uav7x9GwxLzxnyFRmWOw1/RtxP9g6RQzpkfjYIyKeb4lqc97ZThPUKg+f1qsHdkg1szYkIsRNxiPwCfPi+UPxwZx4RM1ufDOVAsq199NlTvoqtfLyq5fo3zMJJKi/m8HYR5fIZ80sZCxcbnXluQJlFyL/44pH3pjGcRI+rEx9ixVfnRxR4Y5hOjIslSudRhtR3bp+NR90bbsr7k4n3xsP2hX+JlRVgC1wBLulzrFiekdlW8XxsxwcztHDs4mB3qP+O7pBOpOkJIEYTf+B2VDcJTSn2dhkuPJqMXHNzt7GNCj3kL83QYUeO+Eex6krTc6haLWo0Gp0ZeTKFXHX+CR9CkY4uySOlZl3nhpEqUPj8RBx6kV/i1Iv8ksde5Cc591L6wr/xOdzlPP9Yb2OUYtXhaHqfdT+v++ifW28SQPSLL5SPvHvto8ACb1PFkH5PVfYTdSmIp7yPLnQl3mhM9ufpagjp7tTHs94C+cInJfZxn297bcjjGSyGObD3xQr0DTBxwiPWM8DiHC0QzlTjoRoM3oBwt5ltWICOlGZvuTUoYRFb6uzLpU7u7Wv6X8kPP1P98DNa3zQTq8O8QbPCMjuPudMNeScxPM8msRTy6WTSrteFdxfO3weGTq+0EoYCt2Ps9SGL2YImdDMF931vAz8yCgMbObfvIwdkGKw8hNp3w/Lkjfe9RTeQkgeZTFNDOlYzD3q75X0DubSxIA/BBKq1U1bLlXz7vndYjh9PxO5dDSXbSNzsrQ8lQzR+UAkJkVTA26qMjJHy2Fsq6QlKs3zfWy3HTUmNe99bHkqyBn6uqMoKVhW23Zh+Fk7Pfi7LNpWy8IeN2Vot/EEjZREAEuylAnZpNHEKNXFpNbGtgDWNJo6gJpq8CfOO9Wfx5/VjjwcVDbDTqIQT4Rmb/1YCidDnzu2zbztuTv9NR4TX31B/iKtaf82KufoVeX1Q+SoqfFsEVf2yBOQBaKwEgX0ow5X+DgDHihDgt3iQ1d8GwEgBAvqrZugXAKuWoyq/YAZYTQF1NABB4k83n/i/pN81R19E8b2v/9m9r//7vd/+qx//4T//v//g/0z8xr+/3P/fX/7r3/lf/+Z3/nH/8e//vX/5a3+6/9/+59K9Dz74EoHd++DbH0x/8Hv3fv7g5w9+5WD64NcPtg9ODloHNwe/cfBbB//i4N8d/N7Blx/87Le/0/fjqI1G+N69X64BqHKb/pBpC+bxn+oj/+GffKSNMU4igq8L8CxPZFz+46/aMMpFek7kh39c0+BorORDcZdAAv7RpBPQaPOX/uie1SgTBxrNLxv9w6lyQJWi/6A3qqZS1QH/4LsuQJP437/3s1/9+pc/9dXulz/91d6Xf+mr/S//8lcHX/6Vr/7ul9/+6vMvP/zq8Muf+eroy2999Z0v7+1++cH/A/TdeAOnQ0kA", | |
| 4 | "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cjM5H5/cbbbvZh23OnNu+lfH+y/RgRO11trj7dWroGd/bd+N1wcbh5N4MLv9fPWxvfL5aOfodXrc+rp2PNgOD3obLzcD7/7j1eFKNXg+eD10ribH57uN+2my3Wp83Ln6eLZ1f9Lw+1uv90k1cY/2779c+O2XtY9xuP5kX4wnW9Mv3n20uutexs37693Wc+zvXMz2o8b6x82X5tHzdmRfuMfVg97e/sre7UVnpblTdV+2e5PxY686DZ/jy6gf9if+ytXqajidussby1+6rfWDrZebycfJ7cbeydFa1G5tvB74W4l7115ut0fHr63xrLtzffmx47y0Rq2zo+T0+aN7cXE72I/b1bi137n4cnN9NB6+jLe3hmHjajhrDDvj1YvnsH20HN7cTJ9m4cvRind8fWbvxrv7zeHh5721Z3/lvHH5MtjoPAXtcftusPbS3r3pHh/1qo/O5dn96cbEWbH7zulsehd/7sya3f142N87atyv2I1oI2gHF+7FFzt8uTmKw81kuBqNq+HNeXe2HfuN8/2R311zPl5MN+On6jD50l5xV9YeW5sH06PW491Gb2892a26q2fLj85sp/k6uwn3926On1on/cfbnWl0d7i9ufNkHx6/tpHCiQPn6fomOot37Xb9g/Whg1bljfUPi4tWr5imbSNN25M0bWO62dyetr5uNQ6WG85uuFMNeofR49qK/7K9svZxenW71v7ajvfb7tdde/PmavfM3Vo5i4+Xm88Ha7sbg9NppzpqjK/XVg++jHYPD7e++Inf2qperCed6/Ox17rynbWunUxWgsc113mJ9pY3XjZX17prve5hqzl5DU+Pzg6qk87NfsPfaGz3R887m1vu9v3p5/bmKDmcnK7cDzdv1r3D5/W7i7X75dnjaeem1XN7ves75/yxeX50shPeHz9tvbSdL1/PT2bhhh1dr2x/vhxMu4df93ebL4/jz7dfVr947eTp4PHx5DZ43rvbGJ0t700Odu8Pwln18hqJ1c6G/7mz03h57kWvzep4NNyZNj+/tD72v+xWe3vuUefoaLa83PCQ+O54/a3bW3/Ffz29+2g3ZyfTFhK8053+6VVjY3U8HV59uT+fNPbOZyujL5Ovx9eHq+c3+18/3rSvo6Qxu5727JXhdfP1cPns5OJiNnnc3llunHjN5c9Xa9PL0WDHWY3Xl29Ww+fh1+vB8W7r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", | |
| 5 | 5 | "base64", |
| 6 | 6 | ) |
| … | … | @@ -0,0 +1,4 @@ |
| 1 | const n = require("b4a") | |
| 2 | exports.helpers = n.from( | |
| 3 | "\nconst {\n contract: {\n hyperschema: { getEnum: getContractEnum }\n }\n} = require('../../../schema/spec')\n\nconst BuildType = getContractEnum('@keet/build-type')\n\n// helpers\n\nfunction isValidBuildType(buildType, invBuildType) {\n const deviceBuildType = buildType || BuildType.Production\n const invitationBuildType = invBuildType || BuildType.Production\n return deviceBuildType === invitationBuildType\n}\n\nmodule.exports = {\n isValidBuildType\n}\n", | |
| 4 | ) |
| … | … | @@ -5,6 +5,6 @@ const { |
| 5 | 5 | } = require("../../../schema/spec"), |
| 6 | 6 | t = e("@keet/build-type") |
| 7 | 7 | function c(e, c) { |
| 8 | return !(e !== t.Production || c) || e === c | |
| 8 | return (e || t.Production) === (c || t.Production) | |
| 9 | 9 | } |
| 10 | 10 | module.exports = { isValidBuildType: c } |
| … | … | @@ -1,47 +1,50 @@ |
| 1 | 1 | const e = require("b4a"), |
| 2 | t = require("compact-encoding"), | |
| 3 | { ProofEncoding: i } = require("keet-identity-key/lib/encoding"), | |
| 2 | 4 | { |
| 3 | 5 | contract: { |
| 4 | hyperschema: { encode: t }, | |
| 6 | hyperschema: { encode: a }, | |
| 5 | 7 | }, |
| 6 | 8 | } = require("../../../../schema/spec"), |
| 7 | 9 | { |
| 8 | verifyAttestation: i, | |
| 9 | verifyDeviceResponse: a, | |
| 10 | decryptContactRequest: s, | |
| 11 | generateMailboxKeyPair: r, | |
| 12 | generateRoomCapabilities: o, | |
| 10 | verifyAttestation: s, | |
| 11 | verifyDeviceResponse: r, | |
| 12 | decryptContactRequest: o, | |
| 13 | generateMailboxKeyPair: n, | |
| 14 | generateRoomCapabilities: d, | |
| 15 | verifyIdentityProofs: c, | |
| 13 | 16 | } = require("../../invitations"), |
| 14 | n = require("../registration"), | |
| 15 | { KeetContractError: c } = require("../errors"), | |
| 16 | { isMemberActive: d, getMemberForDeviceKey: y } = require("../query"), | |
| 17 | y = require("../registration"), | |
| 18 | { KeetContractError: l } = require("../errors"), | |
| 19 | { isMemberActive: u, getMemberForDeviceKey: k } = require("../query"), | |
| 17 | 20 | { |
| 18 | profileRoomStats: l, | |
| 19 | profileContactStats: u, | |
| 20 | profileContactRequestStats: m, | |
| 21 | profileRoomStats: m, | |
| 22 | profileContactStats: v, | |
| 23 | profileContactRequestStats: p, | |
| 21 | 24 | } = require("../stats/profile"), |
| 22 | { isValidBuildType: k } = require("../helpers"), | |
| 23 | p = ["isActive", "isFullyMuted", "isMentionsOnlyMuted", "isFavorite"], | |
| 24 | v = { IsActive: 1, IsFullyMuted: 2, IsMentionsOnlyMuted: 3, IsFavorite: 4 }, | |
| 25 | w = ["isBlocked"], | |
| 26 | f = { IsBlocked: 1 }, | |
| 27 | b = ["isPending", "isAccepted", "isRejected", "isDiscarded", "isSeen"], | |
| 28 | g = { IsPending: 1, IsAccepted: 2, IsRejected: 3, IsDiscarded: 4, IsSeen: 5 } | |
| 29 | async function K({ sharedRooms: e, blockedContacts: t }, { db: i, writer: a }) { | |
| 30 | const [s, r] = await Promise.all([y(i, a.key), i.get("@keet-private-id/counters")]) | |
| 31 | if (!d(s)) throw c.ABORT() | |
| 25 | { isValidBuildType: w } = require("../helpers"), | |
| 26 | f = ["isActive", "isFullyMuted", "isMentionsOnlyMuted", "isFavorite", "isUnread"], | |
| 27 | b = { IsActive: 1, IsFullyMuted: 2, IsMentionsOnlyMuted: 3, IsFavorite: 4, IsUnread: 5 }, | |
| 28 | g = ["isBlocked"], | |
| 29 | K = { IsBlocked: 1 }, | |
| 30 | h = ["isPending", "isAccepted", "isRejected", "isDiscarded", "isSeen"], | |
| 31 | A = { IsPending: 1, IsAccepted: 2, IsRejected: 3, IsDiscarded: 4, IsSeen: 5 } | |
| 32 | async function R({ sharedRooms: e, blockedContacts: t }, { db: i, writer: a }) { | |
| 33 | const [s, r] = await Promise.all([k(i, a.key), i.get("@keet-private-id/counters")]) | |
| 34 | if (!u(s)) throw l.ABORT() | |
| 32 | 35 | for (let t = 0; t < e.length; t++) { |
| 33 | const { roomKey: a, initiator: s, fastForwardTo: r, encryptionKey: n, seed: c } = e[t], | |
| 34 | d = { | |
| 36 | const { roomKey: a, initiator: s, fastForwardTo: r, encryptionKey: o, seed: n } = e[t], | |
| 37 | c = { | |
| 35 | 38 | roomKey: a, |
| 36 | encryptionKey: n, | |
| 37 | mailbox: o(a, c).mailboxKeyPair.publicKey, | |
| 39 | encryptionKey: o, | |
| 40 | mailbox: d(a, n).mailboxKeyPair.publicKey, | |
| 38 | 41 | clock: t + 1, |
| 39 | 42 | status: { isActive: !0, isFullyMuted: !1, isMentionsOnlyMuted: !1 }, |
| 40 | 43 | initiator: s, |
| 41 | 44 | fastForwardTo: r, |
| 42 | 45 | identitySwap: null, |
| 43 | 46 | } |
| 44 | await i.insert("@keet-private-id/rooms", d) | |
| 47 | await i.insert("@keet-private-id/rooms", c) | |
| 45 | 48 | } |
| 46 | 49 | for (let e = 0; e < t.length; e++) { |
| 47 | 50 | const a = r ? r.contacts + 1 : 0, |
| … | … | @@ -49,204 +52,225 @@ async function K({ sharedRooms: e, blockedContacts: t }, { db: i, writer: a }) { |
| 49 | 52 | await i.insert("@keet-private-id/contacts", s) |
| 50 | 53 | } |
| 51 | 54 | } |
| 52 | async function A({ identity: t }, { db: i, writer: a }) { | |
| 53 | const [s, r] = await Promise.all([y(i, a.key), i.get("@keet-private-id/identity")]) | |
| 54 | if (!d(s) || !r || !e.equals(t.publicKey, r.publicKey)) throw c.ABORT() | |
| 55 | async function O({ deviceKey: a, deviceProof: s, writerProof: r }, { db: o, writer: n }) { | |
| 56 | const [d, y] = await Promise.all([ | |
| 57 | k(o, n.key), | |
| 58 | o.get("@keet-private-id/device-identities", { deviceKey: a }), | |
| 59 | ]) | |
| 60 | if (!u(d)) throw l.ABORT() | |
| 61 | if (!y) throw l.ABORT() | |
| 62 | const m = t.decode(i, y.deviceProof), | |
| 63 | v = t.decode(i, s) | |
| 64 | if (!e.equals(m.identity, v.identity)) throw l.ABORT() | |
| 65 | if (v.chain.length >= m.chain.length) throw l.ABORT() | |
| 66 | const p = m.chain[m.chain.length - 1].publicKey, | |
| 67 | w = { ...y.privateProfileIdentity, proof: r }, | |
| 68 | f = { publicKey: m.identity, writerKey: y.deviceKey, devicePublicKey: p } | |
| 69 | if (!c(f, { deviceProof: s, privateProfileIdentity: w })) throw l.ABORT() | |
| 70 | await o.insert("@keet-private-id/device-identities", { | |
| 71 | deviceKey: y.deviceKey, | |
| 72 | privateProfileIdentity: w, | |
| 73 | deviceProof: s, | |
| 74 | }) | |
| 75 | } | |
| 76 | async function T({ identity: t }, { db: i, writer: a }) { | |
| 77 | const [s, r] = await Promise.all([k(i, a.key), i.get("@keet-private-id/identity")]) | |
| 78 | if (!u(s) || !r || !e.equals(t.publicKey, r.publicKey)) throw l.ABORT() | |
| 55 | 79 | ;(t.discoveryCoreKey && (r.discoveryCoreKey = t.discoveryCoreKey), |
| 56 | 80 | await i.insert("@keet-private-id/identity", r)) |
| 57 | 81 | } |
| 58 | async function R({ key: e, settings: t }, { db: i, writer: a }) { | |
| 59 | const [s, r] = await Promise.all([y(i, a.key), i.get("@keet-private-id/settings")]) | |
| 60 | if (!d(s)) throw c.ABORT() | |
| 82 | async function B({ key: e, settings: t }, { db: i, writer: a }) { | |
| 83 | const [s, r] = await Promise.all([k(i, a.key), i.get("@keet-private-id/settings")]) | |
| 84 | if (!u(s)) throw l.ABORT() | |
| 61 | 85 | const o = { ...r, [e]: t[e] } |
| 62 | 86 | await i.insert("@keet-private-id/settings", o) |
| 63 | 87 | } |
| 64 | async function h({ invitation: e }, { db: t, writer: i }) { | |
| 65 | const [a, s] = await Promise.all([y(t, i.key), t.get("@keet/system-digest")]) | |
| 66 | if (!d(a)) throw c.ABORT() | |
| 88 | async function P({ invitation: e }, { db: t, writer: i }) { | |
| 89 | const [a, s] = await Promise.all([k(t, i.key), t.get("@keet/system-digest")]) | |
| 90 | if (!u(a)) throw l.ABORT() | |
| 67 | 91 | const r = s.settings.buildType, |
| 68 | 92 | o = e.buildType |
| 69 | if (!k(r, o)) throw c.INVALID_BUILD_TYPE() | |
| 93 | if (!w(r, o)) throw l.INVALID_BUILD_TYPE() | |
| 70 | 94 | await t.insert("@keet-private-id/pending-invitations", e) |
| 71 | 95 | } |
| 72 | async function O({ id: e }, { db: t, writer: i }) { | |
| 73 | const a = await y(t, i.key) | |
| 74 | if (!d(a)) throw c.ABORT() | |
| 96 | async function q({ id: e }, { db: t, writer: i }) { | |
| 97 | const a = await k(t, i.key) | |
| 98 | if (!u(a)) throw l.ABORT() | |
| 75 | 99 | await t.delete("@keet-private-id/pending-invitations", { id: e }) |
| 76 | 100 | } |
| 77 | async function T({ blindResponse: t }, { db: i, writer: s, hostcalls: o }) { | |
| 78 | const n = await i.get("@keet/room-capabilities") | |
| 79 | if (!n) throw c.ABORT() | |
| 101 | async function x({ blindResponse: t }, { db: i, writer: a, hostcalls: s }) { | |
| 102 | const o = await i.get("@keet/room-capabilities") | |
| 103 | if (!o) throw l.ABORT() | |
| 80 | 104 | let d = null |
| 81 | 105 | try { |
| 82 | const e = r(o.key, n.seed) | |
| 83 | d = a(e, t) | |
| 106 | const e = n(s.key, o.seed) | |
| 107 | d = r(e, t) | |
| 84 | 108 | } catch (e) { |
| 85 | throw c.ABORT() | |
| 109 | throw l.ABORT() | |
| 86 | 110 | } |
| 87 | if (!d) throw c.ABORT() | |
| 88 | const { id: y, response: u } = d, | |
| 89 | { roomKeys: m } = u | |
| 90 | if (!m.key || !m.encryptionKey) throw c.ABORT() | |
| 91 | const [k, p, v, w] = await Promise.all([ | |
| 92 | i.get("@keet-private-id/pending-invitations", { id: y }), | |
| 93 | i.get("@keet-private-id/rooms", { roomKey: m.key }), | |
| 111 | if (!d) throw l.ABORT() | |
| 112 | const { id: c, response: y } = d, | |
| 113 | { roomKeys: u } = y | |
| 114 | if (!u.key || !u.encryptionKey) throw l.ABORT() | |
| 115 | const [k, v, p, w] = await Promise.all([ | |
| 116 | i.get("@keet-private-id/pending-invitations", { id: c }), | |
| 117 | i.get("@keet-private-id/rooms", { roomKey: u.key }), | |
| 94 | 118 | i.get("@keet-private-id/counters"), |
| 95 | 119 | i.get("@keet/system-digest"), |
| 96 | 120 | ]) |
| 97 | if (!k) throw c.ABORT() | |
| 98 | const f = v ? v.rooms + 1 : 0, | |
| 99 | b = p | |
| 100 | let g = p | |
| 121 | if (!k) throw l.ABORT() | |
| 122 | const f = p ? p.rooms + 1 : 0, | |
| 123 | b = v | |
| 124 | let g = v | |
| 101 | 125 | if ( |
| 102 | 126 | (g |
| 103 | 127 | ? (!g.status.isActive || w.abi.version >= 12) && |
| 104 | 128 | ((g.clock = f), (g.status.isActive = !0), (g.status.isReadOnly = !1)) |
| 105 | 129 | : (g = { |
| 106 | 130 | clock: f, |
| 107 | roomKey: m.key, | |
| 108 | encryptionKey: m.encryptionKey, | |
| 109 | fastForwardTo: m.fastForwardTo, | |
| 131 | roomKey: u.key, | |
| 132 | encryptionKey: u.encryptionKey, | |
| 133 | fastForwardTo: u.fastForwardTo, | |
| 110 | 134 | status: { isActive: !0, isReadOnly: !1 }, |
| 111 | 135 | initiator: k.initiator, |
| 112 | 136 | mailbox: k.mailbox, |
| 113 | 137 | identitySwapV2: k.identity, |
| 114 | 138 | }), |
| 115 | 139 | await i.insert("@keet-private-id/rooms", g), |
| 116 | await l(i, g, b), | |
| 140 | await m(i, g, b), | |
| 117 | 141 | w.abi.version < 11) |
| 118 | 142 | ) |
| 119 | await i.delete("@keet-private-id/pending-invitations", { id: y }) | |
| 143 | await i.delete("@keet-private-id/pending-invitations", { id: c }) | |
| 120 | 144 | else |
| 121 | 145 | for await (const t of i.find("@keet-private-id/pending-invitations")) |
| 122 | 146 | e.equals(t.mailbox, g.mailbox) && (await i.delete("@keet-private-id/pending-invitations", t)) |
| 123 | await o.ackWriter(s.key) | |
| 147 | await s.ackWriter(a.key) | |
| 124 | 148 | } |
| 125 | async function B({ header: e, ...t }, { db: i, writer: a }) { | |
| 126 | const [s, r, o, n, u] = await Promise.all([ | |
| 127 | y(i, a.key), | |
| 149 | async function I({ header: e, ...t }, { db: i, writer: a }) { | |
| 150 | const [s, r, o, n, d] = await Promise.all([ | |
| 151 | k(i, a.key), | |
| 128 | 152 | i.get("@keet-private-id/rooms", { roomKey: t.roomKey }), |
| 129 | 153 | i.get("@keet-private-id/stats"), |
| 130 | 154 | i.get("@keet-private-id/counters"), |
| 131 | 155 | i.get("@keet/system-digest"), |
| 132 | 156 | ]) |
| 133 | if (!u || !d(s)) throw c.ABORT() | |
| 134 | const m = r | |
| 135 | let k = 0 | |
| 136 | u.abi.version < 10 ? (r ? (k = r.clock) : o && (k = o.rooms + 1)) : n && (k = n.rooms + 1) | |
| 137 | let p = r?.status.isReadOnly | |
| 138 | !p && t.isReadOnly && (p = !0) | |
| 139 | const v = { ...t, clock: k, status: { isActive: !0, isReadOnly: p }, contact: t.dm } | |
| 140 | ;(await i.insert("@keet-private-id/rooms", v), await l(i, v, m)) | |
| 157 | if (!d || !u(s)) throw l.ABORT() | |
| 158 | const c = r | |
| 159 | let y = 0 | |
| 160 | d.abi.version < 10 ? (r ? (y = r.clock) : o && (y = o.rooms + 1)) : n && (y = n.rooms + 1) | |
| 161 | let v = r?.status.isReadOnly | |
| 162 | !v && t.isReadOnly && (v = !0) | |
| 163 | const p = { ...t, clock: y, status: { isActive: !0, isReadOnly: v }, contact: t.dm } | |
| 164 | ;(await i.insert("@keet-private-id/rooms", p), await m(i, p, c)) | |
| 141 | 165 | } |
| 142 | async function q({ roomKey: e }, { db: t, writer: i }) { | |
| 143 | const a = await y(t, i.key) | |
| 144 | if (d(a)) return t.delete("@keet-private-id/rooms", { roomKey: e }) | |
| 166 | async function S({ roomKey: e }, { db: t, writer: i }) { | |
| 167 | const a = await k(t, i.key) | |
| 168 | if (u(a)) return t.delete("@keet-private-id/rooms", { roomKey: e }) | |
| 145 | 169 | } |
| 146 | async function P({ header: t, roomKey: i, key: a, status: s }, { db: r, writer: o }) { | |
| 147 | const [n, u, m, k] = await Promise.all([ | |
| 148 | y(r, o.key), | |
| 170 | async function M({ header: t, roomKey: i, key: a, status: s }, { db: r, writer: o }) { | |
| 171 | const [n, d, c, y] = await Promise.all([ | |
| 172 | k(r, o.key), | |
| 149 | 173 | r.get("@keet-private-id/rooms", { roomKey: i }), |
| 150 | 174 | r.get("@keet-private-id/counters"), |
| 151 | 175 | r.get("@keet/system-digest"), |
| 152 | 176 | ]) |
| 153 | if (!d(n) || !u) throw c.ABORT() | |
| 154 | if (!L(a)) throw c.ABORT() | |
| 155 | const p = u, | |
| 156 | v = E(a), | |
| 157 | w = m.rooms + 1 | |
| 177 | if (!u(n) || !d) throw l.ABORT() | |
| 178 | if (!N(a)) throw l.ABORT() | |
| 179 | const v = d, | |
| 180 | p = _(a), | |
| 181 | w = c.rooms + 1 | |
| 158 | 182 | if ( |
| 159 | ((u.status = { ...u.status, [v]: s[v] }), | |
| 160 | (u.clock = w), | |
| 161 | !u.status.isActive && k.abi.version >= 12) | |
| 183 | ((d.status = { ...d.status, [p]: s[p] }), | |
| 184 | (d.clock = w), | |
| 185 | !d.status.isActive && y.abi.version >= 12) | |
| 162 | 186 | ) |
| 163 | 187 | for await (const t of r.find("@keet-private-id/pending-invitations")) |
| 164 | e.equals(t.mailbox, u.mailbox) && (await r.delete("@keet-private-id/pending-invitations", t)) | |
| 165 | ;(await r.insert("@keet-private-id/rooms", u), await l(r, u, p)) | |
| 188 | e.equals(t.mailbox, d.mailbox) && (await r.delete("@keet-private-id/pending-invitations", t)) | |
| 189 | ;(await r.insert("@keet-private-id/rooms", d), await m(r, d, v)) | |
| 166 | 190 | } |
| 167 | async function x( | |
| 191 | async function C( | |
| 168 | 192 | { contact: { memberKey: e, mailbox: t, roomKey: i, status: a } }, |
| 169 | 193 | { db: s, writer: r }, |
| 170 | 194 | ) { |
| 171 | const [o, n, l] = await Promise.all([ | |
| 172 | y(s, r.key), | |
| 195 | const [o, n, d] = await Promise.all([ | |
| 196 | k(s, r.key), | |
| 173 | 197 | s.get("@keet-private-id/contacts", { memberKey: e }), |
| 174 | 198 | s.get("@keet-private-id/counters"), |
| 175 | 199 | ]) |
| 176 | if (!d(o)) throw c.ABORT() | |
| 177 | const m = n, | |
| 178 | k = l ? l.contacts + 1 : 0 | |
| 179 | let p = n | |
| 180 | ;(p | |
| 181 | ? ((p.mailbox = t), (p.status = a), (p.clock = k)) | |
| 182 | : (p = { memberKey: e, mailbox: t, status: a, clock: k }), | |
| 183 | await s.insert("@keet-private-id/contacts", p), | |
| 184 | await u(s, p, m)) | |
| 200 | if (!u(o)) throw l.ABORT() | |
| 201 | const c = n, | |
| 202 | y = d ? d.contacts + 1 : 0 | |
| 203 | let m = n | |
| 204 | ;(m | |
| 205 | ? ((m.mailbox = t), (m.status = a), (m.clock = y)) | |
| 206 | : (m = { memberKey: e, mailbox: t, status: a, clock: y }), | |
| 207 | await s.insert("@keet-private-id/contacts", m), | |
| 208 | await v(s, m, c)) | |
| 185 | 209 | } |
| 186 | async function I({ memberKey: e, key: t, status: i }, { db: a, writer: s }) { | |
| 210 | async function F({ memberKey: e, key: t, status: i }, { db: a, writer: s }) { | |
| 187 | 211 | const [r, o, n] = await Promise.all([ |
| 188 | y(a, s.key), | |
| 212 | k(a, s.key), | |
| 189 | 213 | a.get("@keet-private-id/contacts", { memberKey: e }), |
| 190 | 214 | a.get("@keet-private-id/counters"), |
| 191 | 215 | ]) |
| 192 | if (!d(r) || !o) throw c.ABORT() | |
| 193 | if (!_(t)) throw c.ABORT() | |
| 194 | const l = o, | |
| 195 | m = W(t) | |
| 196 | ;((o.status = { ...o.status, [m]: i[m] }), | |
| 216 | if (!u(r) || !o) throw l.ABORT() | |
| 217 | if (!z(t)) throw l.ABORT() | |
| 218 | const d = o, | |
| 219 | c = Y(t) | |
| 220 | ;((o.status = { ...o.status, [c]: i[c] }), | |
| 197 | 221 | (o.clock = n ? n.contacts + 1 : 0), |
| 198 | 222 | await a.insert("@keet-private-id/contacts", o), |
| 199 | await u(a, o, l)) | |
| 223 | await v(a, o, d)) | |
| 200 | 224 | } |
| 201 | async function S({ memberKey: e }, { db: t, writer: i }) { | |
| 225 | async function D({ memberKey: e }, { db: t, writer: i }) { | |
| 202 | 226 | const [a, s] = await Promise.all([ |
| 203 | y(t, i.key), | |
| 227 | k(t, i.key), | |
| 204 | 228 | t.get("@keet-private-id/contacts", { memberKey: e }), |
| 205 | 229 | ]) |
| 206 | if (!d(a) || !s) throw c.ABORT | |
| 230 | if (!u(a) || !s) throw l.ABORT | |
| 207 | 231 | await t.delete("@keet-private-id/contacts", s) |
| 208 | 232 | } |
| 209 | async function M({ blindRequest: e, header: a }, { db: o, hostcalls: n, writer: d }) { | |
| 210 | const y = await o.get("@keet/room-capabilities") | |
| 211 | if (!y) throw c.ABORT() | |
| 212 | let l = null | |
| 233 | async function j({ blindRequest: e, header: t }, { db: i, hostcalls: r, writer: d }) { | |
| 234 | const c = await i.get("@keet/room-capabilities") | |
| 235 | if (!c) throw l.ABORT() | |
| 236 | let y = null | |
| 213 | 237 | try { |
| 214 | const t = r(n.key, y.seed) | |
| 215 | l = s(t, e) | |
| 238 | const t = n(r.key, c.seed) | |
| 239 | y = o(t, e) | |
| 216 | 240 | } catch (e) { |
| 217 | throw c.ABORT() | |
| 241 | throw l.ABORT() | |
| 218 | 242 | } |
| 219 | if (!l) throw c.ABORT() | |
| 220 | const { body: u, attestation: k } = l, | |
| 221 | { sender: p, keys: v, mailbox: w, message: f } = u, | |
| 243 | if (!y) throw l.ABORT() | |
| 244 | const { body: u, attestation: k } = y, | |
| 245 | { sender: m, keys: v, mailbox: w, message: f } = u, | |
| 222 | 246 | [b, g, K] = await Promise.all([ |
| 223 | o.get("@keet-private-id/contacts", { memberKey: p.attestation.memberKey }), | |
| 224 | o.get("@keet-private-id/stats"), | |
| 225 | o.get("@keet/system-digest"), | |
| 247 | i.get("@keet-private-id/contacts", { memberKey: m.attestation.memberKey }), | |
| 248 | i.get("@keet-private-id/stats"), | |
| 249 | i.get("@keet/system-digest"), | |
| 226 | 250 | ]) |
| 227 | if (b && b.status.isBlocked) throw c.ABORT() | |
| 228 | if (b && b.roomKey && K.abi.version < 12) throw c.ABORT() | |
| 229 | const A = t("@keet-private-id/contact-request-body", u), | |
| 230 | R = t("@keet/member-profile", p.profile) | |
| 231 | if (!i(k, A)) throw c.ABORT() | |
| 232 | if (!i(p.attestation, R)) throw c.ABORT() | |
| 233 | let h = !0 | |
| 234 | const O = a.timestamp, | |
| 235 | T = o.find("@keet-private-id/pending-contact-requests-by-member", { | |
| 236 | gte: { memberKey: p.attestation.memberKey }, | |
| 237 | lte: { memberKey: p.attestation.memberKey }, | |
| 251 | if (b && b.status.isBlocked) throw l.ABORT() | |
| 252 | if (b && b.roomKey && K.abi.version < 12) throw l.ABORT() | |
| 253 | const h = a("@keet-private-id/contact-request-body", u), | |
| 254 | A = a("@keet/member-profile", m.profile) | |
| 255 | if (!s(k, h)) throw l.ABORT() | |
| 256 | if (!s(m.attestation, A)) throw l.ABORT() | |
| 257 | let R = !0 | |
| 258 | const O = t.timestamp, | |
| 259 | T = i.find("@keet-private-id/pending-contact-requests-by-member", { | |
| 260 | gte: { memberKey: m.attestation.memberKey }, | |
| 261 | lte: { memberKey: m.attestation.memberKey }, | |
| 238 | 262 | }) |
| 239 | 263 | for await (const e of T) |
| 240 | 264 | e.sentAt > O |
| 241 | ? (h = !1) | |
| 265 | ? (R = !1) | |
| 242 | 266 | : ((e.status.isPending = !1), |
| 243 | 267 | (e.status.isDiscarded = !0), |
| 244 | await o.insert("@keet-private-id/contact-requests-v2", e)) | |
| 245 | if (!h) return | |
| 268 | await i.insert("@keet-private-id/contact-requests-v2", e)) | |
| 269 | if (!R) return | |
| 246 | 270 | const B = g?.contactRequests || 0, |
| 247 | q = { | |
| 248 | memberKey: p.attestation.memberKey, | |
| 249 | sender: p.profile, | |
| 271 | P = { | |
| 272 | memberKey: m.attestation.memberKey, | |
| 273 | sender: m.profile, | |
| 250 | 274 | status: { isPending: !0 }, |
| 251 | 275 | clock: B, |
| 252 | 276 | keys: v, |
| … | … | @@ -254,24 +278,24 @@ async function M({ blindRequest: e, header: a }, { db: o, hostcalls: n, writer: |
| 254 | 278 | message: f, |
| 255 | 279 | sentAt: O, |
| 256 | 280 | } |
| 257 | ;(await o.insert("@keet-private-id/contact-requests-v2", q), | |
| 258 | await m(o, q, null), | |
| 259 | await n.ackWriter(d.key)) | |
| 281 | ;(await i.insert("@keet-private-id/contact-requests-v2", P), | |
| 282 | await p(i, P, null), | |
| 283 | await r.ackWriter(d.key)) | |
| 260 | 284 | } |
| 261 | async function C({ memberKey: e, roomKey: t, key: i, status: a }, { db: s, writer: r }) { | |
| 262 | if (!t) throw c.ABORT() | |
| 263 | const [o, n, m] = await Promise.all([ | |
| 264 | y(s, r.key), | |
| 285 | async function E({ memberKey: e, roomKey: t, key: i, status: a }, { db: s, writer: r }) { | |
| 286 | if (!t) throw l.ABORT() | |
| 287 | const [o, n, d] = await Promise.all([ | |
| 288 | k(s, r.key), | |
| 265 | 289 | s.get("@keet-private-id/contact-requests-v2", { memberKey: e, keys: { key: t } }), |
| 266 | 290 | s.get("@keet-private-id/counters"), |
| 267 | 291 | ]) |
| 268 | if (!d(o) || !n) throw c.ABORT() | |
| 269 | if (!U(i)) throw c.ABORT() | |
| 270 | const k = N(i), | |
| 271 | p = n.sender, | |
| 272 | v = !n.status.isAccepted && i === g.IsAccepted, | |
| 273 | w = i === g.IsSeen | |
| 274 | if (!w && n.status.isAccepted) throw c.ABORT() | |
| 292 | if (!u(o) || !n) throw l.ABORT() | |
| 293 | if (!H(i)) throw l.ABORT() | |
| 294 | const c = G(i), | |
| 295 | y = n.sender, | |
| 296 | p = !n.status.isAccepted && i === A.IsAccepted, | |
| 297 | w = i === A.IsSeen | |
| 298 | if (!w && n.status.isAccepted) throw l.ABORT() | |
| 275 | 299 | const f = { |
| 276 | 300 | isPending: !1, |
| 277 | 301 | isAccepted: !1, |
| … | … | @@ -281,74 +305,75 @@ async function C({ memberKey: e, roomKey: t, key: i, status: a }, { db: s, write |
| 281 | 305 | }, |
| 282 | 306 | b = w ? n.status : f |
| 283 | 307 | if ( |
| 284 | ((n.status = { ...b, [k]: a[k] }), | |
| 308 | ((n.status = { ...b, [c]: a[c] }), | |
| 285 | 309 | (n.status.isAccepted || n.status.isRejected || n.status.isDiscarded) && |
| 286 | 310 | (n.status.isPending = !1), |
| 287 | 311 | await s.insert("@keet-private-id/contact-requests-v2", n), |
| 288 | !v) | |
| 312 | !p) | |
| 289 | 313 | ) |
| 290 | 314 | return |
| 291 | const K = (m?.rooms || 0) + 1, | |
| 292 | A = (m?.contacts || 0) + 1, | |
| 293 | R = { | |
| 294 | clock: K, | |
| 315 | const g = (d?.rooms || 0) + 1, | |
| 316 | K = (d?.contacts || 0) + 1, | |
| 317 | h = { | |
| 318 | clock: g, | |
| 295 | 319 | roomKey: n.keys.key, |
| 296 | 320 | encryptionKey: n.keys.encryptionKey, |
| 297 | 321 | mailbox: n.mailbox, |
| 298 | 322 | status: { isActive: !0 }, |
| 299 | 323 | }, |
| 300 | h = { memberKey: n.memberKey, mailbox: p.mailbox, clock: A, status: { isBlocked: !1 } } | |
| 301 | ;(await s.insert("@keet-private-id/rooms", R), | |
| 302 | await l(s, R, null), | |
| 303 | await s.insert("@keet-private-id/contacts", h), | |
| 304 | await u(s, h, null)) | |
| 324 | R = { memberKey: n.memberKey, mailbox: y.mailbox, clock: K, status: { isBlocked: !1 } } | |
| 325 | ;(await s.insert("@keet-private-id/rooms", h), | |
| 326 | await m(s, h, null), | |
| 327 | await s.insert("@keet-private-id/contacts", R), | |
| 328 | await v(s, R, null)) | |
| 305 | 329 | } |
| 306 | async function F({ memberKey: e }, { db: t, writer: i }) {} | |
| 307 | async function D({ key: e }, { db: t, writer: i }) { | |
| 308 | const a = await y(t, i.key) | |
| 309 | if (!d(a)) throw c.ABORT() | |
| 330 | async function U({ memberKey: e }, { db: t, writer: i }) {} | |
| 331 | async function V({ key: e }, { db: t, writer: i }) { | |
| 332 | const a = await k(t, i.key) | |
| 333 | if (!u(a)) throw l.ABORT() | |
| 310 | 334 | await t.insert("@keet-private-id/unreads-v2", { deviceKey: i.key, key: e }) |
| 311 | 335 | } |
| 312 | async function j({ key: e }, { db: t, writer: i }) { | |
| 313 | const a = await y(t, i.key) | |
| 314 | if (!d(a)) throw c.ABORT() | |
| 336 | async function L({ key: e }, { db: t, writer: i }) { | |
| 337 | const a = await k(t, i.key) | |
| 338 | if (!u(a)) throw l.ABORT() | |
| 315 | 339 | await t.delete("@keet-private-id/unreads-v2", { deviceKey: i.key, key: e }) |
| 316 | 340 | } |
| 317 | function V(e) { | |
| 318 | ;(e.add("@keet-private-id/run-v3-migration", K), | |
| 319 | e.add("@keet-private-id/update-identity", A), | |
| 320 | e.add("@keet-private-id/update-settings", R), | |
| 321 | e.add("@keet-private-id/add-room", B), | |
| 322 | e.add("@keet-private-id/remove-room", q), | |
| 323 | e.add("@keet-private-id/update-room-status", P), | |
| 324 | e.add("@keet-private-id/add-pending-invitation", h), | |
| 325 | e.add("@keet-private-id/remove-pending-invitation", O), | |
| 326 | e.add("@keet-private-id/resolve-pending-invitation", T), | |
| 327 | e.add("@keet-private-id/add-contact", x), | |
| 328 | e.add("@keet-private-id/update-contact-status", I), | |
| 329 | e.add("@keet-private-id/remove-contact", S), | |
| 330 | e.add("@keet-private-id/add-contact-request", M), | |
| 331 | e.add("@keet-private-id/update-contact-request-status", C), | |
| 332 | e.add("@keet-private-id/activate-contact-room", F), | |
| 333 | e.add("@keet-private-id/add-unreads-key", D), | |
| 334 | e.add("@keet-private-id/remove-unreads-key", j)) | |
| 335 | } | |
| 336 | function E(e) { | |
| 337 | return p[e - 1] | |
| 338 | } | |
| 339 | function L(e) { | |
| 340 | return e >= 1 && e <= p.length | |
| 341 | } | |
| 342 | 341 | function W(e) { |
| 343 | return w[e - 1] | |
| 342 | ;(e.add("@keet-private-id/run-v3-migration", R), | |
| 343 | e.add("@keet-private-id/shorten-device-attestation", O), | |
| 344 | e.add("@keet-private-id/update-identity", T), | |
| 345 | e.add("@keet-private-id/update-settings", B), | |
| 346 | e.add("@keet-private-id/add-room", I), | |
| 347 | e.add("@keet-private-id/remove-room", S), | |
| 348 | e.add("@keet-private-id/update-room-status", M), | |
| 349 | e.add("@keet-private-id/add-pending-invitation", P), | |
| 350 | e.add("@keet-private-id/remove-pending-invitation", q), | |
| 351 | e.add("@keet-private-id/resolve-pending-invitation", x), | |
| 352 | e.add("@keet-private-id/add-contact", C), | |
| 353 | e.add("@keet-private-id/update-contact-status", F), | |
| 354 | e.add("@keet-private-id/remove-contact", D), | |
| 355 | e.add("@keet-private-id/add-contact-request", j), | |
| 356 | e.add("@keet-private-id/update-contact-request-status", E), | |
| 357 | e.add("@keet-private-id/activate-contact-room", U), | |
| 358 | e.add("@keet-private-id/add-unreads-key", V), | |
| 359 | e.add("@keet-private-id/remove-unreads-key", L)) | |
| 344 | 360 | } |
| 345 | 361 | function _(e) { |
| 346 | return e >= 1 && e <= w.length | |
| 362 | return f[e - 1] | |
| 347 | 363 | } |
| 348 | 364 | function N(e) { |
| 349 | return b[e - 1] | |
| 365 | return e >= 1 && e <= f.length | |
| 366 | } | |
| 367 | function Y(e) { | |
| 368 | return g[e - 1] | |
| 369 | } | |
| 370 | function z(e) { | |
| 371 | return e >= 1 && e <= g.length | |
| 372 | } | |
| 373 | function G(e) { | |
| 374 | return h[e - 1] | |
| 350 | 375 | } |
| 351 | function U(e) { | |
| 352 | return e >= 1 && e <= b.length | |
| 376 | function H(e) { | |
| 377 | return e >= 1 && e <= h.length | |
| 353 | 378 | } |
| 354 | module.exports = { [n]: V, RoomStatus: v, ContactStatus: f, ContactRequestStatus: g } | |
| 379 | module.exports = { [y]: W, RoomStatus: b, ContactStatus: K, ContactRequestStatus: A } |
| … | … | @@ -246,12 +246,12 @@ async function P({ invitation: e }, { db: t, writer: i, hostcalls: a }) { |
| 246 | 246 | t.insert("@keet/invitations", e) |
| 247 | 247 | ) |
| 248 | 248 | } |
| 249 | async function x({ id: e }, { db: t, writer: i }) { | |
| 249 | async function E({ id: e }, { db: t, writer: i }) { | |
| 250 | 250 | const [a, s] = await Promise.all([u(t, i.key), t.get("@keet/invitations", { id: e })]) |
| 251 | 251 | if (!l(a) || !a.status.isModerator || !s) throw f.ABORT() |
| 252 | 252 | ;((s.isActive = !1), await t.insert("@keet/invitations", s)) |
| 253 | 253 | } |
| 254 | async function E({ deviceKey: e, fromDeviceKey: i }, { db: a, writer: s, hostcalls: r }) { | |
| 254 | async function x({ deviceKey: e, fromDeviceKey: i }, { db: a, writer: s, hostcalls: r }) { | |
| 255 | 255 | const [n, o, d] = await Promise.all([u(a, s.key), u(a, e), u(a, i)]) |
| 256 | 256 | if (!l(n)) throw f.ABORT() |
| 257 | 257 | if (!t.equals(n.key, o.key)) throw f.ABORT() |
| … | … | @@ -273,14 +273,14 @@ async function E({ deviceKey: e, fromDeviceKey: i }, { db: a, writer: s, hostcal |
| 273 | 273 | await a.insert("@keet/devices", c), |
| 274 | 274 | await a.insert("@keet/devices", m)) |
| 275 | 275 | } |
| 276 | async function D(e, { db: t, writer: i, hostcalls: a }) { | |
| 276 | async function _(e, { db: t, writer: i, hostcalls: a }) { | |
| 277 | 277 | const [s, r] = await Promise.all([t.get("@keet/devices", { key: i.key }), u(t, i.key)]) |
| 278 | 278 | if (!s.status.isActive || !l(r) || !r.status.canAdmin) throw f.ABORT() |
| 279 | 279 | ;(await a.addWriter(i.key, { indexer: !0 }), |
| 280 | 280 | (s.status.isIndexing = !0), |
| 281 | 281 | await t.insert("@keet/devices", s)) |
| 282 | 282 | } |
| 283 | async function _(e, { db: t, writer: i, hostcalls: a }) { | |
| 283 | async function D(e, { db: t, writer: i, hostcalls: a }) { | |
| 284 | 284 | const [s, r] = await Promise.all([t.get("@keet/devices", { key: i.key }), u(t, i.key)]) |
| 285 | 285 | if (!s.status.isActive || !l(r) || !r.status.canAdmin) throw f.ABORT() |
| 286 | 286 | ;(await a.addWriter(i.key, { indexer: !1 }), |
| … | … | @@ -310,7 +310,7 @@ async function W({ profile: e }, { db: i, writer: a }) { |
| 310 | 310 | if (!(r.status.isActive && l(s) && r && t.equals(r.key, a.key))) throw f.ABORT() |
| 311 | 311 | ;((r.profile = e), await i.insert("@keet/devices", r)) |
| 312 | 312 | } |
| 313 | async function j({ key: e }, { db: i, writer: a, hostcalls: s }) { | |
| 313 | async function L({ key: e }, { db: i, writer: a, hostcalls: s }) { | |
| 314 | 314 | const [r, n, o] = await Promise.all([ |
| 315 | 315 | u(i, a.key), |
| 316 | 316 | i.get("@keet/devices", { key: e }), |
| … | … | @@ -324,7 +324,7 @@ async function j({ key: e }, { db: i, writer: a, hostcalls: s }) { |
| 324 | 324 | await i.insert("@keet/devices", n), |
| 325 | 325 | await y(i, o, n, d)) |
| 326 | 326 | } |
| 327 | async function L({ memberKey: e, key: t, status: i }, { db: a, writer: s }) { | |
| 327 | async function j({ memberKey: e, key: t, status: i }, { db: a, writer: s }) { | |
| 328 | 328 | const [r, n] = await Promise.all([u(a, s.key), a.get("@keet/members", { key: e })]) |
| 329 | 329 | if (!l(r)) throw f.INACTIVE_MEMBER() |
| 330 | 330 | if (!n) throw f.TARGET_MEMBER_NOT_FOUND() |
| … | … | @@ -355,7 +355,7 @@ async function V({ key: e, isModerator: t, isAdmin: i }, { db: a, writer: s, hos |
| 355 | 355 | (o.status.isModerator = t || i), |
| 356 | 356 | await a.insert("@keet/members", o)) |
| 357 | 357 | } |
| 358 | async function C({ header: e, key: i }, { db: a, writer: s, hostcalls: r }) { | |
| 358 | async function Y({ header: e, key: i }, { db: a, writer: s, hostcalls: r }) { | |
| 359 | 359 | const [n, o, d, c, v] = await Promise.all([ |
| 360 | 360 | u(a, s.key), |
| 361 | 361 | a.get("@keet/members", { key: i }), |
| … | … | @@ -369,9 +369,8 @@ async function C({ header: e, key: i }, { db: a, writer: s, hostcalls: r }) { |
| 369 | 369 | if (!o) throw f.TARGET_MEMBER_NOT_FOUND() |
| 370 | 370 | const b = { ...o, status: { ...o.status } }, |
| 371 | 371 | p = t.equals(n.key, o.key), |
| 372 | A = n.status.isModerator, | |
| 373 | h = o.status.isAdmin | |
| 374 | if (!p && h) throw f.ABORT() | |
| 372 | A = n.status.isModerator | |
| 373 | if (o.status.isAdmin && !p) throw f.SELF_ONLY() | |
| 375 | 374 | if (!p && !A) throw f.MODERATORS_ONLY() |
| 376 | 375 | ;((o.status.isActive = !1), |
| 377 | 376 | (o.status.isModerator = !1), |
| … | … | @@ -391,23 +390,23 @@ async function C({ header: e, key: i }, { db: a, writer: s, hostcalls: r }) { |
| 391 | 390 | ) |
| 392 | 391 | return |
| 393 | 392 | if (d.abi.version >= 11 && d.settings.isMembershipEventsDisabled) return |
| 394 | const g = p ? { memberLeft: { memberKey: o.key } } : { memberRemoved: { memberKey: o.key } } | |
| 395 | await w(a, s, g, e.timestamp) | |
| 393 | const h = p ? { memberLeft: { memberKey: o.key } } : { memberRemoved: { memberKey: o.key } } | |
| 394 | await w(a, s, h, e.timestamp) | |
| 396 | 395 | } |
| 397 | function U(e) { | |
| 396 | function C(e) { | |
| 398 | 397 | ;(e.add("@keet/add-device", N), |
| 399 | 398 | e.add("@keet/update-device", W), |
| 400 | e.add("@keet/remove-device", j), | |
| 401 | e.add("@keet/start-indexing", D), | |
| 402 | e.add("@keet/stop-indexing", _), | |
| 399 | e.add("@keet/remove-device", L), | |
| 400 | e.add("@keet/start-indexing", _), | |
| 401 | e.add("@keet/stop-indexing", D), | |
| 403 | 402 | e.add("@keet/accept-join-request", q), |
| 404 | 403 | e.add("@keet/reject-join-request", I), |
| 405 | 404 | e.add("@keet/update-member", S), |
| 406 | 405 | e.add("@keet/change-member-role", V), |
| 407 | e.add("@keet/change-member-status", L), | |
| 408 | e.add("@keet/remove-member", C), | |
| 406 | e.add("@keet/change-member-status", j), | |
| 407 | e.add("@keet/remove-member", Y), | |
| 409 | 408 | e.add("@keet/add-invitation", P), |
| 410 | e.add("@keet/remove-invitation", x), | |
| 411 | e.add("@keet/move-indexer", E)) | |
| 409 | e.add("@keet/remove-invitation", E), | |
| 410 | e.add("@keet/move-indexer", x)) | |
| 412 | 411 | } |
| 413 | module.exports = { [b]: U, MemberStatus: h, addDevice: R, addMember: T } | |
| 412 | module.exports = { [b]: C, MemberStatus: h, addDevice: R, addMember: T } |
| … | … | @@ -4,8 +4,8 @@ const e = require("compact-encoding"), |
| 4 | 4 | ;(e.fixed32.preencode(i, d.deviceKey), |
| 5 | 5 | e.fixed32.preencode(i, d.noisePublicKey), |
| 6 | 6 | d.attestation |
| 7 | ? e.buffer.preencode(i, d.attestation) | |
| 8 | : (d.deviceName || d.identityDevicePublicKey) && e.buffer.preencode(i, null)) | |
| 7 | ? e.optionalBuffer.preencode(i, d.attestation) | |
| 8 | : (d.deviceName || d.identityDevicePublicKey) && e.optionalBuffer.preencode(i, null)) | |
| 9 | 9 | let c = 0 |
| 10 | 10 | ;(d.deviceName && (c |= 1), |
| 11 | 11 | d.identityDevicePublicKey && (c |= 2), |
| … | … | @@ -17,8 +17,8 @@ const e = require("compact-encoding"), |
| 17 | 17 | ;(e.fixed32.encode(i, d.deviceKey), |
| 18 | 18 | e.fixed32.encode(i, d.noisePublicKey), |
| 19 | 19 | d.attestation |
| 20 | ? e.buffer.encode(i, d.attestation) | |
| 21 | : (d.deviceName || d.identityDevicePublicKey) && e.buffer.encode(i, null)) | |
| 20 | ? e.optionalBuffer.encode(i, d.attestation) | |
| 21 | : (d.deviceName || d.identityDevicePublicKey) && e.optionalBuffer.encode(i, null)) | |
| 22 | 22 | let c = 0 |
| 23 | 23 | ;(d.deviceName && (c |= 1), |
| 24 | 24 | d.identityDevicePublicKey && (c |= 2), |
| … | … | @@ -30,7 +30,7 @@ const e = require("compact-encoding"), |
| 30 | 30 | const d = { |
| 31 | 31 | deviceKey: e.fixed32.decode(i), |
| 32 | 32 | noisePublicKey: e.fixed32.decode(i), |
| 33 | attestation: i.start < i.end ? e.buffer.decode(i) : null, | |
| 33 | attestation: i.start < i.end ? e.optionalBuffer.decode(i) : null, | |
| 34 | 34 | deviceName: null, |
| 35 | 35 | identityDevicePublicKey: null, |
| 36 | 36 | } |
| … | … | @@ -1,13 +1,14 @@ |
| 1 | 1 | const e = require("path"), |
| 2 | 2 | t = require("fs"), |
| 3 | 3 | a = require("hypercore-blob-server"), |
| 4 | i = require("ready-resource"), | |
| 5 | r = require("safety-catch"), | |
| 6 | l = require("hypercore-id-encoding"), | |
| 7 | { pipelinePromise: o, Readable: n } = require("streamx"), | |
| 8 | s = require("b4a"), | |
| 9 | c = 6048e5 | |
| 10 | module.exports = class extends i { | |
| 4 | i = require("hyperblobs"), | |
| 5 | r = require("ready-resource"), | |
| 6 | l = require("safety-catch"), | |
| 7 | o = require("hypercore-id-encoding"), | |
| 8 | { pipelinePromise: n, Readable: s } = require("streamx"), | |
| 9 | c = require("b4a"), | |
| 10 | d = 6048e5 | |
| 11 | module.exports = class extends r { | |
| 11 | 12 | constructor(e, t = {}) { |
| 12 | 13 | ;(super(), |
| 13 | 14 | (this.keet = e), |
| … | … | @@ -17,7 +18,7 @@ module.exports = class extends i { |
| 17 | 18 | resolve: this._resolveEncryptionKey.bind(this), |
| 18 | 19 | })), |
| 19 | 20 | (this._activeDownloads = new Map()), |
| 20 | (this._onerror = t.onerror || r), | |
| 21 | (this._onerror = t.onerror || l), | |
| 21 | 22 | this.ready().catch(this._onerror)) |
| 22 | 23 | } |
| 23 | 24 | _open() { |
| … | … | @@ -41,7 +42,8 @@ module.exports = class extends i { |
| 41 | 42 | ) |
| 42 | 43 | } |
| 43 | 44 | _getLinkOptions(e) { |
| 44 | if (!e.pointer.externalBlob && !e.pointer.externalDrive) throw new Error("Invalid file pointer") | |
| 45 | if (!e.pointer?.externalBlob && !e.pointer?.externalDrive) | |
| 46 | throw new Error("Invalid file pointer") | |
| 45 | 47 | return e.pointer.externalBlob |
| 46 | 48 | ? { |
| 47 | 49 | collection: "@local/blob-files", |
| … | … | @@ -58,14 +60,14 @@ module.exports = class extends i { |
| 58 | 60 | } |
| 59 | 61 | } |
| 60 | 62 | async _clearAllFiles(e, t, a, { leaving: i = !1 } = {}) { |
| 61 | const l = t ? "@local/blob-files" : "@local/drive-files", | |
| 63 | const r = t ? "@local/blob-files" : "@local/drive-files", | |
| 62 | 64 | o = t ? "@local/blob-files-by-room" : "@local/drive-files-by-room", |
| 63 | 65 | n = [] |
| 64 | 66 | for await (const t of e.find(o, { gte: { roomKey: a }, lte: { roomKey: a } })) { |
| 65 | 67 | if (t.cleared) continue |
| 66 | 68 | const { key: a, opts: o } = this._getLinkOptions(t.file), |
| 67 | 69 | s = this.server.clear(a, o) |
| 68 | ;(s.catch(r), n.push(s), i ? await e.delete(l, t) : await e.insert(l, { ...t, cleared: !0 })) | |
| 70 | ;(s.catch(l), n.push(s), i ? await e.delete(r, t) : await e.insert(r, { ...t, cleared: !0 })) | |
| 69 | 71 | } |
| 70 | 72 | return (await Promise.allSettled(n)) |
| 71 | 73 | .filter((e) => "fulfilled" === e.status) |
| … | … | @@ -77,8 +79,8 @@ module.exports = class extends i { |
| 77 | 79 | const i = [] |
| 78 | 80 | for (const e of a) { |
| 79 | 81 | const { key: t, opts: a } = this._getLinkOptions(e.file), |
| 80 | l = this.server.clear(t, a) | |
| 81 | ;(l.catch(r), i.push(l)) | |
| 82 | r = this.server.clear(t, a) | |
| 83 | ;(r.catch(l), i.push(r)) | |
| 82 | 84 | } |
| 83 | 85 | return { |
| 84 | 86 | recordsToClear: a, |
| … | … | @@ -89,7 +91,7 @@ module.exports = class extends i { |
| 89 | 91 | } |
| 90 | 92 | async _createFile(e, t, a) { |
| 91 | 93 | const i = { metadata: a, pointer: { externalBlob: { key: e.externalBlobs.key, blob: t } } } |
| 92 | i.metadata?.userdata && (i.metadata.userdata = s.from(i.metadata.userdata, "base64")) | |
| 94 | i.metadata?.userdata && (i.metadata.userdata = c.from(i.metadata.userdata, "base64")) | |
| 93 | 95 | const r = await this.keet.internalEnterLocalTransaction() |
| 94 | 96 | try { |
| 95 | 97 | const t = { |
| … | … | @@ -109,42 +111,42 @@ module.exports = class extends i { |
| 109 | 111 | async saveFile(a, i, r) { |
| 110 | 112 | this.opened || (await this.ready()) |
| 111 | 113 | const l = e.basename(i), |
| 112 | n = this.keet.internalOpenExistingRoom(a) | |
| 114 | o = this.keet.internalOpenExistingRoom(a) | |
| 113 | 115 | try { |
| 114 | 116 | await this.keet.internalBlobsActiveInRoom(a) |
| 115 | 117 | const e = t.createReadStream(i), |
| 116 | s = n.externalBlobs.createWriteStream(r) | |
| 117 | return (await o(e, s), this._createFile(n, s.id, { name: l, ...r })) | |
| 118 | s = o.externalBlobs.createWriteStream(r) | |
| 119 | return (await n(e, s), this._createFile(o, s.id, { name: l, ...r })) | |
| 118 | 120 | } finally { |
| 119 | this.keet.internalReleaseRoom(n) | |
| 121 | this.keet.internalReleaseRoom(o) | |
| 120 | 122 | } |
| 121 | 123 | } |
| 122 | subscribeAddFile(a, i, l = {}) { | |
| 124 | subscribeAddFile(a, i, r = {}) { | |
| 123 | 125 | const o = e.basename(i), |
| 124 | s = this, | |
| 125 | c = new n() | |
| 126 | n = this, | |
| 127 | c = new s() | |
| 126 | 128 | return ( |
| 127 | t.stat(i, (e, n) => { | |
| 129 | t.stat(i, (e, s) => { | |
| 128 | 130 | if (c.destroyed) return |
| 129 | 131 | if (e) return c.destroy(e) |
| 130 | 132 | let d = 0 |
| 131 | const y = n.size, | |
| 133 | const y = s.size, | |
| 132 | 134 | h = t.createReadStream(i), |
| 133 | w = s.keet.internalOpenExistingRoom(a), | |
| 134 | p = w.externalBlobs.createWriteStream(l) | |
| 135 | this.keet.internalBlobsActiveInRoom(a).catch(r) | |
| 136 | let f = setInterval(() => { | |
| 135 | p = n.keet.internalOpenExistingRoom(a), | |
| 136 | w = p.externalBlobs.createWriteStream(r) | |
| 137 | this.keet.internalBlobsActiveInRoom(a).catch(l) | |
| 138 | let b = setInterval(() => { | |
| 137 | 139 | c.destroyed || (d < y && c.push({ bytesAdded: d, byteLength: y, result: null })) |
| 138 | }, l?.debounceTime ?? 500) | |
| 139 | ;(h.pipe(p), | |
| 140 | }, r?.debounceTime ?? 500) | |
| 141 | ;(h.pipe(w), | |
| 140 | 142 | h.on("data", (e) => { |
| 141 | 143 | d += e.byteLength |
| 142 | 144 | }), |
| 143 | 145 | h.on("error", (e) => c.destroy(e)), |
| 144 | p.on("close", async () => { | |
| 145 | if ((f && clearInterval(f), (f = null), !c.destroyed)) | |
| 146 | w.on("close", async () => { | |
| 147 | if ((b && clearInterval(b), (b = null), !c.destroyed)) | |
| 146 | 148 | try { |
| 147 | const e = await s._createFile(w, p.id, { name: o, ...l }) | |
| 149 | const e = await n._createFile(p, w.id, { name: o, ...r }) | |
| 148 | 150 | ;(c.push({ bytesAdded: d, byteLength: y, result: e }), c.push(null)) |
| 149 | 151 | } catch (e) { |
| 150 | 152 | c.destroy(e) |
| … | … | @@ -154,13 +156,13 @@ module.exports = class extends i { |
| 154 | 156 | h.destroy(e) |
| 155 | 157 | }), |
| 156 | 158 | c.on("close", () => { |
| 157 | ;(f && clearInterval(f), | |
| 158 | (f = null), | |
| 159 | ;(b && clearInterval(b), | |
| 160 | (b = null), | |
| 159 | 161 | h.destroy(), |
| 160 | p.destroy(), | |
| 161 | s.keet.internalReleaseRoom(w)) | |
| 162 | w.destroy(), | |
| 163 | n.keet.internalReleaseRoom(p)) | |
| 162 | 164 | }), |
| 163 | l.onFileStat && l.onFileStat()) | |
| 165 | r.onFileStat && r.onFileStat()) | |
| 164 | 166 | }), |
| 165 | 167 | c |
| 166 | 168 | ) |
| … | … | @@ -191,7 +193,7 @@ module.exports = class extends i { |
| 191 | 193 | return { bytesCleared: a + i } |
| 192 | 194 | } |
| 193 | 195 | async clearOldFiles() { |
| 194 | const e = Date.now() - c, | |
| 196 | const e = Date.now() - d, | |
| 195 | 197 | t = new Set(), |
| 196 | 198 | a = await this._findAndClearOldFiles("@local/blob-files-by-last-accessed", e), |
| 197 | 199 | i = await this._findAndClearOldFiles("@local/drive-files-by-last-accessed", e), |
| … | … | @@ -200,11 +202,11 @@ module.exports = class extends i { |
| 200 | 202 | for (const e of a.recordsToClear) |
| 201 | 203 | (await r.insert("@local/blob-files", { ...e, cleared: !0 }), |
| 202 | 204 | await this._updateFileStats(r, { ...e, cleared: !0 }), |
| 203 | t.add(l.encode(e.roomKey))) | |
| 205 | t.add(o.encode(e.roomKey))) | |
| 204 | 206 | for (const e of i.recordsToClear) |
| 205 | 207 | (await r.insert("@local/drive-files", { ...e, cleared: !0 }), |
| 206 | 208 | await this._updateFileStats(r, { ...e, cleared: !0 }), |
| 207 | t.add(l.encode(e.roomKey))) | |
| 209 | t.add(o.encode(e.roomKey))) | |
| 208 | 210 | ;(await r.insert("@local/file-gc-info", { lastCleared: Date.now() }), await r.flush()) |
| 209 | 211 | } finally { |
| 210 | 212 | await this.keet.internalExitLocalTransaction() |
| … | … | @@ -217,16 +219,16 @@ module.exports = class extends i { |
| 217 | 219 | try { |
| 218 | 220 | await this.keet.internalBlobsActiveInRoom(t) |
| 219 | 221 | const r = await i.get(e, { roomKey: t, file: a }) |
| 220 | let o = r?.encryptionKey | |
| 221 | if (!o) { | |
| 222 | let l = r?.encryptionKey | |
| 223 | if (!l) { | |
| 222 | 224 | const e = await i.get("@local/rooms", { roomKey: t }) |
| 223 | o = e?.encryptionKey | |
| 225 | l = e?.encryptionKey | |
| 224 | 226 | } |
| 225 | 227 | const n = { |
| 226 | 228 | ...r, |
| 227 | 229 | cleared: r?.cleared ?? !1, |
| 228 | 230 | roomKey: t, |
| 229 | encryptionKey: o, | |
| 231 | encryptionKey: l, | |
| 230 | 232 | file: a, |
| 231 | 233 | lastAccessed: Date.now(), |
| 232 | 234 | } |
| … | … | @@ -234,7 +236,7 @@ module.exports = class extends i { |
| 234 | 236 | await i.insert(e, n), |
| 235 | 237 | r || (await this._updateFileStats(i, n)), |
| 236 | 238 | await i.flush(), |
| 237 | r || this.keet.emit("local-files-changed", l.encode(t)), | |
| 239 | r || this.keet.emit("local-files-changed", o.encode(t)), | |
| 238 | 240 | n |
| 239 | 241 | ) |
| 240 | 242 | } finally { |
| … | … | @@ -347,6 +349,24 @@ module.exports = class extends i { |
| 347 | 349 | this._activeDownloads.get(t) === a && this._activeDownloads.delete(t) |
| 348 | 350 | })) |
| 349 | 351 | } |
| 352 | async readFileStream(e, t) { | |
| 353 | if (!t.pointer.externalBlob) throw new Error("Only external blob files support streaming") | |
| 354 | this.opened || (await this.ready()) | |
| 355 | const a = t.pointer.externalBlob.blob, | |
| 356 | r = t.pointer.externalBlob.key, | |
| 357 | { collection: o } = this._getLinkOptions(t), | |
| 358 | n = await this._ensureLocalFile(o, e, t), | |
| 359 | s = this.store.get({ key: r, encryptionKey: n.encryptionKey, encrypted: !0, active: !1 }) | |
| 360 | await s.ready() | |
| 361 | const c = new i(s).createReadStream(a) | |
| 362 | return (c.once("close", () => s.close().catch(l)), c) | |
| 363 | } | |
| 364 | async saveToDisk(e, a, i) { | |
| 365 | this.opened || (await this.ready()) | |
| 366 | const r = await this.readFileStream(e, a), | |
| 367 | l = t.createWriteStream(i) | |
| 368 | await n(r, l) | |
| 369 | } | |
| 350 | 370 | async refreshLinks(e) { |
| 351 | 371 | this.opened || (await this.ready()) |
| 352 | 372 | const t = [] |
| … | … | @@ -57,9 +57,13 @@ module.exports = class extends t { |
| 57 | 57 | } |
| 58 | 58 | if (this._updater.updates.cache) { |
| 59 | 59 | const e = this._updater.updates.cache |
| 60 | ;(e.device && | |
| 61 | (await t.insert("@local/devices", { roomKey: this.base.key, device: e.device })), | |
| 62 | e.member && (await t.insert("@local/members", e.member))) | |
| 60 | if ( | |
| 61 | (e.device && | |
| 62 | (await t.insert("@local/devices", { roomKey: this.base.key, device: e.device })), | |
| 63 | e.member && (await t.insert("@local/members", e.member)), | |
| 64 | e.otherMembers) | |
| 65 | ) | |
| 66 | for (const s of e.otherMembers) await t.insert("@local/members", s) | |
| 63 | 67 | } |
| 64 | 68 | const r = await t.get("@local/rooms", this._updater.roomInfo) |
| 65 | 69 | if (!r) { |
| … | … | @@ -367,10 +367,12 @@ module.exports = class extends t { |
| 367 | 367 | n ? this._loadFiles(a) : null, |
| 368 | 368 | ]) |
| 369 | 369 | if (!r) throw s.CORRUPT("Last chat message does not have a member") |
| 370 | return ( | |
| 371 | r.profile.avatar && (await l(this.inputBlobs, r.profile.avatar)), | |
| 372 | d && (e.message.files = d), | |
| 373 | { message: e, reactions: i, device: o, member: r } | |
| 374 | ) | |
| 370 | ;(r.profile.avatar && (await l(this.inputBlobs, r.profile.avatar)), d && (e.message.files = d)) | |
| 371 | const g = [] | |
| 372 | if (e.event?.memberRemoved?.memberKey) { | |
| 373 | const t = await this.input.get("@keet/members", { key: e.event.memberRemoved.memberKey }) | |
| 374 | t && (t.profile.avatar && (await l(this.inputBlobs, t.profile.avatar)), g.push(t)) | |
| 375 | } | |
| 376 | return { message: e, reactions: i, device: o, member: r, otherMembers: g } | |
| 375 | 377 | } |
| 376 | 378 | } |
| … | … | @@ -119,7 +119,7 @@ module.exports = class extends e { |
| 119 | 119 | (this.roomInfo.lastMessage = e.message), |
| 120 | 120 | (this.roomInfo.lastMember = e.member), |
| 121 | 121 | (this.roomInfo.lastMessageReactions = e.reactions), |
| 122 | (this.updates.cache = { member: e.member, device: e.device })) | |
| 122 | (this.updates.cache = { member: e.member, otherMembers: e.otherMembers, device: e.device })) | |
| 123 | 123 | const t = this.currentRoomInfo?.lastMessage |
| 124 | 124 | ;(t && f(t, e.message)) || (this.updates.chat = e.message) |
| 125 | 125 | } |
| … | … | @@ -290,6 +290,7 @@ module.exports = class extends e { |
| 290 | 290 | ) |
| 291 | 291 | } |
| 292 | 292 | async _loadPrivateProfileChanges() { |
| 293 | if (!0 === this.keet.debugDisableSynching) return | |
| 293 | 294 | let e = null |
| 294 | 295 | if (this.isCurrentPrivateProfile && this.roomInfo.selfDevice) { |
| 295 | 296 | const t = this.changes.get(a.DB_VIEW_NAME) |
| … | … | @@ -43,10 +43,10 @@ class o extends t { |
| 43 | 43 | this._lookupOwn(t).catch(this.keet.onerror), |
| 44 | 44 | this._keetRegistry.reserved.core.once("append", this._boundLookupOwn)) |
| 45 | 45 | } |
| 46 | async _emit(e, t = null, s = null) { | |
| 46 | _emit(e, t = null, s = null) { | |
| 47 | 47 | for (const i of this._subs) { |
| 48 | 48 | if (this.keet.closing) return |
| 49 | i.push({ status: h(e), reservation: t, record: this._encode(s) }) | |
| 49 | i.push({ status: h(e), reservation: t, record: s }) | |
| 50 | 50 | } |
| 51 | 51 | } |
| 52 | 52 | async _catch(e) { |
| … | … | @@ -12,8 +12,10 @@ const e = require("hypercore-id-encoding"), |
| 12 | 12 | } = require("../../schema/spec"), |
| 13 | 13 | c = r("@keet/room-type"), |
| 14 | 14 | s = require("../core/local"), |
| 15 | u = require("keet-identity-key") | |
| 16 | function d(e) { | |
| 15 | u = require("keet-identity-key"), | |
| 16 | { ProofEncoding: d } = require("keet-identity-key/lib/encoding"), | |
| 17 | m = require("compact-encoding") | |
| 18 | function y(e) { | |
| 17 | 19 | return "@keet/start-call" === e.name |
| 18 | 20 | ? "call" |
| 19 | 21 | : "@keet/join-call" === e.name |
| … | … | @@ -22,7 +24,7 @@ function d(e) { |
| 22 | 24 | ? "call_hangup" |
| 23 | 25 | : void 0 |
| 24 | 26 | } |
| 25 | function m(e) { | |
| 27 | function f(e) { | |
| 26 | 28 | return "@keet/start-call" === e.name |
| 27 | 29 | ? "Message for call" |
| 28 | 30 | : "@keet/join-call" === e.name |
| … | … | @@ -31,7 +33,7 @@ function m(e) { |
| 31 | 33 | ? "Message for call hangup" |
| 32 | 34 | : void 0 |
| 33 | 35 | } |
| 34 | function y(e, l) { | |
| 36 | function p(e, l) { | |
| 35 | 37 | switch (e) { |
| 36 | 38 | case c.Default: |
| 37 | 39 | return (l("Room type is default"), "0") |
| … | … | @@ -43,18 +45,18 @@ function y(e, l) { |
| 43 | 45 | throw new Error("Incompatible legacy room type:", e) |
| 44 | 46 | } |
| 45 | 47 | } |
| 46 | function f(e, l, t) { | |
| 48 | function g(e, l, t) { | |
| 47 | 49 | try { |
| 48 | 50 | return !!u.verify(e, l, { expectedIdentity: t }) |
| 49 | 51 | } catch { |
| 50 | 52 | return !1 |
| 51 | 53 | } |
| 52 | 54 | } |
| 53 | module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = {}) { | |
| 54 | const g = t.open(r).active() | |
| 55 | if (!g && p) return (u("no active profile is made"), null) | |
| 56 | const { version: k, discoveryKey: h, proof: v } = a.decode(c), | |
| 57 | b = new l(g ? g.storage : r, { | |
| 55 | module.exports = async function (r, c, { log: u = () => {}, profile: k = !0 } = {}) { | |
| 56 | const h = t.open(r).active() | |
| 57 | if (!h && k) return (u("no active profile is made"), null) | |
| 58 | const { version: v, discoveryKey: b, proof: x } = a.decode(c), | |
| 59 | K = new l(h ? h.storage : r, { | |
| 58 | 60 | readOnly: !0, |
| 59 | 61 | blockCache: !1, |
| 60 | 62 | tableCacheIndexAndFilterBlocks: !1, |
| … | … | @@ -64,55 +66,57 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 64 | 66 | filterPolicy: null, |
| 65 | 67 | }) |
| 66 | 68 | try { |
| 67 | const l = s.rocks(b.rocks.columnFamily("keet/local-database")) | |
| 69 | const l = s.rocks(K.rocks.columnFamily("keet/local-database")) | |
| 68 | 70 | ;(await l.ready(), u("Keet local database is ready")) |
| 69 | 71 | const [t, r] = await Promise.all([ |
| 70 | l.get("@local/rooms-by-discovery-key", { discoveryKey: h }), | |
| 72 | l.get("@local/rooms-by-discovery-key", { discoveryKey: b }), | |
| 71 | 73 | l.get("@local/identity"), |
| 72 | 74 | ]) |
| 73 | 75 | if (!t || t.status.isRemoved) return (u("Room member was removed from room"), null) |
| 74 | 76 | const c = await l.get("@local/room-preferences", { roomKey: t.roomKey }) |
| 75 | 77 | if (c && (!c.status.isActive || c.status.isFullyMuted)) return null |
| 76 | const p = await a.receive(b, t.roomKey, v, k), | |
| 77 | g = 1 === k ? p?.result : p, | |
| 78 | x = 1 === k ? p?.attest : null | |
| 79 | if ((u("Receiving notification"), !g)) return null | |
| 80 | if ((u("Notification is good"), !g.block)) return null | |
| 81 | if ((u("Notification was not blocked"), !g.newer)) return null | |
| 82 | const K = g.key, | |
| 83 | w = g.discoveryKey, | |
| 84 | M = o(n.from(g.proof.block.value), { | |
| 78 | const k = await a.receive(K, t.roomKey, x, v), | |
| 79 | h = 1 === v ? k?.result : k, | |
| 80 | w = 1 === v ? k?.attest : null, | |
| 81 | M = w ? m.decode(d, w) : null | |
| 82 | if ((u("Receiving notification"), !h)) return null | |
| 83 | if ((u("Notification is good"), !h.block)) return null | |
| 84 | if ((u("Notification was not blocked"), !h.newer)) return null | |
| 85 | const q = h.key, | |
| 86 | T = h.discoveryKey, | |
| 87 | I = o(n.from(h.proof.block.value), { | |
| 85 | 88 | autobase: t.roomKey, |
| 86 | 89 | encryptionKey: t.encryptionKey, |
| 87 | key: K, | |
| 88 | manifest: g.proof.manifest, | |
| 89 | index: g.block.index, | |
| 90 | key: q, | |
| 91 | manifest: h.proof.manifest, | |
| 92 | index: h.block.index, | |
| 90 | 93 | }), |
| 91 | [T, q] = await Promise.all([l.get("@local/devices", { device: { key: K } }), M]), | |
| 92 | I = T?.device, | |
| 93 | R = i(q), | |
| 94 | [j, D] = await Promise.all([ | |
| 95 | I ? l.get("@local/contacts", { memberKey: I.memberKey }) : null, | |
| 96 | I ? l.get("@local/members", { key: I.memberKey }) : null, | |
| 94 | [R, j] = await Promise.all([l.get("@local/devices", { device: { key: q } }), I]), | |
| 95 | D = R?.device, | |
| 96 | F = i(j), | |
| 97 | B = M?.identity || D?.memberKey, | |
| 98 | [P, A] = await Promise.all([ | |
| 99 | B ? l.get("@local/contacts", { memberKey: B }) : null, | |
| 100 | B ? l.get("@local/members", { key: B }) : null, | |
| 97 | 101 | ]), |
| 98 | F = !!j?.status.isBlocked | |
| 99 | u("Blocked?: ", F) | |
| 100 | const B = x ? f(x, K, r.publicKey) : D && n.equals(D.key, r.publicKey) | |
| 102 | E = !!P?.status.isBlocked | |
| 103 | u("Blocked?: ", E) | |
| 104 | const S = w ? g(w, q, r.publicKey) : A && n.equals(A.key, r.publicKey) | |
| 101 | 105 | u( |
| 102 | `Member exists ?: ${null !== D} and keys are equal?: ${null !== D && n.equals(D.key, r.publicKey)}`, | |
| 106 | `Member exists ?: ${null !== A} and keys are equal?: ${null !== A && n.equals(A.key, r.publicKey)}`, | |
| 103 | 107 | ) |
| 104 | const A = D ? D.profile.displayName : null, | |
| 105 | P = D ? D.profile.avatar : null, | |
| 106 | S = t ? t.config.avatar : null, | |
| 107 | E = t ? t.digest.abi.version : 0 | |
| 108 | let N = null | |
| 109 | switch (R.name) { | |
| 108 | const N = A ? A.profile.displayName : null, | |
| 109 | _ = A ? A.profile.avatar : null, | |
| 110 | C = t ? t.config.avatar : null, | |
| 111 | O = t ? t.digest.abi.version : 0 | |
| 112 | let $ = null | |
| 113 | switch (F.name) { | |
| 110 | 114 | case "@keet/add-chat-message": { |
| 111 | const l = R.value.header.timestamp, | |
| 112 | a = R.value.message | |
| 115 | const l = F.value.header.timestamp, | |
| 116 | a = F.value.message | |
| 113 | 117 | if (a?.files && a.files.length > 0) { |
| 114 | 118 | const e = a.files[0] |
| 115 | ;((N = { | |
| 119 | ;(($ = { | |
| 116 | 120 | timestamp: l, |
| 117 | 121 | type: "file", |
| 118 | 122 | chatText: null, |
| … | … | @@ -122,7 +126,7 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 122 | 126 | }), |
| 123 | 127 | u("Message for file")) |
| 124 | 128 | } else if (a?.event?.locationShared) |
| 125 | ((N = { | |
| 129 | (($ = { | |
| 126 | 130 | timestamp: l, |
| 127 | 131 | type: "location", |
| 128 | 132 | chatText: a.text, |
| … | … | @@ -132,7 +136,7 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 132 | 136 | }), |
| 133 | 137 | u("Message for location")) |
| 134 | 138 | else if (a.text) |
| 135 | ((N = { | |
| 139 | (($ = { | |
| 136 | 140 | timestamp: l, |
| 137 | 141 | type: "text", |
| 138 | 142 | chatText: a.text, |
| … | … | @@ -141,9 +145,9 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 141 | 145 | location: null, |
| 142 | 146 | }), |
| 143 | 147 | u("Message for text")) |
| 144 | else if (a.event.callStarted && E < 23) { | |
| 148 | else if (a.event.callStarted && O < 23) { | |
| 145 | 149 | if (Math.abs(Date.now() - l) > 12e4) return |
| 146 | ;((N = { | |
| 150 | ;(($ = { | |
| 147 | 151 | timestamp: l, |
| 148 | 152 | type: "call", |
| 149 | 153 | chatText: null, |
| … | … | @@ -152,9 +156,9 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 152 | 156 | location: null, |
| 153 | 157 | }), |
| 154 | 158 | u("Message for call")) |
| 155 | } else if (a.event.callHangup && E < 23) { | |
| 159 | } else if (a.event.callHangup && O < 23) { | |
| 156 | 160 | if (Math.abs(Date.now() - l) > 12e4) return |
| 157 | ;((N = { | |
| 161 | ;(($ = { | |
| 158 | 162 | timestamp: l, |
| 159 | 163 | type: "call_hangup", |
| 160 | 164 | chatText: null, |
| … | … | @@ -170,16 +174,16 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 170 | 174 | case "@keet/join-call": |
| 171 | 175 | case "@keet/leave-call": |
| 172 | 176 | case "@keet/end-call": { |
| 173 | if (E < 23) return | |
| 174 | const l = R.value.header.timestamp | |
| 177 | if (O < 23) return | |
| 178 | const l = F.value.header.timestamp | |
| 175 | 179 | if (Math.abs(Date.now() - l) > 12e4) return |
| 176 | const t = d(R), | |
| 177 | a = m(R) | |
| 178 | ;((N = { | |
| 180 | const t = y(F), | |
| 181 | a = f(F) | |
| 182 | ;(($ = { | |
| 179 | 183 | timestamp: l, |
| 180 | 184 | type: t, |
| 181 | 185 | chatText: null, |
| 182 | callId: e.encode(R.value.callKey), | |
| 186 | callId: e.encode(F.value.callKey), | |
| 183 | 187 | fileType: null, |
| 184 | 188 | location: null, |
| 185 | 189 | }), |
| … | … | @@ -187,27 +191,27 @@ module.exports = async function (r, c, { log: u = () => {}, profile: p = !0 } = |
| 187 | 191 | break |
| 188 | 192 | } |
| 189 | 193 | } |
| 190 | const _ = { | |
| 194 | const z = { | |
| 191 | 195 | id: null, |
| 192 | sender: { id: e.encode(K), length: g.length, blocked: F, self: B, name: A, memberAvatar: P }, | |
| 196 | sender: { id: e.encode(q), length: h.length, blocked: E, self: S, name: N, memberAvatar: _ }, | |
| 193 | 197 | room: { |
| 194 | 198 | key: t.roomKey, |
| 195 | 199 | title: t.config.title, |
| 196 | type: y(t.digest.settings.roomType, u), | |
| 197 | roomAvatar: S, | |
| 200 | type: p(t.digest.settings.roomType, u), | |
| 201 | roomAvatar: C, | |
| 198 | 202 | }, |
| 199 | proof: { discoveryKey: w, data: g.proof }, | |
| 200 | index: g.block.index, | |
| 201 | message: N, | |
| 203 | proof: { discoveryKey: T, data: h.proof }, | |
| 204 | index: h.block.index, | |
| 205 | message: $, | |
| 202 | 206 | } |
| 203 | 207 | return ( |
| 204 | (_.id = _.sender.id + (-1 !== _.index ? "/b" + _.index : "/l" + _.sender.length)), | |
| 208 | (z.id = z.sender.id + (-1 !== z.index ? "/b" + z.index : "/l" + z.sender.length)), | |
| 205 | 209 | u("Returning result"), |
| 206 | _ | |
| 210 | z | |
| 207 | 211 | ) |
| 208 | 212 | } catch (e) { |
| 209 | 213 | return (u("Error:", e), null) |
| 210 | 214 | } finally { |
| 211 | ;(await b.close(), u("Storage closed")) | |
| 215 | ;(await K.close(), u("Storage closed")) | |
| 212 | 216 | } |
| 213 | 217 | } |
| … | … | @@ -31,8 +31,8 @@ module.exports = function (s) { |
| 31 | 31 | k = s.register(27, { request: e, response: e }), |
| 32 | 32 | D = s.register(28, { request: e, response: e }), |
| 33 | 33 | U = s.register(29, { request: e, response: e }), |
| 34 | E = s.register(30, { request: e, response: e }), | |
| 35 | T = s.register(31, { request: e, response: e }), | |
| 34 | T = s.register(30, { request: e, response: e }), | |
| 35 | E = s.register(31, { request: e, response: e }), | |
| 36 | 36 | B = s.register(32, { request: e, response: e }), |
| 37 | 37 | L = s.register(33, { request: e, response: e }), |
| 38 | 38 | x = s.register(34, { request: e, response: e }), |
| … | … | @@ -85,8 +85,8 @@ module.exports = function (s) { |
| 85 | 85 | ke = s.register(81, { request: e, response: e }), |
| 86 | 86 | De = s.register(82, { request: e, response: e }), |
| 87 | 87 | Ue = s.register(83, { request: e, response: e }), |
| 88 | Ee = s.register(84, { request: e, response: e }), | |
| 89 | Te = s.register(85, { request: e, response: e }), | |
| 88 | Te = s.register(84, { request: e, response: e }), | |
| 89 | Ee = s.register(85, { request: e, response: e }), | |
| 90 | 90 | Be = s.register(86, { request: e, response: e }), |
| 91 | 91 | Le = s.register(87, { request: e, response: e }), |
| 92 | 92 | xe = s.register(88, { request: e, response: e }), |
| … | … | @@ -139,8 +139,8 @@ module.exports = function (s) { |
| 139 | 139 | kr = s.register(135, { request: e, response: e }), |
| 140 | 140 | Dr = s.register(136, { request: e, response: e }), |
| 141 | 141 | Ur = s.register(137, { request: e, response: e }), |
| 142 | Er = s.register(138, { request: e, response: e }), | |
| 143 | Tr = s.register(139, { request: e, response: e }), | |
| 142 | Tr = s.register(138, { request: e, response: e }), | |
| 143 | Er = s.register(139, { request: e, response: e }), | |
| 144 | 144 | Br = s.register(140, { request: e, response: e }), |
| 145 | 145 | Lr = s.register(141, { request: e, response: e }), |
| 146 | 146 | xr = s.register(142, { request: e, response: e }), |
| … | … | @@ -193,8 +193,8 @@ module.exports = function (s) { |
| 193 | 193 | ks = s.register(189, { request: e, response: e }), |
| 194 | 194 | Ds = s.register(190, { request: e, response: e }), |
| 195 | 195 | Us = s.register(191, { request: e, response: e }), |
| 196 | Es = s.register(192, { request: e, response: e }), | |
| 197 | Ts = s.register(193, { request: e, response: e }), | |
| 196 | Ts = s.register(192, { request: e, response: e }), | |
| 197 | Es = s.register(193, { request: e, response: e }), | |
| 198 | 198 | Bs = s.register(194, { request: e, response: e }), |
| 199 | 199 | Ls = s.register(195, { request: e, response: e }), |
| 200 | 200 | xs = s.register(196, { request: e, response: e }), |
| … | … | @@ -247,8 +247,8 @@ module.exports = function (s) { |
| 247 | 247 | kt = s.register(243, { request: e, response: e }), |
| 248 | 248 | Dt = s.register(244, { request: e, response: e }), |
| 249 | 249 | Ut = s.register(245, { request: e, response: e }), |
| 250 | Et = s.register(246, { request: e, response: e }), | |
| 251 | Tt = s.register(247, { request: e, response: e }), | |
| 250 | Tt = s.register(246, { request: e, response: e }), | |
| 251 | Et = s.register(247, { request: e, response: e }), | |
| 252 | 252 | Bt = s.register(248, { request: e, response: e }), |
| 253 | 253 | Lt = s.register(249, { request: e, response: e }), |
| 254 | 254 | xt = s.register(250, { request: e, response: e }), |
| … | … | @@ -259,7 +259,9 @@ module.exports = function (s) { |
| 259 | 259 | Kt = s.register(255, { request: e, response: e }), |
| 260 | 260 | Vt = s.register(256, { request: e, response: e }), |
| 261 | 261 | Jt = s.register(257, { request: e, response: e }), |
| 262 | Ot = s.register(258, { request: e, response: e }) | |
| 262 | Ot = s.register(258, { request: e, response: e }), | |
| 263 | Wt = s.register(259, { request: e, response: e }), | |
| 264 | Gt = s.register(260, { request: e, response: e }) | |
| 263 | 265 | return { |
| 264 | 266 | swarm: { |
| 265 | 267 | ready: (...e) => { |
| … | … | @@ -390,12 +392,12 @@ module.exports = function (s) { |
| 390 | 392 | }, |
| 391 | 393 | subscribePendingRooms: (...e) => { |
| 392 | 394 | const s = Array.from(e), |
| 393 | t = E.createRequestStream() | |
| 395 | t = T.createRequestStream() | |
| 394 | 396 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 395 | 397 | }, |
| 396 | 398 | subscribePushNotificationChanges: (...e) => { |
| 397 | 399 | const s = Array.from(e), |
| 398 | t = T.createRequestStream() | |
| 400 | t = E.createRequestStream() | |
| 399 | 401 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 400 | 402 | }, |
| 401 | 403 | subscribeActivateRoom: (...e) => { |
| … | … | @@ -624,12 +626,12 @@ module.exports = function (s) { |
| 624 | 626 | }, |
| 625 | 627 | subscribeContactInfo: (...e) => { |
| 626 | 628 | const s = Array.from(e), |
| 627 | t = Ee.createRequestStream() | |
| 629 | t = Te.createRequestStream() | |
| 628 | 630 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 629 | 631 | }, |
| 630 | 632 | getSelfContactInfo: (...e) => { |
| 631 | 633 | const r = Array.from(e) |
| 632 | return Te.request(r) | |
| 634 | return Ee.request(r) | |
| 633 | 635 | }, |
| 634 | 636 | blockMember: (...e) => { |
| 635 | 637 | const r = Array.from(e) |
| … | … | @@ -851,11 +853,11 @@ module.exports = function (s) { |
| 851 | 853 | }, |
| 852 | 854 | getDmByMemberId: (...e) => { |
| 853 | 855 | const r = Array.from(e) |
| 854 | return Er.request(r) | |
| 856 | return Tr.request(r) | |
| 855 | 857 | }, |
| 856 | 858 | getDmRequestsByStatus: (...e) => { |
| 857 | 859 | const r = Array.from(e) |
| 858 | return Tr.request(r) | |
| 860 | return Er.request(r) | |
| 859 | 861 | }, |
| 860 | 862 | subscribeDmRequestsByStatus: (...e) => { |
| 861 | 863 | const s = Array.from(e), |
| … | … | @@ -983,398 +985,407 @@ module.exports = function (s) { |
| 983 | 985 | const r = Array.from(e) |
| 984 | 986 | return cs.request(r) |
| 985 | 987 | }, |
| 988 | readFileStream: (...e) => { | |
| 989 | const s = Array.from(e), | |
| 990 | t = ms.createRequestStream() | |
| 991 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) | |
| 992 | }, | |
| 993 | saveToDisk: (...e) => { | |
| 994 | const r = Array.from(e) | |
| 995 | return gs.request(r) | |
| 996 | }, | |
| 986 | 997 | clearFile: (...e) => { |
| 987 | 998 | const r = Array.from(e) |
| 988 | return ms.request(r) | |
| 999 | return ps.request(r) | |
| 989 | 1000 | }, |
| 990 | 1001 | unclearFile: (...e) => { |
| 991 | 1002 | const r = Array.from(e) |
| 992 | return gs.request(r) | |
| 1003 | return ys.request(r) | |
| 993 | 1004 | }, |
| 994 | 1005 | getFileCleared: (...e) => { |
| 995 | 1006 | const r = Array.from(e) |
| 996 | return ps.request(r) | |
| 1007 | return fs.request(r) | |
| 997 | 1008 | }, |
| 998 | 1009 | subscribeFileCleared: (...e) => { |
| 999 | 1010 | const s = Array.from(e), |
| 1000 | t = ys.createRequestStream() | |
| 1011 | t = As.createRequestStream() | |
| 1001 | 1012 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1002 | 1013 | }, |
| 1003 | 1014 | subscribeFiles: (...e) => { |
| 1004 | 1015 | const s = Array.from(e), |
| 1005 | t = fs.createRequestStream() | |
| 1016 | t = ds.createRequestStream() | |
| 1006 | 1017 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1007 | 1018 | }, |
| 1008 | 1019 | getStats: (...e) => { |
| 1009 | 1020 | const r = Array.from(e) |
| 1010 | return As.request(r) | |
| 1021 | return bs.request(r) | |
| 1011 | 1022 | }, |
| 1012 | 1023 | subscribeProgress: (...e) => { |
| 1013 | 1024 | const s = Array.from(e), |
| 1014 | t = ds.createRequestStream() | |
| 1025 | t = Rs.createRequestStream() | |
| 1015 | 1026 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1016 | 1027 | }, |
| 1017 | 1028 | subscribeSystemUpdateRequest: (...e) => { |
| 1018 | 1029 | const s = Array.from(e), |
| 1019 | t = bs.createRequestStream() | |
| 1030 | t = ls.createRequestStream() | |
| 1020 | 1031 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1021 | 1032 | }, |
| 1022 | 1033 | lookupUsername: (...e) => { |
| 1023 | 1034 | const r = Array.from(e) |
| 1024 | return Rs.request(r) | |
| 1035 | return Ss.request(r) | |
| 1025 | 1036 | }, |
| 1026 | 1037 | lookupUserByMemberId: (...e) => { |
| 1027 | 1038 | const r = Array.from(e) |
| 1028 | return ls.request(r) | |
| 1039 | return ws.request(r) | |
| 1029 | 1040 | }, |
| 1030 | 1041 | subscribeUsername: (...e) => { |
| 1031 | 1042 | const s = Array.from(e), |
| 1032 | t = Ss.createRequestStream() | |
| 1043 | t = vs.createRequestStream() | |
| 1033 | 1044 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1034 | 1045 | }, |
| 1035 | 1046 | registerUsername: (...e) => { |
| 1036 | 1047 | const r = Array.from(e) |
| 1037 | return ws.request(r) | |
| 1048 | return Ms.request(r) | |
| 1038 | 1049 | }, |
| 1039 | 1050 | updateUsername: (...e) => { |
| 1040 | 1051 | const r = Array.from(e) |
| 1041 | return vs.request(r) | |
| 1052 | return hs.request(r) | |
| 1042 | 1053 | }, |
| 1043 | 1054 | searchUsername: (...e) => { |
| 1044 | 1055 | const r = Array.from(e) |
| 1045 | return Ms.request(r) | |
| 1056 | return Cs.request(r) | |
| 1046 | 1057 | }, |
| 1047 | 1058 | getReservationsByKey: (...e) => { |
| 1048 | 1059 | const r = Array.from(e) |
| 1049 | return hs.request(r) | |
| 1060 | return Ps.request(r) | |
| 1050 | 1061 | }, |
| 1051 | 1062 | checkUsername: (...e) => { |
| 1052 | 1063 | const r = Array.from(e) |
| 1053 | return Cs.request(r) | |
| 1064 | return Is.request(r) | |
| 1054 | 1065 | }, |
| 1055 | 1066 | updateRoomPreferences: (...e) => { |
| 1056 | 1067 | const r = Array.from(e) |
| 1057 | return Ps.request(r) | |
| 1068 | return Fs.request(r) | |
| 1058 | 1069 | }, |
| 1059 | 1070 | getRoomPreferences: (...e) => { |
| 1060 | 1071 | const r = Array.from(e) |
| 1061 | return Is.request(r) | |
| 1072 | return ks.request(r) | |
| 1062 | 1073 | }, |
| 1063 | 1074 | audit: (...e) => { |
| 1064 | 1075 | const r = Array.from(e) |
| 1065 | return Fs.request(r) | |
| 1076 | return Ds.request(r) | |
| 1066 | 1077 | }, |
| 1067 | 1078 | close: (...e) => { |
| 1068 | 1079 | const r = Array.from(e) |
| 1069 | return ks.request(r) | |
| 1080 | return Us.request(r) | |
| 1070 | 1081 | }, |
| 1071 | 1082 | suspend: (...e) => { |
| 1072 | 1083 | const r = Array.from(e) |
| 1073 | return Ds.request(r) | |
| 1084 | return Ts.request(r) | |
| 1074 | 1085 | }, |
| 1075 | 1086 | resume: (...e) => { |
| 1076 | 1087 | const r = Array.from(e) |
| 1077 | return Us.request(r) | |
| 1088 | return Es.request(r) | |
| 1078 | 1089 | }, |
| 1079 | 1090 | getDebugFlags: (...e) => { |
| 1080 | 1091 | const r = Array.from(e) |
| 1081 | return Es.request(r) | |
| 1092 | return Bs.request(r) | |
| 1082 | 1093 | }, |
| 1083 | 1094 | updateDebugFlag: (...e) => { |
| 1084 | 1095 | const r = Array.from(e) |
| 1085 | return Ts.request(r) | |
| 1096 | return Ls.request(r) | |
| 1086 | 1097 | }, |
| 1087 | 1098 | repair: (...e) => { |
| 1088 | 1099 | const r = Array.from(e) |
| 1089 | return Bs.request(r) | |
| 1100 | return xs.request(r) | |
| 1090 | 1101 | }, |
| 1091 | 1102 | rotateWriter: (...e) => { |
| 1092 | 1103 | const r = Array.from(e) |
| 1093 | return Ls.request(r) | |
| 1104 | return Ns.request(r) | |
| 1094 | 1105 | }, |
| 1095 | 1106 | getRoomStats: (...e) => { |
| 1096 | 1107 | const r = Array.from(e) |
| 1097 | return xs.request(r) | |
| 1108 | return js.request(r) | |
| 1098 | 1109 | }, |
| 1099 | 1110 | compact: (...e) => { |
| 1100 | 1111 | const r = Array.from(e) |
| 1101 | return Ns.request(r) | |
| 1112 | return zs.request(r) | |
| 1102 | 1113 | }, |
| 1103 | 1114 | setUnread: (...e) => { |
| 1104 | 1115 | const r = Array.from(e) |
| 1105 | return js.request(r) | |
| 1116 | return Hs.request(r) | |
| 1106 | 1117 | }, |
| 1107 | 1118 | getUnread: (...e) => { |
| 1108 | 1119 | const r = Array.from(e) |
| 1109 | return zs.request(r) | |
| 1120 | return Ks.request(r) | |
| 1110 | 1121 | }, |
| 1111 | 1122 | getUnreadAnchor: (...e) => { |
| 1112 | 1123 | const r = Array.from(e) |
| 1113 | return Hs.request(r) | |
| 1124 | return Vs.request(r) | |
| 1114 | 1125 | }, |
| 1115 | 1126 | setUnreadAnchor: (...e) => { |
| 1116 | 1127 | const r = Array.from(e) |
| 1117 | return Ks.request(r) | |
| 1128 | return Js.request(r) | |
| 1118 | 1129 | }, |
| 1119 | 1130 | subscribeUnreadAnchor: (...e) => { |
| 1120 | 1131 | const s = Array.from(e), |
| 1121 | t = Vs.createRequestStream() | |
| 1132 | t = Os.createRequestStream() | |
| 1122 | 1133 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1123 | 1134 | }, |
| 1124 | 1135 | subscribeSentLength: (...e) => { |
| 1125 | 1136 | const s = Array.from(e), |
| 1126 | t = Js.createRequestStream() | |
| 1137 | t = Ws.createRequestStream() | |
| 1127 | 1138 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1128 | 1139 | }, |
| 1129 | 1140 | createErrorStream: (...e) => { |
| 1130 | 1141 | const s = Array.from(e), |
| 1131 | t = Os.createRequestStream() | |
| 1142 | t = Gs.createRequestStream() | |
| 1132 | 1143 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1133 | 1144 | }, |
| 1134 | 1145 | boot: (...e) => { |
| 1135 | 1146 | const r = Array.from(e) |
| 1136 | return Ws.request(r) | |
| 1147 | return Qs.request(r) | |
| 1137 | 1148 | }, |
| 1138 | 1149 | subscribeErrors: (...e) => { |
| 1139 | 1150 | const s = Array.from(e), |
| 1140 | t = Gs.createRequestStream() | |
| 1151 | t = Xs.createRequestStream() | |
| 1141 | 1152 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1142 | 1153 | }, |
| 1143 | 1154 | setCallRingingId: (...e) => { |
| 1144 | 1155 | const r = Array.from(e) |
| 1145 | return Qs.request(r) | |
| 1156 | return Ys.request(r) | |
| 1146 | 1157 | }, |
| 1147 | 1158 | subscribeNotifications: (...e) => { |
| 1148 | 1159 | const s = Array.from(e), |
| 1149 | t = Xs.createRequestStream() | |
| 1160 | t = Zs.createRequestStream() | |
| 1150 | 1161 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1151 | 1162 | }, |
| 1152 | 1163 | getDHTSettings: (...e) => { |
| 1153 | 1164 | const r = Array.from(e) |
| 1154 | return Ys.request(r) | |
| 1165 | return $s.request(r) | |
| 1155 | 1166 | }, |
| 1156 | 1167 | updateDHTSettings: (...e) => { |
| 1157 | 1168 | const r = Array.from(e) |
| 1158 | return Zs.request(r) | |
| 1169 | return _s.request(r) | |
| 1159 | 1170 | }, |
| 1160 | 1171 | setRoomFavorite: (...e) => { |
| 1161 | 1172 | const r = Array.from(e) |
| 1162 | return $s.request(r) | |
| 1173 | return et.request(r) | |
| 1163 | 1174 | }, |
| 1164 | 1175 | clearOldFiles: (...e) => { |
| 1165 | 1176 | const r = Array.from(e) |
| 1166 | return _s.request(r) | |
| 1177 | return rt.request(r) | |
| 1167 | 1178 | }, |
| 1168 | 1179 | }, |
| 1169 | 1180 | preferences: { |
| 1170 | 1181 | subscribe: (...e) => { |
| 1171 | 1182 | const s = Array.from(e), |
| 1172 | t = et.createRequestStream() | |
| 1183 | t = st.createRequestStream() | |
| 1173 | 1184 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1174 | 1185 | }, |
| 1175 | 1186 | update: (...e) => { |
| 1176 | 1187 | const r = Array.from(e) |
| 1177 | return rt.request(r) | |
| 1188 | return tt.request(r) | |
| 1178 | 1189 | }, |
| 1179 | 1190 | query: (...e) => { |
| 1180 | 1191 | const r = Array.from(e) |
| 1181 | return st.request(r) | |
| 1192 | return ot.request(r) | |
| 1182 | 1193 | }, |
| 1183 | 1194 | }, |
| 1184 | 1195 | call: { |
| 1185 | 1196 | authorize: (...e) => { |
| 1186 | 1197 | const r = Array.from(e) |
| 1187 | return tt.request(r) | |
| 1198 | return nt.request(r) | |
| 1188 | 1199 | }, |
| 1189 | 1200 | deauthorize: (...e) => { |
| 1190 | 1201 | const r = Array.from(e) |
| 1191 | return ot.request(r) | |
| 1202 | return ut.request(r) | |
| 1192 | 1203 | }, |
| 1193 | 1204 | joinPeer: (...e) => { |
| 1194 | 1205 | const r = Array.from(e) |
| 1195 | return nt.request(r) | |
| 1206 | return at.request(r) | |
| 1196 | 1207 | }, |
| 1197 | 1208 | leavePeer: (...e) => { |
| 1198 | 1209 | const r = Array.from(e) |
| 1199 | return ut.request(r) | |
| 1210 | return qt.request(r) | |
| 1200 | 1211 | }, |
| 1201 | 1212 | requestTrack: (...e) => { |
| 1202 | 1213 | const r = Array.from(e) |
| 1203 | return at.request(r) | |
| 1214 | return it.request(r) | |
| 1204 | 1215 | }, |
| 1205 | 1216 | unrequestTrack: (...e) => { |
| 1206 | 1217 | const r = Array.from(e) |
| 1207 | return qt.request(r) | |
| 1218 | return ct.request(r) | |
| 1208 | 1219 | }, |
| 1209 | 1220 | signalMedia: (...e) => { |
| 1210 | 1221 | const r = Array.from(e) |
| 1211 | return it.request(r) | |
| 1222 | return mt.request(r) | |
| 1212 | 1223 | }, |
| 1213 | 1224 | getRequestedTracks: (...e) => { |
| 1214 | 1225 | const r = Array.from(e) |
| 1215 | return ct.request(r) | |
| 1226 | return gt.request(r) | |
| 1216 | 1227 | }, |
| 1217 | 1228 | subscribeRequestedTracks: (...e) => { |
| 1218 | 1229 | const s = Array.from(e), |
| 1219 | t = mt.createRequestStream() | |
| 1230 | t = pt.createRequestStream() | |
| 1220 | 1231 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1221 | 1232 | }, |
| 1222 | 1233 | subscribeMediaSignals: (...e) => { |
| 1223 | 1234 | const s = Array.from(e), |
| 1224 | t = gt.createRequestStream() | |
| 1235 | t = yt.createRequestStream() | |
| 1225 | 1236 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1226 | 1237 | }, |
| 1227 | 1238 | subscribeProxyUpdates: (...e) => { |
| 1228 | 1239 | const s = Array.from(e), |
| 1229 | t = pt.createRequestStream() | |
| 1240 | t = ft.createRequestStream() | |
| 1230 | 1241 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1231 | 1242 | }, |
| 1232 | 1243 | shareTrack: (...e) => { |
| 1233 | 1244 | const r = Array.from(e) |
| 1234 | return yt.request(r) | |
| 1245 | return At.request(r) | |
| 1235 | 1246 | }, |
| 1236 | 1247 | unshareTrack: (...e) => { |
| 1237 | 1248 | const r = Array.from(e) |
| 1238 | return ft.request(r) | |
| 1249 | return dt.request(r) | |
| 1239 | 1250 | }, |
| 1240 | 1251 | relayTrack: (...e) => { |
| 1241 | 1252 | const r = Array.from(e) |
| 1242 | return At.request(r) | |
| 1253 | return bt.request(r) | |
| 1243 | 1254 | }, |
| 1244 | 1255 | unrelayTrack: (...e) => { |
| 1245 | 1256 | const r = Array.from(e) |
| 1246 | return dt.request(r) | |
| 1257 | return Rt.request(r) | |
| 1247 | 1258 | }, |
| 1248 | 1259 | subscribeAvailableTracks: (...e) => { |
| 1249 | 1260 | const s = Array.from(e), |
| 1250 | t = bt.createRequestStream() | |
| 1261 | t = lt.createRequestStream() | |
| 1251 | 1262 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1252 | 1263 | }, |
| 1253 | 1264 | getAvailableTracks: (...e) => { |
| 1254 | 1265 | const r = Array.from(e) |
| 1255 | return Rt.request(r) | |
| 1266 | return St.request(r) | |
| 1256 | 1267 | }, |
| 1257 | 1268 | setPresent: (...e) => { |
| 1258 | 1269 | const r = Array.from(e) |
| 1259 | return lt.request(r) | |
| 1270 | return wt.request(r) | |
| 1260 | 1271 | }, |
| 1261 | 1272 | setNotPresent: (...e) => { |
| 1262 | 1273 | const r = Array.from(e) |
| 1263 | return St.request(r) | |
| 1274 | return vt.request(r) | |
| 1264 | 1275 | }, |
| 1265 | 1276 | subscribePresence: (...e) => { |
| 1266 | 1277 | const s = Array.from(e), |
| 1267 | t = wt.createRequestStream() | |
| 1278 | t = Mt.createRequestStream() | |
| 1268 | 1279 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1269 | 1280 | }, |
| 1270 | 1281 | getPresence: (...e) => { |
| 1271 | 1282 | const r = Array.from(e) |
| 1272 | return vt.request(r) | |
| 1283 | return ht.request(r) | |
| 1273 | 1284 | }, |
| 1274 | 1285 | }, |
| 1275 | 1286 | tracing: { |
| 1276 | 1287 | start: (...e) => { |
| 1277 | 1288 | const r = Array.from(e) |
| 1278 | return Mt.request(r) | |
| 1289 | return Ct.request(r) | |
| 1279 | 1290 | }, |
| 1280 | 1291 | addFrontendTrace: (...e) => { |
| 1281 | 1292 | const r = Array.from(e) |
| 1282 | return ht.request(r) | |
| 1293 | return Pt.request(r) | |
| 1283 | 1294 | }, |
| 1284 | 1295 | }, |
| 1285 | 1296 | console: { |
| 1286 | 1297 | log: (...e) => { |
| 1287 | 1298 | const r = Array.from(e) |
| 1288 | return Ct.request(r) | |
| 1299 | return It.request(r) | |
| 1289 | 1300 | }, |
| 1290 | 1301 | warn: (...e) => { |
| 1291 | 1302 | const r = Array.from(e) |
| 1292 | return Pt.request(r) | |
| 1303 | return Ft.request(r) | |
| 1293 | 1304 | }, |
| 1294 | 1305 | error: (...e) => { |
| 1295 | 1306 | const r = Array.from(e) |
| 1296 | return It.request(r) | |
| 1307 | return kt.request(r) | |
| 1297 | 1308 | }, |
| 1298 | 1309 | }, |
| 1299 | 1310 | network: { |
| 1300 | 1311 | subscribe: (...e) => { |
| 1301 | 1312 | const s = Array.from(e), |
| 1302 | t = Ft.createRequestStream() | |
| 1313 | t = Dt.createRequestStream() | |
| 1303 | 1314 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1304 | 1315 | }, |
| 1305 | 1316 | query: (...e) => { |
| 1306 | 1317 | const r = Array.from(e) |
| 1307 | return kt.request(r) | |
| 1318 | return Ut.request(r) | |
| 1308 | 1319 | }, |
| 1309 | 1320 | subscribeDebug: (...e) => { |
| 1310 | 1321 | const s = Array.from(e), |
| 1311 | t = Dt.createRequestStream() | |
| 1322 | t = Tt.createRequestStream() | |
| 1312 | 1323 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1313 | 1324 | }, |
| 1314 | 1325 | debug: (...e) => { |
| 1315 | 1326 | const r = Array.from(e) |
| 1316 | return Ut.request(r) | |
| 1327 | return Et.request(r) | |
| 1317 | 1328 | }, |
| 1318 | 1329 | }, |
| 1319 | 1330 | error: { |
| 1320 | 1331 | subscribe: (...e) => { |
| 1321 | 1332 | const s = Array.from(e), |
| 1322 | t = Et.createRequestStream() | |
| 1333 | t = Bt.createRequestStream() | |
| 1323 | 1334 | return (t.write(s), t.end(), t.on("error", (e) => r(e)), t) |
| 1324 | 1335 | }, |
| 1325 | 1336 | }, |
| 1326 | 1337 | debug: { |
| 1327 | 1338 | getCurrentRoomStats: (...e) => { |
| 1328 | 1339 | const r = Array.from(e) |
| 1329 | return Tt.request(r) | |
| 1340 | return Lt.request(r) | |
| 1330 | 1341 | }, |
| 1331 | 1342 | enableInspector: (...e) => { |
| 1332 | 1343 | const r = Array.from(e) |
| 1333 | return Bt.request(r) | |
| 1344 | return xt.request(r) | |
| 1334 | 1345 | }, |
| 1335 | 1346 | disableInspector: (...e) => { |
| 1336 | 1347 | const r = Array.from(e) |
| 1337 | return Lt.request(r) | |
| 1348 | return Nt.request(r) | |
| 1338 | 1349 | }, |
| 1339 | 1350 | getInspectorKey: (...e) => { |
| 1340 | 1351 | const r = Array.from(e) |
| 1341 | return xt.request(r) | |
| 1352 | return jt.request(r) | |
| 1342 | 1353 | }, |
| 1343 | 1354 | processTop: (...e) => { |
| 1344 | 1355 | const r = Array.from(e) |
| 1345 | return Nt.request(r) | |
| 1356 | return zt.request(r) | |
| 1346 | 1357 | }, |
| 1347 | 1358 | heapSnapshot: (...e) => { |
| 1348 | 1359 | const r = Array.from(e) |
| 1349 | return jt.request(r) | |
| 1360 | return Ht.request(r) | |
| 1350 | 1361 | }, |
| 1351 | 1362 | hash: (...e) => { |
| 1352 | 1363 | const r = Array.from(e) |
| 1353 | return zt.request(r) | |
| 1364 | return Kt.request(r) | |
| 1354 | 1365 | }, |
| 1355 | 1366 | generateSyntheticError: (...e) => { |
| 1356 | 1367 | const r = Array.from(e) |
| 1357 | return Ht.request(r) | |
| 1368 | return Vt.request(r) | |
| 1358 | 1369 | }, |
| 1359 | 1370 | resetUnreads: (...e) => { |
| 1360 | 1371 | const r = Array.from(e) |
| 1361 | return Kt.request(r) | |
| 1372 | return Jt.request(r) | |
| 1362 | 1373 | }, |
| 1363 | 1374 | }, |
| 1364 | 1375 | pear: { |
| 1365 | 1376 | teardown: (...e) => { |
| 1366 | 1377 | const r = Array.from(e) |
| 1367 | return Vt.request(r) | |
| 1378 | return Ot.request(r) | |
| 1368 | 1379 | }, |
| 1369 | 1380 | selfDestruct: (...e) => { |
| 1370 | 1381 | const r = Array.from(e) |
| 1371 | return Jt.request(r) | |
| 1382 | return Wt.request(r) | |
| 1372 | 1383 | }, |
| 1373 | 1384 | }, |
| 1374 | 1385 | feedback: { |
| 1375 | 1386 | send: (...e) => { |
| 1376 | 1387 | const r = Array.from(e) |
| 1377 | return Ot.request(r) | |
| 1388 | return Gt.request(r) | |
| 1378 | 1389 | }, |
| 1379 | 1390 | }, |
| 1380 | 1391 | } |
| … | … | @@ -954,10 +954,26 @@ module.exports = function (t, o) { |
| 954 | 954 | o.register(167, { request: e, response: e, onrequest: (e) => t.api.core.getFiles(...e) }), |
| 955 | 955 | o.register(168, { request: e, response: e, onrequest: (e) => t.api.core.startDownload(...e) }), |
| 956 | 956 | o.register(169, { request: e, response: e, onrequest: (e) => t.api.core.cancelDownload(...e) }), |
| 957 | o.register(170, { request: e, response: e, onrequest: (e) => t.api.core.clearFile(...e) }), | |
| 958 | o.register(171, { request: e, response: e, onrequest: (e) => t.api.core.unclearFile(...e) }), | |
| 959 | o.register(172, { request: e, response: e, onrequest: (e) => t.api.core.getFileCleared(...e) }), | |
| 960 | o.register(173, { | |
| 957 | o.register(170, { | |
| 958 | request: e, | |
| 959 | response: e, | |
| 960 | dedup: !0, | |
| 961 | onstream: async (e) => { | |
| 962 | try { | |
| 963 | for await (const o of e) { | |
| 964 | const n = t.api.core.readFileStream(...o) | |
| 965 | r(n, e).on("error", s) | |
| 966 | } | |
| 967 | } catch (r) { | |
| 968 | e.destroy(r) | |
| 969 | } | |
| 970 | }, | |
| 971 | }), | |
| 972 | o.register(171, { request: e, response: e, onrequest: (e) => t.api.core.saveToDisk(...e) }), | |
| 973 | o.register(172, { request: e, response: e, onrequest: (e) => t.api.core.clearFile(...e) }), | |
| 974 | o.register(173, { request: e, response: e, onrequest: (e) => t.api.core.unclearFile(...e) }), | |
| 975 | o.register(174, { request: e, response: e, onrequest: (e) => t.api.core.getFileCleared(...e) }), | |
| 976 | o.register(175, { | |
| 961 | 977 | request: e, |
| 962 | 978 | response: e, |
| 963 | 979 | dedup: !0, |
| … | … | @@ -972,7 +988,7 @@ module.exports = function (t, o) { |
| 972 | 988 | } |
| 973 | 989 | }, |
| 974 | 990 | }), |
| 975 | o.register(174, { | |
| 991 | o.register(176, { | |
| 976 | 992 | request: e, |
| 977 | 993 | response: e, |
| 978 | 994 | dedup: !0, |
| … | … | @@ -987,8 +1003,8 @@ module.exports = function (t, o) { |
| 987 | 1003 | } |
| 988 | 1004 | }, |
| 989 | 1005 | }), |
| 990 | o.register(175, { request: e, response: e, onrequest: (e) => t.api.core.getStats(...e) }), | |
| 991 | o.register(176, { | |
| 1006 | o.register(177, { request: e, response: e, onrequest: (e) => t.api.core.getStats(...e) }), | |
| 1007 | o.register(178, { | |
| 992 | 1008 | request: e, |
| 993 | 1009 | response: e, |
| 994 | 1010 | dedup: !0, |
| … | … | @@ -1003,7 +1019,7 @@ module.exports = function (t, o) { |
| 1003 | 1019 | } |
| 1004 | 1020 | }, |
| 1005 | 1021 | }), |
| 1006 | o.register(177, { | |
| 1022 | o.register(179, { | |
| 1007 | 1023 | request: e, |
| 1008 | 1024 | response: e, |
| 1009 | 1025 | dedup: !0, |
| … | … | @@ -1018,13 +1034,13 @@ module.exports = function (t, o) { |
| 1018 | 1034 | } |
| 1019 | 1035 | }, |
| 1020 | 1036 | }), |
| 1021 | o.register(178, { request: e, response: e, onrequest: (e) => t.api.core.lookupUsername(...e) }), | |
| 1022 | o.register(179, { | |
| 1037 | o.register(180, { request: e, response: e, onrequest: (e) => t.api.core.lookupUsername(...e) }), | |
| 1038 | o.register(181, { | |
| 1023 | 1039 | request: e, |
| 1024 | 1040 | response: e, |
| 1025 | 1041 | onrequest: (e) => t.api.core.lookupUserByMemberId(...e), |
| 1026 | 1042 | }), |
| 1027 | o.register(180, { | |
| 1043 | o.register(182, { | |
| 1028 | 1044 | request: e, |
| 1029 | 1045 | response: e, |
| 1030 | 1046 | dedup: !0, |
| … | … | @@ -1039,56 +1055,56 @@ module.exports = function (t, o) { |
| 1039 | 1055 | } |
| 1040 | 1056 | }, |
| 1041 | 1057 | }), |
| 1042 | o.register(181, { | |
| 1058 | o.register(183, { | |
| 1043 | 1059 | request: e, |
| 1044 | 1060 | response: e, |
| 1045 | 1061 | onrequest: (e) => t.api.core.registerUsername(...e), |
| 1046 | 1062 | }), |
| 1047 | o.register(182, { request: e, response: e, onrequest: (e) => t.api.core.updateUsername(...e) }), | |
| 1048 | o.register(183, { request: e, response: e, onrequest: (e) => t.api.core.searchUsername(...e) }), | |
| 1049 | o.register(184, { | |
| 1063 | o.register(184, { request: e, response: e, onrequest: (e) => t.api.core.updateUsername(...e) }), | |
| 1064 | o.register(185, { request: e, response: e, onrequest: (e) => t.api.core.searchUsername(...e) }), | |
| 1065 | o.register(186, { | |
| 1050 | 1066 | request: e, |
| 1051 | 1067 | response: e, |
| 1052 | 1068 | onrequest: (e) => t.api.core.getReservationsByKey(...e), |
| 1053 | 1069 | }), |
| 1054 | o.register(185, { request: e, response: e, onrequest: (e) => t.api.core.checkUsername(...e) }), | |
| 1055 | o.register(186, { | |
| 1070 | o.register(187, { request: e, response: e, onrequest: (e) => t.api.core.checkUsername(...e) }), | |
| 1071 | o.register(188, { | |
| 1056 | 1072 | request: e, |
| 1057 | 1073 | response: e, |
| 1058 | 1074 | onrequest: (e) => t.api.core.updateRoomPreferences(...e), |
| 1059 | 1075 | }), |
| 1060 | o.register(187, { | |
| 1076 | o.register(189, { | |
| 1061 | 1077 | request: e, |
| 1062 | 1078 | response: e, |
| 1063 | 1079 | onrequest: (e) => t.api.core.getRoomPreferences(...e), |
| 1064 | 1080 | }), |
| 1065 | o.register(188, { request: e, response: e, onrequest: (e) => t.api.core.audit(...e) }), | |
| 1066 | o.register(189, { request: e, response: e, onrequest: (e) => t.api.core.close(...e) }), | |
| 1067 | o.register(190, { request: e, response: e, onrequest: (e) => t.api.core.suspend(...e) }), | |
| 1068 | o.register(191, { request: e, response: e, onrequest: (e) => t.api.core.resume(...e) }), | |
| 1069 | o.register(192, { request: e, response: e, onrequest: (e) => t.api.core.getDebugFlags(...e) }), | |
| 1070 | o.register(193, { | |
| 1081 | o.register(190, { request: e, response: e, onrequest: (e) => t.api.core.audit(...e) }), | |
| 1082 | o.register(191, { request: e, response: e, onrequest: (e) => t.api.core.close(...e) }), | |
| 1083 | o.register(192, { request: e, response: e, onrequest: (e) => t.api.core.suspend(...e) }), | |
| 1084 | o.register(193, { request: e, response: e, onrequest: (e) => t.api.core.resume(...e) }), | |
| 1085 | o.register(194, { request: e, response: e, onrequest: (e) => t.api.core.getDebugFlags(...e) }), | |
| 1086 | o.register(195, { | |
| 1071 | 1087 | request: e, |
| 1072 | 1088 | response: e, |
| 1073 | 1089 | onrequest: (e) => t.api.core.updateDebugFlag(...e), |
| 1074 | 1090 | }), |
| 1075 | o.register(194, { request: e, response: e, onrequest: (e) => t.api.core.repair(...e) }), | |
| 1076 | o.register(195, { request: e, response: e, onrequest: (e) => t.api.core.rotateWriter(...e) }), | |
| 1077 | o.register(196, { request: e, response: e, onrequest: (e) => t.api.core.getRoomStats(...e) }), | |
| 1078 | o.register(197, { request: e, response: e, onrequest: (e) => t.api.core.compact(...e) }), | |
| 1079 | o.register(198, { request: e, response: e, onrequest: (e) => t.api.core.setUnread(...e) }), | |
| 1080 | o.register(199, { request: e, response: e, onrequest: (e) => t.api.core.getUnread(...e) }), | |
| 1081 | o.register(200, { | |
| 1091 | o.register(196, { request: e, response: e, onrequest: (e) => t.api.core.repair(...e) }), | |
| 1092 | o.register(197, { request: e, response: e, onrequest: (e) => t.api.core.rotateWriter(...e) }), | |
| 1093 | o.register(198, { request: e, response: e, onrequest: (e) => t.api.core.getRoomStats(...e) }), | |
| 1094 | o.register(199, { request: e, response: e, onrequest: (e) => t.api.core.compact(...e) }), | |
| 1095 | o.register(200, { request: e, response: e, onrequest: (e) => t.api.core.setUnread(...e) }), | |
| 1096 | o.register(201, { request: e, response: e, onrequest: (e) => t.api.core.getUnread(...e) }), | |
| 1097 | o.register(202, { | |
| 1082 | 1098 | request: e, |
| 1083 | 1099 | response: e, |
| 1084 | 1100 | onrequest: (e) => t.api.core.getUnreadAnchor(...e), |
| 1085 | 1101 | }), |
| 1086 | o.register(201, { | |
| 1102 | o.register(203, { | |
| 1087 | 1103 | request: e, |
| 1088 | 1104 | response: e, |
| 1089 | 1105 | onrequest: (e) => t.api.core.setUnreadAnchor(...e), |
| 1090 | 1106 | }), |
| 1091 | o.register(202, { | |
| 1107 | o.register(204, { | |
| 1092 | 1108 | request: e, |
| 1093 | 1109 | response: e, |
| 1094 | 1110 | dedup: !0, |
| … | … | @@ -1103,7 +1119,7 @@ module.exports = function (t, o) { |
| 1103 | 1119 | } |
| 1104 | 1120 | }, |
| 1105 | 1121 | }), |
| 1106 | o.register(203, { | |
| 1122 | o.register(205, { | |
| 1107 | 1123 | request: e, |
| 1108 | 1124 | response: e, |
| 1109 | 1125 | dedup: !0, |
| … | … | @@ -1118,7 +1134,7 @@ module.exports = function (t, o) { |
| 1118 | 1134 | } |
| 1119 | 1135 | }, |
| 1120 | 1136 | }), |
| 1121 | o.register(204, { | |
| 1137 | o.register(206, { | |
| 1122 | 1138 | request: e, |
| 1123 | 1139 | response: e, |
| 1124 | 1140 | dedup: !0, |
| … | … | @@ -1133,8 +1149,8 @@ module.exports = function (t, o) { |
| 1133 | 1149 | } |
| 1134 | 1150 | }, |
| 1135 | 1151 | }), |
| 1136 | o.register(205, { request: e, response: e, onrequest: (e) => t.api.core.boot(...e) }), | |
| 1137 | o.register(206, { | |
| 1152 | o.register(207, { request: e, response: e, onrequest: (e) => t.api.core.boot(...e) }), | |
| 1153 | o.register(208, { | |
| 1138 | 1154 | request: e, |
| 1139 | 1155 | response: e, |
| 1140 | 1156 | dedup: !0, |
| … | … | @@ -1149,12 +1165,12 @@ module.exports = function (t, o) { |
| 1149 | 1165 | } |
| 1150 | 1166 | }, |
| 1151 | 1167 | }), |
| 1152 | o.register(207, { | |
| 1168 | o.register(209, { | |
| 1153 | 1169 | request: e, |
| 1154 | 1170 | response: e, |
| 1155 | 1171 | onrequest: (e) => t.api.core.setCallRingingId(...e), |
| 1156 | 1172 | }), |
| 1157 | o.register(208, { | |
| 1173 | o.register(210, { | |
| 1158 | 1174 | request: e, |
| 1159 | 1175 | response: e, |
| 1160 | 1176 | dedup: !0, |
| … | … | @@ -1169,19 +1185,19 @@ module.exports = function (t, o) { |
| 1169 | 1185 | } |
| 1170 | 1186 | }, |
| 1171 | 1187 | }), |
| 1172 | o.register(209, { request: e, response: e, onrequest: (e) => t.api.core.getDHTSettings(...e) }), | |
| 1173 | o.register(210, { | |
| 1188 | o.register(211, { request: e, response: e, onrequest: (e) => t.api.core.getDHTSettings(...e) }), | |
| 1189 | o.register(212, { | |
| 1174 | 1190 | request: e, |
| 1175 | 1191 | response: e, |
| 1176 | 1192 | onrequest: (e) => t.api.core.updateDHTSettings(...e), |
| 1177 | 1193 | }), |
| 1178 | o.register(211, { | |
| 1194 | o.register(213, { | |
| 1179 | 1195 | request: e, |
| 1180 | 1196 | response: e, |
| 1181 | 1197 | onrequest: (e) => t.api.core.setRoomFavorite(...e), |
| 1182 | 1198 | }), |
| 1183 | o.register(212, { request: e, response: e, onrequest: (e) => t.api.core.clearOldFiles(...e) }), | |
| 1184 | o.register(213, { | |
| 1199 | o.register(214, { request: e, response: e, onrequest: (e) => t.api.core.clearOldFiles(...e) }), | |
| 1200 | o.register(215, { | |
| 1185 | 1201 | request: e, |
| 1186 | 1202 | response: e, |
| 1187 | 1203 | dedup: !0, |
| … | … | @@ -1196,21 +1212,21 @@ module.exports = function (t, o) { |
| 1196 | 1212 | } |
| 1197 | 1213 | }, |
| 1198 | 1214 | }), |
| 1199 | o.register(214, { request: e, response: e, onrequest: (e) => t.api.preferences.update(...e) }), | |
| 1200 | o.register(215, { request: e, response: e, onrequest: (e) => t.api.preferences.query(...e) }), | |
| 1201 | o.register(216, { request: e, response: e, onrequest: (e) => t.api.call.authorize(...e) }), | |
| 1202 | o.register(217, { request: e, response: e, onrequest: (e) => t.api.call.deauthorize(...e) }), | |
| 1203 | o.register(218, { request: e, response: e, onrequest: (e) => t.api.call.joinPeer(...e) }), | |
| 1204 | o.register(219, { request: e, response: e, onrequest: (e) => t.api.call.leavePeer(...e) }), | |
| 1205 | o.register(220, { request: e, response: e, onrequest: (e) => t.api.call.requestTrack(...e) }), | |
| 1206 | o.register(221, { request: e, response: e, onrequest: (e) => t.api.call.unrequestTrack(...e) }), | |
| 1207 | o.register(222, { request: e, response: e, onrequest: (e) => t.api.call.signalMedia(...e) }), | |
| 1208 | o.register(223, { | |
| 1215 | o.register(216, { request: e, response: e, onrequest: (e) => t.api.preferences.update(...e) }), | |
| 1216 | o.register(217, { request: e, response: e, onrequest: (e) => t.api.preferences.query(...e) }), | |
| 1217 | o.register(218, { request: e, response: e, onrequest: (e) => t.api.call.authorize(...e) }), | |
| 1218 | o.register(219, { request: e, response: e, onrequest: (e) => t.api.call.deauthorize(...e) }), | |
| 1219 | o.register(220, { request: e, response: e, onrequest: (e) => t.api.call.joinPeer(...e) }), | |
| 1220 | o.register(221, { request: e, response: e, onrequest: (e) => t.api.call.leavePeer(...e) }), | |
| 1221 | o.register(222, { request: e, response: e, onrequest: (e) => t.api.call.requestTrack(...e) }), | |
| 1222 | o.register(223, { request: e, response: e, onrequest: (e) => t.api.call.unrequestTrack(...e) }), | |
| 1223 | o.register(224, { request: e, response: e, onrequest: (e) => t.api.call.signalMedia(...e) }), | |
| 1224 | o.register(225, { | |
| 1209 | 1225 | request: e, |
| 1210 | 1226 | response: e, |
| 1211 | 1227 | onrequest: (e) => t.api.call.getRequestedTracks(...e), |
| 1212 | 1228 | }), |
| 1213 | o.register(224, { | |
| 1229 | o.register(226, { | |
| 1214 | 1230 | request: e, |
| 1215 | 1231 | response: e, |
| 1216 | 1232 | dedup: !0, |
| … | … | @@ -1225,7 +1241,7 @@ module.exports = function (t, o) { |
| 1225 | 1241 | } |
| 1226 | 1242 | }, |
| 1227 | 1243 | }), |
| 1228 | o.register(225, { | |
| 1244 | o.register(227, { | |
| 1229 | 1245 | request: e, |
| 1230 | 1246 | response: e, |
| 1231 | 1247 | dedup: !0, |
| … | … | @@ -1240,7 +1256,7 @@ module.exports = function (t, o) { |
| 1240 | 1256 | } |
| 1241 | 1257 | }, |
| 1242 | 1258 | }), |
| 1243 | o.register(226, { | |
| 1259 | o.register(228, { | |
| 1244 | 1260 | request: e, |
| 1245 | 1261 | response: e, |
| 1246 | 1262 | dedup: !0, |
| … | … | @@ -1255,11 +1271,11 @@ module.exports = function (t, o) { |
| 1255 | 1271 | } |
| 1256 | 1272 | }, |
| 1257 | 1273 | }), |
| 1258 | o.register(227, { request: e, response: e, onrequest: (e) => t.api.call.shareTrack(...e) }), | |
| 1259 | o.register(228, { request: e, response: e, onrequest: (e) => t.api.call.unshareTrack(...e) }), | |
| 1260 | o.register(229, { request: e, response: e, onrequest: (e) => t.api.call.relayTrack(...e) }), | |
| 1261 | o.register(230, { request: e, response: e, onrequest: (e) => t.api.call.unrelayTrack(...e) }), | |
| 1262 | o.register(231, { | |
| 1274 | o.register(229, { request: e, response: e, onrequest: (e) => t.api.call.shareTrack(...e) }), | |
| 1275 | o.register(230, { request: e, response: e, onrequest: (e) => t.api.call.unshareTrack(...e) }), | |
| 1276 | o.register(231, { request: e, response: e, onrequest: (e) => t.api.call.relayTrack(...e) }), | |
| 1277 | o.register(232, { request: e, response: e, onrequest: (e) => t.api.call.unrelayTrack(...e) }), | |
| 1278 | o.register(233, { | |
| 1263 | 1279 | request: e, |
| 1264 | 1280 | response: e, |
| 1265 | 1281 | dedup: !0, |
| … | … | @@ -1274,14 +1290,14 @@ module.exports = function (t, o) { |
| 1274 | 1290 | } |
| 1275 | 1291 | }, |
| 1276 | 1292 | }), |
| 1277 | o.register(232, { | |
| 1293 | o.register(234, { | |
| 1278 | 1294 | request: e, |
| 1279 | 1295 | response: e, |
| 1280 | 1296 | onrequest: (e) => t.api.call.getAvailableTracks(...e), |
| 1281 | 1297 | }), |
| 1282 | o.register(233, { request: e, response: e, onrequest: (e) => t.api.call.setPresent(...e) }), | |
| 1283 | o.register(234, { request: e, response: e, onrequest: (e) => t.api.call.setNotPresent(...e) }), | |
| 1284 | o.register(235, { | |
| 1298 | o.register(235, { request: e, response: e, onrequest: (e) => t.api.call.setPresent(...e) }), | |
| 1299 | o.register(236, { request: e, response: e, onrequest: (e) => t.api.call.setNotPresent(...e) }), | |
| 1300 | o.register(237, { | |
| 1285 | 1301 | request: e, |
| 1286 | 1302 | response: e, |
| 1287 | 1303 | dedup: !0, |
| … | … | @@ -1296,17 +1312,17 @@ module.exports = function (t, o) { |
| 1296 | 1312 | } |
| 1297 | 1313 | }, |
| 1298 | 1314 | }), |
| 1299 | o.register(236, { request: e, response: e, onrequest: (e) => t.api.call.getPresence(...e) }), | |
| 1300 | o.register(237, { request: e, response: e, onrequest: (e) => t.api.tracing.start(...e) }), | |
| 1301 | o.register(238, { | |
| 1315 | o.register(238, { request: e, response: e, onrequest: (e) => t.api.call.getPresence(...e) }), | |
| 1316 | o.register(239, { request: e, response: e, onrequest: (e) => t.api.tracing.start(...e) }), | |
| 1317 | o.register(240, { | |
| 1302 | 1318 | request: e, |
| 1303 | 1319 | response: e, |
| 1304 | 1320 | onrequest: (e) => t.api.tracing.addFrontendTrace(...e), |
| 1305 | 1321 | }), |
| 1306 | o.register(239, { request: e, response: e, onrequest: (e) => t.api.console.log(...e) }), | |
| 1307 | o.register(240, { request: e, response: e, onrequest: (e) => t.api.console.warn(...e) }), | |
| 1308 | o.register(241, { request: e, response: e, onrequest: (e) => t.api.console.error(...e) }), | |
| 1309 | o.register(242, { | |
| 1322 | o.register(241, { request: e, response: e, onrequest: (e) => t.api.console.log(...e) }), | |
| 1323 | o.register(242, { request: e, response: e, onrequest: (e) => t.api.console.warn(...e) }), | |
| 1324 | o.register(243, { request: e, response: e, onrequest: (e) => t.api.console.error(...e) }), | |
| 1325 | o.register(244, { | |
| 1310 | 1326 | request: e, |
| 1311 | 1327 | response: e, |
| 1312 | 1328 | dedup: !0, |
| … | … | @@ -1321,8 +1337,8 @@ module.exports = function (t, o) { |
| 1321 | 1337 | } |
| 1322 | 1338 | }, |
| 1323 | 1339 | }), |
| 1324 | o.register(243, { request: e, response: e, onrequest: (e) => t.api.network.query(...e) }), | |
| 1325 | o.register(244, { | |
| 1340 | o.register(245, { request: e, response: e, onrequest: (e) => t.api.network.query(...e) }), | |
| 1341 | o.register(246, { | |
| 1326 | 1342 | request: e, |
| 1327 | 1343 | response: e, |
| 1328 | 1344 | dedup: !0, |
| … | … | @@ -1337,8 +1353,8 @@ module.exports = function (t, o) { |
| 1337 | 1353 | } |
| 1338 | 1354 | }, |
| 1339 | 1355 | }), |
| 1340 | o.register(245, { request: e, response: e, onrequest: (e) => t.api.network.debug(...e) }), | |
| 1341 | o.register(246, { | |
| 1356 | o.register(247, { request: e, response: e, onrequest: (e) => t.api.network.debug(...e) }), | |
| 1357 | o.register(248, { | |
| 1342 | 1358 | request: e, |
| 1343 | 1359 | response: e, |
| 1344 | 1360 | dedup: !0, |
| … | … | @@ -1353,36 +1369,36 @@ module.exports = function (t, o) { |
| 1353 | 1369 | } |
| 1354 | 1370 | }, |
| 1355 | 1371 | }), |
| 1356 | o.register(247, { | |
| 1372 | o.register(249, { | |
| 1357 | 1373 | request: e, |
| 1358 | 1374 | response: e, |
| 1359 | 1375 | onrequest: (e) => t.api.debug.getCurrentRoomStats(...e), |
| 1360 | 1376 | }), |
| 1361 | o.register(248, { | |
| 1377 | o.register(250, { | |
| 1362 | 1378 | request: e, |
| 1363 | 1379 | response: e, |
| 1364 | 1380 | onrequest: (e) => t.api.debug.enableInspector(...e), |
| 1365 | 1381 | }), |
| 1366 | o.register(249, { | |
| 1382 | o.register(251, { | |
| 1367 | 1383 | request: e, |
| 1368 | 1384 | response: e, |
| 1369 | 1385 | onrequest: (e) => t.api.debug.disableInspector(...e), |
| 1370 | 1386 | }), |
| 1371 | o.register(250, { | |
| 1387 | o.register(252, { | |
| 1372 | 1388 | request: e, |
| 1373 | 1389 | response: e, |
| 1374 | 1390 | onrequest: (e) => t.api.debug.getInspectorKey(...e), |
| 1375 | 1391 | }), |
| 1376 | o.register(251, { request: e, response: e, onrequest: (e) => t.api.debug.processTop(...e) }), | |
| 1377 | o.register(252, { request: e, response: e, onrequest: (e) => t.api.debug.heapSnapshot(...e) }), | |
| 1378 | o.register(253, { request: e, response: e, onrequest: (e) => t.api.debug.hash(...e) }), | |
| 1379 | o.register(254, { | |
| 1392 | o.register(253, { request: e, response: e, onrequest: (e) => t.api.debug.processTop(...e) }), | |
| 1393 | o.register(254, { request: e, response: e, onrequest: (e) => t.api.debug.heapSnapshot(...e) }), | |
| 1394 | o.register(255, { request: e, response: e, onrequest: (e) => t.api.debug.hash(...e) }), | |
| 1395 | o.register(256, { | |
| 1380 | 1396 | request: e, |
| 1381 | 1397 | response: e, |
| 1382 | 1398 | onrequest: (e) => t.api.debug.generateSyntheticError(...e), |
| 1383 | 1399 | }), |
| 1384 | o.register(255, { request: e, response: e, onrequest: (e) => t.api.debug.resetUnreads(...e) }), | |
| 1385 | o.register(256, { request: e, response: e, onrequest: (e) => t.api.pear.teardown(...e) }), | |
| 1386 | o.register(257, { request: e, response: e, onrequest: (e) => t.api.pear.selfDestruct(...e) }), | |
| 1387 | o.register(258, { request: e, response: e, onrequest: (e) => t.api.feedback.send(...e) })) | |
| 1400 | o.register(257, { request: e, response: e, onrequest: (e) => t.api.debug.resetUnreads(...e) }), | |
| 1401 | o.register(258, { request: e, response: e, onrequest: (e) => t.api.pear.teardown(...e) }), | |
| 1402 | o.register(259, { request: e, response: e, onrequest: (e) => t.api.pear.selfDestruct(...e) }), | |
| 1403 | o.register(260, { request: e, response: e, onrequest: (e) => t.api.feedback.send(...e) })) | |
| 1388 | 1404 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-core", |
| 3 | "version": "4.14.4", | |
| 3 | "version": "4.15.7", | |
| 4 | 4 | "description": "A version of keet-core built with rocksdb and hyperdb", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "imports": { |
| … | … | @@ -83,12 +83,12 @@ |
| 83 | 83 | "homepage": "https://github.com/holepunchto/keet-core#readme", |
| 84 | 84 | "dependencies": { |
| 85 | 85 | "@holepunchto/hyperdiscovery": "^1.1.0", |
| 86 | "@holepunchto/hyperindex": "2.3.5", | |
| 86 | "@holepunchto/hyperindex": "2.4.0", | |
| 87 | 87 | "@holepunchto/keet-call": "^10.3.3", |
| 88 | 88 | "@holepunchto/keet-core-api": "^2.0.0", |
| 89 | 89 | "@holepunchto/keet-debug-helper": "^2.0.3", |
| 90 | 90 | "@holepunchto/keet-default-config": "^3.0.0", |
| 91 | "@holepunchto/keet-indexing": "6.3.2", | |
| 91 | "@holepunchto/keet-indexing": "6.4.0", | |
| 92 | 92 | "@holepunchto/keet-push": "^4.0.0", |
| 93 | 93 | "@holepunchto/keet-registry": "^3.3.1", |
| 94 | 94 | "@holepunchto/keet-registry-client": "^5.0.0", |
| … | … | @@ -102,15 +102,15 @@ |
| 102 | 102 | "bare-events": "^2.8.2", |
| 103 | 103 | "bare-file-logger": "^1.2.1", |
| 104 | 104 | "bare-fs": "^4.4.4", |
| 105 | "bare-inspector": "^4.0.3", | |
| 105 | "bare-inspector": "^6.0.1", | |
| 106 | 106 | "bare-logger": "^2.0.2", |
| 107 | "bare-performance": "^1.3.0", | |
| 107 | "bare-performance": "^2.0.0", | |
| 108 | 108 | "bare-semver": "^1.0.2", |
| 109 | 109 | "bare-zlib": "^1.3.1", |
| 110 | 110 | "bip39-mnemonic": "^2.4.0", |
| 111 | 111 | "blind-peering": "^2.0.1", |
| 112 | 112 | "bundlebee": "^1.2.0", |
| 113 | "compact-encoding": "^2.16.1", | |
| 113 | "compact-encoding": "^3.0.0", | |
| 114 | 114 | "corestore": "^7.6.0", |
| 115 | 115 | "db-lock": "^1.2.0", |
| 116 | 116 | "deterministic-sealed-box": "^1.0.0", |
| … | … | @@ -124,7 +124,7 @@ |
| 124 | 124 | "hypercore-id-encoding": "^1.3.0", |
| 125 | 125 | "hypercore-proof-queue": "^2.0.2", |
| 126 | 126 | "hypercore-storage": "^2.0.0", |
| 127 | "hyperdb": "^5.0.0", | |
| 127 | "hyperdb": "^6.6.3", | |
| 128 | 128 | "hyperdht": "^6.28.0", |
| 129 | 129 | "hyperdispatch": "^1.1.0", |
| 130 | 130 | "hyperschema": "^1.10.4", |
| … | … | @@ -142,7 +142,7 @@ |
| 142 | 142 | "rocksdb-native": "^3.5.10", |
| 143 | 143 | "safety-catch": "^1.0.2", |
| 144 | 144 | "scope-lock": "^1.2.4", |
| 145 | "sentry-bare": "^0.1.0", | |
| 145 | "sentry-bare": "^0.2.0", | |
| 146 | 146 | "sodium-native": "^5.0.1", |
| 147 | 147 | "suspendify": "^1.7.0", |
| 148 | 148 | "task-backoff": "^1.0.1", |
| … | … | @@ -153,24 +153,23 @@ |
| 153 | 153 | "z32": "^1.1.0" |
| 154 | 154 | }, |
| 155 | 155 | "devDependencies": { |
| 156 | "@holepunchto/keet-fcm-gatekeeper": "^1.0.0", | |
| 157 | "@hyperswarm/rpc": "^3.4.1", | |
| 158 | "@holepunchto/hyperschema-regen": "^2.0.7", | |
| 156 | "@holepunchto/hyperschema-regen": "^3.0.0", | |
| 159 | 157 | "@holepunchto/keet-package": "^3.0.0", |
| 160 | 158 | "@holepunchto/keet-registry-service": "^6.0.0", |
| 159 | "@hyperswarm/rpc": "^3.4.1", | |
| 161 | 160 | "@hyperswarm/testnet": "^3.1.4", |
| 162 | 161 | "bare-channel": "^5.2.0", |
| 163 | "bare-fetch": "^2.2.1", | |
| 162 | "bare-fetch": "^3.0.0", | |
| 164 | 163 | "bare-path": "^3.0.0", |
| 165 | 164 | "bare-process": "^4.2.1", |
| 166 | "bare-subprocess": "^5.1.0", | |
| 165 | "bare-subprocess": "^6.0.0", | |
| 167 | 166 | "blind-peer": "^3.2.0", |
| 168 | 167 | "brittle": "^3.7.0", |
| 169 | 168 | "graceful-goodbye": "^1.3.3", |
| 170 | 169 | "hyperbee": "^2.20.4", |
| 171 | 170 | "hyperbee2": "^2.9.1", |
| 172 | 171 | "hypercore": "^11.26.0", |
| 173 | "hyperdrive": "^12.2.0", | |
| 172 | "hyperdrive": "^13.3.2", | |
| 174 | 173 | "hypermininet": "^1.4.0", |
| 175 | 174 | "lunte": "^1.3.0", |
| 176 | 175 | "math-random-seed": "^2.0.0", |
| … | … | @@ -106,5 +106,9 @@ module.exports = function (e) { |
| 106 | 106 | t.register({ name: "add-call-stream", requestType: "@keet/add-call-stream" }), |
| 107 | 107 | t.register({ name: "remove-call-stream", requestType: "@keet/remove-call-stream" }), |
| 108 | 108 | t.register({ name: "test-crash", requestType: "@keet/test-crash-operation" }), |
| 109 | t.register({ name: "test-dispatch-error", requestType: "@keet/test-dispatch-error-operation" })) | |
| 109 | t.register({ name: "test-dispatch-error", requestType: "@keet/test-dispatch-error-operation" }), | |
| 110 | r.register({ | |
| 111 | name: "shorten-device-attestation", | |
| 112 | requestType: "@keet-private-id/shorten-device-attestation-operation", | |
| 113 | })) | |
| 110 | 114 | } |
| … | … | @@ -3,6 +3,7 @@ module.exports = function (o) { |
| 3 | 3 | const i = o.namespace("local") |
| 4 | 4 | ;(i.require(e.join(__dirname, "../../../lib/core/hyperdb/local/local.js")), |
| 5 | 5 | i.collections.register({ name: "stats", schema: "@local/stats", key: [] }), |
| 6 | i.collections.register({ name: "ota-actions", schema: "@local/ota-actions", key: [] }), | |
| 6 | 7 | i.collections.register({ name: "migrations", schema: "@local/migration-status", key: [] }), |
| 7 | 8 | i.collections.register({ |
| 8 | 9 | name: "room-migration-stats", |
| … | … | @@ -213,5 +214,10 @@ module.exports = function (o) { |
| 213 | 214 | map: "roomsByFavoriteAndTimestampMap", |
| 214 | 215 | }, |
| 215 | 216 | }), |
| 216 | i.collections.register({ name: "environment", schema: "@local/environment-record", key: [] })) | |
| 217 | i.collections.register({ name: "environment", schema: "@local/environment-record", key: [] }), | |
| 218 | i.collections.register({ | |
| 219 | name: "device-attestations", | |
| 220 | schema: "@local/device-attestation", | |
| 221 | key: ["deviceKey"], | |
| 222 | })) | |
| 217 | 223 | } |
| … | … | @@ -15,6 +15,7 @@ module.exports = function (e) { |
| 15 | 15 | { name: "autoupgrade", type: "uint" }, |
| 16 | 16 | { name: "forceUpdate", type: "uint" }, |
| 17 | 17 | { name: "minVersion", type: "@config/semver" }, |
| 18 | { name: "stable", type: "uint" }, | |
| 18 | 19 | ], |
| 19 | 20 | }), |
| 20 | 21 | r.register({ |
| … | … | @@ -44,7 +45,13 @@ module.exports = function (e) { |
| 44 | 45 | { name: "verified", type: "fixed32", array: !0 }, |
| 45 | 46 | ], |
| 46 | 47 | }), |
| 47 | r.register({ name: "profile", fields: [{ name: "disableUnreadSync", type: "bool" }] }), | |
| 48 | r.register({ | |
| 49 | name: "profile", | |
| 50 | fields: [ | |
| 51 | { name: "disableUnreadSync", type: "bool" }, | |
| 52 | { name: "otaResyncPrivateProfileBump", type: "uint" }, | |
| 53 | ], | |
| 54 | }), | |
| 48 | 55 | r.register({ name: "debug", fields: [{ name: "unlockHash", type: "fixed32" }] }), |
| 49 | 56 | r.register({ |
| 50 | 57 | name: "keet-config", |
| … | … | @@ -38,7 +38,7 @@ module.exports = function (a) { |
| 38 | 38 | r = ["2c64e9baa7529518937c541567cb2a0da371239937ab9cd1a85c372c18b396f2"].map((a) => |
| 39 | 39 | e.decode(a), |
| 40 | 40 | ), |
| 41 | i = ["39720256e9d51be850afe8596c2aca8c4ad1e2d539a16c1470652791b7be2d10"].map((a) => | |
| 41 | i = ["8298d53151dc2147c604447ec5268f1eea818192d4231b757563020428493ec5"].map((a) => | |
| 42 | 42 | e.decode(a), |
| 43 | 43 | ), |
| 44 | 44 | p = e.decode("05f1ec96118a019d1a02bea752745d47b6a8c562aca3cb65d6ba76a1641fc83b"), |
| … | … | @@ -49,8 +49,9 @@ module.exports = function (a) { |
| 49 | 49 | versions: { |
| 50 | 50 | minimum: 14, |
| 51 | 51 | forceUpdate: 1, |
| 52 | autoupgrade: 26, | |
| 52 | autoupgrade: 28, | |
| 53 | 53 | minVersion: { major: 4, minor: 12, patch: 3 }, |
| 54 | stable: 29, | |
| 54 | 55 | }, |
| 55 | 56 | services: { |
| 56 | 57 | userRegistries: d, |
| … | … | @@ -49,7 +49,7 @@ module.exports = function (c) { |
| 49 | 49 | minimum: 14, |
| 50 | 50 | forceUpdate: 1, |
| 51 | 51 | autoupgrade: 23, |
| 52 | minVersion: { major: 4, minor: 12, patch: 3 }, | |
| 52 | minVersion: { major: 4, minor: 14, patch: 0 }, | |
| 53 | 53 | }, |
| 54 | 54 | services: { |
| 55 | 55 | userRegistries: o, |
| … | … | @@ -1210,6 +1210,7 @@ module.exports = function (e) { |
| 1210 | 1210 | { name: "isMentionsOnlyMuted", type: "bool" }, |
| 1211 | 1211 | { name: "isReadOnly", type: "bool" }, |
| 1212 | 1212 | { name: "isFavorite", type: "bool" }, |
| 1213 | { name: "isUnread", type: "bool" }, | |
| 1213 | 1214 | ], |
| 1214 | 1215 | }), |
| 1215 | 1216 | a.register({ |
| … | … | @@ -1365,8 +1366,18 @@ module.exports = function (e) { |
| 1365 | 1366 | name: "remove-unreads-key-operation", |
| 1366 | 1367 | fields: [i, { name: "key", type: "@keet/core-key", required: !0 }], |
| 1367 | 1368 | }), |
| 1368 | a.register({ name: "settings", fields: [{ name: "disableReadReceipts", type: "bool" }] }), | |
| 1369 | a.register({ name: "user-settings-key", strings: !0, enum: ["disableReadReceipts"] }), | |
| 1369 | a.register({ | |
| 1370 | name: "settings", | |
| 1371 | fields: [ | |
| 1372 | { name: "disableReadReceipts", type: "bool" }, | |
| 1373 | { name: "stripAttachmentMetadata", type: "bool" }, | |
| 1374 | ], | |
| 1375 | }), | |
| 1376 | a.register({ | |
| 1377 | name: "user-settings-key", | |
| 1378 | strings: !0, | |
| 1379 | enum: ["disableReadReceipts", "stripAttachmentMetadata"], | |
| 1380 | }), | |
| 1370 | 1381 | a.register({ |
| 1371 | 1382 | name: "update-settings-operation", |
| 1372 | 1383 | fields: [ |
| … | … | @@ -1374,5 +1385,14 @@ module.exports = function (e) { |
| 1374 | 1385 | { name: "key", type: "@keet-private-id/user-settings-key", required: !0 }, |
| 1375 | 1386 | { name: "settings", type: "@keet-private-id/settings", required: !0 }, |
| 1376 | 1387 | ], |
| 1388 | }), | |
| 1389 | a.register({ | |
| 1390 | name: "shorten-device-attestation-operation", | |
| 1391 | fields: [ | |
| 1392 | i, | |
| 1393 | { name: "deviceKey", type: "@keet/device-key", required: !0 }, | |
| 1394 | { name: "deviceProof", type: "buffer", required: !0 }, | |
| 1395 | { name: "writerProof", type: "buffer", required: !0 }, | |
| 1396 | ], | |
| 1377 | 1397 | })) |
| 1378 | 1398 | } |
| … | … | @@ -18,6 +18,10 @@ module.exports = function (t) { |
| 18 | 18 | { name: "activeRooms", type: "uint", required: !0 }, |
| 19 | 19 | ], |
| 20 | 20 | }), |
| 21 | r.register({ | |
| 22 | name: "ota-actions", | |
| 23 | fields: [{ name: "otaResyncPrivateProfileBump", type: "uint" }], | |
| 24 | }), | |
| 21 | 25 | r.register({ |
| 22 | 26 | name: "migration-status", |
| 23 | 27 | fields: [{ name: "version", type: "uint", required: !0 }], |
| … | … | @@ -67,6 +71,7 @@ module.exports = function (t) { |
| 67 | 71 | { name: "entropy", type: "buffer" }, |
| 68 | 72 | { name: "swap", type: "@keet-private-id/identity-swap" }, |
| 69 | 73 | { name: "swapV2", type: "@keet-private-id/identity-swap-v2" }, |
| 74 | { name: "proofShortenedAt", type: "uint" }, | |
| 70 | 75 | ], |
| 71 | 76 | }), |
| 72 | 77 | r.register({ |
| … | … | @@ -355,5 +360,13 @@ module.exports = function (t) { |
| 355 | 360 | { name: "buildType", type: "@keet/build-type", required: !0 }, |
| 356 | 361 | { name: "latestOfflineAbi", type: "uint" }, |
| 357 | 362 | ], |
| 363 | }), | |
| 364 | r.register({ | |
| 365 | name: "device-attestation", | |
| 366 | fields: [ | |
| 367 | { name: "deviceKey", type: "@keet/device-key", required: !0 }, | |
| 368 | { name: "proof", type: "buffer", required: !0 }, | |
| 369 | { name: "createdAt", type: "uint", required: !0 }, | |
| 370 | ], | |
| 358 | 371 | })) |
| 359 | 372 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 6 | |
| 3 | let o = 6 | |
| 2 | d = 7 | |
| 3 | let o = 7 | |
| 4 | 4 | const n = { |
| 5 | 5 | preencode(d, o) { |
| 6 | 6 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.length)) |
| … | … | @@ -204,7 +204,7 @@ const n = { |
| 204 | 204 | ;(v.preencode(d, o.pointer), |
| 205 | 205 | d.end++, |
| 206 | 206 | o.metadata && g.preencode(d, o.metadata), |
| 207 | o.preview && Op.preencode(d, o.preview), | |
| 207 | o.preview && zp.preencode(d, o.preview), | |
| 208 | 208 | o.hash && e.fixed32.preencode(d, o.hash)) |
| 209 | 209 | }, |
| 210 | 210 | encode(d, o) { |
| … | … | @@ -212,7 +212,7 @@ const n = { |
| 212 | 212 | ;(v.encode(d, o.pointer), |
| 213 | 213 | e.uint.encode(d, n), |
| 214 | 214 | o.metadata && g.encode(d, o.metadata), |
| 215 | o.preview && Op.encode(d, o.preview), | |
| 215 | o.preview && zp.encode(d, o.preview), | |
| 216 | 216 | o.hash && e.fixed32.encode(d, o.hash)) |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| … | … | @@ -221,7 +221,7 @@ const n = { |
| 221 | 221 | return { |
| 222 | 222 | pointer: o, |
| 223 | 223 | metadata: 1 & n ? g.decode(d) : null, |
| 224 | preview: 2 & n ? Op.decode(d) : null, | |
| 224 | preview: 2 & n ? zp.decode(d) : null, | |
| 225 | 225 | hash: 4 & n ? e.fixed32.decode(d) : null, |
| 226 | 226 | } |
| 227 | 227 | }, |
| … | … | @@ -355,7 +355,7 @@ const n = { |
| 355 | 355 | return { isMuted: !!(1 & o), isBanned: !!(2 & o), isShadowBanned: !!(4 & o) } |
| 356 | 356 | }, |
| 357 | 357 | }, |
| 358 | I = { | |
| 358 | S = { | |
| 359 | 359 | preencode(d, o) { |
| 360 | 360 | e.uint.preencode(d, o.version) |
| 361 | 361 | }, |
| … | … | @@ -364,7 +364,7 @@ const n = { |
| 364 | 364 | }, |
| 365 | 365 | decode: (d) => ({ version: e.uint.decode(d) }), |
| 366 | 366 | }, |
| 367 | S = { | |
| 367 | I = { | |
| 368 | 368 | preencode(d, o) { |
| 369 | 369 | ;(e.uint.preencode(d, o.total), e.uint.preencode(d, o.active)) |
| 370 | 370 | }, |
| … | … | @@ -421,11 +421,11 @@ const n = { |
| 421 | 421 | }, |
| 422 | 422 | decode: (d) => ({ clock: e.uint.decode(d) }), |
| 423 | 423 | }, |
| 424 | E = e.frame(S), | |
| 424 | E = e.frame(I), | |
| 425 | 425 | B = e.frame(F), |
| 426 | 426 | N = e.frame(L), |
| 427 | 427 | O = e.frame(j), |
| 428 | V = { | |
| 428 | U = { | |
| 429 | 429 | preencode(e, d) { |
| 430 | 430 | ;(E.preencode(e, d.devices), |
| 431 | 431 | B.preencode(e, d.members), |
| … | … | @@ -442,7 +442,7 @@ const n = { |
| 442 | 442 | files: O.decode(e), |
| 443 | 443 | }), |
| 444 | 444 | }, |
| 445 | U = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 445 | V = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 446 | 446 | J = { |
| 447 | 447 | preencode(e, d) { |
| 448 | 448 | e.end++ |
| … | … | @@ -499,7 +499,7 @@ const n = { |
| 499 | 499 | } |
| 500 | 500 | }, |
| 501 | 501 | }, |
| 502 | W = e.frame(I), | |
| 502 | W = e.frame(S), | |
| 503 | 503 | H = e.frame(z), |
| 504 | 504 | G = { |
| 505 | 505 | preencode(d, o) { |
| … | … | @@ -588,7 +588,7 @@ const n = { |
| 588 | 588 | preencode(d, o) { |
| 589 | 589 | ;(d.end++, |
| 590 | 590 | o.title && e.string.preencode(d, o.title), |
| 591 | o.avatar && Vp.preencode(d, o.avatar), | |
| 591 | o.avatar && Wp.preencode(d, o.avatar), | |
| 592 | 592 | o.description && e.string.preencode(d, o.description), |
| 593 | 593 | o.supportedLanguages && $.preencode(d, o.supportedLanguages), |
| 594 | 594 | o.blindPeers && _.preencode(d, o.blindPeers)) |
| … | … | @@ -602,7 +602,7 @@ const n = { |
| 602 | 602 | (o.blindPeers ? 16 : 0) |
| 603 | 603 | ;(e.uint.encode(d, n), |
| 604 | 604 | o.title && e.string.encode(d, o.title), |
| 605 | o.avatar && Vp.encode(d, o.avatar), | |
| 605 | o.avatar && Wp.encode(d, o.avatar), | |
| 606 | 606 | o.description && e.string.encode(d, o.description), |
| 607 | 607 | o.supportedLanguages && $.encode(d, o.supportedLanguages), |
| 608 | 608 | o.blindPeers && _.encode(d, o.blindPeers)) |
| … | … | @@ -611,7 +611,7 @@ const n = { |
| 611 | 611 | const o = e.uint.decode(d) |
| 612 | 612 | return { |
| 613 | 613 | title: 1 & o ? e.string.decode(d) : null, |
| 614 | avatar: 2 & o ? Vp.decode(d) : null, | |
| 614 | avatar: 2 & o ? Wp.decode(d) : null, | |
| 615 | 615 | description: 4 & o ? e.string.decode(d) : null, |
| 616 | 616 | supportedLanguages: 8 & o ? $.decode(d) : null, |
| 617 | 617 | blindPeers: 16 & o ? _.decode(d) : null, |
| … | … | @@ -673,7 +673,7 @@ const n = { |
| 673 | 673 | ;(e.fixed32.preencode(d, o.key), |
| 674 | 674 | e.fixed32.preencode(d, o.memberKey), |
| 675 | 675 | se.preencode(d, o.status), |
| 676 | Up.preencode(d, o.profile), | |
| 676 | Hp.preencode(d, o.profile), | |
| 677 | 677 | d.end++, |
| 678 | 678 | o.invitation && pe.preencode(d, o.invitation)) |
| 679 | 679 | }, |
| … | … | @@ -682,7 +682,7 @@ const n = { |
| 682 | 682 | ;(e.fixed32.encode(d, o.key), |
| 683 | 683 | e.fixed32.encode(d, o.memberKey), |
| 684 | 684 | se.encode(d, o.status), |
| 685 | Up.encode(d, o.profile), | |
| 685 | Hp.encode(d, o.profile), | |
| 686 | 686 | e.uint.encode(d, n), |
| 687 | 687 | o.invitation && pe.encode(d, o.invitation)) |
| 688 | 688 | }, |
| … | … | @@ -690,7 +690,7 @@ const n = { |
| 690 | 690 | key: e.fixed32.decode(d), |
| 691 | 691 | memberKey: e.fixed32.decode(d), |
| 692 | 692 | status: se.decode(d), |
| 693 | profile: Up.decode(d), | |
| 693 | profile: Hp.decode(d), | |
| 694 | 694 | invitation: 1 & e.uint.decode(d) ? pe.decode(d) : null, |
| 695 | 695 | }), |
| 696 | 696 | }, |
| … | … | @@ -700,7 +700,7 @@ const n = { |
| 700 | 700 | d.end++, |
| 701 | 701 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 702 | 702 | o.displayName && e.string.preencode(d, o.displayName), |
| 703 | o.avatar && Jp.preencode(d, o.avatar), | |
| 703 | o.avatar && Gp.preencode(d, o.avatar), | |
| 704 | 704 | o.username && e.string.preencode(d, o.username)) |
| 705 | 705 | }, |
| 706 | 706 | encode(d, o) { |
| … | … | @@ -710,7 +710,7 @@ const n = { |
| 710 | 710 | e.uint.encode(d, n), |
| 711 | 711 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 712 | 712 | o.displayName && e.string.encode(d, o.displayName), |
| 713 | o.avatar && Jp.encode(d, o.avatar), | |
| 713 | o.avatar && Gp.encode(d, o.avatar), | |
| 714 | 714 | o.username && e.string.encode(d, o.username)) |
| 715 | 715 | }, |
| 716 | 716 | decode(d) { |
| … | … | @@ -720,7 +720,7 @@ const n = { |
| 720 | 720 | timestamp: o, |
| 721 | 721 | mailbox: 1 & n ? e.fixed32.decode(d) : null, |
| 722 | 722 | displayName: 2 & n ? e.string.decode(d) : null, |
| 723 | avatar: 4 & n ? Jp.decode(d) : null, | |
| 723 | avatar: 4 & n ? Gp.decode(d) : null, | |
| 724 | 724 | username: 8 & n ? e.string.decode(d) : null, |
| 725 | 725 | } |
| 726 | 726 | }, |
| … | … | @@ -765,12 +765,12 @@ const n = { |
| 765 | 765 | }, |
| 766 | 766 | xe = { |
| 767 | 767 | preencode(e, d) { |
| 768 | ;(zp.preencode(e, d.profile), ie.preencode(e, d.attestation)) | |
| 768 | ;(Qp.preencode(e, d.profile), ie.preencode(e, d.attestation)) | |
| 769 | 769 | }, |
| 770 | 770 | encode(e, d) { |
| 771 | ;(zp.encode(e, d.profile), ie.encode(e, d.attestation)) | |
| 771 | ;(Qp.encode(e, d.profile), ie.encode(e, d.attestation)) | |
| 772 | 772 | }, |
| 773 | decode: (e) => ({ profile: zp.decode(e), attestation: ie.decode(e) }), | |
| 773 | decode: (e) => ({ profile: Qp.decode(e), attestation: ie.decode(e) }), | |
| 774 | 774 | }, |
| 775 | 775 | be = me, |
| 776 | 776 | ve = { |
| … | … | @@ -889,25 +889,25 @@ const n = { |
| 889 | 889 | }, |
| 890 | 890 | decode: (d) => ({ device: Me.decode(d), member: 1 & e.uint.decode(d) ? Ce.decode(d) : null }), |
| 891 | 891 | }, |
| 892 | Ie = e.frame(qe), | |
| 893 | Se = e.frame(De), | |
| 892 | Se = e.frame(qe), | |
| 893 | Ie = e.frame(De), | |
| 894 | 894 | Fe = { |
| 895 | 895 | preencode(e, d) { |
| 896 | 896 | ;(e.end++, |
| 897 | d.withInvitation && Ie.preencode(e, d.withInvitation), | |
| 898 | d.withMemberProof && Se.preencode(e, d.withMemberProof)) | |
| 897 | d.withInvitation && Se.preencode(e, d.withInvitation), | |
| 898 | d.withMemberProof && Ie.preencode(e, d.withMemberProof)) | |
| 899 | 899 | }, |
| 900 | 900 | encode(d, o) { |
| 901 | 901 | const n = (o.withInvitation ? 1 : 0) | (o.withMemberProof ? 2 : 0) |
| 902 | 902 | ;(e.uint.encode(d, n), |
| 903 | o.withInvitation && Ie.encode(d, o.withInvitation), | |
| 904 | o.withMemberProof && Se.encode(d, o.withMemberProof)) | |
| 903 | o.withInvitation && Se.encode(d, o.withInvitation), | |
| 904 | o.withMemberProof && Ie.encode(d, o.withMemberProof)) | |
| 905 | 905 | }, |
| 906 | 906 | decode(d) { |
| 907 | 907 | const o = e.uint.decode(d) |
| 908 | 908 | return { |
| 909 | withInvitation: 1 & o ? Ie.decode(d) : null, | |
| 910 | withMemberProof: 2 & o ? Se.decode(d) : null, | |
| 909 | withInvitation: 1 & o ? Se.decode(d) : null, | |
| 910 | withMemberProof: 2 & o ? Ie.decode(d) : null, | |
| 911 | 911 | } |
| 912 | 912 | }, |
| 913 | 913 | }, |
| … | … | @@ -956,7 +956,7 @@ const n = { |
| 956 | 956 | }, |
| 957 | 957 | Ne = Le, |
| 958 | 958 | Oe = e.frame(Be), |
| 959 | Ve = { | |
| 959 | Ue = { | |
| 960 | 960 | preencode(d, o) { |
| 961 | 961 | ;(e.fixed32.preencode(d, o.id), |
| 962 | 962 | Ne.preencode(d, o.response), |
| … | … | @@ -986,16 +986,16 @@ const n = { |
| 986 | 986 | } |
| 987 | 987 | }, |
| 988 | 988 | }, |
| 989 | Ue = oe, | |
| 990 | Je = e.frame(Ve), | |
| 989 | Ve = oe, | |
| 990 | Je = e.frame(Ue), | |
| 991 | 991 | ze = { |
| 992 | 992 | preencode(e, d) { |
| 993 | ;(Ue.preencode(e, d.header), Je.preencode(e, d.invitation)) | |
| 993 | ;(Ve.preencode(e, d.header), Je.preencode(e, d.invitation)) | |
| 994 | 994 | }, |
| 995 | 995 | encode(e, d) { |
| 996 | ;(Ue.encode(e, d.header), Je.encode(e, d.invitation)) | |
| 996 | ;(Ve.encode(e, d.header), Je.encode(e, d.invitation)) | |
| 997 | 997 | }, |
| 998 | decode: (e) => ({ header: Ue.decode(e), invitation: Je.decode(e) }), | |
| 998 | decode: (e) => ({ header: Ve.decode(e), invitation: Je.decode(e) }), | |
| 999 | 999 | }, |
| 1000 | 1000 | We = oe, |
| 1001 | 1001 | He = { |
| … | … | @@ -1132,13 +1132,13 @@ const n = { |
| 1132 | 1132 | rd = oe, |
| 1133 | 1133 | td = { |
| 1134 | 1134 | preencode(e, d) { |
| 1135 | ;(rd.preencode(e, d.header), e.end++, d.profile && Wp.preencode(e, d.profile)) | |
| 1135 | ;(rd.preencode(e, d.header), e.end++, d.profile && Xp.preencode(e, d.profile)) | |
| 1136 | 1136 | }, |
| 1137 | 1137 | encode(d, o) { |
| 1138 | 1138 | const n = o.profile ? 1 : 0 |
| 1139 | ;(rd.encode(d, o.header), e.uint.encode(d, n), o.profile && Wp.encode(d, o.profile)) | |
| 1139 | ;(rd.encode(d, o.header), e.uint.encode(d, n), o.profile && Xp.encode(d, o.profile)) | |
| 1140 | 1140 | }, |
| 1141 | decode: (d) => ({ header: rd.decode(d), profile: 1 & e.uint.decode(d) ? Wp.decode(d) : null }), | |
| 1141 | decode: (d) => ({ header: rd.decode(d), profile: 1 & e.uint.decode(d) ? Xp.decode(d) : null }), | |
| 1142 | 1142 | }, |
| 1143 | 1143 | id = oe, |
| 1144 | 1144 | ad = { |
| … | … | @@ -1219,7 +1219,7 @@ const n = { |
| 1219 | 1219 | hd.preencode(d, o.status), |
| 1220 | 1220 | Kd.preencode(d, o.profile), |
| 1221 | 1221 | d.end++, |
| 1222 | o.proofs && Hp.preencode(d, o.proofs)) | |
| 1222 | o.proofs && Yp.preencode(d, o.proofs)) | |
| 1223 | 1223 | }, |
| 1224 | 1224 | encode(d, o) { |
| 1225 | 1225 | const n = o.proofs ? 1 : 0 |
| … | … | @@ -1227,13 +1227,13 @@ const n = { |
| 1227 | 1227 | hd.encode(d, o.status), |
| 1228 | 1228 | Kd.encode(d, o.profile), |
| 1229 | 1229 | e.uint.encode(d, n), |
| 1230 | o.proofs && Hp.encode(d, o.proofs)) | |
| 1230 | o.proofs && Yp.encode(d, o.proofs)) | |
| 1231 | 1231 | }, |
| 1232 | 1232 | decode: (d) => ({ |
| 1233 | 1233 | key: e.fixed32.decode(d), |
| 1234 | 1234 | status: hd.decode(d), |
| 1235 | 1235 | profile: Kd.decode(d), |
| 1236 | proofs: 1 & e.uint.decode(d) ? Hp.decode(d) : null, | |
| 1236 | proofs: 1 & e.uint.decode(d) ? Yp.decode(d) : null, | |
| 1237 | 1237 | }), |
| 1238 | 1238 | }, |
| 1239 | 1239 | Pd = { |
| … | … | @@ -1294,7 +1294,7 @@ const n = { |
| 1294 | 1294 | }), |
| 1295 | 1295 | }, |
| 1296 | 1296 | Dd = oe, |
| 1297 | Id = { | |
| 1297 | Sd = { | |
| 1298 | 1298 | preencode(d, o) { |
| 1299 | 1299 | ;(Dd.preencode(d, o.header), e.fixed32.preencode(d, o.key), d.end++) |
| 1300 | 1300 | }, |
| … | … | @@ -1309,15 +1309,15 @@ const n = { |
| 1309 | 1309 | return { header: o, key: n, isModerator: !!(1 & c), isAdmin: !!(2 & c) } |
| 1310 | 1310 | }, |
| 1311 | 1311 | }, |
| 1312 | Sd = oe, | |
| 1312 | Id = oe, | |
| 1313 | 1313 | Fd = { |
| 1314 | 1314 | preencode(d, o) { |
| 1315 | ;(Sd.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 1315 | ;(Id.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 1316 | 1316 | }, |
| 1317 | 1317 | encode(d, o) { |
| 1318 | ;(Sd.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 1318 | ;(Id.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 1319 | 1319 | }, |
| 1320 | decode: (d) => ({ header: Sd.decode(d), key: e.fixed32.decode(d) }), | |
| 1320 | decode: (d) => ({ header: Id.decode(d), key: e.fixed32.decode(d) }), | |
| 1321 | 1321 | }, |
| 1322 | 1322 | Ld = { |
| 1323 | 1323 | preencode(d, o) { |
| … | … | @@ -1354,8 +1354,8 @@ const n = { |
| 1354 | 1354 | }, |
| 1355 | 1355 | }, |
| 1356 | 1356 | Od = e.frame(jd), |
| 1357 | Vd = e.frame(Ed), | |
| 1358 | Ud = e.frame(Nd), | |
| 1357 | Ud = e.frame(Ed), | |
| 1358 | Vd = e.frame(Nd), | |
| 1359 | 1359 | Jd = e.frame(Bd), |
| 1360 | 1360 | zd = { |
| 1361 | 1361 | preencode(d, n) { |
| … | … | @@ -1372,10 +1372,10 @@ const n = { |
| 1372 | 1372 | (o >= 3 && n.locationShared ? 512 : 0) |
| 1373 | 1373 | ;(e.uint.preencode(d, c), |
| 1374 | 1374 | n.memberJoined && Od.preencode(d, n.memberJoined), |
| 1375 | n.memberLeft && Vd.preencode(d, n.memberLeft), | |
| 1376 | n.titleChanged && Ud.preencode(d, n.titleChanged), | |
| 1375 | n.memberLeft && Ud.preencode(d, n.memberLeft), | |
| 1376 | n.titleChanged && Vd.preencode(d, n.titleChanged), | |
| 1377 | 1377 | n.memberRemoved && Jd.preencode(d, n.memberRemoved), |
| 1378 | o >= 3 && n.locationShared && Gp.preencode(d, n.locationShared)) | |
| 1378 | o >= 3 && n.locationShared && Zp.preencode(d, n.locationShared)) | |
| 1379 | 1379 | }, |
| 1380 | 1380 | encode(d, n) { |
| 1381 | 1381 | const c = |
| … | … | @@ -1391,30 +1391,30 @@ const n = { |
| 1391 | 1391 | (o >= 3 && n.locationShared ? 512 : 0) |
| 1392 | 1392 | ;(e.uint.encode(d, c), |
| 1393 | 1393 | n.memberJoined && Od.encode(d, n.memberJoined), |
| 1394 | n.memberLeft && Vd.encode(d, n.memberLeft), | |
| 1395 | n.titleChanged && Ud.encode(d, n.titleChanged), | |
| 1394 | n.memberLeft && Ud.encode(d, n.memberLeft), | |
| 1395 | n.titleChanged && Vd.encode(d, n.titleChanged), | |
| 1396 | 1396 | n.memberRemoved && Jd.encode(d, n.memberRemoved), |
| 1397 | o >= 3 && n.locationShared && Gp.encode(d, n.locationShared)) | |
| 1397 | o >= 3 && n.locationShared && Zp.encode(d, n.locationShared)) | |
| 1398 | 1398 | }, |
| 1399 | 1399 | decode(d) { |
| 1400 | 1400 | const n = e.uint.decode(d) |
| 1401 | 1401 | return { |
| 1402 | 1402 | memberJoined: 1 & n ? Od.decode(d) : null, |
| 1403 | memberLeft: 2 & n ? Vd.decode(d) : null, | |
| 1404 | titleChanged: 4 & n ? Ud.decode(d) : null, | |
| 1403 | memberLeft: 2 & n ? Ud.decode(d) : null, | |
| 1404 | titleChanged: 4 & n ? Vd.decode(d) : null, | |
| 1405 | 1405 | callStarted: !!(8 & n), |
| 1406 | 1406 | callHangup: !!(16 & n), |
| 1407 | 1407 | callMissed: !!(32 & n), |
| 1408 | 1408 | roomAvatarChanged: !!(64 & n), |
| 1409 | 1409 | invitationCreated: !!(128 & n), |
| 1410 | 1410 | memberRemoved: 256 & n ? Jd.decode(d) : null, |
| 1411 | locationShared: o >= 3 && 512 & n ? Gp.decode(d) : null, | |
| 1411 | locationShared: o >= 3 && 512 & n ? Zp.decode(d) : null, | |
| 1412 | 1412 | } |
| 1413 | 1413 | }, |
| 1414 | 1414 | }, |
| 1415 | 1415 | Wd = { |
| 1416 | 1416 | preencode(e, d) { |
| 1417 | ;(e.end++, o >= 3 && d.locationShared && Qp.preencode(e, d.locationShared)) | |
| 1417 | ;(e.end++, o >= 3 && d.locationShared && $p.preencode(e, d.locationShared)) | |
| 1418 | 1418 | }, |
| 1419 | 1419 | encode(d, n) { |
| 1420 | 1420 | const c = |
| … | … | @@ -1422,7 +1422,7 @@ const n = { |
| 1422 | 1422 | (n.callHangup ? 2 : 0) | |
| 1423 | 1423 | (n.callMissed ? 4 : 0) | |
| 1424 | 1424 | (o >= 3 && n.locationShared ? 8 : 0) |
| 1425 | ;(e.uint.encode(d, c), o >= 3 && n.locationShared && Qp.encode(d, n.locationShared)) | |
| 1425 | ;(e.uint.encode(d, c), o >= 3 && n.locationShared && $p.encode(d, n.locationShared)) | |
| 1426 | 1426 | }, |
| 1427 | 1427 | decode(d) { |
| 1428 | 1428 | const n = e.uint.decode(d) |
| … | … | @@ -1430,7 +1430,7 @@ const n = { |
| 1430 | 1430 | callStarted: !!(1 & n), |
| 1431 | 1431 | callHangup: !!(2 & n), |
| 1432 | 1432 | callMissed: !!(4 & n), |
| 1433 | locationShared: o >= 3 && 8 & n ? Qp.decode(d) : null, | |
| 1433 | locationShared: o >= 3 && 8 & n ? $p.decode(d) : null, | |
| 1434 | 1434 | } |
| 1435 | 1435 | }, |
| 1436 | 1436 | }, |
| … | … | @@ -1739,7 +1739,7 @@ const n = { |
| 1739 | 1739 | }, |
| 1740 | 1740 | decode: (d) => ({ thread: e.uint.decode(d), index: e.uint.decode(d) }), |
| 1741 | 1741 | }, |
| 1742 | Mo = e.frame(V), | |
| 1742 | Mo = e.frame(U), | |
| 1743 | 1743 | Co = { |
| 1744 | 1744 | preencode(d, o) { |
| 1745 | 1745 | ;(e.uint.preencode(d, o.id), |
| … | … | @@ -1769,8 +1769,8 @@ const n = { |
| 1769 | 1769 | }, |
| 1770 | 1770 | }, |
| 1771 | 1771 | Do = e.frame(Ao), |
| 1772 | Io = e.frame(wo), | |
| 1773 | So = e.frame(zd), | |
| 1772 | So = e.frame(wo), | |
| 1773 | Io = e.frame(zd), | |
| 1774 | 1774 | Fo = { |
| 1775 | 1775 | preencode(d, o) { |
| 1776 | 1776 | ;(qo.preencode(d, o.id), |
| … | … | @@ -1780,8 +1780,8 @@ const n = { |
| 1780 | 1780 | d.end++, |
| 1781 | 1781 | o.editedAt && e.uint.preencode(d, o.editedAt), |
| 1782 | 1782 | Do.preencode(d, o.status), |
| 1783 | o.message && Io.preencode(d, o.message), | |
| 1784 | o.event && So.preencode(d, o.event)) | |
| 1783 | o.message && So.preencode(d, o.message), | |
| 1784 | o.event && Io.preencode(d, o.event)) | |
| 1785 | 1785 | }, |
| 1786 | 1786 | encode(d, o) { |
| 1787 | 1787 | const n = (o.editedAt ? 1 : 0) | (o.message ? 2 : 0) | (o.event ? 4 : 0) |
| … | … | @@ -1792,8 +1792,8 @@ const n = { |
| 1792 | 1792 | e.uint.encode(d, n), |
| 1793 | 1793 | o.editedAt && e.uint.encode(d, o.editedAt), |
| 1794 | 1794 | Do.encode(d, o.status), |
| 1795 | o.message && Io.encode(d, o.message), | |
| 1796 | o.event && So.encode(d, o.event)) | |
| 1795 | o.message && So.encode(d, o.message), | |
| 1796 | o.event && Io.encode(d, o.event)) | |
| 1797 | 1797 | }, |
| 1798 | 1798 | decode(d) { |
| 1799 | 1799 | const o = qo.decode(d), |
| … | … | @@ -1808,14 +1808,14 @@ const n = { |
| 1808 | 1808 | timestamp: t, |
| 1809 | 1809 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 1810 | 1810 | status: Do.decode(d), |
| 1811 | message: 2 & i ? Io.decode(d) : null, | |
| 1812 | event: 4 & i ? So.decode(d) : null, | |
| 1811 | message: 2 & i ? So.decode(d) : null, | |
| 1812 | event: 4 & i ? Io.decode(d) : null, | |
| 1813 | 1813 | } |
| 1814 | 1814 | }, |
| 1815 | 1815 | }, |
| 1816 | 1816 | Lo = Do, |
| 1817 | 1817 | jo = e.frame(To), |
| 1818 | Eo = So, | |
| 1818 | Eo = Io, | |
| 1819 | 1819 | Bo = { |
| 1820 | 1820 | preencode(d, o) { |
| 1821 | 1821 | ;(qo.preencode(d, o.id), |
| … | … | @@ -1860,7 +1860,7 @@ const n = { |
| 1860 | 1860 | }, |
| 1861 | 1861 | No = oe, |
| 1862 | 1862 | Oo = e.frame(ko), |
| 1863 | Vo = { | |
| 1863 | Uo = { | |
| 1864 | 1864 | preencode(e, d) { |
| 1865 | 1865 | ;(No.preencode(e, d.header), Oo.preencode(e, d.message)) |
| 1866 | 1866 | }, |
| … | … | @@ -1869,15 +1869,15 @@ const n = { |
| 1869 | 1869 | }, |
| 1870 | 1870 | decode: (e) => ({ header: No.decode(e), message: Oo.decode(e) }), |
| 1871 | 1871 | }, |
| 1872 | Uo = oe, | |
| 1872 | Vo = oe, | |
| 1873 | 1873 | Jo = { |
| 1874 | 1874 | preencode(e, d) { |
| 1875 | ;(Uo.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1875 | ;(Vo.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1876 | 1876 | }, |
| 1877 | 1877 | encode(e, d) { |
| 1878 | ;(Uo.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1878 | ;(Vo.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1879 | 1879 | }, |
| 1880 | decode: (e) => ({ header: Uo.decode(e), oplog: c.decode(e) }), | |
| 1880 | decode: (e) => ({ header: Vo.decode(e), oplog: c.decode(e) }), | |
| 1881 | 1881 | }, |
| 1882 | 1882 | zo = oe, |
| 1883 | 1883 | Wo = Oo, |
| … | … | @@ -1922,7 +1922,7 @@ const n = { |
| 1922 | 1922 | ;(Zo.preencode(d, o.header), |
| 1923 | 1923 | c.preencode(d, o.oplog), |
| 1924 | 1924 | e.uint.preencode(d, o.index), |
| 1925 | Xp.preencode(d, o.preview), | |
| 1925 | _p.preencode(d, o.preview), | |
| 1926 | 1926 | d.end++, |
| 1927 | 1927 | o.displayType && Yo.preencode(d, o.displayType)) |
| 1928 | 1928 | }, |
| … | … | @@ -1931,7 +1931,7 @@ const n = { |
| 1931 | 1931 | ;(Zo.encode(d, o.header), |
| 1932 | 1932 | c.encode(d, o.oplog), |
| 1933 | 1933 | e.uint.encode(d, o.index), |
| 1934 | Xp.encode(d, o.preview), | |
| 1934 | _p.encode(d, o.preview), | |
| 1935 | 1935 | e.uint.encode(d, n), |
| 1936 | 1936 | o.displayType && Yo.encode(d, o.displayType)) |
| 1937 | 1937 | }, |
| … | … | @@ -1939,7 +1939,7 @@ const n = { |
| 1939 | 1939 | header: Zo.decode(d), |
| 1940 | 1940 | oplog: c.decode(d), |
| 1941 | 1941 | index: e.uint.decode(d), |
| 1942 | preview: Xp.decode(d), | |
| 1942 | preview: _p.decode(d), | |
| 1943 | 1943 | displayType: 1 & e.uint.decode(d) ? Yo.decode(d) : 0, |
| 1944 | 1944 | }), |
| 1945 | 1945 | }, |
| … | … | @@ -2032,19 +2032,19 @@ const n = { |
| 2032 | 2032 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2033 | 2033 | e.string.preencode(d, o.displayName), |
| 2034 | 2034 | d.end++, |
| 2035 | o.avatar && Yp.preencode(d, o.avatar)) | |
| 2035 | o.avatar && eu.preencode(d, o.avatar)) | |
| 2036 | 2036 | }, |
| 2037 | 2037 | encode(d, o) { |
| 2038 | 2038 | const n = o.avatar ? 1 : 0 |
| 2039 | 2039 | ;(e.fixed32.encode(d, o.memberKey), |
| 2040 | 2040 | e.string.encode(d, o.displayName), |
| 2041 | 2041 | e.uint.encode(d, n), |
| 2042 | o.avatar && Yp.encode(d, o.avatar)) | |
| 2042 | o.avatar && eu.encode(d, o.avatar)) | |
| 2043 | 2043 | }, |
| 2044 | 2044 | decode: (d) => ({ |
| 2045 | 2045 | memberKey: e.fixed32.decode(d), |
| 2046 | 2046 | displayName: e.string.decode(d), |
| 2047 | avatar: 1 & e.uint.decode(d) ? Yp.decode(d) : null, | |
| 2047 | avatar: 1 & e.uint.decode(d) ? eu.decode(d) : null, | |
| 2048 | 2048 | }), |
| 2049 | 2049 | }, |
| 2050 | 2050 | ln = { |
| … | … | @@ -2202,15 +2202,15 @@ const n = { |
| 2202 | 2202 | }, |
| 2203 | 2203 | decode: (d) => ({ header: Mn.decode(d), key: e.uint.decode(d), settings: Cn.decode(d) }), |
| 2204 | 2204 | }, |
| 2205 | In = oe, | |
| 2206 | Sn = { | |
| 2205 | Sn = oe, | |
| 2206 | In = { | |
| 2207 | 2207 | preencode(d, o) { |
| 2208 | ;(In.preencode(d, o.header), e.uint.preencode(d, o.value)) | |
| 2208 | ;(Sn.preencode(d, o.header), e.uint.preencode(d, o.value)) | |
| 2209 | 2209 | }, |
| 2210 | 2210 | encode(d, o) { |
| 2211 | ;(In.encode(d, o.header), e.uint.encode(d, o.value)) | |
| 2211 | ;(Sn.encode(d, o.header), e.uint.encode(d, o.value)) | |
| 2212 | 2212 | }, |
| 2213 | decode: (d) => ({ header: In.decode(d), value: e.uint.decode(d) }), | |
| 2213 | decode: (d) => ({ header: Sn.decode(d), value: e.uint.decode(d) }), | |
| 2214 | 2214 | }, |
| 2215 | 2215 | Fn = { |
| 2216 | 2216 | preencode(d, o) { |
| … | … | @@ -2263,7 +2263,7 @@ const n = { |
| 2263 | 2263 | decode: (e) => ({ header: Bn.decode(e), oplog: c.decode(e), label: jn.decode(e) }), |
| 2264 | 2264 | }, |
| 2265 | 2265 | On = oe, |
| 2266 | Vn = { | |
| 2266 | Un = { | |
| 2267 | 2267 | preencode(e, d) { |
| 2268 | 2268 | ;(On.preencode(e, d.header), c.preencode(e, d.oplog), jn.preencode(e, d.label)) |
| 2269 | 2269 | }, |
| … | … | @@ -2272,7 +2272,7 @@ const n = { |
| 2272 | 2272 | }, |
| 2273 | 2273 | decode: (e) => ({ header: On.decode(e), oplog: c.decode(e), label: jn.decode(e) }), |
| 2274 | 2274 | }, |
| 2275 | Un = { | |
| 2275 | Vn = { | |
| 2276 | 2276 | preencode(d, o) { |
| 2277 | 2277 | ;(jn.preencode(d, o.label), e.uint.preencode(d, o.count)) |
| 2278 | 2278 | }, |
| … | … | @@ -2281,7 +2281,7 @@ const n = { |
| 2281 | 2281 | }, |
| 2282 | 2282 | decode: (d) => ({ label: jn.decode(d), count: e.uint.decode(d) }), |
| 2283 | 2283 | }, |
| 2284 | Jn = e.array(e.frame(Un)), | |
| 2284 | Jn = e.array(e.frame(Vn)), | |
| 2285 | 2285 | zn = { |
| 2286 | 2286 | preencode(d, o) { |
| 2287 | 2287 | ;(qo.preencode(d, o.id), |
| … | … | @@ -2342,7 +2342,7 @@ const n = { |
| 2342 | 2342 | Xn = { |
| 2343 | 2343 | preencode(d, o) { |
| 2344 | 2344 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2345 | Zp.preencode(d, o.status), | |
| 2345 | du.preencode(d, o.status), | |
| 2346 | 2346 | d.end++, |
| 2347 | 2347 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2348 | 2348 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2350,14 +2350,14 @@ const n = { |
| 2350 | 2350 | encode(d, o) { |
| 2351 | 2351 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2352 | 2352 | ;(e.fixed32.encode(d, o.memberKey), |
| 2353 | Zp.encode(d, o.status), | |
| 2353 | du.encode(d, o.status), | |
| 2354 | 2354 | e.uint.encode(d, n), |
| 2355 | 2355 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2356 | 2356 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| 2357 | 2357 | }, |
| 2358 | 2358 | decode(d) { |
| 2359 | 2359 | const o = e.fixed32.decode(d), |
| 2360 | n = Zp.decode(d), | |
| 2360 | n = du.decode(d), | |
| 2361 | 2361 | c = e.uint.decode(d) |
| 2362 | 2362 | return { |
| 2363 | 2363 | memberKey: o, |
| … | … | @@ -2595,7 +2595,8 @@ const n = { |
| 2595 | 2595 | (n.isFullyMuted ? 2 : 0) | |
| 2596 | 2596 | (n.isMentionsOnlyMuted ? 4 : 0) | |
| 2597 | 2597 | (n.isReadOnly ? 8 : 0) | |
| 2598 | (o >= 3 && n.isFavorite ? 16 : 0) | |
| 2598 | (o >= 3 && n.isFavorite ? 16 : 0) | | |
| 2599 | (o >= 7 && n.isUnread ? 32 : 0) | |
| 2599 | 2600 | e.uint.encode(d, c) |
| 2600 | 2601 | }, |
| 2601 | 2602 | decode(d) { |
| … | … | @@ -2606,6 +2607,7 @@ const n = { |
| 2606 | 2607 | isMentionsOnlyMuted: !!(4 & n), |
| 2607 | 2608 | isReadOnly: !!(8 & n), |
| 2608 | 2609 | isFavorite: o >= 3 && !!(16 & n), |
| 2610 | isUnread: o >= 7 && !!(32 & n), | |
| 2609 | 2611 | } |
| 2610 | 2612 | }, |
| 2611 | 2613 | }, |
| … | … | @@ -2754,7 +2756,7 @@ const n = { |
| 2754 | 2756 | preencode(d, o) { |
| 2755 | 2757 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2756 | 2758 | e.uint.preencode(d, o.clock), |
| 2757 | $p.preencode(d, o.status), | |
| 2759 | ou.preencode(d, o.status), | |
| 2758 | 2760 | d.end++, |
| 2759 | 2761 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2760 | 2762 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2763,7 +2765,7 @@ const n = { |
| 2763 | 2765 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2764 | 2766 | ;(e.fixed32.encode(d, o.memberKey), |
| 2765 | 2767 | e.uint.encode(d, o.clock), |
| 2766 | $p.encode(d, o.status), | |
| 2768 | ou.encode(d, o.status), | |
| 2767 | 2769 | e.uint.encode(d, n), |
| 2768 | 2770 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2769 | 2771 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| … | … | @@ -2771,7 +2773,7 @@ const n = { |
| 2771 | 2773 | decode(d) { |
| 2772 | 2774 | const o = e.fixed32.decode(d), |
| 2773 | 2775 | n = e.uint.decode(d), |
| 2774 | c = $p.decode(d), | |
| 2776 | c = ou.decode(d), | |
| 2775 | 2777 | r = e.uint.decode(d) |
| 2776 | 2778 | return { |
| 2777 | 2779 | memberKey: o, |
| … | … | @@ -2783,15 +2785,15 @@ const n = { |
| 2783 | 2785 | }, |
| 2784 | 2786 | }, |
| 2785 | 2787 | Dc = oe, |
| 2786 | Ic = e.frame(Xn), | |
| 2787 | Sc = { | |
| 2788 | Sc = e.frame(Xn), | |
| 2789 | Ic = { | |
| 2788 | 2790 | preencode(e, d) { |
| 2789 | ;(Dc.preencode(e, d.header), Ic.preencode(e, d.contact)) | |
| 2791 | ;(Dc.preencode(e, d.header), Sc.preencode(e, d.contact)) | |
| 2790 | 2792 | }, |
| 2791 | 2793 | encode(e, d) { |
| 2792 | ;(Dc.encode(e, d.header), Ic.encode(e, d.contact)) | |
| 2794 | ;(Dc.encode(e, d.header), Sc.encode(e, d.contact)) | |
| 2793 | 2795 | }, |
| 2794 | decode: (e) => ({ header: Dc.decode(e), contact: Ic.decode(e) }), | |
| 2796 | decode: (e) => ({ header: Dc.decode(e), contact: Sc.decode(e) }), | |
| 2795 | 2797 | }, |
| 2796 | 2798 | Fc = oe, |
| 2797 | 2799 | Lc = { |
| … | … | @@ -2799,19 +2801,19 @@ const n = { |
| 2799 | 2801 | ;(Fc.preencode(d, o.header), |
| 2800 | 2802 | e.fixed32.preencode(d, o.memberKey), |
| 2801 | 2803 | e.uint.preencode(d, o.key), |
| 2802 | _p.preencode(d, o.status)) | |
| 2804 | nu.preencode(d, o.status)) | |
| 2803 | 2805 | }, |
| 2804 | 2806 | encode(d, o) { |
| 2805 | 2807 | ;(Fc.encode(d, o.header), |
| 2806 | 2808 | e.fixed32.encode(d, o.memberKey), |
| 2807 | 2809 | e.uint.encode(d, o.key), |
| 2808 | _p.encode(d, o.status)) | |
| 2810 | nu.encode(d, o.status)) | |
| 2809 | 2811 | }, |
| 2810 | 2812 | decode: (d) => ({ |
| 2811 | 2813 | header: Fc.decode(d), |
| 2812 | 2814 | memberKey: e.fixed32.decode(d), |
| 2813 | 2815 | key: e.uint.decode(d), |
| 2814 | status: _p.decode(d), | |
| 2816 | status: nu.decode(d), | |
| 2815 | 2817 | }), |
| 2816 | 2818 | }, |
| 2817 | 2819 | jc = oe, |
| … | … | @@ -2858,27 +2860,27 @@ const n = { |
| 2858 | 2860 | } |
| 2859 | 2861 | }, |
| 2860 | 2862 | }, |
| 2861 | Vc = Pe, | |
| 2862 | Uc = e.frame(i), | |
| 2863 | Uc = Pe, | |
| 2864 | Vc = e.frame(i), | |
| 2863 | 2865 | Jc = { |
| 2864 | 2866 | preencode(d, o) { |
| 2865 | ;(Vc.preencode(d, o.sender), | |
| 2866 | Uc.preencode(d, o.keys), | |
| 2867 | ;(Uc.preencode(d, o.sender), | |
| 2868 | Vc.preencode(d, o.keys), | |
| 2867 | 2869 | e.fixed32.preencode(d, o.mailbox), |
| 2868 | 2870 | d.end++, |
| 2869 | 2871 | o.message && e.string.preencode(d, o.message)) |
| 2870 | 2872 | }, |
| 2871 | 2873 | encode(d, o) { |
| 2872 | 2874 | const n = o.message ? 1 : 0 |
| 2873 | ;(Vc.encode(d, o.sender), | |
| 2874 | Uc.encode(d, o.keys), | |
| 2875 | ;(Uc.encode(d, o.sender), | |
| 2876 | Vc.encode(d, o.keys), | |
| 2875 | 2877 | e.fixed32.encode(d, o.mailbox), |
| 2876 | 2878 | e.uint.encode(d, n), |
| 2877 | 2879 | o.message && e.string.encode(d, o.message)) |
| 2878 | 2880 | }, |
| 2879 | 2881 | decode: (d) => ({ |
| 2880 | sender: Vc.decode(d), | |
| 2881 | keys: Uc.decode(d), | |
| 2882 | sender: Uc.decode(d), | |
| 2883 | keys: Vc.decode(d), | |
| 2882 | 2884 | mailbox: e.fixed32.decode(d), |
| 2883 | 2885 | message: 1 & e.uint.decode(d) ? e.string.decode(d) : null, |
| 2884 | 2886 | }), |
| … | … | @@ -2895,7 +2897,7 @@ const n = { |
| 2895 | 2897 | }, |
| 2896 | 2898 | Hc = me, |
| 2897 | 2899 | Gc = e.frame(Oc), |
| 2898 | Qc = Uc, | |
| 2900 | Qc = Vc, | |
| 2899 | 2901 | Xc = { |
| 2900 | 2902 | preencode(d, o) { |
| 2901 | 2903 | ;(e.fixed32.preencode(d, o.memberKey), |
| … | … | @@ -3060,22 +3062,45 @@ const n = { |
| 3060 | 3062 | preencode(e, d) { |
| 3061 | 3063 | e.end++ |
| 3062 | 3064 | }, |
| 3063 | encode(d, o) { | |
| 3064 | const n = o.disableReadReceipts ? 1 : 0 | |
| 3065 | e.uint.encode(d, n) | |
| 3065 | encode(d, n) { | |
| 3066 | const c = (n.disableReadReceipts ? 1 : 0) | (o >= 7 && n.stripAttachmentMetadata ? 2 : 0) | |
| 3067 | e.uint.encode(d, c) | |
| 3066 | 3068 | }, |
| 3067 | decode: (d) => ({ disableReadReceipts: !!(1 & e.uint.decode(d)) }), | |
| 3069 | decode(d) { | |
| 3070 | const n = e.uint.decode(d) | |
| 3071 | return { disableReadReceipts: !!(1 & n), stripAttachmentMetadata: o >= 7 && !!(2 & n) } | |
| 3072 | }, | |
| 3073 | }, | |
| 3074 | sr = { | |
| 3075 | disableReadReceipts: "disableReadReceipts", | |
| 3076 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 3068 | 3077 | }, |
| 3069 | sr = { disableReadReceipts: "disableReadReceipts" }, | |
| 3070 | 3078 | pr = { |
| 3071 | 3079 | preencode(e, d) { |
| 3072 | 3080 | e.end++ |
| 3073 | 3081 | }, |
| 3074 | 3082 | encode(d, o) { |
| 3075 | if ("disableReadReceipts" !== o) throw new Error("Unknown enum") | |
| 3076 | e.uint.encode(d, 1) | |
| 3083 | switch (o) { | |
| 3084 | case "disableReadReceipts": | |
| 3085 | e.uint.encode(d, 1) | |
| 3086 | break | |
| 3087 | case "stripAttachmentMetadata": | |
| 3088 | e.uint.encode(d, 2) | |
| 3089 | break | |
| 3090 | default: | |
| 3091 | throw new Error("Unknown enum") | |
| 3092 | } | |
| 3093 | }, | |
| 3094 | decode(d) { | |
| 3095 | switch (e.uint.decode(d)) { | |
| 3096 | case 1: | |
| 3097 | return "disableReadReceipts" | |
| 3098 | case 2: | |
| 3099 | return "stripAttachmentMetadata" | |
| 3100 | default: | |
| 3101 | return null | |
| 3102 | } | |
| 3077 | 3103 | }, |
| 3078 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 3079 | 3104 | }, |
| 3080 | 3105 | ur = oe, |
| 3081 | 3106 | lr = e.frame(ar), |
| … | … | @@ -3123,7 +3148,7 @@ const n = { |
| 3123 | 3148 | }, |
| 3124 | 3149 | decode: (d) => ({ rooms: e.uint.decode(d), activeRooms: e.uint.decode(d) }), |
| 3125 | 3150 | }, |
| 3126 | xr = I, | |
| 3151 | xr = S, | |
| 3127 | 3152 | br = _, |
| 3128 | 3153 | vr = { |
| 3129 | 3154 | preencode(e, d) { |
| … | … | @@ -3229,45 +3254,52 @@ const n = { |
| 3229 | 3254 | qr = gc, |
| 3230 | 3255 | Mr = e.frame(xc), |
| 3231 | 3256 | Cr = { |
| 3232 | preencode(d, o) { | |
| 3233 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 3234 | e.fixed32.preencode(d, o.privateProfileKey), | |
| 3235 | t.preencode(d, o.deviceKeyPair), | |
| 3236 | e.buffer.preencode(d, o.deviceProof), | |
| 3237 | Ar.preencode(d, o.status), | |
| 3257 | preencode(d, n) { | |
| 3258 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 3259 | e.fixed32.preencode(d, n.privateProfileKey), | |
| 3260 | t.preencode(d, n.deviceKeyPair), | |
| 3261 | e.buffer.preencode(d, n.deviceProof), | |
| 3262 | Ar.preencode(d, n.status), | |
| 3238 | 3263 | d.end++, |
| 3239 | o.entropy && e.buffer.preencode(d, o.entropy), | |
| 3240 | o.swap && qr.preencode(d, o.swap), | |
| 3241 | o.swapV2 && Mr.preencode(d, o.swapV2)) | |
| 3264 | n.entropy && e.buffer.preencode(d, n.entropy), | |
| 3265 | n.swap && qr.preencode(d, n.swap), | |
| 3266 | n.swapV2 && Mr.preencode(d, n.swapV2), | |
| 3267 | o >= 7 && n.proofShortenedAt && e.uint.preencode(d, n.proofShortenedAt)) | |
| 3242 | 3268 | }, |
| 3243 | encode(d, o) { | |
| 3244 | const n = (o.entropy ? 1 : 0) | (o.swap ? 2 : 0) | (o.swapV2 ? 4 : 0) | |
| 3245 | ;(e.fixed32.encode(d, o.publicKey), | |
| 3246 | e.fixed32.encode(d, o.privateProfileKey), | |
| 3247 | t.encode(d, o.deviceKeyPair), | |
| 3248 | e.buffer.encode(d, o.deviceProof), | |
| 3249 | Ar.encode(d, o.status), | |
| 3250 | e.uint.encode(d, n), | |
| 3251 | o.entropy && e.buffer.encode(d, o.entropy), | |
| 3252 | o.swap && qr.encode(d, o.swap), | |
| 3253 | o.swapV2 && Mr.encode(d, o.swapV2)) | |
| 3269 | encode(d, n) { | |
| 3270 | const c = | |
| 3271 | (n.entropy ? 1 : 0) | | |
| 3272 | (n.swap ? 2 : 0) | | |
| 3273 | (n.swapV2 ? 4 : 0) | | |
| 3274 | (o >= 7 && n.proofShortenedAt ? 8 : 0) | |
| 3275 | ;(e.fixed32.encode(d, n.publicKey), | |
| 3276 | e.fixed32.encode(d, n.privateProfileKey), | |
| 3277 | t.encode(d, n.deviceKeyPair), | |
| 3278 | e.buffer.encode(d, n.deviceProof), | |
| 3279 | Ar.encode(d, n.status), | |
| 3280 | e.uint.encode(d, c), | |
| 3281 | n.entropy && e.buffer.encode(d, n.entropy), | |
| 3282 | n.swap && qr.encode(d, n.swap), | |
| 3283 | n.swapV2 && Mr.encode(d, n.swapV2), | |
| 3284 | o >= 7 && n.proofShortenedAt && e.uint.encode(d, n.proofShortenedAt)) | |
| 3254 | 3285 | }, |
| 3255 | 3286 | decode(d) { |
| 3256 | const o = e.fixed32.decode(d), | |
| 3257 | n = e.fixed32.decode(d), | |
| 3258 | c = t.decode(d), | |
| 3259 | r = e.buffer.decode(d), | |
| 3260 | i = Ar.decode(d), | |
| 3261 | a = e.uint.decode(d) | |
| 3287 | const n = e.fixed32.decode(d), | |
| 3288 | c = e.fixed32.decode(d), | |
| 3289 | r = t.decode(d), | |
| 3290 | i = e.buffer.decode(d), | |
| 3291 | a = Ar.decode(d), | |
| 3292 | s = e.uint.decode(d) | |
| 3262 | 3293 | return { |
| 3263 | publicKey: o, | |
| 3264 | privateProfileKey: n, | |
| 3265 | deviceKeyPair: c, | |
| 3266 | deviceProof: r, | |
| 3267 | status: i, | |
| 3268 | entropy: 1 & a ? e.buffer.decode(d) : null, | |
| 3269 | swap: 2 & a ? qr.decode(d) : null, | |
| 3270 | swapV2: 4 & a ? Mr.decode(d) : null, | |
| 3294 | publicKey: n, | |
| 3295 | privateProfileKey: c, | |
| 3296 | deviceKeyPair: r, | |
| 3297 | deviceProof: i, | |
| 3298 | status: a, | |
| 3299 | entropy: 1 & s ? e.buffer.decode(d) : null, | |
| 3300 | swap: 2 & s ? qr.decode(d) : null, | |
| 3301 | swapV2: 4 & s ? Mr.decode(d) : null, | |
| 3302 | proofShortenedAt: o >= 7 && 8 & s ? e.uint.decode(d) : 0, | |
| 3271 | 3303 | } |
| 3272 | 3304 | }, |
| 3273 | 3305 | }, |
| … | … | @@ -3284,7 +3316,7 @@ const n = { |
| 3284 | 3316 | TestSlowTask: 10, |
| 3285 | 3317 | TestErrorTask: 11, |
| 3286 | 3318 | }, |
| 3287 | Ir = { | |
| 3319 | Sr = { | |
| 3288 | 3320 | preencode(e, d) { |
| 3289 | 3321 | e.end++ |
| 3290 | 3322 | }, |
| … | … | @@ -3294,7 +3326,7 @@ const n = { |
| 3294 | 3326 | }, |
| 3295 | 3327 | decode: (d) => e.uint.decode(d), |
| 3296 | 3328 | }, |
| 3297 | Sr = { | |
| 3329 | Ir = { | |
| 3298 | 3330 | preencode(d, o) { |
| 3299 | 3331 | ;(e.fixed32.preencode(d, o.roomKey), |
| 3300 | 3332 | e.buffer.preencode(d, o.encryptionKey), |
| … | … | @@ -3389,8 +3421,8 @@ const n = { |
| 3389 | 3421 | }, |
| 3390 | 3422 | decode: (e) => ({ keys: Nr.decode(e) }), |
| 3391 | 3423 | }, |
| 3392 | Vr = e.frame(Kn), | |
| 3393 | Ur = { | |
| 3424 | Ur = e.frame(Kn), | |
| 3425 | Vr = { | |
| 3394 | 3426 | preencode(d, o) { |
| 3395 | 3427 | ;(e.fixed32.preencode(d, o.roomKey), |
| 3396 | 3428 | e.buffer.preencode(d, o.encryptionKey), |
| … | … | @@ -3399,7 +3431,7 @@ const n = { |
| 3399 | 3431 | o.initiator && n.preencode(d, o.initiator), |
| 3400 | 3432 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 3401 | 3433 | o.keyPair && t.preencode(d, o.keyPair), |
| 3402 | o.genesis && Vr.preencode(d, o.genesis)) | |
| 3434 | o.genesis && Ur.preencode(d, o.genesis)) | |
| 3403 | 3435 | }, |
| 3404 | 3436 | encode(d, o) { |
| 3405 | 3437 | const c = |
| … | … | @@ -3416,7 +3448,7 @@ const n = { |
| 3416 | 3448 | o.initiator && n.encode(d, o.initiator), |
| 3417 | 3449 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 3418 | 3450 | o.keyPair && t.encode(d, o.keyPair), |
| 3419 | o.genesis && Vr.encode(d, o.genesis)) | |
| 3451 | o.genesis && Ur.encode(d, o.genesis)) | |
| 3420 | 3452 | }, |
| 3421 | 3453 | decode(d) { |
| 3422 | 3454 | const o = e.fixed32.decode(d), |
| … | … | @@ -3429,7 +3461,7 @@ const n = { |
| 3429 | 3461 | initiator: 2 & r ? n.decode(d) : null, |
| 3430 | 3462 | mailbox: 4 & r ? e.fixed32.decode(d) : null, |
| 3431 | 3463 | keyPair: 8 & r ? t.decode(d) : null, |
| 3432 | genesis: 16 & r ? Vr.decode(d) : null, | |
| 3464 | genesis: 16 & r ? Ur.decode(d) : null, | |
| 3433 | 3465 | isPrivateProfile: !!(32 & r), |
| 3434 | 3466 | } |
| 3435 | 3467 | }, |
| … | … | @@ -3515,7 +3547,7 @@ const n = { |
| 3515 | 3547 | decode: (d) => ({ key: e.fixed32.decode(d), isPrivateProfile: !!(1 & e.uint.decode(d)) }), |
| 3516 | 3548 | }, |
| 3517 | 3549 | Xr = e.frame(Wr), |
| 3518 | Yr = e.frame(Ur), | |
| 3550 | Yr = e.frame(Vr), | |
| 3519 | 3551 | Zr = e.frame(Jr), |
| 3520 | 3552 | $r = e.frame(zr), |
| 3521 | 3553 | _r = e.frame(Lr), |
| … | … | @@ -3698,7 +3730,7 @@ const n = { |
| 3698 | 3730 | n.lastMember && ht.preencode(d, n.lastMember), |
| 3699 | 3731 | n.version && e.uint.preencode(d, n.version), |
| 3700 | 3732 | o >= 3 && n.preferences && Kt.preencode(d, n.preferences), |
| 3701 | o >= 4 && n.activeCall && eu.preencode(d, n.activeCall)) | |
| 3733 | o >= 4 && n.activeCall && cu.preencode(d, n.activeCall)) | |
| 3702 | 3734 | }, |
| 3703 | 3735 | encode(d, n) { |
| 3704 | 3736 | const c = |
| … | … | @@ -3735,7 +3767,7 @@ const n = { |
| 3735 | 3767 | n.lastMember && ht.encode(d, n.lastMember), |
| 3736 | 3768 | n.version && e.uint.encode(d, n.version), |
| 3737 | 3769 | o >= 3 && n.preferences && Kt.encode(d, n.preferences), |
| 3738 | o >= 4 && n.activeCall && eu.encode(d, n.activeCall)) | |
| 3770 | o >= 4 && n.activeCall && cu.encode(d, n.activeCall)) | |
| 3739 | 3771 | }, |
| 3740 | 3772 | decode(d) { |
| 3741 | 3773 | const n = e.fixed32.decode(d), |
| … | … | @@ -3772,7 +3804,7 @@ const n = { |
| 3772 | 3804 | lastMember: 128 & m ? ht.decode(d) : null, |
| 3773 | 3805 | version: 256 & m ? e.uint.decode(d) : 0, |
| 3774 | 3806 | preferences: o >= 3 && 512 & m ? Kt.decode(d) : null, |
| 3775 | activeCall: o >= 4 && 1024 & m ? eu.decode(d) : null, | |
| 3807 | activeCall: o >= 4 && 1024 & m ? cu.decode(d) : null, | |
| 3776 | 3808 | } |
| 3777 | 3809 | }, |
| 3778 | 3810 | }, |
| … | … | @@ -3852,7 +3884,7 @@ const n = { |
| 3852 | 3884 | decode: (d) => ({ key: e.fixed32.decode(d), profile: Mt.decode(d) }), |
| 3853 | 3885 | }, |
| 3854 | 3886 | Dt = mt, |
| 3855 | It = { | |
| 3887 | St = { | |
| 3856 | 3888 | preencode(d, o) { |
| 3857 | 3889 | ;(e.fixed32.preencode(d, o.roomKey), Dt.preencode(d, o.device)) |
| 3858 | 3890 | }, |
| … | … | @@ -3861,10 +3893,10 @@ const n = { |
| 3861 | 3893 | }, |
| 3862 | 3894 | decode: (d) => ({ roomKey: e.fixed32.decode(d), device: Dt.decode(d) }), |
| 3863 | 3895 | }, |
| 3864 | St = h, | |
| 3896 | It = h, | |
| 3865 | 3897 | Ft = { |
| 3866 | 3898 | preencode(d, n) { |
| 3867 | ;(St.preencode(d, n.file), | |
| 3899 | ;(It.preencode(d, n.file), | |
| 3868 | 3900 | e.fixed32.preencode(d, n.roomKey), |
| 3869 | 3901 | d.end++, |
| 3870 | 3902 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), |
| … | … | @@ -3878,7 +3910,7 @@ const n = { |
| 3878 | 3910 | (n.own ? 4 : 0) | |
| 3879 | 3911 | (o >= 4 && n.lastAccessed ? 8 : 0) | |
| 3880 | 3912 | (o >= 4 && n.version ? 16 : 0) |
| 3881 | ;(St.encode(d, n.file), | |
| 3913 | ;(It.encode(d, n.file), | |
| 3882 | 3914 | e.fixed32.encode(d, n.roomKey), |
| 3883 | 3915 | e.uint.encode(d, c), |
| 3884 | 3916 | n.encryptionKey && e.buffer.encode(d, n.encryptionKey), |
| … | … | @@ -3886,7 +3918,7 @@ const n = { |
| 3886 | 3918 | o >= 4 && n.version && e.uint.encode(d, n.version)) |
| 3887 | 3919 | }, |
| 3888 | 3920 | decode(d) { |
| 3889 | const n = St.decode(d), | |
| 3921 | const n = It.decode(d), | |
| 3890 | 3922 | c = e.fixed32.decode(d), |
| 3891 | 3923 | r = e.uint.decode(d) |
| 3892 | 3924 | return { |
| … | … | @@ -3976,7 +4008,7 @@ const n = { |
| 3976 | 4008 | }, |
| 3977 | 4009 | decode: (d) => ({ roomKey: e.fixed32.decode(d), count: e.uint.decode(d) }), |
| 3978 | 4010 | }, |
| 3979 | Vt = { | |
| 4011 | Ut = { | |
| 3980 | 4012 | preencode(d, o) { |
| 3981 | 4013 | ;(d.end++, |
| 3982 | 4014 | o.roomKey && e.fixed32.preencode(d, o.roomKey), |
| … | … | @@ -3996,7 +4028,7 @@ const n = { |
| 3996 | 4028 | } |
| 3997 | 4029 | }, |
| 3998 | 4030 | }, |
| 3999 | Ut = e.frame(Vt), | |
| 4031 | Vt = e.frame(Ut), | |
| 4000 | 4032 | Jt = { |
| 4001 | 4033 | preencode(d, o) { |
| 4002 | 4034 | ;(e.string.preencode(d, o.code), |
| … | … | @@ -4004,7 +4036,7 @@ const n = { |
| 4004 | 4036 | e.string.preencode(d, o.stack), |
| 4005 | 4037 | e.uint.preencode(d, o.timestamp), |
| 4006 | 4038 | d.end++, |
| 4007 | o.details && Ut.preencode(d, o.details)) | |
| 4039 | o.details && Vt.preencode(d, o.details)) | |
| 4008 | 4040 | }, |
| 4009 | 4041 | encode(d, o) { |
| 4010 | 4042 | const n = o.details ? 1 : 0 |
| … | … | @@ -4013,14 +4045,14 @@ const n = { |
| 4013 | 4045 | e.string.encode(d, o.stack), |
| 4014 | 4046 | e.uint.encode(d, o.timestamp), |
| 4015 | 4047 | e.uint.encode(d, n), |
| 4016 | o.details && Ut.encode(d, o.details)) | |
| 4048 | o.details && Vt.encode(d, o.details)) | |
| 4017 | 4049 | }, |
| 4018 | 4050 | decode: (d) => ({ |
| 4019 | 4051 | code: e.string.decode(d), |
| 4020 | 4052 | message: e.string.decode(d), |
| 4021 | 4053 | stack: e.string.decode(d), |
| 4022 | 4054 | timestamp: e.uint.decode(d), |
| 4023 | details: 1 & e.uint.decode(d) ? Ut.decode(d) : null, | |
| 4055 | details: 1 & e.uint.decode(d) ? Vt.decode(d) : null, | |
| 4024 | 4056 | }), |
| 4025 | 4057 | }, |
| 4026 | 4058 | zt = { RESUME: 1, WAKEUP: 2, PRESUSPEND: 3, SUSPEND: 4 }, |
| … | … | @@ -4254,26 +4286,26 @@ const n = { |
| 4254 | 4286 | }, |
| 4255 | 4287 | decode: (e) => ({ header: Ci.decode(e) }), |
| 4256 | 4288 | }, |
| 4257 | Ii = Zt, | |
| 4258 | Si = Oo, | |
| 4289 | Si = Zt, | |
| 4290 | Ii = Oo, | |
| 4259 | 4291 | Fi = { |
| 4260 | 4292 | preencode(d, o) { |
| 4261 | ;(Ii.preencode(d, o.header), | |
| 4293 | ;(Si.preencode(d, o.header), | |
| 4262 | 4294 | e.fixed32.preencode(d, o.roomKey), |
| 4263 | 4295 | c.preencode(d, o.id), |
| 4264 | Si.preencode(d, o.message)) | |
| 4296 | Ii.preencode(d, o.message)) | |
| 4265 | 4297 | }, |
| 4266 | 4298 | encode(d, o) { |
| 4267 | ;(Ii.encode(d, o.header), | |
| 4299 | ;(Si.encode(d, o.header), | |
| 4268 | 4300 | e.fixed32.encode(d, o.roomKey), |
| 4269 | 4301 | c.encode(d, o.id), |
| 4270 | Si.encode(d, o.message)) | |
| 4302 | Ii.encode(d, o.message)) | |
| 4271 | 4303 | }, |
| 4272 | 4304 | decode: (d) => ({ |
| 4273 | header: Ii.decode(d), | |
| 4305 | header: Si.decode(d), | |
| 4274 | 4306 | roomKey: e.fixed32.decode(d), |
| 4275 | 4307 | id: c.decode(d), |
| 4276 | message: Si.decode(d), | |
| 4308 | message: Ii.decode(d), | |
| 4277 | 4309 | }), |
| 4278 | 4310 | }, |
| 4279 | 4311 | Li = _t, |
| … | … | @@ -4306,22 +4338,22 @@ const n = { |
| 4306 | 4338 | }, |
| 4307 | 4339 | decode: (e) => ({ header: Ni.decode(e) }), |
| 4308 | 4340 | }, |
| 4309 | Vi = Zt, | |
| 4310 | Ui = { | |
| 4341 | Ui = Zt, | |
| 4342 | Vi = { | |
| 4311 | 4343 | preencode(d, o) { |
| 4312 | ;(Vi.preencode(d, o.header), | |
| 4344 | ;(Ui.preencode(d, o.header), | |
| 4313 | 4345 | e.fixed32.preencode(d, o.roomKey), |
| 4314 | 4346 | c.preencode(d, o.id), |
| 4315 | 4347 | e.string.preencode(d, o.reaction)) |
| 4316 | 4348 | }, |
| 4317 | 4349 | encode(d, o) { |
| 4318 | ;(Vi.encode(d, o.header), | |
| 4350 | ;(Ui.encode(d, o.header), | |
| 4319 | 4351 | e.fixed32.encode(d, o.roomKey), |
| 4320 | 4352 | c.encode(d, o.id), |
| 4321 | 4353 | e.string.encode(d, o.reaction)) |
| 4322 | 4354 | }, |
| 4323 | 4355 | decode: (d) => ({ |
| 4324 | header: Vi.decode(d), | |
| 4356 | header: Ui.decode(d), | |
| 4325 | 4357 | roomKey: e.fixed32.decode(d), |
| 4326 | 4358 | id: c.decode(d), |
| 4327 | 4359 | reaction: e.string.decode(d), |
| … | … | @@ -4601,12 +4633,12 @@ const n = { |
| 4601 | 4633 | Aa = se, |
| 4602 | 4634 | qa = { |
| 4603 | 4635 | preencode(d, o) { |
| 4604 | ;(e.fixed32.preencode(d, o.key), Aa.preencode(d, o.status), du.preencode(d, o.profile)) | |
| 4636 | ;(e.fixed32.preencode(d, o.key), Aa.preencode(d, o.status), ru.preencode(d, o.profile)) | |
| 4605 | 4637 | }, |
| 4606 | 4638 | encode(d, o) { |
| 4607 | ;(e.fixed32.encode(d, o.key), Aa.encode(d, o.status), du.encode(d, o.profile)) | |
| 4639 | ;(e.fixed32.encode(d, o.key), Aa.encode(d, o.status), ru.encode(d, o.profile)) | |
| 4608 | 4640 | }, |
| 4609 | decode: (d) => ({ key: e.fixed32.decode(d), status: Aa.decode(d), profile: du.decode(d) }), | |
| 4641 | decode: (d) => ({ key: e.fixed32.decode(d), status: Aa.decode(d), profile: ru.decode(d) }), | |
| 4610 | 4642 | }, |
| 4611 | 4643 | Ma = { |
| 4612 | 4644 | preencode(d, o) { |
| … | … | @@ -4619,7 +4651,7 @@ const n = { |
| 4619 | 4651 | }, |
| 4620 | 4652 | Ca = Ma, |
| 4621 | 4653 | Da = e.array(c), |
| 4622 | Ia = { | |
| 4654 | Sa = { | |
| 4623 | 4655 | preencode(d, o) { |
| 4624 | 4656 | ;(e.fixed32.preencode(d, o.roomKey), |
| 4625 | 4657 | e.uint.preencode(d, o.start), |
| … | … | @@ -4646,7 +4678,7 @@ const n = { |
| 4646 | 4678 | isBottom: !!(1 & e.uint.decode(d)), |
| 4647 | 4679 | }), |
| 4648 | 4680 | }, |
| 4649 | Sa = { | |
| 4681 | Ia = { | |
| 4650 | 4682 | preencode(d, o) { |
| 4651 | 4683 | ;(e.uint.preencode(d, o.sent), d.end++, o.edited && e.uint.preencode(d, o.edited)) |
| 4652 | 4684 | }, |
| … | … | @@ -4659,10 +4691,10 @@ const n = { |
| 4659 | 4691 | edited: 1 & e.uint.decode(d) ? e.uint.decode(d) : 0, |
| 4660 | 4692 | }), |
| 4661 | 4693 | }, |
| 4662 | Fa = e.frame(Sa), | |
| 4694 | Fa = e.frame(Ia), | |
| 4663 | 4695 | La = Do, |
| 4664 | ja = Io, | |
| 4665 | Ea = So, | |
| 4696 | ja = So, | |
| 4697 | Ea = Io, | |
| 4666 | 4698 | Ba = { |
| 4667 | 4699 | preencode(d, o) { |
| 4668 | 4700 | ;(c.preencode(d, o.id), |
| … | … | @@ -4701,7 +4733,7 @@ const n = { |
| 4701 | 4733 | }, |
| 4702 | 4734 | Na = e.frame(Ba), |
| 4703 | 4735 | Oa = vd, |
| 4704 | Va = { | |
| 4736 | Ua = { | |
| 4705 | 4737 | preencode(d, o) { |
| 4706 | 4738 | ;(Na.preencode(d, o.chat), e.fixed32.preencode(d, o.memberKey), Oa.preencode(d, o.role)) |
| 4707 | 4739 | }, |
| … | … | @@ -4710,15 +4742,15 @@ const n = { |
| 4710 | 4742 | }, |
| 4711 | 4743 | decode: (d) => ({ chat: Na.decode(d), memberKey: e.fixed32.decode(d), role: Oa.decode(d) }), |
| 4712 | 4744 | }, |
| 4713 | Ua = Na, | |
| 4745 | Va = Na, | |
| 4714 | 4746 | Ja = { |
| 4715 | 4747 | preencode(e, d) { |
| 4716 | Ua.preencode(e, d.chat) | |
| 4748 | Va.preencode(e, d.chat) | |
| 4717 | 4749 | }, |
| 4718 | 4750 | encode(e, d) { |
| 4719 | Ua.encode(e, d.chat) | |
| 4751 | Va.encode(e, d.chat) | |
| 4720 | 4752 | }, |
| 4721 | decode: (e) => ({ chat: Ua.decode(e) }), | |
| 4753 | decode: (e) => ({ chat: Va.decode(e) }), | |
| 4722 | 4754 | }, |
| 4723 | 4755 | za = Da, |
| 4724 | 4756 | Wa = { |
| … | … | @@ -4943,15 +4975,15 @@ const n = { |
| 4943 | 4975 | }, |
| 4944 | 4976 | decode: (d) => ({ header: Ms.decode(d), roomKey: e.fixed32.decode(d), request: Cs.decode(d) }), |
| 4945 | 4977 | }, |
| 4946 | Is = _t, | |
| 4947 | Ss = { | |
| 4978 | Ss = _t, | |
| 4979 | Is = { | |
| 4948 | 4980 | preencode(e, d) { |
| 4949 | Is.preencode(e, d.header) | |
| 4981 | Ss.preencode(e, d.header) | |
| 4950 | 4982 | }, |
| 4951 | 4983 | encode(e, d) { |
| 4952 | Is.encode(e, d.header) | |
| 4984 | Ss.encode(e, d.header) | |
| 4953 | 4985 | }, |
| 4954 | decode: (e) => ({ header: Is.decode(e) }), | |
| 4986 | decode: (e) => ({ header: Ss.decode(e) }), | |
| 4955 | 4987 | }, |
| 4956 | 4988 | Fs = Zt, |
| 4957 | 4989 | Ls = { |
| … | … | @@ -4995,8 +5027,8 @@ const n = { |
| 4995 | 5027 | }), |
| 4996 | 5028 | }, |
| 4997 | 5029 | Os = j, |
| 4998 | Vs = j, | |
| 4999 | Us = { | |
| 5030 | Us = j, | |
| 5031 | Vs = { | |
| 5000 | 5032 | preencode(e, d) { |
| 5001 | 5033 | e.end++ |
| 5002 | 5034 | }, |
| … | … | @@ -5009,7 +5041,7 @@ const n = { |
| 5009 | 5041 | return { isConfirmed: !!(1 & o), isLoggedOut: !!(2 & o) } |
| 5010 | 5042 | }, |
| 5011 | 5043 | }, |
| 5012 | Js = e.frame(Us), | |
| 5044 | Js = e.frame(Vs), | |
| 5013 | 5045 | zs = _, |
| 5014 | 5046 | Ws = { |
| 5015 | 5047 | preencode(d, o) { |
| … | … | @@ -5426,7 +5458,7 @@ const n = { |
| 5426 | 5458 | return { callKey: n, selfDeviceKey: o >= 4 && 1 & c ? e.fixed32.decode(d) : null } |
| 5427 | 5459 | }, |
| 5428 | 5460 | }, |
| 5429 | Ip = { | |
| 5461 | Sp = { | |
| 5430 | 5462 | preencode(d, o) { |
| 5431 | 5463 | e.uint.preencode(d, o.lastCleared) |
| 5432 | 5464 | }, |
| … | … | @@ -5435,7 +5467,7 @@ const n = { |
| 5435 | 5467 | }, |
| 5436 | 5468 | decode: (d) => ({ lastCleared: e.uint.decode(d) }), |
| 5437 | 5469 | }, |
| 5438 | Sp = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, | |
| 5470 | Ip = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, | |
| 5439 | 5471 | Fp = { |
| 5440 | 5472 | preencode(e, d) { |
| 5441 | 5473 | e.end++ |
| … | … | @@ -5506,35 +5538,90 @@ const n = { |
| 5506 | 5538 | return { buildType: n, latestOfflineAbi: o >= 6 && 1 & c ? e.uint.decode(d) : 0 } |
| 5507 | 5539 | }, |
| 5508 | 5540 | }, |
| 5509 | Op = e.frame(P), | |
| 5510 | Vp = Op, | |
| 5511 | Up = e.frame(fe), | |
| 5512 | Jp = Op, | |
| 5513 | zp = Up, | |
| 5514 | Wp = Up, | |
| 5515 | Hp = e.frame(Pd), | |
| 5516 | Gp = e.frame(lp), | |
| 5517 | Qp = Gp, | |
| 5518 | Xp = Op, | |
| 5519 | Yp = Op, | |
| 5520 | Zp = e.frame(Mc), | |
| 5541 | Op = oe, | |
| 5542 | Up = { | |
| 5543 | preencode(d, o) { | |
| 5544 | ;(Op.preencode(d, o.header), | |
| 5545 | e.fixed32.preencode(d, o.deviceKey), | |
| 5546 | e.buffer.preencode(d, o.deviceProof), | |
| 5547 | e.buffer.preencode(d, o.writerProof)) | |
| 5548 | }, | |
| 5549 | encode(d, o) { | |
| 5550 | ;(Op.encode(d, o.header), | |
| 5551 | e.fixed32.encode(d, o.deviceKey), | |
| 5552 | e.buffer.encode(d, o.deviceProof), | |
| 5553 | e.buffer.encode(d, o.writerProof)) | |
| 5554 | }, | |
| 5555 | decode: (d) => ({ | |
| 5556 | header: Op.decode(d), | |
| 5557 | deviceKey: e.fixed32.decode(d), | |
| 5558 | deviceProof: e.buffer.decode(d), | |
| 5559 | writerProof: e.buffer.decode(d), | |
| 5560 | }), | |
| 5561 | }, | |
| 5562 | Vp = { | |
| 5563 | preencode(d, n) { | |
| 5564 | ;(d.end++, | |
| 5565 | o >= 7 && | |
| 5566 | n.otaResyncPrivateProfileBump && | |
| 5567 | e.uint.preencode(d, n.otaResyncPrivateProfileBump)) | |
| 5568 | }, | |
| 5569 | encode(d, n) { | |
| 5570 | const c = o >= 7 && n.otaResyncPrivateProfileBump ? 1 : 0 | |
| 5571 | ;(e.uint.encode(d, c), | |
| 5572 | o >= 7 && n.otaResyncPrivateProfileBump && e.uint.encode(d, n.otaResyncPrivateProfileBump)) | |
| 5573 | }, | |
| 5574 | decode(d) { | |
| 5575 | const n = e.uint.decode(d) | |
| 5576 | return { otaResyncPrivateProfileBump: o >= 7 && 1 & n ? e.uint.decode(d) : 0 } | |
| 5577 | }, | |
| 5578 | }, | |
| 5579 | Jp = { | |
| 5580 | preencode(d, o) { | |
| 5581 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 5582 | e.buffer.preencode(d, o.proof), | |
| 5583 | e.uint.preencode(d, o.createdAt)) | |
| 5584 | }, | |
| 5585 | encode(d, o) { | |
| 5586 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 5587 | e.buffer.encode(d, o.proof), | |
| 5588 | e.uint.encode(d, o.createdAt)) | |
| 5589 | }, | |
| 5590 | decode: (d) => ({ | |
| 5591 | deviceKey: e.fixed32.decode(d), | |
| 5592 | proof: e.buffer.decode(d), | |
| 5593 | createdAt: e.uint.decode(d), | |
| 5594 | }), | |
| 5595 | }, | |
| 5596 | zp = e.frame(P), | |
| 5597 | Wp = zp, | |
| 5598 | Hp = e.frame(fe), | |
| 5599 | Gp = zp, | |
| 5600 | Qp = Hp, | |
| 5601 | Xp = Hp, | |
| 5602 | Yp = e.frame(Pd), | |
| 5603 | Zp = e.frame(lp), | |
| 5521 | 5604 | $p = Zp, |
| 5522 | _p = Zp, | |
| 5523 | eu = e.frame(Dp), | |
| 5524 | du = Up | |
| 5525 | function ou(e) { | |
| 5605 | _p = zp, | |
| 5606 | eu = zp, | |
| 5607 | du = e.frame(Mc), | |
| 5608 | ou = du, | |
| 5609 | nu = du, | |
| 5610 | cu = e.frame(Dp), | |
| 5611 | ru = Hp | |
| 5612 | function tu(e) { | |
| 5526 | 5613 | o = e |
| 5527 | 5614 | } |
| 5528 | function nu(d, n, c = 6) { | |
| 5529 | return ((o = c), e.encode(tu(d), n)) | |
| 5615 | function iu(d, n, c = 7) { | |
| 5616 | return ((o = c), e.encode(pu(d), n)) | |
| 5530 | 5617 | } |
| 5531 | function cu(d, n, c = 6) { | |
| 5532 | return ((o = c), e.decode(tu(d), n)) | |
| 5618 | function au(d, n, c = 7) { | |
| 5619 | return ((o = c), e.decode(pu(d), n)) | |
| 5533 | 5620 | } |
| 5534 | function ru(e) { | |
| 5621 | function su(e) { | |
| 5535 | 5622 | switch (e) { |
| 5536 | 5623 | case "@keet/room-type": |
| 5537 | return U | |
| 5624 | return V | |
| 5538 | 5625 | case "@keet/room-supported-language": |
| 5539 | 5626 | return Y |
| 5540 | 5627 | case "@keet/display-type": |
| … | … | @@ -5554,12 +5641,12 @@ function ru(e) { |
| 5554 | 5641 | case "@keet/member-label-type": |
| 5555 | 5642 | return op |
| 5556 | 5643 | case "@keet/build-type": |
| 5557 | return Sp | |
| 5644 | return Ip | |
| 5558 | 5645 | default: |
| 5559 | 5646 | throw new Error("Enum not found " + e) |
| 5560 | 5647 | } |
| 5561 | 5648 | } |
| 5562 | function tu(e) { | |
| 5649 | function pu(e) { | |
| 5563 | 5650 | switch (e) { |
| 5564 | 5651 | case "@keet/head": |
| 5565 | 5652 | return n |
| … | … | @@ -5600,9 +5687,9 @@ function tu(e) { |
| 5600 | 5687 | case "@keet/member-moderation-status": |
| 5601 | 5688 | return D |
| 5602 | 5689 | case "@keet/abi": |
| 5603 | return I | |
| 5604 | case "@keet/device-stats": | |
| 5605 | 5690 | return S |
| 5691 | case "@keet/device-stats": | |
| 5692 | return I | |
| 5606 | 5693 | case "@keet/member-stats": |
| 5607 | 5694 | return F |
| 5608 | 5695 | case "@keet/chat-stats": |
| … | … | @@ -5610,7 +5697,7 @@ function tu(e) { |
| 5610 | 5697 | case "@keet/file-stats": |
| 5611 | 5698 | return j |
| 5612 | 5699 | case "@keet/stats": |
| 5613 | return V | |
| 5700 | return U | |
| 5614 | 5701 | case "@keet/room-type": |
| 5615 | 5702 | return J |
| 5616 | 5703 | case "@keet/system-settings": |
| … | … | @@ -5668,7 +5755,7 @@ function tu(e) { |
| 5668 | 5755 | case "@keet/invitation-metadata": |
| 5669 | 5756 | return Be |
| 5670 | 5757 | case "@keet/invitation": |
| 5671 | return Ve | |
| 5758 | return Ue | |
| 5672 | 5759 | case "@keet/add-invitation-operation": |
| 5673 | 5760 | return ze |
| 5674 | 5761 | case "@keet/remove-invitation-operation": |
| … | … | @@ -5710,7 +5797,7 @@ function tu(e) { |
| 5710 | 5797 | case "@keet/change-member-status-operation": |
| 5711 | 5798 | return Cd |
| 5712 | 5799 | case "@keet/change-member-role-operation": |
| 5713 | return Id | |
| 5800 | return Sd | |
| 5714 | 5801 | case "@keet/remove-member-operation": |
| 5715 | 5802 | return Fd |
| 5716 | 5803 | case "@keet/member-activity": |
| … | … | @@ -5758,7 +5845,7 @@ function tu(e) { |
| 5758 | 5845 | case "@keet/full-chat-message-record": |
| 5759 | 5846 | return Bo |
| 5760 | 5847 | case "@keet/add-chat-message-operation": |
| 5761 | return Vo | |
| 5848 | return Uo | |
| 5762 | 5849 | case "@keet/remove-chat-message-operation": |
| 5763 | 5850 | return Jo |
| 5764 | 5851 | case "@keet/update-chat-message-operation": |
| … | … | @@ -5798,7 +5885,7 @@ function tu(e) { |
| 5798 | 5885 | case "@keet/update-system-settings-operation": |
| 5799 | 5886 | return Dn |
| 5800 | 5887 | case "@keet/test-increment-operation": |
| 5801 | return Sn | |
| 5888 | return In | |
| 5802 | 5889 | case "@keet/test-collection-record-1": |
| 5803 | 5890 | return Fn |
| 5804 | 5891 | case "@keet/label-type": |
| … | … | @@ -5808,9 +5895,9 @@ function tu(e) { |
| 5808 | 5895 | case "@keet/add-chat-label-operation": |
| 5809 | 5896 | return Nn |
| 5810 | 5897 | case "@keet/remove-chat-label-operation": |
| 5811 | return Vn | |
| 5812 | case "@keet/chat-label-summary": | |
| 5813 | 5898 | return Un |
| 5899 | case "@keet/chat-label-summary": | |
| 5900 | return Vn | |
| 5814 | 5901 | case "@keet/chat-label-digest": |
| 5815 | 5902 | return zn |
| 5816 | 5903 | case "@keet/update-read-length-operation": |
| … | … | @@ -5862,7 +5949,7 @@ function tu(e) { |
| 5862 | 5949 | case "@keet-private-id/contact-record": |
| 5863 | 5950 | return Cc |
| 5864 | 5951 | case "@keet-private-id/add-contact-operation": |
| 5865 | return Sc | |
| 5952 | return Ic | |
| 5866 | 5953 | case "@keet-private-id/update-contact-status-operation": |
| 5867 | 5954 | return Lc |
| 5868 | 5955 | case "@keet-private-id/remove-contact-operation": |
| … | … | @@ -5918,9 +6005,9 @@ function tu(e) { |
| 5918 | 6005 | case "@local/identity-record": |
| 5919 | 6006 | return Cr |
| 5920 | 6007 | case "@local/tasks": |
| 5921 | return Ir | |
| 5922 | case "@local/room-keys": | |
| 5923 | 6008 | return Sr |
| 6009 | case "@local/room-keys": | |
| 6010 | return Ir | |
| 5924 | 6011 | case "@local/join-room-invitation-task": |
| 5925 | 6012 | return Lr |
| 5926 | 6013 | case "@local/join-room-response-task": |
| … | … | @@ -5932,7 +6019,7 @@ function tu(e) { |
| 5932 | 6019 | case "@local/join-room-keys-task": |
| 5933 | 6020 | return Or |
| 5934 | 6021 | case "@local/create-room-task": |
| 5935 | return Ur | |
| 6022 | return Vr | |
| 5936 | 6023 | case "@local/leave-room-task": |
| 5937 | 6024 | return Jr |
| 5938 | 6025 | case "@local/clear-room-task": |
| … | … | @@ -5964,7 +6051,7 @@ function tu(e) { |
| 5964 | 6051 | case "@local/member": |
| 5965 | 6052 | return Ct |
| 5966 | 6053 | case "@local/device": |
| 5967 | return It | |
| 6054 | return St | |
| 5968 | 6055 | case "@local/file": |
| 5969 | 6056 | return Ft |
| 5970 | 6057 | case "@local/debug-flag": |
| … | … | @@ -5976,7 +6063,7 @@ function tu(e) { |
| 5976 | 6063 | case "@local/unread": |
| 5977 | 6064 | return Ot |
| 5978 | 6065 | case "@local/error-record-details": |
| 5979 | return Vt | |
| 6066 | return Ut | |
| 5980 | 6067 | case "@local/error-record": |
| 5981 | 6068 | return Jt |
| 5982 | 6069 | case "@local/keet-state": |
| … | … | @@ -6030,7 +6117,7 @@ function tu(e) { |
| 6030 | 6117 | case "@api/core/remove-chat-message-response": |
| 6031 | 6118 | return Oi |
| 6032 | 6119 | case "@api/core/add-chat-reaction-request": |
| 6033 | return Ui | |
| 6120 | return Vi | |
| 6034 | 6121 | case "@api/core/add-chat-reaction-response": |
| 6035 | 6122 | return zi |
| 6036 | 6123 | case "@api/core/remove-chat-reaction-request": |
| … | … | @@ -6082,13 +6169,13 @@ function tu(e) { |
| 6082 | 6169 | case "@api/core/member-list-remove": |
| 6083 | 6170 | return Ca |
| 6084 | 6171 | case "@api/core/chat-reset": |
| 6085 | return Ia | |
| 6086 | case "@api/core/message-timestamps": | |
| 6087 | 6172 | return Sa |
| 6173 | case "@api/core/message-timestamps": | |
| 6174 | return Ia | |
| 6088 | 6175 | case "@api/core/message": |
| 6089 | 6176 | return Ba |
| 6090 | 6177 | case "@api/core/message-info": |
| 6091 | return Va | |
| 6178 | return Ua | |
| 6092 | 6179 | case "@api/core/message-info-chat": |
| 6093 | 6180 | return Ja |
| 6094 | 6181 | case "@api/core/message-info-member": |
| … | … | @@ -6132,7 +6219,7 @@ function tu(e) { |
| 6132 | 6219 | case "@api/core/reject-join-request-request": |
| 6133 | 6220 | return Ds |
| 6134 | 6221 | case "@api/core/reject-join-request-response": |
| 6135 | return Ss | |
| 6222 | return Is | |
| 6136 | 6223 | case "@api/core/stop-pairing-request": |
| 6137 | 6224 | return Ls |
| 6138 | 6225 | case "@api/core/stop-pairing-response": |
| … | … | @@ -6142,9 +6229,9 @@ function tu(e) { |
| 6142 | 6229 | case "@api/core/want-identity": |
| 6143 | 6230 | return Os |
| 6144 | 6231 | case "@api/core/unwant-identity": |
| 6145 | return Vs | |
| 6146 | case "@api/core/identity-status": | |
| 6147 | 6232 | return Us |
| 6233 | case "@api/core/identity-status": | |
| 6234 | return Vs | |
| 6148 | 6235 | case "@api/core/identity": |
| 6149 | 6236 | return Ws |
| 6150 | 6237 | case "@api/core/identity-member": |
| … | … | @@ -6196,7 +6283,7 @@ function tu(e) { |
| 6196 | 6283 | case "@local/active-call": |
| 6197 | 6284 | return Dp |
| 6198 | 6285 | case "@local/file-gc-info": |
| 6199 | return Ip | |
| 6286 | return Sp | |
| 6200 | 6287 | case "@keet/build-type": |
| 6201 | 6288 | return Fp |
| 6202 | 6289 | case "@keet/test-crash-operation": |
| … | … | @@ -6205,12 +6292,18 @@ function tu(e) { |
| 6205 | 6292 | return Bp |
| 6206 | 6293 | case "@local/environment-record": |
| 6207 | 6294 | return Np |
| 6295 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 6296 | return Up | |
| 6297 | case "@local/ota-actions": | |
| 6298 | return Vp | |
| 6299 | case "@local/device-attestation": | |
| 6300 | return Jp | |
| 6208 | 6301 | default: |
| 6209 | 6302 | throw new Error("Encoder not found " + e) |
| 6210 | 6303 | } |
| 6211 | 6304 | } |
| 6212 | function iu(e, d = 6) { | |
| 6213 | const n = tu(e) | |
| 6305 | function uu(e, d = 7) { | |
| 6306 | const n = pu(e) | |
| 6214 | 6307 | return { |
| 6215 | 6308 | preencode(e, c) { |
| 6216 | 6309 | ;((o = d), n.preencode(e, c)) |
| … | … | @@ -6221,14 +6314,14 @@ function iu(e, d = 6) { |
| 6221 | 6314 | decode: (e) => ((o = d), n.decode(e)), |
| 6222 | 6315 | } |
| 6223 | 6316 | } |
| 6224 | const au = iu | |
| 6317 | const lu = uu | |
| 6225 | 6318 | module.exports = { |
| 6226 | resolveStruct: au, | |
| 6227 | getStruct: iu, | |
| 6228 | getEnum: ru, | |
| 6229 | getEncoding: tu, | |
| 6230 | encode: nu, | |
| 6231 | decode: cu, | |
| 6232 | setVersion: ou, | |
| 6319 | resolveStruct: lu, | |
| 6320 | getStruct: uu, | |
| 6321 | getEnum: su, | |
| 6322 | getEncoding: pu, | |
| 6323 | encode: iu, | |
| 6324 | decode: au, | |
| 6325 | setVersion: tu, | |
| 6233 | 6326 | version: o, |
| 6234 | 6327 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 6 | |
| 3 | let o = 6 | |
| 2 | d = 7 | |
| 3 | let o = 7 | |
| 4 | 4 | const n = { |
| 5 | 5 | preencode(d, o) { |
| 6 | 6 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.length)) |
| … | … | @@ -204,7 +204,7 @@ const n = { |
| 204 | 204 | ;(v.preencode(d, o.pointer), |
| 205 | 205 | d.end++, |
| 206 | 206 | o.metadata && g.preencode(d, o.metadata), |
| 207 | o.preview && Op.preencode(d, o.preview), | |
| 207 | o.preview && zp.preencode(d, o.preview), | |
| 208 | 208 | o.hash && e.fixed32.preencode(d, o.hash)) |
| 209 | 209 | }, |
| 210 | 210 | encode(d, o) { |
| … | … | @@ -212,7 +212,7 @@ const n = { |
| 212 | 212 | ;(v.encode(d, o.pointer), |
| 213 | 213 | e.uint.encode(d, n), |
| 214 | 214 | o.metadata && g.encode(d, o.metadata), |
| 215 | o.preview && Op.encode(d, o.preview), | |
| 215 | o.preview && zp.encode(d, o.preview), | |
| 216 | 216 | o.hash && e.fixed32.encode(d, o.hash)) |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| … | … | @@ -221,7 +221,7 @@ const n = { |
| 221 | 221 | return { |
| 222 | 222 | pointer: o, |
| 223 | 223 | metadata: 1 & n ? g.decode(d) : null, |
| 224 | preview: 2 & n ? Op.decode(d) : null, | |
| 224 | preview: 2 & n ? zp.decode(d) : null, | |
| 225 | 225 | hash: 4 & n ? e.fixed32.decode(d) : null, |
| 226 | 226 | } |
| 227 | 227 | }, |
| … | … | @@ -355,7 +355,7 @@ const n = { |
| 355 | 355 | return { isMuted: !!(1 & o), isBanned: !!(2 & o), isShadowBanned: !!(4 & o) } |
| 356 | 356 | }, |
| 357 | 357 | }, |
| 358 | I = { | |
| 358 | S = { | |
| 359 | 359 | preencode(d, o) { |
| 360 | 360 | e.uint.preencode(d, o.version) |
| 361 | 361 | }, |
| … | … | @@ -364,7 +364,7 @@ const n = { |
| 364 | 364 | }, |
| 365 | 365 | decode: (d) => ({ version: e.uint.decode(d) }), |
| 366 | 366 | }, |
| 367 | S = { | |
| 367 | I = { | |
| 368 | 368 | preencode(d, o) { |
| 369 | 369 | ;(e.uint.preencode(d, o.total), e.uint.preencode(d, o.active)) |
| 370 | 370 | }, |
| … | … | @@ -421,11 +421,11 @@ const n = { |
| 421 | 421 | }, |
| 422 | 422 | decode: (d) => ({ clock: e.uint.decode(d) }), |
| 423 | 423 | }, |
| 424 | E = e.frame(S), | |
| 424 | E = e.frame(I), | |
| 425 | 425 | B = e.frame(F), |
| 426 | 426 | N = e.frame(L), |
| 427 | 427 | O = e.frame(j), |
| 428 | V = { | |
| 428 | U = { | |
| 429 | 429 | preencode(e, d) { |
| 430 | 430 | ;(E.preencode(e, d.devices), |
| 431 | 431 | B.preencode(e, d.members), |
| … | … | @@ -442,7 +442,7 @@ const n = { |
| 442 | 442 | files: O.decode(e), |
| 443 | 443 | }), |
| 444 | 444 | }, |
| 445 | U = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 445 | V = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 446 | 446 | J = { |
| 447 | 447 | preencode(e, d) { |
| 448 | 448 | e.end++ |
| … | … | @@ -499,7 +499,7 @@ const n = { |
| 499 | 499 | } |
| 500 | 500 | }, |
| 501 | 501 | }, |
| 502 | W = e.frame(I), | |
| 502 | W = e.frame(S), | |
| 503 | 503 | H = e.frame(z), |
| 504 | 504 | G = { |
| 505 | 505 | preencode(d, o) { |
| … | … | @@ -588,7 +588,7 @@ const n = { |
| 588 | 588 | preencode(d, o) { |
| 589 | 589 | ;(d.end++, |
| 590 | 590 | o.title && e.string.preencode(d, o.title), |
| 591 | o.avatar && Vp.preencode(d, o.avatar), | |
| 591 | o.avatar && Wp.preencode(d, o.avatar), | |
| 592 | 592 | o.description && e.string.preencode(d, o.description), |
| 593 | 593 | o.supportedLanguages && $.preencode(d, o.supportedLanguages), |
| 594 | 594 | o.blindPeers && _.preencode(d, o.blindPeers)) |
| … | … | @@ -602,7 +602,7 @@ const n = { |
| 602 | 602 | (o.blindPeers ? 16 : 0) |
| 603 | 603 | ;(e.uint.encode(d, n), |
| 604 | 604 | o.title && e.string.encode(d, o.title), |
| 605 | o.avatar && Vp.encode(d, o.avatar), | |
| 605 | o.avatar && Wp.encode(d, o.avatar), | |
| 606 | 606 | o.description && e.string.encode(d, o.description), |
| 607 | 607 | o.supportedLanguages && $.encode(d, o.supportedLanguages), |
| 608 | 608 | o.blindPeers && _.encode(d, o.blindPeers)) |
| … | … | @@ -611,7 +611,7 @@ const n = { |
| 611 | 611 | const o = e.uint.decode(d) |
| 612 | 612 | return { |
| 613 | 613 | title: 1 & o ? e.string.decode(d) : null, |
| 614 | avatar: 2 & o ? Vp.decode(d) : null, | |
| 614 | avatar: 2 & o ? Wp.decode(d) : null, | |
| 615 | 615 | description: 4 & o ? e.string.decode(d) : null, |
| 616 | 616 | supportedLanguages: 8 & o ? $.decode(d) : null, |
| 617 | 617 | blindPeers: 16 & o ? _.decode(d) : null, |
| … | … | @@ -673,7 +673,7 @@ const n = { |
| 673 | 673 | ;(e.fixed32.preencode(d, o.key), |
| 674 | 674 | e.fixed32.preencode(d, o.memberKey), |
| 675 | 675 | se.preencode(d, o.status), |
| 676 | Up.preencode(d, o.profile), | |
| 676 | Hp.preencode(d, o.profile), | |
| 677 | 677 | d.end++, |
| 678 | 678 | o.invitation && pe.preencode(d, o.invitation)) |
| 679 | 679 | }, |
| … | … | @@ -682,7 +682,7 @@ const n = { |
| 682 | 682 | ;(e.fixed32.encode(d, o.key), |
| 683 | 683 | e.fixed32.encode(d, o.memberKey), |
| 684 | 684 | se.encode(d, o.status), |
| 685 | Up.encode(d, o.profile), | |
| 685 | Hp.encode(d, o.profile), | |
| 686 | 686 | e.uint.encode(d, n), |
| 687 | 687 | o.invitation && pe.encode(d, o.invitation)) |
| 688 | 688 | }, |
| … | … | @@ -690,7 +690,7 @@ const n = { |
| 690 | 690 | key: e.fixed32.decode(d), |
| 691 | 691 | memberKey: e.fixed32.decode(d), |
| 692 | 692 | status: se.decode(d), |
| 693 | profile: Up.decode(d), | |
| 693 | profile: Hp.decode(d), | |
| 694 | 694 | invitation: 1 & e.uint.decode(d) ? pe.decode(d) : null, |
| 695 | 695 | }), |
| 696 | 696 | }, |
| … | … | @@ -700,7 +700,7 @@ const n = { |
| 700 | 700 | d.end++, |
| 701 | 701 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 702 | 702 | o.displayName && e.string.preencode(d, o.displayName), |
| 703 | o.avatar && Jp.preencode(d, o.avatar), | |
| 703 | o.avatar && Gp.preencode(d, o.avatar), | |
| 704 | 704 | o.username && e.string.preencode(d, o.username)) |
| 705 | 705 | }, |
| 706 | 706 | encode(d, o) { |
| … | … | @@ -710,7 +710,7 @@ const n = { |
| 710 | 710 | e.uint.encode(d, n), |
| 711 | 711 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 712 | 712 | o.displayName && e.string.encode(d, o.displayName), |
| 713 | o.avatar && Jp.encode(d, o.avatar), | |
| 713 | o.avatar && Gp.encode(d, o.avatar), | |
| 714 | 714 | o.username && e.string.encode(d, o.username)) |
| 715 | 715 | }, |
| 716 | 716 | decode(d) { |
| … | … | @@ -720,7 +720,7 @@ const n = { |
| 720 | 720 | timestamp: o, |
| 721 | 721 | mailbox: 1 & n ? e.fixed32.decode(d) : null, |
| 722 | 722 | displayName: 2 & n ? e.string.decode(d) : null, |
| 723 | avatar: 4 & n ? Jp.decode(d) : null, | |
| 723 | avatar: 4 & n ? Gp.decode(d) : null, | |
| 724 | 724 | username: 8 & n ? e.string.decode(d) : null, |
| 725 | 725 | } |
| 726 | 726 | }, |
| … | … | @@ -765,12 +765,12 @@ const n = { |
| 765 | 765 | }, |
| 766 | 766 | xe = { |
| 767 | 767 | preencode(e, d) { |
| 768 | ;(zp.preencode(e, d.profile), ie.preencode(e, d.attestation)) | |
| 768 | ;(Qp.preencode(e, d.profile), ie.preencode(e, d.attestation)) | |
| 769 | 769 | }, |
| 770 | 770 | encode(e, d) { |
| 771 | ;(zp.encode(e, d.profile), ie.encode(e, d.attestation)) | |
| 771 | ;(Qp.encode(e, d.profile), ie.encode(e, d.attestation)) | |
| 772 | 772 | }, |
| 773 | decode: (e) => ({ profile: zp.decode(e), attestation: ie.decode(e) }), | |
| 773 | decode: (e) => ({ profile: Qp.decode(e), attestation: ie.decode(e) }), | |
| 774 | 774 | }, |
| 775 | 775 | be = me, |
| 776 | 776 | ve = { |
| … | … | @@ -889,25 +889,25 @@ const n = { |
| 889 | 889 | }, |
| 890 | 890 | decode: (d) => ({ device: Me.decode(d), member: 1 & e.uint.decode(d) ? Ce.decode(d) : null }), |
| 891 | 891 | }, |
| 892 | Ie = e.frame(qe), | |
| 893 | Se = e.frame(De), | |
| 892 | Se = e.frame(qe), | |
| 893 | Ie = e.frame(De), | |
| 894 | 894 | Fe = { |
| 895 | 895 | preencode(e, d) { |
| 896 | 896 | ;(e.end++, |
| 897 | d.withInvitation && Ie.preencode(e, d.withInvitation), | |
| 898 | d.withMemberProof && Se.preencode(e, d.withMemberProof)) | |
| 897 | d.withInvitation && Se.preencode(e, d.withInvitation), | |
| 898 | d.withMemberProof && Ie.preencode(e, d.withMemberProof)) | |
| 899 | 899 | }, |
| 900 | 900 | encode(d, o) { |
| 901 | 901 | const n = (o.withInvitation ? 1 : 0) | (o.withMemberProof ? 2 : 0) |
| 902 | 902 | ;(e.uint.encode(d, n), |
| 903 | o.withInvitation && Ie.encode(d, o.withInvitation), | |
| 904 | o.withMemberProof && Se.encode(d, o.withMemberProof)) | |
| 903 | o.withInvitation && Se.encode(d, o.withInvitation), | |
| 904 | o.withMemberProof && Ie.encode(d, o.withMemberProof)) | |
| 905 | 905 | }, |
| 906 | 906 | decode(d) { |
| 907 | 907 | const o = e.uint.decode(d) |
| 908 | 908 | return { |
| 909 | withInvitation: 1 & o ? Ie.decode(d) : null, | |
| 910 | withMemberProof: 2 & o ? Se.decode(d) : null, | |
| 909 | withInvitation: 1 & o ? Se.decode(d) : null, | |
| 910 | withMemberProof: 2 & o ? Ie.decode(d) : null, | |
| 911 | 911 | } |
| 912 | 912 | }, |
| 913 | 913 | }, |
| … | … | @@ -956,7 +956,7 @@ const n = { |
| 956 | 956 | }, |
| 957 | 957 | Ne = Le, |
| 958 | 958 | Oe = e.frame(Be), |
| 959 | Ve = { | |
| 959 | Ue = { | |
| 960 | 960 | preencode(d, o) { |
| 961 | 961 | ;(e.fixed32.preencode(d, o.id), |
| 962 | 962 | Ne.preencode(d, o.response), |
| … | … | @@ -986,16 +986,16 @@ const n = { |
| 986 | 986 | } |
| 987 | 987 | }, |
| 988 | 988 | }, |
| 989 | Ue = oe, | |
| 990 | Je = e.frame(Ve), | |
| 989 | Ve = oe, | |
| 990 | Je = e.frame(Ue), | |
| 991 | 991 | ze = { |
| 992 | 992 | preencode(e, d) { |
| 993 | ;(Ue.preencode(e, d.header), Je.preencode(e, d.invitation)) | |
| 993 | ;(Ve.preencode(e, d.header), Je.preencode(e, d.invitation)) | |
| 994 | 994 | }, |
| 995 | 995 | encode(e, d) { |
| 996 | ;(Ue.encode(e, d.header), Je.encode(e, d.invitation)) | |
| 996 | ;(Ve.encode(e, d.header), Je.encode(e, d.invitation)) | |
| 997 | 997 | }, |
| 998 | decode: (e) => ({ header: Ue.decode(e), invitation: Je.decode(e) }), | |
| 998 | decode: (e) => ({ header: Ve.decode(e), invitation: Je.decode(e) }), | |
| 999 | 999 | }, |
| 1000 | 1000 | We = oe, |
| 1001 | 1001 | He = { |
| … | … | @@ -1132,13 +1132,13 @@ const n = { |
| 1132 | 1132 | rd = oe, |
| 1133 | 1133 | td = { |
| 1134 | 1134 | preencode(e, d) { |
| 1135 | ;(rd.preencode(e, d.header), e.end++, d.profile && Wp.preencode(e, d.profile)) | |
| 1135 | ;(rd.preencode(e, d.header), e.end++, d.profile && Xp.preencode(e, d.profile)) | |
| 1136 | 1136 | }, |
| 1137 | 1137 | encode(d, o) { |
| 1138 | 1138 | const n = o.profile ? 1 : 0 |
| 1139 | ;(rd.encode(d, o.header), e.uint.encode(d, n), o.profile && Wp.encode(d, o.profile)) | |
| 1139 | ;(rd.encode(d, o.header), e.uint.encode(d, n), o.profile && Xp.encode(d, o.profile)) | |
| 1140 | 1140 | }, |
| 1141 | decode: (d) => ({ header: rd.decode(d), profile: 1 & e.uint.decode(d) ? Wp.decode(d) : null }), | |
| 1141 | decode: (d) => ({ header: rd.decode(d), profile: 1 & e.uint.decode(d) ? Xp.decode(d) : null }), | |
| 1142 | 1142 | }, |
| 1143 | 1143 | id = oe, |
| 1144 | 1144 | ad = { |
| … | … | @@ -1219,7 +1219,7 @@ const n = { |
| 1219 | 1219 | hd.preencode(d, o.status), |
| 1220 | 1220 | Kd.preencode(d, o.profile), |
| 1221 | 1221 | d.end++, |
| 1222 | o.proofs && Hp.preencode(d, o.proofs)) | |
| 1222 | o.proofs && Yp.preencode(d, o.proofs)) | |
| 1223 | 1223 | }, |
| 1224 | 1224 | encode(d, o) { |
| 1225 | 1225 | const n = o.proofs ? 1 : 0 |
| … | … | @@ -1227,13 +1227,13 @@ const n = { |
| 1227 | 1227 | hd.encode(d, o.status), |
| 1228 | 1228 | Kd.encode(d, o.profile), |
| 1229 | 1229 | e.uint.encode(d, n), |
| 1230 | o.proofs && Hp.encode(d, o.proofs)) | |
| 1230 | o.proofs && Yp.encode(d, o.proofs)) | |
| 1231 | 1231 | }, |
| 1232 | 1232 | decode: (d) => ({ |
| 1233 | 1233 | key: e.fixed32.decode(d), |
| 1234 | 1234 | status: hd.decode(d), |
| 1235 | 1235 | profile: Kd.decode(d), |
| 1236 | proofs: 1 & e.uint.decode(d) ? Hp.decode(d) : null, | |
| 1236 | proofs: 1 & e.uint.decode(d) ? Yp.decode(d) : null, | |
| 1237 | 1237 | }), |
| 1238 | 1238 | }, |
| 1239 | 1239 | Pd = { |
| … | … | @@ -1294,7 +1294,7 @@ const n = { |
| 1294 | 1294 | }), |
| 1295 | 1295 | }, |
| 1296 | 1296 | Dd = oe, |
| 1297 | Id = { | |
| 1297 | Sd = { | |
| 1298 | 1298 | preencode(d, o) { |
| 1299 | 1299 | ;(Dd.preencode(d, o.header), e.fixed32.preencode(d, o.key), d.end++) |
| 1300 | 1300 | }, |
| … | … | @@ -1309,15 +1309,15 @@ const n = { |
| 1309 | 1309 | return { header: o, key: n, isModerator: !!(1 & c), isAdmin: !!(2 & c) } |
| 1310 | 1310 | }, |
| 1311 | 1311 | }, |
| 1312 | Sd = oe, | |
| 1312 | Id = oe, | |
| 1313 | 1313 | Fd = { |
| 1314 | 1314 | preencode(d, o) { |
| 1315 | ;(Sd.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 1315 | ;(Id.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 1316 | 1316 | }, |
| 1317 | 1317 | encode(d, o) { |
| 1318 | ;(Sd.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 1318 | ;(Id.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 1319 | 1319 | }, |
| 1320 | decode: (d) => ({ header: Sd.decode(d), key: e.fixed32.decode(d) }), | |
| 1320 | decode: (d) => ({ header: Id.decode(d), key: e.fixed32.decode(d) }), | |
| 1321 | 1321 | }, |
| 1322 | 1322 | Ld = { |
| 1323 | 1323 | preencode(d, o) { |
| … | … | @@ -1354,8 +1354,8 @@ const n = { |
| 1354 | 1354 | }, |
| 1355 | 1355 | }, |
| 1356 | 1356 | Od = e.frame(jd), |
| 1357 | Vd = e.frame(Ed), | |
| 1358 | Ud = e.frame(Nd), | |
| 1357 | Ud = e.frame(Ed), | |
| 1358 | Vd = e.frame(Nd), | |
| 1359 | 1359 | Jd = e.frame(Bd), |
| 1360 | 1360 | zd = { |
| 1361 | 1361 | preencode(d, n) { |
| … | … | @@ -1372,10 +1372,10 @@ const n = { |
| 1372 | 1372 | (o >= 3 && n.locationShared ? 512 : 0) |
| 1373 | 1373 | ;(e.uint.preencode(d, c), |
| 1374 | 1374 | n.memberJoined && Od.preencode(d, n.memberJoined), |
| 1375 | n.memberLeft && Vd.preencode(d, n.memberLeft), | |
| 1376 | n.titleChanged && Ud.preencode(d, n.titleChanged), | |
| 1375 | n.memberLeft && Ud.preencode(d, n.memberLeft), | |
| 1376 | n.titleChanged && Vd.preencode(d, n.titleChanged), | |
| 1377 | 1377 | n.memberRemoved && Jd.preencode(d, n.memberRemoved), |
| 1378 | o >= 3 && n.locationShared && Gp.preencode(d, n.locationShared)) | |
| 1378 | o >= 3 && n.locationShared && Zp.preencode(d, n.locationShared)) | |
| 1379 | 1379 | }, |
| 1380 | 1380 | encode(d, n) { |
| 1381 | 1381 | const c = |
| … | … | @@ -1391,30 +1391,30 @@ const n = { |
| 1391 | 1391 | (o >= 3 && n.locationShared ? 512 : 0) |
| 1392 | 1392 | ;(e.uint.encode(d, c), |
| 1393 | 1393 | n.memberJoined && Od.encode(d, n.memberJoined), |
| 1394 | n.memberLeft && Vd.encode(d, n.memberLeft), | |
| 1395 | n.titleChanged && Ud.encode(d, n.titleChanged), | |
| 1394 | n.memberLeft && Ud.encode(d, n.memberLeft), | |
| 1395 | n.titleChanged && Vd.encode(d, n.titleChanged), | |
| 1396 | 1396 | n.memberRemoved && Jd.encode(d, n.memberRemoved), |
| 1397 | o >= 3 && n.locationShared && Gp.encode(d, n.locationShared)) | |
| 1397 | o >= 3 && n.locationShared && Zp.encode(d, n.locationShared)) | |
| 1398 | 1398 | }, |
| 1399 | 1399 | decode(d) { |
| 1400 | 1400 | const n = e.uint.decode(d) |
| 1401 | 1401 | return { |
| 1402 | 1402 | memberJoined: 1 & n ? Od.decode(d) : null, |
| 1403 | memberLeft: 2 & n ? Vd.decode(d) : null, | |
| 1404 | titleChanged: 4 & n ? Ud.decode(d) : null, | |
| 1403 | memberLeft: 2 & n ? Ud.decode(d) : null, | |
| 1404 | titleChanged: 4 & n ? Vd.decode(d) : null, | |
| 1405 | 1405 | callStarted: !!(8 & n), |
| 1406 | 1406 | callHangup: !!(16 & n), |
| 1407 | 1407 | callMissed: !!(32 & n), |
| 1408 | 1408 | roomAvatarChanged: !!(64 & n), |
| 1409 | 1409 | invitationCreated: !!(128 & n), |
| 1410 | 1410 | memberRemoved: 256 & n ? Jd.decode(d) : null, |
| 1411 | locationShared: o >= 3 && 512 & n ? Gp.decode(d) : null, | |
| 1411 | locationShared: o >= 3 && 512 & n ? Zp.decode(d) : null, | |
| 1412 | 1412 | } |
| 1413 | 1413 | }, |
| 1414 | 1414 | }, |
| 1415 | 1415 | Wd = { |
| 1416 | 1416 | preencode(e, d) { |
| 1417 | ;(e.end++, o >= 3 && d.locationShared && Qp.preencode(e, d.locationShared)) | |
| 1417 | ;(e.end++, o >= 3 && d.locationShared && $p.preencode(e, d.locationShared)) | |
| 1418 | 1418 | }, |
| 1419 | 1419 | encode(d, n) { |
| 1420 | 1420 | const c = |
| … | … | @@ -1422,7 +1422,7 @@ const n = { |
| 1422 | 1422 | (n.callHangup ? 2 : 0) | |
| 1423 | 1423 | (n.callMissed ? 4 : 0) | |
| 1424 | 1424 | (o >= 3 && n.locationShared ? 8 : 0) |
| 1425 | ;(e.uint.encode(d, c), o >= 3 && n.locationShared && Qp.encode(d, n.locationShared)) | |
| 1425 | ;(e.uint.encode(d, c), o >= 3 && n.locationShared && $p.encode(d, n.locationShared)) | |
| 1426 | 1426 | }, |
| 1427 | 1427 | decode(d) { |
| 1428 | 1428 | const n = e.uint.decode(d) |
| … | … | @@ -1430,7 +1430,7 @@ const n = { |
| 1430 | 1430 | callStarted: !!(1 & n), |
| 1431 | 1431 | callHangup: !!(2 & n), |
| 1432 | 1432 | callMissed: !!(4 & n), |
| 1433 | locationShared: o >= 3 && 8 & n ? Qp.decode(d) : null, | |
| 1433 | locationShared: o >= 3 && 8 & n ? $p.decode(d) : null, | |
| 1434 | 1434 | } |
| 1435 | 1435 | }, |
| 1436 | 1436 | }, |
| … | … | @@ -1739,7 +1739,7 @@ const n = { |
| 1739 | 1739 | }, |
| 1740 | 1740 | decode: (d) => ({ thread: e.uint.decode(d), index: e.uint.decode(d) }), |
| 1741 | 1741 | }, |
| 1742 | Mo = e.frame(V), | |
| 1742 | Mo = e.frame(U), | |
| 1743 | 1743 | Co = { |
| 1744 | 1744 | preencode(d, o) { |
| 1745 | 1745 | ;(e.uint.preencode(d, o.id), |
| … | … | @@ -1769,8 +1769,8 @@ const n = { |
| 1769 | 1769 | }, |
| 1770 | 1770 | }, |
| 1771 | 1771 | Do = e.frame(Ao), |
| 1772 | Io = e.frame(wo), | |
| 1773 | So = e.frame(zd), | |
| 1772 | So = e.frame(wo), | |
| 1773 | Io = e.frame(zd), | |
| 1774 | 1774 | Fo = { |
| 1775 | 1775 | preencode(d, o) { |
| 1776 | 1776 | ;(qo.preencode(d, o.id), |
| … | … | @@ -1780,8 +1780,8 @@ const n = { |
| 1780 | 1780 | d.end++, |
| 1781 | 1781 | o.editedAt && e.uint.preencode(d, o.editedAt), |
| 1782 | 1782 | Do.preencode(d, o.status), |
| 1783 | o.message && Io.preencode(d, o.message), | |
| 1784 | o.event && So.preencode(d, o.event)) | |
| 1783 | o.message && So.preencode(d, o.message), | |
| 1784 | o.event && Io.preencode(d, o.event)) | |
| 1785 | 1785 | }, |
| 1786 | 1786 | encode(d, o) { |
| 1787 | 1787 | const n = (o.editedAt ? 1 : 0) | (o.message ? 2 : 0) | (o.event ? 4 : 0) |
| … | … | @@ -1792,8 +1792,8 @@ const n = { |
| 1792 | 1792 | e.uint.encode(d, n), |
| 1793 | 1793 | o.editedAt && e.uint.encode(d, o.editedAt), |
| 1794 | 1794 | Do.encode(d, o.status), |
| 1795 | o.message && Io.encode(d, o.message), | |
| 1796 | o.event && So.encode(d, o.event)) | |
| 1795 | o.message && So.encode(d, o.message), | |
| 1796 | o.event && Io.encode(d, o.event)) | |
| 1797 | 1797 | }, |
| 1798 | 1798 | decode(d) { |
| 1799 | 1799 | const o = qo.decode(d), |
| … | … | @@ -1808,14 +1808,14 @@ const n = { |
| 1808 | 1808 | timestamp: t, |
| 1809 | 1809 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 1810 | 1810 | status: Do.decode(d), |
| 1811 | message: 2 & i ? Io.decode(d) : null, | |
| 1812 | event: 4 & i ? So.decode(d) : null, | |
| 1811 | message: 2 & i ? So.decode(d) : null, | |
| 1812 | event: 4 & i ? Io.decode(d) : null, | |
| 1813 | 1813 | } |
| 1814 | 1814 | }, |
| 1815 | 1815 | }, |
| 1816 | 1816 | Lo = Do, |
| 1817 | 1817 | jo = e.frame(To), |
| 1818 | Eo = So, | |
| 1818 | Eo = Io, | |
| 1819 | 1819 | Bo = { |
| 1820 | 1820 | preencode(d, o) { |
| 1821 | 1821 | ;(qo.preencode(d, o.id), |
| … | … | @@ -1860,7 +1860,7 @@ const n = { |
| 1860 | 1860 | }, |
| 1861 | 1861 | No = oe, |
| 1862 | 1862 | Oo = e.frame(ko), |
| 1863 | Vo = { | |
| 1863 | Uo = { | |
| 1864 | 1864 | preencode(e, d) { |
| 1865 | 1865 | ;(No.preencode(e, d.header), Oo.preencode(e, d.message)) |
| 1866 | 1866 | }, |
| … | … | @@ -1869,15 +1869,15 @@ const n = { |
| 1869 | 1869 | }, |
| 1870 | 1870 | decode: (e) => ({ header: No.decode(e), message: Oo.decode(e) }), |
| 1871 | 1871 | }, |
| 1872 | Uo = oe, | |
| 1872 | Vo = oe, | |
| 1873 | 1873 | Jo = { |
| 1874 | 1874 | preencode(e, d) { |
| 1875 | ;(Uo.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1875 | ;(Vo.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1876 | 1876 | }, |
| 1877 | 1877 | encode(e, d) { |
| 1878 | ;(Uo.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1878 | ;(Vo.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1879 | 1879 | }, |
| 1880 | decode: (e) => ({ header: Uo.decode(e), oplog: c.decode(e) }), | |
| 1880 | decode: (e) => ({ header: Vo.decode(e), oplog: c.decode(e) }), | |
| 1881 | 1881 | }, |
| 1882 | 1882 | zo = oe, |
| 1883 | 1883 | Wo = Oo, |
| … | … | @@ -1922,7 +1922,7 @@ const n = { |
| 1922 | 1922 | ;(Zo.preencode(d, o.header), |
| 1923 | 1923 | c.preencode(d, o.oplog), |
| 1924 | 1924 | e.uint.preencode(d, o.index), |
| 1925 | Xp.preencode(d, o.preview), | |
| 1925 | _p.preencode(d, o.preview), | |
| 1926 | 1926 | d.end++, |
| 1927 | 1927 | o.displayType && Yo.preencode(d, o.displayType)) |
| 1928 | 1928 | }, |
| … | … | @@ -1931,7 +1931,7 @@ const n = { |
| 1931 | 1931 | ;(Zo.encode(d, o.header), |
| 1932 | 1932 | c.encode(d, o.oplog), |
| 1933 | 1933 | e.uint.encode(d, o.index), |
| 1934 | Xp.encode(d, o.preview), | |
| 1934 | _p.encode(d, o.preview), | |
| 1935 | 1935 | e.uint.encode(d, n), |
| 1936 | 1936 | o.displayType && Yo.encode(d, o.displayType)) |
| 1937 | 1937 | }, |
| … | … | @@ -1939,7 +1939,7 @@ const n = { |
| 1939 | 1939 | header: Zo.decode(d), |
| 1940 | 1940 | oplog: c.decode(d), |
| 1941 | 1941 | index: e.uint.decode(d), |
| 1942 | preview: Xp.decode(d), | |
| 1942 | preview: _p.decode(d), | |
| 1943 | 1943 | displayType: 1 & e.uint.decode(d) ? Yo.decode(d) : 0, |
| 1944 | 1944 | }), |
| 1945 | 1945 | }, |
| … | … | @@ -2032,19 +2032,19 @@ const n = { |
| 2032 | 2032 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2033 | 2033 | e.string.preencode(d, o.displayName), |
| 2034 | 2034 | d.end++, |
| 2035 | o.avatar && Yp.preencode(d, o.avatar)) | |
| 2035 | o.avatar && eu.preencode(d, o.avatar)) | |
| 2036 | 2036 | }, |
| 2037 | 2037 | encode(d, o) { |
| 2038 | 2038 | const n = o.avatar ? 1 : 0 |
| 2039 | 2039 | ;(e.fixed32.encode(d, o.memberKey), |
| 2040 | 2040 | e.string.encode(d, o.displayName), |
| 2041 | 2041 | e.uint.encode(d, n), |
| 2042 | o.avatar && Yp.encode(d, o.avatar)) | |
| 2042 | o.avatar && eu.encode(d, o.avatar)) | |
| 2043 | 2043 | }, |
| 2044 | 2044 | decode: (d) => ({ |
| 2045 | 2045 | memberKey: e.fixed32.decode(d), |
| 2046 | 2046 | displayName: e.string.decode(d), |
| 2047 | avatar: 1 & e.uint.decode(d) ? Yp.decode(d) : null, | |
| 2047 | avatar: 1 & e.uint.decode(d) ? eu.decode(d) : null, | |
| 2048 | 2048 | }), |
| 2049 | 2049 | }, |
| 2050 | 2050 | ln = { |
| … | … | @@ -2202,15 +2202,15 @@ const n = { |
| 2202 | 2202 | }, |
| 2203 | 2203 | decode: (d) => ({ header: Mn.decode(d), key: e.uint.decode(d), settings: Cn.decode(d) }), |
| 2204 | 2204 | }, |
| 2205 | In = oe, | |
| 2206 | Sn = { | |
| 2205 | Sn = oe, | |
| 2206 | In = { | |
| 2207 | 2207 | preencode(d, o) { |
| 2208 | ;(In.preencode(d, o.header), e.uint.preencode(d, o.value)) | |
| 2208 | ;(Sn.preencode(d, o.header), e.uint.preencode(d, o.value)) | |
| 2209 | 2209 | }, |
| 2210 | 2210 | encode(d, o) { |
| 2211 | ;(In.encode(d, o.header), e.uint.encode(d, o.value)) | |
| 2211 | ;(Sn.encode(d, o.header), e.uint.encode(d, o.value)) | |
| 2212 | 2212 | }, |
| 2213 | decode: (d) => ({ header: In.decode(d), value: e.uint.decode(d) }), | |
| 2213 | decode: (d) => ({ header: Sn.decode(d), value: e.uint.decode(d) }), | |
| 2214 | 2214 | }, |
| 2215 | 2215 | Fn = { |
| 2216 | 2216 | preencode(d, o) { |
| … | … | @@ -2263,7 +2263,7 @@ const n = { |
| 2263 | 2263 | decode: (e) => ({ header: Bn.decode(e), oplog: c.decode(e), label: jn.decode(e) }), |
| 2264 | 2264 | }, |
| 2265 | 2265 | On = oe, |
| 2266 | Vn = { | |
| 2266 | Un = { | |
| 2267 | 2267 | preencode(e, d) { |
| 2268 | 2268 | ;(On.preencode(e, d.header), c.preencode(e, d.oplog), jn.preencode(e, d.label)) |
| 2269 | 2269 | }, |
| … | … | @@ -2272,7 +2272,7 @@ const n = { |
| 2272 | 2272 | }, |
| 2273 | 2273 | decode: (e) => ({ header: On.decode(e), oplog: c.decode(e), label: jn.decode(e) }), |
| 2274 | 2274 | }, |
| 2275 | Un = { | |
| 2275 | Vn = { | |
| 2276 | 2276 | preencode(d, o) { |
| 2277 | 2277 | ;(jn.preencode(d, o.label), e.uint.preencode(d, o.count)) |
| 2278 | 2278 | }, |
| … | … | @@ -2281,7 +2281,7 @@ const n = { |
| 2281 | 2281 | }, |
| 2282 | 2282 | decode: (d) => ({ label: jn.decode(d), count: e.uint.decode(d) }), |
| 2283 | 2283 | }, |
| 2284 | Jn = e.array(e.frame(Un)), | |
| 2284 | Jn = e.array(e.frame(Vn)), | |
| 2285 | 2285 | zn = { |
| 2286 | 2286 | preencode(d, o) { |
| 2287 | 2287 | ;(qo.preencode(d, o.id), |
| … | … | @@ -2342,7 +2342,7 @@ const n = { |
| 2342 | 2342 | Xn = { |
| 2343 | 2343 | preencode(d, o) { |
| 2344 | 2344 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2345 | Zp.preencode(d, o.status), | |
| 2345 | du.preencode(d, o.status), | |
| 2346 | 2346 | d.end++, |
| 2347 | 2347 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2348 | 2348 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2350,14 +2350,14 @@ const n = { |
| 2350 | 2350 | encode(d, o) { |
| 2351 | 2351 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2352 | 2352 | ;(e.fixed32.encode(d, o.memberKey), |
| 2353 | Zp.encode(d, o.status), | |
| 2353 | du.encode(d, o.status), | |
| 2354 | 2354 | e.uint.encode(d, n), |
| 2355 | 2355 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2356 | 2356 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| 2357 | 2357 | }, |
| 2358 | 2358 | decode(d) { |
| 2359 | 2359 | const o = e.fixed32.decode(d), |
| 2360 | n = Zp.decode(d), | |
| 2360 | n = du.decode(d), | |
| 2361 | 2361 | c = e.uint.decode(d) |
| 2362 | 2362 | return { |
| 2363 | 2363 | memberKey: o, |
| … | … | @@ -2595,7 +2595,8 @@ const n = { |
| 2595 | 2595 | (n.isFullyMuted ? 2 : 0) | |
| 2596 | 2596 | (n.isMentionsOnlyMuted ? 4 : 0) | |
| 2597 | 2597 | (n.isReadOnly ? 8 : 0) | |
| 2598 | (o >= 3 && n.isFavorite ? 16 : 0) | |
| 2598 | (o >= 3 && n.isFavorite ? 16 : 0) | | |
| 2599 | (o >= 7 && n.isUnread ? 32 : 0) | |
| 2599 | 2600 | e.uint.encode(d, c) |
| 2600 | 2601 | }, |
| 2601 | 2602 | decode(d) { |
| … | … | @@ -2606,6 +2607,7 @@ const n = { |
| 2606 | 2607 | isMentionsOnlyMuted: !!(4 & n), |
| 2607 | 2608 | isReadOnly: !!(8 & n), |
| 2608 | 2609 | isFavorite: o >= 3 && !!(16 & n), |
| 2610 | isUnread: o >= 7 && !!(32 & n), | |
| 2609 | 2611 | } |
| 2610 | 2612 | }, |
| 2611 | 2613 | }, |
| … | … | @@ -2754,7 +2756,7 @@ const n = { |
| 2754 | 2756 | preencode(d, o) { |
| 2755 | 2757 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2756 | 2758 | e.uint.preencode(d, o.clock), |
| 2757 | $p.preencode(d, o.status), | |
| 2759 | ou.preencode(d, o.status), | |
| 2758 | 2760 | d.end++, |
| 2759 | 2761 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2760 | 2762 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2763,7 +2765,7 @@ const n = { |
| 2763 | 2765 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2764 | 2766 | ;(e.fixed32.encode(d, o.memberKey), |
| 2765 | 2767 | e.uint.encode(d, o.clock), |
| 2766 | $p.encode(d, o.status), | |
| 2768 | ou.encode(d, o.status), | |
| 2767 | 2769 | e.uint.encode(d, n), |
| 2768 | 2770 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2769 | 2771 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| … | … | @@ -2771,7 +2773,7 @@ const n = { |
| 2771 | 2773 | decode(d) { |
| 2772 | 2774 | const o = e.fixed32.decode(d), |
| 2773 | 2775 | n = e.uint.decode(d), |
| 2774 | c = $p.decode(d), | |
| 2776 | c = ou.decode(d), | |
| 2775 | 2777 | r = e.uint.decode(d) |
| 2776 | 2778 | return { |
| 2777 | 2779 | memberKey: o, |
| … | … | @@ -2783,15 +2785,15 @@ const n = { |
| 2783 | 2785 | }, |
| 2784 | 2786 | }, |
| 2785 | 2787 | Dc = oe, |
| 2786 | Ic = e.frame(Xn), | |
| 2787 | Sc = { | |
| 2788 | Sc = e.frame(Xn), | |
| 2789 | Ic = { | |
| 2788 | 2790 | preencode(e, d) { |
| 2789 | ;(Dc.preencode(e, d.header), Ic.preencode(e, d.contact)) | |
| 2791 | ;(Dc.preencode(e, d.header), Sc.preencode(e, d.contact)) | |
| 2790 | 2792 | }, |
| 2791 | 2793 | encode(e, d) { |
| 2792 | ;(Dc.encode(e, d.header), Ic.encode(e, d.contact)) | |
| 2794 | ;(Dc.encode(e, d.header), Sc.encode(e, d.contact)) | |
| 2793 | 2795 | }, |
| 2794 | decode: (e) => ({ header: Dc.decode(e), contact: Ic.decode(e) }), | |
| 2796 | decode: (e) => ({ header: Dc.decode(e), contact: Sc.decode(e) }), | |
| 2795 | 2797 | }, |
| 2796 | 2798 | Fc = oe, |
| 2797 | 2799 | Lc = { |
| … | … | @@ -2799,19 +2801,19 @@ const n = { |
| 2799 | 2801 | ;(Fc.preencode(d, o.header), |
| 2800 | 2802 | e.fixed32.preencode(d, o.memberKey), |
| 2801 | 2803 | e.uint.preencode(d, o.key), |
| 2802 | _p.preencode(d, o.status)) | |
| 2804 | nu.preencode(d, o.status)) | |
| 2803 | 2805 | }, |
| 2804 | 2806 | encode(d, o) { |
| 2805 | 2807 | ;(Fc.encode(d, o.header), |
| 2806 | 2808 | e.fixed32.encode(d, o.memberKey), |
| 2807 | 2809 | e.uint.encode(d, o.key), |
| 2808 | _p.encode(d, o.status)) | |
| 2810 | nu.encode(d, o.status)) | |
| 2809 | 2811 | }, |
| 2810 | 2812 | decode: (d) => ({ |
| 2811 | 2813 | header: Fc.decode(d), |
| 2812 | 2814 | memberKey: e.fixed32.decode(d), |
| 2813 | 2815 | key: e.uint.decode(d), |
| 2814 | status: _p.decode(d), | |
| 2816 | status: nu.decode(d), | |
| 2815 | 2817 | }), |
| 2816 | 2818 | }, |
| 2817 | 2819 | jc = oe, |
| … | … | @@ -2858,27 +2860,27 @@ const n = { |
| 2858 | 2860 | } |
| 2859 | 2861 | }, |
| 2860 | 2862 | }, |
| 2861 | Vc = Pe, | |
| 2862 | Uc = e.frame(i), | |
| 2863 | Uc = Pe, | |
| 2864 | Vc = e.frame(i), | |
| 2863 | 2865 | Jc = { |
| 2864 | 2866 | preencode(d, o) { |
| 2865 | ;(Vc.preencode(d, o.sender), | |
| 2866 | Uc.preencode(d, o.keys), | |
| 2867 | ;(Uc.preencode(d, o.sender), | |
| 2868 | Vc.preencode(d, o.keys), | |
| 2867 | 2869 | e.fixed32.preencode(d, o.mailbox), |
| 2868 | 2870 | d.end++, |
| 2869 | 2871 | o.message && e.string.preencode(d, o.message)) |
| 2870 | 2872 | }, |
| 2871 | 2873 | encode(d, o) { |
| 2872 | 2874 | const n = o.message ? 1 : 0 |
| 2873 | ;(Vc.encode(d, o.sender), | |
| 2874 | Uc.encode(d, o.keys), | |
| 2875 | ;(Uc.encode(d, o.sender), | |
| 2876 | Vc.encode(d, o.keys), | |
| 2875 | 2877 | e.fixed32.encode(d, o.mailbox), |
| 2876 | 2878 | e.uint.encode(d, n), |
| 2877 | 2879 | o.message && e.string.encode(d, o.message)) |
| 2878 | 2880 | }, |
| 2879 | 2881 | decode: (d) => ({ |
| 2880 | sender: Vc.decode(d), | |
| 2881 | keys: Uc.decode(d), | |
| 2882 | sender: Uc.decode(d), | |
| 2883 | keys: Vc.decode(d), | |
| 2882 | 2884 | mailbox: e.fixed32.decode(d), |
| 2883 | 2885 | message: 1 & e.uint.decode(d) ? e.string.decode(d) : null, |
| 2884 | 2886 | }), |
| … | … | @@ -2895,7 +2897,7 @@ const n = { |
| 2895 | 2897 | }, |
| 2896 | 2898 | Hc = me, |
| 2897 | 2899 | Gc = e.frame(Oc), |
| 2898 | Qc = Uc, | |
| 2900 | Qc = Vc, | |
| 2899 | 2901 | Xc = { |
| 2900 | 2902 | preencode(d, o) { |
| 2901 | 2903 | ;(e.fixed32.preencode(d, o.memberKey), |
| … | … | @@ -3060,22 +3062,45 @@ const n = { |
| 3060 | 3062 | preencode(e, d) { |
| 3061 | 3063 | e.end++ |
| 3062 | 3064 | }, |
| 3063 | encode(d, o) { | |
| 3064 | const n = o.disableReadReceipts ? 1 : 0 | |
| 3065 | e.uint.encode(d, n) | |
| 3065 | encode(d, n) { | |
| 3066 | const c = (n.disableReadReceipts ? 1 : 0) | (o >= 7 && n.stripAttachmentMetadata ? 2 : 0) | |
| 3067 | e.uint.encode(d, c) | |
| 3066 | 3068 | }, |
| 3067 | decode: (d) => ({ disableReadReceipts: !!(1 & e.uint.decode(d)) }), | |
| 3069 | decode(d) { | |
| 3070 | const n = e.uint.decode(d) | |
| 3071 | return { disableReadReceipts: !!(1 & n), stripAttachmentMetadata: o >= 7 && !!(2 & n) } | |
| 3072 | }, | |
| 3073 | }, | |
| 3074 | sr = { | |
| 3075 | disableReadReceipts: "disableReadReceipts", | |
| 3076 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 3068 | 3077 | }, |
| 3069 | sr = { disableReadReceipts: "disableReadReceipts" }, | |
| 3070 | 3078 | pr = { |
| 3071 | 3079 | preencode(e, d) { |
| 3072 | 3080 | e.end++ |
| 3073 | 3081 | }, |
| 3074 | 3082 | encode(d, o) { |
| 3075 | if ("disableReadReceipts" !== o) throw new Error("Unknown enum") | |
| 3076 | e.uint.encode(d, 1) | |
| 3083 | switch (o) { | |
| 3084 | case "disableReadReceipts": | |
| 3085 | e.uint.encode(d, 1) | |
| 3086 | break | |
| 3087 | case "stripAttachmentMetadata": | |
| 3088 | e.uint.encode(d, 2) | |
| 3089 | break | |
| 3090 | default: | |
| 3091 | throw new Error("Unknown enum") | |
| 3092 | } | |
| 3093 | }, | |
| 3094 | decode(d) { | |
| 3095 | switch (e.uint.decode(d)) { | |
| 3096 | case 1: | |
| 3097 | return "disableReadReceipts" | |
| 3098 | case 2: | |
| 3099 | return "stripAttachmentMetadata" | |
| 3100 | default: | |
| 3101 | return null | |
| 3102 | } | |
| 3077 | 3103 | }, |
| 3078 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 3079 | 3104 | }, |
| 3080 | 3105 | ur = oe, |
| 3081 | 3106 | lr = e.frame(ar), |
| … | … | @@ -3123,7 +3148,7 @@ const n = { |
| 3123 | 3148 | }, |
| 3124 | 3149 | decode: (d) => ({ rooms: e.uint.decode(d), activeRooms: e.uint.decode(d) }), |
| 3125 | 3150 | }, |
| 3126 | xr = I, | |
| 3151 | xr = S, | |
| 3127 | 3152 | br = _, |
| 3128 | 3153 | vr = { |
| 3129 | 3154 | preencode(e, d) { |
| … | … | @@ -3229,45 +3254,52 @@ const n = { |
| 3229 | 3254 | qr = gc, |
| 3230 | 3255 | Mr = e.frame(xc), |
| 3231 | 3256 | Cr = { |
| 3232 | preencode(d, o) { | |
| 3233 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 3234 | e.fixed32.preencode(d, o.privateProfileKey), | |
| 3235 | t.preencode(d, o.deviceKeyPair), | |
| 3236 | e.buffer.preencode(d, o.deviceProof), | |
| 3237 | Ar.preencode(d, o.status), | |
| 3257 | preencode(d, n) { | |
| 3258 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 3259 | e.fixed32.preencode(d, n.privateProfileKey), | |
| 3260 | t.preencode(d, n.deviceKeyPair), | |
| 3261 | e.buffer.preencode(d, n.deviceProof), | |
| 3262 | Ar.preencode(d, n.status), | |
| 3238 | 3263 | d.end++, |
| 3239 | o.entropy && e.buffer.preencode(d, o.entropy), | |
| 3240 | o.swap && qr.preencode(d, o.swap), | |
| 3241 | o.swapV2 && Mr.preencode(d, o.swapV2)) | |
| 3264 | n.entropy && e.buffer.preencode(d, n.entropy), | |
| 3265 | n.swap && qr.preencode(d, n.swap), | |
| 3266 | n.swapV2 && Mr.preencode(d, n.swapV2), | |
| 3267 | o >= 7 && n.proofShortenedAt && e.uint.preencode(d, n.proofShortenedAt)) | |
| 3242 | 3268 | }, |
| 3243 | encode(d, o) { | |
| 3244 | const n = (o.entropy ? 1 : 0) | (o.swap ? 2 : 0) | (o.swapV2 ? 4 : 0) | |
| 3245 | ;(e.fixed32.encode(d, o.publicKey), | |
| 3246 | e.fixed32.encode(d, o.privateProfileKey), | |
| 3247 | t.encode(d, o.deviceKeyPair), | |
| 3248 | e.buffer.encode(d, o.deviceProof), | |
| 3249 | Ar.encode(d, o.status), | |
| 3250 | e.uint.encode(d, n), | |
| 3251 | o.entropy && e.buffer.encode(d, o.entropy), | |
| 3252 | o.swap && qr.encode(d, o.swap), | |
| 3253 | o.swapV2 && Mr.encode(d, o.swapV2)) | |
| 3269 | encode(d, n) { | |
| 3270 | const c = | |
| 3271 | (n.entropy ? 1 : 0) | | |
| 3272 | (n.swap ? 2 : 0) | | |
| 3273 | (n.swapV2 ? 4 : 0) | | |
| 3274 | (o >= 7 && n.proofShortenedAt ? 8 : 0) | |
| 3275 | ;(e.fixed32.encode(d, n.publicKey), | |
| 3276 | e.fixed32.encode(d, n.privateProfileKey), | |
| 3277 | t.encode(d, n.deviceKeyPair), | |
| 3278 | e.buffer.encode(d, n.deviceProof), | |
| 3279 | Ar.encode(d, n.status), | |
| 3280 | e.uint.encode(d, c), | |
| 3281 | n.entropy && e.buffer.encode(d, n.entropy), | |
| 3282 | n.swap && qr.encode(d, n.swap), | |
| 3283 | n.swapV2 && Mr.encode(d, n.swapV2), | |
| 3284 | o >= 7 && n.proofShortenedAt && e.uint.encode(d, n.proofShortenedAt)) | |
| 3254 | 3285 | }, |
| 3255 | 3286 | decode(d) { |
| 3256 | const o = e.fixed32.decode(d), | |
| 3257 | n = e.fixed32.decode(d), | |
| 3258 | c = t.decode(d), | |
| 3259 | r = e.buffer.decode(d), | |
| 3260 | i = Ar.decode(d), | |
| 3261 | a = e.uint.decode(d) | |
| 3287 | const n = e.fixed32.decode(d), | |
| 3288 | c = e.fixed32.decode(d), | |
| 3289 | r = t.decode(d), | |
| 3290 | i = e.buffer.decode(d), | |
| 3291 | a = Ar.decode(d), | |
| 3292 | s = e.uint.decode(d) | |
| 3262 | 3293 | return { |
| 3263 | publicKey: o, | |
| 3264 | privateProfileKey: n, | |
| 3265 | deviceKeyPair: c, | |
| 3266 | deviceProof: r, | |
| 3267 | status: i, | |
| 3268 | entropy: 1 & a ? e.buffer.decode(d) : null, | |
| 3269 | swap: 2 & a ? qr.decode(d) : null, | |
| 3270 | swapV2: 4 & a ? Mr.decode(d) : null, | |
| 3294 | publicKey: n, | |
| 3295 | privateProfileKey: c, | |
| 3296 | deviceKeyPair: r, | |
| 3297 | deviceProof: i, | |
| 3298 | status: a, | |
| 3299 | entropy: 1 & s ? e.buffer.decode(d) : null, | |
| 3300 | swap: 2 & s ? qr.decode(d) : null, | |
| 3301 | swapV2: 4 & s ? Mr.decode(d) : null, | |
| 3302 | proofShortenedAt: o >= 7 && 8 & s ? e.uint.decode(d) : 0, | |
| 3271 | 3303 | } |
| 3272 | 3304 | }, |
| 3273 | 3305 | }, |
| … | … | @@ -3284,7 +3316,7 @@ const n = { |
| 3284 | 3316 | TestSlowTask: 10, |
| 3285 | 3317 | TestErrorTask: 11, |
| 3286 | 3318 | }, |
| 3287 | Ir = { | |
| 3319 | Sr = { | |
| 3288 | 3320 | preencode(e, d) { |
| 3289 | 3321 | e.end++ |
| 3290 | 3322 | }, |
| … | … | @@ -3294,7 +3326,7 @@ const n = { |
| 3294 | 3326 | }, |
| 3295 | 3327 | decode: (d) => e.uint.decode(d), |
| 3296 | 3328 | }, |
| 3297 | Sr = { | |
| 3329 | Ir = { | |
| 3298 | 3330 | preencode(d, o) { |
| 3299 | 3331 | ;(e.fixed32.preencode(d, o.roomKey), |
| 3300 | 3332 | e.buffer.preencode(d, o.encryptionKey), |
| … | … | @@ -3389,8 +3421,8 @@ const n = { |
| 3389 | 3421 | }, |
| 3390 | 3422 | decode: (e) => ({ keys: Nr.decode(e) }), |
| 3391 | 3423 | }, |
| 3392 | Vr = e.frame(Kn), | |
| 3393 | Ur = { | |
| 3424 | Ur = e.frame(Kn), | |
| 3425 | Vr = { | |
| 3394 | 3426 | preencode(d, o) { |
| 3395 | 3427 | ;(e.fixed32.preencode(d, o.roomKey), |
| 3396 | 3428 | e.buffer.preencode(d, o.encryptionKey), |
| … | … | @@ -3399,7 +3431,7 @@ const n = { |
| 3399 | 3431 | o.initiator && n.preencode(d, o.initiator), |
| 3400 | 3432 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 3401 | 3433 | o.keyPair && t.preencode(d, o.keyPair), |
| 3402 | o.genesis && Vr.preencode(d, o.genesis)) | |
| 3434 | o.genesis && Ur.preencode(d, o.genesis)) | |
| 3403 | 3435 | }, |
| 3404 | 3436 | encode(d, o) { |
| 3405 | 3437 | const c = |
| … | … | @@ -3416,7 +3448,7 @@ const n = { |
| 3416 | 3448 | o.initiator && n.encode(d, o.initiator), |
| 3417 | 3449 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 3418 | 3450 | o.keyPair && t.encode(d, o.keyPair), |
| 3419 | o.genesis && Vr.encode(d, o.genesis)) | |
| 3451 | o.genesis && Ur.encode(d, o.genesis)) | |
| 3420 | 3452 | }, |
| 3421 | 3453 | decode(d) { |
| 3422 | 3454 | const o = e.fixed32.decode(d), |
| … | … | @@ -3429,7 +3461,7 @@ const n = { |
| 3429 | 3461 | initiator: 2 & r ? n.decode(d) : null, |
| 3430 | 3462 | mailbox: 4 & r ? e.fixed32.decode(d) : null, |
| 3431 | 3463 | keyPair: 8 & r ? t.decode(d) : null, |
| 3432 | genesis: 16 & r ? Vr.decode(d) : null, | |
| 3464 | genesis: 16 & r ? Ur.decode(d) : null, | |
| 3433 | 3465 | isPrivateProfile: !!(32 & r), |
| 3434 | 3466 | } |
| 3435 | 3467 | }, |
| … | … | @@ -3515,7 +3547,7 @@ const n = { |
| 3515 | 3547 | decode: (d) => ({ key: e.fixed32.decode(d), isPrivateProfile: !!(1 & e.uint.decode(d)) }), |
| 3516 | 3548 | }, |
| 3517 | 3549 | Xr = e.frame(Wr), |
| 3518 | Yr = e.frame(Ur), | |
| 3550 | Yr = e.frame(Vr), | |
| 3519 | 3551 | Zr = e.frame(Jr), |
| 3520 | 3552 | $r = e.frame(zr), |
| 3521 | 3553 | _r = e.frame(Lr), |
| … | … | @@ -3698,7 +3730,7 @@ const n = { |
| 3698 | 3730 | n.lastMember && ht.preencode(d, n.lastMember), |
| 3699 | 3731 | n.version && e.uint.preencode(d, n.version), |
| 3700 | 3732 | o >= 3 && n.preferences && Kt.preencode(d, n.preferences), |
| 3701 | o >= 4 && n.activeCall && eu.preencode(d, n.activeCall)) | |
| 3733 | o >= 4 && n.activeCall && cu.preencode(d, n.activeCall)) | |
| 3702 | 3734 | }, |
| 3703 | 3735 | encode(d, n) { |
| 3704 | 3736 | const c = |
| … | … | @@ -3735,7 +3767,7 @@ const n = { |
| 3735 | 3767 | n.lastMember && ht.encode(d, n.lastMember), |
| 3736 | 3768 | n.version && e.uint.encode(d, n.version), |
| 3737 | 3769 | o >= 3 && n.preferences && Kt.encode(d, n.preferences), |
| 3738 | o >= 4 && n.activeCall && eu.encode(d, n.activeCall)) | |
| 3770 | o >= 4 && n.activeCall && cu.encode(d, n.activeCall)) | |
| 3739 | 3771 | }, |
| 3740 | 3772 | decode(d) { |
| 3741 | 3773 | const n = e.fixed32.decode(d), |
| … | … | @@ -3772,7 +3804,7 @@ const n = { |
| 3772 | 3804 | lastMember: 128 & m ? ht.decode(d) : null, |
| 3773 | 3805 | version: 256 & m ? e.uint.decode(d) : 0, |
| 3774 | 3806 | preferences: o >= 3 && 512 & m ? Kt.decode(d) : null, |
| 3775 | activeCall: o >= 4 && 1024 & m ? eu.decode(d) : null, | |
| 3807 | activeCall: o >= 4 && 1024 & m ? cu.decode(d) : null, | |
| 3776 | 3808 | } |
| 3777 | 3809 | }, |
| 3778 | 3810 | }, |
| … | … | @@ -3852,7 +3884,7 @@ const n = { |
| 3852 | 3884 | decode: (d) => ({ key: e.fixed32.decode(d), profile: Mt.decode(d) }), |
| 3853 | 3885 | }, |
| 3854 | 3886 | Dt = mt, |
| 3855 | It = { | |
| 3887 | St = { | |
| 3856 | 3888 | preencode(d, o) { |
| 3857 | 3889 | ;(e.fixed32.preencode(d, o.roomKey), Dt.preencode(d, o.device)) |
| 3858 | 3890 | }, |
| … | … | @@ -3861,10 +3893,10 @@ const n = { |
| 3861 | 3893 | }, |
| 3862 | 3894 | decode: (d) => ({ roomKey: e.fixed32.decode(d), device: Dt.decode(d) }), |
| 3863 | 3895 | }, |
| 3864 | St = h, | |
| 3896 | It = h, | |
| 3865 | 3897 | Ft = { |
| 3866 | 3898 | preencode(d, n) { |
| 3867 | ;(St.preencode(d, n.file), | |
| 3899 | ;(It.preencode(d, n.file), | |
| 3868 | 3900 | e.fixed32.preencode(d, n.roomKey), |
| 3869 | 3901 | d.end++, |
| 3870 | 3902 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), |
| … | … | @@ -3878,7 +3910,7 @@ const n = { |
| 3878 | 3910 | (n.own ? 4 : 0) | |
| 3879 | 3911 | (o >= 4 && n.lastAccessed ? 8 : 0) | |
| 3880 | 3912 | (o >= 4 && n.version ? 16 : 0) |
| 3881 | ;(St.encode(d, n.file), | |
| 3913 | ;(It.encode(d, n.file), | |
| 3882 | 3914 | e.fixed32.encode(d, n.roomKey), |
| 3883 | 3915 | e.uint.encode(d, c), |
| 3884 | 3916 | n.encryptionKey && e.buffer.encode(d, n.encryptionKey), |
| … | … | @@ -3886,7 +3918,7 @@ const n = { |
| 3886 | 3918 | o >= 4 && n.version && e.uint.encode(d, n.version)) |
| 3887 | 3919 | }, |
| 3888 | 3920 | decode(d) { |
| 3889 | const n = St.decode(d), | |
| 3921 | const n = It.decode(d), | |
| 3890 | 3922 | c = e.fixed32.decode(d), |
| 3891 | 3923 | r = e.uint.decode(d) |
| 3892 | 3924 | return { |
| … | … | @@ -3976,7 +4008,7 @@ const n = { |
| 3976 | 4008 | }, |
| 3977 | 4009 | decode: (d) => ({ roomKey: e.fixed32.decode(d), count: e.uint.decode(d) }), |
| 3978 | 4010 | }, |
| 3979 | Vt = { | |
| 4011 | Ut = { | |
| 3980 | 4012 | preencode(d, o) { |
| 3981 | 4013 | ;(d.end++, |
| 3982 | 4014 | o.roomKey && e.fixed32.preencode(d, o.roomKey), |
| … | … | @@ -3996,7 +4028,7 @@ const n = { |
| 3996 | 4028 | } |
| 3997 | 4029 | }, |
| 3998 | 4030 | }, |
| 3999 | Ut = e.frame(Vt), | |
| 4031 | Vt = e.frame(Ut), | |
| 4000 | 4032 | Jt = { |
| 4001 | 4033 | preencode(d, o) { |
| 4002 | 4034 | ;(e.string.preencode(d, o.code), |
| … | … | @@ -4004,7 +4036,7 @@ const n = { |
| 4004 | 4036 | e.string.preencode(d, o.stack), |
| 4005 | 4037 | e.uint.preencode(d, o.timestamp), |
| 4006 | 4038 | d.end++, |
| 4007 | o.details && Ut.preencode(d, o.details)) | |
| 4039 | o.details && Vt.preencode(d, o.details)) | |
| 4008 | 4040 | }, |
| 4009 | 4041 | encode(d, o) { |
| 4010 | 4042 | const n = o.details ? 1 : 0 |
| … | … | @@ -4013,14 +4045,14 @@ const n = { |
| 4013 | 4045 | e.string.encode(d, o.stack), |
| 4014 | 4046 | e.uint.encode(d, o.timestamp), |
| 4015 | 4047 | e.uint.encode(d, n), |
| 4016 | o.details && Ut.encode(d, o.details)) | |
| 4048 | o.details && Vt.encode(d, o.details)) | |
| 4017 | 4049 | }, |
| 4018 | 4050 | decode: (d) => ({ |
| 4019 | 4051 | code: e.string.decode(d), |
| 4020 | 4052 | message: e.string.decode(d), |
| 4021 | 4053 | stack: e.string.decode(d), |
| 4022 | 4054 | timestamp: e.uint.decode(d), |
| 4023 | details: 1 & e.uint.decode(d) ? Ut.decode(d) : null, | |
| 4055 | details: 1 & e.uint.decode(d) ? Vt.decode(d) : null, | |
| 4024 | 4056 | }), |
| 4025 | 4057 | }, |
| 4026 | 4058 | zt = { RESUME: 1, WAKEUP: 2, PRESUSPEND: 3, SUSPEND: 4 }, |
| … | … | @@ -4254,26 +4286,26 @@ const n = { |
| 4254 | 4286 | }, |
| 4255 | 4287 | decode: (e) => ({ header: Ci.decode(e) }), |
| 4256 | 4288 | }, |
| 4257 | Ii = Zt, | |
| 4258 | Si = Oo, | |
| 4289 | Si = Zt, | |
| 4290 | Ii = Oo, | |
| 4259 | 4291 | Fi = { |
| 4260 | 4292 | preencode(d, o) { |
| 4261 | ;(Ii.preencode(d, o.header), | |
| 4293 | ;(Si.preencode(d, o.header), | |
| 4262 | 4294 | e.fixed32.preencode(d, o.roomKey), |
| 4263 | 4295 | c.preencode(d, o.id), |
| 4264 | Si.preencode(d, o.message)) | |
| 4296 | Ii.preencode(d, o.message)) | |
| 4265 | 4297 | }, |
| 4266 | 4298 | encode(d, o) { |
| 4267 | ;(Ii.encode(d, o.header), | |
| 4299 | ;(Si.encode(d, o.header), | |
| 4268 | 4300 | e.fixed32.encode(d, o.roomKey), |
| 4269 | 4301 | c.encode(d, o.id), |
| 4270 | Si.encode(d, o.message)) | |
| 4302 | Ii.encode(d, o.message)) | |
| 4271 | 4303 | }, |
| 4272 | 4304 | decode: (d) => ({ |
| 4273 | header: Ii.decode(d), | |
| 4305 | header: Si.decode(d), | |
| 4274 | 4306 | roomKey: e.fixed32.decode(d), |
| 4275 | 4307 | id: c.decode(d), |
| 4276 | message: Si.decode(d), | |
| 4308 | message: Ii.decode(d), | |
| 4277 | 4309 | }), |
| 4278 | 4310 | }, |
| 4279 | 4311 | Li = _t, |
| … | … | @@ -4306,22 +4338,22 @@ const n = { |
| 4306 | 4338 | }, |
| 4307 | 4339 | decode: (e) => ({ header: Ni.decode(e) }), |
| 4308 | 4340 | }, |
| 4309 | Vi = Zt, | |
| 4310 | Ui = { | |
| 4341 | Ui = Zt, | |
| 4342 | Vi = { | |
| 4311 | 4343 | preencode(d, o) { |
| 4312 | ;(Vi.preencode(d, o.header), | |
| 4344 | ;(Ui.preencode(d, o.header), | |
| 4313 | 4345 | e.fixed32.preencode(d, o.roomKey), |
| 4314 | 4346 | c.preencode(d, o.id), |
| 4315 | 4347 | e.string.preencode(d, o.reaction)) |
| 4316 | 4348 | }, |
| 4317 | 4349 | encode(d, o) { |
| 4318 | ;(Vi.encode(d, o.header), | |
| 4350 | ;(Ui.encode(d, o.header), | |
| 4319 | 4351 | e.fixed32.encode(d, o.roomKey), |
| 4320 | 4352 | c.encode(d, o.id), |
| 4321 | 4353 | e.string.encode(d, o.reaction)) |
| 4322 | 4354 | }, |
| 4323 | 4355 | decode: (d) => ({ |
| 4324 | header: Vi.decode(d), | |
| 4356 | header: Ui.decode(d), | |
| 4325 | 4357 | roomKey: e.fixed32.decode(d), |
| 4326 | 4358 | id: c.decode(d), |
| 4327 | 4359 | reaction: e.string.decode(d), |
| … | … | @@ -4601,12 +4633,12 @@ const n = { |
| 4601 | 4633 | Aa = se, |
| 4602 | 4634 | qa = { |
| 4603 | 4635 | preencode(d, o) { |
| 4604 | ;(e.fixed32.preencode(d, o.key), Aa.preencode(d, o.status), du.preencode(d, o.profile)) | |
| 4636 | ;(e.fixed32.preencode(d, o.key), Aa.preencode(d, o.status), ru.preencode(d, o.profile)) | |
| 4605 | 4637 | }, |
| 4606 | 4638 | encode(d, o) { |
| 4607 | ;(e.fixed32.encode(d, o.key), Aa.encode(d, o.status), du.encode(d, o.profile)) | |
| 4639 | ;(e.fixed32.encode(d, o.key), Aa.encode(d, o.status), ru.encode(d, o.profile)) | |
| 4608 | 4640 | }, |
| 4609 | decode: (d) => ({ key: e.fixed32.decode(d), status: Aa.decode(d), profile: du.decode(d) }), | |
| 4641 | decode: (d) => ({ key: e.fixed32.decode(d), status: Aa.decode(d), profile: ru.decode(d) }), | |
| 4610 | 4642 | }, |
| 4611 | 4643 | Ma = { |
| 4612 | 4644 | preencode(d, o) { |
| … | … | @@ -4619,7 +4651,7 @@ const n = { |
| 4619 | 4651 | }, |
| 4620 | 4652 | Ca = Ma, |
| 4621 | 4653 | Da = e.array(c), |
| 4622 | Ia = { | |
| 4654 | Sa = { | |
| 4623 | 4655 | preencode(d, o) { |
| 4624 | 4656 | ;(e.fixed32.preencode(d, o.roomKey), |
| 4625 | 4657 | e.uint.preencode(d, o.start), |
| … | … | @@ -4646,7 +4678,7 @@ const n = { |
| 4646 | 4678 | isBottom: !!(1 & e.uint.decode(d)), |
| 4647 | 4679 | }), |
| 4648 | 4680 | }, |
| 4649 | Sa = { | |
| 4681 | Ia = { | |
| 4650 | 4682 | preencode(d, o) { |
| 4651 | 4683 | ;(e.uint.preencode(d, o.sent), d.end++, o.edited && e.uint.preencode(d, o.edited)) |
| 4652 | 4684 | }, |
| … | … | @@ -4659,10 +4691,10 @@ const n = { |
| 4659 | 4691 | edited: 1 & e.uint.decode(d) ? e.uint.decode(d) : 0, |
| 4660 | 4692 | }), |
| 4661 | 4693 | }, |
| 4662 | Fa = e.frame(Sa), | |
| 4694 | Fa = e.frame(Ia), | |
| 4663 | 4695 | La = Do, |
| 4664 | ja = Io, | |
| 4665 | Ea = So, | |
| 4696 | ja = So, | |
| 4697 | Ea = Io, | |
| 4666 | 4698 | Ba = { |
| 4667 | 4699 | preencode(d, o) { |
| 4668 | 4700 | ;(c.preencode(d, o.id), |
| … | … | @@ -4701,7 +4733,7 @@ const n = { |
| 4701 | 4733 | }, |
| 4702 | 4734 | Na = e.frame(Ba), |
| 4703 | 4735 | Oa = vd, |
| 4704 | Va = { | |
| 4736 | Ua = { | |
| 4705 | 4737 | preencode(d, o) { |
| 4706 | 4738 | ;(Na.preencode(d, o.chat), e.fixed32.preencode(d, o.memberKey), Oa.preencode(d, o.role)) |
| 4707 | 4739 | }, |
| … | … | @@ -4710,15 +4742,15 @@ const n = { |
| 4710 | 4742 | }, |
| 4711 | 4743 | decode: (d) => ({ chat: Na.decode(d), memberKey: e.fixed32.decode(d), role: Oa.decode(d) }), |
| 4712 | 4744 | }, |
| 4713 | Ua = Na, | |
| 4745 | Va = Na, | |
| 4714 | 4746 | Ja = { |
| 4715 | 4747 | preencode(e, d) { |
| 4716 | Ua.preencode(e, d.chat) | |
| 4748 | Va.preencode(e, d.chat) | |
| 4717 | 4749 | }, |
| 4718 | 4750 | encode(e, d) { |
| 4719 | Ua.encode(e, d.chat) | |
| 4751 | Va.encode(e, d.chat) | |
| 4720 | 4752 | }, |
| 4721 | decode: (e) => ({ chat: Ua.decode(e) }), | |
| 4753 | decode: (e) => ({ chat: Va.decode(e) }), | |
| 4722 | 4754 | }, |
| 4723 | 4755 | za = Da, |
| 4724 | 4756 | Wa = { |
| … | … | @@ -4943,15 +4975,15 @@ const n = { |
| 4943 | 4975 | }, |
| 4944 | 4976 | decode: (d) => ({ header: Ms.decode(d), roomKey: e.fixed32.decode(d), request: Cs.decode(d) }), |
| 4945 | 4977 | }, |
| 4946 | Is = _t, | |
| 4947 | Ss = { | |
| 4978 | Ss = _t, | |
| 4979 | Is = { | |
| 4948 | 4980 | preencode(e, d) { |
| 4949 | Is.preencode(e, d.header) | |
| 4981 | Ss.preencode(e, d.header) | |
| 4950 | 4982 | }, |
| 4951 | 4983 | encode(e, d) { |
| 4952 | Is.encode(e, d.header) | |
| 4984 | Ss.encode(e, d.header) | |
| 4953 | 4985 | }, |
| 4954 | decode: (e) => ({ header: Is.decode(e) }), | |
| 4986 | decode: (e) => ({ header: Ss.decode(e) }), | |
| 4955 | 4987 | }, |
| 4956 | 4988 | Fs = Zt, |
| 4957 | 4989 | Ls = { |
| … | … | @@ -4995,8 +5027,8 @@ const n = { |
| 4995 | 5027 | }), |
| 4996 | 5028 | }, |
| 4997 | 5029 | Os = j, |
| 4998 | Vs = j, | |
| 4999 | Us = { | |
| 5030 | Us = j, | |
| 5031 | Vs = { | |
| 5000 | 5032 | preencode(e, d) { |
| 5001 | 5033 | e.end++ |
| 5002 | 5034 | }, |
| … | … | @@ -5009,7 +5041,7 @@ const n = { |
| 5009 | 5041 | return { isConfirmed: !!(1 & o), isLoggedOut: !!(2 & o) } |
| 5010 | 5042 | }, |
| 5011 | 5043 | }, |
| 5012 | Js = e.frame(Us), | |
| 5044 | Js = e.frame(Vs), | |
| 5013 | 5045 | zs = _, |
| 5014 | 5046 | Ws = { |
| 5015 | 5047 | preencode(d, o) { |
| … | … | @@ -5426,7 +5458,7 @@ const n = { |
| 5426 | 5458 | return { callKey: n, selfDeviceKey: o >= 4 && 1 & c ? e.fixed32.decode(d) : null } |
| 5427 | 5459 | }, |
| 5428 | 5460 | }, |
| 5429 | Ip = { | |
| 5461 | Sp = { | |
| 5430 | 5462 | preencode(d, o) { |
| 5431 | 5463 | e.uint.preencode(d, o.lastCleared) |
| 5432 | 5464 | }, |
| … | … | @@ -5435,7 +5467,7 @@ const n = { |
| 5435 | 5467 | }, |
| 5436 | 5468 | decode: (d) => ({ lastCleared: e.uint.decode(d) }), |
| 5437 | 5469 | }, |
| 5438 | Sp = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, | |
| 5470 | Ip = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, | |
| 5439 | 5471 | Fp = { |
| 5440 | 5472 | preencode(e, d) { |
| 5441 | 5473 | e.end++ |
| … | … | @@ -5506,35 +5538,90 @@ const n = { |
| 5506 | 5538 | return { buildType: n, latestOfflineAbi: o >= 6 && 1 & c ? e.uint.decode(d) : 0 } |
| 5507 | 5539 | }, |
| 5508 | 5540 | }, |
| 5509 | Op = e.frame(P), | |
| 5510 | Vp = Op, | |
| 5511 | Up = e.frame(fe), | |
| 5512 | Jp = Op, | |
| 5513 | zp = Up, | |
| 5514 | Wp = Up, | |
| 5515 | Hp = e.frame(Pd), | |
| 5516 | Gp = e.frame(lp), | |
| 5517 | Qp = Gp, | |
| 5518 | Xp = Op, | |
| 5519 | Yp = Op, | |
| 5520 | Zp = e.frame(Mc), | |
| 5541 | Op = oe, | |
| 5542 | Up = { | |
| 5543 | preencode(d, o) { | |
| 5544 | ;(Op.preencode(d, o.header), | |
| 5545 | e.fixed32.preencode(d, o.deviceKey), | |
| 5546 | e.buffer.preencode(d, o.deviceProof), | |
| 5547 | e.buffer.preencode(d, o.writerProof)) | |
| 5548 | }, | |
| 5549 | encode(d, o) { | |
| 5550 | ;(Op.encode(d, o.header), | |
| 5551 | e.fixed32.encode(d, o.deviceKey), | |
| 5552 | e.buffer.encode(d, o.deviceProof), | |
| 5553 | e.buffer.encode(d, o.writerProof)) | |
| 5554 | }, | |
| 5555 | decode: (d) => ({ | |
| 5556 | header: Op.decode(d), | |
| 5557 | deviceKey: e.fixed32.decode(d), | |
| 5558 | deviceProof: e.buffer.decode(d), | |
| 5559 | writerProof: e.buffer.decode(d), | |
| 5560 | }), | |
| 5561 | }, | |
| 5562 | Vp = { | |
| 5563 | preencode(d, n) { | |
| 5564 | ;(d.end++, | |
| 5565 | o >= 7 && | |
| 5566 | n.otaResyncPrivateProfileBump && | |
| 5567 | e.uint.preencode(d, n.otaResyncPrivateProfileBump)) | |
| 5568 | }, | |
| 5569 | encode(d, n) { | |
| 5570 | const c = o >= 7 && n.otaResyncPrivateProfileBump ? 1 : 0 | |
| 5571 | ;(e.uint.encode(d, c), | |
| 5572 | o >= 7 && n.otaResyncPrivateProfileBump && e.uint.encode(d, n.otaResyncPrivateProfileBump)) | |
| 5573 | }, | |
| 5574 | decode(d) { | |
| 5575 | const n = e.uint.decode(d) | |
| 5576 | return { otaResyncPrivateProfileBump: o >= 7 && 1 & n ? e.uint.decode(d) : 0 } | |
| 5577 | }, | |
| 5578 | }, | |
| 5579 | Jp = { | |
| 5580 | preencode(d, o) { | |
| 5581 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 5582 | e.buffer.preencode(d, o.proof), | |
| 5583 | e.uint.preencode(d, o.createdAt)) | |
| 5584 | }, | |
| 5585 | encode(d, o) { | |
| 5586 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 5587 | e.buffer.encode(d, o.proof), | |
| 5588 | e.uint.encode(d, o.createdAt)) | |
| 5589 | }, | |
| 5590 | decode: (d) => ({ | |
| 5591 | deviceKey: e.fixed32.decode(d), | |
| 5592 | proof: e.buffer.decode(d), | |
| 5593 | createdAt: e.uint.decode(d), | |
| 5594 | }), | |
| 5595 | }, | |
| 5596 | zp = e.frame(P), | |
| 5597 | Wp = zp, | |
| 5598 | Hp = e.frame(fe), | |
| 5599 | Gp = zp, | |
| 5600 | Qp = Hp, | |
| 5601 | Xp = Hp, | |
| 5602 | Yp = e.frame(Pd), | |
| 5603 | Zp = e.frame(lp), | |
| 5521 | 5604 | $p = Zp, |
| 5522 | _p = Zp, | |
| 5523 | eu = e.frame(Dp), | |
| 5524 | du = Up | |
| 5525 | function ou(e) { | |
| 5605 | _p = zp, | |
| 5606 | eu = zp, | |
| 5607 | du = e.frame(Mc), | |
| 5608 | ou = du, | |
| 5609 | nu = du, | |
| 5610 | cu = e.frame(Dp), | |
| 5611 | ru = Hp | |
| 5612 | function tu(e) { | |
| 5526 | 5613 | o = e |
| 5527 | 5614 | } |
| 5528 | function nu(d, n, c = 6) { | |
| 5529 | return ((o = c), e.encode(tu(d), n)) | |
| 5615 | function iu(d, n, c = 7) { | |
| 5616 | return ((o = c), e.encode(pu(d), n)) | |
| 5530 | 5617 | } |
| 5531 | function cu(d, n, c = 6) { | |
| 5532 | return ((o = c), e.decode(tu(d), n)) | |
| 5618 | function au(d, n, c = 7) { | |
| 5619 | return ((o = c), e.decode(pu(d), n)) | |
| 5533 | 5620 | } |
| 5534 | function ru(e) { | |
| 5621 | function su(e) { | |
| 5535 | 5622 | switch (e) { |
| 5536 | 5623 | case "@keet/room-type": |
| 5537 | return U | |
| 5624 | return V | |
| 5538 | 5625 | case "@keet/room-supported-language": |
| 5539 | 5626 | return Y |
| 5540 | 5627 | case "@keet/display-type": |
| … | … | @@ -5554,12 +5641,12 @@ function ru(e) { |
| 5554 | 5641 | case "@keet/member-label-type": |
| 5555 | 5642 | return op |
| 5556 | 5643 | case "@keet/build-type": |
| 5557 | return Sp | |
| 5644 | return Ip | |
| 5558 | 5645 | default: |
| 5559 | 5646 | throw new Error("Enum not found " + e) |
| 5560 | 5647 | } |
| 5561 | 5648 | } |
| 5562 | function tu(e) { | |
| 5649 | function pu(e) { | |
| 5563 | 5650 | switch (e) { |
| 5564 | 5651 | case "@keet/head": |
| 5565 | 5652 | return n |
| … | … | @@ -5600,9 +5687,9 @@ function tu(e) { |
| 5600 | 5687 | case "@keet/member-moderation-status": |
| 5601 | 5688 | return D |
| 5602 | 5689 | case "@keet/abi": |
| 5603 | return I | |
| 5604 | case "@keet/device-stats": | |
| 5605 | 5690 | return S |
| 5691 | case "@keet/device-stats": | |
| 5692 | return I | |
| 5606 | 5693 | case "@keet/member-stats": |
| 5607 | 5694 | return F |
| 5608 | 5695 | case "@keet/chat-stats": |
| … | … | @@ -5610,7 +5697,7 @@ function tu(e) { |
| 5610 | 5697 | case "@keet/file-stats": |
| 5611 | 5698 | return j |
| 5612 | 5699 | case "@keet/stats": |
| 5613 | return V | |
| 5700 | return U | |
| 5614 | 5701 | case "@keet/room-type": |
| 5615 | 5702 | return J |
| 5616 | 5703 | case "@keet/system-settings": |
| … | … | @@ -5668,7 +5755,7 @@ function tu(e) { |
| 5668 | 5755 | case "@keet/invitation-metadata": |
| 5669 | 5756 | return Be |
| 5670 | 5757 | case "@keet/invitation": |
| 5671 | return Ve | |
| 5758 | return Ue | |
| 5672 | 5759 | case "@keet/add-invitation-operation": |
| 5673 | 5760 | return ze |
| 5674 | 5761 | case "@keet/remove-invitation-operation": |
| … | … | @@ -5710,7 +5797,7 @@ function tu(e) { |
| 5710 | 5797 | case "@keet/change-member-status-operation": |
| 5711 | 5798 | return Cd |
| 5712 | 5799 | case "@keet/change-member-role-operation": |
| 5713 | return Id | |
| 5800 | return Sd | |
| 5714 | 5801 | case "@keet/remove-member-operation": |
| 5715 | 5802 | return Fd |
| 5716 | 5803 | case "@keet/member-activity": |
| … | … | @@ -5758,7 +5845,7 @@ function tu(e) { |
| 5758 | 5845 | case "@keet/full-chat-message-record": |
| 5759 | 5846 | return Bo |
| 5760 | 5847 | case "@keet/add-chat-message-operation": |
| 5761 | return Vo | |
| 5848 | return Uo | |
| 5762 | 5849 | case "@keet/remove-chat-message-operation": |
| 5763 | 5850 | return Jo |
| 5764 | 5851 | case "@keet/update-chat-message-operation": |
| … | … | @@ -5798,7 +5885,7 @@ function tu(e) { |
| 5798 | 5885 | case "@keet/update-system-settings-operation": |
| 5799 | 5886 | return Dn |
| 5800 | 5887 | case "@keet/test-increment-operation": |
| 5801 | return Sn | |
| 5888 | return In | |
| 5802 | 5889 | case "@keet/test-collection-record-1": |
| 5803 | 5890 | return Fn |
| 5804 | 5891 | case "@keet/label-type": |
| … | … | @@ -5808,9 +5895,9 @@ function tu(e) { |
| 5808 | 5895 | case "@keet/add-chat-label-operation": |
| 5809 | 5896 | return Nn |
| 5810 | 5897 | case "@keet/remove-chat-label-operation": |
| 5811 | return Vn | |
| 5812 | case "@keet/chat-label-summary": | |
| 5813 | 5898 | return Un |
| 5899 | case "@keet/chat-label-summary": | |
| 5900 | return Vn | |
| 5814 | 5901 | case "@keet/chat-label-digest": |
| 5815 | 5902 | return zn |
| 5816 | 5903 | case "@keet/update-read-length-operation": |
| … | … | @@ -5862,7 +5949,7 @@ function tu(e) { |
| 5862 | 5949 | case "@keet-private-id/contact-record": |
| 5863 | 5950 | return Cc |
| 5864 | 5951 | case "@keet-private-id/add-contact-operation": |
| 5865 | return Sc | |
| 5952 | return Ic | |
| 5866 | 5953 | case "@keet-private-id/update-contact-status-operation": |
| 5867 | 5954 | return Lc |
| 5868 | 5955 | case "@keet-private-id/remove-contact-operation": |
| … | … | @@ -5918,9 +6005,9 @@ function tu(e) { |
| 5918 | 6005 | case "@local/identity-record": |
| 5919 | 6006 | return Cr |
| 5920 | 6007 | case "@local/tasks": |
| 5921 | return Ir | |
| 5922 | case "@local/room-keys": | |
| 5923 | 6008 | return Sr |
| 6009 | case "@local/room-keys": | |
| 6010 | return Ir | |
| 5924 | 6011 | case "@local/join-room-invitation-task": |
| 5925 | 6012 | return Lr |
| 5926 | 6013 | case "@local/join-room-response-task": |
| … | … | @@ -5932,7 +6019,7 @@ function tu(e) { |
| 5932 | 6019 | case "@local/join-room-keys-task": |
| 5933 | 6020 | return Or |
| 5934 | 6021 | case "@local/create-room-task": |
| 5935 | return Ur | |
| 6022 | return Vr | |
| 5936 | 6023 | case "@local/leave-room-task": |
| 5937 | 6024 | return Jr |
| 5938 | 6025 | case "@local/clear-room-task": |
| … | … | @@ -5964,7 +6051,7 @@ function tu(e) { |
| 5964 | 6051 | case "@local/member": |
| 5965 | 6052 | return Ct |
| 5966 | 6053 | case "@local/device": |
| 5967 | return It | |
| 6054 | return St | |
| 5968 | 6055 | case "@local/file": |
| 5969 | 6056 | return Ft |
| 5970 | 6057 | case "@local/debug-flag": |
| … | … | @@ -5976,7 +6063,7 @@ function tu(e) { |
| 5976 | 6063 | case "@local/unread": |
| 5977 | 6064 | return Ot |
| 5978 | 6065 | case "@local/error-record-details": |
| 5979 | return Vt | |
| 6066 | return Ut | |
| 5980 | 6067 | case "@local/error-record": |
| 5981 | 6068 | return Jt |
| 5982 | 6069 | case "@local/keet-state": |
| … | … | @@ -6030,7 +6117,7 @@ function tu(e) { |
| 6030 | 6117 | case "@api/core/remove-chat-message-response": |
| 6031 | 6118 | return Oi |
| 6032 | 6119 | case "@api/core/add-chat-reaction-request": |
| 6033 | return Ui | |
| 6120 | return Vi | |
| 6034 | 6121 | case "@api/core/add-chat-reaction-response": |
| 6035 | 6122 | return zi |
| 6036 | 6123 | case "@api/core/remove-chat-reaction-request": |
| … | … | @@ -6082,13 +6169,13 @@ function tu(e) { |
| 6082 | 6169 | case "@api/core/member-list-remove": |
| 6083 | 6170 | return Ca |
| 6084 | 6171 | case "@api/core/chat-reset": |
| 6085 | return Ia | |
| 6086 | case "@api/core/message-timestamps": | |
| 6087 | 6172 | return Sa |
| 6173 | case "@api/core/message-timestamps": | |
| 6174 | return Ia | |
| 6088 | 6175 | case "@api/core/message": |
| 6089 | 6176 | return Ba |
| 6090 | 6177 | case "@api/core/message-info": |
| 6091 | return Va | |
| 6178 | return Ua | |
| 6092 | 6179 | case "@api/core/message-info-chat": |
| 6093 | 6180 | return Ja |
| 6094 | 6181 | case "@api/core/message-info-member": |
| … | … | @@ -6132,7 +6219,7 @@ function tu(e) { |
| 6132 | 6219 | case "@api/core/reject-join-request-request": |
| 6133 | 6220 | return Ds |
| 6134 | 6221 | case "@api/core/reject-join-request-response": |
| 6135 | return Ss | |
| 6222 | return Is | |
| 6136 | 6223 | case "@api/core/stop-pairing-request": |
| 6137 | 6224 | return Ls |
| 6138 | 6225 | case "@api/core/stop-pairing-response": |
| … | … | @@ -6142,9 +6229,9 @@ function tu(e) { |
| 6142 | 6229 | case "@api/core/want-identity": |
| 6143 | 6230 | return Os |
| 6144 | 6231 | case "@api/core/unwant-identity": |
| 6145 | return Vs | |
| 6146 | case "@api/core/identity-status": | |
| 6147 | 6232 | return Us |
| 6233 | case "@api/core/identity-status": | |
| 6234 | return Vs | |
| 6148 | 6235 | case "@api/core/identity": |
| 6149 | 6236 | return Ws |
| 6150 | 6237 | case "@api/core/identity-member": |
| … | … | @@ -6196,7 +6283,7 @@ function tu(e) { |
| 6196 | 6283 | case "@local/active-call": |
| 6197 | 6284 | return Dp |
| 6198 | 6285 | case "@local/file-gc-info": |
| 6199 | return Ip | |
| 6286 | return Sp | |
| 6200 | 6287 | case "@keet/build-type": |
| 6201 | 6288 | return Fp |
| 6202 | 6289 | case "@keet/test-crash-operation": |
| … | … | @@ -6205,12 +6292,18 @@ function tu(e) { |
| 6205 | 6292 | return Bp |
| 6206 | 6293 | case "@local/environment-record": |
| 6207 | 6294 | return Np |
| 6295 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 6296 | return Up | |
| 6297 | case "@local/ota-actions": | |
| 6298 | return Vp | |
| 6299 | case "@local/device-attestation": | |
| 6300 | return Jp | |
| 6208 | 6301 | default: |
| 6209 | 6302 | throw new Error("Encoder not found " + e) |
| 6210 | 6303 | } |
| 6211 | 6304 | } |
| 6212 | function iu(e, d = 6) { | |
| 6213 | const n = tu(e) | |
| 6305 | function uu(e, d = 7) { | |
| 6306 | const n = pu(e) | |
| 6214 | 6307 | return { |
| 6215 | 6308 | preencode(e, c) { |
| 6216 | 6309 | ;((o = d), n.preencode(e, c)) |
| … | … | @@ -6221,14 +6314,14 @@ function iu(e, d = 6) { |
| 6221 | 6314 | decode: (e) => ((o = d), n.decode(e)), |
| 6222 | 6315 | } |
| 6223 | 6316 | } |
| 6224 | const au = iu | |
| 6317 | const lu = uu | |
| 6225 | 6318 | module.exports = { |
| 6226 | resolveStruct: au, | |
| 6227 | getStruct: iu, | |
| 6228 | getEnum: ru, | |
| 6229 | getEncoding: tu, | |
| 6230 | encode: nu, | |
| 6231 | decode: cu, | |
| 6232 | setVersion: ou, | |
| 6319 | resolveStruct: lu, | |
| 6320 | getStruct: uu, | |
| 6321 | getEnum: su, | |
| 6322 | getEncoding: pu, | |
| 6323 | encode: iu, | |
| 6324 | decode: au, | |
| 6325 | setVersion: tu, | |
| 6233 | 6326 | version: o, |
| 6234 | 6327 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | { |
| 2 | "version": 6, | |
| 2 | "version": 7, | |
| 3 | 3 | "schema": [ |
| 4 | 4 | { |
| 5 | 5 | "name": "public-key", |
| … | … | @@ -3796,6 +3796,11 @@ |
| 3796 | 3796 | "name": "isFavorite", |
| 3797 | 3797 | "type": "bool", |
| 3798 | 3798 | "version": 3 |
| 3799 | }, | |
| 3800 | { | |
| 3801 | "name": "isUnread", | |
| 3802 | "type": "bool", | |
| 3803 | "version": 7 | |
| 3799 | 3804 | } |
| 3800 | 3805 | ] |
| 3801 | 3806 | }, |
| … | … | @@ -4409,6 +4414,11 @@ |
| 4409 | 4414 | "name": "disableReadReceipts", |
| 4410 | 4415 | "type": "bool", |
| 4411 | 4416 | "version": 1 |
| 4417 | }, | |
| 4418 | { | |
| 4419 | "name": "stripAttachmentMetadata", | |
| 4420 | "type": "bool", | |
| 4421 | "version": 7 | |
| 4412 | 4422 | } |
| 4413 | 4423 | ] |
| 4414 | 4424 | }, |
| … | … | @@ -4420,6 +4430,10 @@ |
| 4420 | 4430 | { |
| 4421 | 4431 | "key": "disableReadReceipts", |
| 4422 | 4432 | "version": 1 |
| 4433 | }, | |
| 4434 | { | |
| 4435 | "key": "stripAttachmentMetadata", | |
| 4436 | "version": 7 | |
| 4423 | 4437 | } |
| 4424 | 4438 | ], |
| 4425 | 4439 | "strings": true |
| … | … | @@ -4696,6 +4710,11 @@ |
| 4696 | 4710 | "name": "swapV2", |
| 4697 | 4711 | "type": "@keet-private-id/identity-swap-v2", |
| 4698 | 4712 | "version": 1 |
| 4713 | }, | |
| 4714 | { | |
| 4715 | "name": "proofShortenedAt", | |
| 4716 | "type": "uint", | |
| 4717 | "version": 7 | |
| 4699 | 4718 | } |
| 4700 | 4719 | ] |
| 4701 | 4720 | }, |
| … | … | @@ -8080,6 +8099,77 @@ |
| 8080 | 8099 | "version": 6 |
| 8081 | 8100 | } |
| 8082 | 8101 | ] |
| 8102 | }, | |
| 8103 | { | |
| 8104 | "name": "shorten-device-attestation-operation", | |
| 8105 | "namespace": "keet-private-id", | |
| 8106 | "compact": false, | |
| 8107 | "flagsPosition": -1, | |
| 8108 | "fields": [ | |
| 8109 | { | |
| 8110 | "name": "header", | |
| 8111 | "required": true, | |
| 8112 | "type": "@keet/operation-header", | |
| 8113 | "version": 7 | |
| 8114 | }, | |
| 8115 | { | |
| 8116 | "name": "deviceKey", | |
| 8117 | "required": true, | |
| 8118 | "type": "@keet/device-key", | |
| 8119 | "version": 7 | |
| 8120 | }, | |
| 8121 | { | |
| 8122 | "name": "deviceProof", | |
| 8123 | "required": true, | |
| 8124 | "type": "buffer", | |
| 8125 | "version": 7 | |
| 8126 | }, | |
| 8127 | { | |
| 8128 | "name": "writerProof", | |
| 8129 | "required": true, | |
| 8130 | "type": "buffer", | |
| 8131 | "version": 7 | |
| 8132 | } | |
| 8133 | ] | |
| 8134 | }, | |
| 8135 | { | |
| 8136 | "name": "ota-actions", | |
| 8137 | "namespace": "local", | |
| 8138 | "compact": false, | |
| 8139 | "flagsPosition": 0, | |
| 8140 | "fields": [ | |
| 8141 | { | |
| 8142 | "name": "otaResyncPrivateProfileBump", | |
| 8143 | "type": "uint", | |
| 8144 | "version": 7 | |
| 8145 | } | |
| 8146 | ] | |
| 8147 | }, | |
| 8148 | { | |
| 8149 | "name": "device-attestation", | |
| 8150 | "namespace": "local", | |
| 8151 | "compact": false, | |
| 8152 | "flagsPosition": -1, | |
| 8153 | "fields": [ | |
| 8154 | { | |
| 8155 | "name": "deviceKey", | |
| 8156 | "required": true, | |
| 8157 | "type": "@keet/device-key", | |
| 8158 | "version": 7 | |
| 8159 | }, | |
| 8160 | { | |
| 8161 | "name": "proof", | |
| 8162 | "required": true, | |
| 8163 | "type": "buffer", | |
| 8164 | "version": 7 | |
| 8165 | }, | |
| 8166 | { | |
| 8167 | "name": "createdAt", | |
| 8168 | "required": true, | |
| 8169 | "type": "uint", | |
| 8170 | "version": 7 | |
| 8171 | } | |
| 8172 | ] | |
| 8083 | 8173 | } |
| 8084 | 8174 | ] |
| 8085 | 8175 | } |
| … | … | @@ -1,22 +1,22 @@ |
| 1 | 1 | const o = require("../hyperschema"), |
| 2 | U = require("hyperconf/runtime"), | |
| 3 | d = o.getEncoding("@config/keet-config"), | |
| 4 | s = e( | |
| 5 | d, | |
| 6 | U.b4a.from( | |
| 7 | "CA4HFwEDBAwDC/2IAz8Bwdf7MOoNiStwh63v4euvhB1sw4cMcwo40mS9JJ/f/7ABQhRuwr3PX8TvUmi1ybxJTO7ToKjLiyn/ap0g7YbbLJLkVobzZEaSwMoXDf2jR2df2WqVskOkG+QlPuL1XDxSUwPNk2Sd+XmE6wXbzAErGnCEO8wASM5KT3vuT/gihUsC09MeR6o2SxeeKfOvILau/u2lPAxfiw1reo00DWfQyJnA2z96XG0uEWnh1UFTqConLdHUGrD2y8DDVF2e+dwU7xMMQ3QXuEqwUVU1LP/VUNeZloucwf7WZHNA1+s2TGmoY5wWCYAuNsdgE+ws43F7d8NzkFsydXQ8wb6OAqfTBL/NWkoJL8z7HUKWDwHjCRkZHLkjN+mYhbbd4ckqW0zgDhKIlLDCpyuB35aR2dHQcs514Hk8KCje32iAKtYVGZPDNgfp3uq3HlcTcNJlTk9UwWdZ/mv2bPvhD+a0zWsMNkwFs5ZzFvJ5l5RjJa7PIYUs2mLSQKjS0iT7iqlxgjH4A7cqnXXUTgD09mPjDx6+/Y/GgiRq+/PF8/mb/Lg223je7d7B/oJzQVrzKppRFrbFmJMvbLqLafulJqv5Q4YhhY/9KNMz8WfUPyGjujNzDTmdtJhn6HHk1R0kvcnoycdpOUD5c3To3MVEF/BMEyM+3adgOZa0oKY1yBns13oo1LTw2pzobtxhPYPaPZSYm0RgJE6WAkTXA8bvvtTZOXIvECOYiGXMQdX6AnMfYyQIeV4TxGixlh3o2gJKUPVRMGUBUKvUB0WuQpMY8UYybd2ycWhTLHxrIcrP3UpD1Tnga9UYp4k6JuskyX5T+U05KEKzwLP93LkDoIg6xWkeZ+TJ02nvIzJcTuLQFAZwtDPA+ET+OCZMAihCzZt2tdKHZ7RiUx3+so4qaRpuCw7eZr1FdSsBZVFPvsiERyHrA4+8xBKvDraRdL2IgGH0GXRb0BE2dxDgupjg2wovsSrhohui0T11owwd/6/7fP4ICxWu+uX6GMK3rUP6zIiCtdYU/UUmLzPpyfEVS+bcxPmPOKtNv+dRRXkHsU2sPHbR7WVKplxpDCloATlyAlbp1RvoUK/oWWwqyoxK0eLVOaFsFHBlJ5G3vi0QASxk6bqnUpUYk3xUFWfLKg2jcSOZN6uc0ahcNywYs5byBfHslhGKAZ0aAr6nUnRdR7aoxWKso8tl1rp2oWQfyDsiAQHmif3c+Rw8sq2lt7U0d03jP8IwKPjY6gG4tF2d1O/jcyEBzyWoHGWLqPMhjXEwrYJD8EqaJLzUbzAsncqVWrOsFaU=", | |
| 2 | d = require("hyperconf/runtime"), | |
| 3 | e = o.getEncoding("@config/keet-config"), | |
| 4 | n = c( | |
| 5 | e, | |
| 6 | d.b4a.from( | |
| 7 | "CA4HFwEDBA4AC/2IAz8Bwdf7MOoNiStwh63v4euvhB1sw4cMcwo40mS9JJ/f/7ABQhRuwr3PX8TvUmi1ybxJTO7ToKjLiyn/ap0g7YbbLJLkVobzZEaSwMoXDf2jR2df2WqVskOkG+QlPuL1XDxSUwPNk2Sd+XmE6wXbzAErGnCEO8wASM5KT3vuT/gihUsC09MeR6o2SxeeKfOvILau/u2lPAxfiw1reo00DWfQyJnA2z96XG0uEWnh1UFTqConLdHUGrD2y8DDVF2e+dwU7xMMQ3QXuEqwUVU1LP/VUNeZloucwf7WZHNA1+s2TGmoY5wWCYAuNsdgE+ws43F7d8NzkFsydXQ8wb6OAqfTBL/NWkoJL8z7HUKWDwHjCRkZHLkjN+mYhbbd4ckqW0zgDhKIlLDCpyuB35aR2dHQcs514Hk8KCje32iAKtYVGZPDNgfp3uq3HlcTcNJlTk9UwWdZ/mv2bPvhD+a0zWsMNkwFs5ZzFvJ5l5RjJa7PIYUs2mLSQKjS0iT7iqlxgjH4A7cqnXXUTgD09mPjDx6+/Y/GgiRq+/PF8/mb/Lg223je7d7B/oJzQVrzKppRFrbFmJMvbLqLafulJqv5Q4YhhY/9KNMz8WfUPyGjujNzDTmdtJhn6HHk1R0kvcnoycdpOUD5c3To3MVEF/BMEyM+3adgOZa0oKY1yBns13oo1LTw2pzobtxhPYPaPZSYm0RgJE6WAkTXA8bvvtTZOXIvECOYiGXMQdX6AnMfYyQIeV4TxGixlh3o2gJKUPVRMGUBUKvUB0WuQpMY8UYybd2ycWhTLHxrIcrP3UpD1Tnga9UYp4k6JuskyX5T+U05KEKzwLP93LkDoIg6xWkeZ+TJ02nvIzJcTuLQFAZwtDPA+ET+OCZMAihCzZt2tdKHZ7RiUx3+so4qaRpuCw7eZr1FdSsBZVFPvsiERyHrA4+8xBKvDraRdL2IgGH0GXRb0BE2dxDgupjg2wovsSrhohui0T11owwd/6/7fP4ICxWu+uX6GMK3rUP6zIiCtdYU/UUmLzPpyfEVS+bcxPmPOKtNv+dRRXkHsU2sPHbR7WVKplxpDCloATlyAlbp1RvoUK/oWWwqyoxK0eLVOaFsFHBlJ5G3vi0QASxk6bqnUpUYk3xUFWfLKg2jcSOZN6uc0ahcNywYs5byBfHslhGKAZ0aAr6nUnRdR7aoxWKso8tl1rp2oWQfyDsiAQHmif3c+Rw8sq2lt7U0d03jP8IwKPjY6gG4tF2d1O/jcyEBzyWoHGWLqPMhjXEwrYJD8EqaJLzUbzAsncqVWrOsFaU=", | |
| 8 | 8 | "base64", |
| 9 | 9 | ), |
| 10 | 10 | ), |
| 11 | w = o.getEncoding("@config/keet-config"), | |
| 12 | c = e( | |
| 13 | w, | |
| 14 | U.b4a.from( | |
| 15 | "CA4HGgEDBAwDC/2IAz8BwWgTaeAmuPfSLEPTf7BNfdT1SwdR30VrxZMU50LQ6wv8G8jcXqQ3BvaYClXfUjuYUkkLuK2I8LZHi1tVCl49OJzd9q27SePd1zGsb/rHzXd/eB8k8G7Og0o4ja5tYcCLoAOGa8TwJ0Nk3lTya0m43RmXxbh4m/hhHdn/KM1tY+B2CBVhxCMFAowShkuoLFRzv1AzKjpqtXQPlKTB8n0cUHGOnlfvXt5S2oiOMxee8ZjqY78a4gVkijLZJURVITqLlsQMQ3QXuEqwUVU1LP/VUNeZloucwf7WZHNA1+s2TGmoY5wWCYAuNsdgE+ws43F7d8NzkFsydXQ8wb6OAqfTBL/NWkoJL8z7HUKWDwHjCRkZHLkjN+mYhbbd4ckqW0zgDhKIlLDCpyuB35aR2dHQcs514Hk8KCje32iAKtYVGZPDNgfp3uq3HlcTcNJlTk9UwWdZ/mv2bPvhD+a0zWsMNkwFs5ZzFvJ5l5RjJa7PIYUs2mLSQKjS0iT7iqlxgjH4A7cqnXXUTgD09mPjDx6+/Y/GgiRq+/PF8/mb/Lg223je7d7B/oJzQVrzKppRFrbFmJMvbLqLafulJqv5Q4YhhY/9KNMz8WfUPyGjujNzDTmdtJhn6HHk1R0kvcnoycdpOUD5c3To3MVEF/BMEyM+3adgOZa0oKY1yBns13oo1LTw2pzobtxhPYPaPZSYm0RgJE6WAkTXA8bvvtTZOXIvECOYiGXMQdX6AnMfYyQIeV4TxGixlh3o2gJKUPVRMGUBUKvUB0WuQpMY8UYybd2ycWhTLHxrIcrP3UpD1Tnga9UYp4k6JuskyX5T+U05KEKzwLP93LkDoIg6xWkeZ+TJ02nvIzJcTuLQFAZwtDPA+ET+OCZMAihCzZt2tdKHZ7RiUx3+so4qaRpuCw7eZr1FdSsBZVFPvsiERyHrA4+8xBKvDraRdL2IgGH0GXRb0BE2dxDgupjg2wovsSrhohui0T11owwd/6/7fP4ICxWu+uX6GMK3rUP6zIiCtdYU/UUmLzPpyfEVS+bcxPmPOKtNv+dRRXkHsU2sPHbR7WVKplxpDCloATlyAlbp1RvoUK/oWWwqyoxK0eLVOaFsFHBlJ5G3vi0QASxk6bqnUpUYk3xUFWfLKg2jcSOZN6uc0ahcNywYs5byBfHslhGKAZ0aAr6nUnRdR7aoxWKso8tl1rp2oWQfyDsiAQHmif3c+Rw8sq2lt7U0d03jP8IwKPjY6gG4tF2d1O/jcyEBzyWoHGWLqPMhjXEwrYJD8EqaJLzUbzAsncqVWrOsFaU=", | |
| 11 | U = o.getEncoding("@config/keet-config"), | |
| 12 | r = c( | |
| 13 | U, | |
| 14 | d.b4a.from( | |
| 15 | "CQ4PHAEDBAwDHQv9iAM/AcFoE2ngJrj30ixD03+wTX3U9UsHUd9Fa8WTFOdC0OsL/BvI3F6kNwb2mApV31I7mFJJC7itiPC2R4tbVQpePTic3fatu0nj3dcxrG/6x813f3gfJPBuzoNKOI2ubWHAi6ADhmvE8CdDZN5U8mtJuN0Zl8W4eJv4YR3Z/yjNbWPgdggVYcQjBQKMEoZLqCxUc79QMyo6arV0D5SkwfJ9HFBxjp5X717eUtqIjjMXnvGY6mO/GuIFZIoy2SVEVSE6i5bEDEN0F7hKsFFVNSz/1VDXmZaLnMH+1mRzQNfrNkxpqGOcFgmALjbHYBPsLONxe3fDc5BbMnV0PMG+jgKn0wS/zVpKCS/M+x1Clg8B4wkZGRy5IzfpmIW23eHJKltM4A4SiJSwwqcrgd+WkdnR0HLOdeB5PCgo3t9ogCrWFRmTwzYH6d7qtx5XE3DSZU5PVMFnWf5r9mz74Q/mtM1rDDZMBbOWcxbyeZeUYyWuzyGFLNpi0kCo0tIk+4qpcYIx+AO3Kp111E4A9PZj4w8evv2PxoIkavvzxfP5m/y4Ntt43u3ewf6Cc0Fa8yqaURa2xZiTL2y6i2n7pSar+UOGIYWP/SjTM/Fn1D8ho7ozcw05nbSYZ+hx5NUdJL3J6MnHaTlA+XN06NzFRBfwTBMjPt2nYDmWtKCmNcgZ7Nd6KNS08Nqc6G7cYT2D2j2UmJtEYCROlgJE1wPG777U2TlyLxAjmIhlzEHV+gJzH2MkCHleE8RosZYd6NoCSlD1UTBlAVCr1AdFrkKTGPFGMm3dsnFoUyx8ayHKz91KQ9U54GvVGKeJOibrJMl+U/lNOShCs8Cz/dy5A6CIOsVpHmfkydNp7yMyXE7i0BQGcLQzwPhE/jgmTAIoQs2bdrXSh2e0YlMd/rKOKmkabgsO3ma9RXUrAWVRT77IhEch6wOPvMQSrw62kXS9iIBh9Bl0W9ARNncQ4LqY4NsKL7Eq4aIbotE9daMMHf+v+3z+CAsVrvrl+hjCt61D+syIgrXWFP1FJi8z6cnxFUvm3MT5jzirTb/nUUV5B7FNrDx20e1lSqZcaQwpaAGCmNUxUdwhR8YERH7FJo8e6oGBktQjG3V1YwIEKEk+xQEsZOm6p1KVGJN8VBVnyyoNo3EjmTernNGoXDcsGLOW8gXx7JYRigGdGgK+p1J0XUe2qMVirKPLZda6dqFkH8g7QwMB5on93PkcPLKtpbe1NHdN4z/CMCj42OoBuLRdndTv43MB46SNAWk6B708S9TrYknXzIary+v3wFBA/jkyrKoP4z0hAc8lqBxli6jzIY1xMK2CQ/BKmiS81G8wLJ3KlVqzrBWl", | |
| 16 | 16 | "base64", |
| 17 | 17 | ), |
| 18 | 18 | ) |
| 19 | function e(o, U) { | |
| 20 | return o.decode({ start: 0, end: U.byteLength, buffer: U }) | |
| 19 | function c(o, d) { | |
| 20 | return o.decode({ start: 0, end: d.byteLength, buffer: d }) | |
| 21 | 21 | } |
| 22 | module.exports = { production: s, development: c, productionEncoding: d, developmentEncoding: w } | |
| 22 | module.exports = { production: n, development: r, productionEncoding: e, developmentEncoding: U } |
| … | … | @@ -1,24 +1,27 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 6 | |
| 3 | let n = 6 | |
| 2 | d = 7 | |
| 3 | let n = 7 | |
| 4 | 4 | const o = { |
| 5 | 5 | preencode(d, o) { |
| 6 | 6 | ;(e.uint.preencode(d, o.minimum), |
| 7 | 7 | d.end++, |
| 8 | 8 | o.autoupgrade && e.uint.preencode(d, o.autoupgrade), |
| 9 | 9 | n >= 3 && o.forceUpdate && e.uint.preencode(d, o.forceUpdate), |
| 10 | n >= 4 && o.minVersion && R.preencode(d, o.minVersion)) | |
| 10 | n >= 4 && o.minVersion && x.preencode(d, o.minVersion), | |
| 11 | n >= 7 && o.stable && e.uint.preencode(d, o.stable)) | |
| 11 | 12 | }, |
| 12 | 13 | encode(d, o) { |
| 13 | 14 | const c = |
| 14 | 15 | (o.autoupgrade ? 1 : 0) | |
| 15 | 16 | (n >= 3 && o.forceUpdate ? 2 : 0) | |
| 16 | (n >= 4 && o.minVersion ? 4 : 0) | |
| 17 | (n >= 4 && o.minVersion ? 4 : 0) | | |
| 18 | (n >= 7 && o.stable ? 8 : 0) | |
| 17 | 19 | ;(e.uint.encode(d, o.minimum), |
| 18 | 20 | e.uint.encode(d, c), |
| 19 | 21 | o.autoupgrade && e.uint.encode(d, o.autoupgrade), |
| 20 | 22 | n >= 3 && o.forceUpdate && e.uint.encode(d, o.forceUpdate), |
| 21 | n >= 4 && o.minVersion && R.encode(d, o.minVersion)) | |
| 23 | n >= 4 && o.minVersion && x.encode(d, o.minVersion), | |
| 24 | n >= 7 && o.stable && e.uint.encode(d, o.stable)) | |
| 22 | 25 | }, |
| 23 | 26 | decode(d) { |
| 24 | 27 | const o = e.uint.decode(d), |
| … | … | @@ -27,7 +30,8 @@ const o = { |
| 27 | 30 | minimum: o, |
| 28 | 31 | autoupgrade: 1 & c ? e.uint.decode(d) : 0, |
| 29 | 32 | forceUpdate: n >= 3 && 2 & c ? e.uint.decode(d) : 0, |
| 30 | minVersion: n >= 4 && 4 & c ? R.decode(d) : null, | |
| 33 | minVersion: n >= 4 && 4 & c ? x.decode(d) : null, | |
| 34 | stable: n >= 7 && 8 & c ? e.uint.decode(d) : 0, | |
| 31 | 35 | } |
| 32 | 36 | }, |
| 33 | 37 | }, |
| … | … | @@ -120,14 +124,14 @@ const o = { |
| 120 | 124 | m = e.frame(o), |
| 121 | 125 | g = e.frame(l), |
| 122 | 126 | v = e.frame(b), |
| 123 | k = { | |
| 127 | y = { | |
| 124 | 128 | preencode(e, d) { |
| 125 | 129 | ;(m.preencode(e, d.versions), |
| 126 | 130 | e.end++, |
| 127 | 131 | d.services && g.preencode(e, d.services), |
| 128 | 132 | d.rooms && v.preencode(e, d.rooms), |
| 129 | n >= 2 && d.profile && U.preencode(e, d.profile), | |
| 130 | n >= 5 && d.debug && V.preencode(e, d.debug)) | |
| 133 | n >= 2 && d.profile && h.preencode(e, d.profile), | |
| 134 | n >= 5 && d.debug && U.preencode(e, d.debug)) | |
| 131 | 135 | }, |
| 132 | 136 | encode(d, o) { |
| 133 | 137 | const c = |
| … | … | @@ -139,8 +143,8 @@ const o = { |
| 139 | 143 | e.uint.encode(d, c), |
| 140 | 144 | o.services && g.encode(d, o.services), |
| 141 | 145 | o.rooms && v.encode(d, o.rooms), |
| 142 | n >= 2 && o.profile && U.encode(d, o.profile), | |
| 143 | n >= 5 && o.debug && V.encode(d, o.debug)) | |
| 146 | n >= 2 && o.profile && h.encode(d, o.profile), | |
| 147 | n >= 5 && o.debug && U.encode(d, o.debug)) | |
| 144 | 148 | }, |
| 145 | 149 | decode(d) { |
| 146 | 150 | const o = m.decode(d), |
| … | … | @@ -149,25 +153,33 @@ const o = { |
| 149 | 153 | versions: o, |
| 150 | 154 | services: 1 & c ? g.decode(d) : null, |
| 151 | 155 | rooms: 2 & c ? v.decode(d) : null, |
| 152 | profile: n >= 2 && 4 & c ? U.decode(d) : null, | |
| 153 | debug: n >= 5 && 8 & c ? V.decode(d) : null, | |
| 156 | profile: n >= 2 && 4 & c ? h.decode(d) : null, | |
| 157 | debug: n >= 5 && 8 & c ? U.decode(d) : null, | |
| 154 | 158 | } |
| 155 | 159 | }, |
| 156 | 160 | }, |
| 157 | y = { | |
| 158 | preencode(e, d) { | |
| 159 | e.end++ | |
| 161 | k = { | |
| 162 | preencode(d, o) { | |
| 163 | ;(d.end++, | |
| 164 | n >= 7 && | |
| 165 | o.otaResyncPrivateProfileBump && | |
| 166 | e.uint.preencode(d, o.otaResyncPrivateProfileBump)) | |
| 160 | 167 | }, |
| 161 | 168 | encode(d, o) { |
| 162 | const c = n >= 2 && o.disableUnreadSync ? 1 : 0 | |
| 163 | e.uint.encode(d, c) | |
| 169 | const c = | |
| 170 | (n >= 2 && o.disableUnreadSync ? 1 : 0) | (n >= 7 && o.otaResyncPrivateProfileBump ? 2 : 0) | |
| 171 | ;(e.uint.encode(d, c), | |
| 172 | n >= 7 && o.otaResyncPrivateProfileBump && e.uint.encode(d, o.otaResyncPrivateProfileBump)) | |
| 164 | 173 | }, |
| 165 | 174 | decode(d) { |
| 166 | 175 | const o = e.uint.decode(d) |
| 167 | return { disableUnreadSync: n >= 2 && !!(1 & o) } | |
| 176 | return { | |
| 177 | disableUnreadSync: n >= 2 && !!(1 & o), | |
| 178 | otaResyncPrivateProfileBump: n >= 7 && 2 & o ? e.uint.decode(d) : 0, | |
| 179 | } | |
| 168 | 180 | }, |
| 169 | 181 | }, |
| 170 | x = { | |
| 182 | P = { | |
| 171 | 183 | preencode(d, n) { |
| 172 | 184 | ;(e.uint.preencode(d, n.major), e.uint.preencode(d, n.minor), e.uint.preencode(d, n.patch)) |
| 173 | 185 | }, |
| … | … | @@ -176,7 +188,7 @@ const o = { |
| 176 | 188 | }, |
| 177 | 189 | decode: (d) => ({ major: e.uint.decode(d), minor: e.uint.decode(d), patch: e.uint.decode(d) }), |
| 178 | 190 | }, |
| 179 | h = { | |
| 191 | R = { | |
| 180 | 192 | preencode(d, o) { |
| 181 | 193 | ;(d.end++, n >= 5 && o.unlockHash && e.fixed32.preencode(d, o.unlockHash)) |
| 182 | 194 | }, |
| … | … | @@ -189,22 +201,22 @@ const o = { |
| 189 | 201 | return { unlockHash: n >= 5 && 1 & o ? e.fixed32.decode(d) : null } |
| 190 | 202 | }, |
| 191 | 203 | }, |
| 192 | R = e.frame(x), | |
| 193 | U = e.frame(y), | |
| 194 | V = e.frame(h) | |
| 195 | function E(e) { | |
| 204 | x = e.frame(P), | |
| 205 | h = e.frame(k), | |
| 206 | U = e.frame(R) | |
| 207 | function V(e) { | |
| 196 | 208 | n = e |
| 197 | 209 | } |
| 198 | function H(d, o, c = 6) { | |
| 199 | return ((n = c), e.encode(S(d), o)) | |
| 210 | function B(d, o, c = 7) { | |
| 211 | return ((n = c), e.encode(w(d), o)) | |
| 200 | 212 | } |
| 201 | function P(d, o, c = 6) { | |
| 202 | return ((n = c), e.decode(S(d), o)) | |
| 213 | function E(d, o, c = 7) { | |
| 214 | return ((n = c), e.decode(w(d), o)) | |
| 203 | 215 | } |
| 204 | function w(e) { | |
| 216 | function H(e) { | |
| 205 | 217 | throw new Error("Enum not found " + e) |
| 206 | 218 | } |
| 207 | function S(e) { | |
| 219 | function w(e) { | |
| 208 | 220 | switch (e) { |
| 209 | 221 | case "@config/versions": |
| 210 | 222 | return o |
| … | … | @@ -215,19 +227,19 @@ function S(e) { |
| 215 | 227 | case "@config/rooms": |
| 216 | 228 | return b |
| 217 | 229 | case "@config/keet-config": |
| 218 | return k | |
| 219 | case "@config/profile": | |
| 220 | 230 | return y |
| 231 | case "@config/profile": | |
| 232 | return k | |
| 221 | 233 | case "@config/semver": |
| 222 | return x | |
| 234 | return P | |
| 223 | 235 | case "@config/debug": |
| 224 | return h | |
| 236 | return R | |
| 225 | 237 | default: |
| 226 | 238 | throw new Error("Encoder not found " + e) |
| 227 | 239 | } |
| 228 | 240 | } |
| 229 | function j(e, d = 6) { | |
| 230 | const o = S(e) | |
| 241 | function S(e, d = 7) { | |
| 242 | const o = w(e) | |
| 231 | 243 | return { |
| 232 | 244 | preencode(e, c) { |
| 233 | 245 | ;((n = d), o.preencode(e, c)) |
| … | … | @@ -238,14 +250,14 @@ function j(e, d = 6) { |
| 238 | 250 | decode: (e) => ((n = d), o.decode(e)), |
| 239 | 251 | } |
| 240 | 252 | } |
| 241 | const q = j | |
| 253 | const j = S | |
| 242 | 254 | module.exports = { |
| 243 | resolveStruct: q, | |
| 244 | getStruct: j, | |
| 245 | getEnum: w, | |
| 246 | getEncoding: S, | |
| 247 | encode: H, | |
| 248 | decode: P, | |
| 249 | setVersion: E, | |
| 255 | resolveStruct: j, | |
| 256 | getStruct: S, | |
| 257 | getEnum: H, | |
| 258 | getEncoding: w, | |
| 259 | encode: B, | |
| 260 | decode: E, | |
| 261 | setVersion: V, | |
| 250 | 262 | version: n, |
| 251 | 263 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | { |
| 2 | "version": 6, | |
| 2 | "version": 7, | |
| 3 | 3 | "schema": [ |
| 4 | 4 | { |
| 5 | 5 | "name": "versions", |
| … | … | @@ -27,6 +27,11 @@ |
| 27 | 27 | "name": "minVersion", |
| 28 | 28 | "type": "@config/semver", |
| 29 | 29 | "version": 4 |
| 30 | }, | |
| 31 | { | |
| 32 | "name": "stable", | |
| 33 | "type": "uint", | |
| 34 | "version": 7 | |
| 30 | 35 | } |
| 31 | 36 | ] |
| 32 | 37 | }, |
| … | … | @@ -170,6 +175,11 @@ |
| 170 | 175 | "name": "disableUnreadSync", |
| 171 | 176 | "type": "bool", |
| 172 | 177 | "version": 2 |
| 178 | }, | |
| 179 | { | |
| 180 | "name": "otaResyncPrivateProfileBump", | |
| 181 | "type": "uint", | |
| 182 | "version": 7 | |
| 173 | 183 | } |
| 174 | 184 | ] |
| 175 | 185 | }, |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 20 | |
| 2 | d = 21 | |
| 3 | 3 | let n = d |
| 4 | 4 | const o = { |
| 5 | 5 | preencode(d, n) { |
| … | … | @@ -204,7 +204,7 @@ const o = { |
| 204 | 204 | ;(k.preencode(d, n.pointer), |
| 205 | 205 | d.end++, |
| 206 | 206 | n.metadata && v.preencode(d, n.metadata), |
| 207 | n.preview && ei.preencode(d, n.preview), | |
| 207 | n.preview && ni.preencode(d, n.preview), | |
| 208 | 208 | n.hash && e.fixed32.preencode(d, n.hash)) |
| 209 | 209 | }, |
| 210 | 210 | encode(d, n) { |
| … | … | @@ -212,7 +212,7 @@ const o = { |
| 212 | 212 | ;(k.encode(d, n.pointer), |
| 213 | 213 | e.uint.encode(d, o), |
| 214 | 214 | n.metadata && v.encode(d, n.metadata), |
| 215 | n.preview && ei.encode(d, n.preview), | |
| 215 | n.preview && ni.encode(d, n.preview), | |
| 216 | 216 | n.hash && e.fixed32.encode(d, n.hash)) |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| … | … | @@ -221,7 +221,7 @@ const o = { |
| 221 | 221 | return { |
| 222 | 222 | pointer: n, |
| 223 | 223 | metadata: 1 & o ? v.decode(d) : null, |
| 224 | preview: 2 & o ? ei.decode(d) : null, | |
| 224 | preview: 2 & o ? ni.decode(d) : null, | |
| 225 | 225 | hash: 4 & o ? e.fixed32.decode(d) : null, |
| 226 | 226 | } |
| 227 | 227 | }, |
| … | … | @@ -349,7 +349,7 @@ const o = { |
| 349 | 349 | } |
| 350 | 350 | }, |
| 351 | 351 | }, |
| 352 | F = { | |
| 352 | M = { | |
| 353 | 353 | preencode(e, d) { |
| 354 | 354 | e.end++ |
| 355 | 355 | }, |
| … | … | @@ -362,7 +362,7 @@ const o = { |
| 362 | 362 | return { isMuted: !!(1 & n), isBanned: !!(2 & n), isShadowBanned: !!(4 & n) } |
| 363 | 363 | }, |
| 364 | 364 | }, |
| 365 | M = { | |
| 365 | F = { | |
| 366 | 366 | preencode(d, n) { |
| 367 | 367 | e.uint.preencode(d, n.version) |
| 368 | 368 | }, |
| … | … | @@ -438,26 +438,26 @@ const o = { |
| 438 | 438 | B = e.frame(q), |
| 439 | 439 | N = e.frame(L), |
| 440 | 440 | j = e.frame(I), |
| 441 | V = e.frame(E), | |
| 442 | O = { | |
| 441 | U = e.frame(E), | |
| 442 | V = { | |
| 443 | 443 | preencode(e, d) { |
| 444 | 444 | ;(B.preencode(e, d.devices), |
| 445 | 445 | N.preencode(e, d.members), |
| 446 | 446 | j.preencode(e, d.chat), |
| 447 | V.preencode(e, d.files)) | |
| 447 | U.preencode(e, d.files)) | |
| 448 | 448 | }, |
| 449 | 449 | encode(e, d) { |
| 450 | ;(B.encode(e, d.devices), N.encode(e, d.members), j.encode(e, d.chat), V.encode(e, d.files)) | |
| 450 | ;(B.encode(e, d.devices), N.encode(e, d.members), j.encode(e, d.chat), U.encode(e, d.files)) | |
| 451 | 451 | }, |
| 452 | 452 | decode: (e) => ({ |
| 453 | 453 | devices: B.decode(e), |
| 454 | 454 | members: N.decode(e), |
| 455 | 455 | chat: j.decode(e), |
| 456 | files: V.decode(e), | |
| 456 | files: U.decode(e), | |
| 457 | 457 | }), |
| 458 | 458 | }, |
| 459 | J = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 460 | U = { | |
| 459 | O = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 460 | J = { | |
| 461 | 461 | preencode(e, d) { |
| 462 | 462 | e.end++ |
| 463 | 463 | }, |
| … | … | @@ -480,8 +480,8 @@ const o = { |
| 480 | 480 | (n >= 19 && o.isLinksDisabled ? 128 : 0) | |
| 481 | 481 | (n >= 20 && o.buildType ? 256 : 0) |
| 482 | 482 | ;(e.uint.preencode(d, c), |
| 483 | o.roomType && U.preencode(d, o.roomType), | |
| 484 | n >= 20 && o.buildType && Vt.preencode(d, o.buildType)) | |
| 483 | o.roomType && J.preencode(d, o.roomType), | |
| 484 | n >= 20 && o.buildType && Ut.preencode(d, o.buildType)) | |
| 485 | 485 | }, |
| 486 | 486 | encode(d, o) { |
| 487 | 487 | const c = |
| … | … | @@ -495,13 +495,13 @@ const o = { |
| 495 | 495 | (n >= 19 && o.isLinksDisabled ? 128 : 0) | |
| 496 | 496 | (n >= 20 && o.buildType ? 256 : 0) |
| 497 | 497 | ;(e.uint.encode(d, c), |
| 498 | o.roomType && U.encode(d, o.roomType), | |
| 499 | n >= 20 && o.buildType && Vt.encode(d, o.buildType)) | |
| 498 | o.roomType && J.encode(d, o.roomType), | |
| 499 | n >= 20 && o.buildType && Ut.encode(d, o.buildType)) | |
| 500 | 500 | }, |
| 501 | 501 | decode(d) { |
| 502 | 502 | const o = e.uint.decode(d) |
| 503 | 503 | return { |
| 504 | roomType: 1 & o ? U.decode(d) : 0, | |
| 504 | roomType: 1 & o ? J.decode(d) : 0, | |
| 505 | 505 | isExperimental: !!(2 & o), |
| 506 | 506 | isJoiningDisabled: !!(4 & o), |
| 507 | 507 | isAppendingDisabled: !!(8 & o), |
| … | … | @@ -509,11 +509,11 @@ const o = { |
| 509 | 509 | isMembershipEventsDisabled: !!(32 & o), |
| 510 | 510 | isAttachmentsDisabled: n >= 19 && !!(64 & o), |
| 511 | 511 | isLinksDisabled: n >= 19 && !!(128 & o), |
| 512 | buildType: n >= 20 && 256 & o ? Vt.decode(d) : null, | |
| 512 | buildType: n >= 20 && 256 & o ? Ut.decode(d) : null, | |
| 513 | 513 | } |
| 514 | 514 | }, |
| 515 | 515 | }, |
| 516 | z = e.frame(M), | |
| 516 | z = e.frame(F), | |
| 517 | 517 | G = e.frame(H), |
| 518 | 518 | Q = { |
| 519 | 519 | preencode(d, n) { |
| … | … | @@ -558,9 +558,9 @@ const o = { |
| 558 | 558 | preencode(d, o) { |
| 559 | 559 | ;(d.end++, |
| 560 | 560 | o.title && e.string.preencode(d, o.title), |
| 561 | o.avatar && di.preencode(d, o.avatar), | |
| 561 | o.avatar && oi.preencode(d, o.avatar), | |
| 562 | 562 | o.description && e.string.preencode(d, o.description), |
| 563 | n >= 11 && o.supportedLanguages && ni.preencode(d, o.supportedLanguages), | |
| 563 | n >= 11 && o.supportedLanguages && ci.preencode(d, o.supportedLanguages), | |
| 564 | 564 | n >= 13 && o.blindPeers && Y.preencode(d, o.blindPeers)) |
| 565 | 565 | }, |
| 566 | 566 | encode(d, o) { |
| … | … | @@ -572,18 +572,18 @@ const o = { |
| 572 | 572 | (n >= 13 && o.blindPeers ? 16 : 0) |
| 573 | 573 | ;(e.uint.encode(d, c), |
| 574 | 574 | o.title && e.string.encode(d, o.title), |
| 575 | o.avatar && di.encode(d, o.avatar), | |
| 575 | o.avatar && oi.encode(d, o.avatar), | |
| 576 | 576 | o.description && e.string.encode(d, o.description), |
| 577 | n >= 11 && o.supportedLanguages && ni.encode(d, o.supportedLanguages), | |
| 577 | n >= 11 && o.supportedLanguages && ci.encode(d, o.supportedLanguages), | |
| 578 | 578 | n >= 13 && o.blindPeers && Y.encode(d, o.blindPeers)) |
| 579 | 579 | }, |
| 580 | 580 | decode(d) { |
| 581 | 581 | const o = e.uint.decode(d) |
| 582 | 582 | return { |
| 583 | 583 | title: 1 & o ? e.string.decode(d) : null, |
| 584 | avatar: 2 & o ? di.decode(d) : null, | |
| 584 | avatar: 2 & o ? oi.decode(d) : null, | |
| 585 | 585 | description: 4 & o ? e.string.decode(d) : null, |
| 586 | supportedLanguages: n >= 11 && 8 & o ? ni.decode(d) : null, | |
| 586 | supportedLanguages: n >= 11 && 8 & o ? ci.decode(d) : null, | |
| 587 | 587 | blindPeers: n >= 13 && 16 & o ? Y.decode(d) : null, |
| 588 | 588 | } |
| 589 | 589 | }, |
| … | … | @@ -643,7 +643,7 @@ const o = { |
| 643 | 643 | ;(e.fixed32.preencode(d, n.key), |
| 644 | 644 | e.fixed32.preencode(d, n.memberKey), |
| 645 | 645 | re.preencode(d, n.status), |
| 646 | oi.preencode(d, n.profile), | |
| 646 | ti.preencode(d, n.profile), | |
| 647 | 647 | d.end++, |
| 648 | 648 | n.invitation && ie.preencode(d, n.invitation)) |
| 649 | 649 | }, |
| … | … | @@ -652,7 +652,7 @@ const o = { |
| 652 | 652 | ;(e.fixed32.encode(d, n.key), |
| 653 | 653 | e.fixed32.encode(d, n.memberKey), |
| 654 | 654 | re.encode(d, n.status), |
| 655 | oi.encode(d, n.profile), | |
| 655 | ti.encode(d, n.profile), | |
| 656 | 656 | e.uint.encode(d, o), |
| 657 | 657 | n.invitation && ie.encode(d, n.invitation)) |
| 658 | 658 | }, |
| … | … | @@ -660,7 +660,7 @@ const o = { |
| 660 | 660 | key: e.fixed32.decode(d), |
| 661 | 661 | memberKey: e.fixed32.decode(d), |
| 662 | 662 | status: re.decode(d), |
| 663 | profile: oi.decode(d), | |
| 663 | profile: ti.decode(d), | |
| 664 | 664 | invitation: 1 & e.uint.decode(d) ? ie.decode(d) : null, |
| 665 | 665 | }), |
| 666 | 666 | }, |
| … | … | @@ -670,7 +670,7 @@ const o = { |
| 670 | 670 | d.end++, |
| 671 | 671 | n.mailbox && e.fixed32.preencode(d, n.mailbox), |
| 672 | 672 | n.displayName && e.string.preencode(d, n.displayName), |
| 673 | n.avatar && ci.preencode(d, n.avatar), | |
| 673 | n.avatar && ri.preencode(d, n.avatar), | |
| 674 | 674 | n.username && e.string.preencode(d, n.username)) |
| 675 | 675 | }, |
| 676 | 676 | encode(d, n) { |
| … | … | @@ -680,7 +680,7 @@ const o = { |
| 680 | 680 | e.uint.encode(d, o), |
| 681 | 681 | n.mailbox && e.fixed32.encode(d, n.mailbox), |
| 682 | 682 | n.displayName && e.string.encode(d, n.displayName), |
| 683 | n.avatar && ci.encode(d, n.avatar), | |
| 683 | n.avatar && ri.encode(d, n.avatar), | |
| 684 | 684 | n.username && e.string.encode(d, n.username)) |
| 685 | 685 | }, |
| 686 | 686 | decode(d) { |
| … | … | @@ -690,7 +690,7 @@ const o = { |
| 690 | 690 | timestamp: n, |
| 691 | 691 | mailbox: 1 & o ? e.fixed32.decode(d) : null, |
| 692 | 692 | displayName: 2 & o ? e.string.decode(d) : null, |
| 693 | avatar: 4 & o ? ci.decode(d) : null, | |
| 693 | avatar: 4 & o ? ri.decode(d) : null, | |
| 694 | 694 | username: 8 & o ? e.string.decode(d) : null, |
| 695 | 695 | } |
| 696 | 696 | }, |
| … | … | @@ -700,7 +700,7 @@ const o = { |
| 700 | 700 | ;(d.end++, |
| 701 | 701 | o.swarmKey && e.fixed32.preencode(d, o.swarmKey), |
| 702 | 702 | o.name && e.string.preencode(d, o.name), |
| 703 | n >= 20 && o.buildType && Vt.preencode(d, o.buildType)) | |
| 703 | n >= 20 && o.buildType && Ut.preencode(d, o.buildType)) | |
| 704 | 704 | }, |
| 705 | 705 | encode(d, o) { |
| 706 | 706 | const c = |
| … | … | @@ -711,7 +711,7 @@ const o = { |
| 711 | 711 | ;(e.uint.encode(d, c), |
| 712 | 712 | o.swarmKey && e.fixed32.encode(d, o.swarmKey), |
| 713 | 713 | o.name && e.string.encode(d, o.name), |
| 714 | n >= 20 && o.buildType && Vt.encode(d, o.buildType)) | |
| 714 | n >= 20 && o.buildType && Ut.encode(d, o.buildType)) | |
| 715 | 715 | }, |
| 716 | 716 | decode(d) { |
| 717 | 717 | const o = e.uint.decode(d) |
| … | … | @@ -719,7 +719,7 @@ const o = { |
| 719 | 719 | swarmKey: 1 & o ? e.fixed32.decode(d) : null, |
| 720 | 720 | name: 2 & o ? e.string.decode(d) : null, |
| 721 | 721 | isMobile: !!(4 & o), |
| 722 | buildType: n >= 20 && 8 & o ? Vt.decode(d) : null, | |
| 722 | buildType: n >= 20 && 8 & o ? Ut.decode(d) : null, | |
| 723 | 723 | } |
| 724 | 724 | }, |
| 725 | 725 | }, |
| … | … | @@ -735,12 +735,12 @@ const o = { |
| 735 | 735 | }, |
| 736 | 736 | fe = { |
| 737 | 737 | preencode(e, d) { |
| 738 | ;(ti.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 738 | ;(ii.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 739 | 739 | }, |
| 740 | 740 | encode(e, d) { |
| 741 | ;(ti.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 741 | ;(ii.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 742 | 742 | }, |
| 743 | decode: (e) => ({ profile: ti.decode(e), attestation: ce.decode(e) }), | |
| 743 | decode: (e) => ({ profile: ii.decode(e), attestation: ce.decode(e) }), | |
| 744 | 744 | }, |
| 745 | 745 | me = { |
| 746 | 746 | preencode(d, n) { |
| … | … | @@ -856,7 +856,7 @@ const o = { |
| 856 | 856 | }, |
| 857 | 857 | Ce = e.frame(me), |
| 858 | 858 | De = e.frame(be), |
| 859 | Fe = { | |
| 859 | Me = { | |
| 860 | 860 | preencode(e, d) { |
| 861 | 861 | ;(Ce.preencode(e, d.signedKeys), e.end++, d.identity && De.preencode(e, d.identity)) |
| 862 | 862 | }, |
| … | … | @@ -869,11 +869,11 @@ const o = { |
| 869 | 869 | identity: 1 & e.uint.decode(d) ? De.decode(d) : null, |
| 870 | 870 | }), |
| 871 | 871 | }, |
| 872 | Me = { | |
| 872 | Fe = { | |
| 873 | 873 | preencode(d, o) { |
| 874 | 874 | ;(d.end++, |
| 875 | 875 | o.expiration && e.uint.preencode(d, o.expiration), |
| 876 | n >= 20 && o.buildType && Vt.preencode(d, o.buildType)) | |
| 876 | n >= 20 && o.buildType && Ut.preencode(d, o.buildType)) | |
| 877 | 877 | }, |
| 878 | 878 | encode(d, o) { |
| 879 | 879 | const c = |
| … | … | @@ -884,7 +884,7 @@ const o = { |
| 884 | 884 | (n >= 20 && o.buildType ? 16 : 0) |
| 885 | 885 | ;(e.uint.encode(d, c), |
| 886 | 886 | o.expiration && e.uint.encode(d, o.expiration), |
| 887 | n >= 20 && o.buildType && Vt.encode(d, o.buildType)) | |
| 887 | n >= 20 && o.buildType && Ut.encode(d, o.buildType)) | |
| 888 | 888 | }, |
| 889 | 889 | decode(d) { |
| 890 | 890 | const o = e.uint.decode(d) |
| … | … | @@ -893,12 +893,12 @@ const o = { |
| 893 | 893 | requiresConfirmation: !!(2 & o), |
| 894 | 894 | canModerate: !!(4 & o), |
| 895 | 895 | canAdmin: !!(8 & o), |
| 896 | buildType: n >= 20 && 16 & o ? Vt.decode(d) : null, | |
| 896 | buildType: n >= 20 && 16 & o ? Ut.decode(d) : null, | |
| 897 | 897 | } |
| 898 | 898 | }, |
| 899 | 899 | }, |
| 900 | 900 | qe = Ce, |
| 901 | Le = e.frame(Me), | |
| 901 | Le = e.frame(Fe), | |
| 902 | 902 | Ie = { |
| 903 | 903 | preencode(d, n) { |
| 904 | 904 | ;(e.fixed32.preencode(d, n.id), |
| … | … | @@ -941,7 +941,7 @@ const o = { |
| 941 | 941 | decode: (e) => ({ header: Ee.decode(e), invitation: Be.decode(e) }), |
| 942 | 942 | }, |
| 943 | 943 | je = _, |
| 944 | Ve = { | |
| 944 | Ue = { | |
| 945 | 945 | preencode(d, n) { |
| 946 | 946 | ;(je.preencode(d, n.header), e.fixed32.preencode(d, n.id)) |
| 947 | 947 | }, |
| … | … | @@ -950,7 +950,7 @@ const o = { |
| 950 | 950 | }, |
| 951 | 951 | decode: (d) => ({ header: je.decode(d), id: e.fixed32.decode(d) }), |
| 952 | 952 | }, |
| 953 | Oe = { | |
| 953 | Ve = { | |
| 954 | 954 | preencode(d, n) { |
| 955 | 955 | ;(e.fixed32.preencode(d, n.mailbox), |
| 956 | 956 | e.fixed32.preencode(d, n.invitationSeed), |
| … | … | @@ -967,7 +967,7 @@ const o = { |
| 967 | 967 | anchor: o.decode(d), |
| 968 | 968 | }), |
| 969 | 969 | }, |
| 970 | Je = { | |
| 970 | Oe = { | |
| 971 | 971 | preencode(d, n) { |
| 972 | 972 | ;(e.fixed32.preencode(d, n.mailbox), |
| 973 | 973 | e.fixed32.preencode(d, n.invitationSeed), |
| … | … | @@ -987,7 +987,7 @@ const o = { |
| 987 | 987 | identityPublicKey: e.fixed32.decode(d), |
| 988 | 988 | }), |
| 989 | 989 | }, |
| 990 | Ue = { | |
| 990 | Je = { | |
| 991 | 991 | preencode(d, n) { |
| 992 | 992 | e.fixed32.preencode(d, n.mailbox) |
| 993 | 993 | }, |
| … | … | @@ -996,9 +996,9 @@ const o = { |
| 996 | 996 | }, |
| 997 | 997 | decode: (d) => ({ mailbox: e.fixed32.decode(d) }), |
| 998 | 998 | }, |
| 999 | He = e.frame(Oe), | |
| 1000 | ze = e.frame(Je), | |
| 1001 | Ge = e.frame(Ue), | |
| 999 | He = e.frame(Ve), | |
| 1000 | ze = e.frame(Oe), | |
| 1001 | Ge = e.frame(Je), | |
| 1002 | 1002 | Qe = e.array(e.ipv4Address), |
| 1003 | 1003 | We = { |
| 1004 | 1004 | preencode(e, d) { |
| … | … | @@ -1006,9 +1006,9 @@ const o = { |
| 1006 | 1006 | d.room && He.preencode(e, d.room), |
| 1007 | 1007 | d.identity && ze.preencode(e, d.identity), |
| 1008 | 1008 | d.contact && Ge.preencode(e, d.contact), |
| 1009 | n >= 6 && d.readonly && ri.preencode(e, d.readonly), | |
| 1009 | n >= 6 && d.readonly && ai.preencode(e, d.readonly), | |
| 1010 | 1010 | n >= 11 && d.additionalNodes && Qe.preencode(e, d.additionalNodes), |
| 1011 | n >= 20 && d.buildType && Vt.preencode(e, d.buildType)) | |
| 1011 | n >= 20 && d.buildType && Ut.preencode(e, d.buildType)) | |
| 1012 | 1012 | }, |
| 1013 | 1013 | encode(d, o) { |
| 1014 | 1014 | const c = |
| … | … | @@ -1022,9 +1022,9 @@ const o = { |
| 1022 | 1022 | o.room && He.encode(d, o.room), |
| 1023 | 1023 | o.identity && ze.encode(d, o.identity), |
| 1024 | 1024 | o.contact && Ge.encode(d, o.contact), |
| 1025 | n >= 6 && o.readonly && ri.encode(d, o.readonly), | |
| 1025 | n >= 6 && o.readonly && ai.encode(d, o.readonly), | |
| 1026 | 1026 | n >= 11 && o.additionalNodes && Qe.encode(d, o.additionalNodes), |
| 1027 | n >= 20 && o.buildType && Vt.encode(d, o.buildType)) | |
| 1027 | n >= 20 && o.buildType && Ut.encode(d, o.buildType)) | |
| 1028 | 1028 | }, |
| 1029 | 1029 | decode(d) { |
| 1030 | 1030 | const o = e.uint.decode(d) |
| … | … | @@ -1032,9 +1032,9 @@ const o = { |
| 1032 | 1032 | room: 1 & o ? He.decode(d) : null, |
| 1033 | 1033 | identity: 2 & o ? ze.decode(d) : null, |
| 1034 | 1034 | contact: 4 & o ? Ge.decode(d) : null, |
| 1035 | readonly: n >= 6 && 8 & o ? ri.decode(d) : null, | |
| 1035 | readonly: n >= 6 && 8 & o ? ai.decode(d) : null, | |
| 1036 | 1036 | additionalNodes: n >= 11 && 16 & o ? Qe.decode(d) : null, |
| 1037 | buildType: n >= 20 && 32 & o ? Vt.decode(d) : null, | |
| 1037 | buildType: n >= 20 && 32 & o ? Ut.decode(d) : null, | |
| 1038 | 1038 | } |
| 1039 | 1039 | }, |
| 1040 | 1040 | }, |
| … | … | @@ -1051,13 +1051,13 @@ const o = { |
| 1051 | 1051 | Ze = _, |
| 1052 | 1052 | $e = { |
| 1053 | 1053 | preencode(e, d) { |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && ii.preencode(e, d.profile)) | |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && si.preencode(e, d.profile)) | |
| 1055 | 1055 | }, |
| 1056 | 1056 | encode(d, n) { |
| 1057 | 1057 | const o = n.profile ? 1 : 0 |
| 1058 | ;(Ze.encode(d, n.header), e.uint.encode(d, o), n.profile && ii.encode(d, n.profile)) | |
| 1058 | ;(Ze.encode(d, n.header), e.uint.encode(d, o), n.profile && si.encode(d, n.profile)) | |
| 1059 | 1059 | }, |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? ii.decode(d) : null }), | |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? si.decode(d) : null }), | |
| 1061 | 1061 | }, |
| 1062 | 1062 | _e = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({}) }, |
| 1063 | 1063 | ed = _e, |
| … | … | @@ -1128,7 +1128,7 @@ const o = { |
| 1128 | 1128 | ud.preencode(d, n.status), |
| 1129 | 1129 | ld.preencode(d, n.profile), |
| 1130 | 1130 | d.end++, |
| 1131 | n.proofs && ai.preencode(d, n.proofs)) | |
| 1131 | n.proofs && pi.preencode(d, n.proofs)) | |
| 1132 | 1132 | }, |
| 1133 | 1133 | encode(d, n) { |
| 1134 | 1134 | const o = n.proofs ? 1 : 0 |
| … | … | @@ -1136,13 +1136,13 @@ const o = { |
| 1136 | 1136 | ud.encode(d, n.status), |
| 1137 | 1137 | ld.encode(d, n.profile), |
| 1138 | 1138 | e.uint.encode(d, o), |
| 1139 | n.proofs && ai.encode(d, n.proofs)) | |
| 1139 | n.proofs && pi.encode(d, n.proofs)) | |
| 1140 | 1140 | }, |
| 1141 | 1141 | decode: (d) => ({ |
| 1142 | 1142 | key: e.fixed32.decode(d), |
| 1143 | 1143 | status: ud.decode(d), |
| 1144 | 1144 | profile: ld.decode(d), |
| 1145 | proofs: 1 & e.uint.decode(d) ? ai.decode(d) : null, | |
| 1145 | proofs: 1 & e.uint.decode(d) ? pi.decode(d) : null, | |
| 1146 | 1146 | }), |
| 1147 | 1147 | }, |
| 1148 | 1148 | md = { |
| … | … | @@ -1181,7 +1181,7 @@ const o = { |
| 1181 | 1181 | decode: (e) => ({ header: yd.decode(e), member: bd.decode(e) }), |
| 1182 | 1182 | }, |
| 1183 | 1183 | kd = _, |
| 1184 | vd = e.frame(F), | |
| 1184 | vd = e.frame(M), | |
| 1185 | 1185 | gd = { |
| 1186 | 1186 | preencode(d, n) { |
| 1187 | 1187 | ;(kd.preencode(d, n.header), |
| … | … | @@ -1263,8 +1263,8 @@ const o = { |
| 1263 | 1263 | }, |
| 1264 | 1264 | Cd = e.frame(Pd), |
| 1265 | 1265 | Dd = e.frame(Sd), |
| 1266 | Fd = e.frame(Rd), | |
| 1267 | Md = { | |
| 1266 | Md = e.frame(Rd), | |
| 1267 | Fd = { | |
| 1268 | 1268 | preencode(d, o) { |
| 1269 | 1269 | const c = |
| 1270 | 1270 | (o.memberJoined ? 1 : 0) | |
| … | … | @@ -1280,9 +1280,9 @@ const o = { |
| 1280 | 1280 | ;(e.uint.preencode(d, c), |
| 1281 | 1281 | o.memberJoined && Cd.preencode(d, o.memberJoined), |
| 1282 | 1282 | o.memberLeft && Dd.preencode(d, o.memberLeft), |
| 1283 | o.titleChanged && Fd.preencode(d, o.titleChanged), | |
| 1284 | n >= 3 && o.memberRemoved && si.preencode(d, o.memberRemoved), | |
| 1285 | n >= 18 && o.locationShared && pi.preencode(d, o.locationShared)) | |
| 1283 | o.titleChanged && Md.preencode(d, o.titleChanged), | |
| 1284 | n >= 3 && o.memberRemoved && ui.preencode(d, o.memberRemoved), | |
| 1285 | n >= 18 && o.locationShared && li.preencode(d, o.locationShared)) | |
| 1286 | 1286 | }, |
| 1287 | 1287 | encode(d, o) { |
| 1288 | 1288 | const c = |
| … | … | @@ -1299,29 +1299,29 @@ const o = { |
| 1299 | 1299 | ;(e.uint.encode(d, c), |
| 1300 | 1300 | o.memberJoined && Cd.encode(d, o.memberJoined), |
| 1301 | 1301 | o.memberLeft && Dd.encode(d, o.memberLeft), |
| 1302 | o.titleChanged && Fd.encode(d, o.titleChanged), | |
| 1303 | n >= 3 && o.memberRemoved && si.encode(d, o.memberRemoved), | |
| 1304 | n >= 18 && o.locationShared && pi.encode(d, o.locationShared)) | |
| 1302 | o.titleChanged && Md.encode(d, o.titleChanged), | |
| 1303 | n >= 3 && o.memberRemoved && ui.encode(d, o.memberRemoved), | |
| 1304 | n >= 18 && o.locationShared && li.encode(d, o.locationShared)) | |
| 1305 | 1305 | }, |
| 1306 | 1306 | decode(d) { |
| 1307 | 1307 | const o = e.uint.decode(d) |
| 1308 | 1308 | return { |
| 1309 | 1309 | memberJoined: 1 & o ? Cd.decode(d) : null, |
| 1310 | 1310 | memberLeft: 2 & o ? Dd.decode(d) : null, |
| 1311 | titleChanged: 4 & o ? Fd.decode(d) : null, | |
| 1311 | titleChanged: 4 & o ? Md.decode(d) : null, | |
| 1312 | 1312 | callStarted: !!(8 & o), |
| 1313 | 1313 | callHangup: !!(16 & o), |
| 1314 | 1314 | callMissed: !!(32 & o), |
| 1315 | 1315 | roomAvatarChanged: n >= 3 && !!(64 & o), |
| 1316 | 1316 | invitationCreated: n >= 3 && !!(128 & o), |
| 1317 | memberRemoved: n >= 3 && 256 & o ? si.decode(d) : null, | |
| 1318 | locationShared: n >= 18 && 512 & o ? pi.decode(d) : null, | |
| 1317 | memberRemoved: n >= 3 && 256 & o ? ui.decode(d) : null, | |
| 1318 | locationShared: n >= 18 && 512 & o ? li.decode(d) : null, | |
| 1319 | 1319 | } |
| 1320 | 1320 | }, |
| 1321 | 1321 | }, |
| 1322 | 1322 | qd = { |
| 1323 | 1323 | preencode(e, d) { |
| 1324 | ;(e.end++, n >= 18 && d.locationShared && ui.preencode(e, d.locationShared)) | |
| 1324 | ;(e.end++, n >= 18 && d.locationShared && fi.preencode(e, d.locationShared)) | |
| 1325 | 1325 | }, |
| 1326 | 1326 | encode(d, o) { |
| 1327 | 1327 | const c = |
| … | … | @@ -1329,7 +1329,7 @@ const o = { |
| 1329 | 1329 | (o.callHangup ? 2 : 0) | |
| 1330 | 1330 | (o.callMissed ? 4 : 0) | |
| 1331 | 1331 | (n >= 18 && o.locationShared ? 8 : 0) |
| 1332 | ;(e.uint.encode(d, c), n >= 18 && o.locationShared && ui.encode(d, o.locationShared)) | |
| 1332 | ;(e.uint.encode(d, c), n >= 18 && o.locationShared && fi.encode(d, o.locationShared)) | |
| 1333 | 1333 | }, |
| 1334 | 1334 | decode(d) { |
| 1335 | 1335 | const o = e.uint.decode(d) |
| … | … | @@ -1337,7 +1337,7 @@ const o = { |
| 1337 | 1337 | callStarted: !!(1 & o), |
| 1338 | 1338 | callHangup: !!(2 & o), |
| 1339 | 1339 | callMissed: !!(4 & o), |
| 1340 | locationShared: n >= 18 && 8 & o ? ui.decode(d) : null, | |
| 1340 | locationShared: n >= 18 && 8 & o ? fi.decode(d) : null, | |
| 1341 | 1341 | } |
| 1342 | 1342 | }, |
| 1343 | 1343 | }, |
| … | … | @@ -1371,14 +1371,14 @@ const o = { |
| 1371 | 1371 | decode: (d) => ({ range: Bd.decode(d), memberKey: e.fixed32.decode(d) }), |
| 1372 | 1372 | }, |
| 1373 | 1373 | jd = h, |
| 1374 | Vd = e.array(e.uint), | |
| 1375 | Od = { | |
| 1374 | Ud = e.array(e.uint), | |
| 1375 | Vd = { | |
| 1376 | 1376 | preencode(d, o) { |
| 1377 | 1377 | ;(d.end++, |
| 1378 | 1378 | o.title && e.string.preencode(d, o.title), |
| 1379 | 1379 | o.description && e.string.preencode(d, o.description), |
| 1380 | 1380 | o.file && jd.preencode(d, o.file), |
| 1381 | n >= 7 && o.files && Vd.preencode(d, o.files)) | |
| 1381 | n >= 7 && o.files && Ud.preencode(d, o.files)) | |
| 1382 | 1382 | }, |
| 1383 | 1383 | encode(d, o) { |
| 1384 | 1384 | const c = |
| … | … | @@ -1387,7 +1387,7 @@ const o = { |
| 1387 | 1387 | o.title && e.string.encode(d, o.title), |
| 1388 | 1388 | o.description && e.string.encode(d, o.description), |
| 1389 | 1389 | o.file && jd.encode(d, o.file), |
| 1390 | n >= 7 && o.files && Vd.encode(d, o.files)) | |
| 1390 | n >= 7 && o.files && Ud.encode(d, o.files)) | |
| 1391 | 1391 | }, |
| 1392 | 1392 | decode(d) { |
| 1393 | 1393 | const o = e.uint.decode(d) |
| … | … | @@ -1395,30 +1395,30 @@ const o = { |
| 1395 | 1395 | title: 1 & o ? e.string.decode(d) : null, |
| 1396 | 1396 | description: 2 & o ? e.string.decode(d) : null, |
| 1397 | 1397 | file: 4 & o ? jd.decode(d) : null, |
| 1398 | files: n >= 7 && 8 & o ? Vd.decode(d) : null, | |
| 1398 | files: n >= 7 && 8 & o ? Ud.decode(d) : null, | |
| 1399 | 1399 | } |
| 1400 | 1400 | }, |
| 1401 | 1401 | }, |
| 1402 | Jd = Id, | |
| 1403 | Ud = e.frame(Od), | |
| 1402 | Od = Id, | |
| 1403 | Jd = e.frame(Vd), | |
| 1404 | 1404 | Hd = { |
| 1405 | 1405 | preencode(d, n) { |
| 1406 | ;(Jd.preencode(d, n.range), | |
| 1406 | ;(Od.preencode(d, n.range), | |
| 1407 | 1407 | e.string.preencode(d, n.url), |
| 1408 | 1408 | d.end++, |
| 1409 | n.preview && Ud.preencode(d, n.preview)) | |
| 1409 | n.preview && Jd.preencode(d, n.preview)) | |
| 1410 | 1410 | }, |
| 1411 | 1411 | encode(d, n) { |
| 1412 | 1412 | const o = n.preview ? 1 : 0 |
| 1413 | ;(Jd.encode(d, n.range), | |
| 1413 | ;(Od.encode(d, n.range), | |
| 1414 | 1414 | e.string.encode(d, n.url), |
| 1415 | 1415 | e.uint.encode(d, o), |
| 1416 | n.preview && Ud.encode(d, n.preview)) | |
| 1416 | n.preview && Jd.encode(d, n.preview)) | |
| 1417 | 1417 | }, |
| 1418 | 1418 | decode: (d) => ({ |
| 1419 | range: Jd.decode(d), | |
| 1419 | range: Od.decode(d), | |
| 1420 | 1420 | url: e.string.decode(d), |
| 1421 | preview: 1 & e.uint.decode(d) ? Ud.decode(d) : null, | |
| 1421 | preview: 1 & e.uint.decode(d) ? Jd.decode(d) : null, | |
| 1422 | 1422 | }), |
| 1423 | 1423 | }, |
| 1424 | 1424 | zd = e.array(e.frame(Nd)), |
| … | … | @@ -1453,7 +1453,7 @@ const o = { |
| 1453 | 1453 | o.emoji && Zd.preencode(d, o.emoji), |
| 1454 | 1454 | o.codeBlock && $d.preencode(d, o.codeBlock), |
| 1455 | 1455 | o.strike && _d.preencode(d, o.strike), |
| 1456 | n >= 11 && o.translation && li.preencode(d, o.translation)) | |
| 1456 | n >= 11 && o.translation && mi.preencode(d, o.translation)) | |
| 1457 | 1457 | }, |
| 1458 | 1458 | encode(d, o) { |
| 1459 | 1459 | const c = |
| … | … | @@ -1477,7 +1477,7 @@ const o = { |
| 1477 | 1477 | o.emoji && Zd.encode(d, o.emoji), |
| 1478 | 1478 | o.codeBlock && $d.encode(d, o.codeBlock), |
| 1479 | 1479 | o.strike && _d.encode(d, o.strike), |
| 1480 | n >= 11 && o.translation && li.encode(d, o.translation)) | |
| 1480 | n >= 11 && o.translation && mi.encode(d, o.translation)) | |
| 1481 | 1481 | }, |
| 1482 | 1482 | decode(d) { |
| 1483 | 1483 | const o = e.uint.decode(d) |
| … | … | @@ -1491,7 +1491,7 @@ const o = { |
| 1491 | 1491 | emoji: 64 & o ? Zd.decode(d) : null, |
| 1492 | 1492 | codeBlock: 128 & o ? $d.decode(d) : null, |
| 1493 | 1493 | strike: 256 & o ? _d.decode(d) : null, |
| 1494 | translation: n >= 11 && 512 & o ? li.decode(d) : null, | |
| 1494 | translation: n >= 11 && 512 & o ? mi.decode(d) : null, | |
| 1495 | 1495 | } |
| 1496 | 1496 | }, |
| 1497 | 1497 | }, |
| … | … | @@ -1538,7 +1538,7 @@ const o = { |
| 1538 | 1538 | } |
| 1539 | 1539 | }, |
| 1540 | 1540 | }, |
| 1541 | tn = Vd, | |
| 1541 | tn = Ud, | |
| 1542 | 1542 | rn = nn, |
| 1543 | 1543 | an = { |
| 1544 | 1544 | preencode(d, n) { |
| … | … | @@ -1636,7 +1636,7 @@ const o = { |
| 1636 | 1636 | }, |
| 1637 | 1637 | decode: (d) => ({ thread: e.uint.decode(d), index: e.uint.decode(d) }), |
| 1638 | 1638 | }, |
| 1639 | mn = e.frame(O), | |
| 1639 | mn = e.frame(V), | |
| 1640 | 1640 | yn = { |
| 1641 | 1641 | preencode(d, n) { |
| 1642 | 1642 | ;(e.uint.preencode(d, n.id), |
| … | … | @@ -1667,7 +1667,7 @@ const o = { |
| 1667 | 1667 | }, |
| 1668 | 1668 | bn = e.frame(ln), |
| 1669 | 1669 | xn = e.frame(an), |
| 1670 | kn = e.frame(Md), | |
| 1670 | kn = e.frame(Fd), | |
| 1671 | 1671 | vn = { |
| 1672 | 1672 | preencode(d, n) { |
| 1673 | 1673 | ;(fn.preencode(d, n.id), |
| … | … | @@ -1778,7 +1778,7 @@ const o = { |
| 1778 | 1778 | }, |
| 1779 | 1779 | Cn = _, |
| 1780 | 1780 | Dn = Tn, |
| 1781 | Fn = { | |
| 1781 | Mn = { | |
| 1782 | 1782 | preencode(e, d) { |
| 1783 | 1783 | ;(Cn.preencode(e, d.header), c.preencode(e, d.oplog), Dn.preencode(e, d.message)) |
| 1784 | 1784 | }, |
| … | … | @@ -1787,17 +1787,17 @@ const o = { |
| 1787 | 1787 | }, |
| 1788 | 1788 | decode: (e) => ({ header: Cn.decode(e), oplog: c.decode(e), message: Dn.decode(e) }), |
| 1789 | 1789 | }, |
| 1790 | Mn = _, | |
| 1790 | Fn = _, | |
| 1791 | 1791 | qn = { |
| 1792 | 1792 | preencode(e, d) { |
| 1793 | ;(Mn.preencode(e, d.header), c.preencode(e, d.oplog), e.end++) | |
| 1793 | ;(Fn.preencode(e, d.header), c.preencode(e, d.oplog), e.end++) | |
| 1794 | 1794 | }, |
| 1795 | 1795 | encode(d, n) { |
| 1796 | 1796 | const o = n.isPinned ? 1 : 0 |
| 1797 | ;(Mn.encode(d, n.header), c.encode(d, n.oplog), e.uint.encode(d, o)) | |
| 1797 | ;(Fn.encode(d, n.header), c.encode(d, n.oplog), e.uint.encode(d, o)) | |
| 1798 | 1798 | }, |
| 1799 | 1799 | decode: (d) => ({ |
| 1800 | header: Mn.decode(d), | |
| 1800 | header: Fn.decode(d), | |
| 1801 | 1801 | oplog: c.decode(d), |
| 1802 | 1802 | isPinned: !!(1 & e.uint.decode(d)), |
| 1803 | 1803 | }), |
| … | … | @@ -1866,45 +1866,45 @@ const o = { |
| 1866 | 1866 | }, |
| 1867 | 1867 | decode: (d) => ({ header: Nn.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), |
| 1868 | 1868 | }, |
| 1869 | Vn = _, | |
| 1870 | On = { | |
| 1869 | Un = _, | |
| 1870 | Vn = { | |
| 1871 | 1871 | preencode(d, n) { |
| 1872 | ;(Vn.preencode(d, n.header), c.preencode(d, n.oplog), e.string.preencode(d, n.reaction)) | |
| 1872 | ;(Un.preencode(d, n.header), c.preencode(d, n.oplog), e.string.preencode(d, n.reaction)) | |
| 1873 | 1873 | }, |
| 1874 | 1874 | encode(d, n) { |
| 1875 | ;(Vn.encode(d, n.header), c.encode(d, n.oplog), e.string.encode(d, n.reaction)) | |
| 1875 | ;(Un.encode(d, n.header), c.encode(d, n.oplog), e.string.encode(d, n.reaction)) | |
| 1876 | 1876 | }, |
| 1877 | decode: (d) => ({ header: Vn.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1877 | decode: (d) => ({ header: Un.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1878 | 1878 | }, |
| 1879 | Jn = _, | |
| 1880 | Un = e.frame(Z), | |
| 1879 | On = _, | |
| 1880 | Jn = e.frame(Z), | |
| 1881 | 1881 | Hn = { |
| 1882 | 1882 | preencode(d, n) { |
| 1883 | ;(Jn.preencode(d, n.header), e.uint.preencode(d, n.key), Un.preencode(d, n.config)) | |
| 1883 | ;(On.preencode(d, n.header), e.uint.preencode(d, n.key), Jn.preencode(d, n.config)) | |
| 1884 | 1884 | }, |
| 1885 | 1885 | encode(d, n) { |
| 1886 | ;(Jn.encode(d, n.header), e.uint.encode(d, n.key), Un.encode(d, n.config)) | |
| 1886 | ;(On.encode(d, n.header), e.uint.encode(d, n.key), Jn.encode(d, n.config)) | |
| 1887 | 1887 | }, |
| 1888 | decode: (d) => ({ header: Jn.decode(d), key: e.uint.decode(d), config: Un.decode(d) }), | |
| 1888 | decode: (d) => ({ header: On.decode(d), key: e.uint.decode(d), config: Jn.decode(d) }), | |
| 1889 | 1889 | }, |
| 1890 | 1890 | zn = { |
| 1891 | 1891 | preencode(d, n) { |
| 1892 | 1892 | ;(e.fixed32.preencode(d, n.memberKey), |
| 1893 | 1893 | e.string.preencode(d, n.displayName), |
| 1894 | 1894 | d.end++, |
| 1895 | n.avatar && fi.preencode(d, n.avatar)) | |
| 1895 | n.avatar && yi.preencode(d, n.avatar)) | |
| 1896 | 1896 | }, |
| 1897 | 1897 | encode(d, n) { |
| 1898 | 1898 | const o = n.avatar ? 1 : 0 |
| 1899 | 1899 | ;(e.fixed32.encode(d, n.memberKey), |
| 1900 | 1900 | e.string.encode(d, n.displayName), |
| 1901 | 1901 | e.uint.encode(d, o), |
| 1902 | n.avatar && fi.encode(d, n.avatar)) | |
| 1902 | n.avatar && yi.encode(d, n.avatar)) | |
| 1903 | 1903 | }, |
| 1904 | 1904 | decode: (d) => ({ |
| 1905 | 1905 | memberKey: e.fixed32.decode(d), |
| 1906 | 1906 | displayName: e.string.decode(d), |
| 1907 | avatar: 1 & e.uint.decode(d) ? fi.decode(d) : null, | |
| 1907 | avatar: 1 & e.uint.decode(d) ? yi.decode(d) : null, | |
| 1908 | 1908 | }), |
| 1909 | 1909 | }, |
| 1910 | 1910 | Gn = { |
| … | … | @@ -1950,7 +1950,7 @@ const o = { |
| 1950 | 1950 | Xn = _, |
| 1951 | 1951 | Yn = e.frame(Q), |
| 1952 | 1952 | Zn = e.frame(W), |
| 1953 | $n = Un, | |
| 1953 | $n = Jn, | |
| 1954 | 1954 | _n = e.frame(Wn), |
| 1955 | 1955 | eo = xe, |
| 1956 | 1956 | no = e.array(e.frame(le)), |
| … | … | @@ -2020,7 +2020,7 @@ const o = { |
| 2020 | 2020 | so = { |
| 2021 | 2021 | preencode(d, n) { |
| 2022 | 2022 | ;(e.fixed32.preencode(d, n.memberKey), |
| 2023 | mi.preencode(d, n.status), | |
| 2023 | bi.preencode(d, n.status), | |
| 2024 | 2024 | d.end++, |
| 2025 | 2025 | n.mailbox && e.fixed32.preencode(d, n.mailbox), |
| 2026 | 2026 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) |
| … | … | @@ -2028,14 +2028,14 @@ const o = { |
| 2028 | 2028 | encode(d, n) { |
| 2029 | 2029 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) |
| 2030 | 2030 | ;(e.fixed32.encode(d, n.memberKey), |
| 2031 | mi.encode(d, n.status), | |
| 2031 | bi.encode(d, n.status), | |
| 2032 | 2032 | e.uint.encode(d, o), |
| 2033 | 2033 | n.mailbox && e.fixed32.encode(d, n.mailbox), |
| 2034 | 2034 | n.roomKey && e.fixed32.encode(d, n.roomKey)) |
| 2035 | 2035 | }, |
| 2036 | 2036 | decode(d) { |
| 2037 | 2037 | const n = e.fixed32.decode(d), |
| 2038 | o = mi.decode(d), | |
| 2038 | o = bi.decode(d), | |
| 2039 | 2039 | c = e.uint.decode(d) |
| 2040 | 2040 | return { |
| 2041 | 2041 | memberKey: n, |
| … | … | @@ -2144,7 +2144,7 @@ const o = { |
| 2144 | 2144 | o.preencode(d, c.inviter), |
| 2145 | 2145 | d.end++, |
| 2146 | 2146 | c.identity && go.preencode(d, c.identity), |
| 2147 | n >= 20 && c.buildType && Vt.preencode(d, c.buildType)) | |
| 2147 | n >= 20 && c.buildType && Ut.preencode(d, c.buildType)) | |
| 2148 | 2148 | }, |
| 2149 | 2149 | encode(d, c) { |
| 2150 | 2150 | const t = (c.identity ? 1 : 0) | (n >= 20 && c.buildType ? 2 : 0) |
| … | … | @@ -2156,7 +2156,7 @@ const o = { |
| 2156 | 2156 | o.encode(d, c.inviter), |
| 2157 | 2157 | e.uint.encode(d, t), |
| 2158 | 2158 | c.identity && go.encode(d, c.identity), |
| 2159 | n >= 20 && c.buildType && Vt.encode(d, c.buildType)) | |
| 2159 | n >= 20 && c.buildType && Ut.encode(d, c.buildType)) | |
| 2160 | 2160 | }, |
| 2161 | 2161 | decode(d) { |
| 2162 | 2162 | const c = e.fixed32.decode(d), |
| … | … | @@ -2174,7 +2174,7 @@ const o = { |
| 2174 | 2174 | initiator: s, |
| 2175 | 2175 | inviter: p, |
| 2176 | 2176 | identity: 1 & u ? go.decode(d) : null, |
| 2177 | buildType: n >= 20 && 2 & u ? Vt.decode(d) : null, | |
| 2177 | buildType: n >= 20 && 2 & u ? Ut.decode(d) : null, | |
| 2178 | 2178 | } |
| 2179 | 2179 | }, |
| 2180 | 2180 | }, |
| … | … | @@ -2250,7 +2250,8 @@ const o = { |
| 2250 | 2250 | (o.isFullyMuted ? 2 : 0) | |
| 2251 | 2251 | (o.isMentionsOnlyMuted ? 4 : 0) | |
| 2252 | 2252 | (n >= 9 && o.isReadOnly ? 8 : 0) | |
| 2253 | (n >= 18 && o.isFavorite ? 16 : 0) | |
| 2253 | (n >= 18 && o.isFavorite ? 16 : 0) | | |
| 2254 | (n >= 21 && o.isUnread ? 32 : 0) | |
| 2254 | 2255 | e.uint.encode(d, c) |
| 2255 | 2256 | }, |
| 2256 | 2257 | decode(d) { |
| … | … | @@ -2261,23 +2262,24 @@ const o = { |
| 2261 | 2262 | isMentionsOnlyMuted: !!(4 & o), |
| 2262 | 2263 | isReadOnly: n >= 9 && !!(8 & o), |
| 2263 | 2264 | isFavorite: n >= 18 && !!(16 & o), |
| 2265 | isUnread: n >= 21 && !!(32 & o), | |
| 2264 | 2266 | } |
| 2265 | 2267 | }, |
| 2266 | 2268 | }, |
| 2267 | Fo = e.frame(Do), | |
| 2268 | Mo = e.frame(Co), | |
| 2269 | Mo = e.frame(Do), | |
| 2270 | Fo = e.frame(Co), | |
| 2269 | 2271 | qo = go, |
| 2270 | 2272 | Lo = { |
| 2271 | 2273 | preencode(d, c) { |
| 2272 | 2274 | ;(e.fixed32.preencode(d, c.roomKey), |
| 2273 | 2275 | e.buffer.preencode(d, c.encryptionKey), |
| 2274 | 2276 | e.fixed32.preencode(d, c.mailbox), |
| 2275 | Fo.preencode(d, c.status), | |
| 2277 | Mo.preencode(d, c.status), | |
| 2276 | 2278 | e.uint.preencode(d, c.clock), |
| 2277 | 2279 | d.end++, |
| 2278 | 2280 | c.initiator && o.preencode(d, c.initiator), |
| 2279 | 2281 | c.fastForwardTo && e.fixed32.preencode(d, c.fastForwardTo), |
| 2280 | c.identitySwap && Mo.preencode(d, c.identitySwap), | |
| 2282 | c.identitySwap && Fo.preencode(d, c.identitySwap), | |
| 2281 | 2283 | n >= 6 && c.identitySwapV2 && qo.preencode(d, c.identitySwapV2), |
| 2282 | 2284 | n >= 10 && c.contact && e.fixed32.preencode(d, c.contact)) |
| 2283 | 2285 | }, |
| … | … | @@ -2291,12 +2293,12 @@ const o = { |
| 2291 | 2293 | ;(e.fixed32.encode(d, c.roomKey), |
| 2292 | 2294 | e.buffer.encode(d, c.encryptionKey), |
| 2293 | 2295 | e.fixed32.encode(d, c.mailbox), |
| 2294 | Fo.encode(d, c.status), | |
| 2296 | Mo.encode(d, c.status), | |
| 2295 | 2297 | e.uint.encode(d, c.clock), |
| 2296 | 2298 | e.uint.encode(d, t), |
| 2297 | 2299 | c.initiator && o.encode(d, c.initiator), |
| 2298 | 2300 | c.fastForwardTo && e.fixed32.encode(d, c.fastForwardTo), |
| 2299 | c.identitySwap && Mo.encode(d, c.identitySwap), | |
| 2301 | c.identitySwap && Fo.encode(d, c.identitySwap), | |
| 2300 | 2302 | n >= 6 && c.identitySwapV2 && qo.encode(d, c.identitySwapV2), |
| 2301 | 2303 | n >= 10 && c.contact && e.fixed32.encode(d, c.contact)) |
| 2302 | 2304 | }, |
| … | … | @@ -2304,7 +2306,7 @@ const o = { |
| 2304 | 2306 | const c = e.fixed32.decode(d), |
| 2305 | 2307 | t = e.buffer.decode(d), |
| 2306 | 2308 | r = e.fixed32.decode(d), |
| 2307 | i = Fo.decode(d), | |
| 2309 | i = Mo.decode(d), | |
| 2308 | 2310 | a = e.uint.decode(d), |
| 2309 | 2311 | s = e.uint.decode(d) |
| 2310 | 2312 | return { |
| … | … | @@ -2315,7 +2317,7 @@ const o = { |
| 2315 | 2317 | clock: a, |
| 2316 | 2318 | initiator: 1 & s ? o.decode(d) : null, |
| 2317 | 2319 | fastForwardTo: 2 & s ? e.fixed32.decode(d) : null, |
| 2318 | identitySwap: 4 & s ? Mo.decode(d) : null, | |
| 2320 | identitySwap: 4 & s ? Fo.decode(d) : null, | |
| 2319 | 2321 | identitySwapV2: n >= 6 && 8 & s ? qo.decode(d) : null, |
| 2320 | 2322 | contact: n >= 10 && 16 & s ? e.fixed32.decode(d) : null, |
| 2321 | 2323 | } |
| … | … | @@ -2377,28 +2379,28 @@ const o = { |
| 2377 | 2379 | decode: (d) => ({ header: Bo.decode(d), discoveryKey: e.fixed32.decode(d) }), |
| 2378 | 2380 | }, |
| 2379 | 2381 | jo = _, |
| 2380 | Vo = Fo, | |
| 2381 | Oo = { | |
| 2382 | Uo = Mo, | |
| 2383 | Vo = { | |
| 2382 | 2384 | preencode(d, n) { |
| 2383 | 2385 | ;(jo.preencode(d, n.header), |
| 2384 | 2386 | e.fixed32.preencode(d, n.roomKey), |
| 2385 | 2387 | e.uint.preencode(d, n.key), |
| 2386 | Vo.preencode(d, n.status)) | |
| 2388 | Uo.preencode(d, n.status)) | |
| 2387 | 2389 | }, |
| 2388 | 2390 | encode(d, n) { |
| 2389 | 2391 | ;(jo.encode(d, n.header), |
| 2390 | 2392 | e.fixed32.encode(d, n.roomKey), |
| 2391 | 2393 | e.uint.encode(d, n.key), |
| 2392 | Vo.encode(d, n.status)) | |
| 2394 | Uo.encode(d, n.status)) | |
| 2393 | 2395 | }, |
| 2394 | 2396 | decode: (d) => ({ |
| 2395 | 2397 | header: jo.decode(d), |
| 2396 | 2398 | roomKey: e.fixed32.decode(d), |
| 2397 | 2399 | key: e.uint.decode(d), |
| 2398 | status: Vo.decode(d), | |
| 2400 | status: Uo.decode(d), | |
| 2399 | 2401 | }), |
| 2400 | 2402 | }, |
| 2401 | Jo = { | |
| 2403 | Oo = { | |
| 2402 | 2404 | preencode(e, d) { |
| 2403 | 2405 | e.end++ |
| 2404 | 2406 | }, |
| … | … | @@ -2408,11 +2410,11 @@ const o = { |
| 2408 | 2410 | }, |
| 2409 | 2411 | decode: (d) => ({ isBlocked: !!(1 & e.uint.decode(d)) }), |
| 2410 | 2412 | }, |
| 2411 | Uo = { | |
| 2413 | Jo = { | |
| 2412 | 2414 | preencode(d, n) { |
| 2413 | 2415 | ;(e.fixed32.preencode(d, n.memberKey), |
| 2414 | 2416 | e.uint.preencode(d, n.clock), |
| 2415 | yi.preencode(d, n.status), | |
| 2417 | xi.preencode(d, n.status), | |
| 2416 | 2418 | d.end++, |
| 2417 | 2419 | n.mailbox && e.fixed32.preencode(d, n.mailbox), |
| 2418 | 2420 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) |
| … | … | @@ -2421,7 +2423,7 @@ const o = { |
| 2421 | 2423 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) |
| 2422 | 2424 | ;(e.fixed32.encode(d, n.memberKey), |
| 2423 | 2425 | e.uint.encode(d, n.clock), |
| 2424 | yi.encode(d, n.status), | |
| 2426 | xi.encode(d, n.status), | |
| 2425 | 2427 | e.uint.encode(d, o), |
| 2426 | 2428 | n.mailbox && e.fixed32.encode(d, n.mailbox), |
| 2427 | 2429 | n.roomKey && e.fixed32.encode(d, n.roomKey)) |
| … | … | @@ -2429,7 +2431,7 @@ const o = { |
| 2429 | 2431 | decode(d) { |
| 2430 | 2432 | const n = e.fixed32.decode(d), |
| 2431 | 2433 | o = e.uint.decode(d), |
| 2432 | c = yi.decode(d), | |
| 2434 | c = xi.decode(d), | |
| 2433 | 2435 | t = e.uint.decode(d) |
| 2434 | 2436 | return { |
| 2435 | 2437 | memberKey: n, |
| … | … | @@ -2457,19 +2459,19 @@ const o = { |
| 2457 | 2459 | ;(Qo.preencode(d, n.header), |
| 2458 | 2460 | e.fixed32.preencode(d, n.memberKey), |
| 2459 | 2461 | e.uint.preencode(d, n.key), |
| 2460 | bi.preencode(d, n.status)) | |
| 2462 | ki.preencode(d, n.status)) | |
| 2461 | 2463 | }, |
| 2462 | 2464 | encode(d, n) { |
| 2463 | 2465 | ;(Qo.encode(d, n.header), |
| 2464 | 2466 | e.fixed32.encode(d, n.memberKey), |
| 2465 | 2467 | e.uint.encode(d, n.key), |
| 2466 | bi.encode(d, n.status)) | |
| 2468 | ki.encode(d, n.status)) | |
| 2467 | 2469 | }, |
| 2468 | 2470 | decode: (d) => ({ |
| 2469 | 2471 | header: Qo.decode(d), |
| 2470 | 2472 | memberKey: e.fixed32.decode(d), |
| 2471 | 2473 | key: e.uint.decode(d), |
| 2472 | status: bi.decode(d), | |
| 2474 | status: ki.decode(d), | |
| 2473 | 2475 | }), |
| 2474 | 2476 | }, |
| 2475 | 2477 | Xo = _, |
| … | … | @@ -2688,7 +2690,7 @@ const o = { |
| 2688 | 2690 | ;(mc.preencode(d, o.header), |
| 2689 | 2691 | c.preencode(d, o.oplog), |
| 2690 | 2692 | e.uint.preencode(d, o.index), |
| 2691 | xi.preencode(d, o.preview), | |
| 2693 | vi.preencode(d, o.preview), | |
| 2692 | 2694 | d.end++, |
| 2693 | 2695 | n >= 7 && o.displayType && Sc.preencode(d, o.displayType)) |
| 2694 | 2696 | }, |
| … | … | @@ -2697,7 +2699,7 @@ const o = { |
| 2697 | 2699 | ;(mc.encode(d, o.header), |
| 2698 | 2700 | c.encode(d, o.oplog), |
| 2699 | 2701 | e.uint.encode(d, o.index), |
| 2700 | xi.encode(d, o.preview), | |
| 2702 | vi.encode(d, o.preview), | |
| 2701 | 2703 | e.uint.encode(d, t), |
| 2702 | 2704 | n >= 7 && o.displayType && Sc.encode(d, o.displayType)) |
| 2703 | 2705 | }, |
| … | … | @@ -2705,7 +2707,7 @@ const o = { |
| 2705 | 2707 | const o = mc.decode(d), |
| 2706 | 2708 | t = c.decode(d), |
| 2707 | 2709 | r = e.uint.decode(d), |
| 2708 | i = xi.decode(d), | |
| 2710 | i = vi.decode(d), | |
| 2709 | 2711 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 2710 | 2712 | return { |
| 2711 | 2713 | header: o, |
| … | … | @@ -2864,29 +2866,29 @@ const o = { |
| 2864 | 2866 | }, |
| 2865 | 2867 | decode: (d) => ({ key: e.uint.decode(d), value: e.uint.decode(d) }), |
| 2866 | 2868 | }, |
| 2867 | Fc = _, | |
| 2868 | Mc = { | |
| 2869 | Mc = _, | |
| 2870 | Fc = { | |
| 2869 | 2871 | preencode(d, o) { |
| 2870 | ;(Fc.preencode(d, o.header), | |
| 2872 | ;(Mc.preencode(d, o.header), | |
| 2871 | 2873 | e.uint.preencode(d, o.from), |
| 2872 | 2874 | e.uint.preencode(d, o.to), |
| 2873 | 2875 | d.end++, |
| 2874 | n >= 20 && o.buildType && Vt.preencode(d, o.buildType)) | |
| 2876 | n >= 20 && o.buildType && Ut.preencode(d, o.buildType)) | |
| 2875 | 2877 | }, |
| 2876 | 2878 | encode(d, o) { |
| 2877 | 2879 | const c = n >= 20 && o.buildType ? 1 : 0 |
| 2878 | ;(Fc.encode(d, o.header), | |
| 2880 | ;(Mc.encode(d, o.header), | |
| 2879 | 2881 | e.uint.encode(d, o.from), |
| 2880 | 2882 | e.uint.encode(d, o.to), |
| 2881 | 2883 | e.uint.encode(d, c), |
| 2882 | n >= 20 && o.buildType && Vt.encode(d, o.buildType)) | |
| 2884 | n >= 20 && o.buildType && Ut.encode(d, o.buildType)) | |
| 2883 | 2885 | }, |
| 2884 | 2886 | decode(d) { |
| 2885 | const o = Fc.decode(d), | |
| 2887 | const o = Mc.decode(d), | |
| 2886 | 2888 | c = e.uint.decode(d), |
| 2887 | 2889 | t = e.uint.decode(d), |
| 2888 | 2890 | r = d.start < d.end ? e.uint.decode(d) : 0 |
| 2889 | return { header: o, from: c, to: t, buildType: n >= 20 && 1 & r ? Vt.decode(d) : null } | |
| 2891 | return { header: o, from: c, to: t, buildType: n >= 20 && 1 & r ? Ut.decode(d) : null } | |
| 2890 | 2892 | }, |
| 2891 | 2893 | }, |
| 2892 | 2894 | qc = { |
| … | … | @@ -2971,25 +2973,25 @@ const o = { |
| 2971 | 2973 | }, |
| 2972 | 2974 | decode: (d) => ({ deviceKey: e.fixed32.decode(d), key: e.fixed32.decode(d) }), |
| 2973 | 2975 | }, |
| 2974 | Vc = _, | |
| 2975 | Oc = { | |
| 2976 | Uc = _, | |
| 2977 | Vc = { | |
| 2976 | 2978 | preencode(d, n) { |
| 2977 | ;(Vc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2979 | ;(Uc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2978 | 2980 | }, |
| 2979 | 2981 | encode(d, n) { |
| 2980 | ;(Vc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2982 | ;(Uc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2981 | 2983 | }, |
| 2982 | decode: (d) => ({ header: Vc.decode(d), key: e.fixed32.decode(d) }), | |
| 2984 | decode: (d) => ({ header: Uc.decode(d), key: e.fixed32.decode(d) }), | |
| 2983 | 2985 | }, |
| 2984 | Jc = _, | |
| 2985 | Uc = { | |
| 2986 | Oc = _, | |
| 2987 | Jc = { | |
| 2986 | 2988 | preencode(d, n) { |
| 2987 | ;(Jc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2989 | ;(Oc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2988 | 2990 | }, |
| 2989 | 2991 | encode(d, n) { |
| 2990 | ;(Jc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2992 | ;(Oc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2991 | 2993 | }, |
| 2992 | decode: (d) => ({ header: Jc.decode(d), key: e.fixed32.decode(d) }), | |
| 2994 | decode: (d) => ({ header: Oc.decode(d), key: e.fixed32.decode(d) }), | |
| 2993 | 2995 | }, |
| 2994 | 2996 | Hc = { Flag: 1 }, |
| 2995 | 2997 | zc = { |
| … | … | @@ -3117,24 +3119,48 @@ const o = { |
| 3117 | 3119 | e.end++ |
| 3118 | 3120 | }, |
| 3119 | 3121 | encode(d, o) { |
| 3120 | const c = n >= 13 && o.disableReadReceipts ? 1 : 0 | |
| 3122 | const c = | |
| 3123 | (n >= 13 && o.disableReadReceipts ? 1 : 0) | (n >= 21 && o.stripAttachmentMetadata ? 2 : 0) | |
| 3121 | 3124 | e.uint.encode(d, c) |
| 3122 | 3125 | }, |
| 3123 | 3126 | decode(d) { |
| 3124 | 3127 | const o = e.uint.decode(d) |
| 3125 | return { disableReadReceipts: n >= 13 && !!(1 & o) } | |
| 3128 | return { | |
| 3129 | disableReadReceipts: n >= 13 && !!(1 & o), | |
| 3130 | stripAttachmentMetadata: n >= 21 && !!(2 & o), | |
| 3131 | } | |
| 3126 | 3132 | }, |
| 3127 | 3133 | }, |
| 3128 | tt = { disableReadReceipts: "disableReadReceipts" }, | |
| 3134 | tt = { | |
| 3135 | disableReadReceipts: "disableReadReceipts", | |
| 3136 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 3137 | }, | |
| 3129 | 3138 | rt = { |
| 3130 | 3139 | preencode(e, d) { |
| 3131 | 3140 | e.end++ |
| 3132 | 3141 | }, |
| 3133 | 3142 | encode(d, n) { |
| 3134 | if ("disableReadReceipts" !== n) throw new Error("Unknown enum") | |
| 3135 | e.uint.encode(d, 1) | |
| 3143 | switch (n) { | |
| 3144 | case "disableReadReceipts": | |
| 3145 | e.uint.encode(d, 1) | |
| 3146 | break | |
| 3147 | case "stripAttachmentMetadata": | |
| 3148 | e.uint.encode(d, 2) | |
| 3149 | break | |
| 3150 | default: | |
| 3151 | throw new Error("Unknown enum") | |
| 3152 | } | |
| 3153 | }, | |
| 3154 | decode(d) { | |
| 3155 | switch (e.uint.decode(d)) { | |
| 3156 | case 1: | |
| 3157 | return "disableReadReceipts" | |
| 3158 | case 2: | |
| 3159 | return "stripAttachmentMetadata" | |
| 3160 | default: | |
| 3161 | return null | |
| 3162 | } | |
| 3136 | 3163 | }, |
| 3137 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 3138 | 3164 | }, |
| 3139 | 3165 | it = _, |
| 3140 | 3166 | at = e.frame(ct), |
| … | … | @@ -3331,18 +3357,18 @@ const o = { |
| 3331 | 3357 | }, |
| 3332 | 3358 | decode: (d) => ({ header: Ct.decode(d), callKey: e.fixed32.decode(d) }), |
| 3333 | 3359 | }, |
| 3334 | Ft = _, | |
| 3335 | Mt = { | |
| 3360 | Mt = _, | |
| 3361 | Ft = { | |
| 3336 | 3362 | preencode(d, n) { |
| 3337 | ;(Ft.preencode(d, n.header), | |
| 3363 | ;(Mt.preencode(d, n.header), | |
| 3338 | 3364 | e.fixed32.preencode(d, n.callKey), |
| 3339 | 3365 | e.fixed32.preencode(d, n.streamKey)) |
| 3340 | 3366 | }, |
| 3341 | 3367 | encode(d, n) { |
| 3342 | ;(Ft.encode(d, n.header), e.fixed32.encode(d, n.callKey), e.fixed32.encode(d, n.streamKey)) | |
| 3368 | ;(Mt.encode(d, n.header), e.fixed32.encode(d, n.callKey), e.fixed32.encode(d, n.streamKey)) | |
| 3343 | 3369 | }, |
| 3344 | 3370 | decode: (d) => ({ |
| 3345 | header: Ft.decode(d), | |
| 3371 | header: Mt.decode(d), | |
| 3346 | 3372 | callKey: e.fixed32.decode(d), |
| 3347 | 3373 | streamKey: e.fixed32.decode(d), |
| 3348 | 3374 | }), |
| … | … | @@ -3472,7 +3498,7 @@ const o = { |
| 3472 | 3498 | }), |
| 3473 | 3499 | }, |
| 3474 | 3500 | jt = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, |
| 3475 | Vt = { | |
| 3501 | Ut = { | |
| 3476 | 3502 | preencode(e, d) { |
| 3477 | 3503 | e.end++ |
| 3478 | 3504 | }, |
| … | … | @@ -3504,64 +3530,85 @@ const o = { |
| 3504 | 3530 | } |
| 3505 | 3531 | }, |
| 3506 | 3532 | }, |
| 3507 | Ot = _, | |
| 3508 | Jt = { | |
| 3533 | Vt = _, | |
| 3534 | Ot = { | |
| 3509 | 3535 | preencode(e, d) { |
| 3510 | Ot.preencode(e, d.header) | |
| 3536 | Vt.preencode(e, d.header) | |
| 3511 | 3537 | }, |
| 3512 | 3538 | encode(e, d) { |
| 3513 | Ot.encode(e, d.header) | |
| 3539 | Vt.encode(e, d.header) | |
| 3514 | 3540 | }, |
| 3515 | decode: (e) => ({ header: Ot.decode(e) }), | |
| 3541 | decode: (e) => ({ header: Vt.decode(e) }), | |
| 3516 | 3542 | }, |
| 3517 | Ut = _, | |
| 3543 | Jt = _, | |
| 3518 | 3544 | Ht = { |
| 3519 | 3545 | preencode(e, d) { |
| 3520 | Ut.preencode(e, d.header) | |
| 3546 | Jt.preencode(e, d.header) | |
| 3521 | 3547 | }, |
| 3522 | 3548 | encode(e, d) { |
| 3523 | Ut.encode(e, d.header) | |
| 3549 | Jt.encode(e, d.header) | |
| 3524 | 3550 | }, |
| 3525 | decode: (e) => ({ header: Ut.decode(e) }), | |
| 3551 | decode: (e) => ({ header: Jt.decode(e) }), | |
| 3552 | }, | |
| 3553 | zt = _, | |
| 3554 | Gt = { | |
| 3555 | preencode(d, n) { | |
| 3556 | ;(zt.preencode(d, n.header), | |
| 3557 | e.fixed32.preencode(d, n.deviceKey), | |
| 3558 | e.buffer.preencode(d, n.deviceProof), | |
| 3559 | e.buffer.preencode(d, n.writerProof)) | |
| 3560 | }, | |
| 3561 | encode(d, n) { | |
| 3562 | ;(zt.encode(d, n.header), | |
| 3563 | e.fixed32.encode(d, n.deviceKey), | |
| 3564 | e.buffer.encode(d, n.deviceProof), | |
| 3565 | e.buffer.encode(d, n.writerProof)) | |
| 3566 | }, | |
| 3567 | decode: (d) => ({ | |
| 3568 | header: zt.decode(d), | |
| 3569 | deviceKey: e.fixed32.decode(d), | |
| 3570 | deviceProof: e.buffer.decode(d), | |
| 3571 | writerProof: e.buffer.decode(d), | |
| 3572 | }), | |
| 3526 | 3573 | }, |
| 3527 | zt = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({ key: null }) }, | |
| 3528 | Gt = he, | |
| 3529 | Qt = { | |
| 3574 | Qt = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({ key: null }) }, | |
| 3575 | Wt = he, | |
| 3576 | Xt = { | |
| 3530 | 3577 | preencode(d, n) { |
| 3531 | ;(e.fixed32.preencode(d, n.id), Gt.preencode(d, n.request)) | |
| 3578 | ;(e.fixed32.preencode(d, n.id), Wt.preencode(d, n.request)) | |
| 3532 | 3579 | }, |
| 3533 | 3580 | encode(d, n) { |
| 3534 | ;(e.fixed32.encode(d, n.id), Gt.encode(d, n.request)) | |
| 3581 | ;(e.fixed32.encode(d, n.id), Wt.encode(d, n.request)) | |
| 3535 | 3582 | }, |
| 3536 | decode: (d) => ({ deviceKey: null, id: e.fixed32.decode(d), request: Gt.decode(d) }), | |
| 3583 | decode: (d) => ({ deviceKey: null, id: e.fixed32.decode(d), request: Wt.decode(d) }), | |
| 3537 | 3584 | }, |
| 3538 | Wt = re, | |
| 3539 | Xt = ie, | |
| 3540 | Yt = { | |
| 3585 | Yt = re, | |
| 3586 | Zt = ie, | |
| 3587 | $t = { | |
| 3541 | 3588 | preencode(d, n) { |
| 3542 | 3589 | ;(e.fixed32.preencode(d, n.memberKey), |
| 3543 | Wt.preencode(d, n.status), | |
| 3544 | ki.preencode(d, n.profile), | |
| 3590 | Yt.preencode(d, n.status), | |
| 3591 | gi.preencode(d, n.profile), | |
| 3545 | 3592 | d.end++, |
| 3546 | n.invitation && Xt.preencode(d, n.invitation)) | |
| 3593 | n.invitation && Zt.preencode(d, n.invitation)) | |
| 3547 | 3594 | }, |
| 3548 | 3595 | encode(d, n) { |
| 3549 | 3596 | const o = n.invitation ? 1 : 0 |
| 3550 | 3597 | ;(e.fixed32.encode(d, n.memberKey), |
| 3551 | Wt.encode(d, n.status), | |
| 3552 | ki.encode(d, n.profile), | |
| 3598 | Yt.encode(d, n.status), | |
| 3599 | gi.encode(d, n.profile), | |
| 3553 | 3600 | e.uint.encode(d, o), |
| 3554 | n.invitation && Xt.encode(d, n.invitation)) | |
| 3601 | n.invitation && Zt.encode(d, n.invitation)) | |
| 3555 | 3602 | }, |
| 3556 | 3603 | decode: (d) => ({ |
| 3557 | 3604 | key: null, |
| 3558 | 3605 | memberKey: e.fixed32.decode(d), |
| 3559 | status: Wt.decode(d), | |
| 3560 | profile: ki.decode(d), | |
| 3561 | invitation: 1 & e.uint.decode(d) ? Xt.decode(d) : null, | |
| 3606 | status: Yt.decode(d), | |
| 3607 | profile: gi.decode(d), | |
| 3608 | invitation: 1 & e.uint.decode(d) ? Zt.decode(d) : null, | |
| 3562 | 3609 | }), |
| 3563 | 3610 | }, |
| 3564 | Zt = { | |
| 3611 | _t = { | |
| 3565 | 3612 | preencode(d, n) { |
| 3566 | 3613 | ;(d.end++, |
| 3567 | 3614 | n.profileAttestation && e.buffer.preencode(d, n.profileAttestation), |
| … | … | @@ -3582,18 +3629,18 @@ const o = { |
| 3582 | 3629 | } |
| 3583 | 3630 | }, |
| 3584 | 3631 | }, |
| 3585 | $t = ad, | |
| 3586 | _t = ue, | |
| 3587 | er = { | |
| 3632 | er = ad, | |
| 3633 | dr = ue, | |
| 3634 | nr = { | |
| 3588 | 3635 | preencode(e, d) { |
| 3589 | ;($t.preencode(e, d.status), _t.preencode(e, d.profile)) | |
| 3636 | ;(er.preencode(e, d.status), dr.preencode(e, d.profile)) | |
| 3590 | 3637 | }, |
| 3591 | 3638 | encode(e, d) { |
| 3592 | ;($t.encode(e, d.status), _t.encode(e, d.profile)) | |
| 3639 | ;(er.encode(e, d.status), dr.encode(e, d.profile)) | |
| 3593 | 3640 | }, |
| 3594 | decode: (e) => ({ key: null, status: $t.decode(e), profile: _t.decode(e) }), | |
| 3641 | decode: (e) => ({ key: null, status: er.decode(e), profile: dr.decode(e) }), | |
| 3595 | 3642 | }, |
| 3596 | dr = { | |
| 3643 | or = { | |
| 3597 | 3644 | preencode(d, n) { |
| 3598 | 3645 | e.uint.preencode(d, n.mentions) |
| 3599 | 3646 | }, |
| … | … | @@ -3602,25 +3649,25 @@ const o = { |
| 3602 | 3649 | }, |
| 3603 | 3650 | decode: (d) => ({ key: null, mentions: e.uint.decode(d) }), |
| 3604 | 3651 | }, |
| 3605 | nr = Ce, | |
| 3606 | or = Le, | |
| 3607 | cr = { | |
| 3652 | cr = Ce, | |
| 3653 | tr = Le, | |
| 3654 | rr = { | |
| 3608 | 3655 | preencode(e, d) { |
| 3609 | ;(nr.preencode(e, d.response), | |
| 3610 | or.preencode(e, d.metadata), | |
| 3656 | ;(cr.preencode(e, d.response), | |
| 3657 | tr.preencode(e, d.metadata), | |
| 3611 | 3658 | e.end++, |
| 3612 | 3659 | d.anchor && o.preencode(e, d.anchor)) |
| 3613 | 3660 | }, |
| 3614 | 3661 | encode(d, n) { |
| 3615 | 3662 | const c = (n.anchor ? 1 : 0) | (n.isActive ? 2 : 0) |
| 3616 | ;(nr.encode(d, n.response), | |
| 3617 | or.encode(d, n.metadata), | |
| 3663 | ;(cr.encode(d, n.response), | |
| 3664 | tr.encode(d, n.metadata), | |
| 3618 | 3665 | e.uint.encode(d, c), |
| 3619 | 3666 | n.anchor && o.encode(d, n.anchor)) |
| 3620 | 3667 | }, |
| 3621 | 3668 | decode(d) { |
| 3622 | const n = nr.decode(d), | |
| 3623 | c = or.decode(d), | |
| 3669 | const n = cr.decode(d), | |
| 3670 | c = tr.decode(d), | |
| 3624 | 3671 | t = e.uint.decode(d) |
| 3625 | 3672 | return { |
| 3626 | 3673 | id: null, |
| … | … | @@ -3631,20 +3678,20 @@ const o = { |
| 3631 | 3678 | } |
| 3632 | 3679 | }, |
| 3633 | 3680 | }, |
| 3634 | tr = mn, | |
| 3635 | rr = { | |
| 3681 | ir = mn, | |
| 3682 | ar = { | |
| 3636 | 3683 | preencode(d, n) { |
| 3637 | 3684 | ;(e.uint.preencode(d, n.count), |
| 3638 | 3685 | d.end++, |
| 3639 | 3686 | n.parent && c.preencode(d, n.parent), |
| 3640 | n.stats && tr.preencode(d, n.stats)) | |
| 3687 | n.stats && ir.preencode(d, n.stats)) | |
| 3641 | 3688 | }, |
| 3642 | 3689 | encode(d, n) { |
| 3643 | 3690 | const o = (n.parent ? 1 : 0) | (n.stats ? 2 : 0) |
| 3644 | 3691 | ;(e.uint.encode(d, n.count), |
| 3645 | 3692 | e.uint.encode(d, o), |
| 3646 | 3693 | n.parent && c.encode(d, n.parent), |
| 3647 | n.stats && tr.encode(d, n.stats)) | |
| 3694 | n.stats && ir.encode(d, n.stats)) | |
| 3648 | 3695 | }, |
| 3649 | 3696 | decode(d) { |
| 3650 | 3697 | const n = e.uint.decode(d), |
| … | … | @@ -3653,15 +3700,15 @@ const o = { |
| 3653 | 3700 | id: 0, |
| 3654 | 3701 | count: n, |
| 3655 | 3702 | parent: 1 & o ? c.decode(d) : null, |
| 3656 | stats: 2 & o ? tr.decode(d) : null, | |
| 3703 | stats: 2 & o ? ir.decode(d) : null, | |
| 3657 | 3704 | } |
| 3658 | 3705 | }, |
| 3659 | 3706 | }, |
| 3660 | ir = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({ thread: 0, index: 0 }) }, | |
| 3661 | ar = bn, | |
| 3662 | sr = xn, | |
| 3663 | pr = kn, | |
| 3664 | ur = { | |
| 3707 | sr = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({ thread: 0, index: 0 }) }, | |
| 3708 | pr = bn, | |
| 3709 | ur = xn, | |
| 3710 | lr = kn, | |
| 3711 | fr = { | |
| 3665 | 3712 | preencode(d, n) { |
| 3666 | 3713 | ;(fn.preencode(d, n.id), |
| 3667 | 3714 | c.preencode(d, n.oplog), |
| … | … | @@ -3669,9 +3716,9 @@ const o = { |
| 3669 | 3716 | e.uint.preencode(d, n.timestamp), |
| 3670 | 3717 | d.end++, |
| 3671 | 3718 | n.editedAt && e.uint.preencode(d, n.editedAt), |
| 3672 | ar.preencode(d, n.status), | |
| 3673 | n.message && sr.preencode(d, n.message), | |
| 3674 | n.event && pr.preencode(d, n.event)) | |
| 3719 | pr.preencode(d, n.status), | |
| 3720 | n.message && ur.preencode(d, n.message), | |
| 3721 | n.event && lr.preencode(d, n.event)) | |
| 3675 | 3722 | }, |
| 3676 | 3723 | encode(d, n) { |
| 3677 | 3724 | const o = (n.editedAt ? 1 : 0) | (n.message ? 2 : 0) | (n.event ? 4 : 0) |
| … | … | @@ -3681,9 +3728,9 @@ const o = { |
| 3681 | 3728 | e.uint.encode(d, n.timestamp), |
| 3682 | 3729 | e.uint.encode(d, o), |
| 3683 | 3730 | n.editedAt && e.uint.encode(d, n.editedAt), |
| 3684 | ar.encode(d, n.status), | |
| 3685 | n.message && sr.encode(d, n.message), | |
| 3686 | n.event && pr.encode(d, n.event)) | |
| 3731 | pr.encode(d, n.status), | |
| 3732 | n.message && ur.encode(d, n.message), | |
| 3733 | n.event && lr.encode(d, n.event)) | |
| 3687 | 3734 | }, |
| 3688 | 3735 | decode(d) { |
| 3689 | 3736 | const n = fn.decode(d), |
| … | … | @@ -3697,19 +3744,19 @@ const o = { |
| 3697 | 3744 | clock: t, |
| 3698 | 3745 | timestamp: r, |
| 3699 | 3746 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 3700 | status: ar.decode(d), | |
| 3701 | message: 2 & i ? sr.decode(d) : null, | |
| 3702 | event: 4 & i ? pr.decode(d) : null, | |
| 3747 | status: pr.decode(d), | |
| 3748 | message: 2 & i ? ur.decode(d) : null, | |
| 3749 | event: 4 & i ? lr.decode(d) : null, | |
| 3703 | 3750 | } |
| 3704 | 3751 | }, |
| 3705 | 3752 | }, |
| 3706 | lr = ir, | |
| 3707 | fr = En, | |
| 3708 | mr = { | |
| 3753 | mr = sr, | |
| 3754 | yr = En, | |
| 3755 | br = { | |
| 3709 | 3756 | preencode(d, o) { |
| 3710 | 3757 | ;(fn.preencode(d, o.id), |
| 3711 | 3758 | e.uint.preencode(d, o.total), |
| 3712 | fr.preencode(d, o.reactions), | |
| 3759 | yr.preencode(d, o.reactions), | |
| 3713 | 3760 | d.end++, |
| 3714 | 3761 | n >= 11 && o.editedAt && e.uint.preencode(d, o.editedAt)) |
| 3715 | 3762 | }, |
| … | … | @@ -3717,20 +3764,20 @@ const o = { |
| 3717 | 3764 | const c = n >= 11 && o.editedAt ? 1 : 0 |
| 3718 | 3765 | ;(fn.encode(d, o.id), |
| 3719 | 3766 | e.uint.encode(d, o.total), |
| 3720 | fr.encode(d, o.reactions), | |
| 3767 | yr.encode(d, o.reactions), | |
| 3721 | 3768 | e.uint.encode(d, c), |
| 3722 | 3769 | n >= 11 && o.editedAt && e.uint.encode(d, o.editedAt)) |
| 3723 | 3770 | }, |
| 3724 | 3771 | decode(d) { |
| 3725 | 3772 | const o = fn.decode(d), |
| 3726 | 3773 | c = e.uint.decode(d), |
| 3727 | t = fr.decode(d), | |
| 3774 | t = yr.decode(d), | |
| 3728 | 3775 | r = d.start < d.end ? e.uint.decode(d) : 0 |
| 3729 | 3776 | return { id: o, total: c, reactions: t, editedAt: n >= 11 && 1 & r ? e.uint.decode(d) : 0 } |
| 3730 | 3777 | }, |
| 3731 | 3778 | }, |
| 3732 | yr = ir, | |
| 3733 | br = { | |
| 3779 | xr = sr, | |
| 3780 | kr = { | |
| 3734 | 3781 | preencode(d, n) { |
| 3735 | 3782 | ;(fn.preencode(d, n.id), e.uint.preencode(d, n.clock)) |
| 3736 | 3783 | }, |
| … | … | @@ -3739,28 +3786,28 @@ const o = { |
| 3739 | 3786 | }, |
| 3740 | 3787 | decode: (d) => ({ id: fn.decode(d), sender: null, clock: e.uint.decode(d), reaction: null }), |
| 3741 | 3788 | }, |
| 3742 | xr = P, | |
| 3743 | kr = h, | |
| 3744 | vr = { | |
| 3789 | vr = P, | |
| 3790 | gr = h, | |
| 3791 | hr = { | |
| 3745 | 3792 | preencode(d, o) { |
| 3746 | 3793 | ;(c.preencode(d, o.oplog), |
| 3747 | xr.preencode(d, o.status), | |
| 3748 | kr.preencode(d, o.file), | |
| 3794 | vr.preencode(d, o.status), | |
| 3795 | gr.preencode(d, o.file), | |
| 3749 | 3796 | d.end++, |
| 3750 | 3797 | n >= 14 && o.version && e.uint.preencode(d, o.version)) |
| 3751 | 3798 | }, |
| 3752 | 3799 | encode(d, o) { |
| 3753 | 3800 | const t = n >= 14 && o.version ? 1 : 0 |
| 3754 | 3801 | ;(c.encode(d, o.oplog), |
| 3755 | xr.encode(d, o.status), | |
| 3756 | kr.encode(d, o.file), | |
| 3802 | vr.encode(d, o.status), | |
| 3803 | gr.encode(d, o.file), | |
| 3757 | 3804 | e.uint.encode(d, t), |
| 3758 | 3805 | n >= 14 && o.version && e.uint.encode(d, o.version)) |
| 3759 | 3806 | }, |
| 3760 | 3807 | decode(d) { |
| 3761 | 3808 | const o = c.decode(d), |
| 3762 | t = xr.decode(d), | |
| 3763 | r = kr.decode(d), | |
| 3809 | t = vr.decode(d), | |
| 3810 | r = gr.decode(d), | |
| 3764 | 3811 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 3765 | 3812 | return { |
| 3766 | 3813 | id: 0, |
| … | … | @@ -3771,8 +3818,8 @@ const o = { |
| 3771 | 3818 | } |
| 3772 | 3819 | }, |
| 3773 | 3820 | }, |
| 3774 | gr = go, | |
| 3775 | hr = { | |
| 3821 | Kr = go, | |
| 3822 | wr = { | |
| 3776 | 3823 | preencode(d, c) { |
| 3777 | 3824 | ;(e.fixed32.preencode(d, c.invitationSeed), |
| 3778 | 3825 | e.fixed32.preencode(d, c.mailbox), |
| … | … | @@ -3780,8 +3827,8 @@ const o = { |
| 3780 | 3827 | o.preencode(d, c.initiator), |
| 3781 | 3828 | o.preencode(d, c.inviter), |
| 3782 | 3829 | d.end++, |
| 3783 | c.identity && gr.preencode(d, c.identity), | |
| 3784 | n >= 20 && c.buildType && Vt.preencode(d, c.buildType)) | |
| 3830 | c.identity && Kr.preencode(d, c.identity), | |
| 3831 | n >= 20 && c.buildType && Ut.preencode(d, c.buildType)) | |
| 3785 | 3832 | }, |
| 3786 | 3833 | encode(d, c) { |
| 3787 | 3834 | const t = (c.identity ? 1 : 0) | (n >= 20 && c.buildType ? 2 : 0) |
| … | … | @@ -3791,8 +3838,8 @@ const o = { |
| 3791 | 3838 | o.encode(d, c.initiator), |
| 3792 | 3839 | o.encode(d, c.inviter), |
| 3793 | 3840 | e.uint.encode(d, t), |
| 3794 | c.identity && gr.encode(d, c.identity), | |
| 3795 | n >= 20 && c.buildType && Vt.encode(d, c.buildType)) | |
| 3841 | c.identity && Kr.encode(d, c.identity), | |
| 3842 | n >= 20 && c.buildType && Ut.encode(d, c.buildType)) | |
| 3796 | 3843 | }, |
| 3797 | 3844 | decode(d) { |
| 3798 | 3845 | const c = e.fixed32.decode(d), |
| … | … | @@ -3808,25 +3855,25 @@ const o = { |
| 3808 | 3855 | responseKeyPair: i, |
| 3809 | 3856 | initiator: a, |
| 3810 | 3857 | inviter: s, |
| 3811 | identity: 1 & p ? gr.decode(d) : null, | |
| 3812 | buildType: n >= 20 && 2 & p ? Vt.decode(d) : null, | |
| 3858 | identity: 1 & p ? Kr.decode(d) : null, | |
| 3859 | buildType: n >= 20 && 2 & p ? Ut.decode(d) : null, | |
| 3813 | 3860 | } |
| 3814 | 3861 | }, |
| 3815 | 3862 | }, |
| 3816 | Kr = Fo, | |
| 3817 | wr = Mo, | |
| 3818 | Ar = go, | |
| 3819 | Tr = { | |
| 3863 | Ar = Mo, | |
| 3864 | Tr = Fo, | |
| 3865 | Pr = go, | |
| 3866 | Sr = { | |
| 3820 | 3867 | preencode(d, c) { |
| 3821 | 3868 | ;(e.buffer.preencode(d, c.encryptionKey), |
| 3822 | 3869 | e.fixed32.preencode(d, c.mailbox), |
| 3823 | Kr.preencode(d, c.status), | |
| 3870 | Ar.preencode(d, c.status), | |
| 3824 | 3871 | e.uint.preencode(d, c.clock), |
| 3825 | 3872 | d.end++, |
| 3826 | 3873 | c.initiator && o.preencode(d, c.initiator), |
| 3827 | 3874 | c.fastForwardTo && e.fixed32.preencode(d, c.fastForwardTo), |
| 3828 | c.identitySwap && wr.preencode(d, c.identitySwap), | |
| 3829 | n >= 6 && c.identitySwapV2 && Ar.preencode(d, c.identitySwapV2), | |
| 3875 | c.identitySwap && Tr.preencode(d, c.identitySwap), | |
| 3876 | n >= 6 && c.identitySwapV2 && Pr.preencode(d, c.identitySwapV2), | |
| 3830 | 3877 | n >= 10 && c.contact && e.fixed32.preencode(d, c.contact)) |
| 3831 | 3878 | }, |
| 3832 | 3879 | encode(d, c) { |
| … | … | @@ -3838,19 +3885,19 @@ const o = { |
| 3838 | 3885 | (n >= 10 && c.contact ? 16 : 0) |
| 3839 | 3886 | ;(e.buffer.encode(d, c.encryptionKey), |
| 3840 | 3887 | e.fixed32.encode(d, c.mailbox), |
| 3841 | Kr.encode(d, c.status), | |
| 3888 | Ar.encode(d, c.status), | |
| 3842 | 3889 | e.uint.encode(d, c.clock), |
| 3843 | 3890 | e.uint.encode(d, t), |
| 3844 | 3891 | c.initiator && o.encode(d, c.initiator), |
| 3845 | 3892 | c.fastForwardTo && e.fixed32.encode(d, c.fastForwardTo), |
| 3846 | c.identitySwap && wr.encode(d, c.identitySwap), | |
| 3847 | n >= 6 && c.identitySwapV2 && Ar.encode(d, c.identitySwapV2), | |
| 3893 | c.identitySwap && Tr.encode(d, c.identitySwap), | |
| 3894 | n >= 6 && c.identitySwapV2 && Pr.encode(d, c.identitySwapV2), | |
| 3848 | 3895 | n >= 10 && c.contact && e.fixed32.encode(d, c.contact)) |
| 3849 | 3896 | }, |
| 3850 | 3897 | decode(d) { |
| 3851 | 3898 | const c = e.buffer.decode(d), |
| 3852 | 3899 | t = e.fixed32.decode(d), |
| 3853 | r = Kr.decode(d), | |
| 3900 | r = Ar.decode(d), | |
| 3854 | 3901 | i = e.uint.decode(d), |
| 3855 | 3902 | a = e.uint.decode(d) |
| 3856 | 3903 | return { |
| … | … | @@ -3861,16 +3908,16 @@ const o = { |
| 3861 | 3908 | clock: i, |
| 3862 | 3909 | initiator: 1 & a ? o.decode(d) : null, |
| 3863 | 3910 | fastForwardTo: 2 & a ? e.fixed32.decode(d) : null, |
| 3864 | identitySwap: 4 & a ? wr.decode(d) : null, | |
| 3865 | identitySwapV2: n >= 6 && 8 & a ? Ar.decode(d) : null, | |
| 3911 | identitySwap: 4 & a ? Tr.decode(d) : null, | |
| 3912 | identitySwapV2: n >= 6 && 8 & a ? Pr.decode(d) : null, | |
| 3866 | 3913 | contact: n >= 10 && 16 & a ? e.fixed32.decode(d) : null, |
| 3867 | 3914 | } |
| 3868 | 3915 | }, |
| 3869 | 3916 | }, |
| 3870 | Pr = { | |
| 3917 | Rr = { | |
| 3871 | 3918 | preencode(d, n) { |
| 3872 | 3919 | ;(e.uint.preencode(d, n.clock), |
| 3873 | vi.preencode(d, n.status), | |
| 3920 | hi.preencode(d, n.status), | |
| 3874 | 3921 | d.end++, |
| 3875 | 3922 | n.mailbox && e.fixed32.preencode(d, n.mailbox), |
| 3876 | 3923 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) |
| … | … | @@ -3878,14 +3925,14 @@ const o = { |
| 3878 | 3925 | encode(d, n) { |
| 3879 | 3926 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) |
| 3880 | 3927 | ;(e.uint.encode(d, n.clock), |
| 3881 | vi.encode(d, n.status), | |
| 3928 | hi.encode(d, n.status), | |
| 3882 | 3929 | e.uint.encode(d, o), |
| 3883 | 3930 | n.mailbox && e.fixed32.encode(d, n.mailbox), |
| 3884 | 3931 | n.roomKey && e.fixed32.encode(d, n.roomKey)) |
| 3885 | 3932 | }, |
| 3886 | 3933 | decode(d) { |
| 3887 | 3934 | const n = e.uint.decode(d), |
| 3888 | o = vi.decode(d), | |
| 3935 | o = hi.decode(d), | |
| 3889 | 3936 | c = e.uint.decode(d) |
| 3890 | 3937 | return { |
| 3891 | 3938 | memberKey: null, |
| … | … | @@ -3896,15 +3943,15 @@ const o = { |
| 3896 | 3943 | } |
| 3897 | 3944 | }, |
| 3898 | 3945 | }, |
| 3899 | Sr = ue, | |
| 3900 | Rr = cc, | |
| 3901 | Cr = _o, | |
| 3902 | Dr = { | |
| 3946 | Cr = ue, | |
| 3947 | Dr = cc, | |
| 3948 | Mr = _o, | |
| 3949 | Fr = { | |
| 3903 | 3950 | preencode(d, o) { |
| 3904 | 3951 | ;(e.uint.preencode(d, o.clock), |
| 3905 | Sr.preencode(d, o.sender), | |
| 3906 | Rr.preencode(d, o.status), | |
| 3907 | Cr.preencode(d, o.keys), | |
| 3952 | Cr.preencode(d, o.sender), | |
| 3953 | Dr.preencode(d, o.status), | |
| 3954 | Mr.preencode(d, o.keys), | |
| 3908 | 3955 | e.fixed32.preencode(d, o.mailbox), |
| 3909 | 3956 | d.end++, |
| 3910 | 3957 | o.message && e.string.preencode(d, o.message), |
| … | … | @@ -3913,9 +3960,9 @@ const o = { |
| 3913 | 3960 | encode(d, o) { |
| 3914 | 3961 | const c = (o.message ? 1 : 0) | (n >= 11 && o.sentAt ? 2 : 0) |
| 3915 | 3962 | ;(e.uint.encode(d, o.clock), |
| 3916 | Sr.encode(d, o.sender), | |
| 3917 | Rr.encode(d, o.status), | |
| 3918 | Cr.encode(d, o.keys), | |
| 3963 | Cr.encode(d, o.sender), | |
| 3964 | Dr.encode(d, o.status), | |
| 3965 | Mr.encode(d, o.keys), | |
| 3919 | 3966 | e.fixed32.encode(d, o.mailbox), |
| 3920 | 3967 | e.uint.encode(d, c), |
| 3921 | 3968 | o.message && e.string.encode(d, o.message), |
| … | … | @@ -3923,9 +3970,9 @@ const o = { |
| 3923 | 3970 | }, |
| 3924 | 3971 | decode(d) { |
| 3925 | 3972 | const o = e.uint.decode(d), |
| 3926 | c = Sr.decode(d), | |
| 3927 | t = Rr.decode(d), | |
| 3928 | r = Cr.decode(d), | |
| 3973 | c = Cr.decode(d), | |
| 3974 | t = Dr.decode(d), | |
| 3975 | r = Mr.decode(d), | |
| 3929 | 3976 | i = e.fixed32.decode(d), |
| 3930 | 3977 | a = e.uint.decode(d) |
| 3931 | 3978 | return { |
| … | … | @@ -3940,7 +3987,7 @@ const o = { |
| 3940 | 3987 | } |
| 3941 | 3988 | }, |
| 3942 | 3989 | }, |
| 3943 | Fr = { | |
| 3990 | qr = { | |
| 3944 | 3991 | preencode(d, n) { |
| 3945 | 3992 | e.uint.preencode(d, n.value) |
| 3946 | 3993 | }, |
| … | … | @@ -3949,7 +3996,7 @@ const o = { |
| 3949 | 3996 | }, |
| 3950 | 3997 | decode: (d) => ({ key: 0, value: e.uint.decode(d) }), |
| 3951 | 3998 | }, |
| 3952 | Mr = { | |
| 3999 | Lr = { | |
| 3953 | 4000 | preencode(d, n) { |
| 3954 | 4001 | ;(ce.preencode(d, n.privateProfileIdentity), e.buffer.preencode(d, n.deviceProof)) |
| 3955 | 4002 | }, |
| … | … | @@ -3962,7 +4009,7 @@ const o = { |
| 3962 | 4009 | deviceProof: e.buffer.decode(d), |
| 3963 | 4010 | }), |
| 3964 | 4011 | }, |
| 3965 | qr = { | |
| 4012 | Ir = { | |
| 3966 | 4013 | preencode(d, n) { |
| 3967 | 4014 | ;(d.end++, |
| 3968 | 4015 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), |
| … | … | @@ -3983,15 +4030,15 @@ const o = { |
| 3983 | 4030 | } |
| 3984 | 4031 | }, |
| 3985 | 4032 | }, |
| 3986 | Lr = ue, | |
| 3987 | Ir = cc, | |
| 3988 | Er = _o, | |
| 3989 | Br = { | |
| 4033 | Er = ue, | |
| 4034 | Br = cc, | |
| 4035 | Nr = _o, | |
| 4036 | jr = { | |
| 3990 | 4037 | preencode(d, o) { |
| 3991 | 4038 | ;(e.uint.preencode(d, o.clock), |
| 3992 | Lr.preencode(d, o.sender), | |
| 3993 | Ir.preencode(d, o.status), | |
| 3994 | Er.preencode(d, o.keys), | |
| 4039 | Er.preencode(d, o.sender), | |
| 4040 | Br.preencode(d, o.status), | |
| 4041 | Nr.preencode(d, o.keys), | |
| 3995 | 4042 | e.fixed32.preencode(d, o.mailbox), |
| 3996 | 4043 | d.end++, |
| 3997 | 4044 | o.message && e.string.preencode(d, o.message), |
| … | … | @@ -4000,9 +4047,9 @@ const o = { |
| 4000 | 4047 | encode(d, o) { |
| 4001 | 4048 | const c = (o.message ? 1 : 0) | (n >= 11 && o.sentAt ? 2 : 0) |
| 4002 | 4049 | ;(e.uint.encode(d, o.clock), |
| 4003 | Lr.encode(d, o.sender), | |
| 4004 | Ir.encode(d, o.status), | |
| 4005 | Er.encode(d, o.keys), | |
| 4050 | Er.encode(d, o.sender), | |
| 4051 | Br.encode(d, o.status), | |
| 4052 | Nr.encode(d, o.keys), | |
| 4006 | 4053 | e.fixed32.encode(d, o.mailbox), |
| 4007 | 4054 | e.uint.encode(d, c), |
| 4008 | 4055 | o.message && e.string.encode(d, o.message), |
| … | … | @@ -4010,9 +4057,9 @@ const o = { |
| 4010 | 4057 | }, |
| 4011 | 4058 | decode(d) { |
| 4012 | 4059 | const o = e.uint.decode(d), |
| 4013 | c = Lr.decode(d), | |
| 4014 | t = Ir.decode(d), | |
| 4015 | r = Er.decode(d), | |
| 4060 | c = Er.decode(d), | |
| 4061 | t = Br.decode(d), | |
| 4062 | r = Nr.decode(d), | |
| 4016 | 4063 | i = e.fixed32.decode(d), |
| 4017 | 4064 | a = e.uint.decode(d) |
| 4018 | 4065 | return { |
| … | … | @@ -4027,7 +4074,7 @@ const o = { |
| 4027 | 4074 | } |
| 4028 | 4075 | }, |
| 4029 | 4076 | }, |
| 4030 | Nr = { | |
| 4077 | Ur = { | |
| 4031 | 4078 | preencode(d, n) { |
| 4032 | 4079 | e.fixed32.preencode(d, n.key) |
| 4033 | 4080 | }, |
| … | … | @@ -4036,8 +4083,8 @@ const o = { |
| 4036 | 4083 | }, |
| 4037 | 4084 | decode: (d) => ({ deviceKey: null, key: e.fixed32.decode(d) }), |
| 4038 | 4085 | }, |
| 4039 | jr = ir, | |
| 4040 | Vr = { | |
| 4086 | Vr = sr, | |
| 4087 | Or = { | |
| 4041 | 4088 | preencode(d, n) { |
| 4042 | 4089 | ;(fn.preencode(d, n.id), e.uint.preencode(d, n.clock)) |
| 4043 | 4090 | }, |
| … | … | @@ -4046,13 +4093,13 @@ const o = { |
| 4046 | 4093 | }, |
| 4047 | 4094 | decode: (d) => ({ id: fn.decode(d), sender: null, clock: e.uint.decode(d), label: 0 }), |
| 4048 | 4095 | }, |
| 4049 | Or = ir, | |
| 4050 | Jr = $c, | |
| 4051 | Ur = { | |
| 4096 | Jr = sr, | |
| 4097 | Hr = $c, | |
| 4098 | zr = { | |
| 4052 | 4099 | preencode(d, o) { |
| 4053 | 4100 | ;(fn.preencode(d, o.id), |
| 4054 | 4101 | e.uint.preencode(d, o.total), |
| 4055 | Jr.preencode(d, o.labels), | |
| 4102 | Hr.preencode(d, o.labels), | |
| 4056 | 4103 | e.uint.preencode(d, o.editedAt), |
| 4057 | 4104 | d.end++, |
| 4058 | 4105 | n >= 15 && o.flagsClock && e.uint.preencode(d, o.flagsClock), |
| … | … | @@ -4065,7 +4112,7 @@ const o = { |
| 4065 | 4112 | (n >= 16 && o.isDeleted ? 4 : 0) |
| 4066 | 4113 | ;(fn.encode(d, o.id), |
| 4067 | 4114 | e.uint.encode(d, o.total), |
| 4068 | Jr.encode(d, o.labels), | |
| 4115 | Hr.encode(d, o.labels), | |
| 4069 | 4116 | e.uint.encode(d, o.editedAt), |
| 4070 | 4117 | e.uint.encode(d, c), |
| 4071 | 4118 | n >= 15 && o.flagsClock && e.uint.encode(d, o.flagsClock), |
| … | … | @@ -4074,7 +4121,7 @@ const o = { |
| 4074 | 4121 | decode(d) { |
| 4075 | 4122 | const o = fn.decode(d), |
| 4076 | 4123 | c = e.uint.decode(d), |
| 4077 | t = Jr.decode(d), | |
| 4124 | t = Hr.decode(d), | |
| 4078 | 4125 | r = e.uint.decode(d), |
| 4079 | 4126 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 4080 | 4127 | return { |
| … | … | @@ -4088,7 +4135,7 @@ const o = { |
| 4088 | 4135 | } |
| 4089 | 4136 | }, |
| 4090 | 4137 | }, |
| 4091 | Hr = { | |
| 4138 | Gr = { | |
| 4092 | 4139 | preencode(d, n) { |
| 4093 | 4140 | e.uint.preencode(d, n.length) |
| 4094 | 4141 | }, |
| … | … | @@ -4097,8 +4144,8 @@ const o = { |
| 4097 | 4144 | }, |
| 4098 | 4145 | decode: (d) => ({ memberKey: null, length: e.uint.decode(d) }), |
| 4099 | 4146 | }, |
| 4100 | zr = zt, | |
| 4101 | Gr = { | |
| 4147 | Qr = Qt, | |
| 4148 | Wr = { | |
| 4102 | 4149 | preencode(d, n) { |
| 4103 | 4150 | e.uint.preencode(d, n.clock) |
| 4104 | 4151 | }, |
| … | … | @@ -4107,29 +4154,29 @@ const o = { |
| 4107 | 4154 | }, |
| 4108 | 4155 | decode: (d) => ({ key: null, sender: null, clock: e.uint.decode(d), label: 0 }), |
| 4109 | 4156 | }, |
| 4110 | Qr = bt, | |
| 4111 | Wr = { | |
| 4157 | Xr = bt, | |
| 4158 | Yr = { | |
| 4112 | 4159 | preencode(d, n) { |
| 4113 | 4160 | ;(e.uint.preencode(d, n.total), |
| 4114 | Qr.preencode(d, n.labels), | |
| 4161 | Xr.preencode(d, n.labels), | |
| 4115 | 4162 | e.uint.preencode(d, n.editedAt), |
| 4116 | 4163 | e.uint.preencode(d, n.flagsClock)) |
| 4117 | 4164 | }, |
| 4118 | 4165 | encode(d, n) { |
| 4119 | 4166 | ;(e.uint.encode(d, n.total), |
| 4120 | Qr.encode(d, n.labels), | |
| 4167 | Xr.encode(d, n.labels), | |
| 4121 | 4168 | e.uint.encode(d, n.editedAt), |
| 4122 | 4169 | e.uint.encode(d, n.flagsClock)) |
| 4123 | 4170 | }, |
| 4124 | 4171 | decode: (d) => ({ |
| 4125 | 4172 | key: null, |
| 4126 | 4173 | total: e.uint.decode(d), |
| 4127 | labels: Qr.decode(d), | |
| 4174 | labels: Xr.decode(d), | |
| 4128 | 4175 | editedAt: e.uint.decode(d), |
| 4129 | 4176 | flagsClock: e.uint.decode(d), |
| 4130 | 4177 | }), |
| 4131 | 4178 | }, |
| 4132 | Xr = { | |
| 4179 | Zr = { | |
| 4133 | 4180 | preencode(d, o) { |
| 4134 | 4181 | ;(e.buffer.preencode(d, o.encryptionKey), |
| 4135 | 4182 | e.uint.preencode(d, o.createdAt), |
| … | … | @@ -4164,7 +4211,7 @@ const o = { |
| 4164 | 4211 | } |
| 4165 | 4212 | }, |
| 4166 | 4213 | }, |
| 4167 | Yr = { | |
| 4214 | $r = { | |
| 4168 | 4215 | preencode(d, n) { |
| 4169 | 4216 | e.uint.preencode(d, n.createdAt) |
| 4170 | 4217 | }, |
| … | … | @@ -4173,7 +4220,7 @@ const o = { |
| 4173 | 4220 | }, |
| 4174 | 4221 | decode: (d) => ({ callKey: null, memberKey: null, createdAt: e.uint.decode(d) }), |
| 4175 | 4222 | }, |
| 4176 | Zr = { | |
| 4223 | _r = { | |
| 4177 | 4224 | preencode(d, o) { |
| 4178 | 4225 | ;(e.fixed32.preencode(d, o.memberKey), |
| 4179 | 4226 | e.uint.preencode(d, o.createdAt), |
| … | … | @@ -4200,7 +4247,7 @@ const o = { |
| 4200 | 4247 | } |
| 4201 | 4248 | }, |
| 4202 | 4249 | }, |
| 4203 | $r = { | |
| 4250 | ei = { | |
| 4204 | 4251 | preencode(d, n) { |
| 4205 | 4252 | ;(e.fixed32.preencode(d, n.deviceKey), e.uint.preencode(d, n.createdAt)) |
| 4206 | 4253 | }, |
| … | … | @@ -4214,40 +4261,40 @@ const o = { |
| 4214 | 4261 | createdAt: e.uint.decode(d), |
| 4215 | 4262 | }), |
| 4216 | 4263 | }, |
| 4217 | _r = Nr, | |
| 4218 | ei = e.frame(A), | |
| 4219 | di = ei, | |
| 4220 | ni = e.array(Ec), | |
| 4221 | oi = e.frame(pe), | |
| 4222 | ci = ei, | |
| 4223 | ti = oi, | |
| 4224 | ri = e.frame(Kc), | |
| 4225 | ii = oi, | |
| 4226 | ai = e.frame(md), | |
| 4227 | si = e.frame(bc), | |
| 4228 | pi = e.frame(kt), | |
| 4229 | ui = pi, | |
| 4230 | li = e.array(e.frame(Nc)), | |
| 4231 | fi = ei, | |
| 4232 | mi = e.frame(Jo), | |
| 4233 | yi = mi, | |
| 4234 | bi = mi, | |
| 4235 | xi = ei, | |
| 4236 | ki = oi, | |
| 4237 | vi = mi | |
| 4238 | function gi(e) { | |
| 4264 | di = Ur, | |
| 4265 | ni = e.frame(A), | |
| 4266 | oi = ni, | |
| 4267 | ci = e.array(Ec), | |
| 4268 | ti = e.frame(pe), | |
| 4269 | ri = ni, | |
| 4270 | ii = ti, | |
| 4271 | ai = e.frame(Kc), | |
| 4272 | si = ti, | |
| 4273 | pi = e.frame(md), | |
| 4274 | ui = e.frame(bc), | |
| 4275 | li = e.frame(kt), | |
| 4276 | fi = li, | |
| 4277 | mi = e.array(e.frame(Nc)), | |
| 4278 | yi = ni, | |
| 4279 | bi = e.frame(Oo), | |
| 4280 | xi = bi, | |
| 4281 | ki = bi, | |
| 4282 | vi = ni, | |
| 4283 | gi = ti, | |
| 4284 | hi = bi | |
| 4285 | function Ki(e) { | |
| 4239 | 4286 | n = e |
| 4240 | 4287 | } |
| 4241 | function hi(d, o, c = 20) { | |
| 4242 | return ((n = c), e.encode(Ai(d), o)) | |
| 4288 | function wi(d, o, c = 21) { | |
| 4289 | return ((n = c), e.encode(Pi(d), o)) | |
| 4243 | 4290 | } |
| 4244 | function Ki(d, o, c = 20) { | |
| 4245 | return ((n = c), e.decode(Ai(d), o)) | |
| 4291 | function Ai(d, o, c = 21) { | |
| 4292 | return ((n = c), e.decode(Pi(d), o)) | |
| 4246 | 4293 | } |
| 4247 | function wi(e) { | |
| 4294 | function Ti(e) { | |
| 4248 | 4295 | switch (e) { |
| 4249 | 4296 | case "@keet/room-type": |
| 4250 | return J | |
| 4297 | return O | |
| 4251 | 4298 | case "@keet/display-type": |
| 4252 | 4299 | return Pc |
| 4253 | 4300 | case "@keet/system-settings-keys": |
| … | … | @@ -4266,7 +4313,7 @@ function wi(e) { |
| 4266 | 4313 | throw new Error("Enum not found " + e) |
| 4267 | 4314 | } |
| 4268 | 4315 | } |
| 4269 | function Ai(e) { | |
| 4316 | function Pi(e) { | |
| 4270 | 4317 | switch (e) { |
| 4271 | 4318 | case "@keet/head": |
| 4272 | 4319 | return o |
| … | … | @@ -4305,9 +4352,9 @@ function Ai(e) { |
| 4305 | 4352 | case "@keet/member-status": |
| 4306 | 4353 | return D |
| 4307 | 4354 | case "@keet/member-moderation-status": |
| 4308 | return F | |
| 4309 | case "@keet/abi": | |
| 4310 | 4355 | return M |
| 4356 | case "@keet/abi": | |
| 4357 | return F | |
| 4311 | 4358 | case "@keet/device-stats": |
| 4312 | 4359 | return q |
| 4313 | 4360 | case "@keet/member-stats": |
| … | … | @@ -4317,9 +4364,9 @@ function Ai(e) { |
| 4317 | 4364 | case "@keet/file-stats": |
| 4318 | 4365 | return E |
| 4319 | 4366 | case "@keet/stats": |
| 4320 | return O | |
| 4367 | return V | |
| 4321 | 4368 | case "@keet/room-type": |
| 4322 | return U | |
| 4369 | return J | |
| 4323 | 4370 | case "@keet/system-settings": |
| 4324 | 4371 | return H |
| 4325 | 4372 | case "@keet/system-digest": |
| … | … | @@ -4365,21 +4412,21 @@ function Ai(e) { |
| 4365 | 4412 | case "@keet/device-request": |
| 4366 | 4413 | return Re |
| 4367 | 4414 | case "@keet/device-response": |
| 4368 | return Fe | |
| 4369 | case "@keet/invitation-metadata": | |
| 4370 | 4415 | return Me |
| 4416 | case "@keet/invitation-metadata": | |
| 4417 | return Fe | |
| 4371 | 4418 | case "@keet/invitation": |
| 4372 | 4419 | return Ie |
| 4373 | 4420 | case "@keet/add-invitation-operation": |
| 4374 | 4421 | return Ne |
| 4375 | 4422 | case "@keet/remove-invitation-operation": |
| 4376 | return Ve | |
| 4423 | return Ue | |
| 4377 | 4424 | case "@keet/sendable-room-invitation": |
| 4378 | return Oe | |
| 4425 | return Ve | |
| 4379 | 4426 | case "@keet/sendable-identity-invitation": |
| 4380 | return Je | |
| 4427 | return Oe | |
| 4381 | 4428 | case "@keet/sendable-contact-invitation": |
| 4382 | return Ue | |
| 4429 | return Je | |
| 4383 | 4430 | case "@keet/sendable-invitation": |
| 4384 | 4431 | return We |
| 4385 | 4432 | case "@keet/add-device-operation": |
| … | … | @@ -4419,7 +4466,7 @@ function Ai(e) { |
| 4419 | 4466 | case "@keet/title-changed-chat-event": |
| 4420 | 4467 | return Rd |
| 4421 | 4468 | case "@keet/chat-event": |
| 4422 | return Md | |
| 4469 | return Fd | |
| 4423 | 4470 | case "@keet/sendable-event": |
| 4424 | 4471 | return qd |
| 4425 | 4472 | case "@keet/display-range": |
| … | … | @@ -4429,7 +4476,7 @@ function Ai(e) { |
| 4429 | 4476 | case "@keet/mention-display-item": |
| 4430 | 4477 | return Nd |
| 4431 | 4478 | case "@keet/link-preview": |
| 4432 | return Od | |
| 4479 | return Vd | |
| 4433 | 4480 | case "@keet/display-link-item": |
| 4434 | 4481 | return Hd |
| 4435 | 4482 | case "@keet/display": |
| … | … | @@ -4455,7 +4502,7 @@ function Ai(e) { |
| 4455 | 4502 | case "@keet/remove-chat-message-operation": |
| 4456 | 4503 | return Rn |
| 4457 | 4504 | case "@keet/update-chat-message-operation": |
| 4458 | return Fn | |
| 4505 | return Mn | |
| 4459 | 4506 | case "@keet/pin-chat-message-operation": |
| 4460 | 4507 | return qn |
| 4461 | 4508 | case "@keet/reaction": |
| … | … | @@ -4467,7 +4514,7 @@ function Ai(e) { |
| 4467 | 4514 | case "@keet/add-reaction-operation": |
| 4468 | 4515 | return jn |
| 4469 | 4516 | case "@keet/remove-reaction-operation": |
| 4470 | return On | |
| 4517 | return Vn | |
| 4471 | 4518 | case "@keet/update-room-config-operation": |
| 4472 | 4519 | return Hn |
| 4473 | 4520 | case "@keet/group-member": |
| … | … | @@ -4517,11 +4564,11 @@ function Ai(e) { |
| 4517 | 4564 | case "@keet-private-id/remove-room-operation": |
| 4518 | 4565 | return No |
| 4519 | 4566 | case "@keet-private-id/update-room-status-operation": |
| 4520 | return Oo | |
| 4567 | return Vo | |
| 4521 | 4568 | case "@keet-private-id/contact-status": |
| 4522 | return Jo | |
| 4569 | return Oo | |
| 4523 | 4570 | case "@keet-private-id/contact-record": |
| 4524 | return Uo | |
| 4571 | return Jo | |
| 4525 | 4572 | case "@keet-private-id/add-contact-operation": |
| 4526 | 4573 | return Go |
| 4527 | 4574 | case "@keet-private-id/update-contact-status-operation": |
| … | … | @@ -4567,7 +4614,7 @@ function Ai(e) { |
| 4567 | 4614 | case "@keet/test-collection-record-1": |
| 4568 | 4615 | return Dc |
| 4569 | 4616 | case "@keet/migrate-abi-operation": |
| 4570 | return Mc | |
| 4617 | return Fc | |
| 4571 | 4618 | case "@keet/system-settings-keys": |
| 4572 | 4619 | return Lc |
| 4573 | 4620 | case "@keet/room-supported-language": |
| … | … | @@ -4577,9 +4624,9 @@ function Ai(e) { |
| 4577 | 4624 | case "@keet-private-id/unreads": |
| 4578 | 4625 | return jc |
| 4579 | 4626 | case "@keet-private-id/add-unreads-key-operation": |
| 4580 | return Oc | |
| 4627 | return Vc | |
| 4581 | 4628 | case "@keet-private-id/remove-unreads-key-operation": |
| 4582 | return Uc | |
| 4629 | return Jc | |
| 4583 | 4630 | case "@keet/label-type": |
| 4584 | 4631 | return zc |
| 4585 | 4632 | case "@keet/chat-label": |
| … | … | @@ -4627,7 +4674,7 @@ function Ai(e) { |
| 4627 | 4674 | case "@keet/end-call": |
| 4628 | 4675 | return Dt |
| 4629 | 4676 | case "@keet/add-call-stream": |
| 4630 | return Mt | |
| 4677 | return Ft | |
| 4631 | 4678 | case "@keet/remove-call-stream": |
| 4632 | 4679 | return Lt |
| 4633 | 4680 | case "@keet/call-record": |
| … | … | @@ -4639,91 +4686,93 @@ function Ai(e) { |
| 4639 | 4686 | case "@keet/call-stream-record": |
| 4640 | 4687 | return Nt |
| 4641 | 4688 | case "@keet/build-type": |
| 4642 | return Vt | |
| 4689 | return Ut | |
| 4643 | 4690 | case "@keet/test-crash-operation": |
| 4644 | return Jt | |
| 4691 | return Ot | |
| 4645 | 4692 | case "@keet/test-dispatch-error-operation": |
| 4646 | 4693 | return Ht |
| 4694 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 4695 | return Gt | |
| 4647 | 4696 | case "@keet/blind-peer/hyperdb#1": |
| 4648 | return zt | |
| 4649 | case "@keet/join-request/hyperdb#4": | |
| 4650 | 4697 | return Qt |
| 4698 | case "@keet/join-request/hyperdb#4": | |
| 4699 | return Xt | |
| 4651 | 4700 | case "@keet/device/hyperdb#5": |
| 4652 | return Yt | |
| 4701 | return $t | |
| 4653 | 4702 | case "@keet/member-proofs/hyperdb#10": |
| 4654 | return Zt | |
| 4703 | return _t | |
| 4655 | 4704 | case "@keet/member/hyperdb#11": |
| 4656 | return er | |
| 4705 | return nr | |
| 4657 | 4706 | case "@keet/member-activity/hyperdb#17": |
| 4658 | return dr | |
| 4707 | return or | |
| 4659 | 4708 | case "@keet/invitation/hyperdb#18": |
| 4660 | return cr | |
| 4661 | case "@keet/thread/hyperdb#19": | |
| 4662 | 4709 | return rr |
| 4710 | case "@keet/thread/hyperdb#19": | |
| 4711 | return ar | |
| 4663 | 4712 | case "@keet/message-index-id/hyperdb#21": |
| 4664 | return ir | |
| 4713 | return sr | |
| 4665 | 4714 | case "@keet/chat-message-record/hyperdb#21": |
| 4666 | return ur | |
| 4715 | return fr | |
| 4667 | 4716 | case "@keet/message-index-id/hyperdb#25": |
| 4668 | return lr | |
| 4669 | case "@keet/reactions-digest/hyperdb#25": | |
| 4670 | 4717 | return mr |
| 4718 | case "@keet/reactions-digest/hyperdb#25": | |
| 4719 | return br | |
| 4671 | 4720 | case "@keet/message-index-id/hyperdb#26": |
| 4672 | return yr | |
| 4721 | return xr | |
| 4673 | 4722 | case "@keet/reaction/hyperdb#26": |
| 4674 | return br | |
| 4723 | return kr | |
| 4675 | 4724 | case "@keet/file-record/hyperdb#28": |
| 4676 | return vr | |
| 4677 | case "@keet-private-id/pending-invitation/hyperdb#35": | |
| 4678 | 4725 | return hr |
| 4726 | case "@keet-private-id/pending-invitation/hyperdb#35": | |
| 4727 | return wr | |
| 4679 | 4728 | case "@keet-private-id/room/hyperdb#36": |
| 4680 | return Tr | |
| 4729 | return Sr | |
| 4681 | 4730 | case "@keet-private-id/contact-record/hyperdb#38": |
| 4682 | return Pr | |
| 4731 | return Rr | |
| 4683 | 4732 | case "@keet-private-id/contact-request-record/hyperdb#40": |
| 4684 | return Dr | |
| 4685 | case "@keet/test-collection-record-1/hyperdb#46": | |
| 4686 | 4733 | return Fr |
| 4734 | case "@keet/test-collection-record-1/hyperdb#46": | |
| 4735 | return qr | |
| 4687 | 4736 | case "@keet/device-identity/hyperdb#50": |
| 4688 | return Mr | |
| 4737 | return Lr | |
| 4689 | 4738 | case "@keet/room-keys/hyperdb#51": |
| 4690 | return qr | |
| 4739 | return Ir | |
| 4691 | 4740 | case "@keet-private-id/contact-request-record/hyperdb#51": |
| 4692 | return Br | |
| 4741 | return jr | |
| 4693 | 4742 | case "@keet-private-id/unreads/hyperdb#59": |
| 4694 | return Nr | |
| 4743 | return Ur | |
| 4695 | 4744 | case "@keet/message-index-id/hyperdb#60": |
| 4696 | return jr | |
| 4697 | case "@keet/chat-label/hyperdb#60": | |
| 4698 | 4745 | return Vr |
| 4699 | case "@keet/message-index-id/hyperdb#61": | |
| 4746 | case "@keet/chat-label/hyperdb#60": | |
| 4700 | 4747 | return Or |
| 4748 | case "@keet/message-index-id/hyperdb#61": | |
| 4749 | return Jr | |
| 4701 | 4750 | case "@keet/chat-label-digest/hyperdb#61": |
| 4702 | return Ur | |
| 4751 | return zr | |
| 4703 | 4752 | case "@keet/read-length/hyperdb#62": |
| 4704 | return Hr | |
| 4753 | return Gr | |
| 4705 | 4754 | case "@keet/tmp-removed-member/hyperdb#63": |
| 4706 | return zr | |
| 4755 | return Qr | |
| 4707 | 4756 | case "@keet/member-label/hyperdb#66": |
| 4708 | return Gr | |
| 4709 | case "@keet/member-label-digest/hyperdb#67": | |
| 4710 | 4757 | return Wr |
| 4758 | case "@keet/member-label-digest/hyperdb#67": | |
| 4759 | return Yr | |
| 4711 | 4760 | case "@keet/call-record/hyperdb#69": |
| 4712 | return Xr | |
| 4761 | return Zr | |
| 4713 | 4762 | case "@keet/call-member-record/hyperdb#72": |
| 4714 | return Yr | |
| 4763 | return $r | |
| 4715 | 4764 | case "@keet/call-device-record/hyperdb#73": |
| 4716 | return Zr | |
| 4765 | return _r | |
| 4717 | 4766 | case "@keet/call-stream-record/hyperdb#75": |
| 4718 | return $r | |
| 4767 | return ei | |
| 4719 | 4768 | case "@keet-private-id/unreads/hyperdb#77": |
| 4720 | return _r | |
| 4769 | return di | |
| 4721 | 4770 | default: |
| 4722 | 4771 | throw new Error("Encoder not found " + e) |
| 4723 | 4772 | } |
| 4724 | 4773 | } |
| 4725 | function Ti(e, d = 20) { | |
| 4726 | const o = Ai(e) | |
| 4774 | function Si(e, d = 21) { | |
| 4775 | const o = Pi(e) | |
| 4727 | 4776 | return { |
| 4728 | 4777 | preencode(e, c) { |
| 4729 | 4778 | ;((n = d), o.preencode(e, c)) |
| … | … | @@ -4734,14 +4783,14 @@ function Ti(e, d = 20) { |
| 4734 | 4783 | decode: (e) => ((n = d), o.decode(e)), |
| 4735 | 4784 | } |
| 4736 | 4785 | } |
| 4737 | const Pi = Ti | |
| 4786 | const Ri = Si | |
| 4738 | 4787 | module.exports = { |
| 4739 | resolveStruct: Pi, | |
| 4740 | getStruct: Ti, | |
| 4741 | getEnum: wi, | |
| 4742 | getEncoding: Ai, | |
| 4743 | encode: hi, | |
| 4744 | decode: Ki, | |
| 4745 | setVersion: gi, | |
| 4788 | resolveStruct: Ri, | |
| 4789 | getStruct: Si, | |
| 4790 | getEnum: Ti, | |
| 4791 | getEncoding: Pi, | |
| 4792 | encode: wi, | |
| 4793 | decode: Ai, | |
| 4794 | setVersion: Ki, | |
| 4746 | 4795 | version: n, |
| 4747 | 4796 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | { |
| 2 | "version": 12, | |
| 2 | "version": 13, | |
| 3 | 3 | "offset": 2, |
| 4 | 4 | "schema": [ |
| 5 | 5 | { |
| … | … | @@ -349,6 +349,12 @@ |
| 349 | 349 | "name": "@keet/test-dispatch-error", |
| 350 | 350 | "requestType": "@keet/test-dispatch-error-operation", |
| 351 | 351 | "version": 12 |
| 352 | }, | |
| 353 | { | |
| 354 | "id": 60, | |
| 355 | "name": "@keet-private-id/shorten-device-attestation", | |
| 356 | "requestType": "@keet-private-id/shorten-device-attestation-operation", | |
| 357 | "version": 13 | |
| 352 | 358 | } |
| 353 | 359 | ] |
| 354 | 360 | } |
| … | … | @@ -61,7 +61,8 @@ class h { |
| 61 | 61 | (this._handler57 = null), |
| 62 | 62 | (this._handler58 = null), |
| 63 | 63 | (this._handler59 = null), |
| 64 | (this._missing = 58)) | |
| 64 | (this._handler60 = null), | |
| 65 | (this._missing = 59)) | |
| 65 | 66 | } |
| 66 | 67 | add(e, t) { |
| 67 | 68 | switch (e) { |
| … | … | @@ -239,6 +240,9 @@ class h { |
| 239 | 240 | case "@keet/test-dispatch-error": |
| 240 | 241 | this._handler59 = t |
| 241 | 242 | break |
| 243 | case "@keet-private-id/shorten-device-attestation": | |
| 244 | this._handler60 = t | |
| 245 | break | |
| 242 | 246 | default: |
| 243 | 247 | throw r.NONEXISTENT_ROUTE(e) |
| 244 | 248 | } |
| … | … | @@ -311,7 +315,11 @@ class h { |
| 311 | 315 | a(null !== this._handler56, 'Missing handler for "@keet/add-call-stream"'), |
| 312 | 316 | a(null !== this._handler57, 'Missing handler for "@keet/remove-call-stream"'), |
| 313 | 317 | a(null !== this._handler58, 'Missing handler for "@keet/test-crash"'), |
| 314 | a(null !== this._handler59, 'Missing handler for "@keet/test-dispatch-error"')) | |
| 318 | a(null !== this._handler59, 'Missing handler for "@keet/test-dispatch-error"'), | |
| 319 | a( | |
| 320 | null !== this._handler60, | |
| 321 | 'Missing handler for "@keet-private-id/shorten-device-attestation"', | |
| 322 | )) | |
| 315 | 323 | } |
| 316 | 324 | async dispatch(e, a) { |
| 317 | 325 | ;(this._missing > 0 && this._checkAll(), d(l)) |
| … | … | @@ -433,6 +441,8 @@ class h { |
| 433 | 441 | return this._handler58(n.value, a) |
| 434 | 442 | case 59: |
| 435 | 443 | return this._handler59(n.value, a) |
| 444 | case 60: | |
| 445 | return this._handler60(n.value, a) | |
| 436 | 446 | default: |
| 437 | 447 | throw r.HANDLER_NOT_FOUND_BY_ID(n.id) |
| 438 | 448 | } |
| … | … | @@ -440,7 +450,7 @@ class h { |
| 440 | 450 | } |
| 441 | 451 | function c(a, r, { version: n = l } = {}) { |
| 442 | 452 | const i = { buffer: null, start: 0, end: 0 }, |
| 443 | s = pe(a) | |
| 453 | s = _e(a) | |
| 444 | 454 | return ( |
| 445 | 455 | d(n), |
| 446 | 456 | e.uint.preencode(i, s.id), |
| … | … | @@ -454,7 +464,7 @@ function c(a, r, { version: n = l } = {}) { |
| 454 | 464 | function u(t, { version: a = l } = {}) { |
| 455 | 465 | const r = { buffer: t, start: 0, end: t.length }, |
| 456 | 466 | n = e.uint.decode(r), |
| 457 | i = _e(n) | |
| 467 | i = ge(n) | |
| 458 | 468 | d(a) |
| 459 | 469 | const s = i.enc.decode(r) |
| 460 | 470 | return { id: n, name: i.name, value: s } |
| … | … | @@ -466,8 +476,8 @@ const o = { name: "@keet/genesis", id: 2, enc: s("@keet/genesis-operation") }, |
| 466 | 476 | id: 4, |
| 467 | 477 | enc: s("@keet/update-system-settings-operation"), |
| 468 | 478 | }, |
| 469 | m = { name: "@keet/add-blind-peer", id: 5, enc: s("@keet/add-blind-peer-operation") }, | |
| 470 | p = { name: "@keet/remove-blind-peer", id: 6, enc: s("@keet/remove-blind-peer-operation") }, | |
| 479 | p = { name: "@keet/add-blind-peer", id: 5, enc: s("@keet/add-blind-peer-operation") }, | |
| 480 | m = { name: "@keet/remove-blind-peer", id: 6, enc: s("@keet/remove-blind-peer-operation") }, | |
| 471 | 481 | _ = { name: "@keet/add-device", id: 7, enc: s("@keet/add-device-operation") }, |
| 472 | 482 | g = { name: "@keet/update-device", id: 8, enc: s("@keet/update-device-operation") }, |
| 473 | 483 | b = { name: "@keet/start-indexing", id: 9, enc: s("@keet/start-indexing-operation") }, |
| … | … | @@ -588,8 +598,13 @@ const o = { name: "@keet/genesis", id: 2, enc: s("@keet/genesis-operation") }, |
| 588 | 598 | oe = { name: "@keet/add-call-stream", id: 56, enc: s("@keet/add-call-stream") }, |
| 589 | 599 | ke = { name: "@keet/remove-call-stream", id: 57, enc: s("@keet/remove-call-stream") }, |
| 590 | 600 | ve = { name: "@keet/test-crash", id: 58, enc: s("@keet/test-crash-operation") }, |
| 591 | me = { name: "@keet/test-dispatch-error", id: 59, enc: s("@keet/test-dispatch-error-operation") } | |
| 592 | function pe(e) { | |
| 601 | pe = { name: "@keet/test-dispatch-error", id: 59, enc: s("@keet/test-dispatch-error-operation") }, | |
| 602 | me = { | |
| 603 | name: "@keet-private-id/shorten-device-attestation", | |
| 604 | id: 60, | |
| 605 | enc: s("@keet-private-id/shorten-device-attestation-operation"), | |
| 606 | } | |
| 607 | function _e(e) { | |
| 593 | 608 | switch (e) { |
| 594 | 609 | case "@keet/genesis": |
| 595 | 610 | return o |
| … | … | @@ -598,9 +613,9 @@ function pe(e) { |
| 598 | 613 | case "@keet/update-system-settings": |
| 599 | 614 | return v |
| 600 | 615 | case "@keet/add-blind-peer": |
| 601 | return m | |
| 602 | case "@keet/remove-blind-peer": | |
| 603 | 616 | return p |
| 617 | case "@keet/remove-blind-peer": | |
| 618 | return m | |
| 604 | 619 | case "@keet/add-device": |
| 605 | 620 | return _ |
| 606 | 621 | case "@keet/update-device": |
| … | … | @@ -706,12 +721,14 @@ function pe(e) { |
| 706 | 721 | case "@keet/test-crash": |
| 707 | 722 | return ve |
| 708 | 723 | case "@keet/test-dispatch-error": |
| 724 | return pe | |
| 725 | case "@keet-private-id/shorten-device-attestation": | |
| 709 | 726 | return me |
| 710 | 727 | default: |
| 711 | 728 | throw r.ROUTE_NOT_FOUND_BY_NAME(e) |
| 712 | 729 | } |
| 713 | 730 | } |
| 714 | function _e(e) { | |
| 731 | function ge(e) { | |
| 715 | 732 | switch (e) { |
| 716 | 733 | case 2: |
| 717 | 734 | return o |
| … | … | @@ -720,9 +737,9 @@ function _e(e) { |
| 720 | 737 | case 4: |
| 721 | 738 | return v |
| 722 | 739 | case 5: |
| 723 | return m | |
| 724 | case 6: | |
| 725 | 740 | return p |
| 741 | case 6: | |
| 742 | return m | |
| 726 | 743 | case 7: |
| 727 | 744 | return _ |
| 728 | 745 | case 8: |
| … | … | @@ -828,6 +845,8 @@ function _e(e) { |
| 828 | 845 | case 58: |
| 829 | 846 | return ve |
| 830 | 847 | case 59: |
| 848 | return pe | |
| 849 | case 60: | |
| 831 | 850 | return me |
| 832 | 851 | default: |
| 833 | 852 | throw r.HANDLER_NOT_FOUND_BY_ID(e) |
| … | … | @@ -1,87 +1,87 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 20 | |
| 3 | let n = d | |
| 4 | const o = { | |
| 5 | preencode(d, n) { | |
| 6 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.length)) | |
| 2 | d = 21 | |
| 3 | let o = d | |
| 4 | const n = { | |
| 5 | preencode(d, o) { | |
| 6 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.length)) | |
| 7 | 7 | }, |
| 8 | encode(d, n) { | |
| 9 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.length)) | |
| 8 | encode(d, o) { | |
| 9 | ;(e.fixed32.encode(d, o.key), e.uint.encode(d, o.length)) | |
| 10 | 10 | }, |
| 11 | 11 | decode: (d) => ({ key: e.fixed32.decode(d), length: e.uint.decode(d) }), |
| 12 | 12 | }, |
| 13 | 13 | c = { |
| 14 | preencode(d, n) { | |
| 15 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.seq)) | |
| 14 | preencode(d, o) { | |
| 15 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.seq)) | |
| 16 | 16 | }, |
| 17 | encode(d, n) { | |
| 18 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.seq)) | |
| 17 | encode(d, o) { | |
| 18 | ;(e.fixed32.encode(d, o.key), e.uint.encode(d, o.seq)) | |
| 19 | 19 | }, |
| 20 | 20 | decode: (d) => ({ key: e.fixed32.decode(d), seq: e.uint.decode(d) }), |
| 21 | 21 | }, |
| 22 | 22 | r = { |
| 23 | preencode(d, n) { | |
| 24 | ;(e.fixed32.preencode(d, n.publicKey), e.fixed32.preencode(d, n.secretKey)) | |
| 23 | preencode(d, o) { | |
| 24 | ;(e.fixed32.preencode(d, o.publicKey), e.fixed32.preencode(d, o.secretKey)) | |
| 25 | 25 | }, |
| 26 | encode(d, n) { | |
| 27 | ;(e.fixed32.encode(d, n.publicKey), e.fixed32.encode(d, n.secretKey)) | |
| 26 | encode(d, o) { | |
| 27 | ;(e.fixed32.encode(d, o.publicKey), e.fixed32.encode(d, o.secretKey)) | |
| 28 | 28 | }, |
| 29 | 29 | decode: (d) => ({ publicKey: e.fixed32.decode(d), secretKey: e.fixed32.decode(d) }), |
| 30 | 30 | }, |
| 31 | 31 | t = { |
| 32 | preencode(d, n) { | |
| 33 | ;(e.fixed32.preencode(d, n.publicKey), e.fixed64.preencode(d, n.secretKey)) | |
| 32 | preencode(d, o) { | |
| 33 | ;(e.fixed32.preencode(d, o.publicKey), e.fixed64.preencode(d, o.secretKey)) | |
| 34 | 34 | }, |
| 35 | encode(d, n) { | |
| 36 | ;(e.fixed32.encode(d, n.publicKey), e.fixed64.encode(d, n.secretKey)) | |
| 35 | encode(d, o) { | |
| 36 | ;(e.fixed32.encode(d, o.publicKey), e.fixed64.encode(d, o.secretKey)) | |
| 37 | 37 | }, |
| 38 | 38 | decode: (d) => ({ publicKey: e.fixed32.decode(d), secretKey: e.fixed64.decode(d) }), |
| 39 | 39 | }, |
| 40 | 40 | i = { |
| 41 | preencode(d, n) { | |
| 42 | ;(e.fixed32.preencode(d, n.key), | |
| 41 | preencode(d, o) { | |
| 42 | ;(e.fixed32.preencode(d, o.key), | |
| 43 | 43 | d.end++, |
| 44 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), | |
| 45 | n.fastForwardTo && e.fixed32.preencode(d, n.fastForwardTo)) | |
| 44 | o.encryptionKey && e.buffer.preencode(d, o.encryptionKey), | |
| 45 | o.fastForwardTo && e.fixed32.preencode(d, o.fastForwardTo)) | |
| 46 | 46 | }, |
| 47 | encode(d, n) { | |
| 48 | const o = (n.encryptionKey ? 1 : 0) | (n.fastForwardTo ? 2 : 0) | |
| 49 | ;(e.fixed32.encode(d, n.key), | |
| 50 | e.uint.encode(d, o), | |
| 51 | n.encryptionKey && e.buffer.encode(d, n.encryptionKey), | |
| 52 | n.fastForwardTo && e.fixed32.encode(d, n.fastForwardTo)) | |
| 47 | encode(d, o) { | |
| 48 | const n = (o.encryptionKey ? 1 : 0) | (o.fastForwardTo ? 2 : 0) | |
| 49 | ;(e.fixed32.encode(d, o.key), | |
| 50 | e.uint.encode(d, n), | |
| 51 | o.encryptionKey && e.buffer.encode(d, o.encryptionKey), | |
| 52 | o.fastForwardTo && e.fixed32.encode(d, o.fastForwardTo)) | |
| 53 | 53 | }, |
| 54 | 54 | decode(d) { |
| 55 | const n = e.fixed32.decode(d), | |
| 56 | o = e.uint.decode(d) | |
| 55 | const o = e.fixed32.decode(d), | |
| 56 | n = e.uint.decode(d) | |
| 57 | 57 | return { |
| 58 | key: n, | |
| 59 | encryptionKey: 1 & o ? e.buffer.decode(d) : null, | |
| 60 | fastForwardTo: 2 & o ? e.fixed32.decode(d) : null, | |
| 58 | key: o, | |
| 59 | encryptionKey: 1 & n ? e.buffer.decode(d) : null, | |
| 60 | fastForwardTo: 2 & n ? e.fixed32.decode(d) : null, | |
| 61 | 61 | } |
| 62 | 62 | }, |
| 63 | 63 | }, |
| 64 | 64 | a = { |
| 65 | preencode(d, n) { | |
| 66 | e.uint.preencode(d, n.timestamp) | |
| 65 | preencode(d, o) { | |
| 66 | e.uint.preencode(d, o.timestamp) | |
| 67 | 67 | }, |
| 68 | encode(d, n) { | |
| 69 | e.uint.encode(d, n.timestamp) | |
| 68 | encode(d, o) { | |
| 69 | e.uint.encode(d, o.timestamp) | |
| 70 | 70 | }, |
| 71 | 71 | decode: (d) => ({ timestamp: e.uint.decode(d) }), |
| 72 | 72 | }, |
| 73 | 73 | s = { |
| 74 | preencode(d, n) { | |
| 75 | ;(e.uint.preencode(d, n.blockOffset), | |
| 76 | e.uint.preencode(d, n.blockLength), | |
| 77 | e.uint.preencode(d, n.byteOffset), | |
| 78 | e.uint.preencode(d, n.byteLength)) | |
| 74 | preencode(d, o) { | |
| 75 | ;(e.uint.preencode(d, o.blockOffset), | |
| 76 | e.uint.preencode(d, o.blockLength), | |
| 77 | e.uint.preencode(d, o.byteOffset), | |
| 78 | e.uint.preencode(d, o.byteLength)) | |
| 79 | 79 | }, |
| 80 | encode(d, n) { | |
| 81 | ;(e.uint.encode(d, n.blockOffset), | |
| 82 | e.uint.encode(d, n.blockLength), | |
| 83 | e.uint.encode(d, n.byteOffset), | |
| 84 | e.uint.encode(d, n.byteLength)) | |
| 80 | encode(d, o) { | |
| 81 | ;(e.uint.encode(d, o.blockOffset), | |
| 82 | e.uint.encode(d, o.blockLength), | |
| 83 | e.uint.encode(d, o.byteOffset), | |
| 84 | e.uint.encode(d, o.byteLength)) | |
| 85 | 85 | }, |
| 86 | 86 | decode: (d) => ({ |
| 87 | 87 | blockOffset: e.uint.decode(d), |
| … | … | @@ -91,63 +91,63 @@ const o = { |
| 91 | 91 | }), |
| 92 | 92 | }, |
| 93 | 93 | p = { |
| 94 | preencode(d, n) { | |
| 95 | ;(e.uint.preencode(d, n.width), e.uint.preencode(d, n.height)) | |
| 94 | preencode(d, o) { | |
| 95 | ;(e.uint.preencode(d, o.width), e.uint.preencode(d, o.height)) | |
| 96 | 96 | }, |
| 97 | encode(d, n) { | |
| 98 | ;(e.uint.encode(d, n.width), e.uint.encode(d, n.height)) | |
| 97 | encode(d, o) { | |
| 98 | ;(e.uint.encode(d, o.width), e.uint.encode(d, o.height)) | |
| 99 | 99 | }, |
| 100 | 100 | decode: (d) => ({ width: e.uint.decode(d), height: e.uint.decode(d) }), |
| 101 | 101 | }, |
| 102 | 102 | u = e.frame(p), |
| 103 | 103 | l = { |
| 104 | preencode(d, n) { | |
| 104 | preencode(d, o) { | |
| 105 | 105 | ;(d.end++, |
| 106 | n.name && e.string.preencode(d, n.name), | |
| 107 | n.mimetype && e.string.preencode(d, n.mimetype), | |
| 108 | n.dimensions && u.preencode(d, n.dimensions), | |
| 109 | n.userdata && e.buffer.preencode(d, n.userdata), | |
| 110 | n.duration && e.uint.preencode(d, n.duration)) | |
| 106 | o.name && e.string.preencode(d, o.name), | |
| 107 | o.mimetype && e.string.preencode(d, o.mimetype), | |
| 108 | o.dimensions && u.preencode(d, o.dimensions), | |
| 109 | o.userdata && e.buffer.preencode(d, o.userdata), | |
| 110 | o.duration && e.uint.preencode(d, o.duration)) | |
| 111 | 111 | }, |
| 112 | encode(d, n) { | |
| 113 | const o = | |
| 114 | (n.name ? 1 : 0) | | |
| 115 | (n.mimetype ? 2 : 0) | | |
| 116 | (n.dimensions ? 4 : 0) | | |
| 117 | (n.userdata ? 8 : 0) | | |
| 118 | (n.duration ? 16 : 0) | | |
| 119 | (n.isPreview ? 32 : 0) | |
| 120 | ;(e.uint.encode(d, o), | |
| 121 | n.name && e.string.encode(d, n.name), | |
| 122 | n.mimetype && e.string.encode(d, n.mimetype), | |
| 123 | n.dimensions && u.encode(d, n.dimensions), | |
| 124 | n.userdata && e.buffer.encode(d, n.userdata), | |
| 125 | n.duration && e.uint.encode(d, n.duration)) | |
| 112 | encode(d, o) { | |
| 113 | const n = | |
| 114 | (o.name ? 1 : 0) | | |
| 115 | (o.mimetype ? 2 : 0) | | |
| 116 | (o.dimensions ? 4 : 0) | | |
| 117 | (o.userdata ? 8 : 0) | | |
| 118 | (o.duration ? 16 : 0) | | |
| 119 | (o.isPreview ? 32 : 0) | |
| 120 | ;(e.uint.encode(d, n), | |
| 121 | o.name && e.string.encode(d, o.name), | |
| 122 | o.mimetype && e.string.encode(d, o.mimetype), | |
| 123 | o.dimensions && u.encode(d, o.dimensions), | |
| 124 | o.userdata && e.buffer.encode(d, o.userdata), | |
| 125 | o.duration && e.uint.encode(d, o.duration)) | |
| 126 | 126 | }, |
| 127 | 127 | decode(d) { |
| 128 | const n = e.uint.decode(d) | |
| 128 | const o = e.uint.decode(d) | |
| 129 | 129 | return { |
| 130 | name: 1 & n ? e.string.decode(d) : null, | |
| 131 | mimetype: 2 & n ? e.string.decode(d) : null, | |
| 132 | dimensions: 4 & n ? u.decode(d) : null, | |
| 133 | userdata: 8 & n ? e.buffer.decode(d) : null, | |
| 134 | duration: 16 & n ? e.uint.decode(d) : 0, | |
| 135 | isPreview: !!(32 & n), | |
| 130 | name: 1 & o ? e.string.decode(d) : null, | |
| 131 | mimetype: 2 & o ? e.string.decode(d) : null, | |
| 132 | dimensions: 4 & o ? u.decode(d) : null, | |
| 133 | userdata: 8 & o ? e.buffer.decode(d) : null, | |
| 134 | duration: 16 & o ? e.uint.decode(d) : 0, | |
| 135 | isPreview: !!(32 & o), | |
| 136 | 136 | } |
| 137 | 137 | }, |
| 138 | 138 | }, |
| 139 | 139 | f = { |
| 140 | preencode(d, n) { | |
| 141 | ;(e.fixed32.preencode(d, n.key), | |
| 142 | e.string.preencode(d, n.path), | |
| 143 | e.uint.preencode(d, n.version), | |
| 144 | e.uint.preencode(d, n.size)) | |
| 140 | preencode(d, o) { | |
| 141 | ;(e.fixed32.preencode(d, o.key), | |
| 142 | e.string.preencode(d, o.path), | |
| 143 | e.uint.preencode(d, o.version), | |
| 144 | e.uint.preencode(d, o.size)) | |
| 145 | 145 | }, |
| 146 | encode(d, n) { | |
| 147 | ;(e.fixed32.encode(d, n.key), | |
| 148 | e.string.encode(d, n.path), | |
| 149 | e.uint.encode(d, n.version), | |
| 150 | e.uint.encode(d, n.size)) | |
| 146 | encode(d, o) { | |
| 147 | ;(e.fixed32.encode(d, o.key), | |
| 148 | e.string.encode(d, o.path), | |
| 149 | e.uint.encode(d, o.version), | |
| 150 | e.uint.encode(d, o.size)) | |
| 151 | 151 | }, |
| 152 | 152 | decode: (d) => ({ |
| 153 | 153 | key: e.fixed32.decode(d), |
| … | … | @@ -157,72 +157,72 @@ const o = { |
| 157 | 157 | }), |
| 158 | 158 | }, |
| 159 | 159 | m = { |
| 160 | preencode(d, n) { | |
| 161 | ;(e.fixed32.preencode(d, n.key), s.preencode(d, n.blob)) | |
| 160 | preencode(d, o) { | |
| 161 | ;(e.fixed32.preencode(d, o.key), s.preencode(d, o.blob)) | |
| 162 | 162 | }, |
| 163 | encode(d, n) { | |
| 164 | ;(e.fixed32.encode(d, n.key), s.encode(d, n.blob)) | |
| 163 | encode(d, o) { | |
| 164 | ;(e.fixed32.encode(d, o.key), s.encode(d, o.blob)) | |
| 165 | 165 | }, |
| 166 | 166 | decode: (d) => ({ key: e.fixed32.decode(d), blob: s.decode(d) }), |
| 167 | 167 | }, |
| 168 | 168 | y = e.frame(m), |
| 169 | 169 | x = e.frame(f), |
| 170 | 170 | b = { |
| 171 | preencode(d, n) { | |
| 171 | preencode(d, o) { | |
| 172 | 172 | ;(d.end++, |
| 173 | n.inlined && e.buffer.preencode(d, n.inlined), | |
| 174 | n.blob && s.preencode(d, n.blob), | |
| 175 | n.externalBlob && y.preencode(d, n.externalBlob), | |
| 176 | n.externalDrive && x.preencode(d, n.externalDrive)) | |
| 173 | o.inlined && e.buffer.preencode(d, o.inlined), | |
| 174 | o.blob && s.preencode(d, o.blob), | |
| 175 | o.externalBlob && y.preencode(d, o.externalBlob), | |
| 176 | o.externalDrive && x.preencode(d, o.externalDrive)) | |
| 177 | 177 | }, |
| 178 | encode(d, n) { | |
| 179 | const o = | |
| 180 | (n.inlined ? 1 : 0) | | |
| 181 | (n.blob ? 2 : 0) | | |
| 182 | (n.externalBlob ? 4 : 0) | | |
| 183 | (n.externalDrive ? 8 : 0) | |
| 184 | ;(e.uint.encode(d, o), | |
| 185 | n.inlined && e.buffer.encode(d, n.inlined), | |
| 186 | n.blob && s.encode(d, n.blob), | |
| 187 | n.externalBlob && y.encode(d, n.externalBlob), | |
| 188 | n.externalDrive && x.encode(d, n.externalDrive)) | |
| 178 | encode(d, o) { | |
| 179 | const n = | |
| 180 | (o.inlined ? 1 : 0) | | |
| 181 | (o.blob ? 2 : 0) | | |
| 182 | (o.externalBlob ? 4 : 0) | | |
| 183 | (o.externalDrive ? 8 : 0) | |
| 184 | ;(e.uint.encode(d, n), | |
| 185 | o.inlined && e.buffer.encode(d, o.inlined), | |
| 186 | o.blob && s.encode(d, o.blob), | |
| 187 | o.externalBlob && y.encode(d, o.externalBlob), | |
| 188 | o.externalDrive && x.encode(d, o.externalDrive)) | |
| 189 | 189 | }, |
| 190 | 190 | decode(d) { |
| 191 | const n = e.uint.decode(d) | |
| 191 | const o = e.uint.decode(d) | |
| 192 | 192 | return { |
| 193 | inlined: 1 & n ? e.buffer.decode(d) : null, | |
| 194 | blob: 2 & n ? s.decode(d) : null, | |
| 195 | externalBlob: 4 & n ? y.decode(d) : null, | |
| 196 | externalDrive: 8 & n ? x.decode(d) : null, | |
| 193 | inlined: 1 & o ? e.buffer.decode(d) : null, | |
| 194 | blob: 2 & o ? s.decode(d) : null, | |
| 195 | externalBlob: 4 & o ? y.decode(d) : null, | |
| 196 | externalDrive: 8 & o ? x.decode(d) : null, | |
| 197 | 197 | } |
| 198 | 198 | }, |
| 199 | 199 | }, |
| 200 | 200 | k = e.frame(b), |
| 201 | 201 | v = e.frame(l), |
| 202 | 202 | g = { |
| 203 | preencode(d, n) { | |
| 204 | ;(k.preencode(d, n.pointer), | |
| 203 | preencode(d, o) { | |
| 204 | ;(k.preencode(d, o.pointer), | |
| 205 | 205 | d.end++, |
| 206 | n.metadata && v.preencode(d, n.metadata), | |
| 207 | n.preview && zr.preencode(d, n.preview), | |
| 208 | n.hash && e.fixed32.preencode(d, n.hash)) | |
| 206 | o.metadata && v.preencode(d, o.metadata), | |
| 207 | o.preview && Qr.preencode(d, o.preview), | |
| 208 | o.hash && e.fixed32.preencode(d, o.hash)) | |
| 209 | 209 | }, |
| 210 | encode(d, n) { | |
| 211 | const o = (n.metadata ? 1 : 0) | (n.preview ? 2 : 0) | (n.hash ? 4 : 0) | |
| 212 | ;(k.encode(d, n.pointer), | |
| 213 | e.uint.encode(d, o), | |
| 214 | n.metadata && v.encode(d, n.metadata), | |
| 215 | n.preview && zr.encode(d, n.preview), | |
| 216 | n.hash && e.fixed32.encode(d, n.hash)) | |
| 210 | encode(d, o) { | |
| 211 | const n = (o.metadata ? 1 : 0) | (o.preview ? 2 : 0) | (o.hash ? 4 : 0) | |
| 212 | ;(k.encode(d, o.pointer), | |
| 213 | e.uint.encode(d, n), | |
| 214 | o.metadata && v.encode(d, o.metadata), | |
| 215 | o.preview && Qr.encode(d, o.preview), | |
| 216 | o.hash && e.fixed32.encode(d, o.hash)) | |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| 219 | const n = k.decode(d), | |
| 220 | o = e.uint.decode(d) | |
| 219 | const o = k.decode(d), | |
| 220 | n = e.uint.decode(d) | |
| 221 | 221 | return { |
| 222 | pointer: n, | |
| 223 | metadata: 1 & o ? v.decode(d) : null, | |
| 224 | preview: 2 & o ? zr.decode(d) : null, | |
| 225 | hash: 4 & o ? e.fixed32.decode(d) : null, | |
| 222 | pointer: o, | |
| 223 | metadata: 1 & n ? v.decode(d) : null, | |
| 224 | preview: 2 & n ? Qr.decode(d) : null, | |
| 225 | hash: 4 & n ? e.fixed32.decode(d) : null, | |
| 226 | 226 | } |
| 227 | 227 | }, |
| 228 | 228 | }, |
| … | … | @@ -236,19 +236,19 @@ const o = { |
| 236 | 236 | d.medium && K.preencode(e, d.medium), |
| 237 | 237 | d.large && w.preencode(e, d.large)) |
| 238 | 238 | }, |
| 239 | encode(d, n) { | |
| 240 | const o = (n.small ? 1 : 0) | (n.medium ? 2 : 0) | (n.large ? 4 : 0) | |
| 241 | ;(e.uint.encode(d, o), | |
| 242 | n.small && h.encode(d, n.small), | |
| 243 | n.medium && K.encode(d, n.medium), | |
| 244 | n.large && w.encode(d, n.large)) | |
| 239 | encode(d, o) { | |
| 240 | const n = (o.small ? 1 : 0) | (o.medium ? 2 : 0) | (o.large ? 4 : 0) | |
| 241 | ;(e.uint.encode(d, n), | |
| 242 | o.small && h.encode(d, o.small), | |
| 243 | o.medium && K.encode(d, o.medium), | |
| 244 | o.large && w.encode(d, o.large)) | |
| 245 | 245 | }, |
| 246 | 246 | decode(d) { |
| 247 | const n = e.uint.decode(d) | |
| 247 | const o = e.uint.decode(d) | |
| 248 | 248 | return { |
| 249 | small: 1 & n ? h.decode(d) : null, | |
| 250 | medium: 2 & n ? K.decode(d) : null, | |
| 251 | large: 4 & n ? w.decode(d) : null, | |
| 249 | small: 1 & o ? h.decode(d) : null, | |
| 250 | medium: 2 & o ? K.decode(d) : null, | |
| 251 | large: 4 & o ? w.decode(d) : null, | |
| 252 | 252 | } |
| 253 | 253 | }, |
| 254 | 254 | }, |
| … | … | @@ -256,136 +256,136 @@ const o = { |
| 256 | 256 | preencode(e, d) { |
| 257 | 257 | e.end++ |
| 258 | 258 | }, |
| 259 | encode(d, n) { | |
| 260 | const o = n.isDeleted ? 1 : 0 | |
| 261 | e.uint.encode(d, o) | |
| 259 | encode(d, o) { | |
| 260 | const n = o.isDeleted ? 1 : 0 | |
| 261 | e.uint.encode(d, n) | |
| 262 | 262 | }, |
| 263 | 263 | decode: (d) => ({ isDeleted: !!(1 & e.uint.decode(d)) }), |
| 264 | 264 | }, |
| 265 | 265 | A = e.frame(P), |
| 266 | 266 | R = h, |
| 267 | 267 | D = { |
| 268 | preencode(d, o) { | |
| 269 | ;(e.uint.preencode(d, o.id), | |
| 270 | c.preencode(d, o.oplog), | |
| 271 | A.preencode(d, o.status), | |
| 272 | R.preencode(d, o.file), | |
| 268 | preencode(d, n) { | |
| 269 | ;(e.uint.preencode(d, n.id), | |
| 270 | c.preencode(d, n.oplog), | |
| 271 | A.preencode(d, n.status), | |
| 272 | R.preencode(d, n.file), | |
| 273 | 273 | d.end++, |
| 274 | n >= 14 && o.version && e.uint.preencode(d, o.version)) | |
| 274 | o >= 14 && n.version && e.uint.preencode(d, n.version)) | |
| 275 | 275 | }, |
| 276 | encode(d, o) { | |
| 277 | const r = n >= 14 && o.version ? 1 : 0 | |
| 278 | ;(e.uint.encode(d, o.id), | |
| 279 | c.encode(d, o.oplog), | |
| 280 | A.encode(d, o.status), | |
| 281 | R.encode(d, o.file), | |
| 276 | encode(d, n) { | |
| 277 | const r = o >= 14 && n.version ? 1 : 0 | |
| 278 | ;(e.uint.encode(d, n.id), | |
| 279 | c.encode(d, n.oplog), | |
| 280 | A.encode(d, n.status), | |
| 281 | R.encode(d, n.file), | |
| 282 | 282 | e.uint.encode(d, r), |
| 283 | n >= 14 && o.version && e.uint.encode(d, o.version)) | |
| 283 | o >= 14 && n.version && e.uint.encode(d, n.version)) | |
| 284 | 284 | }, |
| 285 | 285 | decode(d) { |
| 286 | const o = e.uint.decode(d), | |
| 286 | const n = e.uint.decode(d), | |
| 287 | 287 | r = c.decode(d), |
| 288 | 288 | t = A.decode(d), |
| 289 | 289 | i = R.decode(d), |
| 290 | 290 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 291 | 291 | return { |
| 292 | id: o, | |
| 292 | id: n, | |
| 293 | 293 | oplog: r, |
| 294 | 294 | status: t, |
| 295 | 295 | file: i, |
| 296 | version: n >= 14 && 1 & a ? e.uint.decode(d) : 0, | |
| 296 | version: o >= 14 && 1 & a ? e.uint.decode(d) : 0, | |
| 297 | 297 | } |
| 298 | 298 | }, |
| 299 | 299 | }, |
| 300 | S = { | |
| 300 | M = { | |
| 301 | 301 | preencode(e, d) { |
| 302 | 302 | e.end++ |
| 303 | 303 | }, |
| 304 | encode(d, n) { | |
| 305 | const o = (n.isActive ? 1 : 0) | (n.isIndexing ? 2 : 0) | |
| 306 | e.uint.encode(d, o) | |
| 304 | encode(d, o) { | |
| 305 | const n = (o.isActive ? 1 : 0) | (o.isIndexing ? 2 : 0) | |
| 306 | e.uint.encode(d, n) | |
| 307 | 307 | }, |
| 308 | 308 | decode(d) { |
| 309 | const n = e.uint.decode(d) | |
| 310 | return { isActive: !!(1 & n), isIndexing: !!(2 & n) } | |
| 309 | const o = e.uint.decode(d) | |
| 310 | return { isActive: !!(1 & o), isIndexing: !!(2 & o) } | |
| 311 | 311 | }, |
| 312 | 312 | }, |
| 313 | C = { | |
| 314 | preencode(d, o) { | |
| 313 | S = { | |
| 314 | preencode(d, n) { | |
| 315 | 315 | const c = |
| 316 | (o.isAdmin ? 1 : 0) | | |
| 317 | (o.isModerator ? 2 : 0) | | |
| 318 | (o.isPending ? 4 : 0) | | |
| 319 | (o.isActive ? 8 : 0) | | |
| 320 | (o.isMuted ? 16 : 0) | | |
| 321 | (o.isBanned ? 32 : 0) | | |
| 322 | (o.isShadowBanned ? 64 : 0) | | |
| 323 | (n >= 13 && o.isRemoved ? 128 : 0) | |
| 316 | (n.isAdmin ? 1 : 0) | | |
| 317 | (n.isModerator ? 2 : 0) | | |
| 318 | (n.isPending ? 4 : 0) | | |
| 319 | (n.isActive ? 8 : 0) | | |
| 320 | (n.isMuted ? 16 : 0) | | |
| 321 | (n.isBanned ? 32 : 0) | | |
| 322 | (n.isShadowBanned ? 64 : 0) | | |
| 323 | (o >= 13 && n.isRemoved ? 128 : 0) | |
| 324 | 324 | e.uint.preencode(d, c) |
| 325 | 325 | }, |
| 326 | encode(d, o) { | |
| 326 | encode(d, n) { | |
| 327 | 327 | const c = |
| 328 | (o.isAdmin ? 1 : 0) | | |
| 329 | (o.isModerator ? 2 : 0) | | |
| 330 | (o.isPending ? 4 : 0) | | |
| 331 | (o.isActive ? 8 : 0) | | |
| 332 | (o.isMuted ? 16 : 0) | | |
| 333 | (o.isBanned ? 32 : 0) | | |
| 334 | (o.isShadowBanned ? 64 : 0) | | |
| 335 | (n >= 13 && o.isRemoved ? 128 : 0) | |
| 328 | (n.isAdmin ? 1 : 0) | | |
| 329 | (n.isModerator ? 2 : 0) | | |
| 330 | (n.isPending ? 4 : 0) | | |
| 331 | (n.isActive ? 8 : 0) | | |
| 332 | (n.isMuted ? 16 : 0) | | |
| 333 | (n.isBanned ? 32 : 0) | | |
| 334 | (n.isShadowBanned ? 64 : 0) | | |
| 335 | (o >= 13 && n.isRemoved ? 128 : 0) | |
| 336 | 336 | e.uint.encode(d, c) |
| 337 | 337 | }, |
| 338 | 338 | decode(d) { |
| 339 | const o = e.uint.decode(d) | |
| 339 | const n = e.uint.decode(d) | |
| 340 | 340 | return { |
| 341 | isAdmin: !!(1 & o), | |
| 342 | isModerator: !!(2 & o), | |
| 343 | isPending: !!(4 & o), | |
| 344 | isActive: !!(8 & o), | |
| 345 | isMuted: !!(16 & o), | |
| 346 | isBanned: !!(32 & o), | |
| 347 | isShadowBanned: !!(64 & o), | |
| 348 | isRemoved: n >= 13 && !!(128 & o), | |
| 341 | isAdmin: !!(1 & n), | |
| 342 | isModerator: !!(2 & n), | |
| 343 | isPending: !!(4 & n), | |
| 344 | isActive: !!(8 & n), | |
| 345 | isMuted: !!(16 & n), | |
| 346 | isBanned: !!(32 & n), | |
| 347 | isShadowBanned: !!(64 & n), | |
| 348 | isRemoved: o >= 13 && !!(128 & n), | |
| 349 | 349 | } |
| 350 | 350 | }, |
| 351 | 351 | }, |
| 352 | M = { | |
| 352 | C = { | |
| 353 | 353 | preencode(e, d) { |
| 354 | 354 | e.end++ |
| 355 | 355 | }, |
| 356 | encode(d, n) { | |
| 357 | const o = (n.isMuted ? 1 : 0) | (n.isBanned ? 2 : 0) | (n.isShadowBanned ? 4 : 0) | |
| 358 | e.uint.encode(d, o) | |
| 356 | encode(d, o) { | |
| 357 | const n = (o.isMuted ? 1 : 0) | (o.isBanned ? 2 : 0) | (o.isShadowBanned ? 4 : 0) | |
| 358 | e.uint.encode(d, n) | |
| 359 | 359 | }, |
| 360 | 360 | decode(d) { |
| 361 | const n = e.uint.decode(d) | |
| 362 | return { isMuted: !!(1 & n), isBanned: !!(2 & n), isShadowBanned: !!(4 & n) } | |
| 361 | const o = e.uint.decode(d) | |
| 362 | return { isMuted: !!(1 & o), isBanned: !!(2 & o), isShadowBanned: !!(4 & o) } | |
| 363 | 363 | }, |
| 364 | 364 | }, |
| 365 | 365 | L = { |
| 366 | preencode(d, n) { | |
| 367 | e.uint.preencode(d, n.version) | |
| 366 | preencode(d, o) { | |
| 367 | e.uint.preencode(d, o.version) | |
| 368 | 368 | }, |
| 369 | encode(d, n) { | |
| 370 | e.uint.encode(d, n.version) | |
| 369 | encode(d, o) { | |
| 370 | e.uint.encode(d, o.version) | |
| 371 | 371 | }, |
| 372 | 372 | decode: (d) => ({ version: e.uint.decode(d) }), |
| 373 | 373 | }, |
| 374 | 374 | q = { |
| 375 | preencode(d, n) { | |
| 376 | ;(e.uint.preencode(d, n.total), e.uint.preencode(d, n.active)) | |
| 375 | preencode(d, o) { | |
| 376 | ;(e.uint.preencode(d, o.total), e.uint.preencode(d, o.active)) | |
| 377 | 377 | }, |
| 378 | encode(d, n) { | |
| 379 | ;(e.uint.encode(d, n.total), e.uint.encode(d, n.active)) | |
| 378 | encode(d, o) { | |
| 379 | ;(e.uint.encode(d, o.total), e.uint.encode(d, o.active)) | |
| 380 | 380 | }, |
| 381 | 381 | decode: (d) => ({ total: e.uint.decode(d), active: e.uint.decode(d) }), |
| 382 | 382 | }, |
| 383 | 383 | F = { |
| 384 | preencode(d, n) { | |
| 385 | ;(e.uint.preencode(d, n.total), e.uint.preencode(d, n.active), e.uint.preencode(d, n.pending)) | |
| 384 | preencode(d, o) { | |
| 385 | ;(e.uint.preencode(d, o.total), e.uint.preencode(d, o.active), e.uint.preencode(d, o.pending)) | |
| 386 | 386 | }, |
| 387 | encode(d, n) { | |
| 388 | ;(e.uint.encode(d, n.total), e.uint.encode(d, n.active), e.uint.encode(d, n.pending)) | |
| 387 | encode(d, o) { | |
| 388 | ;(e.uint.encode(d, o.total), e.uint.encode(d, o.active), e.uint.encode(d, o.pending)) | |
| 389 | 389 | }, |
| 390 | 390 | decode: (d) => ({ |
| 391 | 391 | total: e.uint.decode(d), |
| … | … | @@ -394,157 +394,157 @@ const o = { |
| 394 | 394 | }), |
| 395 | 395 | }, |
| 396 | 396 | E = { |
| 397 | preencode(d, o) { | |
| 398 | ;(e.uint.preencode(d, o.clock), | |
| 399 | e.uint.preencode(d, o.pinned), | |
| 400 | e.uint.preencode(d, o.threads), | |
| 401 | e.uint.preencode(d, o.timestamp), | |
| 397 | preencode(d, n) { | |
| 398 | ;(e.uint.preencode(d, n.clock), | |
| 399 | e.uint.preencode(d, n.pinned), | |
| 400 | e.uint.preencode(d, n.threads), | |
| 401 | e.uint.preencode(d, n.timestamp), | |
| 402 | 402 | d.end++, |
| 403 | n >= 15 && o.flagsClock && e.uint.preencode(d, o.flagsClock)) | |
| 403 | o >= 15 && n.flagsClock && e.uint.preencode(d, n.flagsClock)) | |
| 404 | 404 | }, |
| 405 | encode(d, o) { | |
| 406 | const c = n >= 15 && o.flagsClock ? 1 : 0 | |
| 407 | ;(e.uint.encode(d, o.clock), | |
| 408 | e.uint.encode(d, o.pinned), | |
| 409 | e.uint.encode(d, o.threads), | |
| 410 | e.uint.encode(d, o.timestamp), | |
| 405 | encode(d, n) { | |
| 406 | const c = o >= 15 && n.flagsClock ? 1 : 0 | |
| 407 | ;(e.uint.encode(d, n.clock), | |
| 408 | e.uint.encode(d, n.pinned), | |
| 409 | e.uint.encode(d, n.threads), | |
| 410 | e.uint.encode(d, n.timestamp), | |
| 411 | 411 | e.uint.encode(d, c), |
| 412 | n >= 15 && o.flagsClock && e.uint.encode(d, o.flagsClock)) | |
| 412 | o >= 15 && n.flagsClock && e.uint.encode(d, n.flagsClock)) | |
| 413 | 413 | }, |
| 414 | 414 | decode(d) { |
| 415 | const o = e.uint.decode(d), | |
| 415 | const n = e.uint.decode(d), | |
| 416 | 416 | c = e.uint.decode(d), |
| 417 | 417 | r = e.uint.decode(d), |
| 418 | 418 | t = e.uint.decode(d), |
| 419 | 419 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 420 | 420 | return { |
| 421 | clock: o, | |
| 421 | clock: n, | |
| 422 | 422 | pinned: c, |
| 423 | 423 | threads: r, |
| 424 | 424 | timestamp: t, |
| 425 | flagsClock: n >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 425 | flagsClock: o >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 426 | 426 | } |
| 427 | 427 | }, |
| 428 | 428 | }, |
| 429 | 429 | B = { |
| 430 | preencode(d, n) { | |
| 431 | e.uint.preencode(d, n.clock) | |
| 430 | preencode(d, o) { | |
| 431 | e.uint.preencode(d, o.clock) | |
| 432 | 432 | }, |
| 433 | encode(d, n) { | |
| 434 | e.uint.encode(d, n.clock) | |
| 433 | encode(d, o) { | |
| 434 | e.uint.encode(d, o.clock) | |
| 435 | 435 | }, |
| 436 | 436 | decode: (d) => ({ clock: e.uint.decode(d) }), |
| 437 | 437 | }, |
| 438 | 438 | I = e.frame(q), |
| 439 | 439 | N = e.frame(F), |
| 440 | 440 | j = e.frame(E), |
| 441 | O = e.frame(B), | |
| 442 | J = { | |
| 441 | U = e.frame(B), | |
| 442 | O = { | |
| 443 | 443 | preencode(e, d) { |
| 444 | 444 | ;(I.preencode(e, d.devices), |
| 445 | 445 | N.preencode(e, d.members), |
| 446 | 446 | j.preencode(e, d.chat), |
| 447 | O.preencode(e, d.files)) | |
| 447 | U.preencode(e, d.files)) | |
| 448 | 448 | }, |
| 449 | 449 | encode(e, d) { |
| 450 | ;(I.encode(e, d.devices), N.encode(e, d.members), j.encode(e, d.chat), O.encode(e, d.files)) | |
| 450 | ;(I.encode(e, d.devices), N.encode(e, d.members), j.encode(e, d.chat), U.encode(e, d.files)) | |
| 451 | 451 | }, |
| 452 | 452 | decode: (e) => ({ |
| 453 | 453 | devices: I.decode(e), |
| 454 | 454 | members: N.decode(e), |
| 455 | 455 | chat: j.decode(e), |
| 456 | files: O.decode(e), | |
| 456 | files: U.decode(e), | |
| 457 | 457 | }), |
| 458 | 458 | }, |
| 459 | U = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 459 | J = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 460 | 460 | V = { |
| 461 | 461 | preencode(e, d) { |
| 462 | 462 | e.end++ |
| 463 | 463 | }, |
| 464 | encode(d, n) { | |
| 465 | if (n > 3) throw new Error("Unknown enum") | |
| 466 | e.uint.encode(d, n) | |
| 464 | encode(d, o) { | |
| 465 | if (o > 3) throw new Error("Unknown enum") | |
| 466 | e.uint.encode(d, o) | |
| 467 | 467 | }, |
| 468 | 468 | decode: (d) => e.uint.decode(d), |
| 469 | 469 | }, |
| 470 | 470 | H = { |
| 471 | preencode(d, o) { | |
| 471 | preencode(d, n) { | |
| 472 | 472 | const c = |
| 473 | (o.roomType ? 1 : 0) | | |
| 474 | (o.isExperimental ? 2 : 0) | | |
| 475 | (o.isJoiningDisabled ? 4 : 0) | | |
| 476 | (o.isAppendingDisabled ? 8 : 0) | | |
| 477 | (o.isCallingDisabled ? 16 : 0) | | |
| 478 | (o.isMembershipEventsDisabled ? 32 : 0) | | |
| 479 | (n >= 19 && o.isAttachmentsDisabled ? 64 : 0) | | |
| 480 | (n >= 19 && o.isLinksDisabled ? 128 : 0) | | |
| 481 | (n >= 20 && o.buildType ? 256 : 0) | |
| 473 | (n.roomType ? 1 : 0) | | |
| 474 | (n.isExperimental ? 2 : 0) | | |
| 475 | (n.isJoiningDisabled ? 4 : 0) | | |
| 476 | (n.isAppendingDisabled ? 8 : 0) | | |
| 477 | (n.isCallingDisabled ? 16 : 0) | | |
| 478 | (n.isMembershipEventsDisabled ? 32 : 0) | | |
| 479 | (o >= 19 && n.isAttachmentsDisabled ? 64 : 0) | | |
| 480 | (o >= 19 && n.isLinksDisabled ? 128 : 0) | | |
| 481 | (o >= 20 && n.buildType ? 256 : 0) | |
| 482 | 482 | ;(e.uint.preencode(d, c), |
| 483 | o.roomType && V.preencode(d, o.roomType), | |
| 484 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 483 | n.roomType && V.preencode(d, n.roomType), | |
| 484 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 485 | 485 | }, |
| 486 | encode(d, o) { | |
| 486 | encode(d, n) { | |
| 487 | 487 | const c = |
| 488 | (o.roomType ? 1 : 0) | | |
| 489 | (o.isExperimental ? 2 : 0) | | |
| 490 | (o.isJoiningDisabled ? 4 : 0) | | |
| 491 | (o.isAppendingDisabled ? 8 : 0) | | |
| 492 | (o.isCallingDisabled ? 16 : 0) | | |
| 493 | (o.isMembershipEventsDisabled ? 32 : 0) | | |
| 494 | (n >= 19 && o.isAttachmentsDisabled ? 64 : 0) | | |
| 495 | (n >= 19 && o.isLinksDisabled ? 128 : 0) | | |
| 496 | (n >= 20 && o.buildType ? 256 : 0) | |
| 488 | (n.roomType ? 1 : 0) | | |
| 489 | (n.isExperimental ? 2 : 0) | | |
| 490 | (n.isJoiningDisabled ? 4 : 0) | | |
| 491 | (n.isAppendingDisabled ? 8 : 0) | | |
| 492 | (n.isCallingDisabled ? 16 : 0) | | |
| 493 | (n.isMembershipEventsDisabled ? 32 : 0) | | |
| 494 | (o >= 19 && n.isAttachmentsDisabled ? 64 : 0) | | |
| 495 | (o >= 19 && n.isLinksDisabled ? 128 : 0) | | |
| 496 | (o >= 20 && n.buildType ? 256 : 0) | |
| 497 | 497 | ;(e.uint.encode(d, c), |
| 498 | o.roomType && V.encode(d, o.roomType), | |
| 499 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 498 | n.roomType && V.encode(d, n.roomType), | |
| 499 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 500 | 500 | }, |
| 501 | 501 | decode(d) { |
| 502 | const o = e.uint.decode(d) | |
| 502 | const n = e.uint.decode(d) | |
| 503 | 503 | return { |
| 504 | roomType: 1 & o ? V.decode(d) : 0, | |
| 505 | isExperimental: !!(2 & o), | |
| 506 | isJoiningDisabled: !!(4 & o), | |
| 507 | isAppendingDisabled: !!(8 & o), | |
| 508 | isCallingDisabled: !!(16 & o), | |
| 509 | isMembershipEventsDisabled: !!(32 & o), | |
| 510 | isAttachmentsDisabled: n >= 19 && !!(64 & o), | |
| 511 | isLinksDisabled: n >= 19 && !!(128 & o), | |
| 512 | buildType: n >= 20 && 256 & o ? Or.decode(d) : null, | |
| 504 | roomType: 1 & n ? V.decode(d) : 0, | |
| 505 | isExperimental: !!(2 & n), | |
| 506 | isJoiningDisabled: !!(4 & n), | |
| 507 | isAppendingDisabled: !!(8 & n), | |
| 508 | isCallingDisabled: !!(16 & n), | |
| 509 | isMembershipEventsDisabled: !!(32 & n), | |
| 510 | isAttachmentsDisabled: o >= 19 && !!(64 & n), | |
| 511 | isLinksDisabled: o >= 19 && !!(128 & n), | |
| 512 | buildType: o >= 20 && 256 & n ? Ur.decode(d) : null, | |
| 513 | 513 | } |
| 514 | 514 | }, |
| 515 | 515 | }, |
| 516 | 516 | z = e.frame(L), |
| 517 | 517 | G = e.frame(H), |
| 518 | 518 | Q = { |
| 519 | preencode(d, n) { | |
| 520 | ;(z.preencode(d, n.abi), G.preencode(d, n.settings), e.uint.preencode(d, n.creationTime)) | |
| 519 | preencode(d, o) { | |
| 520 | ;(z.preencode(d, o.abi), G.preencode(d, o.settings), e.uint.preencode(d, o.creationTime)) | |
| 521 | 521 | }, |
| 522 | encode(d, n) { | |
| 523 | ;(z.encode(d, n.abi), G.encode(d, n.settings), e.uint.encode(d, n.creationTime)) | |
| 522 | encode(d, o) { | |
| 523 | ;(z.encode(d, o.abi), G.encode(d, o.settings), e.uint.encode(d, o.creationTime)) | |
| 524 | 524 | }, |
| 525 | 525 | decode: (d) => ({ abi: z.decode(d), settings: G.decode(d), creationTime: e.uint.decode(d) }), |
| 526 | 526 | }, |
| 527 | 527 | W = { |
| 528 | preencode(d, n) { | |
| 529 | e.fixed32.preencode(d, n.seed) | |
| 528 | preencode(d, o) { | |
| 529 | e.fixed32.preencode(d, o.seed) | |
| 530 | 530 | }, |
| 531 | encode(d, n) { | |
| 532 | e.fixed32.encode(d, n.seed) | |
| 531 | encode(d, o) { | |
| 532 | e.fixed32.encode(d, o.seed) | |
| 533 | 533 | }, |
| 534 | 534 | decode: (d) => ({ seed: e.fixed32.decode(d) }), |
| 535 | 535 | }, |
| 536 | 536 | X = { |
| 537 | preencode(d, n) { | |
| 538 | ;(r.preencode(d, n.mailboxKeyPair), | |
| 539 | t.preencode(d, n.discoveryKeyPair), | |
| 540 | e.fixed32.preencode(d, n.wakeupTopic), | |
| 541 | e.fixed32.preencode(d, n.swarmTopic)) | |
| 537 | preencode(d, o) { | |
| 538 | ;(r.preencode(d, o.mailboxKeyPair), | |
| 539 | t.preencode(d, o.discoveryKeyPair), | |
| 540 | e.fixed32.preencode(d, o.wakeupTopic), | |
| 541 | e.fixed32.preencode(d, o.swarmTopic)) | |
| 542 | 542 | }, |
| 543 | encode(d, n) { | |
| 544 | ;(r.encode(d, n.mailboxKeyPair), | |
| 545 | t.encode(d, n.discoveryKeyPair), | |
| 546 | e.fixed32.encode(d, n.wakeupTopic), | |
| 547 | e.fixed32.encode(d, n.swarmTopic)) | |
| 543 | encode(d, o) { | |
| 544 | ;(r.encode(d, o.mailboxKeyPair), | |
| 545 | t.encode(d, o.discoveryKeyPair), | |
| 546 | e.fixed32.encode(d, o.wakeupTopic), | |
| 547 | e.fixed32.encode(d, o.swarmTopic)) | |
| 548 | 548 | }, |
| 549 | 549 | decode: (d) => ({ |
| 550 | 550 | mailboxKeyPair: r.decode(d), |
| … | … | @@ -555,45 +555,45 @@ const o = { |
| 555 | 555 | }, |
| 556 | 556 | Y = e.array(e.fixed32), |
| 557 | 557 | Z = { |
| 558 | preencode(d, o) { | |
| 558 | preencode(d, n) { | |
| 559 | 559 | ;(d.end++, |
| 560 | o.title && e.string.preencode(d, o.title), | |
| 561 | o.avatar && Gr.preencode(d, o.avatar), | |
| 562 | o.description && e.string.preencode(d, o.description), | |
| 563 | n >= 11 && o.supportedLanguages && Qr.preencode(d, o.supportedLanguages), | |
| 564 | n >= 13 && o.blindPeers && Y.preencode(d, o.blindPeers)) | |
| 560 | n.title && e.string.preencode(d, n.title), | |
| 561 | n.avatar && Wr.preencode(d, n.avatar), | |
| 562 | n.description && e.string.preencode(d, n.description), | |
| 563 | o >= 11 && n.supportedLanguages && Xr.preencode(d, n.supportedLanguages), | |
| 564 | o >= 13 && n.blindPeers && Y.preencode(d, n.blindPeers)) | |
| 565 | 565 | }, |
| 566 | encode(d, o) { | |
| 566 | encode(d, n) { | |
| 567 | 567 | const c = |
| 568 | (o.title ? 1 : 0) | | |
| 569 | (o.avatar ? 2 : 0) | | |
| 570 | (o.description ? 4 : 0) | | |
| 571 | (n >= 11 && o.supportedLanguages ? 8 : 0) | | |
| 572 | (n >= 13 && o.blindPeers ? 16 : 0) | |
| 568 | (n.title ? 1 : 0) | | |
| 569 | (n.avatar ? 2 : 0) | | |
| 570 | (n.description ? 4 : 0) | | |
| 571 | (o >= 11 && n.supportedLanguages ? 8 : 0) | | |
| 572 | (o >= 13 && n.blindPeers ? 16 : 0) | |
| 573 | 573 | ;(e.uint.encode(d, c), |
| 574 | o.title && e.string.encode(d, o.title), | |
| 575 | o.avatar && Gr.encode(d, o.avatar), | |
| 576 | o.description && e.string.encode(d, o.description), | |
| 577 | n >= 11 && o.supportedLanguages && Qr.encode(d, o.supportedLanguages), | |
| 578 | n >= 13 && o.blindPeers && Y.encode(d, o.blindPeers)) | |
| 574 | n.title && e.string.encode(d, n.title), | |
| 575 | n.avatar && Wr.encode(d, n.avatar), | |
| 576 | n.description && e.string.encode(d, n.description), | |
| 577 | o >= 11 && n.supportedLanguages && Xr.encode(d, n.supportedLanguages), | |
| 578 | o >= 13 && n.blindPeers && Y.encode(d, n.blindPeers)) | |
| 579 | 579 | }, |
| 580 | 580 | decode(d) { |
| 581 | const o = e.uint.decode(d) | |
| 581 | const n = e.uint.decode(d) | |
| 582 | 582 | return { |
| 583 | title: 1 & o ? e.string.decode(d) : null, | |
| 584 | avatar: 2 & o ? Gr.decode(d) : null, | |
| 585 | description: 4 & o ? e.string.decode(d) : null, | |
| 586 | supportedLanguages: n >= 11 && 8 & o ? Qr.decode(d) : null, | |
| 587 | blindPeers: n >= 13 && 16 & o ? Y.decode(d) : null, | |
| 583 | title: 1 & n ? e.string.decode(d) : null, | |
| 584 | avatar: 2 & n ? Wr.decode(d) : null, | |
| 585 | description: 4 & n ? e.string.decode(d) : null, | |
| 586 | supportedLanguages: o >= 11 && 8 & n ? Xr.decode(d) : null, | |
| 587 | blindPeers: o >= 13 && 16 & n ? Y.decode(d) : null, | |
| 588 | 588 | } |
| 589 | 589 | }, |
| 590 | 590 | }, |
| 591 | 591 | $ = { |
| 592 | preencode(d, n) { | |
| 593 | e.fixed32.preencode(d, n.key) | |
| 592 | preencode(d, o) { | |
| 593 | e.fixed32.preencode(d, o.key) | |
| 594 | 594 | }, |
| 595 | encode(d, n) { | |
| 596 | e.fixed32.encode(d, n.key) | |
| 595 | encode(d, o) { | |
| 596 | e.fixed32.encode(d, o.key) | |
| 597 | 597 | }, |
| 598 | 598 | decode: (d) => ({ key: e.fixed32.decode(d) }), |
| 599 | 599 | }, |
| … | … | @@ -608,118 +608,118 @@ const o = { |
| 608 | 608 | }, |
| 609 | 609 | decode: (e) => ({ header: _.decode(e), peer: ee.decode(e) }), |
| 610 | 610 | }, |
| 611 | ne = _, | |
| 612 | oe = { | |
| 613 | preencode(d, n) { | |
| 614 | ;(ne.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 611 | oe = _, | |
| 612 | ne = { | |
| 613 | preencode(d, o) { | |
| 614 | ;(oe.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 615 | 615 | }, |
| 616 | encode(d, n) { | |
| 617 | ;(ne.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 616 | encode(d, o) { | |
| 617 | ;(oe.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 618 | 618 | }, |
| 619 | decode: (d) => ({ header: ne.decode(d), key: e.fixed32.decode(d) }), | |
| 619 | decode: (d) => ({ header: oe.decode(d), key: e.fixed32.decode(d) }), | |
| 620 | 620 | }, |
| 621 | 621 | ce = { |
| 622 | preencode(d, n) { | |
| 623 | ;(e.fixed32.preencode(d, n.memberKey), e.buffer.preencode(d, n.proof)) | |
| 622 | preencode(d, o) { | |
| 623 | ;(e.fixed32.preencode(d, o.memberKey), e.buffer.preencode(d, o.proof)) | |
| 624 | 624 | }, |
| 625 | encode(d, n) { | |
| 626 | ;(e.fixed32.encode(d, n.memberKey), e.buffer.encode(d, n.proof)) | |
| 625 | encode(d, o) { | |
| 626 | ;(e.fixed32.encode(d, o.memberKey), e.buffer.encode(d, o.proof)) | |
| 627 | 627 | }, |
| 628 | 628 | decode: (d) => ({ memberKey: e.fixed32.decode(d), proof: e.buffer.decode(d) }), |
| 629 | 629 | }, |
| 630 | 630 | re = { |
| 631 | preencode(d, n) { | |
| 632 | ;(e.fixed32.preencode(d, n.id), e.buffer.preencode(d, n.response)) | |
| 631 | preencode(d, o) { | |
| 632 | ;(e.fixed32.preencode(d, o.id), e.buffer.preencode(d, o.response)) | |
| 633 | 633 | }, |
| 634 | encode(d, n) { | |
| 635 | ;(e.fixed32.encode(d, n.id), e.buffer.encode(d, n.response)) | |
| 634 | encode(d, o) { | |
| 635 | ;(e.fixed32.encode(d, o.id), e.buffer.encode(d, o.response)) | |
| 636 | 636 | }, |
| 637 | 637 | decode: (d) => ({ id: e.fixed32.decode(d), response: e.buffer.decode(d) }), |
| 638 | 638 | }, |
| 639 | te = e.frame(S), | |
| 639 | te = e.frame(M), | |
| 640 | 640 | ie = e.frame(re), |
| 641 | 641 | ae = { |
| 642 | preencode(d, n) { | |
| 643 | ;(e.fixed32.preencode(d, n.key), | |
| 644 | e.fixed32.preencode(d, n.memberKey), | |
| 645 | te.preencode(d, n.status), | |
| 646 | Wr.preencode(d, n.profile), | |
| 642 | preencode(d, o) { | |
| 643 | ;(e.fixed32.preencode(d, o.key), | |
| 644 | e.fixed32.preencode(d, o.memberKey), | |
| 645 | te.preencode(d, o.status), | |
| 646 | Yr.preencode(d, o.profile), | |
| 647 | 647 | d.end++, |
| 648 | n.invitation && ie.preencode(d, n.invitation)) | |
| 648 | o.invitation && ie.preencode(d, o.invitation)) | |
| 649 | 649 | }, |
| 650 | encode(d, n) { | |
| 651 | const o = n.invitation ? 1 : 0 | |
| 652 | ;(e.fixed32.encode(d, n.key), | |
| 653 | e.fixed32.encode(d, n.memberKey), | |
| 654 | te.encode(d, n.status), | |
| 655 | Wr.encode(d, n.profile), | |
| 656 | e.uint.encode(d, o), | |
| 657 | n.invitation && ie.encode(d, n.invitation)) | |
| 650 | encode(d, o) { | |
| 651 | const n = o.invitation ? 1 : 0 | |
| 652 | ;(e.fixed32.encode(d, o.key), | |
| 653 | e.fixed32.encode(d, o.memberKey), | |
| 654 | te.encode(d, o.status), | |
| 655 | Yr.encode(d, o.profile), | |
| 656 | e.uint.encode(d, n), | |
| 657 | o.invitation && ie.encode(d, o.invitation)) | |
| 658 | 658 | }, |
| 659 | 659 | decode: (d) => ({ |
| 660 | 660 | key: e.fixed32.decode(d), |
| 661 | 661 | memberKey: e.fixed32.decode(d), |
| 662 | 662 | status: te.decode(d), |
| 663 | profile: Wr.decode(d), | |
| 663 | profile: Yr.decode(d), | |
| 664 | 664 | invitation: 1 & e.uint.decode(d) ? ie.decode(d) : null, |
| 665 | 665 | }), |
| 666 | 666 | }, |
| 667 | 667 | se = { |
| 668 | preencode(d, n) { | |
| 669 | ;(e.uint.preencode(d, n.timestamp), | |
| 668 | preencode(d, o) { | |
| 669 | ;(e.uint.preencode(d, o.timestamp), | |
| 670 | 670 | d.end++, |
| 671 | n.mailbox && e.fixed32.preencode(d, n.mailbox), | |
| 672 | n.displayName && e.string.preencode(d, n.displayName), | |
| 673 | n.avatar && Xr.preencode(d, n.avatar), | |
| 674 | n.username && e.string.preencode(d, n.username)) | |
| 671 | o.mailbox && e.fixed32.preencode(d, o.mailbox), | |
| 672 | o.displayName && e.string.preencode(d, o.displayName), | |
| 673 | o.avatar && Zr.preencode(d, o.avatar), | |
| 674 | o.username && e.string.preencode(d, o.username)) | |
| 675 | 675 | }, |
| 676 | encode(d, n) { | |
| 677 | const o = | |
| 678 | (n.mailbox ? 1 : 0) | (n.displayName ? 2 : 0) | (n.avatar ? 4 : 0) | (n.username ? 8 : 0) | |
| 679 | ;(e.uint.encode(d, n.timestamp), | |
| 680 | e.uint.encode(d, o), | |
| 681 | n.mailbox && e.fixed32.encode(d, n.mailbox), | |
| 682 | n.displayName && e.string.encode(d, n.displayName), | |
| 683 | n.avatar && Xr.encode(d, n.avatar), | |
| 684 | n.username && e.string.encode(d, n.username)) | |
| 676 | encode(d, o) { | |
| 677 | const n = | |
| 678 | (o.mailbox ? 1 : 0) | (o.displayName ? 2 : 0) | (o.avatar ? 4 : 0) | (o.username ? 8 : 0) | |
| 679 | ;(e.uint.encode(d, o.timestamp), | |
| 680 | e.uint.encode(d, n), | |
| 681 | o.mailbox && e.fixed32.encode(d, o.mailbox), | |
| 682 | o.displayName && e.string.encode(d, o.displayName), | |
| 683 | o.avatar && Zr.encode(d, o.avatar), | |
| 684 | o.username && e.string.encode(d, o.username)) | |
| 685 | 685 | }, |
| 686 | 686 | decode(d) { |
| 687 | const n = e.uint.decode(d), | |
| 688 | o = e.uint.decode(d) | |
| 687 | const o = e.uint.decode(d), | |
| 688 | n = e.uint.decode(d) | |
| 689 | 689 | return { |
| 690 | timestamp: n, | |
| 691 | mailbox: 1 & o ? e.fixed32.decode(d) : null, | |
| 692 | displayName: 2 & o ? e.string.decode(d) : null, | |
| 693 | avatar: 4 & o ? Xr.decode(d) : null, | |
| 694 | username: 8 & o ? e.string.decode(d) : null, | |
| 690 | timestamp: o, | |
| 691 | mailbox: 1 & n ? e.fixed32.decode(d) : null, | |
| 692 | displayName: 2 & n ? e.string.decode(d) : null, | |
| 693 | avatar: 4 & n ? Zr.decode(d) : null, | |
| 694 | username: 8 & n ? e.string.decode(d) : null, | |
| 695 | 695 | } |
| 696 | 696 | }, |
| 697 | 697 | }, |
| 698 | 698 | pe = { |
| 699 | preencode(d, o) { | |
| 699 | preencode(d, n) { | |
| 700 | 700 | ;(d.end++, |
| 701 | o.swarmKey && e.fixed32.preencode(d, o.swarmKey), | |
| 702 | o.name && e.string.preencode(d, o.name), | |
| 703 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 701 | n.swarmKey && e.fixed32.preencode(d, n.swarmKey), | |
| 702 | n.name && e.string.preencode(d, n.name), | |
| 703 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 704 | 704 | }, |
| 705 | encode(d, o) { | |
| 705 | encode(d, n) { | |
| 706 | 706 | const c = |
| 707 | (o.swarmKey ? 1 : 0) | | |
| 708 | (o.name ? 2 : 0) | | |
| 709 | (o.isMobile ? 4 : 0) | | |
| 710 | (n >= 20 && o.buildType ? 8 : 0) | |
| 707 | (n.swarmKey ? 1 : 0) | | |
| 708 | (n.name ? 2 : 0) | | |
| 709 | (n.isMobile ? 4 : 0) | | |
| 710 | (o >= 20 && n.buildType ? 8 : 0) | |
| 711 | 711 | ;(e.uint.encode(d, c), |
| 712 | o.swarmKey && e.fixed32.encode(d, o.swarmKey), | |
| 713 | o.name && e.string.encode(d, o.name), | |
| 714 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 712 | n.swarmKey && e.fixed32.encode(d, n.swarmKey), | |
| 713 | n.name && e.string.encode(d, n.name), | |
| 714 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 715 | 715 | }, |
| 716 | 716 | decode(d) { |
| 717 | const o = e.uint.decode(d) | |
| 717 | const n = e.uint.decode(d) | |
| 718 | 718 | return { |
| 719 | swarmKey: 1 & o ? e.fixed32.decode(d) : null, | |
| 720 | name: 2 & o ? e.string.decode(d) : null, | |
| 721 | isMobile: !!(4 & o), | |
| 722 | buildType: n >= 20 && 8 & o ? Or.decode(d) : null, | |
| 719 | swarmKey: 1 & n ? e.fixed32.decode(d) : null, | |
| 720 | name: 2 & n ? e.string.decode(d) : null, | |
| 721 | isMobile: !!(4 & n), | |
| 722 | buildType: o >= 20 && 8 & n ? Ur.decode(d) : null, | |
| 723 | 723 | } |
| 724 | 724 | }, |
| 725 | 725 | }, |
| … | … | @@ -735,21 +735,21 @@ const o = { |
| 735 | 735 | }, |
| 736 | 736 | fe = { |
| 737 | 737 | preencode(e, d) { |
| 738 | ;(Yr.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 738 | ;($r.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 739 | 739 | }, |
| 740 | 740 | encode(e, d) { |
| 741 | ;(Yr.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 741 | ;($r.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 742 | 742 | }, |
| 743 | decode: (e) => ({ profile: Yr.decode(e), attestation: ce.decode(e) }), | |
| 743 | decode: (e) => ({ profile: $r.decode(e), attestation: ce.decode(e) }), | |
| 744 | 744 | }, |
| 745 | 745 | me = { |
| 746 | preencode(d, n) { | |
| 747 | ;(e.fixed32.preencode(d, n.id), | |
| 748 | e.buffer.preencode(d, n.data), | |
| 749 | e.buffer.preencode(d, n.signature)) | |
| 746 | preencode(d, o) { | |
| 747 | ;(e.fixed32.preencode(d, o.id), | |
| 748 | e.buffer.preencode(d, o.data), | |
| 749 | e.buffer.preencode(d, o.signature)) | |
| 750 | 750 | }, |
| 751 | encode(d, n) { | |
| 752 | ;(e.fixed32.encode(d, n.id), e.buffer.encode(d, n.data), e.buffer.encode(d, n.signature)) | |
| 751 | encode(d, o) { | |
| 752 | ;(e.fixed32.encode(d, o.id), e.buffer.encode(d, o.data), e.buffer.encode(d, o.signature)) | |
| 753 | 753 | }, |
| 754 | 754 | decode: (d) => ({ |
| 755 | 755 | id: e.fixed32.decode(d), |
| … | … | @@ -758,20 +758,20 @@ const o = { |
| 758 | 758 | }), |
| 759 | 759 | }, |
| 760 | 760 | ye = { |
| 761 | preencode(d, n) { | |
| 762 | e.fixed32.preencode(d, n.devicePublicKey) | |
| 761 | preencode(d, o) { | |
| 762 | e.fixed32.preencode(d, o.devicePublicKey) | |
| 763 | 763 | }, |
| 764 | encode(d, n) { | |
| 765 | e.fixed32.encode(d, n.devicePublicKey) | |
| 764 | encode(d, o) { | |
| 765 | e.fixed32.encode(d, o.devicePublicKey) | |
| 766 | 766 | }, |
| 767 | 767 | decode: (d) => ({ devicePublicKey: e.fixed32.decode(d) }), |
| 768 | 768 | }, |
| 769 | 769 | xe = { |
| 770 | preencode(d, n) { | |
| 771 | ;(ce.preencode(d, n.privateProfileIdentity), e.buffer.preencode(d, n.deviceProof)) | |
| 770 | preencode(d, o) { | |
| 771 | ;(ce.preencode(d, o.privateProfileIdentity), e.buffer.preencode(d, o.deviceProof)) | |
| 772 | 772 | }, |
| 773 | encode(d, n) { | |
| 774 | ;(ce.encode(d, n.privateProfileIdentity), e.buffer.encode(d, n.deviceProof)) | |
| 773 | encode(d, o) { | |
| 774 | ;(ce.encode(d, o.privateProfileIdentity), e.buffer.encode(d, o.deviceProof)) | |
| 775 | 775 | }, |
| 776 | 776 | decode: (d) => ({ privateProfileIdentity: ce.decode(d), deviceProof: e.buffer.decode(d) }), |
| 777 | 777 | }, |
| … | … | @@ -779,22 +779,22 @@ const o = { |
| 779 | 779 | ke = e.frame(le), |
| 780 | 780 | ve = e.frame(ye), |
| 781 | 781 | ge = { |
| 782 | preencode(d, n) { | |
| 783 | ;(e.fixed32.preencode(d, n.deviceKey), | |
| 784 | t.preencode(d, n.keyPair), | |
| 785 | be.preencode(d, n.device), | |
| 786 | ke.preencode(d, n.member), | |
| 782 | preencode(d, o) { | |
| 783 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 784 | t.preencode(d, o.keyPair), | |
| 785 | be.preencode(d, o.device), | |
| 786 | ke.preencode(d, o.member), | |
| 787 | 787 | d.end++, |
| 788 | n.identity && ve.preencode(d, n.identity)) | |
| 788 | o.identity && ve.preencode(d, o.identity)) | |
| 789 | 789 | }, |
| 790 | encode(d, n) { | |
| 791 | const o = n.identity ? 1 : 0 | |
| 792 | ;(e.fixed32.encode(d, n.deviceKey), | |
| 793 | t.encode(d, n.keyPair), | |
| 794 | be.encode(d, n.device), | |
| 795 | ke.encode(d, n.member), | |
| 796 | e.uint.encode(d, o), | |
| 797 | n.identity && ve.encode(d, n.identity)) | |
| 790 | encode(d, o) { | |
| 791 | const n = o.identity ? 1 : 0 | |
| 792 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 793 | t.encode(d, o.keyPair), | |
| 794 | be.encode(d, o.device), | |
| 795 | ke.encode(d, o.member), | |
| 796 | e.uint.encode(d, n), | |
| 797 | o.identity && ve.encode(d, o.identity)) | |
| 798 | 798 | }, |
| 799 | 799 | decode: (d) => ({ |
| 800 | 800 | deviceKey: e.fixed32.decode(d), |
| … | … | @@ -806,13 +806,13 @@ const o = { |
| 806 | 806 | }, |
| 807 | 807 | he = e.frame(ge), |
| 808 | 808 | Ke = { |
| 809 | preencode(d, n) { | |
| 810 | ;(e.fixed32.preencode(d, n.id), | |
| 811 | he.preencode(d, n.request), | |
| 812 | e.buffer.preencode(d, n.signature)) | |
| 809 | preencode(d, o) { | |
| 810 | ;(e.fixed32.preencode(d, o.id), | |
| 811 | he.preencode(d, o.request), | |
| 812 | e.buffer.preencode(d, o.signature)) | |
| 813 | 813 | }, |
| 814 | encode(d, n) { | |
| 815 | ;(e.fixed32.encode(d, n.id), he.encode(d, n.request), e.buffer.encode(d, n.signature)) | |
| 814 | encode(d, o) { | |
| 815 | ;(e.fixed32.encode(d, o.id), he.encode(d, o.request), e.buffer.encode(d, o.signature)) | |
| 816 | 816 | }, |
| 817 | 817 | decode: (d) => ({ |
| 818 | 818 | id: e.fixed32.decode(d), |
| … | … | @@ -826,9 +826,9 @@ const o = { |
| 826 | 826 | preencode(e, d) { |
| 827 | 827 | ;(we.preencode(e, d.device), e.end++, d.member && Te.preencode(e, d.member)) |
| 828 | 828 | }, |
| 829 | encode(d, n) { | |
| 830 | const o = n.member ? 1 : 0 | |
| 831 | ;(we.encode(d, n.device), e.uint.encode(d, o), n.member && Te.encode(d, n.member)) | |
| 829 | encode(d, o) { | |
| 830 | const n = o.member ? 1 : 0 | |
| 831 | ;(we.encode(d, o.device), e.uint.encode(d, n), o.member && Te.encode(d, o.member)) | |
| 832 | 832 | }, |
| 833 | 833 | decode: (d) => ({ device: we.decode(d), member: 1 & e.uint.decode(d) ? Te.decode(d) : null }), |
| 834 | 834 | }, |
| … | … | @@ -840,91 +840,91 @@ const o = { |
| 840 | 840 | d.withInvitation && Ae.preencode(e, d.withInvitation), |
| 841 | 841 | d.withMemberProof && Re.preencode(e, d.withMemberProof)) |
| 842 | 842 | }, |
| 843 | encode(d, n) { | |
| 844 | const o = (n.withInvitation ? 1 : 0) | (n.withMemberProof ? 2 : 0) | |
| 845 | ;(e.uint.encode(d, o), | |
| 846 | n.withInvitation && Ae.encode(d, n.withInvitation), | |
| 847 | n.withMemberProof && Re.encode(d, n.withMemberProof)) | |
| 843 | encode(d, o) { | |
| 844 | const n = (o.withInvitation ? 1 : 0) | (o.withMemberProof ? 2 : 0) | |
| 845 | ;(e.uint.encode(d, n), | |
| 846 | o.withInvitation && Ae.encode(d, o.withInvitation), | |
| 847 | o.withMemberProof && Re.encode(d, o.withMemberProof)) | |
| 848 | 848 | }, |
| 849 | 849 | decode(d) { |
| 850 | const n = e.uint.decode(d) | |
| 850 | const o = e.uint.decode(d) | |
| 851 | 851 | return { |
| 852 | withInvitation: 1 & n ? Ae.decode(d) : null, | |
| 853 | withMemberProof: 2 & n ? Re.decode(d) : null, | |
| 852 | withInvitation: 1 & o ? Ae.decode(d) : null, | |
| 853 | withMemberProof: 2 & o ? Re.decode(d) : null, | |
| 854 | 854 | } |
| 855 | 855 | }, |
| 856 | 856 | }, |
| 857 | Se = e.frame(me), | |
| 858 | Ce = e.frame(xe), | |
| 859 | Me = { | |
| 857 | Me = e.frame(me), | |
| 858 | Se = e.frame(xe), | |
| 859 | Ce = { | |
| 860 | 860 | preencode(e, d) { |
| 861 | ;(Se.preencode(e, d.signedKeys), e.end++, d.identity && Ce.preencode(e, d.identity)) | |
| 861 | ;(Me.preencode(e, d.signedKeys), e.end++, d.identity && Se.preencode(e, d.identity)) | |
| 862 | 862 | }, |
| 863 | encode(d, n) { | |
| 864 | const o = n.identity ? 1 : 0 | |
| 865 | ;(Se.encode(d, n.signedKeys), e.uint.encode(d, o), n.identity && Ce.encode(d, n.identity)) | |
| 863 | encode(d, o) { | |
| 864 | const n = o.identity ? 1 : 0 | |
| 865 | ;(Me.encode(d, o.signedKeys), e.uint.encode(d, n), o.identity && Se.encode(d, o.identity)) | |
| 866 | 866 | }, |
| 867 | 867 | decode: (d) => ({ |
| 868 | signedKeys: Se.decode(d), | |
| 869 | identity: 1 & e.uint.decode(d) ? Ce.decode(d) : null, | |
| 868 | signedKeys: Me.decode(d), | |
| 869 | identity: 1 & e.uint.decode(d) ? Se.decode(d) : null, | |
| 870 | 870 | }), |
| 871 | 871 | }, |
| 872 | 872 | Le = { |
| 873 | preencode(d, o) { | |
| 873 | preencode(d, n) { | |
| 874 | 874 | ;(d.end++, |
| 875 | o.expiration && e.uint.preencode(d, o.expiration), | |
| 876 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 875 | n.expiration && e.uint.preencode(d, n.expiration), | |
| 876 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 877 | 877 | }, |
| 878 | encode(d, o) { | |
| 878 | encode(d, n) { | |
| 879 | 879 | const c = |
| 880 | (o.expiration ? 1 : 0) | | |
| 881 | (o.requiresConfirmation ? 2 : 0) | | |
| 882 | (o.canModerate ? 4 : 0) | | |
| 883 | (o.canAdmin ? 8 : 0) | | |
| 884 | (n >= 20 && o.buildType ? 16 : 0) | |
| 880 | (n.expiration ? 1 : 0) | | |
| 881 | (n.requiresConfirmation ? 2 : 0) | | |
| 882 | (n.canModerate ? 4 : 0) | | |
| 883 | (n.canAdmin ? 8 : 0) | | |
| 884 | (o >= 20 && n.buildType ? 16 : 0) | |
| 885 | 885 | ;(e.uint.encode(d, c), |
| 886 | o.expiration && e.uint.encode(d, o.expiration), | |
| 887 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 886 | n.expiration && e.uint.encode(d, n.expiration), | |
| 887 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 888 | 888 | }, |
| 889 | 889 | decode(d) { |
| 890 | const o = e.uint.decode(d) | |
| 890 | const n = e.uint.decode(d) | |
| 891 | 891 | return { |
| 892 | expiration: 1 & o ? e.uint.decode(d) : 0, | |
| 893 | requiresConfirmation: !!(2 & o), | |
| 894 | canModerate: !!(4 & o), | |
| 895 | canAdmin: !!(8 & o), | |
| 896 | buildType: n >= 20 && 16 & o ? Or.decode(d) : null, | |
| 892 | expiration: 1 & n ? e.uint.decode(d) : 0, | |
| 893 | requiresConfirmation: !!(2 & n), | |
| 894 | canModerate: !!(4 & n), | |
| 895 | canAdmin: !!(8 & n), | |
| 896 | buildType: o >= 20 && 16 & n ? Ur.decode(d) : null, | |
| 897 | 897 | } |
| 898 | 898 | }, |
| 899 | 899 | }, |
| 900 | qe = Se, | |
| 900 | qe = Me, | |
| 901 | 901 | Fe = e.frame(Le), |
| 902 | 902 | Ee = { |
| 903 | preencode(d, n) { | |
| 904 | ;(e.fixed32.preencode(d, n.id), | |
| 905 | qe.preencode(d, n.response), | |
| 906 | Fe.preencode(d, n.metadata), | |
| 903 | preencode(d, o) { | |
| 904 | ;(e.fixed32.preencode(d, o.id), | |
| 905 | qe.preencode(d, o.response), | |
| 906 | Fe.preencode(d, o.metadata), | |
| 907 | 907 | d.end++, |
| 908 | n.anchor && o.preencode(d, n.anchor)) | |
| 908 | o.anchor && n.preencode(d, o.anchor)) | |
| 909 | 909 | }, |
| 910 | encode(d, n) { | |
| 911 | const c = (n.anchor ? 1 : 0) | (n.isActive ? 2 : 0) | |
| 912 | ;(e.fixed32.encode(d, n.id), | |
| 913 | qe.encode(d, n.response), | |
| 914 | Fe.encode(d, n.metadata), | |
| 910 | encode(d, o) { | |
| 911 | const c = (o.anchor ? 1 : 0) | (o.isActive ? 2 : 0) | |
| 912 | ;(e.fixed32.encode(d, o.id), | |
| 913 | qe.encode(d, o.response), | |
| 914 | Fe.encode(d, o.metadata), | |
| 915 | 915 | e.uint.encode(d, c), |
| 916 | n.anchor && o.encode(d, n.anchor)) | |
| 916 | o.anchor && n.encode(d, o.anchor)) | |
| 917 | 917 | }, |
| 918 | 918 | decode(d) { |
| 919 | const n = e.fixed32.decode(d), | |
| 919 | const o = e.fixed32.decode(d), | |
| 920 | 920 | c = qe.decode(d), |
| 921 | 921 | r = Fe.decode(d), |
| 922 | 922 | t = e.uint.decode(d) |
| 923 | 923 | return { |
| 924 | id: n, | |
| 924 | id: o, | |
| 925 | 925 | response: c, |
| 926 | 926 | metadata: r, |
| 927 | anchor: 1 & t ? o.decode(d) : null, | |
| 927 | anchor: 1 & t ? n.decode(d) : null, | |
| 928 | 928 | isActive: !!(2 & t), |
| 929 | 929 | } |
| 930 | 930 | }, |
| … | … | @@ -941,63 +941,63 @@ const o = { |
| 941 | 941 | decode: (e) => ({ header: Be.decode(e), invitation: Ie.decode(e) }), |
| 942 | 942 | }, |
| 943 | 943 | je = _, |
| 944 | Oe = { | |
| 945 | preencode(d, n) { | |
| 946 | ;(je.preencode(d, n.header), e.fixed32.preencode(d, n.id)) | |
| 944 | Ue = { | |
| 945 | preencode(d, o) { | |
| 946 | ;(je.preencode(d, o.header), e.fixed32.preencode(d, o.id)) | |
| 947 | 947 | }, |
| 948 | encode(d, n) { | |
| 949 | ;(je.encode(d, n.header), e.fixed32.encode(d, n.id)) | |
| 948 | encode(d, o) { | |
| 949 | ;(je.encode(d, o.header), e.fixed32.encode(d, o.id)) | |
| 950 | 950 | }, |
| 951 | 951 | decode: (d) => ({ header: je.decode(d), id: e.fixed32.decode(d) }), |
| 952 | 952 | }, |
| 953 | Je = { | |
| 954 | preencode(d, n) { | |
| 955 | ;(e.fixed32.preencode(d, n.mailbox), | |
| 956 | e.fixed32.preencode(d, n.invitationSeed), | |
| 957 | o.preencode(d, n.anchor)) | |
| 953 | Oe = { | |
| 954 | preencode(d, o) { | |
| 955 | ;(e.fixed32.preencode(d, o.mailbox), | |
| 956 | e.fixed32.preencode(d, o.invitationSeed), | |
| 957 | n.preencode(d, o.anchor)) | |
| 958 | 958 | }, |
| 959 | encode(d, n) { | |
| 960 | ;(e.fixed32.encode(d, n.mailbox), | |
| 961 | e.fixed32.encode(d, n.invitationSeed), | |
| 962 | o.encode(d, n.anchor)) | |
| 959 | encode(d, o) { | |
| 960 | ;(e.fixed32.encode(d, o.mailbox), | |
| 961 | e.fixed32.encode(d, o.invitationSeed), | |
| 962 | n.encode(d, o.anchor)) | |
| 963 | 963 | }, |
| 964 | 964 | decode: (d) => ({ |
| 965 | 965 | mailbox: e.fixed32.decode(d), |
| 966 | 966 | invitationSeed: e.fixed32.decode(d), |
| 967 | anchor: o.decode(d), | |
| 967 | anchor: n.decode(d), | |
| 968 | 968 | }), |
| 969 | 969 | }, |
| 970 | Ue = { | |
| 971 | preencode(d, n) { | |
| 972 | ;(e.fixed32.preencode(d, n.mailbox), | |
| 973 | e.fixed32.preencode(d, n.invitationSeed), | |
| 974 | o.preencode(d, n.anchor), | |
| 975 | e.fixed32.preencode(d, n.identityPublicKey)) | |
| 970 | Je = { | |
| 971 | preencode(d, o) { | |
| 972 | ;(e.fixed32.preencode(d, o.mailbox), | |
| 973 | e.fixed32.preencode(d, o.invitationSeed), | |
| 974 | n.preencode(d, o.anchor), | |
| 975 | e.fixed32.preencode(d, o.identityPublicKey)) | |
| 976 | 976 | }, |
| 977 | encode(d, n) { | |
| 978 | ;(e.fixed32.encode(d, n.mailbox), | |
| 979 | e.fixed32.encode(d, n.invitationSeed), | |
| 980 | o.encode(d, n.anchor), | |
| 981 | e.fixed32.encode(d, n.identityPublicKey)) | |
| 977 | encode(d, o) { | |
| 978 | ;(e.fixed32.encode(d, o.mailbox), | |
| 979 | e.fixed32.encode(d, o.invitationSeed), | |
| 980 | n.encode(d, o.anchor), | |
| 981 | e.fixed32.encode(d, o.identityPublicKey)) | |
| 982 | 982 | }, |
| 983 | 983 | decode: (d) => ({ |
| 984 | 984 | mailbox: e.fixed32.decode(d), |
| 985 | 985 | invitationSeed: e.fixed32.decode(d), |
| 986 | anchor: o.decode(d), | |
| 986 | anchor: n.decode(d), | |
| 987 | 987 | identityPublicKey: e.fixed32.decode(d), |
| 988 | 988 | }), |
| 989 | 989 | }, |
| 990 | 990 | Ve = { |
| 991 | preencode(d, n) { | |
| 992 | e.fixed32.preencode(d, n.mailbox) | |
| 991 | preencode(d, o) { | |
| 992 | e.fixed32.preencode(d, o.mailbox) | |
| 993 | 993 | }, |
| 994 | encode(d, n) { | |
| 995 | e.fixed32.encode(d, n.mailbox) | |
| 994 | encode(d, o) { | |
| 995 | e.fixed32.encode(d, o.mailbox) | |
| 996 | 996 | }, |
| 997 | 997 | decode: (d) => ({ mailbox: e.fixed32.decode(d) }), |
| 998 | 998 | }, |
| 999 | He = e.frame(Je), | |
| 1000 | ze = e.frame(Ue), | |
| 999 | He = e.frame(Oe), | |
| 1000 | ze = e.frame(Je), | |
| 1001 | 1001 | Ge = e.frame(Ve), |
| 1002 | 1002 | Qe = e.array(e.ipv4Address), |
| 1003 | 1003 | We = { |
| … | … | @@ -1006,70 +1006,70 @@ const o = { |
| 1006 | 1006 | d.room && He.preencode(e, d.room), |
| 1007 | 1007 | d.identity && ze.preencode(e, d.identity), |
| 1008 | 1008 | d.contact && Ge.preencode(e, d.contact), |
| 1009 | n >= 6 && d.readonly && Zr.preencode(e, d.readonly), | |
| 1010 | n >= 11 && d.additionalNodes && Qe.preencode(e, d.additionalNodes), | |
| 1011 | n >= 20 && d.buildType && Or.preencode(e, d.buildType)) | |
| 1009 | o >= 6 && d.readonly && _r.preencode(e, d.readonly), | |
| 1010 | o >= 11 && d.additionalNodes && Qe.preencode(e, d.additionalNodes), | |
| 1011 | o >= 20 && d.buildType && Ur.preencode(e, d.buildType)) | |
| 1012 | 1012 | }, |
| 1013 | encode(d, o) { | |
| 1013 | encode(d, n) { | |
| 1014 | 1014 | const c = |
| 1015 | (o.room ? 1 : 0) | | |
| 1016 | (o.identity ? 2 : 0) | | |
| 1017 | (o.contact ? 4 : 0) | | |
| 1018 | (n >= 6 && o.readonly ? 8 : 0) | | |
| 1019 | (n >= 11 && o.additionalNodes ? 16 : 0) | | |
| 1020 | (n >= 20 && o.buildType ? 32 : 0) | |
| 1015 | (n.room ? 1 : 0) | | |
| 1016 | (n.identity ? 2 : 0) | | |
| 1017 | (n.contact ? 4 : 0) | | |
| 1018 | (o >= 6 && n.readonly ? 8 : 0) | | |
| 1019 | (o >= 11 && n.additionalNodes ? 16 : 0) | | |
| 1020 | (o >= 20 && n.buildType ? 32 : 0) | |
| 1021 | 1021 | ;(e.uint.encode(d, c), |
| 1022 | o.room && He.encode(d, o.room), | |
| 1023 | o.identity && ze.encode(d, o.identity), | |
| 1024 | o.contact && Ge.encode(d, o.contact), | |
| 1025 | n >= 6 && o.readonly && Zr.encode(d, o.readonly), | |
| 1026 | n >= 11 && o.additionalNodes && Qe.encode(d, o.additionalNodes), | |
| 1027 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 1022 | n.room && He.encode(d, n.room), | |
| 1023 | n.identity && ze.encode(d, n.identity), | |
| 1024 | n.contact && Ge.encode(d, n.contact), | |
| 1025 | o >= 6 && n.readonly && _r.encode(d, n.readonly), | |
| 1026 | o >= 11 && n.additionalNodes && Qe.encode(d, n.additionalNodes), | |
| 1027 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 1028 | 1028 | }, |
| 1029 | 1029 | decode(d) { |
| 1030 | const o = e.uint.decode(d) | |
| 1030 | const n = e.uint.decode(d) | |
| 1031 | 1031 | return { |
| 1032 | room: 1 & o ? He.decode(d) : null, | |
| 1033 | identity: 2 & o ? ze.decode(d) : null, | |
| 1034 | contact: 4 & o ? Ge.decode(d) : null, | |
| 1035 | readonly: n >= 6 && 8 & o ? Zr.decode(d) : null, | |
| 1036 | additionalNodes: n >= 11 && 16 & o ? Qe.decode(d) : null, | |
| 1037 | buildType: n >= 20 && 32 & o ? Or.decode(d) : null, | |
| 1032 | room: 1 & n ? He.decode(d) : null, | |
| 1033 | identity: 2 & n ? ze.decode(d) : null, | |
| 1034 | contact: 4 & n ? Ge.decode(d) : null, | |
| 1035 | readonly: o >= 6 && 8 & n ? _r.decode(d) : null, | |
| 1036 | additionalNodes: o >= 11 && 16 & n ? Qe.decode(d) : null, | |
| 1037 | buildType: o >= 20 && 32 & n ? Ur.decode(d) : null, | |
| 1038 | 1038 | } |
| 1039 | 1039 | }, |
| 1040 | 1040 | }, |
| 1041 | 1041 | Xe = _, |
| 1042 | 1042 | Ye = { |
| 1043 | preencode(d, n) { | |
| 1044 | ;(Xe.preencode(d, n.header), e.buffer.preencode(d, n.blindRequest)) | |
| 1043 | preencode(d, o) { | |
| 1044 | ;(Xe.preencode(d, o.header), e.buffer.preencode(d, o.blindRequest)) | |
| 1045 | 1045 | }, |
| 1046 | encode(d, n) { | |
| 1047 | ;(Xe.encode(d, n.header), e.buffer.encode(d, n.blindRequest)) | |
| 1046 | encode(d, o) { | |
| 1047 | ;(Xe.encode(d, o.header), e.buffer.encode(d, o.blindRequest)) | |
| 1048 | 1048 | }, |
| 1049 | 1049 | decode: (d) => ({ header: Xe.decode(d), blindRequest: e.buffer.decode(d) }), |
| 1050 | 1050 | }, |
| 1051 | 1051 | Ze = _, |
| 1052 | 1052 | $e = { |
| 1053 | 1053 | preencode(e, d) { |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && $r.preencode(e, d.profile)) | |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && et.preencode(e, d.profile)) | |
| 1055 | 1055 | }, |
| 1056 | encode(d, n) { | |
| 1057 | const o = n.profile ? 1 : 0 | |
| 1058 | ;(Ze.encode(d, n.header), e.uint.encode(d, o), n.profile && $r.encode(d, n.profile)) | |
| 1056 | encode(d, o) { | |
| 1057 | const n = o.profile ? 1 : 0 | |
| 1058 | ;(Ze.encode(d, o.header), e.uint.encode(d, n), o.profile && et.encode(d, o.profile)) | |
| 1059 | 1059 | }, |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? $r.decode(d) : null }), | |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? et.decode(d) : null }), | |
| 1061 | 1061 | }, |
| 1062 | 1062 | _e = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({}) }, |
| 1063 | 1063 | ed = _e, |
| 1064 | 1064 | dd = he, |
| 1065 | nd = { | |
| 1066 | preencode(d, n) { | |
| 1067 | ;(e.fixed32.preencode(d, n.deviceKey), | |
| 1068 | e.fixed32.preencode(d, n.id), | |
| 1069 | dd.preencode(d, n.request)) | |
| 1065 | od = { | |
| 1066 | preencode(d, o) { | |
| 1067 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 1068 | e.fixed32.preencode(d, o.id), | |
| 1069 | dd.preencode(d, o.request)) | |
| 1070 | 1070 | }, |
| 1071 | encode(d, n) { | |
| 1072 | ;(e.fixed32.encode(d, n.deviceKey), e.fixed32.encode(d, n.id), dd.encode(d, n.request)) | |
| 1071 | encode(d, o) { | |
| 1072 | ;(e.fixed32.encode(d, o.deviceKey), e.fixed32.encode(d, o.id), dd.encode(d, o.request)) | |
| 1073 | 1073 | }, |
| 1074 | 1074 | decode: (d) => ({ |
| 1075 | 1075 | deviceKey: e.fixed32.decode(d), |
| … | … | @@ -1077,95 +1077,95 @@ const o = { |
| 1077 | 1077 | request: dd.decode(d), |
| 1078 | 1078 | }), |
| 1079 | 1079 | }, |
| 1080 | od = _, | |
| 1081 | cd = Ce, | |
| 1080 | nd = _, | |
| 1081 | cd = Se, | |
| 1082 | 1082 | rd = { |
| 1083 | preencode(d, n) { | |
| 1084 | ;(od.preencode(d, n.header), | |
| 1085 | e.fixed32.preencode(d, n.deviceKey), | |
| 1083 | preencode(d, o) { | |
| 1084 | ;(nd.preencode(d, o.header), | |
| 1085 | e.fixed32.preencode(d, o.deviceKey), | |
| 1086 | 1086 | d.end++, |
| 1087 | n.identity && cd.preencode(d, n.identity)) | |
| 1087 | o.identity && cd.preencode(d, o.identity)) | |
| 1088 | 1088 | }, |
| 1089 | encode(d, n) { | |
| 1090 | const o = n.identity ? 1 : 0 | |
| 1091 | ;(od.encode(d, n.header), | |
| 1092 | e.fixed32.encode(d, n.deviceKey), | |
| 1093 | e.uint.encode(d, o), | |
| 1094 | n.identity && cd.encode(d, n.identity)) | |
| 1089 | encode(d, o) { | |
| 1090 | const n = o.identity ? 1 : 0 | |
| 1091 | ;(nd.encode(d, o.header), | |
| 1092 | e.fixed32.encode(d, o.deviceKey), | |
| 1093 | e.uint.encode(d, n), | |
| 1094 | o.identity && cd.encode(d, o.identity)) | |
| 1095 | 1095 | }, |
| 1096 | 1096 | decode: (d) => ({ |
| 1097 | header: od.decode(d), | |
| 1097 | header: nd.decode(d), | |
| 1098 | 1098 | deviceKey: e.fixed32.decode(d), |
| 1099 | 1099 | identity: 1 & e.uint.decode(d) ? cd.decode(d) : null, |
| 1100 | 1100 | }), |
| 1101 | 1101 | }, |
| 1102 | 1102 | td = _, |
| 1103 | 1103 | id = { |
| 1104 | preencode(d, n) { | |
| 1105 | ;(td.preencode(d, n.header), e.fixed32.preencode(d, n.deviceKey)) | |
| 1104 | preencode(d, o) { | |
| 1105 | ;(td.preencode(d, o.header), e.fixed32.preencode(d, o.deviceKey)) | |
| 1106 | 1106 | }, |
| 1107 | encode(d, n) { | |
| 1108 | ;(td.encode(d, n.header), e.fixed32.encode(d, n.deviceKey)) | |
| 1107 | encode(d, o) { | |
| 1108 | ;(td.encode(d, o.header), e.fixed32.encode(d, o.deviceKey)) | |
| 1109 | 1109 | }, |
| 1110 | 1110 | decode: (d) => ({ header: td.decode(d), deviceKey: e.fixed32.decode(d) }), |
| 1111 | 1111 | }, |
| 1112 | ad = e.frame(C), | |
| 1112 | ad = e.frame(S), | |
| 1113 | 1113 | sd = ue, |
| 1114 | 1114 | pd = { |
| 1115 | preencode(d, n) { | |
| 1116 | ;(e.fixed32.preencode(d, n.key), ad.preencode(d, n.status), sd.preencode(d, n.profile)) | |
| 1115 | preencode(d, o) { | |
| 1116 | ;(e.fixed32.preencode(d, o.key), ad.preencode(d, o.status), sd.preencode(d, o.profile)) | |
| 1117 | 1117 | }, |
| 1118 | encode(d, n) { | |
| 1119 | ;(e.fixed32.encode(d, n.key), ad.encode(d, n.status), sd.encode(d, n.profile)) | |
| 1118 | encode(d, o) { | |
| 1119 | ;(e.fixed32.encode(d, o.key), ad.encode(d, o.status), sd.encode(d, o.profile)) | |
| 1120 | 1120 | }, |
| 1121 | 1121 | decode: (d) => ({ key: e.fixed32.decode(d), status: ad.decode(d), profile: sd.decode(d) }), |
| 1122 | 1122 | }, |
| 1123 | 1123 | ud = ad, |
| 1124 | 1124 | ld = ue, |
| 1125 | 1125 | fd = { |
| 1126 | preencode(d, n) { | |
| 1127 | ;(e.fixed32.preencode(d, n.key), | |
| 1128 | ud.preencode(d, n.status), | |
| 1129 | ld.preencode(d, n.profile), | |
| 1126 | preencode(d, o) { | |
| 1127 | ;(e.fixed32.preencode(d, o.key), | |
| 1128 | ud.preencode(d, o.status), | |
| 1129 | ld.preencode(d, o.profile), | |
| 1130 | 1130 | d.end++, |
| 1131 | n.proofs && _r.preencode(d, n.proofs)) | |
| 1131 | o.proofs && dt.preencode(d, o.proofs)) | |
| 1132 | 1132 | }, |
| 1133 | encode(d, n) { | |
| 1134 | const o = n.proofs ? 1 : 0 | |
| 1135 | ;(e.fixed32.encode(d, n.key), | |
| 1136 | ud.encode(d, n.status), | |
| 1137 | ld.encode(d, n.profile), | |
| 1138 | e.uint.encode(d, o), | |
| 1139 | n.proofs && _r.encode(d, n.proofs)) | |
| 1133 | encode(d, o) { | |
| 1134 | const n = o.proofs ? 1 : 0 | |
| 1135 | ;(e.fixed32.encode(d, o.key), | |
| 1136 | ud.encode(d, o.status), | |
| 1137 | ld.encode(d, o.profile), | |
| 1138 | e.uint.encode(d, n), | |
| 1139 | o.proofs && dt.encode(d, o.proofs)) | |
| 1140 | 1140 | }, |
| 1141 | 1141 | decode: (d) => ({ |
| 1142 | 1142 | key: e.fixed32.decode(d), |
| 1143 | 1143 | status: ud.decode(d), |
| 1144 | 1144 | profile: ld.decode(d), |
| 1145 | proofs: 1 & e.uint.decode(d) ? _r.decode(d) : null, | |
| 1145 | proofs: 1 & e.uint.decode(d) ? dt.decode(d) : null, | |
| 1146 | 1146 | }), |
| 1147 | 1147 | }, |
| 1148 | 1148 | md = { |
| 1149 | preencode(d, n) { | |
| 1150 | ;(e.fixed32.preencode(d, n.key), | |
| 1149 | preencode(d, o) { | |
| 1150 | ;(e.fixed32.preencode(d, o.key), | |
| 1151 | 1151 | d.end++, |
| 1152 | n.profileAttestation && e.buffer.preencode(d, n.profileAttestation), | |
| 1153 | n.latestReceipt && e.buffer.preencode(d, n.latestReceipt)) | |
| 1152 | o.profileAttestation && e.buffer.preencode(d, o.profileAttestation), | |
| 1153 | o.latestReceipt && e.buffer.preencode(d, o.latestReceipt)) | |
| 1154 | 1154 | }, |
| 1155 | encode(d, n) { | |
| 1156 | const o = (n.profileAttestation ? 1 : 0) | (n.latestReceipt ? 2 : 0) | |
| 1157 | ;(e.fixed32.encode(d, n.key), | |
| 1158 | e.uint.encode(d, o), | |
| 1159 | n.profileAttestation && e.buffer.encode(d, n.profileAttestation), | |
| 1160 | n.latestReceipt && e.buffer.encode(d, n.latestReceipt)) | |
| 1155 | encode(d, o) { | |
| 1156 | const n = (o.profileAttestation ? 1 : 0) | (o.latestReceipt ? 2 : 0) | |
| 1157 | ;(e.fixed32.encode(d, o.key), | |
| 1158 | e.uint.encode(d, n), | |
| 1159 | o.profileAttestation && e.buffer.encode(d, o.profileAttestation), | |
| 1160 | o.latestReceipt && e.buffer.encode(d, o.latestReceipt)) | |
| 1161 | 1161 | }, |
| 1162 | 1162 | decode(d) { |
| 1163 | const n = e.fixed32.decode(d), | |
| 1164 | o = e.uint.decode(d) | |
| 1163 | const o = e.fixed32.decode(d), | |
| 1164 | n = e.uint.decode(d) | |
| 1165 | 1165 | return { |
| 1166 | key: n, | |
| 1167 | profileAttestation: 1 & o ? e.buffer.decode(d) : null, | |
| 1168 | latestReceipt: 2 & o ? e.buffer.decode(d) : null, | |
| 1166 | key: o, | |
| 1167 | profileAttestation: 1 & n ? e.buffer.decode(d) : null, | |
| 1168 | latestReceipt: 2 & n ? e.buffer.decode(d) : null, | |
| 1169 | 1169 | } |
| 1170 | 1170 | }, |
| 1171 | 1171 | }, |
| … | … | @@ -1181,19 +1181,19 @@ const o = { |
| 1181 | 1181 | decode: (e) => ({ header: yd.decode(e), member: xd.decode(e) }), |
| 1182 | 1182 | }, |
| 1183 | 1183 | kd = _, |
| 1184 | vd = e.frame(M), | |
| 1184 | vd = e.frame(C), | |
| 1185 | 1185 | gd = { |
| 1186 | preencode(d, n) { | |
| 1187 | ;(kd.preencode(d, n.header), | |
| 1188 | e.fixed32.preencode(d, n.memberKey), | |
| 1189 | e.uint.preencode(d, n.key), | |
| 1190 | vd.preencode(d, n.status)) | |
| 1186 | preencode(d, o) { | |
| 1187 | ;(kd.preencode(d, o.header), | |
| 1188 | e.fixed32.preencode(d, o.memberKey), | |
| 1189 | e.uint.preencode(d, o.key), | |
| 1190 | vd.preencode(d, o.status)) | |
| 1191 | 1191 | }, |
| 1192 | encode(d, n) { | |
| 1193 | ;(kd.encode(d, n.header), | |
| 1194 | e.fixed32.encode(d, n.memberKey), | |
| 1195 | e.uint.encode(d, n.key), | |
| 1196 | vd.encode(d, n.status)) | |
| 1192 | encode(d, o) { | |
| 1193 | ;(kd.encode(d, o.header), | |
| 1194 | e.fixed32.encode(d, o.memberKey), | |
| 1195 | e.uint.encode(d, o.key), | |
| 1196 | vd.encode(d, o.status)) | |
| 1197 | 1197 | }, |
| 1198 | 1198 | decode: (d) => ({ |
| 1199 | 1199 | header: kd.decode(d), |
| … | … | @@ -1204,219 +1204,219 @@ const o = { |
| 1204 | 1204 | }, |
| 1205 | 1205 | hd = _, |
| 1206 | 1206 | Kd = { |
| 1207 | preencode(d, n) { | |
| 1208 | ;(hd.preencode(d, n.header), e.fixed32.preencode(d, n.key), d.end++) | |
| 1207 | preencode(d, o) { | |
| 1208 | ;(hd.preencode(d, o.header), e.fixed32.preencode(d, o.key), d.end++) | |
| 1209 | 1209 | }, |
| 1210 | encode(d, n) { | |
| 1211 | const o = (n.isModerator ? 1 : 0) | (n.isAdmin ? 2 : 0) | |
| 1212 | ;(hd.encode(d, n.header), e.fixed32.encode(d, n.key), e.uint.encode(d, o)) | |
| 1210 | encode(d, o) { | |
| 1211 | const n = (o.isModerator ? 1 : 0) | (o.isAdmin ? 2 : 0) | |
| 1212 | ;(hd.encode(d, o.header), e.fixed32.encode(d, o.key), e.uint.encode(d, n)) | |
| 1213 | 1213 | }, |
| 1214 | 1214 | decode(d) { |
| 1215 | const n = hd.decode(d), | |
| 1216 | o = e.fixed32.decode(d), | |
| 1215 | const o = hd.decode(d), | |
| 1216 | n = e.fixed32.decode(d), | |
| 1217 | 1217 | c = e.uint.decode(d) |
| 1218 | return { header: n, key: o, isModerator: !!(1 & c), isAdmin: !!(2 & c) } | |
| 1218 | return { header: o, key: n, isModerator: !!(1 & c), isAdmin: !!(2 & c) } | |
| 1219 | 1219 | }, |
| 1220 | 1220 | }, |
| 1221 | 1221 | wd = _, |
| 1222 | 1222 | Td = { |
| 1223 | preencode(d, n) { | |
| 1224 | ;(wd.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 1223 | preencode(d, o) { | |
| 1224 | ;(wd.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 1225 | 1225 | }, |
| 1226 | encode(d, n) { | |
| 1227 | ;(wd.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 1226 | encode(d, o) { | |
| 1227 | ;(wd.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 1228 | 1228 | }, |
| 1229 | 1229 | decode: (d) => ({ header: wd.decode(d), key: e.fixed32.decode(d) }), |
| 1230 | 1230 | }, |
| 1231 | 1231 | Pd = { |
| 1232 | preencode(d, n) { | |
| 1233 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.mentions)) | |
| 1232 | preencode(d, o) { | |
| 1233 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.mentions)) | |
| 1234 | 1234 | }, |
| 1235 | encode(d, n) { | |
| 1236 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.mentions)) | |
| 1235 | encode(d, o) { | |
| 1236 | ;(e.fixed32.encode(d, o.key), e.uint.encode(d, o.mentions)) | |
| 1237 | 1237 | }, |
| 1238 | 1238 | decode: (d) => ({ key: e.fixed32.decode(d), mentions: e.uint.decode(d) }), |
| 1239 | 1239 | }, |
| 1240 | 1240 | Ad = { |
| 1241 | preencode(d, n) { | |
| 1242 | ;(d.end++, n.memberKey && e.fixed32.preencode(d, n.memberKey)) | |
| 1241 | preencode(d, o) { | |
| 1242 | ;(d.end++, o.memberKey && e.fixed32.preencode(d, o.memberKey)) | |
| 1243 | 1243 | }, |
| 1244 | encode(d, n) { | |
| 1245 | const o = n.memberKey ? 1 : 0 | |
| 1246 | ;(e.uint.encode(d, o), n.memberKey && e.fixed32.encode(d, n.memberKey)) | |
| 1244 | encode(d, o) { | |
| 1245 | const n = o.memberKey ? 1 : 0 | |
| 1246 | ;(e.uint.encode(d, n), o.memberKey && e.fixed32.encode(d, o.memberKey)) | |
| 1247 | 1247 | }, |
| 1248 | 1248 | decode: (d) => ({ memberKey: 1 & e.uint.decode(d) ? e.fixed32.decode(d) : null }), |
| 1249 | 1249 | }, |
| 1250 | 1250 | Rd = Ad, |
| 1251 | 1251 | Dd = { |
| 1252 | preencode(d, n) { | |
| 1253 | ;(d.end++, n.from && e.string.preencode(d, n.from), n.to && e.string.preencode(d, n.to)) | |
| 1252 | preencode(d, o) { | |
| 1253 | ;(d.end++, o.from && e.string.preencode(d, o.from), o.to && e.string.preencode(d, o.to)) | |
| 1254 | 1254 | }, |
| 1255 | encode(d, n) { | |
| 1256 | const o = (n.from ? 1 : 0) | (n.to ? 2 : 0) | |
| 1257 | ;(e.uint.encode(d, o), n.from && e.string.encode(d, n.from), n.to && e.string.encode(d, n.to)) | |
| 1255 | encode(d, o) { | |
| 1256 | const n = (o.from ? 1 : 0) | (o.to ? 2 : 0) | |
| 1257 | ;(e.uint.encode(d, n), o.from && e.string.encode(d, o.from), o.to && e.string.encode(d, o.to)) | |
| 1258 | 1258 | }, |
| 1259 | 1259 | decode(d) { |
| 1260 | const n = e.uint.decode(d) | |
| 1261 | return { from: 1 & n ? e.string.decode(d) : null, to: 2 & n ? e.string.decode(d) : null } | |
| 1260 | const o = e.uint.decode(d) | |
| 1261 | return { from: 1 & o ? e.string.decode(d) : null, to: 2 & o ? e.string.decode(d) : null } | |
| 1262 | 1262 | }, |
| 1263 | 1263 | }, |
| 1264 | Sd = e.frame(Ad), | |
| 1265 | Cd = e.frame(Rd), | |
| 1266 | Md = e.frame(Dd), | |
| 1264 | Md = e.frame(Ad), | |
| 1265 | Sd = e.frame(Rd), | |
| 1266 | Cd = e.frame(Dd), | |
| 1267 | 1267 | Ld = { |
| 1268 | preencode(d, o) { | |
| 1268 | preencode(d, n) { | |
| 1269 | 1269 | const c = |
| 1270 | (o.memberJoined ? 1 : 0) | | |
| 1271 | (o.memberLeft ? 2 : 0) | | |
| 1272 | (o.titleChanged ? 4 : 0) | | |
| 1273 | (o.callStarted ? 8 : 0) | | |
| 1274 | (o.callHangup ? 16 : 0) | | |
| 1275 | (o.callMissed ? 32 : 0) | | |
| 1276 | (n >= 3 && o.roomAvatarChanged ? 64 : 0) | | |
| 1277 | (n >= 3 && o.invitationCreated ? 128 : 0) | | |
| 1278 | (n >= 3 && o.memberRemoved ? 256 : 0) | | |
| 1279 | (n >= 18 && o.locationShared ? 512 : 0) | |
| 1270 | (n.memberJoined ? 1 : 0) | | |
| 1271 | (n.memberLeft ? 2 : 0) | | |
| 1272 | (n.titleChanged ? 4 : 0) | | |
| 1273 | (n.callStarted ? 8 : 0) | | |
| 1274 | (n.callHangup ? 16 : 0) | | |
| 1275 | (n.callMissed ? 32 : 0) | | |
| 1276 | (o >= 3 && n.roomAvatarChanged ? 64 : 0) | | |
| 1277 | (o >= 3 && n.invitationCreated ? 128 : 0) | | |
| 1278 | (o >= 3 && n.memberRemoved ? 256 : 0) | | |
| 1279 | (o >= 18 && n.locationShared ? 512 : 0) | |
| 1280 | 1280 | ;(e.uint.preencode(d, c), |
| 1281 | o.memberJoined && Sd.preencode(d, o.memberJoined), | |
| 1282 | o.memberLeft && Cd.preencode(d, o.memberLeft), | |
| 1283 | o.titleChanged && Md.preencode(d, o.titleChanged), | |
| 1284 | n >= 3 && o.memberRemoved && et.preencode(d, o.memberRemoved), | |
| 1285 | n >= 18 && o.locationShared && dt.preencode(d, o.locationShared)) | |
| 1281 | n.memberJoined && Md.preencode(d, n.memberJoined), | |
| 1282 | n.memberLeft && Sd.preencode(d, n.memberLeft), | |
| 1283 | n.titleChanged && Cd.preencode(d, n.titleChanged), | |
| 1284 | o >= 3 && n.memberRemoved && ot.preencode(d, n.memberRemoved), | |
| 1285 | o >= 18 && n.locationShared && nt.preencode(d, n.locationShared)) | |
| 1286 | 1286 | }, |
| 1287 | encode(d, o) { | |
| 1287 | encode(d, n) { | |
| 1288 | 1288 | const c = |
| 1289 | (o.memberJoined ? 1 : 0) | | |
| 1290 | (o.memberLeft ? 2 : 0) | | |
| 1291 | (o.titleChanged ? 4 : 0) | | |
| 1292 | (o.callStarted ? 8 : 0) | | |
| 1293 | (o.callHangup ? 16 : 0) | | |
| 1294 | (o.callMissed ? 32 : 0) | | |
| 1295 | (n >= 3 && o.roomAvatarChanged ? 64 : 0) | | |
| 1296 | (n >= 3 && o.invitationCreated ? 128 : 0) | | |
| 1297 | (n >= 3 && o.memberRemoved ? 256 : 0) | | |
| 1298 | (n >= 18 && o.locationShared ? 512 : 0) | |
| 1289 | (n.memberJoined ? 1 : 0) | | |
| 1290 | (n.memberLeft ? 2 : 0) | | |
| 1291 | (n.titleChanged ? 4 : 0) | | |
| 1292 | (n.callStarted ? 8 : 0) | | |
| 1293 | (n.callHangup ? 16 : 0) | | |
| 1294 | (n.callMissed ? 32 : 0) | | |
| 1295 | (o >= 3 && n.roomAvatarChanged ? 64 : 0) | | |
| 1296 | (o >= 3 && n.invitationCreated ? 128 : 0) | | |
| 1297 | (o >= 3 && n.memberRemoved ? 256 : 0) | | |
| 1298 | (o >= 18 && n.locationShared ? 512 : 0) | |
| 1299 | 1299 | ;(e.uint.encode(d, c), |
| 1300 | o.memberJoined && Sd.encode(d, o.memberJoined), | |
| 1301 | o.memberLeft && Cd.encode(d, o.memberLeft), | |
| 1302 | o.titleChanged && Md.encode(d, o.titleChanged), | |
| 1303 | n >= 3 && o.memberRemoved && et.encode(d, o.memberRemoved), | |
| 1304 | n >= 18 && o.locationShared && dt.encode(d, o.locationShared)) | |
| 1300 | n.memberJoined && Md.encode(d, n.memberJoined), | |
| 1301 | n.memberLeft && Sd.encode(d, n.memberLeft), | |
| 1302 | n.titleChanged && Cd.encode(d, n.titleChanged), | |
| 1303 | o >= 3 && n.memberRemoved && ot.encode(d, n.memberRemoved), | |
| 1304 | o >= 18 && n.locationShared && nt.encode(d, n.locationShared)) | |
| 1305 | 1305 | }, |
| 1306 | 1306 | decode(d) { |
| 1307 | const o = e.uint.decode(d) | |
| 1307 | const n = e.uint.decode(d) | |
| 1308 | 1308 | return { |
| 1309 | memberJoined: 1 & o ? Sd.decode(d) : null, | |
| 1310 | memberLeft: 2 & o ? Cd.decode(d) : null, | |
| 1311 | titleChanged: 4 & o ? Md.decode(d) : null, | |
| 1312 | callStarted: !!(8 & o), | |
| 1313 | callHangup: !!(16 & o), | |
| 1314 | callMissed: !!(32 & o), | |
| 1315 | roomAvatarChanged: n >= 3 && !!(64 & o), | |
| 1316 | invitationCreated: n >= 3 && !!(128 & o), | |
| 1317 | memberRemoved: n >= 3 && 256 & o ? et.decode(d) : null, | |
| 1318 | locationShared: n >= 18 && 512 & o ? dt.decode(d) : null, | |
| 1309 | memberJoined: 1 & n ? Md.decode(d) : null, | |
| 1310 | memberLeft: 2 & n ? Sd.decode(d) : null, | |
| 1311 | titleChanged: 4 & n ? Cd.decode(d) : null, | |
| 1312 | callStarted: !!(8 & n), | |
| 1313 | callHangup: !!(16 & n), | |
| 1314 | callMissed: !!(32 & n), | |
| 1315 | roomAvatarChanged: o >= 3 && !!(64 & n), | |
| 1316 | invitationCreated: o >= 3 && !!(128 & n), | |
| 1317 | memberRemoved: o >= 3 && 256 & n ? ot.decode(d) : null, | |
| 1318 | locationShared: o >= 18 && 512 & n ? nt.decode(d) : null, | |
| 1319 | 1319 | } |
| 1320 | 1320 | }, |
| 1321 | 1321 | }, |
| 1322 | 1322 | qd = { |
| 1323 | 1323 | preencode(e, d) { |
| 1324 | ;(e.end++, n >= 18 && d.locationShared && nt.preencode(e, d.locationShared)) | |
| 1324 | ;(e.end++, o >= 18 && d.locationShared && ct.preencode(e, d.locationShared)) | |
| 1325 | 1325 | }, |
| 1326 | encode(d, o) { | |
| 1326 | encode(d, n) { | |
| 1327 | 1327 | const c = |
| 1328 | (o.callStarted ? 1 : 0) | | |
| 1329 | (o.callHangup ? 2 : 0) | | |
| 1330 | (o.callMissed ? 4 : 0) | | |
| 1331 | (n >= 18 && o.locationShared ? 8 : 0) | |
| 1332 | ;(e.uint.encode(d, c), n >= 18 && o.locationShared && nt.encode(d, o.locationShared)) | |
| 1328 | (n.callStarted ? 1 : 0) | | |
| 1329 | (n.callHangup ? 2 : 0) | | |
| 1330 | (n.callMissed ? 4 : 0) | | |
| 1331 | (o >= 18 && n.locationShared ? 8 : 0) | |
| 1332 | ;(e.uint.encode(d, c), o >= 18 && n.locationShared && ct.encode(d, n.locationShared)) | |
| 1333 | 1333 | }, |
| 1334 | 1334 | decode(d) { |
| 1335 | const o = e.uint.decode(d) | |
| 1335 | const n = e.uint.decode(d) | |
| 1336 | 1336 | return { |
| 1337 | callStarted: !!(1 & o), | |
| 1338 | callHangup: !!(2 & o), | |
| 1339 | callMissed: !!(4 & o), | |
| 1340 | locationShared: n >= 18 && 8 & o ? nt.decode(d) : null, | |
| 1337 | callStarted: !!(1 & n), | |
| 1338 | callHangup: !!(2 & n), | |
| 1339 | callMissed: !!(4 & n), | |
| 1340 | locationShared: o >= 18 && 8 & n ? ct.decode(d) : null, | |
| 1341 | 1341 | } |
| 1342 | 1342 | }, |
| 1343 | 1343 | }, |
| 1344 | 1344 | Fd = { |
| 1345 | preencode(d, n) { | |
| 1346 | ;(e.uint.preencode(d, n.start), e.uint.preencode(d, n.length)) | |
| 1345 | preencode(d, o) { | |
| 1346 | ;(e.uint.preencode(d, o.start), e.uint.preencode(d, o.length)) | |
| 1347 | 1347 | }, |
| 1348 | encode(d, n) { | |
| 1349 | ;(e.uint.encode(d, n.start), e.uint.encode(d, n.length)) | |
| 1348 | encode(d, o) { | |
| 1349 | ;(e.uint.encode(d, o.start), e.uint.encode(d, o.length)) | |
| 1350 | 1350 | }, |
| 1351 | 1351 | decode: (d) => ({ start: e.uint.decode(d), length: e.uint.decode(d) }), |
| 1352 | 1352 | }, |
| 1353 | 1353 | Ed = e.frame(Fd), |
| 1354 | 1354 | Bd = { |
| 1355 | preencode(d, n) { | |
| 1356 | ;(Ed.preencode(d, n.range), e.string.preencode(d, n.content)) | |
| 1355 | preencode(d, o) { | |
| 1356 | ;(Ed.preencode(d, o.range), e.string.preencode(d, o.content)) | |
| 1357 | 1357 | }, |
| 1358 | encode(d, n) { | |
| 1359 | ;(Ed.encode(d, n.range), e.string.encode(d, n.content)) | |
| 1358 | encode(d, o) { | |
| 1359 | ;(Ed.encode(d, o.range), e.string.encode(d, o.content)) | |
| 1360 | 1360 | }, |
| 1361 | 1361 | decode: (d) => ({ range: Ed.decode(d), content: e.string.decode(d) }), |
| 1362 | 1362 | }, |
| 1363 | 1363 | Id = Ed, |
| 1364 | 1364 | Nd = { |
| 1365 | preencode(d, n) { | |
| 1366 | ;(Id.preencode(d, n.range), e.fixed32.preencode(d, n.memberKey)) | |
| 1365 | preencode(d, o) { | |
| 1366 | ;(Id.preencode(d, o.range), e.fixed32.preencode(d, o.memberKey)) | |
| 1367 | 1367 | }, |
| 1368 | encode(d, n) { | |
| 1369 | ;(Id.encode(d, n.range), e.fixed32.encode(d, n.memberKey)) | |
| 1368 | encode(d, o) { | |
| 1369 | ;(Id.encode(d, o.range), e.fixed32.encode(d, o.memberKey)) | |
| 1370 | 1370 | }, |
| 1371 | 1371 | decode: (d) => ({ range: Id.decode(d), memberKey: e.fixed32.decode(d) }), |
| 1372 | 1372 | }, |
| 1373 | 1373 | jd = h, |
| 1374 | Od = e.array(e.uint), | |
| 1375 | Jd = { | |
| 1376 | preencode(d, o) { | |
| 1374 | Ud = e.array(e.uint), | |
| 1375 | Od = { | |
| 1376 | preencode(d, n) { | |
| 1377 | 1377 | ;(d.end++, |
| 1378 | o.title && e.string.preencode(d, o.title), | |
| 1379 | o.description && e.string.preencode(d, o.description), | |
| 1380 | o.file && jd.preencode(d, o.file), | |
| 1381 | n >= 7 && o.files && Od.preencode(d, o.files)) | |
| 1378 | n.title && e.string.preencode(d, n.title), | |
| 1379 | n.description && e.string.preencode(d, n.description), | |
| 1380 | n.file && jd.preencode(d, n.file), | |
| 1381 | o >= 7 && n.files && Ud.preencode(d, n.files)) | |
| 1382 | 1382 | }, |
| 1383 | encode(d, o) { | |
| 1383 | encode(d, n) { | |
| 1384 | 1384 | const c = |
| 1385 | (o.title ? 1 : 0) | (o.description ? 2 : 0) | (o.file ? 4 : 0) | (n >= 7 && o.files ? 8 : 0) | |
| 1385 | (n.title ? 1 : 0) | (n.description ? 2 : 0) | (n.file ? 4 : 0) | (o >= 7 && n.files ? 8 : 0) | |
| 1386 | 1386 | ;(e.uint.encode(d, c), |
| 1387 | o.title && e.string.encode(d, o.title), | |
| 1388 | o.description && e.string.encode(d, o.description), | |
| 1389 | o.file && jd.encode(d, o.file), | |
| 1390 | n >= 7 && o.files && Od.encode(d, o.files)) | |
| 1387 | n.title && e.string.encode(d, n.title), | |
| 1388 | n.description && e.string.encode(d, n.description), | |
| 1389 | n.file && jd.encode(d, n.file), | |
| 1390 | o >= 7 && n.files && Ud.encode(d, n.files)) | |
| 1391 | 1391 | }, |
| 1392 | 1392 | decode(d) { |
| 1393 | const o = e.uint.decode(d) | |
| 1393 | const n = e.uint.decode(d) | |
| 1394 | 1394 | return { |
| 1395 | title: 1 & o ? e.string.decode(d) : null, | |
| 1396 | description: 2 & o ? e.string.decode(d) : null, | |
| 1397 | file: 4 & o ? jd.decode(d) : null, | |
| 1398 | files: n >= 7 && 8 & o ? Od.decode(d) : null, | |
| 1395 | title: 1 & n ? e.string.decode(d) : null, | |
| 1396 | description: 2 & n ? e.string.decode(d) : null, | |
| 1397 | file: 4 & n ? jd.decode(d) : null, | |
| 1398 | files: o >= 7 && 8 & n ? Ud.decode(d) : null, | |
| 1399 | 1399 | } |
| 1400 | 1400 | }, |
| 1401 | 1401 | }, |
| 1402 | Ud = Ed, | |
| 1403 | Vd = e.frame(Jd), | |
| 1402 | Jd = Ed, | |
| 1403 | Vd = e.frame(Od), | |
| 1404 | 1404 | Hd = { |
| 1405 | preencode(d, n) { | |
| 1406 | ;(Ud.preencode(d, n.range), | |
| 1407 | e.string.preencode(d, n.url), | |
| 1405 | preencode(d, o) { | |
| 1406 | ;(Jd.preencode(d, o.range), | |
| 1407 | e.string.preencode(d, o.url), | |
| 1408 | 1408 | d.end++, |
| 1409 | n.preview && Vd.preencode(d, n.preview)) | |
| 1409 | o.preview && Vd.preencode(d, o.preview)) | |
| 1410 | 1410 | }, |
| 1411 | encode(d, n) { | |
| 1412 | const o = n.preview ? 1 : 0 | |
| 1413 | ;(Ud.encode(d, n.range), | |
| 1414 | e.string.encode(d, n.url), | |
| 1415 | e.uint.encode(d, o), | |
| 1416 | n.preview && Vd.encode(d, n.preview)) | |
| 1411 | encode(d, o) { | |
| 1412 | const n = o.preview ? 1 : 0 | |
| 1413 | ;(Jd.encode(d, o.range), | |
| 1414 | e.string.encode(d, o.url), | |
| 1415 | e.uint.encode(d, n), | |
| 1416 | o.preview && Vd.encode(d, o.preview)) | |
| 1417 | 1417 | }, |
| 1418 | 1418 | decode: (d) => ({ |
| 1419 | range: Ud.decode(d), | |
| 1419 | range: Jd.decode(d), | |
| 1420 | 1420 | url: e.string.decode(d), |
| 1421 | 1421 | preview: 1 & e.uint.decode(d) ? Vd.decode(d) : null, |
| 1422 | 1422 | }), |
| … | … | @@ -1430,702 +1430,702 @@ const o = { |
| 1430 | 1430 | Zd = e.array(e.frame(Bd)), |
| 1431 | 1431 | $d = Wd, |
| 1432 | 1432 | _d = Wd, |
| 1433 | en = { | |
| 1434 | preencode(d, o) { | |
| 1433 | eo = { | |
| 1434 | preencode(d, n) { | |
| 1435 | 1435 | const c = |
| 1436 | (o.mention ? 1 : 0) | | |
| 1437 | (o.httpLink ? 2 : 0) | | |
| 1438 | (o.pearLink ? 4 : 0) | | |
| 1439 | (o.bold ? 8 : 0) | | |
| 1440 | (o.italic ? 16 : 0) | | |
| 1441 | (o.code ? 32 : 0) | | |
| 1442 | (o.emoji ? 64 : 0) | | |
| 1443 | (o.codeBlock ? 128 : 0) | | |
| 1444 | (o.strike ? 256 : 0) | | |
| 1445 | (n >= 11 && o.translation ? 512 : 0) | |
| 1436 | (n.mention ? 1 : 0) | | |
| 1437 | (n.httpLink ? 2 : 0) | | |
| 1438 | (n.pearLink ? 4 : 0) | | |
| 1439 | (n.bold ? 8 : 0) | | |
| 1440 | (n.italic ? 16 : 0) | | |
| 1441 | (n.code ? 32 : 0) | | |
| 1442 | (n.emoji ? 64 : 0) | | |
| 1443 | (n.codeBlock ? 128 : 0) | | |
| 1444 | (n.strike ? 256 : 0) | | |
| 1445 | (o >= 11 && n.translation ? 512 : 0) | |
| 1446 | 1446 | ;(e.uint.preencode(d, c), |
| 1447 | o.mention && zd.preencode(d, o.mention), | |
| 1448 | o.httpLink && Gd.preencode(d, o.httpLink), | |
| 1449 | o.pearLink && Qd.preencode(d, o.pearLink), | |
| 1450 | o.bold && Wd.preencode(d, o.bold), | |
| 1451 | o.italic && Xd.preencode(d, o.italic), | |
| 1452 | o.code && Yd.preencode(d, o.code), | |
| 1453 | o.emoji && Zd.preencode(d, o.emoji), | |
| 1454 | o.codeBlock && $d.preencode(d, o.codeBlock), | |
| 1455 | o.strike && _d.preencode(d, o.strike), | |
| 1456 | n >= 11 && o.translation && ot.preencode(d, o.translation)) | |
| 1447 | n.mention && zd.preencode(d, n.mention), | |
| 1448 | n.httpLink && Gd.preencode(d, n.httpLink), | |
| 1449 | n.pearLink && Qd.preencode(d, n.pearLink), | |
| 1450 | n.bold && Wd.preencode(d, n.bold), | |
| 1451 | n.italic && Xd.preencode(d, n.italic), | |
| 1452 | n.code && Yd.preencode(d, n.code), | |
| 1453 | n.emoji && Zd.preencode(d, n.emoji), | |
| 1454 | n.codeBlock && $d.preencode(d, n.codeBlock), | |
| 1455 | n.strike && _d.preencode(d, n.strike), | |
| 1456 | o >= 11 && n.translation && rt.preencode(d, n.translation)) | |
| 1457 | 1457 | }, |
| 1458 | encode(d, o) { | |
| 1458 | encode(d, n) { | |
| 1459 | 1459 | const c = |
| 1460 | (o.mention ? 1 : 0) | | |
| 1461 | (o.httpLink ? 2 : 0) | | |
| 1462 | (o.pearLink ? 4 : 0) | | |
| 1463 | (o.bold ? 8 : 0) | | |
| 1464 | (o.italic ? 16 : 0) | | |
| 1465 | (o.code ? 32 : 0) | | |
| 1466 | (o.emoji ? 64 : 0) | | |
| 1467 | (o.codeBlock ? 128 : 0) | | |
| 1468 | (o.strike ? 256 : 0) | | |
| 1469 | (n >= 11 && o.translation ? 512 : 0) | |
| 1460 | (n.mention ? 1 : 0) | | |
| 1461 | (n.httpLink ? 2 : 0) | | |
| 1462 | (n.pearLink ? 4 : 0) | | |
| 1463 | (n.bold ? 8 : 0) | | |
| 1464 | (n.italic ? 16 : 0) | | |
| 1465 | (n.code ? 32 : 0) | | |
| 1466 | (n.emoji ? 64 : 0) | | |
| 1467 | (n.codeBlock ? 128 : 0) | | |
| 1468 | (n.strike ? 256 : 0) | | |
| 1469 | (o >= 11 && n.translation ? 512 : 0) | |
| 1470 | 1470 | ;(e.uint.encode(d, c), |
| 1471 | o.mention && zd.encode(d, o.mention), | |
| 1472 | o.httpLink && Gd.encode(d, o.httpLink), | |
| 1473 | o.pearLink && Qd.encode(d, o.pearLink), | |
| 1474 | o.bold && Wd.encode(d, o.bold), | |
| 1475 | o.italic && Xd.encode(d, o.italic), | |
| 1476 | o.code && Yd.encode(d, o.code), | |
| 1477 | o.emoji && Zd.encode(d, o.emoji), | |
| 1478 | o.codeBlock && $d.encode(d, o.codeBlock), | |
| 1479 | o.strike && _d.encode(d, o.strike), | |
| 1480 | n >= 11 && o.translation && ot.encode(d, o.translation)) | |
| 1471 | n.mention && zd.encode(d, n.mention), | |
| 1472 | n.httpLink && Gd.encode(d, n.httpLink), | |
| 1473 | n.pearLink && Qd.encode(d, n.pearLink), | |
| 1474 | n.bold && Wd.encode(d, n.bold), | |
| 1475 | n.italic && Xd.encode(d, n.italic), | |
| 1476 | n.code && Yd.encode(d, n.code), | |
| 1477 | n.emoji && Zd.encode(d, n.emoji), | |
| 1478 | n.codeBlock && $d.encode(d, n.codeBlock), | |
| 1479 | n.strike && _d.encode(d, n.strike), | |
| 1480 | o >= 11 && n.translation && rt.encode(d, n.translation)) | |
| 1481 | 1481 | }, |
| 1482 | 1482 | decode(d) { |
| 1483 | const o = e.uint.decode(d) | |
| 1483 | const n = e.uint.decode(d) | |
| 1484 | 1484 | return { |
| 1485 | mention: 1 & o ? zd.decode(d) : null, | |
| 1486 | httpLink: 2 & o ? Gd.decode(d) : null, | |
| 1487 | pearLink: 4 & o ? Qd.decode(d) : null, | |
| 1488 | bold: 8 & o ? Wd.decode(d) : null, | |
| 1489 | italic: 16 & o ? Xd.decode(d) : null, | |
| 1490 | code: 32 & o ? Yd.decode(d) : null, | |
| 1491 | emoji: 64 & o ? Zd.decode(d) : null, | |
| 1492 | codeBlock: 128 & o ? $d.decode(d) : null, | |
| 1493 | strike: 256 & o ? _d.decode(d) : null, | |
| 1494 | translation: n >= 11 && 512 & o ? ot.decode(d) : null, | |
| 1485 | mention: 1 & n ? zd.decode(d) : null, | |
| 1486 | httpLink: 2 & n ? Gd.decode(d) : null, | |
| 1487 | pearLink: 4 & n ? Qd.decode(d) : null, | |
| 1488 | bold: 8 & n ? Wd.decode(d) : null, | |
| 1489 | italic: 16 & n ? Xd.decode(d) : null, | |
| 1490 | code: 32 & n ? Yd.decode(d) : null, | |
| 1491 | emoji: 64 & n ? Zd.decode(d) : null, | |
| 1492 | codeBlock: 128 & n ? $d.decode(d) : null, | |
| 1493 | strike: 256 & n ? _d.decode(d) : null, | |
| 1494 | translation: o >= 11 && 512 & n ? rt.decode(d) : null, | |
| 1495 | 1495 | } |
| 1496 | 1496 | }, |
| 1497 | 1497 | }, |
| 1498 | dn = e.array(e.frame(g)), | |
| 1499 | nn = e.frame(en), | |
| 1500 | on = e.frame(qd), | |
| 1501 | cn = { | |
| 1502 | preencode(d, n) { | |
| 1498 | oo = e.array(e.frame(g)), | |
| 1499 | no = e.frame(eo), | |
| 1500 | co = e.frame(qd), | |
| 1501 | ro = { | |
| 1502 | preencode(d, o) { | |
| 1503 | 1503 | ;(d.end++, |
| 1504 | n.text && e.string.preencode(d, n.text), | |
| 1505 | n.files && dn.preencode(d, n.files), | |
| 1506 | n.display && nn.preencode(d, n.display), | |
| 1507 | n.replyTo && c.preencode(d, n.replyTo), | |
| 1508 | n.parent && c.preencode(d, n.parent), | |
| 1509 | n.event && on.preencode(d, n.event)) | |
| 1504 | o.text && e.string.preencode(d, o.text), | |
| 1505 | o.files && oo.preencode(d, o.files), | |
| 1506 | o.display && no.preencode(d, o.display), | |
| 1507 | o.replyTo && c.preencode(d, o.replyTo), | |
| 1508 | o.parent && c.preencode(d, o.parent), | |
| 1509 | o.event && co.preencode(d, o.event)) | |
| 1510 | 1510 | }, |
| 1511 | encode(d, o) { | |
| 1511 | encode(d, n) { | |
| 1512 | 1512 | const r = |
| 1513 | (o.text ? 1 : 0) | | |
| 1514 | (o.files ? 2 : 0) | | |
| 1515 | (o.display ? 4 : 0) | | |
| 1516 | (o.replyTo ? 8 : 0) | | |
| 1517 | (o.parent ? 16 : 0) | | |
| 1518 | (o.event ? 32 : 0) | | |
| 1519 | (n >= 18 && o.forwarded ? 64 : 0) | |
| 1513 | (n.text ? 1 : 0) | | |
| 1514 | (n.files ? 2 : 0) | | |
| 1515 | (n.display ? 4 : 0) | | |
| 1516 | (n.replyTo ? 8 : 0) | | |
| 1517 | (n.parent ? 16 : 0) | | |
| 1518 | (n.event ? 32 : 0) | | |
| 1519 | (o >= 18 && n.forwarded ? 64 : 0) | |
| 1520 | 1520 | ;(e.uint.encode(d, r), |
| 1521 | o.text && e.string.encode(d, o.text), | |
| 1522 | o.files && dn.encode(d, o.files), | |
| 1523 | o.display && nn.encode(d, o.display), | |
| 1524 | o.replyTo && c.encode(d, o.replyTo), | |
| 1525 | o.parent && c.encode(d, o.parent), | |
| 1526 | o.event && on.encode(d, o.event)) | |
| 1521 | n.text && e.string.encode(d, n.text), | |
| 1522 | n.files && oo.encode(d, n.files), | |
| 1523 | n.display && no.encode(d, n.display), | |
| 1524 | n.replyTo && c.encode(d, n.replyTo), | |
| 1525 | n.parent && c.encode(d, n.parent), | |
| 1526 | n.event && co.encode(d, n.event)) | |
| 1527 | 1527 | }, |
| 1528 | 1528 | decode(d) { |
| 1529 | const o = e.uint.decode(d) | |
| 1529 | const n = e.uint.decode(d) | |
| 1530 | 1530 | return { |
| 1531 | text: 1 & o ? e.string.decode(d) : null, | |
| 1532 | files: 2 & o ? dn.decode(d) : null, | |
| 1533 | display: 4 & o ? nn.decode(d) : null, | |
| 1534 | replyTo: 8 & o ? c.decode(d) : null, | |
| 1535 | parent: 16 & o ? c.decode(d) : null, | |
| 1536 | event: 32 & o ? on.decode(d) : null, | |
| 1537 | forwarded: n >= 18 && !!(64 & o), | |
| 1531 | text: 1 & n ? e.string.decode(d) : null, | |
| 1532 | files: 2 & n ? oo.decode(d) : null, | |
| 1533 | display: 4 & n ? no.decode(d) : null, | |
| 1534 | replyTo: 8 & n ? c.decode(d) : null, | |
| 1535 | parent: 16 & n ? c.decode(d) : null, | |
| 1536 | event: 32 & n ? co.decode(d) : null, | |
| 1537 | forwarded: o >= 18 && !!(64 & n), | |
| 1538 | 1538 | } |
| 1539 | 1539 | }, |
| 1540 | 1540 | }, |
| 1541 | rn = Od, | |
| 1542 | tn = nn, | |
| 1543 | an = { | |
| 1544 | preencode(d, n) { | |
| 1541 | to = Ud, | |
| 1542 | io = no, | |
| 1543 | ao = { | |
| 1544 | preencode(d, o) { | |
| 1545 | 1545 | ;(d.end++, |
| 1546 | n.text && e.string.preencode(d, n.text), | |
| 1547 | n.files && rn.preencode(d, n.files), | |
| 1548 | n.display && tn.preencode(d, n.display), | |
| 1549 | n.replyTo && c.preencode(d, n.replyTo), | |
| 1550 | n.parent && c.preencode(d, n.parent)) | |
| 1546 | o.text && e.string.preencode(d, o.text), | |
| 1547 | o.files && to.preencode(d, o.files), | |
| 1548 | o.display && io.preencode(d, o.display), | |
| 1549 | o.replyTo && c.preencode(d, o.replyTo), | |
| 1550 | o.parent && c.preencode(d, o.parent)) | |
| 1551 | 1551 | }, |
| 1552 | encode(d, o) { | |
| 1552 | encode(d, n) { | |
| 1553 | 1553 | const r = |
| 1554 | (o.text ? 1 : 0) | | |
| 1555 | (o.files ? 2 : 0) | | |
| 1556 | (o.display ? 4 : 0) | | |
| 1557 | (o.replyTo ? 8 : 0) | | |
| 1558 | (o.parent ? 16 : 0) | | |
| 1559 | (n >= 18 && o.forwarded ? 32 : 0) | |
| 1554 | (n.text ? 1 : 0) | | |
| 1555 | (n.files ? 2 : 0) | | |
| 1556 | (n.display ? 4 : 0) | | |
| 1557 | (n.replyTo ? 8 : 0) | | |
| 1558 | (n.parent ? 16 : 0) | | |
| 1559 | (o >= 18 && n.forwarded ? 32 : 0) | |
| 1560 | 1560 | ;(e.uint.encode(d, r), |
| 1561 | o.text && e.string.encode(d, o.text), | |
| 1562 | o.files && rn.encode(d, o.files), | |
| 1563 | o.display && tn.encode(d, o.display), | |
| 1564 | o.replyTo && c.encode(d, o.replyTo), | |
| 1565 | o.parent && c.encode(d, o.parent)) | |
| 1561 | n.text && e.string.encode(d, n.text), | |
| 1562 | n.files && to.encode(d, n.files), | |
| 1563 | n.display && io.encode(d, n.display), | |
| 1564 | n.replyTo && c.encode(d, n.replyTo), | |
| 1565 | n.parent && c.encode(d, n.parent)) | |
| 1566 | 1566 | }, |
| 1567 | 1567 | decode(d) { |
| 1568 | const o = e.uint.decode(d) | |
| 1568 | const n = e.uint.decode(d) | |
| 1569 | 1569 | return { |
| 1570 | text: 1 & o ? e.string.decode(d) : null, | |
| 1571 | files: 2 & o ? rn.decode(d) : null, | |
| 1572 | display: 4 & o ? tn.decode(d) : null, | |
| 1573 | replyTo: 8 & o ? c.decode(d) : null, | |
| 1574 | parent: 16 & o ? c.decode(d) : null, | |
| 1575 | forwarded: n >= 18 && !!(32 & o), | |
| 1570 | text: 1 & n ? e.string.decode(d) : null, | |
| 1571 | files: 2 & n ? to.decode(d) : null, | |
| 1572 | display: 4 & n ? io.decode(d) : null, | |
| 1573 | replyTo: 8 & n ? c.decode(d) : null, | |
| 1574 | parent: 16 & n ? c.decode(d) : null, | |
| 1575 | forwarded: o >= 18 && !!(32 & n), | |
| 1576 | 1576 | } |
| 1577 | 1577 | }, |
| 1578 | 1578 | }, |
| 1579 | sn = dn, | |
| 1580 | pn = nn, | |
| 1581 | un = { | |
| 1582 | preencode(d, n) { | |
| 1579 | so = oo, | |
| 1580 | po = no, | |
| 1581 | uo = { | |
| 1582 | preencode(d, o) { | |
| 1583 | 1583 | ;(d.end++, |
| 1584 | n.text && e.string.preencode(d, n.text), | |
| 1585 | n.files && sn.preencode(d, n.files), | |
| 1586 | n.display && pn.preencode(d, n.display), | |
| 1587 | n.replyTo && c.preencode(d, n.replyTo), | |
| 1588 | n.parent && c.preencode(d, n.parent)) | |
| 1584 | o.text && e.string.preencode(d, o.text), | |
| 1585 | o.files && so.preencode(d, o.files), | |
| 1586 | o.display && po.preencode(d, o.display), | |
| 1587 | o.replyTo && c.preencode(d, o.replyTo), | |
| 1588 | o.parent && c.preencode(d, o.parent)) | |
| 1589 | 1589 | }, |
| 1590 | encode(d, o) { | |
| 1590 | encode(d, n) { | |
| 1591 | 1591 | const r = |
| 1592 | (o.text ? 1 : 0) | | |
| 1593 | (o.files ? 2 : 0) | | |
| 1594 | (o.display ? 4 : 0) | | |
| 1595 | (o.replyTo ? 8 : 0) | | |
| 1596 | (o.parent ? 16 : 0) | | |
| 1597 | (n >= 18 && o.forwarded ? 32 : 0) | |
| 1592 | (n.text ? 1 : 0) | | |
| 1593 | (n.files ? 2 : 0) | | |
| 1594 | (n.display ? 4 : 0) | | |
| 1595 | (n.replyTo ? 8 : 0) | | |
| 1596 | (n.parent ? 16 : 0) | | |
| 1597 | (o >= 18 && n.forwarded ? 32 : 0) | |
| 1598 | 1598 | ;(e.uint.encode(d, r), |
| 1599 | o.text && e.string.encode(d, o.text), | |
| 1600 | o.files && sn.encode(d, o.files), | |
| 1601 | o.display && pn.encode(d, o.display), | |
| 1602 | o.replyTo && c.encode(d, o.replyTo), | |
| 1603 | o.parent && c.encode(d, o.parent)) | |
| 1599 | n.text && e.string.encode(d, n.text), | |
| 1600 | n.files && so.encode(d, n.files), | |
| 1601 | n.display && po.encode(d, n.display), | |
| 1602 | n.replyTo && c.encode(d, n.replyTo), | |
| 1603 | n.parent && c.encode(d, n.parent)) | |
| 1604 | 1604 | }, |
| 1605 | 1605 | decode(d) { |
| 1606 | const o = e.uint.decode(d) | |
| 1606 | const n = e.uint.decode(d) | |
| 1607 | 1607 | return { |
| 1608 | text: 1 & o ? e.string.decode(d) : null, | |
| 1609 | files: 2 & o ? sn.decode(d) : null, | |
| 1610 | display: 4 & o ? pn.decode(d) : null, | |
| 1611 | replyTo: 8 & o ? c.decode(d) : null, | |
| 1612 | parent: 16 & o ? c.decode(d) : null, | |
| 1613 | forwarded: n >= 18 && !!(32 & o), | |
| 1608 | text: 1 & n ? e.string.decode(d) : null, | |
| 1609 | files: 2 & n ? so.decode(d) : null, | |
| 1610 | display: 4 & n ? po.decode(d) : null, | |
| 1611 | replyTo: 8 & n ? c.decode(d) : null, | |
| 1612 | parent: 16 & n ? c.decode(d) : null, | |
| 1613 | forwarded: o >= 18 && !!(32 & n), | |
| 1614 | 1614 | } |
| 1615 | 1615 | }, |
| 1616 | 1616 | }, |
| 1617 | ln = { | |
| 1617 | lo = { | |
| 1618 | 1618 | preencode(e, d) { |
| 1619 | 1619 | e.end++ |
| 1620 | 1620 | }, |
| 1621 | encode(d, n) { | |
| 1622 | const o = (n.isEdited ? 1 : 0) | (n.isDeleted ? 2 : 0) | (n.isPinned ? 4 : 0) | |
| 1623 | e.uint.encode(d, o) | |
| 1621 | encode(d, o) { | |
| 1622 | const n = (o.isEdited ? 1 : 0) | (o.isDeleted ? 2 : 0) | (o.isPinned ? 4 : 0) | |
| 1623 | e.uint.encode(d, n) | |
| 1624 | 1624 | }, |
| 1625 | 1625 | decode(d) { |
| 1626 | const n = e.uint.decode(d) | |
| 1627 | return { isEdited: !!(1 & n), isDeleted: !!(2 & n), isPinned: !!(4 & n) } | |
| 1626 | const o = e.uint.decode(d) | |
| 1627 | return { isEdited: !!(1 & o), isDeleted: !!(2 & o), isPinned: !!(4 & o) } | |
| 1628 | 1628 | }, |
| 1629 | 1629 | }, |
| 1630 | fn = { | |
| 1631 | preencode(d, n) { | |
| 1632 | ;(e.uint.preencode(d, n.thread), e.uint.preencode(d, n.index)) | |
| 1630 | fo = { | |
| 1631 | preencode(d, o) { | |
| 1632 | ;(e.uint.preencode(d, o.thread), e.uint.preencode(d, o.index)) | |
| 1633 | 1633 | }, |
| 1634 | encode(d, n) { | |
| 1635 | ;(e.uint.encode(d, n.thread), e.uint.encode(d, n.index)) | |
| 1634 | encode(d, o) { | |
| 1635 | ;(e.uint.encode(d, o.thread), e.uint.encode(d, o.index)) | |
| 1636 | 1636 | }, |
| 1637 | 1637 | decode: (d) => ({ thread: e.uint.decode(d), index: e.uint.decode(d) }), |
| 1638 | 1638 | }, |
| 1639 | mn = e.frame(J), | |
| 1640 | yn = { | |
| 1641 | preencode(d, n) { | |
| 1642 | ;(e.uint.preencode(d, n.id), | |
| 1643 | e.uint.preencode(d, n.count), | |
| 1639 | mo = e.frame(O), | |
| 1640 | yo = { | |
| 1641 | preencode(d, o) { | |
| 1642 | ;(e.uint.preencode(d, o.id), | |
| 1643 | e.uint.preencode(d, o.count), | |
| 1644 | 1644 | d.end++, |
| 1645 | n.parent && c.preencode(d, n.parent), | |
| 1646 | n.stats && mn.preencode(d, n.stats)) | |
| 1645 | o.parent && c.preencode(d, o.parent), | |
| 1646 | o.stats && mo.preencode(d, o.stats)) | |
| 1647 | 1647 | }, |
| 1648 | encode(d, n) { | |
| 1649 | const o = (n.parent ? 1 : 0) | (n.stats ? 2 : 0) | |
| 1650 | ;(e.uint.encode(d, n.id), | |
| 1651 | e.uint.encode(d, n.count), | |
| 1652 | e.uint.encode(d, o), | |
| 1653 | n.parent && c.encode(d, n.parent), | |
| 1654 | n.stats && mn.encode(d, n.stats)) | |
| 1648 | encode(d, o) { | |
| 1649 | const n = (o.parent ? 1 : 0) | (o.stats ? 2 : 0) | |
| 1650 | ;(e.uint.encode(d, o.id), | |
| 1651 | e.uint.encode(d, o.count), | |
| 1652 | e.uint.encode(d, n), | |
| 1653 | o.parent && c.encode(d, o.parent), | |
| 1654 | o.stats && mo.encode(d, o.stats)) | |
| 1655 | 1655 | }, |
| 1656 | 1656 | decode(d) { |
| 1657 | const n = e.uint.decode(d), | |
| 1658 | o = e.uint.decode(d), | |
| 1657 | const o = e.uint.decode(d), | |
| 1658 | n = e.uint.decode(d), | |
| 1659 | 1659 | r = e.uint.decode(d) |
| 1660 | 1660 | return { |
| 1661 | id: n, | |
| 1662 | count: o, | |
| 1661 | id: o, | |
| 1662 | count: n, | |
| 1663 | 1663 | parent: 1 & r ? c.decode(d) : null, |
| 1664 | stats: 2 & r ? mn.decode(d) : null, | |
| 1664 | stats: 2 & r ? mo.decode(d) : null, | |
| 1665 | 1665 | } |
| 1666 | 1666 | }, |
| 1667 | 1667 | }, |
| 1668 | xn = e.frame(ln), | |
| 1669 | bn = e.frame(an), | |
| 1670 | kn = e.frame(Ld), | |
| 1671 | vn = { | |
| 1672 | preencode(d, n) { | |
| 1673 | ;(fn.preencode(d, n.id), | |
| 1674 | c.preencode(d, n.oplog), | |
| 1675 | e.uint.preencode(d, n.clock), | |
| 1676 | e.uint.preencode(d, n.timestamp), | |
| 1668 | xo = e.frame(lo), | |
| 1669 | bo = e.frame(ao), | |
| 1670 | ko = e.frame(Ld), | |
| 1671 | vo = { | |
| 1672 | preencode(d, o) { | |
| 1673 | ;(fo.preencode(d, o.id), | |
| 1674 | c.preencode(d, o.oplog), | |
| 1675 | e.uint.preencode(d, o.clock), | |
| 1676 | e.uint.preencode(d, o.timestamp), | |
| 1677 | 1677 | d.end++, |
| 1678 | n.editedAt && e.uint.preencode(d, n.editedAt), | |
| 1679 | xn.preencode(d, n.status), | |
| 1680 | n.message && bn.preencode(d, n.message), | |
| 1681 | n.event && kn.preencode(d, n.event)) | |
| 1678 | o.editedAt && e.uint.preencode(d, o.editedAt), | |
| 1679 | xo.preencode(d, o.status), | |
| 1680 | o.message && bo.preencode(d, o.message), | |
| 1681 | o.event && ko.preencode(d, o.event)) | |
| 1682 | 1682 | }, |
| 1683 | encode(d, n) { | |
| 1684 | const o = (n.editedAt ? 1 : 0) | (n.message ? 2 : 0) | (n.event ? 4 : 0) | |
| 1685 | ;(fn.encode(d, n.id), | |
| 1686 | c.encode(d, n.oplog), | |
| 1687 | e.uint.encode(d, n.clock), | |
| 1688 | e.uint.encode(d, n.timestamp), | |
| 1689 | e.uint.encode(d, o), | |
| 1690 | n.editedAt && e.uint.encode(d, n.editedAt), | |
| 1691 | xn.encode(d, n.status), | |
| 1692 | n.message && bn.encode(d, n.message), | |
| 1693 | n.event && kn.encode(d, n.event)) | |
| 1683 | encode(d, o) { | |
| 1684 | const n = (o.editedAt ? 1 : 0) | (o.message ? 2 : 0) | (o.event ? 4 : 0) | |
| 1685 | ;(fo.encode(d, o.id), | |
| 1686 | c.encode(d, o.oplog), | |
| 1687 | e.uint.encode(d, o.clock), | |
| 1688 | e.uint.encode(d, o.timestamp), | |
| 1689 | e.uint.encode(d, n), | |
| 1690 | o.editedAt && e.uint.encode(d, o.editedAt), | |
| 1691 | xo.encode(d, o.status), | |
| 1692 | o.message && bo.encode(d, o.message), | |
| 1693 | o.event && ko.encode(d, o.event)) | |
| 1694 | 1694 | }, |
| 1695 | 1695 | decode(d) { |
| 1696 | const n = fn.decode(d), | |
| 1697 | o = c.decode(d), | |
| 1696 | const o = fo.decode(d), | |
| 1697 | n = c.decode(d), | |
| 1698 | 1698 | r = e.uint.decode(d), |
| 1699 | 1699 | t = e.uint.decode(d), |
| 1700 | 1700 | i = e.uint.decode(d) |
| 1701 | 1701 | return { |
| 1702 | id: n, | |
| 1703 | oplog: o, | |
| 1702 | id: o, | |
| 1703 | oplog: n, | |
| 1704 | 1704 | clock: r, |
| 1705 | 1705 | timestamp: t, |
| 1706 | 1706 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 1707 | status: xn.decode(d), | |
| 1708 | message: 2 & i ? bn.decode(d) : null, | |
| 1709 | event: 4 & i ? kn.decode(d) : null, | |
| 1707 | status: xo.decode(d), | |
| 1708 | message: 2 & i ? bo.decode(d) : null, | |
| 1709 | event: 4 & i ? ko.decode(d) : null, | |
| 1710 | 1710 | } |
| 1711 | 1711 | }, |
| 1712 | 1712 | }, |
| 1713 | gn = xn, | |
| 1714 | hn = e.frame(un), | |
| 1715 | Kn = kn, | |
| 1716 | wn = { | |
| 1717 | preencode(d, n) { | |
| 1718 | ;(fn.preencode(d, n.id), | |
| 1719 | c.preencode(d, n.oplog), | |
| 1720 | e.uint.preencode(d, n.clock), | |
| 1721 | e.uint.preencode(d, n.timestamp), | |
| 1713 | go = xo, | |
| 1714 | ho = e.frame(uo), | |
| 1715 | Ko = ko, | |
| 1716 | wo = { | |
| 1717 | preencode(d, o) { | |
| 1718 | ;(fo.preencode(d, o.id), | |
| 1719 | c.preencode(d, o.oplog), | |
| 1720 | e.uint.preencode(d, o.clock), | |
| 1721 | e.uint.preencode(d, o.timestamp), | |
| 1722 | 1722 | d.end++, |
| 1723 | n.editedAt && e.uint.preencode(d, n.editedAt), | |
| 1724 | gn.preencode(d, n.status), | |
| 1725 | n.message && hn.preencode(d, n.message), | |
| 1726 | n.event && Kn.preencode(d, n.event)) | |
| 1723 | o.editedAt && e.uint.preencode(d, o.editedAt), | |
| 1724 | go.preencode(d, o.status), | |
| 1725 | o.message && ho.preencode(d, o.message), | |
| 1726 | o.event && Ko.preencode(d, o.event)) | |
| 1727 | 1727 | }, |
| 1728 | encode(d, n) { | |
| 1729 | const o = (n.editedAt ? 1 : 0) | (n.message ? 2 : 0) | (n.event ? 4 : 0) | |
| 1730 | ;(fn.encode(d, n.id), | |
| 1731 | c.encode(d, n.oplog), | |
| 1732 | e.uint.encode(d, n.clock), | |
| 1733 | e.uint.encode(d, n.timestamp), | |
| 1734 | e.uint.encode(d, o), | |
| 1735 | n.editedAt && e.uint.encode(d, n.editedAt), | |
| 1736 | gn.encode(d, n.status), | |
| 1737 | n.message && hn.encode(d, n.message), | |
| 1738 | n.event && Kn.encode(d, n.event)) | |
| 1728 | encode(d, o) { | |
| 1729 | const n = (o.editedAt ? 1 : 0) | (o.message ? 2 : 0) | (o.event ? 4 : 0) | |
| 1730 | ;(fo.encode(d, o.id), | |
| 1731 | c.encode(d, o.oplog), | |
| 1732 | e.uint.encode(d, o.clock), | |
| 1733 | e.uint.encode(d, o.timestamp), | |
| 1734 | e.uint.encode(d, n), | |
| 1735 | o.editedAt && e.uint.encode(d, o.editedAt), | |
| 1736 | go.encode(d, o.status), | |
| 1737 | o.message && ho.encode(d, o.message), | |
| 1738 | o.event && Ko.encode(d, o.event)) | |
| 1739 | 1739 | }, |
| 1740 | 1740 | decode(d) { |
| 1741 | const n = fn.decode(d), | |
| 1742 | o = c.decode(d), | |
| 1741 | const o = fo.decode(d), | |
| 1742 | n = c.decode(d), | |
| 1743 | 1743 | r = e.uint.decode(d), |
| 1744 | 1744 | t = e.uint.decode(d), |
| 1745 | 1745 | i = e.uint.decode(d) |
| 1746 | 1746 | return { |
| 1747 | id: n, | |
| 1748 | oplog: o, | |
| 1747 | id: o, | |
| 1748 | oplog: n, | |
| 1749 | 1749 | clock: r, |
| 1750 | 1750 | timestamp: t, |
| 1751 | 1751 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 1752 | status: gn.decode(d), | |
| 1753 | message: 2 & i ? hn.decode(d) : null, | |
| 1754 | event: 4 & i ? Kn.decode(d) : null, | |
| 1752 | status: go.decode(d), | |
| 1753 | message: 2 & i ? ho.decode(d) : null, | |
| 1754 | event: 4 & i ? Ko.decode(d) : null, | |
| 1755 | 1755 | } |
| 1756 | 1756 | }, |
| 1757 | 1757 | }, |
| 1758 | Tn = _, | |
| 1759 | Pn = e.frame(cn), | |
| 1760 | An = { | |
| 1758 | To = _, | |
| 1759 | Po = e.frame(ro), | |
| 1760 | Ao = { | |
| 1761 | 1761 | preencode(e, d) { |
| 1762 | ;(Tn.preencode(e, d.header), Pn.preencode(e, d.message)) | |
| 1762 | ;(To.preencode(e, d.header), Po.preencode(e, d.message)) | |
| 1763 | 1763 | }, |
| 1764 | 1764 | encode(e, d) { |
| 1765 | ;(Tn.encode(e, d.header), Pn.encode(e, d.message)) | |
| 1765 | ;(To.encode(e, d.header), Po.encode(e, d.message)) | |
| 1766 | 1766 | }, |
| 1767 | decode: (e) => ({ header: Tn.decode(e), message: Pn.decode(e) }), | |
| 1767 | decode: (e) => ({ header: To.decode(e), message: Po.decode(e) }), | |
| 1768 | 1768 | }, |
| 1769 | Rn = _, | |
| 1770 | Dn = { | |
| 1769 | Ro = _, | |
| 1770 | Do = { | |
| 1771 | 1771 | preencode(e, d) { |
| 1772 | ;(Rn.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1772 | ;(Ro.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1773 | 1773 | }, |
| 1774 | 1774 | encode(e, d) { |
| 1775 | ;(Rn.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1775 | ;(Ro.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1776 | 1776 | }, |
| 1777 | decode: (e) => ({ header: Rn.decode(e), oplog: c.decode(e) }), | |
| 1777 | decode: (e) => ({ header: Ro.decode(e), oplog: c.decode(e) }), | |
| 1778 | 1778 | }, |
| 1779 | Sn = _, | |
| 1780 | Cn = Pn, | |
| 1781 | Mn = { | |
| 1779 | Mo = _, | |
| 1780 | So = Po, | |
| 1781 | Co = { | |
| 1782 | 1782 | preencode(e, d) { |
| 1783 | ;(Sn.preencode(e, d.header), c.preencode(e, d.oplog), Cn.preencode(e, d.message)) | |
| 1783 | ;(Mo.preencode(e, d.header), c.preencode(e, d.oplog), So.preencode(e, d.message)) | |
| 1784 | 1784 | }, |
| 1785 | 1785 | encode(e, d) { |
| 1786 | ;(Sn.encode(e, d.header), c.encode(e, d.oplog), Cn.encode(e, d.message)) | |
| 1786 | ;(Mo.encode(e, d.header), c.encode(e, d.oplog), So.encode(e, d.message)) | |
| 1787 | 1787 | }, |
| 1788 | decode: (e) => ({ header: Sn.decode(e), oplog: c.decode(e), message: Cn.decode(e) }), | |
| 1788 | decode: (e) => ({ header: Mo.decode(e), oplog: c.decode(e), message: So.decode(e) }), | |
| 1789 | 1789 | }, |
| 1790 | Ln = _, | |
| 1791 | qn = { | |
| 1790 | Lo = _, | |
| 1791 | qo = { | |
| 1792 | 1792 | preencode(e, d) { |
| 1793 | ;(Ln.preencode(e, d.header), c.preencode(e, d.oplog), e.end++) | |
| 1793 | ;(Lo.preencode(e, d.header), c.preencode(e, d.oplog), e.end++) | |
| 1794 | 1794 | }, |
| 1795 | encode(d, n) { | |
| 1796 | const o = n.isPinned ? 1 : 0 | |
| 1797 | ;(Ln.encode(d, n.header), c.encode(d, n.oplog), e.uint.encode(d, o)) | |
| 1795 | encode(d, o) { | |
| 1796 | const n = o.isPinned ? 1 : 0 | |
| 1797 | ;(Lo.encode(d, o.header), c.encode(d, o.oplog), e.uint.encode(d, n)) | |
| 1798 | 1798 | }, |
| 1799 | 1799 | decode: (d) => ({ |
| 1800 | header: Ln.decode(d), | |
| 1800 | header: Lo.decode(d), | |
| 1801 | 1801 | oplog: c.decode(d), |
| 1802 | 1802 | isPinned: !!(1 & e.uint.decode(d)), |
| 1803 | 1803 | }), |
| 1804 | 1804 | }, |
| 1805 | Fn = { | |
| 1806 | preencode(d, n) { | |
| 1807 | ;(fn.preencode(d, n.id), | |
| 1808 | e.fixed32.preencode(d, n.sender), | |
| 1809 | e.uint.preencode(d, n.clock), | |
| 1810 | e.string.preencode(d, n.reaction)) | |
| 1805 | Fo = { | |
| 1806 | preencode(d, o) { | |
| 1807 | ;(fo.preencode(d, o.id), | |
| 1808 | e.fixed32.preencode(d, o.sender), | |
| 1809 | e.uint.preencode(d, o.clock), | |
| 1810 | e.string.preencode(d, o.reaction)) | |
| 1811 | 1811 | }, |
| 1812 | encode(d, n) { | |
| 1813 | ;(fn.encode(d, n.id), | |
| 1814 | e.fixed32.encode(d, n.sender), | |
| 1815 | e.uint.encode(d, n.clock), | |
| 1816 | e.string.encode(d, n.reaction)) | |
| 1812 | encode(d, o) { | |
| 1813 | ;(fo.encode(d, o.id), | |
| 1814 | e.fixed32.encode(d, o.sender), | |
| 1815 | e.uint.encode(d, o.clock), | |
| 1816 | e.string.encode(d, o.reaction)) | |
| 1817 | 1817 | }, |
| 1818 | 1818 | decode: (d) => ({ |
| 1819 | id: fn.decode(d), | |
| 1819 | id: fo.decode(d), | |
| 1820 | 1820 | sender: e.fixed32.decode(d), |
| 1821 | 1821 | clock: e.uint.decode(d), |
| 1822 | 1822 | reaction: e.string.decode(d), |
| 1823 | 1823 | }), |
| 1824 | 1824 | }, |
| 1825 | En = { | |
| 1826 | preencode(d, n) { | |
| 1827 | ;(e.string.preencode(d, n.text), e.uint.preencode(d, n.count)) | |
| 1825 | Eo = { | |
| 1826 | preencode(d, o) { | |
| 1827 | ;(e.string.preencode(d, o.text), e.uint.preencode(d, o.count)) | |
| 1828 | 1828 | }, |
| 1829 | encode(d, n) { | |
| 1830 | ;(e.string.encode(d, n.text), e.uint.encode(d, n.count)) | |
| 1829 | encode(d, o) { | |
| 1830 | ;(e.string.encode(d, o.text), e.uint.encode(d, o.count)) | |
| 1831 | 1831 | }, |
| 1832 | 1832 | decode: (d) => ({ text: e.string.decode(d), count: e.uint.decode(d) }), |
| 1833 | 1833 | }, |
| 1834 | Bn = e.array(e.frame(En)), | |
| 1835 | In = { | |
| 1836 | preencode(d, o) { | |
| 1837 | ;(fn.preencode(d, o.id), | |
| 1838 | e.uint.preencode(d, o.total), | |
| 1839 | Bn.preencode(d, o.reactions), | |
| 1834 | Bo = e.array(e.frame(Eo)), | |
| 1835 | Io = { | |
| 1836 | preencode(d, n) { | |
| 1837 | ;(fo.preencode(d, n.id), | |
| 1838 | e.uint.preencode(d, n.total), | |
| 1839 | Bo.preencode(d, n.reactions), | |
| 1840 | 1840 | d.end++, |
| 1841 | n >= 11 && o.editedAt && e.uint.preencode(d, o.editedAt)) | |
| 1841 | o >= 11 && n.editedAt && e.uint.preencode(d, n.editedAt)) | |
| 1842 | 1842 | }, |
| 1843 | encode(d, o) { | |
| 1844 | const c = n >= 11 && o.editedAt ? 1 : 0 | |
| 1845 | ;(fn.encode(d, o.id), | |
| 1846 | e.uint.encode(d, o.total), | |
| 1847 | Bn.encode(d, o.reactions), | |
| 1843 | encode(d, n) { | |
| 1844 | const c = o >= 11 && n.editedAt ? 1 : 0 | |
| 1845 | ;(fo.encode(d, n.id), | |
| 1846 | e.uint.encode(d, n.total), | |
| 1847 | Bo.encode(d, n.reactions), | |
| 1848 | 1848 | e.uint.encode(d, c), |
| 1849 | n >= 11 && o.editedAt && e.uint.encode(d, o.editedAt)) | |
| 1849 | o >= 11 && n.editedAt && e.uint.encode(d, n.editedAt)) | |
| 1850 | 1850 | }, |
| 1851 | 1851 | decode(d) { |
| 1852 | const o = fn.decode(d), | |
| 1852 | const n = fo.decode(d), | |
| 1853 | 1853 | c = e.uint.decode(d), |
| 1854 | r = Bn.decode(d), | |
| 1854 | r = Bo.decode(d), | |
| 1855 | 1855 | t = d.start < d.end ? e.uint.decode(d) : 0 |
| 1856 | return { id: o, total: c, reactions: r, editedAt: n >= 11 && 1 & t ? e.uint.decode(d) : 0 } | |
| 1856 | return { id: n, total: c, reactions: r, editedAt: o >= 11 && 1 & t ? e.uint.decode(d) : 0 } | |
| 1857 | 1857 | }, |
| 1858 | 1858 | }, |
| 1859 | Nn = _, | |
| 1860 | jn = { | |
| 1861 | preencode(d, n) { | |
| 1862 | ;(Nn.preencode(d, n.header), c.preencode(d, n.oplog), e.string.preencode(d, n.reaction)) | |
| 1859 | No = _, | |
| 1860 | jo = { | |
| 1861 | preencode(d, o) { | |
| 1862 | ;(No.preencode(d, o.header), c.preencode(d, o.oplog), e.string.preencode(d, o.reaction)) | |
| 1863 | 1863 | }, |
| 1864 | encode(d, n) { | |
| 1865 | ;(Nn.encode(d, n.header), c.encode(d, n.oplog), e.string.encode(d, n.reaction)) | |
| 1864 | encode(d, o) { | |
| 1865 | ;(No.encode(d, o.header), c.encode(d, o.oplog), e.string.encode(d, o.reaction)) | |
| 1866 | 1866 | }, |
| 1867 | decode: (d) => ({ header: Nn.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1867 | decode: (d) => ({ header: No.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1868 | 1868 | }, |
| 1869 | On = _, | |
| 1870 | Jn = { | |
| 1871 | preencode(d, n) { | |
| 1872 | ;(On.preencode(d, n.header), c.preencode(d, n.oplog), e.string.preencode(d, n.reaction)) | |
| 1869 | Uo = _, | |
| 1870 | Oo = { | |
| 1871 | preencode(d, o) { | |
| 1872 | ;(Uo.preencode(d, o.header), c.preencode(d, o.oplog), e.string.preencode(d, o.reaction)) | |
| 1873 | 1873 | }, |
| 1874 | encode(d, n) { | |
| 1875 | ;(On.encode(d, n.header), c.encode(d, n.oplog), e.string.encode(d, n.reaction)) | |
| 1874 | encode(d, o) { | |
| 1875 | ;(Uo.encode(d, o.header), c.encode(d, o.oplog), e.string.encode(d, o.reaction)) | |
| 1876 | 1876 | }, |
| 1877 | decode: (d) => ({ header: On.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1877 | decode: (d) => ({ header: Uo.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1878 | 1878 | }, |
| 1879 | Un = _, | |
| 1880 | Vn = e.frame(Z), | |
| 1881 | Hn = { | |
| 1882 | preencode(d, n) { | |
| 1883 | ;(Un.preencode(d, n.header), e.uint.preencode(d, n.key), Vn.preencode(d, n.config)) | |
| 1879 | Jo = _, | |
| 1880 | Vo = e.frame(Z), | |
| 1881 | Ho = { | |
| 1882 | preencode(d, o) { | |
| 1883 | ;(Jo.preencode(d, o.header), e.uint.preencode(d, o.key), Vo.preencode(d, o.config)) | |
| 1884 | 1884 | }, |
| 1885 | encode(d, n) { | |
| 1886 | ;(Un.encode(d, n.header), e.uint.encode(d, n.key), Vn.encode(d, n.config)) | |
| 1885 | encode(d, o) { | |
| 1886 | ;(Jo.encode(d, o.header), e.uint.encode(d, o.key), Vo.encode(d, o.config)) | |
| 1887 | 1887 | }, |
| 1888 | decode: (d) => ({ header: Un.decode(d), key: e.uint.decode(d), config: Vn.decode(d) }), | |
| 1888 | decode: (d) => ({ header: Jo.decode(d), key: e.uint.decode(d), config: Vo.decode(d) }), | |
| 1889 | 1889 | }, |
| 1890 | zn = { | |
| 1891 | preencode(d, n) { | |
| 1892 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 1893 | e.string.preencode(d, n.displayName), | |
| 1890 | zo = { | |
| 1891 | preencode(d, o) { | |
| 1892 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 1893 | e.string.preencode(d, o.displayName), | |
| 1894 | 1894 | d.end++, |
| 1895 | n.avatar && ct.preencode(d, n.avatar)) | |
| 1895 | o.avatar && tt.preencode(d, o.avatar)) | |
| 1896 | 1896 | }, |
| 1897 | encode(d, n) { | |
| 1898 | const o = n.avatar ? 1 : 0 | |
| 1899 | ;(e.fixed32.encode(d, n.memberKey), | |
| 1900 | e.string.encode(d, n.displayName), | |
| 1901 | e.uint.encode(d, o), | |
| 1902 | n.avatar && ct.encode(d, n.avatar)) | |
| 1897 | encode(d, o) { | |
| 1898 | const n = o.avatar ? 1 : 0 | |
| 1899 | ;(e.fixed32.encode(d, o.memberKey), | |
| 1900 | e.string.encode(d, o.displayName), | |
| 1901 | e.uint.encode(d, n), | |
| 1902 | o.avatar && tt.encode(d, o.avatar)) | |
| 1903 | 1903 | }, |
| 1904 | 1904 | decode: (d) => ({ |
| 1905 | 1905 | memberKey: e.fixed32.decode(d), |
| 1906 | 1906 | displayName: e.string.decode(d), |
| 1907 | avatar: 1 & e.uint.decode(d) ? ct.decode(d) : null, | |
| 1907 | avatar: 1 & e.uint.decode(d) ? tt.decode(d) : null, | |
| 1908 | 1908 | }), |
| 1909 | 1909 | }, |
| 1910 | Gn = { | |
| 1911 | preencode(d, n) { | |
| 1912 | ;(e.fixed32.preencode(d, n.key), d.end++, n.username && e.string.preencode(d, n.username)) | |
| 1910 | Go = { | |
| 1911 | preencode(d, o) { | |
| 1912 | ;(e.fixed32.preencode(d, o.key), d.end++, o.username && e.string.preencode(d, o.username)) | |
| 1913 | 1913 | }, |
| 1914 | encode(d, n) { | |
| 1915 | const o = n.username ? 1 : 0 | |
| 1916 | ;(e.fixed32.encode(d, n.key), | |
| 1917 | e.uint.encode(d, o), | |
| 1918 | n.username && e.string.encode(d, n.username)) | |
| 1914 | encode(d, o) { | |
| 1915 | const n = o.username ? 1 : 0 | |
| 1916 | ;(e.fixed32.encode(d, o.key), | |
| 1917 | e.uint.encode(d, n), | |
| 1918 | o.username && e.string.encode(d, o.username)) | |
| 1919 | 1919 | }, |
| 1920 | 1920 | decode: (d) => ({ |
| 1921 | 1921 | key: e.fixed32.decode(d), |
| 1922 | 1922 | username: 1 & e.uint.decode(d) ? e.string.decode(d) : null, |
| 1923 | 1923 | }), |
| 1924 | 1924 | }, |
| 1925 | Qn = e.frame(Gn), | |
| 1926 | Wn = { | |
| 1927 | preencode(d, n) { | |
| 1928 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 1925 | Qo = e.frame(Go), | |
| 1926 | Wo = { | |
| 1927 | preencode(d, o) { | |
| 1928 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 1929 | 1929 | d.end++, |
| 1930 | n.discoveryCoreKey && e.fixed32.preencode(d, n.discoveryCoreKey), | |
| 1931 | n.userRegistry && Qn.preencode(d, n.userRegistry)) | |
| 1930 | o.discoveryCoreKey && e.fixed32.preencode(d, o.discoveryCoreKey), | |
| 1931 | o.userRegistry && Qo.preencode(d, o.userRegistry)) | |
| 1932 | 1932 | }, |
| 1933 | encode(d, n) { | |
| 1934 | const o = (n.discoveryCoreKey ? 1 : 0) | (n.userRegistry ? 2 : 0) | |
| 1935 | ;(e.fixed32.encode(d, n.publicKey), | |
| 1936 | e.uint.encode(d, o), | |
| 1937 | n.discoveryCoreKey && e.fixed32.encode(d, n.discoveryCoreKey), | |
| 1938 | n.userRegistry && Qn.encode(d, n.userRegistry)) | |
| 1933 | encode(d, o) { | |
| 1934 | const n = (o.discoveryCoreKey ? 1 : 0) | (o.userRegistry ? 2 : 0) | |
| 1935 | ;(e.fixed32.encode(d, o.publicKey), | |
| 1936 | e.uint.encode(d, n), | |
| 1937 | o.discoveryCoreKey && e.fixed32.encode(d, o.discoveryCoreKey), | |
| 1938 | o.userRegistry && Qo.encode(d, o.userRegistry)) | |
| 1939 | 1939 | }, |
| 1940 | 1940 | decode(d) { |
| 1941 | const n = e.fixed32.decode(d), | |
| 1942 | o = e.uint.decode(d) | |
| 1941 | const o = e.fixed32.decode(d), | |
| 1942 | n = e.uint.decode(d) | |
| 1943 | 1943 | return { |
| 1944 | publicKey: n, | |
| 1945 | discoveryCoreKey: 1 & o ? e.fixed32.decode(d) : null, | |
| 1946 | userRegistry: 2 & o ? Qn.decode(d) : null, | |
| 1944 | publicKey: o, | |
| 1945 | discoveryCoreKey: 1 & n ? e.fixed32.decode(d) : null, | |
| 1946 | userRegistry: 2 & n ? Qo.decode(d) : null, | |
| 1947 | 1947 | } |
| 1948 | 1948 | }, |
| 1949 | 1949 | }, |
| 1950 | Xn = _, | |
| 1951 | Yn = e.frame(Q), | |
| 1952 | Zn = e.frame(W), | |
| 1953 | $n = Vn, | |
| 1954 | _n = e.frame(Wn), | |
| 1955 | eo = be, | |
| 1956 | no = e.array(e.frame(le)), | |
| 1957 | oo = { | |
| 1950 | Xo = _, | |
| 1951 | Yo = e.frame(Q), | |
| 1952 | Zo = e.frame(W), | |
| 1953 | $o = Vo, | |
| 1954 | _o = e.frame(Wo), | |
| 1955 | en = be, | |
| 1956 | dn = e.array(e.frame(le)), | |
| 1957 | on = { | |
| 1958 | 1958 | preencode(e, d) { |
| 1959 | ;(Xn.preencode(e, d.header), | |
| 1960 | Yn.preencode(e, d.digest), | |
| 1961 | Zn.preencode(e, d.capabilities), | |
| 1959 | ;(Xo.preencode(e, d.header), | |
| 1960 | Yo.preencode(e, d.digest), | |
| 1961 | Zo.preencode(e, d.capabilities), | |
| 1962 | 1962 | e.end++, |
| 1963 | d.config && $n.preencode(e, d.config), | |
| 1964 | d.identity && _n.preencode(e, d.identity), | |
| 1965 | d.bootstrapDevice && eo.preencode(e, d.bootstrapDevice), | |
| 1966 | d.initialMembers && no.preencode(e, d.initialMembers)) | |
| 1963 | d.config && $o.preencode(e, d.config), | |
| 1964 | d.identity && _o.preencode(e, d.identity), | |
| 1965 | d.bootstrapDevice && en.preencode(e, d.bootstrapDevice), | |
| 1966 | d.initialMembers && dn.preencode(e, d.initialMembers)) | |
| 1967 | 1967 | }, |
| 1968 | encode(d, n) { | |
| 1969 | const o = | |
| 1970 | (n.config ? 1 : 0) | | |
| 1971 | (n.identity ? 2 : 0) | | |
| 1972 | (n.bootstrapDevice ? 4 : 0) | | |
| 1973 | (n.initialMembers ? 8 : 0) | |
| 1974 | ;(Xn.encode(d, n.header), | |
| 1975 | Yn.encode(d, n.digest), | |
| 1976 | Zn.encode(d, n.capabilities), | |
| 1977 | e.uint.encode(d, o), | |
| 1978 | n.config && $n.encode(d, n.config), | |
| 1979 | n.identity && _n.encode(d, n.identity), | |
| 1980 | n.bootstrapDevice && eo.encode(d, n.bootstrapDevice), | |
| 1981 | n.initialMembers && no.encode(d, n.initialMembers)) | |
| 1968 | encode(d, o) { | |
| 1969 | const n = | |
| 1970 | (o.config ? 1 : 0) | | |
| 1971 | (o.identity ? 2 : 0) | | |
| 1972 | (o.bootstrapDevice ? 4 : 0) | | |
| 1973 | (o.initialMembers ? 8 : 0) | |
| 1974 | ;(Xo.encode(d, o.header), | |
| 1975 | Yo.encode(d, o.digest), | |
| 1976 | Zo.encode(d, o.capabilities), | |
| 1977 | e.uint.encode(d, n), | |
| 1978 | o.config && $o.encode(d, o.config), | |
| 1979 | o.identity && _o.encode(d, o.identity), | |
| 1980 | o.bootstrapDevice && en.encode(d, o.bootstrapDevice), | |
| 1981 | o.initialMembers && dn.encode(d, o.initialMembers)) | |
| 1982 | 1982 | }, |
| 1983 | 1983 | decode(d) { |
| 1984 | const n = Xn.decode(d), | |
| 1985 | o = Yn.decode(d), | |
| 1986 | c = Zn.decode(d), | |
| 1984 | const o = Xo.decode(d), | |
| 1985 | n = Yo.decode(d), | |
| 1986 | c = Zo.decode(d), | |
| 1987 | 1987 | r = e.uint.decode(d) |
| 1988 | 1988 | return { |
| 1989 | header: n, | |
| 1990 | digest: o, | |
| 1989 | header: o, | |
| 1990 | digest: n, | |
| 1991 | 1991 | capabilities: c, |
| 1992 | config: 1 & r ? $n.decode(d) : null, | |
| 1993 | identity: 2 & r ? _n.decode(d) : null, | |
| 1994 | bootstrapDevice: 4 & r ? eo.decode(d) : null, | |
| 1995 | initialMembers: 8 & r ? no.decode(d) : null, | |
| 1992 | config: 1 & r ? $o.decode(d) : null, | |
| 1993 | identity: 2 & r ? _o.decode(d) : null, | |
| 1994 | bootstrapDevice: 4 & r ? en.decode(d) : null, | |
| 1995 | initialMembers: 8 & r ? dn.decode(d) : null, | |
| 1996 | 1996 | } |
| 1997 | 1997 | }, |
| 1998 | 1998 | }, |
| 1999 | co = _, | |
| 2000 | ro = { | |
| 2001 | preencode(d, n) { | |
| 2002 | ;(co.preencode(d, n.header), e.uint.preencode(d, n.version)) | |
| 1999 | nn = _, | |
| 2000 | cn = { | |
| 2001 | preencode(d, o) { | |
| 2002 | ;(nn.preencode(d, o.header), e.uint.preencode(d, o.version)) | |
| 2003 | 2003 | }, |
| 2004 | encode(d, n) { | |
| 2005 | ;(co.encode(d, n.header), e.uint.encode(d, n.version)) | |
| 2004 | encode(d, o) { | |
| 2005 | ;(nn.encode(d, o.header), e.uint.encode(d, o.version)) | |
| 2006 | 2006 | }, |
| 2007 | decode: (d) => ({ header: co.decode(d), version: e.uint.decode(d) }), | |
| 2007 | decode: (d) => ({ header: nn.decode(d), version: e.uint.decode(d) }), | |
| 2008 | 2008 | }, |
| 2009 | to = _, | |
| 2010 | io = G, | |
| 2011 | ao = { | |
| 2012 | preencode(d, n) { | |
| 2013 | ;(to.preencode(d, n.header), e.uint.preencode(d, n.key), io.preencode(d, n.settings)) | |
| 2009 | rn = _, | |
| 2010 | tn = G, | |
| 2011 | an = { | |
| 2012 | preencode(d, o) { | |
| 2013 | ;(rn.preencode(d, o.header), e.uint.preencode(d, o.key), tn.preencode(d, o.settings)) | |
| 2014 | 2014 | }, |
| 2015 | encode(d, n) { | |
| 2016 | ;(to.encode(d, n.header), e.uint.encode(d, n.key), io.encode(d, n.settings)) | |
| 2015 | encode(d, o) { | |
| 2016 | ;(rn.encode(d, o.header), e.uint.encode(d, o.key), tn.encode(d, o.settings)) | |
| 2017 | 2017 | }, |
| 2018 | decode: (d) => ({ header: to.decode(d), key: e.uint.decode(d), settings: io.decode(d) }), | |
| 2018 | decode: (d) => ({ header: rn.decode(d), key: e.uint.decode(d), settings: tn.decode(d) }), | |
| 2019 | 2019 | }, |
| 2020 | so = { | |
| 2021 | preencode(d, n) { | |
| 2022 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 2023 | rt.preencode(d, n.status), | |
| 2020 | sn = { | |
| 2021 | preencode(d, o) { | |
| 2022 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 2023 | it.preencode(d, o.status), | |
| 2024 | 2024 | d.end++, |
| 2025 | n.mailbox && e.fixed32.preencode(d, n.mailbox), | |
| 2026 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) | |
| 2025 | o.mailbox && e.fixed32.preencode(d, o.mailbox), | |
| 2026 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) | |
| 2027 | 2027 | }, |
| 2028 | encode(d, n) { | |
| 2029 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) | |
| 2030 | ;(e.fixed32.encode(d, n.memberKey), | |
| 2031 | rt.encode(d, n.status), | |
| 2032 | e.uint.encode(d, o), | |
| 2033 | n.mailbox && e.fixed32.encode(d, n.mailbox), | |
| 2034 | n.roomKey && e.fixed32.encode(d, n.roomKey)) | |
| 2028 | encode(d, o) { | |
| 2029 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) | |
| 2030 | ;(e.fixed32.encode(d, o.memberKey), | |
| 2031 | it.encode(d, o.status), | |
| 2032 | e.uint.encode(d, n), | |
| 2033 | o.mailbox && e.fixed32.encode(d, o.mailbox), | |
| 2034 | o.roomKey && e.fixed32.encode(d, o.roomKey)) | |
| 2035 | 2035 | }, |
| 2036 | 2036 | decode(d) { |
| 2037 | const n = e.fixed32.decode(d), | |
| 2038 | o = rt.decode(d), | |
| 2037 | const o = e.fixed32.decode(d), | |
| 2038 | n = it.decode(d), | |
| 2039 | 2039 | c = e.uint.decode(d) |
| 2040 | 2040 | return { |
| 2041 | memberKey: n, | |
| 2042 | status: o, | |
| 2041 | memberKey: o, | |
| 2042 | status: n, | |
| 2043 | 2043 | mailbox: 1 & c ? e.fixed32.decode(d) : null, |
| 2044 | 2044 | roomKey: 2 & c ? e.fixed32.decode(d) : null, |
| 2045 | 2045 | } |
| 2046 | 2046 | }, |
| 2047 | 2047 | }, |
| 2048 | po = { | |
| 2049 | preencode(d, n) { | |
| 2050 | ;(e.fixed32.preencode(d, n.roomKey), | |
| 2051 | e.buffer.preencode(d, n.encryptionKey), | |
| 2052 | e.fixed32.preencode(d, n.seed), | |
| 2053 | o.preencode(d, n.initiator), | |
| 2054 | e.fixed32.preencode(d, n.fastForwardTo)) | |
| 2048 | pn = { | |
| 2049 | preencode(d, o) { | |
| 2050 | ;(e.fixed32.preencode(d, o.roomKey), | |
| 2051 | e.buffer.preencode(d, o.encryptionKey), | |
| 2052 | e.fixed32.preencode(d, o.seed), | |
| 2053 | n.preencode(d, o.initiator), | |
| 2054 | e.fixed32.preencode(d, o.fastForwardTo)) | |
| 2055 | 2055 | }, |
| 2056 | encode(d, n) { | |
| 2057 | ;(e.fixed32.encode(d, n.roomKey), | |
| 2058 | e.buffer.encode(d, n.encryptionKey), | |
| 2059 | e.fixed32.encode(d, n.seed), | |
| 2060 | o.encode(d, n.initiator), | |
| 2061 | e.fixed32.encode(d, n.fastForwardTo)) | |
| 2056 | encode(d, o) { | |
| 2057 | ;(e.fixed32.encode(d, o.roomKey), | |
| 2058 | e.buffer.encode(d, o.encryptionKey), | |
| 2059 | e.fixed32.encode(d, o.seed), | |
| 2060 | n.encode(d, o.initiator), | |
| 2061 | e.fixed32.encode(d, o.fastForwardTo)) | |
| 2062 | 2062 | }, |
| 2063 | 2063 | decode: (d) => ({ |
| 2064 | 2064 | roomKey: e.fixed32.decode(d), |
| 2065 | 2065 | encryptionKey: e.buffer.decode(d), |
| 2066 | 2066 | seed: e.fixed32.decode(d), |
| 2067 | initiator: o.decode(d), | |
| 2067 | initiator: n.decode(d), | |
| 2068 | 2068 | fastForwardTo: e.fixed32.decode(d), |
| 2069 | 2069 | }), |
| 2070 | 2070 | }, |
| 2071 | uo = e.array(e.frame(po)), | |
| 2072 | lo = Y, | |
| 2073 | fo = { | |
| 2071 | un = e.array(e.frame(pn)), | |
| 2072 | ln = Y, | |
| 2073 | fn = { | |
| 2074 | 2074 | preencode(e, d) { |
| 2075 | ;(uo.preencode(e, d.sharedRooms), lo.preencode(e, d.blockedContacts)) | |
| 2075 | ;(un.preencode(e, d.sharedRooms), ln.preencode(e, d.blockedContacts)) | |
| 2076 | 2076 | }, |
| 2077 | 2077 | encode(e, d) { |
| 2078 | ;(uo.encode(e, d.sharedRooms), lo.encode(e, d.blockedContacts)) | |
| 2078 | ;(un.encode(e, d.sharedRooms), ln.encode(e, d.blockedContacts)) | |
| 2079 | 2079 | }, |
| 2080 | decode: (e) => ({ sharedRooms: uo.decode(e), blockedContacts: lo.decode(e) }), | |
| 2080 | decode: (e) => ({ sharedRooms: un.decode(e), blockedContacts: ln.decode(e) }), | |
| 2081 | 2081 | }, |
| 2082 | mo = _n, | |
| 2083 | yo = { | |
| 2082 | mn = _o, | |
| 2083 | yn = { | |
| 2084 | 2084 | preencode(e, d) { |
| 2085 | mo.preencode(e, d.identity) | |
| 2085 | mn.preencode(e, d.identity) | |
| 2086 | 2086 | }, |
| 2087 | 2087 | encode(e, d) { |
| 2088 | mo.encode(e, d.identity) | |
| 2088 | mn.encode(e, d.identity) | |
| 2089 | 2089 | }, |
| 2090 | decode: (e) => ({ identity: mo.decode(e) }), | |
| 2090 | decode: (e) => ({ identity: mn.decode(e) }), | |
| 2091 | 2091 | }, |
| 2092 | xo = { | |
| 2093 | preencode(d, n) { | |
| 2094 | ;(e.uint.preencode(d, n.rooms), e.uint.preencode(d, n.contacts)) | |
| 2092 | xn = { | |
| 2093 | preencode(d, o) { | |
| 2094 | ;(e.uint.preencode(d, o.rooms), e.uint.preencode(d, o.contacts)) | |
| 2095 | 2095 | }, |
| 2096 | encode(d, n) { | |
| 2097 | ;(e.uint.encode(d, n.rooms), e.uint.encode(d, n.contacts)) | |
| 2096 | encode(d, o) { | |
| 2097 | ;(e.uint.encode(d, o.rooms), e.uint.encode(d, o.contacts)) | |
| 2098 | 2098 | }, |
| 2099 | 2099 | decode: (d) => ({ rooms: e.uint.decode(d), contacts: e.uint.decode(d) }), |
| 2100 | 2100 | }, |
| 2101 | bo = { | |
| 2102 | preencode(d, n) { | |
| 2103 | ;(e.uint.preencode(d, n.rooms), e.uint.preencode(d, n.contactRequests)) | |
| 2101 | bn = { | |
| 2102 | preencode(d, o) { | |
| 2103 | ;(e.uint.preencode(d, o.rooms), e.uint.preencode(d, o.contactRequests)) | |
| 2104 | 2104 | }, |
| 2105 | encode(d, n) { | |
| 2106 | ;(e.uint.encode(d, n.rooms), e.uint.encode(d, n.contactRequests)) | |
| 2105 | encode(d, o) { | |
| 2106 | ;(e.uint.encode(d, o.rooms), e.uint.encode(d, o.contactRequests)) | |
| 2107 | 2107 | }, |
| 2108 | 2108 | decode: (d) => ({ rooms: e.uint.decode(d), contactRequests: e.uint.decode(d) }), |
| 2109 | 2109 | }, |
| 2110 | ko = { | |
| 2111 | preencode(d, n) { | |
| 2112 | e.buffer.preencode(d, n.entropy) | |
| 2110 | kn = { | |
| 2111 | preencode(d, o) { | |
| 2112 | e.buffer.preencode(d, o.entropy) | |
| 2113 | 2113 | }, |
| 2114 | encode(d, n) { | |
| 2115 | e.buffer.encode(d, n.entropy) | |
| 2114 | encode(d, o) { | |
| 2115 | e.buffer.encode(d, o.entropy) | |
| 2116 | 2116 | }, |
| 2117 | 2117 | decode: (d) => ({ entropy: e.buffer.decode(d) }), |
| 2118 | 2118 | }, |
| 2119 | vo = { | |
| 2120 | preencode(d, n) { | |
| 2121 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 2122 | e.fixed32.preencode(d, n.devicePublicKey), | |
| 2123 | e.fixed32.preencode(d, n.writerKey)) | |
| 2119 | vn = { | |
| 2120 | preencode(d, o) { | |
| 2121 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 2122 | e.fixed32.preencode(d, o.devicePublicKey), | |
| 2123 | e.fixed32.preencode(d, o.writerKey)) | |
| 2124 | 2124 | }, |
| 2125 | encode(d, n) { | |
| 2126 | ;(e.fixed32.encode(d, n.publicKey), | |
| 2127 | e.fixed32.encode(d, n.devicePublicKey), | |
| 2128 | e.fixed32.encode(d, n.writerKey)) | |
| 2125 | encode(d, o) { | |
| 2126 | ;(e.fixed32.encode(d, o.publicKey), | |
| 2127 | e.fixed32.encode(d, o.devicePublicKey), | |
| 2128 | e.fixed32.encode(d, o.writerKey)) | |
| 2129 | 2129 | }, |
| 2130 | 2130 | decode: (d) => ({ |
| 2131 | 2131 | publicKey: e.fixed32.decode(d), |
| … | … | @@ -2133,38 +2133,38 @@ const o = { |
| 2133 | 2133 | writerKey: e.fixed32.decode(d), |
| 2134 | 2134 | }), |
| 2135 | 2135 | }, |
| 2136 | go = e.frame(vo), | |
| 2137 | ho = { | |
| 2136 | gn = e.frame(vn), | |
| 2137 | hn = { | |
| 2138 | 2138 | preencode(d, c) { |
| 2139 | 2139 | ;(e.fixed32.preencode(d, c.id), |
| 2140 | 2140 | e.fixed32.preencode(d, c.invitationSeed), |
| 2141 | 2141 | e.fixed32.preencode(d, c.mailbox), |
| 2142 | 2142 | t.preencode(d, c.responseKeyPair), |
| 2143 | o.preencode(d, c.initiator), | |
| 2144 | o.preencode(d, c.inviter), | |
| 2143 | n.preencode(d, c.initiator), | |
| 2144 | n.preencode(d, c.inviter), | |
| 2145 | 2145 | d.end++, |
| 2146 | c.identity && go.preencode(d, c.identity), | |
| 2147 | n >= 20 && c.buildType && Or.preencode(d, c.buildType)) | |
| 2146 | c.identity && gn.preencode(d, c.identity), | |
| 2147 | o >= 20 && c.buildType && Ur.preencode(d, c.buildType)) | |
| 2148 | 2148 | }, |
| 2149 | 2149 | encode(d, c) { |
| 2150 | const r = (c.identity ? 1 : 0) | (n >= 20 && c.buildType ? 2 : 0) | |
| 2150 | const r = (c.identity ? 1 : 0) | (o >= 20 && c.buildType ? 2 : 0) | |
| 2151 | 2151 | ;(e.fixed32.encode(d, c.id), |
| 2152 | 2152 | e.fixed32.encode(d, c.invitationSeed), |
| 2153 | 2153 | e.fixed32.encode(d, c.mailbox), |
| 2154 | 2154 | t.encode(d, c.responseKeyPair), |
| 2155 | o.encode(d, c.initiator), | |
| 2156 | o.encode(d, c.inviter), | |
| 2155 | n.encode(d, c.initiator), | |
| 2156 | n.encode(d, c.inviter), | |
| 2157 | 2157 | e.uint.encode(d, r), |
| 2158 | c.identity && go.encode(d, c.identity), | |
| 2159 | n >= 20 && c.buildType && Or.encode(d, c.buildType)) | |
| 2158 | c.identity && gn.encode(d, c.identity), | |
| 2159 | o >= 20 && c.buildType && Ur.encode(d, c.buildType)) | |
| 2160 | 2160 | }, |
| 2161 | 2161 | decode(d) { |
| 2162 | 2162 | const c = e.fixed32.decode(d), |
| 2163 | 2163 | r = e.fixed32.decode(d), |
| 2164 | 2164 | i = e.fixed32.decode(d), |
| 2165 | 2165 | a = t.decode(d), |
| 2166 | s = o.decode(d), | |
| 2167 | p = o.decode(d), | |
| 2166 | s = n.decode(d), | |
| 2167 | p = n.decode(d), | |
| 2168 | 2168 | u = e.uint.decode(d) |
| 2169 | 2169 | return { |
| 2170 | 2170 | id: c, |
| … | … | @@ -2173,138 +2173,140 @@ const o = { |
| 2173 | 2173 | responseKeyPair: a, |
| 2174 | 2174 | initiator: s, |
| 2175 | 2175 | inviter: p, |
| 2176 | identity: 1 & u ? go.decode(d) : null, | |
| 2177 | buildType: n >= 20 && 2 & u ? Or.decode(d) : null, | |
| 2176 | identity: 1 & u ? gn.decode(d) : null, | |
| 2177 | buildType: o >= 20 && 2 & u ? Ur.decode(d) : null, | |
| 2178 | 2178 | } |
| 2179 | 2179 | }, |
| 2180 | 2180 | }, |
| 2181 | Ko = _, | |
| 2182 | wo = { | |
| 2183 | preencode(d, n) { | |
| 2184 | ;(Ko.preencode(d, n.header), e.buffer.preencode(d, n.blindResponse)) | |
| 2181 | Kn = _, | |
| 2182 | wn = { | |
| 2183 | preencode(d, o) { | |
| 2184 | ;(Kn.preencode(d, o.header), e.buffer.preencode(d, o.blindResponse)) | |
| 2185 | 2185 | }, |
| 2186 | encode(d, n) { | |
| 2187 | ;(Ko.encode(d, n.header), e.buffer.encode(d, n.blindResponse)) | |
| 2186 | encode(d, o) { | |
| 2187 | ;(Kn.encode(d, o.header), e.buffer.encode(d, o.blindResponse)) | |
| 2188 | 2188 | }, |
| 2189 | decode: (d) => ({ header: Ko.decode(d), blindResponse: e.buffer.decode(d) }), | |
| 2189 | decode: (d) => ({ header: Kn.decode(d), blindResponse: e.buffer.decode(d) }), | |
| 2190 | 2190 | }, |
| 2191 | To = _, | |
| 2192 | Po = e.frame(ho), | |
| 2193 | Ao = { | |
| 2191 | Tn = _, | |
| 2192 | Pn = e.frame(hn), | |
| 2193 | An = { | |
| 2194 | 2194 | preencode(e, d) { |
| 2195 | ;(To.preencode(e, d.header), Po.preencode(e, d.invitation)) | |
| 2195 | ;(Tn.preencode(e, d.header), Pn.preencode(e, d.invitation)) | |
| 2196 | 2196 | }, |
| 2197 | 2197 | encode(e, d) { |
| 2198 | ;(To.encode(e, d.header), Po.encode(e, d.invitation)) | |
| 2198 | ;(Tn.encode(e, d.header), Pn.encode(e, d.invitation)) | |
| 2199 | 2199 | }, |
| 2200 | decode: (e) => ({ header: To.decode(e), invitation: Po.decode(e) }), | |
| 2200 | decode: (e) => ({ header: Tn.decode(e), invitation: Pn.decode(e) }), | |
| 2201 | 2201 | }, |
| 2202 | Ro = _, | |
| 2203 | Do = { | |
| 2204 | preencode(d, n) { | |
| 2205 | ;(Ro.preencode(d, n.header), e.fixed32.preencode(d, n.id)) | |
| 2202 | Rn = _, | |
| 2203 | Dn = { | |
| 2204 | preencode(d, o) { | |
| 2205 | ;(Rn.preencode(d, o.header), e.fixed32.preencode(d, o.id)) | |
| 2206 | 2206 | }, |
| 2207 | encode(d, n) { | |
| 2208 | ;(Ro.encode(d, n.header), e.fixed32.encode(d, n.id)) | |
| 2207 | encode(d, o) { | |
| 2208 | ;(Rn.encode(d, o.header), e.fixed32.encode(d, o.id)) | |
| 2209 | 2209 | }, |
| 2210 | decode: (d) => ({ header: Ro.decode(d), id: e.fixed32.decode(d) }), | |
| 2210 | decode: (d) => ({ header: Rn.decode(d), id: e.fixed32.decode(d) }), | |
| 2211 | 2211 | }, |
| 2212 | So = { | |
| 2213 | preencode(d, n) { | |
| 2214 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 2215 | e.fixed32.preencode(d, n.devicePublicKey), | |
| 2212 | Mn = { | |
| 2213 | preencode(d, o) { | |
| 2214 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 2215 | e.fixed32.preencode(d, o.devicePublicKey), | |
| 2216 | 2216 | d.end++, |
| 2217 | n.privateProfileKey && e.fixed32.preencode(d, n.privateProfileKey), | |
| 2218 | n.deviceKeyPair && t.preencode(d, n.deviceKeyPair), | |
| 2219 | e.buffer.preencode(d, n.deviceProof)) | |
| 2217 | o.privateProfileKey && e.fixed32.preencode(d, o.privateProfileKey), | |
| 2218 | o.deviceKeyPair && t.preencode(d, o.deviceKeyPair), | |
| 2219 | e.buffer.preencode(d, o.deviceProof)) | |
| 2220 | 2220 | }, |
| 2221 | encode(d, n) { | |
| 2222 | const o = (n.privateProfileKey ? 1 : 0) | (n.deviceKeyPair ? 2 : 0) | |
| 2223 | ;(e.fixed32.encode(d, n.publicKey), | |
| 2224 | e.fixed32.encode(d, n.devicePublicKey), | |
| 2225 | e.uint.encode(d, o), | |
| 2226 | n.privateProfileKey && e.fixed32.encode(d, n.privateProfileKey), | |
| 2227 | n.deviceKeyPair && t.encode(d, n.deviceKeyPair), | |
| 2228 | e.buffer.encode(d, n.deviceProof)) | |
| 2221 | encode(d, o) { | |
| 2222 | const n = (o.privateProfileKey ? 1 : 0) | (o.deviceKeyPair ? 2 : 0) | |
| 2223 | ;(e.fixed32.encode(d, o.publicKey), | |
| 2224 | e.fixed32.encode(d, o.devicePublicKey), | |
| 2225 | e.uint.encode(d, n), | |
| 2226 | o.privateProfileKey && e.fixed32.encode(d, o.privateProfileKey), | |
| 2227 | o.deviceKeyPair && t.encode(d, o.deviceKeyPair), | |
| 2228 | e.buffer.encode(d, o.deviceProof)) | |
| 2229 | 2229 | }, |
| 2230 | 2230 | decode(d) { |
| 2231 | const n = e.fixed32.decode(d), | |
| 2232 | o = e.fixed32.decode(d), | |
| 2231 | const o = e.fixed32.decode(d), | |
| 2232 | n = e.fixed32.decode(d), | |
| 2233 | 2233 | c = e.uint.decode(d) |
| 2234 | 2234 | return { |
| 2235 | publicKey: n, | |
| 2236 | devicePublicKey: o, | |
| 2235 | publicKey: o, | |
| 2236 | devicePublicKey: n, | |
| 2237 | 2237 | privateProfileKey: 1 & c ? e.fixed32.decode(d) : null, |
| 2238 | 2238 | deviceKeyPair: 2 & c ? t.decode(d) : null, |
| 2239 | 2239 | deviceProof: e.buffer.decode(d), |
| 2240 | 2240 | } |
| 2241 | 2241 | }, |
| 2242 | 2242 | }, |
| 2243 | Co = { | |
| 2243 | Sn = { | |
| 2244 | 2244 | preencode(e, d) { |
| 2245 | 2245 | e.end++ |
| 2246 | 2246 | }, |
| 2247 | encode(d, o) { | |
| 2247 | encode(d, n) { | |
| 2248 | 2248 | const c = |
| 2249 | (o.isActive ? 1 : 0) | | |
| 2250 | (o.isFullyMuted ? 2 : 0) | | |
| 2251 | (o.isMentionsOnlyMuted ? 4 : 0) | | |
| 2252 | (n >= 9 && o.isReadOnly ? 8 : 0) | | |
| 2253 | (n >= 18 && o.isFavorite ? 16 : 0) | |
| 2249 | (n.isActive ? 1 : 0) | | |
| 2250 | (n.isFullyMuted ? 2 : 0) | | |
| 2251 | (n.isMentionsOnlyMuted ? 4 : 0) | | |
| 2252 | (o >= 9 && n.isReadOnly ? 8 : 0) | | |
| 2253 | (o >= 18 && n.isFavorite ? 16 : 0) | | |
| 2254 | (o >= 21 && n.isUnread ? 32 : 0) | |
| 2254 | 2255 | e.uint.encode(d, c) |
| 2255 | 2256 | }, |
| 2256 | 2257 | decode(d) { |
| 2257 | const o = e.uint.decode(d) | |
| 2258 | const n = e.uint.decode(d) | |
| 2258 | 2259 | return { |
| 2259 | isActive: !!(1 & o), | |
| 2260 | isFullyMuted: !!(2 & o), | |
| 2261 | isMentionsOnlyMuted: !!(4 & o), | |
| 2262 | isReadOnly: n >= 9 && !!(8 & o), | |
| 2263 | isFavorite: n >= 18 && !!(16 & o), | |
| 2260 | isActive: !!(1 & n), | |
| 2261 | isFullyMuted: !!(2 & n), | |
| 2262 | isMentionsOnlyMuted: !!(4 & n), | |
| 2263 | isReadOnly: o >= 9 && !!(8 & n), | |
| 2264 | isFavorite: o >= 18 && !!(16 & n), | |
| 2265 | isUnread: o >= 21 && !!(32 & n), | |
| 2264 | 2266 | } |
| 2265 | 2267 | }, |
| 2266 | 2268 | }, |
| 2267 | Mo = e.frame(Co), | |
| 2268 | Lo = e.frame(So), | |
| 2269 | qo = go, | |
| 2270 | Fo = { | |
| 2269 | Cn = e.frame(Sn), | |
| 2270 | Ln = e.frame(Mn), | |
| 2271 | qn = gn, | |
| 2272 | Fn = { | |
| 2271 | 2273 | preencode(d, c) { |
| 2272 | 2274 | ;(e.fixed32.preencode(d, c.roomKey), |
| 2273 | 2275 | e.buffer.preencode(d, c.encryptionKey), |
| 2274 | 2276 | e.fixed32.preencode(d, c.mailbox), |
| 2275 | Mo.preencode(d, c.status), | |
| 2277 | Cn.preencode(d, c.status), | |
| 2276 | 2278 | e.uint.preencode(d, c.clock), |
| 2277 | 2279 | d.end++, |
| 2278 | c.initiator && o.preencode(d, c.initiator), | |
| 2280 | c.initiator && n.preencode(d, c.initiator), | |
| 2279 | 2281 | c.fastForwardTo && e.fixed32.preencode(d, c.fastForwardTo), |
| 2280 | c.identitySwap && Lo.preencode(d, c.identitySwap), | |
| 2281 | n >= 6 && c.identitySwapV2 && qo.preencode(d, c.identitySwapV2), | |
| 2282 | n >= 10 && c.contact && e.fixed32.preencode(d, c.contact)) | |
| 2282 | c.identitySwap && Ln.preencode(d, c.identitySwap), | |
| 2283 | o >= 6 && c.identitySwapV2 && qn.preencode(d, c.identitySwapV2), | |
| 2284 | o >= 10 && c.contact && e.fixed32.preencode(d, c.contact)) | |
| 2283 | 2285 | }, |
| 2284 | 2286 | encode(d, c) { |
| 2285 | 2287 | const r = |
| 2286 | 2288 | (c.initiator ? 1 : 0) | |
| 2287 | 2289 | (c.fastForwardTo ? 2 : 0) | |
| 2288 | 2290 | (c.identitySwap ? 4 : 0) | |
| 2289 | (n >= 6 && c.identitySwapV2 ? 8 : 0) | | |
| 2290 | (n >= 10 && c.contact ? 16 : 0) | |
| 2291 | (o >= 6 && c.identitySwapV2 ? 8 : 0) | | |
| 2292 | (o >= 10 && c.contact ? 16 : 0) | |
| 2291 | 2293 | ;(e.fixed32.encode(d, c.roomKey), |
| 2292 | 2294 | e.buffer.encode(d, c.encryptionKey), |
| 2293 | 2295 | e.fixed32.encode(d, c.mailbox), |
| 2294 | Mo.encode(d, c.status), | |
| 2296 | Cn.encode(d, c.status), | |
| 2295 | 2297 | e.uint.encode(d, c.clock), |
| 2296 | 2298 | e.uint.encode(d, r), |
| 2297 | c.initiator && o.encode(d, c.initiator), | |
| 2299 | c.initiator && n.encode(d, c.initiator), | |
| 2298 | 2300 | c.fastForwardTo && e.fixed32.encode(d, c.fastForwardTo), |
| 2299 | c.identitySwap && Lo.encode(d, c.identitySwap), | |
| 2300 | n >= 6 && c.identitySwapV2 && qo.encode(d, c.identitySwapV2), | |
| 2301 | n >= 10 && c.contact && e.fixed32.encode(d, c.contact)) | |
| 2301 | c.identitySwap && Ln.encode(d, c.identitySwap), | |
| 2302 | o >= 6 && c.identitySwapV2 && qn.encode(d, c.identitySwapV2), | |
| 2303 | o >= 10 && c.contact && e.fixed32.encode(d, c.contact)) | |
| 2302 | 2304 | }, |
| 2303 | 2305 | decode(d) { |
| 2304 | 2306 | const c = e.fixed32.decode(d), |
| 2305 | 2307 | r = e.buffer.decode(d), |
| 2306 | 2308 | t = e.fixed32.decode(d), |
| 2307 | i = Mo.decode(d), | |
| 2309 | i = Cn.decode(d), | |
| 2308 | 2310 | a = e.uint.decode(d), |
| 2309 | 2311 | s = e.uint.decode(d) |
| 2310 | 2312 | return { |
| … | … | @@ -2313,43 +2315,43 @@ const o = { |
| 2313 | 2315 | mailbox: t, |
| 2314 | 2316 | status: i, |
| 2315 | 2317 | clock: a, |
| 2316 | initiator: 1 & s ? o.decode(d) : null, | |
| 2318 | initiator: 1 & s ? n.decode(d) : null, | |
| 2317 | 2319 | fastForwardTo: 2 & s ? e.fixed32.decode(d) : null, |
| 2318 | identitySwap: 4 & s ? Lo.decode(d) : null, | |
| 2319 | identitySwapV2: n >= 6 && 8 & s ? qo.decode(d) : null, | |
| 2320 | contact: n >= 10 && 16 & s ? e.fixed32.decode(d) : null, | |
| 2320 | identitySwap: 4 & s ? Ln.decode(d) : null, | |
| 2321 | identitySwapV2: o >= 6 && 8 & s ? qn.decode(d) : null, | |
| 2322 | contact: o >= 10 && 16 & s ? e.fixed32.decode(d) : null, | |
| 2321 | 2323 | } |
| 2322 | }, | |
| 2323 | }, | |
| 2324 | Eo = _, | |
| 2325 | Bo = { | |
| 2326 | preencode(d, n) { | |
| 2327 | ;(Eo.preencode(d, n.header), | |
| 2328 | e.fixed32.preencode(d, n.roomKey), | |
| 2329 | e.buffer.preencode(d, n.encryptionKey), | |
| 2330 | e.fixed32.preencode(d, n.mailbox), | |
| 2324 | }, | |
| 2325 | }, | |
| 2326 | En = _, | |
| 2327 | Bn = { | |
| 2328 | preencode(d, o) { | |
| 2329 | ;(En.preencode(d, o.header), | |
| 2330 | e.fixed32.preencode(d, o.roomKey), | |
| 2331 | e.buffer.preencode(d, o.encryptionKey), | |
| 2332 | e.fixed32.preencode(d, o.mailbox), | |
| 2331 | 2333 | d.end++, |
| 2332 | n.fastForwardTo && e.fixed32.preencode(d, n.fastForwardTo), | |
| 2333 | n.initiator && o.preencode(d, n.initiator), | |
| 2334 | n.dm && e.fixed32.preencode(d, n.dm)) | |
| 2334 | o.fastForwardTo && e.fixed32.preencode(d, o.fastForwardTo), | |
| 2335 | o.initiator && n.preencode(d, o.initiator), | |
| 2336 | o.dm && e.fixed32.preencode(d, o.dm)) | |
| 2335 | 2337 | }, |
| 2336 | 2338 | encode(d, c) { |
| 2337 | 2339 | const r = |
| 2338 | 2340 | (c.fastForwardTo ? 1 : 0) | |
| 2339 | 2341 | (c.initiator ? 2 : 0) | |
| 2340 | 2342 | (c.dm ? 4 : 0) | |
| 2341 | (n >= 9 && c.isReadOnly ? 8 : 0) | |
| 2342 | ;(Eo.encode(d, c.header), | |
| 2343 | (o >= 9 && c.isReadOnly ? 8 : 0) | |
| 2344 | ;(En.encode(d, c.header), | |
| 2343 | 2345 | e.fixed32.encode(d, c.roomKey), |
| 2344 | 2346 | e.buffer.encode(d, c.encryptionKey), |
| 2345 | 2347 | e.fixed32.encode(d, c.mailbox), |
| 2346 | 2348 | e.uint.encode(d, r), |
| 2347 | 2349 | c.fastForwardTo && e.fixed32.encode(d, c.fastForwardTo), |
| 2348 | c.initiator && o.encode(d, c.initiator), | |
| 2350 | c.initiator && n.encode(d, c.initiator), | |
| 2349 | 2351 | c.dm && e.fixed32.encode(d, c.dm)) |
| 2350 | 2352 | }, |
| 2351 | 2353 | decode(d) { |
| 2352 | const c = Eo.decode(d), | |
| 2354 | const c = En.decode(d), | |
| 2353 | 2355 | r = e.fixed32.decode(d), |
| 2354 | 2356 | t = e.buffer.decode(d), |
| 2355 | 2357 | i = e.fixed32.decode(d), |
| … | … | @@ -2360,179 +2362,179 @@ const o = { |
| 2360 | 2362 | encryptionKey: t, |
| 2361 | 2363 | mailbox: i, |
| 2362 | 2364 | fastForwardTo: 1 & a ? e.fixed32.decode(d) : null, |
| 2363 | initiator: 2 & a ? o.decode(d) : null, | |
| 2365 | initiator: 2 & a ? n.decode(d) : null, | |
| 2364 | 2366 | dm: 4 & a ? e.fixed32.decode(d) : null, |
| 2365 | isReadOnly: n >= 9 && !!(8 & a), | |
| 2367 | isReadOnly: o >= 9 && !!(8 & a), | |
| 2366 | 2368 | } |
| 2367 | 2369 | }, |
| 2368 | 2370 | }, |
| 2369 | Io = _, | |
| 2370 | No = { | |
| 2371 | preencode(d, n) { | |
| 2372 | ;(Io.preencode(d, n.header), e.fixed32.preencode(d, n.discoveryKey)) | |
| 2371 | In = _, | |
| 2372 | Nn = { | |
| 2373 | preencode(d, o) { | |
| 2374 | ;(In.preencode(d, o.header), e.fixed32.preencode(d, o.discoveryKey)) | |
| 2373 | 2375 | }, |
| 2374 | encode(d, n) { | |
| 2375 | ;(Io.encode(d, n.header), e.fixed32.encode(d, n.discoveryKey)) | |
| 2376 | encode(d, o) { | |
| 2377 | ;(In.encode(d, o.header), e.fixed32.encode(d, o.discoveryKey)) | |
| 2376 | 2378 | }, |
| 2377 | decode: (d) => ({ header: Io.decode(d), discoveryKey: e.fixed32.decode(d) }), | |
| 2379 | decode: (d) => ({ header: In.decode(d), discoveryKey: e.fixed32.decode(d) }), | |
| 2378 | 2380 | }, |
| 2379 | jo = _, | |
| 2380 | Oo = Mo, | |
| 2381 | Jo = { | |
| 2382 | preencode(d, n) { | |
| 2383 | ;(jo.preencode(d, n.header), | |
| 2384 | e.fixed32.preencode(d, n.roomKey), | |
| 2385 | e.uint.preencode(d, n.key), | |
| 2386 | Oo.preencode(d, n.status)) | |
| 2381 | jn = _, | |
| 2382 | Un = Cn, | |
| 2383 | On = { | |
| 2384 | preencode(d, o) { | |
| 2385 | ;(jn.preencode(d, o.header), | |
| 2386 | e.fixed32.preencode(d, o.roomKey), | |
| 2387 | e.uint.preencode(d, o.key), | |
| 2388 | Un.preencode(d, o.status)) | |
| 2387 | 2389 | }, |
| 2388 | encode(d, n) { | |
| 2389 | ;(jo.encode(d, n.header), | |
| 2390 | e.fixed32.encode(d, n.roomKey), | |
| 2391 | e.uint.encode(d, n.key), | |
| 2392 | Oo.encode(d, n.status)) | |
| 2390 | encode(d, o) { | |
| 2391 | ;(jn.encode(d, o.header), | |
| 2392 | e.fixed32.encode(d, o.roomKey), | |
| 2393 | e.uint.encode(d, o.key), | |
| 2394 | Un.encode(d, o.status)) | |
| 2393 | 2395 | }, |
| 2394 | 2396 | decode: (d) => ({ |
| 2395 | header: jo.decode(d), | |
| 2397 | header: jn.decode(d), | |
| 2396 | 2398 | roomKey: e.fixed32.decode(d), |
| 2397 | 2399 | key: e.uint.decode(d), |
| 2398 | status: Oo.decode(d), | |
| 2400 | status: Un.decode(d), | |
| 2399 | 2401 | }), |
| 2400 | 2402 | }, |
| 2401 | Uo = { | |
| 2403 | Jn = { | |
| 2402 | 2404 | preencode(e, d) { |
| 2403 | 2405 | e.end++ |
| 2404 | 2406 | }, |
| 2405 | encode(d, n) { | |
| 2406 | const o = n.isBlocked ? 1 : 0 | |
| 2407 | e.uint.encode(d, o) | |
| 2407 | encode(d, o) { | |
| 2408 | const n = o.isBlocked ? 1 : 0 | |
| 2409 | e.uint.encode(d, n) | |
| 2408 | 2410 | }, |
| 2409 | 2411 | decode: (d) => ({ isBlocked: !!(1 & e.uint.decode(d)) }), |
| 2410 | 2412 | }, |
| 2411 | Vo = { | |
| 2412 | preencode(d, n) { | |
| 2413 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 2414 | e.uint.preencode(d, n.clock), | |
| 2415 | tt.preencode(d, n.status), | |
| 2413 | Vn = { | |
| 2414 | preencode(d, o) { | |
| 2415 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 2416 | e.uint.preencode(d, o.clock), | |
| 2417 | at.preencode(d, o.status), | |
| 2416 | 2418 | d.end++, |
| 2417 | n.mailbox && e.fixed32.preencode(d, n.mailbox), | |
| 2418 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) | |
| 2419 | o.mailbox && e.fixed32.preencode(d, o.mailbox), | |
| 2420 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) | |
| 2419 | 2421 | }, |
| 2420 | encode(d, n) { | |
| 2421 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) | |
| 2422 | ;(e.fixed32.encode(d, n.memberKey), | |
| 2423 | e.uint.encode(d, n.clock), | |
| 2424 | tt.encode(d, n.status), | |
| 2425 | e.uint.encode(d, o), | |
| 2426 | n.mailbox && e.fixed32.encode(d, n.mailbox), | |
| 2427 | n.roomKey && e.fixed32.encode(d, n.roomKey)) | |
| 2422 | encode(d, o) { | |
| 2423 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) | |
| 2424 | ;(e.fixed32.encode(d, o.memberKey), | |
| 2425 | e.uint.encode(d, o.clock), | |
| 2426 | at.encode(d, o.status), | |
| 2427 | e.uint.encode(d, n), | |
| 2428 | o.mailbox && e.fixed32.encode(d, o.mailbox), | |
| 2429 | o.roomKey && e.fixed32.encode(d, o.roomKey)) | |
| 2428 | 2430 | }, |
| 2429 | 2431 | decode(d) { |
| 2430 | const n = e.fixed32.decode(d), | |
| 2431 | o = e.uint.decode(d), | |
| 2432 | c = tt.decode(d), | |
| 2432 | const o = e.fixed32.decode(d), | |
| 2433 | n = e.uint.decode(d), | |
| 2434 | c = at.decode(d), | |
| 2433 | 2435 | r = e.uint.decode(d) |
| 2434 | 2436 | return { |
| 2435 | memberKey: n, | |
| 2436 | clock: o, | |
| 2437 | memberKey: o, | |
| 2438 | clock: n, | |
| 2437 | 2439 | status: c, |
| 2438 | 2440 | mailbox: 1 & r ? e.fixed32.decode(d) : null, |
| 2439 | 2441 | roomKey: 2 & r ? e.fixed32.decode(d) : null, |
| 2440 | 2442 | } |
| 2441 | 2443 | }, |
| 2442 | 2444 | }, |
| 2443 | Ho = _, | |
| 2444 | zo = e.frame(so), | |
| 2445 | Go = { | |
| 2445 | Hn = _, | |
| 2446 | zn = e.frame(sn), | |
| 2447 | Gn = { | |
| 2446 | 2448 | preencode(e, d) { |
| 2447 | ;(Ho.preencode(e, d.header), zo.preencode(e, d.contact)) | |
| 2449 | ;(Hn.preencode(e, d.header), zn.preencode(e, d.contact)) | |
| 2448 | 2450 | }, |
| 2449 | 2451 | encode(e, d) { |
| 2450 | ;(Ho.encode(e, d.header), zo.encode(e, d.contact)) | |
| 2452 | ;(Hn.encode(e, d.header), zn.encode(e, d.contact)) | |
| 2451 | 2453 | }, |
| 2452 | decode: (e) => ({ header: Ho.decode(e), contact: zo.decode(e) }), | |
| 2454 | decode: (e) => ({ header: Hn.decode(e), contact: zn.decode(e) }), | |
| 2453 | 2455 | }, |
| 2454 | Qo = _, | |
| 2455 | Wo = { | |
| 2456 | preencode(d, n) { | |
| 2457 | ;(Qo.preencode(d, n.header), | |
| 2458 | e.fixed32.preencode(d, n.memberKey), | |
| 2459 | e.uint.preencode(d, n.key), | |
| 2460 | it.preencode(d, n.status)) | |
| 2456 | Qn = _, | |
| 2457 | Wn = { | |
| 2458 | preencode(d, o) { | |
| 2459 | ;(Qn.preencode(d, o.header), | |
| 2460 | e.fixed32.preencode(d, o.memberKey), | |
| 2461 | e.uint.preencode(d, o.key), | |
| 2462 | st.preencode(d, o.status)) | |
| 2461 | 2463 | }, |
| 2462 | encode(d, n) { | |
| 2463 | ;(Qo.encode(d, n.header), | |
| 2464 | e.fixed32.encode(d, n.memberKey), | |
| 2465 | e.uint.encode(d, n.key), | |
| 2466 | it.encode(d, n.status)) | |
| 2464 | encode(d, o) { | |
| 2465 | ;(Qn.encode(d, o.header), | |
| 2466 | e.fixed32.encode(d, o.memberKey), | |
| 2467 | e.uint.encode(d, o.key), | |
| 2468 | st.encode(d, o.status)) | |
| 2467 | 2469 | }, |
| 2468 | 2470 | decode: (d) => ({ |
| 2469 | header: Qo.decode(d), | |
| 2471 | header: Qn.decode(d), | |
| 2470 | 2472 | memberKey: e.fixed32.decode(d), |
| 2471 | 2473 | key: e.uint.decode(d), |
| 2472 | status: it.decode(d), | |
| 2474 | status: st.decode(d), | |
| 2473 | 2475 | }), |
| 2474 | 2476 | }, |
| 2475 | Xo = _, | |
| 2476 | Yo = { | |
| 2477 | preencode(d, n) { | |
| 2478 | ;(Xo.preencode(d, n.header), e.fixed32.preencode(d, n.memberKey)) | |
| 2477 | Xn = _, | |
| 2478 | Yn = { | |
| 2479 | preencode(d, o) { | |
| 2480 | ;(Xn.preencode(d, o.header), e.fixed32.preencode(d, o.memberKey)) | |
| 2479 | 2481 | }, |
| 2480 | encode(d, n) { | |
| 2481 | ;(Xo.encode(d, n.header), e.fixed32.encode(d, n.memberKey)) | |
| 2482 | encode(d, o) { | |
| 2483 | ;(Xn.encode(d, o.header), e.fixed32.encode(d, o.memberKey)) | |
| 2482 | 2484 | }, |
| 2483 | decode: (d) => ({ header: Xo.decode(d), memberKey: e.fixed32.decode(d) }), | |
| 2485 | decode: (d) => ({ header: Xn.decode(d), memberKey: e.fixed32.decode(d) }), | |
| 2484 | 2486 | }, |
| 2485 | Zo = { | |
| 2487 | Zn = { | |
| 2486 | 2488 | preencode(e, d) { |
| 2487 | 2489 | e.end++ |
| 2488 | 2490 | }, |
| 2489 | encode(d, n) { | |
| 2490 | const o = | |
| 2491 | (n.isPending ? 1 : 0) | | |
| 2492 | (n.isAccepted ? 2 : 0) | | |
| 2493 | (n.isRejected ? 4 : 0) | | |
| 2494 | (n.isDiscarded ? 8 : 0) | | |
| 2495 | (n.isSeen ? 16 : 0) | |
| 2496 | e.uint.encode(d, o) | |
| 2491 | encode(d, o) { | |
| 2492 | const n = | |
| 2493 | (o.isPending ? 1 : 0) | | |
| 2494 | (o.isAccepted ? 2 : 0) | | |
| 2495 | (o.isRejected ? 4 : 0) | | |
| 2496 | (o.isDiscarded ? 8 : 0) | | |
| 2497 | (o.isSeen ? 16 : 0) | |
| 2498 | e.uint.encode(d, n) | |
| 2497 | 2499 | }, |
| 2498 | 2500 | decode(d) { |
| 2499 | const n = e.uint.decode(d) | |
| 2501 | const o = e.uint.decode(d) | |
| 2500 | 2502 | return { |
| 2501 | isPending: !!(1 & n), | |
| 2502 | isAccepted: !!(2 & n), | |
| 2503 | isRejected: !!(4 & n), | |
| 2504 | isDiscarded: !!(8 & n), | |
| 2505 | isSeen: !!(16 & n), | |
| 2503 | isPending: !!(1 & o), | |
| 2504 | isAccepted: !!(2 & o), | |
| 2505 | isRejected: !!(4 & o), | |
| 2506 | isDiscarded: !!(8 & o), | |
| 2507 | isSeen: !!(16 & o), | |
| 2506 | 2508 | } |
| 2507 | 2509 | }, |
| 2508 | 2510 | }, |
| 2509 | $o = ke, | |
| 2510 | _o = e.frame(i), | |
| 2511 | $n = ke, | |
| 2512 | _n = e.frame(i), | |
| 2511 | 2513 | ec = { |
| 2512 | preencode(d, n) { | |
| 2513 | ;($o.preencode(d, n.sender), | |
| 2514 | _o.preencode(d, n.keys), | |
| 2515 | e.fixed32.preencode(d, n.mailbox), | |
| 2514 | preencode(d, o) { | |
| 2515 | ;($n.preencode(d, o.sender), | |
| 2516 | _n.preencode(d, o.keys), | |
| 2517 | e.fixed32.preencode(d, o.mailbox), | |
| 2516 | 2518 | d.end++, |
| 2517 | n.message && e.string.preencode(d, n.message)) | |
| 2519 | o.message && e.string.preencode(d, o.message)) | |
| 2518 | 2520 | }, |
| 2519 | encode(d, n) { | |
| 2520 | const o = n.message ? 1 : 0 | |
| 2521 | ;($o.encode(d, n.sender), | |
| 2522 | _o.encode(d, n.keys), | |
| 2523 | e.fixed32.encode(d, n.mailbox), | |
| 2524 | e.uint.encode(d, o), | |
| 2525 | n.message && e.string.encode(d, n.message)) | |
| 2521 | encode(d, o) { | |
| 2522 | const n = o.message ? 1 : 0 | |
| 2523 | ;($n.encode(d, o.sender), | |
| 2524 | _n.encode(d, o.keys), | |
| 2525 | e.fixed32.encode(d, o.mailbox), | |
| 2526 | e.uint.encode(d, n), | |
| 2527 | o.message && e.string.encode(d, o.message)) | |
| 2526 | 2528 | }, |
| 2527 | 2529 | decode: (d) => ({ |
| 2528 | sender: $o.decode(d), | |
| 2529 | keys: _o.decode(d), | |
| 2530 | sender: $n.decode(d), | |
| 2531 | keys: _n.decode(d), | |
| 2530 | 2532 | mailbox: e.fixed32.decode(d), |
| 2531 | 2533 | message: 1 & e.uint.decode(d) ? e.string.decode(d) : null, |
| 2532 | 2534 | }), |
| 2533 | 2535 | }, |
| 2534 | 2536 | dc = e.frame(ec), |
| 2535 | nc = { | |
| 2537 | oc = { | |
| 2536 | 2538 | preencode(e, d) { |
| 2537 | 2539 | ;(dc.preencode(e, d.body), ce.preencode(e, d.attestation)) |
| 2538 | 2540 | }, |
| … | … | @@ -2541,106 +2543,106 @@ const o = { |
| 2541 | 2543 | }, |
| 2542 | 2544 | decode: (e) => ({ body: dc.decode(e), attestation: ce.decode(e) }), |
| 2543 | 2545 | }, |
| 2544 | oc = ue, | |
| 2545 | cc = e.frame(Zo), | |
| 2546 | rc = _o, | |
| 2546 | nc = ue, | |
| 2547 | cc = e.frame(Zn), | |
| 2548 | rc = _n, | |
| 2547 | 2549 | tc = { |
| 2548 | preencode(d, o) { | |
| 2549 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 2550 | e.uint.preencode(d, o.clock), | |
| 2551 | oc.preencode(d, o.sender), | |
| 2552 | cc.preencode(d, o.status), | |
| 2553 | rc.preencode(d, o.keys), | |
| 2554 | e.fixed32.preencode(d, o.mailbox), | |
| 2550 | preencode(d, n) { | |
| 2551 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 2552 | e.uint.preencode(d, n.clock), | |
| 2553 | nc.preencode(d, n.sender), | |
| 2554 | cc.preencode(d, n.status), | |
| 2555 | rc.preencode(d, n.keys), | |
| 2556 | e.fixed32.preencode(d, n.mailbox), | |
| 2555 | 2557 | d.end++, |
| 2556 | o.message && e.string.preencode(d, o.message), | |
| 2557 | n >= 11 && o.sentAt && e.uint.preencode(d, o.sentAt)) | |
| 2558 | n.message && e.string.preencode(d, n.message), | |
| 2559 | o >= 11 && n.sentAt && e.uint.preencode(d, n.sentAt)) | |
| 2558 | 2560 | }, |
| 2559 | encode(d, o) { | |
| 2560 | const c = (o.message ? 1 : 0) | (n >= 11 && o.sentAt ? 2 : 0) | |
| 2561 | ;(e.fixed32.encode(d, o.memberKey), | |
| 2562 | e.uint.encode(d, o.clock), | |
| 2563 | oc.encode(d, o.sender), | |
| 2564 | cc.encode(d, o.status), | |
| 2565 | rc.encode(d, o.keys), | |
| 2566 | e.fixed32.encode(d, o.mailbox), | |
| 2561 | encode(d, n) { | |
| 2562 | const c = (n.message ? 1 : 0) | (o >= 11 && n.sentAt ? 2 : 0) | |
| 2563 | ;(e.fixed32.encode(d, n.memberKey), | |
| 2564 | e.uint.encode(d, n.clock), | |
| 2565 | nc.encode(d, n.sender), | |
| 2566 | cc.encode(d, n.status), | |
| 2567 | rc.encode(d, n.keys), | |
| 2568 | e.fixed32.encode(d, n.mailbox), | |
| 2567 | 2569 | e.uint.encode(d, c), |
| 2568 | o.message && e.string.encode(d, o.message), | |
| 2569 | n >= 11 && o.sentAt && e.uint.encode(d, o.sentAt)) | |
| 2570 | n.message && e.string.encode(d, n.message), | |
| 2571 | o >= 11 && n.sentAt && e.uint.encode(d, n.sentAt)) | |
| 2570 | 2572 | }, |
| 2571 | 2573 | decode(d) { |
| 2572 | const o = e.fixed32.decode(d), | |
| 2574 | const n = e.fixed32.decode(d), | |
| 2573 | 2575 | c = e.uint.decode(d), |
| 2574 | r = oc.decode(d), | |
| 2576 | r = nc.decode(d), | |
| 2575 | 2577 | t = cc.decode(d), |
| 2576 | 2578 | i = rc.decode(d), |
| 2577 | 2579 | a = e.fixed32.decode(d), |
| 2578 | 2580 | s = e.uint.decode(d) |
| 2579 | 2581 | return { |
| 2580 | memberKey: o, | |
| 2582 | memberKey: n, | |
| 2581 | 2583 | clock: c, |
| 2582 | 2584 | sender: r, |
| 2583 | 2585 | status: t, |
| 2584 | 2586 | keys: i, |
| 2585 | 2587 | mailbox: a, |
| 2586 | 2588 | message: 1 & s ? e.string.decode(d) : null, |
| 2587 | sentAt: n >= 11 && 2 & s ? e.uint.decode(d) : 0, | |
| 2589 | sentAt: o >= 11 && 2 & s ? e.uint.decode(d) : 0, | |
| 2588 | 2590 | } |
| 2589 | 2591 | }, |
| 2590 | 2592 | }, |
| 2591 | 2593 | ic = _, |
| 2592 | 2594 | ac = { |
| 2593 | preencode(d, n) { | |
| 2594 | ;(ic.preencode(d, n.header), e.buffer.preencode(d, n.blindRequest)) | |
| 2595 | preencode(d, o) { | |
| 2596 | ;(ic.preencode(d, o.header), e.buffer.preencode(d, o.blindRequest)) | |
| 2595 | 2597 | }, |
| 2596 | encode(d, n) { | |
| 2597 | ;(ic.encode(d, n.header), e.buffer.encode(d, n.blindRequest)) | |
| 2598 | encode(d, o) { | |
| 2599 | ;(ic.encode(d, o.header), e.buffer.encode(d, o.blindRequest)) | |
| 2598 | 2600 | }, |
| 2599 | 2601 | decode: (d) => ({ header: ic.decode(d), blindRequest: e.buffer.decode(d) }), |
| 2600 | 2602 | }, |
| 2601 | 2603 | sc = _, |
| 2602 | 2604 | pc = cc, |
| 2603 | 2605 | uc = { |
| 2604 | preencode(d, o) { | |
| 2605 | ;(sc.preencode(d, o.header), | |
| 2606 | e.fixed32.preencode(d, o.memberKey), | |
| 2607 | e.uint.preencode(d, o.key), | |
| 2608 | pc.preencode(d, o.status), | |
| 2606 | preencode(d, n) { | |
| 2607 | ;(sc.preencode(d, n.header), | |
| 2608 | e.fixed32.preencode(d, n.memberKey), | |
| 2609 | e.uint.preencode(d, n.key), | |
| 2610 | pc.preencode(d, n.status), | |
| 2609 | 2611 | d.end++, |
| 2610 | n >= 10 && o.roomKey && e.fixed32.preencode(d, o.roomKey)) | |
| 2612 | o >= 10 && n.roomKey && e.fixed32.preencode(d, n.roomKey)) | |
| 2611 | 2613 | }, |
| 2612 | encode(d, o) { | |
| 2613 | const c = n >= 10 && o.roomKey ? 1 : 0 | |
| 2614 | ;(sc.encode(d, o.header), | |
| 2615 | e.fixed32.encode(d, o.memberKey), | |
| 2616 | e.uint.encode(d, o.key), | |
| 2617 | pc.encode(d, o.status), | |
| 2614 | encode(d, n) { | |
| 2615 | const c = o >= 10 && n.roomKey ? 1 : 0 | |
| 2616 | ;(sc.encode(d, n.header), | |
| 2617 | e.fixed32.encode(d, n.memberKey), | |
| 2618 | e.uint.encode(d, n.key), | |
| 2619 | pc.encode(d, n.status), | |
| 2618 | 2620 | e.uint.encode(d, c), |
| 2619 | n >= 10 && o.roomKey && e.fixed32.encode(d, o.roomKey)) | |
| 2621 | o >= 10 && n.roomKey && e.fixed32.encode(d, n.roomKey)) | |
| 2620 | 2622 | }, |
| 2621 | 2623 | decode(d) { |
| 2622 | const o = sc.decode(d), | |
| 2624 | const n = sc.decode(d), | |
| 2623 | 2625 | c = e.fixed32.decode(d), |
| 2624 | 2626 | r = e.uint.decode(d), |
| 2625 | 2627 | t = pc.decode(d), |
| 2626 | 2628 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 2627 | 2629 | return { |
| 2628 | header: o, | |
| 2630 | header: n, | |
| 2629 | 2631 | memberKey: c, |
| 2630 | 2632 | key: r, |
| 2631 | 2633 | status: t, |
| 2632 | roomKey: n >= 10 && 1 & i ? e.fixed32.decode(d) : null, | |
| 2634 | roomKey: o >= 10 && 1 & i ? e.fixed32.decode(d) : null, | |
| 2633 | 2635 | } |
| 2634 | 2636 | }, |
| 2635 | 2637 | }, |
| 2636 | 2638 | lc = { |
| 2637 | preencode(d, n) { | |
| 2638 | ;(e.uint.preencode(d, n.timestamp), | |
| 2639 | e.fixed32.preencode(d, n.key), | |
| 2640 | e.fixed32.preencode(d, n.mailbox)) | |
| 2639 | preencode(d, o) { | |
| 2640 | ;(e.uint.preencode(d, o.timestamp), | |
| 2641 | e.fixed32.preencode(d, o.key), | |
| 2642 | e.fixed32.preencode(d, o.mailbox)) | |
| 2641 | 2643 | }, |
| 2642 | encode(d, n) { | |
| 2643 | ;(e.uint.encode(d, n.timestamp), e.fixed32.encode(d, n.key), e.fixed32.encode(d, n.mailbox)) | |
| 2644 | encode(d, o) { | |
| 2645 | ;(e.uint.encode(d, o.timestamp), e.fixed32.encode(d, o.key), e.fixed32.encode(d, o.mailbox)) | |
| 2644 | 2646 | }, |
| 2645 | 2647 | decode: (d) => ({ |
| 2646 | 2648 | version: e.uint.decode(d), |
| … | … | @@ -2650,30 +2652,30 @@ const o = { |
| 2650 | 2652 | }), |
| 2651 | 2653 | }, |
| 2652 | 2654 | fc = { |
| 2653 | preencode(d, n) { | |
| 2654 | switch ((e.uint.preencode(d, n.version), n.version)) { | |
| 2655 | preencode(d, o) { | |
| 2656 | switch ((e.uint.preencode(d, o.version), o.version)) { | |
| 2655 | 2657 | case 0: |
| 2656 | 2658 | case 1: |
| 2657 | lc.preencode(d, n) | |
| 2659 | lc.preencode(d, o) | |
| 2658 | 2660 | break |
| 2659 | 2661 | default: |
| 2660 | 2662 | throw new Error("Unsupported version") |
| 2661 | 2663 | } |
| 2662 | 2664 | }, |
| 2663 | encode(d, n) { | |
| 2664 | switch ((e.uint.encode(d, n.version), n.version)) { | |
| 2665 | encode(d, o) { | |
| 2666 | switch ((e.uint.encode(d, o.version), o.version)) { | |
| 2665 | 2667 | case 0: |
| 2666 | 2668 | case 1: |
| 2667 | lc.encode(d, n) | |
| 2669 | lc.encode(d, o) | |
| 2668 | 2670 | break |
| 2669 | 2671 | default: |
| 2670 | 2672 | throw new Error("Unsupported version") |
| 2671 | 2673 | } |
| 2672 | 2674 | }, |
| 2673 | 2675 | decode(d) { |
| 2674 | const n = d.start, | |
| 2675 | o = e.uint.decode(d) | |
| 2676 | switch (((d.start = n), o)) { | |
| 2676 | const o = d.start, | |
| 2677 | n = e.uint.decode(d) | |
| 2678 | switch (((d.start = o), n)) { | |
| 2677 | 2679 | case 0: |
| 2678 | 2680 | case 1: |
| 2679 | 2681 | return lc.decode(d) |
| … | … | @@ -2684,49 +2686,49 @@ const o = { |
| 2684 | 2686 | }, |
| 2685 | 2687 | mc = _, |
| 2686 | 2688 | yc = { |
| 2687 | preencode(d, o) { | |
| 2688 | ;(mc.preencode(d, o.header), | |
| 2689 | c.preencode(d, o.oplog), | |
| 2690 | e.uint.preencode(d, o.index), | |
| 2691 | at.preencode(d, o.preview), | |
| 2689 | preencode(d, n) { | |
| 2690 | ;(mc.preencode(d, n.header), | |
| 2691 | c.preencode(d, n.oplog), | |
| 2692 | e.uint.preencode(d, n.index), | |
| 2693 | pt.preencode(d, n.preview), | |
| 2692 | 2694 | d.end++, |
| 2693 | n >= 7 && o.displayType && Rc.preencode(d, o.displayType)) | |
| 2695 | o >= 7 && n.displayType && Rc.preencode(d, n.displayType)) | |
| 2694 | 2696 | }, |
| 2695 | encode(d, o) { | |
| 2696 | const r = n >= 7 && o.displayType ? 1 : 0 | |
| 2697 | ;(mc.encode(d, o.header), | |
| 2698 | c.encode(d, o.oplog), | |
| 2699 | e.uint.encode(d, o.index), | |
| 2700 | at.encode(d, o.preview), | |
| 2697 | encode(d, n) { | |
| 2698 | const r = o >= 7 && n.displayType ? 1 : 0 | |
| 2699 | ;(mc.encode(d, n.header), | |
| 2700 | c.encode(d, n.oplog), | |
| 2701 | e.uint.encode(d, n.index), | |
| 2702 | pt.encode(d, n.preview), | |
| 2701 | 2703 | e.uint.encode(d, r), |
| 2702 | n >= 7 && o.displayType && Rc.encode(d, o.displayType)) | |
| 2704 | o >= 7 && n.displayType && Rc.encode(d, n.displayType)) | |
| 2703 | 2705 | }, |
| 2704 | 2706 | decode(d) { |
| 2705 | const o = mc.decode(d), | |
| 2707 | const n = mc.decode(d), | |
| 2706 | 2708 | r = c.decode(d), |
| 2707 | 2709 | t = e.uint.decode(d), |
| 2708 | i = at.decode(d), | |
| 2710 | i = pt.decode(d), | |
| 2709 | 2711 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 2710 | 2712 | return { |
| 2711 | header: o, | |
| 2713 | header: n, | |
| 2712 | 2714 | oplog: r, |
| 2713 | 2715 | index: t, |
| 2714 | 2716 | preview: i, |
| 2715 | displayType: n >= 7 && 1 & a ? Rc.decode(d) : 0, | |
| 2717 | displayType: o >= 7 && 1 & a ? Rc.decode(d) : 0, | |
| 2716 | 2718 | } |
| 2717 | 2719 | }, |
| 2718 | 2720 | }, |
| 2719 | 2721 | xc = { |
| 2720 | preencode(d, o) { | |
| 2721 | ;(d.end++, n >= 3 && o.memberKey && e.fixed32.preencode(d, o.memberKey)) | |
| 2722 | preencode(d, n) { | |
| 2723 | ;(d.end++, o >= 3 && n.memberKey && e.fixed32.preencode(d, n.memberKey)) | |
| 2722 | 2724 | }, |
| 2723 | encode(d, o) { | |
| 2724 | const c = n >= 3 && o.memberKey ? 1 : 0 | |
| 2725 | ;(e.uint.encode(d, c), n >= 3 && o.memberKey && e.fixed32.encode(d, o.memberKey)) | |
| 2725 | encode(d, n) { | |
| 2726 | const c = o >= 3 && n.memberKey ? 1 : 0 | |
| 2727 | ;(e.uint.encode(d, c), o >= 3 && n.memberKey && e.fixed32.encode(d, n.memberKey)) | |
| 2726 | 2728 | }, |
| 2727 | 2729 | decode(d) { |
| 2728 | const o = e.uint.decode(d) | |
| 2729 | return { memberKey: n >= 3 && 1 & o ? e.fixed32.decode(d) : null } | |
| 2730 | const n = e.uint.decode(d) | |
| 2731 | return { memberKey: o >= 3 && 1 & n ? e.fixed32.decode(d) : null } | |
| 2730 | 2732 | }, |
| 2731 | 2733 | }, |
| 2732 | 2734 | bc = ue, |
| … | … | @@ -2741,24 +2743,24 @@ const o = { |
| 2741 | 2743 | }, |
| 2742 | 2744 | vc = _, |
| 2743 | 2745 | gc = { |
| 2744 | preencode(d, n) { | |
| 2745 | ;(vc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2746 | preencode(d, o) { | |
| 2747 | ;(vc.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 2746 | 2748 | }, |
| 2747 | encode(d, n) { | |
| 2748 | ;(vc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2749 | encode(d, o) { | |
| 2750 | ;(vc.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 2749 | 2751 | }, |
| 2750 | 2752 | decode: (d) => ({ header: vc.decode(d), key: e.fixed32.decode(d) }), |
| 2751 | 2753 | }, |
| 2752 | 2754 | hc = { |
| 2753 | preencode(d, n) { | |
| 2754 | ;(e.fixed32.preencode(d, n.deviceKey), | |
| 2755 | ce.preencode(d, n.privateProfileIdentity), | |
| 2756 | e.buffer.preencode(d, n.deviceProof)) | |
| 2755 | preencode(d, o) { | |
| 2756 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 2757 | ce.preencode(d, o.privateProfileIdentity), | |
| 2758 | e.buffer.preencode(d, o.deviceProof)) | |
| 2757 | 2759 | }, |
| 2758 | encode(d, n) { | |
| 2759 | ;(e.fixed32.encode(d, n.deviceKey), | |
| 2760 | ce.encode(d, n.privateProfileIdentity), | |
| 2761 | e.buffer.encode(d, n.deviceProof)) | |
| 2760 | encode(d, o) { | |
| 2761 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 2762 | ce.encode(d, o.privateProfileIdentity), | |
| 2763 | e.buffer.encode(d, o.deviceProof)) | |
| 2762 | 2764 | }, |
| 2763 | 2765 | decode: (d) => ({ |
| 2764 | 2766 | deviceKey: e.fixed32.decode(d), |
| … | … | @@ -2767,70 +2769,70 @@ const o = { |
| 2767 | 2769 | }), |
| 2768 | 2770 | }, |
| 2769 | 2771 | Kc = { |
| 2770 | preencode(d, o) { | |
| 2771 | ;(e.fixed32.preencode(d, o.roomKey), | |
| 2772 | e.fixed32.preencode(d, o.encryptionKey), | |
| 2773 | e.fixed32.preencode(d, o.seed), | |
| 2772 | preencode(d, n) { | |
| 2773 | ;(e.fixed32.preencode(d, n.roomKey), | |
| 2774 | e.fixed32.preencode(d, n.encryptionKey), | |
| 2775 | e.fixed32.preencode(d, n.seed), | |
| 2774 | 2776 | d.end++, |
| 2775 | n >= 6 && o.fastForwardTo && e.fixed32.preencode(d, o.fastForwardTo)) | |
| 2777 | o >= 6 && n.fastForwardTo && e.fixed32.preencode(d, n.fastForwardTo)) | |
| 2776 | 2778 | }, |
| 2777 | encode(d, o) { | |
| 2778 | const c = n >= 6 && o.fastForwardTo ? 1 : 0 | |
| 2779 | ;(e.fixed32.encode(d, o.roomKey), | |
| 2780 | e.fixed32.encode(d, o.encryptionKey), | |
| 2781 | e.fixed32.encode(d, o.seed), | |
| 2779 | encode(d, n) { | |
| 2780 | const c = o >= 6 && n.fastForwardTo ? 1 : 0 | |
| 2781 | ;(e.fixed32.encode(d, n.roomKey), | |
| 2782 | e.fixed32.encode(d, n.encryptionKey), | |
| 2783 | e.fixed32.encode(d, n.seed), | |
| 2782 | 2784 | e.uint.encode(d, c), |
| 2783 | n >= 6 && o.fastForwardTo && e.fixed32.encode(d, o.fastForwardTo)) | |
| 2785 | o >= 6 && n.fastForwardTo && e.fixed32.encode(d, n.fastForwardTo)) | |
| 2784 | 2786 | }, |
| 2785 | 2787 | decode(d) { |
| 2786 | const o = e.fixed32.decode(d), | |
| 2788 | const n = e.fixed32.decode(d), | |
| 2787 | 2789 | c = e.fixed32.decode(d), |
| 2788 | 2790 | r = e.fixed32.decode(d), |
| 2789 | 2791 | t = e.uint.decode(d) |
| 2790 | 2792 | return { |
| 2791 | roomKey: o, | |
| 2793 | roomKey: n, | |
| 2792 | 2794 | encryptionKey: c, |
| 2793 | 2795 | seed: r, |
| 2794 | fastForwardTo: n >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2796 | fastForwardTo: o >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2795 | 2797 | } |
| 2796 | 2798 | }, |
| 2797 | 2799 | }, |
| 2798 | 2800 | wc = { |
| 2799 | preencode(d, o) { | |
| 2800 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 2801 | e.fixed32.preencode(d, o.writerKey), | |
| 2802 | e.fixed32.preencode(d, o.devicePublicKey), | |
| 2801 | preencode(d, n) { | |
| 2802 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 2803 | e.fixed32.preencode(d, n.writerKey), | |
| 2804 | e.fixed32.preencode(d, n.devicePublicKey), | |
| 2803 | 2805 | d.end++, |
| 2804 | n >= 6 && o.privateProfileKey && e.fixed32.preencode(d, o.privateProfileKey)) | |
| 2806 | o >= 6 && n.privateProfileKey && e.fixed32.preencode(d, n.privateProfileKey)) | |
| 2805 | 2807 | }, |
| 2806 | encode(d, o) { | |
| 2807 | const c = n >= 6 && o.privateProfileKey ? 1 : 0 | |
| 2808 | ;(e.fixed32.encode(d, o.publicKey), | |
| 2809 | e.fixed32.encode(d, o.writerKey), | |
| 2810 | e.fixed32.encode(d, o.devicePublicKey), | |
| 2808 | encode(d, n) { | |
| 2809 | const c = o >= 6 && n.privateProfileKey ? 1 : 0 | |
| 2810 | ;(e.fixed32.encode(d, n.publicKey), | |
| 2811 | e.fixed32.encode(d, n.writerKey), | |
| 2812 | e.fixed32.encode(d, n.devicePublicKey), | |
| 2811 | 2813 | e.uint.encode(d, c), |
| 2812 | n >= 6 && o.privateProfileKey && e.fixed32.encode(d, o.privateProfileKey)) | |
| 2814 | o >= 6 && n.privateProfileKey && e.fixed32.encode(d, n.privateProfileKey)) | |
| 2813 | 2815 | }, |
| 2814 | 2816 | decode(d) { |
| 2815 | const o = e.fixed32.decode(d), | |
| 2817 | const n = e.fixed32.decode(d), | |
| 2816 | 2818 | c = e.fixed32.decode(d), |
| 2817 | 2819 | r = e.fixed32.decode(d), |
| 2818 | 2820 | t = e.uint.decode(d) |
| 2819 | 2821 | return { |
| 2820 | publicKey: o, | |
| 2822 | publicKey: n, | |
| 2821 | 2823 | writerKey: c, |
| 2822 | 2824 | devicePublicKey: r, |
| 2823 | privateProfileKey: n >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2825 | privateProfileKey: o >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2824 | 2826 | } |
| 2825 | 2827 | }, |
| 2826 | 2828 | }, |
| 2827 | 2829 | Tc = _, |
| 2828 | 2830 | Pc = { |
| 2829 | preencode(d, n) { | |
| 2830 | ;(Tc.preencode(d, n.header), e.fixed32.preencode(d, n.memberKey)) | |
| 2831 | preencode(d, o) { | |
| 2832 | ;(Tc.preencode(d, o.header), e.fixed32.preencode(d, o.memberKey)) | |
| 2831 | 2833 | }, |
| 2832 | encode(d, n) { | |
| 2833 | ;(Tc.encode(d, n.header), e.fixed32.encode(d, n.memberKey)) | |
| 2834 | encode(d, o) { | |
| 2835 | ;(Tc.encode(d, o.header), e.fixed32.encode(d, o.memberKey)) | |
| 2834 | 2836 | }, |
| 2835 | 2837 | decode: (d) => ({ header: Tc.decode(d), memberKey: e.fixed32.decode(d) }), |
| 2836 | 2838 | }, |
| … | … | @@ -2839,54 +2841,54 @@ const o = { |
| 2839 | 2841 | preencode(e, d) { |
| 2840 | 2842 | e.end++ |
| 2841 | 2843 | }, |
| 2842 | encode(d, n) { | |
| 2843 | if (n > 2) throw new Error("Unknown enum") | |
| 2844 | e.uint.encode(d, n) | |
| 2844 | encode(d, o) { | |
| 2845 | if (o > 2) throw new Error("Unknown enum") | |
| 2846 | e.uint.encode(d, o) | |
| 2845 | 2847 | }, |
| 2846 | 2848 | decode: (d) => e.uint.decode(d), |
| 2847 | 2849 | }, |
| 2848 | 2850 | Dc = _, |
| 2849 | Sc = { | |
| 2850 | preencode(d, n) { | |
| 2851 | ;(Dc.preencode(d, n.header), e.uint.preencode(d, n.value)) | |
| 2851 | Mc = { | |
| 2852 | preencode(d, o) { | |
| 2853 | ;(Dc.preencode(d, o.header), e.uint.preencode(d, o.value)) | |
| 2852 | 2854 | }, |
| 2853 | encode(d, n) { | |
| 2854 | ;(Dc.encode(d, n.header), e.uint.encode(d, n.value)) | |
| 2855 | encode(d, o) { | |
| 2856 | ;(Dc.encode(d, o.header), e.uint.encode(d, o.value)) | |
| 2855 | 2857 | }, |
| 2856 | 2858 | decode: (d) => ({ header: Dc.decode(d), value: e.uint.decode(d) }), |
| 2857 | 2859 | }, |
| 2858 | Cc = { | |
| 2859 | preencode(d, n) { | |
| 2860 | ;(e.uint.preencode(d, n.key), e.uint.preencode(d, n.value)) | |
| 2860 | Sc = { | |
| 2861 | preencode(d, o) { | |
| 2862 | ;(e.uint.preencode(d, o.key), e.uint.preencode(d, o.value)) | |
| 2861 | 2863 | }, |
| 2862 | encode(d, n) { | |
| 2863 | ;(e.uint.encode(d, n.key), e.uint.encode(d, n.value)) | |
| 2864 | encode(d, o) { | |
| 2865 | ;(e.uint.encode(d, o.key), e.uint.encode(d, o.value)) | |
| 2864 | 2866 | }, |
| 2865 | 2867 | decode: (d) => ({ key: e.uint.decode(d), value: e.uint.decode(d) }), |
| 2866 | 2868 | }, |
| 2867 | Mc = _, | |
| 2869 | Cc = _, | |
| 2868 | 2870 | Lc = { |
| 2869 | preencode(d, o) { | |
| 2870 | ;(Mc.preencode(d, o.header), | |
| 2871 | e.uint.preencode(d, o.from), | |
| 2872 | e.uint.preencode(d, o.to), | |
| 2871 | preencode(d, n) { | |
| 2872 | ;(Cc.preencode(d, n.header), | |
| 2873 | e.uint.preencode(d, n.from), | |
| 2874 | e.uint.preencode(d, n.to), | |
| 2873 | 2875 | d.end++, |
| 2874 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 2876 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 2875 | 2877 | }, |
| 2876 | encode(d, o) { | |
| 2877 | const c = n >= 20 && o.buildType ? 1 : 0 | |
| 2878 | ;(Mc.encode(d, o.header), | |
| 2879 | e.uint.encode(d, o.from), | |
| 2880 | e.uint.encode(d, o.to), | |
| 2878 | encode(d, n) { | |
| 2879 | const c = o >= 20 && n.buildType ? 1 : 0 | |
| 2880 | ;(Cc.encode(d, n.header), | |
| 2881 | e.uint.encode(d, n.from), | |
| 2882 | e.uint.encode(d, n.to), | |
| 2881 | 2883 | e.uint.encode(d, c), |
| 2882 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 2884 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 2883 | 2885 | }, |
| 2884 | 2886 | decode(d) { |
| 2885 | const o = Mc.decode(d), | |
| 2887 | const n = Cc.decode(d), | |
| 2886 | 2888 | c = e.uint.decode(d), |
| 2887 | 2889 | r = e.uint.decode(d), |
| 2888 | 2890 | t = d.start < d.end ? e.uint.decode(d) : 0 |
| 2889 | return { header: o, from: c, to: r, buildType: n >= 20 && 1 & t ? Or.decode(d) : null } | |
| 2891 | return { header: n, from: c, to: r, buildType: o >= 20 && 1 & t ? Ur.decode(d) : null } | |
| 2890 | 2892 | }, |
| 2891 | 2893 | }, |
| 2892 | 2894 | qc = { |
| … | … | @@ -2903,9 +2905,9 @@ const o = { |
| 2903 | 2905 | preencode(e, d) { |
| 2904 | 2906 | e.end++ |
| 2905 | 2907 | }, |
| 2906 | encode(d, n) { | |
| 2907 | if (n > 8) throw new Error("Unknown enum") | |
| 2908 | e.uint.encode(d, n) | |
| 2908 | encode(d, o) { | |
| 2909 | if (o > 8) throw new Error("Unknown enum") | |
| 2910 | e.uint.encode(d, o) | |
| 2909 | 2911 | }, |
| 2910 | 2912 | decode: (d) => e.uint.decode(d), |
| 2911 | 2913 | }, |
| … | … | @@ -2914,8 +2916,8 @@ const o = { |
| 2914 | 2916 | preencode(e, d) { |
| 2915 | 2917 | e.end++ |
| 2916 | 2918 | }, |
| 2917 | encode(d, n) { | |
| 2918 | switch (n) { | |
| 2919 | encode(d, o) { | |
| 2920 | switch (o) { | |
| 2919 | 2921 | case "en": |
| 2920 | 2922 | e.uint.encode(d, 1) |
| 2921 | 2923 | break |
| … | … | @@ -2954,69 +2956,69 @@ const o = { |
| 2954 | 2956 | }, |
| 2955 | 2957 | Ic = Ed, |
| 2956 | 2958 | Nc = { |
| 2957 | preencode(d, n) { | |
| 2958 | ;(Ic.preencode(d, n.range), Bc.preencode(d, n.language), e.string.preencode(d, n.text)) | |
| 2959 | preencode(d, o) { | |
| 2960 | ;(Ic.preencode(d, o.range), Bc.preencode(d, o.language), e.string.preencode(d, o.text)) | |
| 2959 | 2961 | }, |
| 2960 | encode(d, n) { | |
| 2961 | ;(Ic.encode(d, n.range), Bc.encode(d, n.language), e.string.encode(d, n.text)) | |
| 2962 | encode(d, o) { | |
| 2963 | ;(Ic.encode(d, o.range), Bc.encode(d, o.language), e.string.encode(d, o.text)) | |
| 2962 | 2964 | }, |
| 2963 | 2965 | decode: (d) => ({ range: Ic.decode(d), language: Bc.decode(d), text: e.string.decode(d) }), |
| 2964 | 2966 | }, |
| 2965 | 2967 | jc = { |
| 2966 | preencode(d, n) { | |
| 2967 | ;(e.fixed32.preencode(d, n.deviceKey), e.fixed32.preencode(d, n.key)) | |
| 2968 | preencode(d, o) { | |
| 2969 | ;(e.fixed32.preencode(d, o.deviceKey), e.fixed32.preencode(d, o.key)) | |
| 2968 | 2970 | }, |
| 2969 | encode(d, n) { | |
| 2970 | ;(e.fixed32.encode(d, n.deviceKey), e.fixed32.encode(d, n.key)) | |
| 2971 | encode(d, o) { | |
| 2972 | ;(e.fixed32.encode(d, o.deviceKey), e.fixed32.encode(d, o.key)) | |
| 2971 | 2973 | }, |
| 2972 | 2974 | decode: (d) => ({ deviceKey: e.fixed32.decode(d), key: e.fixed32.decode(d) }), |
| 2973 | 2975 | }, |
| 2974 | Oc = _, | |
| 2975 | Jc = { | |
| 2976 | preencode(d, n) { | |
| 2977 | ;(Oc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2976 | Uc = _, | |
| 2977 | Oc = { | |
| 2978 | preencode(d, o) { | |
| 2979 | ;(Uc.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 2978 | 2980 | }, |
| 2979 | encode(d, n) { | |
| 2980 | ;(Oc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2981 | encode(d, o) { | |
| 2982 | ;(Uc.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 2981 | 2983 | }, |
| 2982 | decode: (d) => ({ header: Oc.decode(d), key: e.fixed32.decode(d) }), | |
| 2984 | decode: (d) => ({ header: Uc.decode(d), key: e.fixed32.decode(d) }), | |
| 2983 | 2985 | }, |
| 2984 | Uc = _, | |
| 2986 | Jc = _, | |
| 2985 | 2987 | Vc = { |
| 2986 | preencode(d, n) { | |
| 2987 | ;(Uc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2988 | preencode(d, o) { | |
| 2989 | ;(Jc.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 2988 | 2990 | }, |
| 2989 | encode(d, n) { | |
| 2990 | ;(Uc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2991 | encode(d, o) { | |
| 2992 | ;(Jc.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 2991 | 2993 | }, |
| 2992 | decode: (d) => ({ header: Uc.decode(d), key: e.fixed32.decode(d) }), | |
| 2994 | decode: (d) => ({ header: Jc.decode(d), key: e.fixed32.decode(d) }), | |
| 2993 | 2995 | }, |
| 2994 | 2996 | Hc = { Flag: 1 }, |
| 2995 | 2997 | zc = { |
| 2996 | 2998 | preencode(e, d) { |
| 2997 | 2999 | e.end++ |
| 2998 | 3000 | }, |
| 2999 | encode(d, n) { | |
| 3000 | if (n > 1) throw new Error("Unknown enum") | |
| 3001 | e.uint.encode(d, n) | |
| 3001 | encode(d, o) { | |
| 3002 | if (o > 1) throw new Error("Unknown enum") | |
| 3003 | e.uint.encode(d, o) | |
| 3002 | 3004 | }, |
| 3003 | 3005 | decode: (d) => e.uint.decode(d), |
| 3004 | 3006 | }, |
| 3005 | 3007 | Gc = { |
| 3006 | preencode(d, n) { | |
| 3007 | ;(fn.preencode(d, n.id), | |
| 3008 | e.fixed32.preencode(d, n.sender), | |
| 3009 | e.uint.preencode(d, n.clock), | |
| 3010 | zc.preencode(d, n.label)) | |
| 3008 | preencode(d, o) { | |
| 3009 | ;(fo.preencode(d, o.id), | |
| 3010 | e.fixed32.preencode(d, o.sender), | |
| 3011 | e.uint.preencode(d, o.clock), | |
| 3012 | zc.preencode(d, o.label)) | |
| 3011 | 3013 | }, |
| 3012 | encode(d, n) { | |
| 3013 | ;(fn.encode(d, n.id), | |
| 3014 | e.fixed32.encode(d, n.sender), | |
| 3015 | e.uint.encode(d, n.clock), | |
| 3016 | zc.encode(d, n.label)) | |
| 3014 | encode(d, o) { | |
| 3015 | ;(fo.encode(d, o.id), | |
| 3016 | e.fixed32.encode(d, o.sender), | |
| 3017 | e.uint.encode(d, o.clock), | |
| 3018 | zc.encode(d, o.label)) | |
| 3017 | 3019 | }, |
| 3018 | 3020 | decode: (d) => ({ |
| 3019 | id: fn.decode(d), | |
| 3021 | id: fo.decode(d), | |
| 3020 | 3022 | sender: e.fixed32.decode(d), |
| 3021 | 3023 | clock: e.uint.decode(d), |
| 3022 | 3024 | label: zc.decode(d), |
| … | … | @@ -3043,98 +3045,122 @@ const o = { |
| 3043 | 3045 | decode: (e) => ({ header: Xc.decode(e), oplog: c.decode(e), label: zc.decode(e) }), |
| 3044 | 3046 | }, |
| 3045 | 3047 | Zc = { |
| 3046 | preencode(d, n) { | |
| 3047 | ;(zc.preencode(d, n.label), e.uint.preencode(d, n.count)) | |
| 3048 | preencode(d, o) { | |
| 3049 | ;(zc.preencode(d, o.label), e.uint.preencode(d, o.count)) | |
| 3048 | 3050 | }, |
| 3049 | encode(d, n) { | |
| 3050 | ;(zc.encode(d, n.label), e.uint.encode(d, n.count)) | |
| 3051 | encode(d, o) { | |
| 3052 | ;(zc.encode(d, o.label), e.uint.encode(d, o.count)) | |
| 3051 | 3053 | }, |
| 3052 | 3054 | decode: (d) => ({ label: zc.decode(d), count: e.uint.decode(d) }), |
| 3053 | 3055 | }, |
| 3054 | 3056 | $c = e.array(e.frame(Zc)), |
| 3055 | 3057 | _c = { |
| 3056 | preencode(d, o) { | |
| 3057 | ;(fn.preencode(d, o.id), | |
| 3058 | e.uint.preencode(d, o.total), | |
| 3059 | $c.preencode(d, o.labels), | |
| 3060 | e.uint.preencode(d, o.editedAt), | |
| 3058 | preencode(d, n) { | |
| 3059 | ;(fo.preencode(d, n.id), | |
| 3060 | e.uint.preencode(d, n.total), | |
| 3061 | $c.preencode(d, n.labels), | |
| 3062 | e.uint.preencode(d, n.editedAt), | |
| 3061 | 3063 | d.end++, |
| 3062 | n >= 15 && o.flagsClock && e.uint.preencode(d, o.flagsClock), | |
| 3063 | n >= 15 && o.version && e.uint.preencode(d, o.version)) | |
| 3064 | o >= 15 && n.flagsClock && e.uint.preencode(d, n.flagsClock), | |
| 3065 | o >= 15 && n.version && e.uint.preencode(d, n.version)) | |
| 3064 | 3066 | }, |
| 3065 | encode(d, o) { | |
| 3067 | encode(d, n) { | |
| 3066 | 3068 | const c = |
| 3067 | (n >= 15 && o.flagsClock ? 1 : 0) | | |
| 3068 | (n >= 15 && o.version ? 2 : 0) | | |
| 3069 | (n >= 16 && o.isDeleted ? 4 : 0) | |
| 3070 | ;(fn.encode(d, o.id), | |
| 3071 | e.uint.encode(d, o.total), | |
| 3072 | $c.encode(d, o.labels), | |
| 3073 | e.uint.encode(d, o.editedAt), | |
| 3069 | (o >= 15 && n.flagsClock ? 1 : 0) | | |
| 3070 | (o >= 15 && n.version ? 2 : 0) | | |
| 3071 | (o >= 16 && n.isDeleted ? 4 : 0) | |
| 3072 | ;(fo.encode(d, n.id), | |
| 3073 | e.uint.encode(d, n.total), | |
| 3074 | $c.encode(d, n.labels), | |
| 3075 | e.uint.encode(d, n.editedAt), | |
| 3074 | 3076 | e.uint.encode(d, c), |
| 3075 | n >= 15 && o.flagsClock && e.uint.encode(d, o.flagsClock), | |
| 3076 | n >= 15 && o.version && e.uint.encode(d, o.version)) | |
| 3077 | o >= 15 && n.flagsClock && e.uint.encode(d, n.flagsClock), | |
| 3078 | o >= 15 && n.version && e.uint.encode(d, n.version)) | |
| 3077 | 3079 | }, |
| 3078 | 3080 | decode(d) { |
| 3079 | const o = fn.decode(d), | |
| 3081 | const n = fo.decode(d), | |
| 3080 | 3082 | c = e.uint.decode(d), |
| 3081 | 3083 | r = $c.decode(d), |
| 3082 | 3084 | t = e.uint.decode(d), |
| 3083 | 3085 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 3084 | 3086 | return { |
| 3085 | id: o, | |
| 3087 | id: n, | |
| 3086 | 3088 | total: c, |
| 3087 | 3089 | labels: r, |
| 3088 | 3090 | editedAt: t, |
| 3089 | flagsClock: n >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 3090 | version: n >= 15 && 2 & i ? e.uint.decode(d) : 0, | |
| 3091 | isDeleted: n >= 16 && !!(4 & i), | |
| 3091 | flagsClock: o >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 3092 | version: o >= 15 && 2 & i ? e.uint.decode(d) : 0, | |
| 3093 | isDeleted: o >= 16 && !!(4 & i), | |
| 3092 | 3094 | } |
| 3093 | 3095 | }, |
| 3094 | 3096 | }, |
| 3095 | 3097 | er = _, |
| 3096 | 3098 | dr = { |
| 3097 | preencode(d, n) { | |
| 3098 | ;(er.preencode(d, n.header), e.uint.preencode(d, n.length)) | |
| 3099 | preencode(d, o) { | |
| 3100 | ;(er.preencode(d, o.header), e.uint.preencode(d, o.length)) | |
| 3099 | 3101 | }, |
| 3100 | encode(d, n) { | |
| 3101 | ;(er.encode(d, n.header), e.uint.encode(d, n.length)) | |
| 3102 | encode(d, o) { | |
| 3103 | ;(er.encode(d, o.header), e.uint.encode(d, o.length)) | |
| 3102 | 3104 | }, |
| 3103 | 3105 | decode: (d) => ({ header: er.decode(d), length: e.uint.decode(d) }), |
| 3104 | 3106 | }, |
| 3105 | nr = { | |
| 3106 | preencode(d, n) { | |
| 3107 | ;(e.fixed32.preencode(d, n.memberKey), e.uint.preencode(d, n.length)) | |
| 3107 | or = { | |
| 3108 | preencode(d, o) { | |
| 3109 | ;(e.fixed32.preencode(d, o.memberKey), e.uint.preencode(d, o.length)) | |
| 3108 | 3110 | }, |
| 3109 | encode(d, n) { | |
| 3110 | ;(e.fixed32.encode(d, n.memberKey), e.uint.encode(d, n.length)) | |
| 3111 | encode(d, o) { | |
| 3112 | ;(e.fixed32.encode(d, o.memberKey), e.uint.encode(d, o.length)) | |
| 3111 | 3113 | }, |
| 3112 | 3114 | decode: (d) => ({ memberKey: e.fixed32.decode(d), length: e.uint.decode(d) }), |
| 3113 | 3115 | }, |
| 3114 | or = $, | |
| 3116 | nr = $, | |
| 3115 | 3117 | cr = { |
| 3116 | 3118 | preencode(e, d) { |
| 3117 | 3119 | e.end++ |
| 3118 | 3120 | }, |
| 3119 | encode(d, o) { | |
| 3120 | const c = n >= 13 && o.disableReadReceipts ? 1 : 0 | |
| 3121 | encode(d, n) { | |
| 3122 | const c = | |
| 3123 | (o >= 13 && n.disableReadReceipts ? 1 : 0) | (o >= 21 && n.stripAttachmentMetadata ? 2 : 0) | |
| 3121 | 3124 | e.uint.encode(d, c) |
| 3122 | 3125 | }, |
| 3123 | 3126 | decode(d) { |
| 3124 | const o = e.uint.decode(d) | |
| 3125 | return { disableReadReceipts: n >= 13 && !!(1 & o) } | |
| 3127 | const n = e.uint.decode(d) | |
| 3128 | return { | |
| 3129 | disableReadReceipts: o >= 13 && !!(1 & n), | |
| 3130 | stripAttachmentMetadata: o >= 21 && !!(2 & n), | |
| 3131 | } | |
| 3126 | 3132 | }, |
| 3127 | 3133 | }, |
| 3128 | rr = { disableReadReceipts: "disableReadReceipts" }, | |
| 3134 | rr = { | |
| 3135 | disableReadReceipts: "disableReadReceipts", | |
| 3136 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 3137 | }, | |
| 3129 | 3138 | tr = { |
| 3130 | 3139 | preencode(e, d) { |
| 3131 | 3140 | e.end++ |
| 3132 | 3141 | }, |
| 3133 | encode(d, n) { | |
| 3134 | if ("disableReadReceipts" !== n) throw new Error("Unknown enum") | |
| 3135 | e.uint.encode(d, 1) | |
| 3142 | encode(d, o) { | |
| 3143 | switch (o) { | |
| 3144 | case "disableReadReceipts": | |
| 3145 | e.uint.encode(d, 1) | |
| 3146 | break | |
| 3147 | case "stripAttachmentMetadata": | |
| 3148 | e.uint.encode(d, 2) | |
| 3149 | break | |
| 3150 | default: | |
| 3151 | throw new Error("Unknown enum") | |
| 3152 | } | |
| 3153 | }, | |
| 3154 | decode(d) { | |
| 3155 | switch (e.uint.decode(d)) { | |
| 3156 | case 1: | |
| 3157 | return "disableReadReceipts" | |
| 3158 | case 2: | |
| 3159 | return "stripAttachmentMetadata" | |
| 3160 | default: | |
| 3161 | return null | |
| 3162 | } | |
| 3136 | 3163 | }, |
| 3137 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 3138 | 3164 | }, |
| 3139 | 3165 | ir = _, |
| 3140 | 3166 | ar = e.frame(cr), |
| … | … | @@ -3152,24 +3178,24 @@ const o = { |
| 3152 | 3178 | preencode(e, d) { |
| 3153 | 3179 | e.end++ |
| 3154 | 3180 | }, |
| 3155 | encode(d, n) { | |
| 3156 | if (n > 1) throw new Error("Unknown enum") | |
| 3157 | e.uint.encode(d, n) | |
| 3181 | encode(d, o) { | |
| 3182 | if (o > 1) throw new Error("Unknown enum") | |
| 3183 | e.uint.encode(d, o) | |
| 3158 | 3184 | }, |
| 3159 | 3185 | decode: (d) => e.uint.decode(d), |
| 3160 | 3186 | }, |
| 3161 | 3187 | lr = { |
| 3162 | preencode(d, n) { | |
| 3163 | ;(e.fixed32.preencode(d, n.key), | |
| 3164 | e.fixed32.preencode(d, n.sender), | |
| 3165 | e.uint.preencode(d, n.clock), | |
| 3166 | ur.preencode(d, n.label)) | |
| 3188 | preencode(d, o) { | |
| 3189 | ;(e.fixed32.preencode(d, o.key), | |
| 3190 | e.fixed32.preencode(d, o.sender), | |
| 3191 | e.uint.preencode(d, o.clock), | |
| 3192 | ur.preencode(d, o.label)) | |
| 3167 | 3193 | }, |
| 3168 | encode(d, n) { | |
| 3169 | ;(e.fixed32.encode(d, n.key), | |
| 3170 | e.fixed32.encode(d, n.sender), | |
| 3171 | e.uint.encode(d, n.clock), | |
| 3172 | ur.encode(d, n.label)) | |
| 3194 | encode(d, o) { | |
| 3195 | ;(e.fixed32.encode(d, o.key), | |
| 3196 | e.fixed32.encode(d, o.sender), | |
| 3197 | e.uint.encode(d, o.clock), | |
| 3198 | ur.encode(d, o.label)) | |
| 3173 | 3199 | }, |
| 3174 | 3200 | decode: (d) => ({ |
| 3175 | 3201 | key: e.fixed32.decode(d), |
| … | … | @@ -3180,38 +3206,38 @@ const o = { |
| 3180 | 3206 | }, |
| 3181 | 3207 | fr = _, |
| 3182 | 3208 | mr = { |
| 3183 | preencode(d, n) { | |
| 3184 | ;(fr.preencode(d, n.header), e.fixed32.preencode(d, n.key), ur.preencode(d, n.label)) | |
| 3209 | preencode(d, o) { | |
| 3210 | ;(fr.preencode(d, o.header), e.fixed32.preencode(d, o.key), ur.preencode(d, o.label)) | |
| 3185 | 3211 | }, |
| 3186 | encode(d, n) { | |
| 3187 | ;(fr.encode(d, n.header), e.fixed32.encode(d, n.key), ur.encode(d, n.label)) | |
| 3212 | encode(d, o) { | |
| 3213 | ;(fr.encode(d, o.header), e.fixed32.encode(d, o.key), ur.encode(d, o.label)) | |
| 3188 | 3214 | }, |
| 3189 | 3215 | decode: (d) => ({ header: fr.decode(d), key: e.fixed32.decode(d), label: ur.decode(d) }), |
| 3190 | 3216 | }, |
| 3191 | 3217 | yr = { |
| 3192 | preencode(d, n) { | |
| 3193 | ;(ur.preencode(d, n.label), e.uint.preencode(d, n.count)) | |
| 3218 | preencode(d, o) { | |
| 3219 | ;(ur.preencode(d, o.label), e.uint.preencode(d, o.count)) | |
| 3194 | 3220 | }, |
| 3195 | encode(d, n) { | |
| 3196 | ;(ur.encode(d, n.label), e.uint.encode(d, n.count)) | |
| 3221 | encode(d, o) { | |
| 3222 | ;(ur.encode(d, o.label), e.uint.encode(d, o.count)) | |
| 3197 | 3223 | }, |
| 3198 | 3224 | decode: (d) => ({ label: ur.decode(d), count: e.uint.decode(d) }), |
| 3199 | 3225 | }, |
| 3200 | 3226 | xr = e.array(e.frame(yr)), |
| 3201 | 3227 | br = { |
| 3202 | preencode(d, n) { | |
| 3203 | ;(e.fixed32.preencode(d, n.key), | |
| 3204 | e.uint.preencode(d, n.total), | |
| 3205 | xr.preencode(d, n.labels), | |
| 3206 | e.uint.preencode(d, n.editedAt), | |
| 3207 | e.uint.preencode(d, n.flagsClock)) | |
| 3228 | preencode(d, o) { | |
| 3229 | ;(e.fixed32.preencode(d, o.key), | |
| 3230 | e.uint.preencode(d, o.total), | |
| 3231 | xr.preencode(d, o.labels), | |
| 3232 | e.uint.preencode(d, o.editedAt), | |
| 3233 | e.uint.preencode(d, o.flagsClock)) | |
| 3208 | 3234 | }, |
| 3209 | encode(d, n) { | |
| 3210 | ;(e.fixed32.encode(d, n.key), | |
| 3211 | e.uint.encode(d, n.total), | |
| 3212 | xr.encode(d, n.labels), | |
| 3213 | e.uint.encode(d, n.editedAt), | |
| 3214 | e.uint.encode(d, n.flagsClock)) | |
| 3235 | encode(d, o) { | |
| 3236 | ;(e.fixed32.encode(d, o.key), | |
| 3237 | e.uint.encode(d, o.total), | |
| 3238 | xr.encode(d, o.labels), | |
| 3239 | e.uint.encode(d, o.editedAt), | |
| 3240 | e.uint.encode(d, o.flagsClock)) | |
| 3215 | 3241 | }, |
| 3216 | 3242 | decode: (d) => ({ |
| 3217 | 3243 | key: e.fixed32.decode(d), |
| … | … | @@ -3222,25 +3248,25 @@ const o = { |
| 3222 | 3248 | }), |
| 3223 | 3249 | }, |
| 3224 | 3250 | kr = { |
| 3225 | preencode(d, n) { | |
| 3226 | ;(e.float64.preencode(d, n.latitude), e.float64.preencode(d, n.longitude)) | |
| 3251 | preencode(d, o) { | |
| 3252 | ;(e.float64.preencode(d, o.latitude), e.float64.preencode(d, o.longitude)) | |
| 3227 | 3253 | }, |
| 3228 | encode(d, n) { | |
| 3229 | ;(e.float64.encode(d, n.latitude), e.float64.encode(d, n.longitude)) | |
| 3254 | encode(d, o) { | |
| 3255 | ;(e.float64.encode(d, o.latitude), e.float64.encode(d, o.longitude)) | |
| 3230 | 3256 | }, |
| 3231 | 3257 | decode: (d) => ({ latitude: e.float64.decode(d), longitude: e.float64.decode(d) }), |
| 3232 | 3258 | }, |
| 3233 | 3259 | vr = _, |
| 3234 | 3260 | gr = { |
| 3235 | preencode(d, n) { | |
| 3236 | ;(vr.preencode(d, n.header), | |
| 3237 | e.fixed32.preencode(d, n.deviceKey), | |
| 3238 | e.fixed32.preencode(d, n.fromDeviceKey)) | |
| 3261 | preencode(d, o) { | |
| 3262 | ;(vr.preencode(d, o.header), | |
| 3263 | e.fixed32.preencode(d, o.deviceKey), | |
| 3264 | e.fixed32.preencode(d, o.fromDeviceKey)) | |
| 3239 | 3265 | }, |
| 3240 | encode(d, n) { | |
| 3241 | ;(vr.encode(d, n.header), | |
| 3242 | e.fixed32.encode(d, n.deviceKey), | |
| 3243 | e.fixed32.encode(d, n.fromDeviceKey)) | |
| 3266 | encode(d, o) { | |
| 3267 | ;(vr.encode(d, o.header), | |
| 3268 | e.fixed32.encode(d, o.deviceKey), | |
| 3269 | e.fixed32.encode(d, o.fromDeviceKey)) | |
| 3244 | 3270 | }, |
| 3245 | 3271 | decode: (d) => ({ |
| 3246 | 3272 | header: vr.decode(d), |
| … | … | @@ -3251,111 +3277,111 @@ const o = { |
| 3251 | 3277 | hr = _, |
| 3252 | 3278 | Kr = Y, |
| 3253 | 3279 | wr = { |
| 3254 | preencode(d, o) { | |
| 3255 | ;(hr.preencode(d, o.header), | |
| 3256 | e.fixed32.preencode(d, o.callKey), | |
| 3257 | e.buffer.preencode(d, o.encryptionKey), | |
| 3280 | preencode(d, n) { | |
| 3281 | ;(hr.preencode(d, n.header), | |
| 3282 | e.fixed32.preencode(d, n.callKey), | |
| 3283 | e.buffer.preencode(d, n.encryptionKey), | |
| 3258 | 3284 | d.end++, |
| 3259 | n >= 19 && o.streams && Kr.preencode(d, o.streams), | |
| 3260 | n >= 19 && o.discoveryKey && e.fixed32.preencode(d, o.discoveryKey), | |
| 3261 | n >= 19 && o.version && e.uint.preencode(d, o.version)) | |
| 3285 | o >= 19 && n.streams && Kr.preencode(d, n.streams), | |
| 3286 | o >= 19 && n.discoveryKey && e.fixed32.preencode(d, n.discoveryKey), | |
| 3287 | o >= 19 && n.version && e.uint.preencode(d, n.version)) | |
| 3262 | 3288 | }, |
| 3263 | encode(d, o) { | |
| 3289 | encode(d, n) { | |
| 3264 | 3290 | const c = |
| 3265 | (n >= 19 && o.streams ? 1 : 0) | | |
| 3266 | (n >= 19 && o.discoveryKey ? 2 : 0) | | |
| 3267 | (n >= 19 && o.version ? 4 : 0) | |
| 3268 | ;(hr.encode(d, o.header), | |
| 3269 | e.fixed32.encode(d, o.callKey), | |
| 3270 | e.buffer.encode(d, o.encryptionKey), | |
| 3291 | (o >= 19 && n.streams ? 1 : 0) | | |
| 3292 | (o >= 19 && n.discoveryKey ? 2 : 0) | | |
| 3293 | (o >= 19 && n.version ? 4 : 0) | |
| 3294 | ;(hr.encode(d, n.header), | |
| 3295 | e.fixed32.encode(d, n.callKey), | |
| 3296 | e.buffer.encode(d, n.encryptionKey), | |
| 3271 | 3297 | e.uint.encode(d, c), |
| 3272 | n >= 19 && o.streams && Kr.encode(d, o.streams), | |
| 3273 | n >= 19 && o.discoveryKey && e.fixed32.encode(d, o.discoveryKey), | |
| 3274 | n >= 19 && o.version && e.uint.encode(d, o.version)) | |
| 3298 | o >= 19 && n.streams && Kr.encode(d, n.streams), | |
| 3299 | o >= 19 && n.discoveryKey && e.fixed32.encode(d, n.discoveryKey), | |
| 3300 | o >= 19 && n.version && e.uint.encode(d, n.version)) | |
| 3275 | 3301 | }, |
| 3276 | 3302 | decode(d) { |
| 3277 | const o = hr.decode(d), | |
| 3303 | const n = hr.decode(d), | |
| 3278 | 3304 | c = e.fixed32.decode(d), |
| 3279 | 3305 | r = e.buffer.decode(d), |
| 3280 | 3306 | t = e.uint.decode(d) |
| 3281 | 3307 | return { |
| 3282 | header: o, | |
| 3308 | header: n, | |
| 3283 | 3309 | callKey: c, |
| 3284 | 3310 | encryptionKey: r, |
| 3285 | streams: n >= 19 && 1 & t ? Kr.decode(d) : null, | |
| 3286 | discoveryKey: n >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3287 | version: n >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3311 | streams: o >= 19 && 1 & t ? Kr.decode(d) : null, | |
| 3312 | discoveryKey: o >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3313 | version: o >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3288 | 3314 | } |
| 3289 | 3315 | }, |
| 3290 | 3316 | }, |
| 3291 | 3317 | Tr = _, |
| 3292 | 3318 | Pr = Y, |
| 3293 | 3319 | Ar = { |
| 3294 | preencode(d, o) { | |
| 3295 | ;(Tr.preencode(d, o.header), | |
| 3296 | e.fixed32.preencode(d, o.callKey), | |
| 3320 | preencode(d, n) { | |
| 3321 | ;(Tr.preencode(d, n.header), | |
| 3322 | e.fixed32.preencode(d, n.callKey), | |
| 3297 | 3323 | d.end++, |
| 3298 | n >= 19 && o.streams && Pr.preencode(d, o.streams)) | |
| 3324 | o >= 19 && n.streams && Pr.preencode(d, n.streams)) | |
| 3299 | 3325 | }, |
| 3300 | encode(d, o) { | |
| 3301 | const c = n >= 19 && o.streams ? 1 : 0 | |
| 3302 | ;(Tr.encode(d, o.header), | |
| 3303 | e.fixed32.encode(d, o.callKey), | |
| 3326 | encode(d, n) { | |
| 3327 | const c = o >= 19 && n.streams ? 1 : 0 | |
| 3328 | ;(Tr.encode(d, n.header), | |
| 3329 | e.fixed32.encode(d, n.callKey), | |
| 3304 | 3330 | e.uint.encode(d, c), |
| 3305 | n >= 19 && o.streams && Pr.encode(d, o.streams)) | |
| 3331 | o >= 19 && n.streams && Pr.encode(d, n.streams)) | |
| 3306 | 3332 | }, |
| 3307 | 3333 | decode(d) { |
| 3308 | const o = Tr.decode(d), | |
| 3334 | const n = Tr.decode(d), | |
| 3309 | 3335 | c = e.fixed32.decode(d), |
| 3310 | 3336 | r = e.uint.decode(d) |
| 3311 | return { header: o, callKey: c, streams: n >= 19 && 1 & r ? Pr.decode(d) : null } | |
| 3337 | return { header: n, callKey: c, streams: o >= 19 && 1 & r ? Pr.decode(d) : null } | |
| 3312 | 3338 | }, |
| 3313 | 3339 | }, |
| 3314 | 3340 | Rr = _, |
| 3315 | 3341 | Dr = { |
| 3316 | preencode(d, n) { | |
| 3317 | ;(Rr.preencode(d, n.header), e.fixed32.preencode(d, n.callKey)) | |
| 3342 | preencode(d, o) { | |
| 3343 | ;(Rr.preencode(d, o.header), e.fixed32.preencode(d, o.callKey)) | |
| 3318 | 3344 | }, |
| 3319 | encode(d, n) { | |
| 3320 | ;(Rr.encode(d, n.header), e.fixed32.encode(d, n.callKey)) | |
| 3345 | encode(d, o) { | |
| 3346 | ;(Rr.encode(d, o.header), e.fixed32.encode(d, o.callKey)) | |
| 3321 | 3347 | }, |
| 3322 | 3348 | decode: (d) => ({ header: Rr.decode(d), callKey: e.fixed32.decode(d) }), |
| 3323 | 3349 | }, |
| 3324 | Sr = _, | |
| 3325 | Cr = { | |
| 3326 | preencode(d, n) { | |
| 3327 | ;(Sr.preencode(d, n.header), e.fixed32.preencode(d, n.callKey)) | |
| 3350 | Mr = _, | |
| 3351 | Sr = { | |
| 3352 | preencode(d, o) { | |
| 3353 | ;(Mr.preencode(d, o.header), e.fixed32.preencode(d, o.callKey)) | |
| 3328 | 3354 | }, |
| 3329 | encode(d, n) { | |
| 3330 | ;(Sr.encode(d, n.header), e.fixed32.encode(d, n.callKey)) | |
| 3355 | encode(d, o) { | |
| 3356 | ;(Mr.encode(d, o.header), e.fixed32.encode(d, o.callKey)) | |
| 3331 | 3357 | }, |
| 3332 | decode: (d) => ({ header: Sr.decode(d), callKey: e.fixed32.decode(d) }), | |
| 3358 | decode: (d) => ({ header: Mr.decode(d), callKey: e.fixed32.decode(d) }), | |
| 3333 | 3359 | }, |
| 3334 | Mr = _, | |
| 3360 | Cr = _, | |
| 3335 | 3361 | Lr = { |
| 3336 | preencode(d, n) { | |
| 3337 | ;(Mr.preencode(d, n.header), | |
| 3338 | e.fixed32.preencode(d, n.callKey), | |
| 3339 | e.fixed32.preencode(d, n.streamKey)) | |
| 3362 | preencode(d, o) { | |
| 3363 | ;(Cr.preencode(d, o.header), | |
| 3364 | e.fixed32.preencode(d, o.callKey), | |
| 3365 | e.fixed32.preencode(d, o.streamKey)) | |
| 3340 | 3366 | }, |
| 3341 | encode(d, n) { | |
| 3342 | ;(Mr.encode(d, n.header), e.fixed32.encode(d, n.callKey), e.fixed32.encode(d, n.streamKey)) | |
| 3367 | encode(d, o) { | |
| 3368 | ;(Cr.encode(d, o.header), e.fixed32.encode(d, o.callKey), e.fixed32.encode(d, o.streamKey)) | |
| 3343 | 3369 | }, |
| 3344 | 3370 | decode: (d) => ({ |
| 3345 | header: Mr.decode(d), | |
| 3371 | header: Cr.decode(d), | |
| 3346 | 3372 | callKey: e.fixed32.decode(d), |
| 3347 | 3373 | streamKey: e.fixed32.decode(d), |
| 3348 | 3374 | }), |
| 3349 | 3375 | }, |
| 3350 | 3376 | qr = _, |
| 3351 | 3377 | Fr = { |
| 3352 | preencode(d, n) { | |
| 3353 | ;(qr.preencode(d, n.header), | |
| 3354 | e.fixed32.preencode(d, n.callKey), | |
| 3355 | e.fixed32.preencode(d, n.streamKey)) | |
| 3378 | preencode(d, o) { | |
| 3379 | ;(qr.preencode(d, o.header), | |
| 3380 | e.fixed32.preencode(d, o.callKey), | |
| 3381 | e.fixed32.preencode(d, o.streamKey)) | |
| 3356 | 3382 | }, |
| 3357 | encode(d, n) { | |
| 3358 | ;(qr.encode(d, n.header), e.fixed32.encode(d, n.callKey), e.fixed32.encode(d, n.streamKey)) | |
| 3383 | encode(d, o) { | |
| 3384 | ;(qr.encode(d, o.header), e.fixed32.encode(d, o.callKey), e.fixed32.encode(d, o.streamKey)) | |
| 3359 | 3385 | }, |
| 3360 | 3386 | decode: (d) => ({ |
| 3361 | 3387 | header: qr.decode(d), |
| … | … | @@ -3364,53 +3390,53 @@ const o = { |
| 3364 | 3390 | }), |
| 3365 | 3391 | }, |
| 3366 | 3392 | Er = { |
| 3367 | preencode(d, o) { | |
| 3368 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3369 | e.buffer.preencode(d, o.encryptionKey), | |
| 3370 | e.uint.preencode(d, o.createdAt), | |
| 3393 | preencode(d, n) { | |
| 3394 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3395 | e.buffer.preencode(d, n.encryptionKey), | |
| 3396 | e.uint.preencode(d, n.createdAt), | |
| 3371 | 3397 | d.end++, |
| 3372 | n >= 19 && o.endedAt && e.uint.preencode(d, o.endedAt), | |
| 3373 | n >= 19 && o.discoveryKey && e.fixed32.preencode(d, o.discoveryKey), | |
| 3374 | n >= 19 && o.version && e.uint.preencode(d, o.version)) | |
| 3398 | o >= 19 && n.endedAt && e.uint.preencode(d, n.endedAt), | |
| 3399 | o >= 19 && n.discoveryKey && e.fixed32.preencode(d, n.discoveryKey), | |
| 3400 | o >= 19 && n.version && e.uint.preencode(d, n.version)) | |
| 3375 | 3401 | }, |
| 3376 | encode(d, o) { | |
| 3402 | encode(d, n) { | |
| 3377 | 3403 | const c = |
| 3378 | (n >= 19 && o.endedAt ? 1 : 0) | | |
| 3379 | (n >= 19 && o.discoveryKey ? 2 : 0) | | |
| 3380 | (n >= 19 && o.version ? 4 : 0) | |
| 3381 | ;(e.fixed32.encode(d, o.callKey), | |
| 3382 | e.buffer.encode(d, o.encryptionKey), | |
| 3383 | e.uint.encode(d, o.createdAt), | |
| 3404 | (o >= 19 && n.endedAt ? 1 : 0) | | |
| 3405 | (o >= 19 && n.discoveryKey ? 2 : 0) | | |
| 3406 | (o >= 19 && n.version ? 4 : 0) | |
| 3407 | ;(e.fixed32.encode(d, n.callKey), | |
| 3408 | e.buffer.encode(d, n.encryptionKey), | |
| 3409 | e.uint.encode(d, n.createdAt), | |
| 3384 | 3410 | e.uint.encode(d, c), |
| 3385 | n >= 19 && o.endedAt && e.uint.encode(d, o.endedAt), | |
| 3386 | n >= 19 && o.discoveryKey && e.fixed32.encode(d, o.discoveryKey), | |
| 3387 | n >= 19 && o.version && e.uint.encode(d, o.version)) | |
| 3411 | o >= 19 && n.endedAt && e.uint.encode(d, n.endedAt), | |
| 3412 | o >= 19 && n.discoveryKey && e.fixed32.encode(d, n.discoveryKey), | |
| 3413 | o >= 19 && n.version && e.uint.encode(d, n.version)) | |
| 3388 | 3414 | }, |
| 3389 | 3415 | decode(d) { |
| 3390 | const o = e.fixed32.decode(d), | |
| 3416 | const n = e.fixed32.decode(d), | |
| 3391 | 3417 | c = e.buffer.decode(d), |
| 3392 | 3418 | r = e.uint.decode(d), |
| 3393 | 3419 | t = e.uint.decode(d) |
| 3394 | 3420 | return { |
| 3395 | callKey: o, | |
| 3421 | callKey: n, | |
| 3396 | 3422 | encryptionKey: c, |
| 3397 | 3423 | createdAt: r, |
| 3398 | endedAt: n >= 19 && 1 & t ? e.uint.decode(d) : 0, | |
| 3399 | discoveryKey: n >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3400 | version: n >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3424 | endedAt: o >= 19 && 1 & t ? e.uint.decode(d) : 0, | |
| 3425 | discoveryKey: o >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3426 | version: o >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3401 | 3427 | } |
| 3402 | 3428 | }, |
| 3403 | 3429 | }, |
| 3404 | 3430 | Br = { |
| 3405 | preencode(d, n) { | |
| 3406 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3407 | e.fixed32.preencode(d, n.memberKey), | |
| 3408 | e.uint.preencode(d, n.createdAt)) | |
| 3431 | preencode(d, o) { | |
| 3432 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3433 | e.fixed32.preencode(d, o.memberKey), | |
| 3434 | e.uint.preencode(d, o.createdAt)) | |
| 3409 | 3435 | }, |
| 3410 | encode(d, n) { | |
| 3411 | ;(e.fixed32.encode(d, n.callKey), | |
| 3412 | e.fixed32.encode(d, n.memberKey), | |
| 3413 | e.uint.encode(d, n.createdAt)) | |
| 3436 | encode(d, o) { | |
| 3437 | ;(e.fixed32.encode(d, o.callKey), | |
| 3438 | e.fixed32.encode(d, o.memberKey), | |
| 3439 | e.uint.encode(d, o.createdAt)) | |
| 3414 | 3440 | }, |
| 3415 | 3441 | decode: (d) => ({ |
| 3416 | 3442 | callKey: e.fixed32.decode(d), |
| … | … | @@ -3419,50 +3445,50 @@ const o = { |
| 3419 | 3445 | }), |
| 3420 | 3446 | }, |
| 3421 | 3447 | Ir = { |
| 3422 | preencode(d, o) { | |
| 3423 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3424 | e.fixed32.preencode(d, o.deviceKey), | |
| 3425 | e.fixed32.preencode(d, o.memberKey), | |
| 3426 | e.uint.preencode(d, o.createdAt), | |
| 3448 | preencode(d, n) { | |
| 3449 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3450 | e.fixed32.preencode(d, n.deviceKey), | |
| 3451 | e.fixed32.preencode(d, n.memberKey), | |
| 3452 | e.uint.preencode(d, n.createdAt), | |
| 3427 | 3453 | d.end++, |
| 3428 | n >= 19 && o.swarmKey && e.fixed32.preencode(d, o.swarmKey)) | |
| 3454 | o >= 19 && n.swarmKey && e.fixed32.preencode(d, n.swarmKey)) | |
| 3429 | 3455 | }, |
| 3430 | encode(d, o) { | |
| 3431 | const c = n >= 19 && o.swarmKey ? 1 : 0 | |
| 3432 | ;(e.fixed32.encode(d, o.callKey), | |
| 3433 | e.fixed32.encode(d, o.deviceKey), | |
| 3434 | e.fixed32.encode(d, o.memberKey), | |
| 3435 | e.uint.encode(d, o.createdAt), | |
| 3456 | encode(d, n) { | |
| 3457 | const c = o >= 19 && n.swarmKey ? 1 : 0 | |
| 3458 | ;(e.fixed32.encode(d, n.callKey), | |
| 3459 | e.fixed32.encode(d, n.deviceKey), | |
| 3460 | e.fixed32.encode(d, n.memberKey), | |
| 3461 | e.uint.encode(d, n.createdAt), | |
| 3436 | 3462 | e.uint.encode(d, c), |
| 3437 | n >= 19 && o.swarmKey && e.fixed32.encode(d, o.swarmKey)) | |
| 3463 | o >= 19 && n.swarmKey && e.fixed32.encode(d, n.swarmKey)) | |
| 3438 | 3464 | }, |
| 3439 | 3465 | decode(d) { |
| 3440 | const o = e.fixed32.decode(d), | |
| 3466 | const n = e.fixed32.decode(d), | |
| 3441 | 3467 | c = e.fixed32.decode(d), |
| 3442 | 3468 | r = e.fixed32.decode(d), |
| 3443 | 3469 | t = e.uint.decode(d), |
| 3444 | 3470 | i = e.uint.decode(d) |
| 3445 | 3471 | return { |
| 3446 | callKey: o, | |
| 3472 | callKey: n, | |
| 3447 | 3473 | deviceKey: c, |
| 3448 | 3474 | memberKey: r, |
| 3449 | 3475 | createdAt: t, |
| 3450 | swarmKey: n >= 19 && 1 & i ? e.fixed32.decode(d) : null, | |
| 3476 | swarmKey: o >= 19 && 1 & i ? e.fixed32.decode(d) : null, | |
| 3451 | 3477 | } |
| 3452 | 3478 | }, |
| 3453 | 3479 | }, |
| 3454 | 3480 | Nr = { |
| 3455 | preencode(d, n) { | |
| 3456 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3457 | e.fixed32.preencode(d, n.deviceKey), | |
| 3458 | e.buffer.preencode(d, n.streamKey), | |
| 3459 | e.uint.preencode(d, n.createdAt)) | |
| 3481 | preencode(d, o) { | |
| 3482 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3483 | e.fixed32.preencode(d, o.deviceKey), | |
| 3484 | e.buffer.preencode(d, o.streamKey), | |
| 3485 | e.uint.preencode(d, o.createdAt)) | |
| 3460 | 3486 | }, |
| 3461 | encode(d, n) { | |
| 3462 | ;(e.fixed32.encode(d, n.callKey), | |
| 3463 | e.fixed32.encode(d, n.deviceKey), | |
| 3464 | e.buffer.encode(d, n.streamKey), | |
| 3465 | e.uint.encode(d, n.createdAt)) | |
| 3487 | encode(d, o) { | |
| 3488 | ;(e.fixed32.encode(d, o.callKey), | |
| 3489 | e.fixed32.encode(d, o.deviceKey), | |
| 3490 | e.buffer.encode(d, o.streamKey), | |
| 3491 | e.uint.encode(d, o.createdAt)) | |
| 3466 | 3492 | }, |
| 3467 | 3493 | decode: (d) => ({ |
| 3468 | 3494 | callKey: e.fixed32.decode(d), |
| … | … | @@ -3472,12 +3498,12 @@ const o = { |
| 3472 | 3498 | }), |
| 3473 | 3499 | }, |
| 3474 | 3500 | jr = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, |
| 3475 | Or = { | |
| 3501 | Ur = { | |
| 3476 | 3502 | preencode(e, d) { |
| 3477 | 3503 | e.end++ |
| 3478 | 3504 | }, |
| 3479 | encode(d, n) { | |
| 3480 | switch (n) { | |
| 3505 | encode(d, o) { | |
| 3506 | switch (o) { | |
| 3481 | 3507 | case "Nightly": |
| 3482 | 3508 | e.uint.encode(d, 1) |
| 3483 | 3509 | break |
| … | … | @@ -3504,15 +3530,15 @@ const o = { |
| 3504 | 3530 | } |
| 3505 | 3531 | }, |
| 3506 | 3532 | }, |
| 3507 | Jr = _, | |
| 3508 | Ur = { | |
| 3533 | Or = _, | |
| 3534 | Jr = { | |
| 3509 | 3535 | preencode(e, d) { |
| 3510 | Jr.preencode(e, d.header) | |
| 3536 | Or.preencode(e, d.header) | |
| 3511 | 3537 | }, |
| 3512 | 3538 | encode(e, d) { |
| 3513 | Jr.encode(e, d.header) | |
| 3539 | Or.encode(e, d.header) | |
| 3514 | 3540 | }, |
| 3515 | decode: (e) => ({ header: Jr.decode(e) }), | |
| 3541 | decode: (e) => ({ header: Or.decode(e) }), | |
| 3516 | 3542 | }, |
| 3517 | 3543 | Vr = _, |
| 3518 | 3544 | Hr = { |
| … | … | @@ -3524,37 +3550,58 @@ const o = { |
| 3524 | 3550 | }, |
| 3525 | 3551 | decode: (e) => ({ header: Vr.decode(e) }), |
| 3526 | 3552 | }, |
| 3527 | zr = e.frame(T), | |
| 3528 | Gr = zr, | |
| 3529 | Qr = e.array(Bc), | |
| 3530 | Wr = e.frame(pe), | |
| 3531 | Xr = zr, | |
| 3532 | Yr = Wr, | |
| 3533 | Zr = e.frame(Kc), | |
| 3534 | $r = Wr, | |
| 3535 | _r = e.frame(md), | |
| 3536 | et = e.frame(xc), | |
| 3537 | dt = e.frame(kr), | |
| 3538 | nt = dt, | |
| 3539 | ot = e.array(e.frame(Nc)), | |
| 3540 | ct = zr, | |
| 3541 | rt = e.frame(Uo), | |
| 3542 | tt = rt, | |
| 3543 | it = rt, | |
| 3544 | at = zr | |
| 3545 | function st(e) { | |
| 3546 | n = e | |
| 3553 | zr = _, | |
| 3554 | Gr = { | |
| 3555 | preencode(d, o) { | |
| 3556 | ;(zr.preencode(d, o.header), | |
| 3557 | e.fixed32.preencode(d, o.deviceKey), | |
| 3558 | e.buffer.preencode(d, o.deviceProof), | |
| 3559 | e.buffer.preencode(d, o.writerProof)) | |
| 3560 | }, | |
| 3561 | encode(d, o) { | |
| 3562 | ;(zr.encode(d, o.header), | |
| 3563 | e.fixed32.encode(d, o.deviceKey), | |
| 3564 | e.buffer.encode(d, o.deviceProof), | |
| 3565 | e.buffer.encode(d, o.writerProof)) | |
| 3566 | }, | |
| 3567 | decode: (d) => ({ | |
| 3568 | header: zr.decode(d), | |
| 3569 | deviceKey: e.fixed32.decode(d), | |
| 3570 | deviceProof: e.buffer.decode(d), | |
| 3571 | writerProof: e.buffer.decode(d), | |
| 3572 | }), | |
| 3573 | }, | |
| 3574 | Qr = e.frame(T), | |
| 3575 | Wr = Qr, | |
| 3576 | Xr = e.array(Bc), | |
| 3577 | Yr = e.frame(pe), | |
| 3578 | Zr = Qr, | |
| 3579 | $r = Yr, | |
| 3580 | _r = e.frame(Kc), | |
| 3581 | et = Yr, | |
| 3582 | dt = e.frame(md), | |
| 3583 | ot = e.frame(xc), | |
| 3584 | nt = e.frame(kr), | |
| 3585 | ct = nt, | |
| 3586 | rt = e.array(e.frame(Nc)), | |
| 3587 | tt = Qr, | |
| 3588 | it = e.frame(Jn), | |
| 3589 | at = it, | |
| 3590 | st = it, | |
| 3591 | pt = Qr | |
| 3592 | function ut(e) { | |
| 3593 | o = e | |
| 3547 | 3594 | } |
| 3548 | function pt(d, o, c = 20) { | |
| 3549 | return ((n = c), e.encode(ft(d), o)) | |
| 3595 | function lt(d, n, c = 21) { | |
| 3596 | return ((o = c), e.encode(yt(d), n)) | |
| 3550 | 3597 | } |
| 3551 | function ut(d, o, c = 20) { | |
| 3552 | return ((n = c), e.decode(ft(d), o)) | |
| 3598 | function ft(d, n, c = 21) { | |
| 3599 | return ((o = c), e.decode(yt(d), n)) | |
| 3553 | 3600 | } |
| 3554 | function lt(e) { | |
| 3601 | function mt(e) { | |
| 3555 | 3602 | switch (e) { |
| 3556 | 3603 | case "@keet/room-type": |
| 3557 | return U | |
| 3604 | return J | |
| 3558 | 3605 | case "@keet/display-type": |
| 3559 | 3606 | return Ac |
| 3560 | 3607 | case "@keet/system-settings-keys": |
| … | … | @@ -3573,10 +3620,10 @@ function lt(e) { |
| 3573 | 3620 | throw new Error("Enum not found " + e) |
| 3574 | 3621 | } |
| 3575 | 3622 | } |
| 3576 | function ft(e) { | |
| 3623 | function yt(e) { | |
| 3577 | 3624 | switch (e) { |
| 3578 | 3625 | case "@keet/head": |
| 3579 | return o | |
| 3626 | return n | |
| 3580 | 3627 | case "@keet/oplog-id": |
| 3581 | 3628 | return c |
| 3582 | 3629 | case "@keet/encryption-keypair": |
| … | … | @@ -3608,11 +3655,11 @@ function ft(e) { |
| 3608 | 3655 | case "@keet/file-record": |
| 3609 | 3656 | return D |
| 3610 | 3657 | case "@keet/device-status": |
| 3611 | return S | |
| 3658 | return M | |
| 3612 | 3659 | case "@keet/member-status": |
| 3613 | return C | |
| 3660 | return S | |
| 3614 | 3661 | case "@keet/member-moderation-status": |
| 3615 | return M | |
| 3662 | return C | |
| 3616 | 3663 | case "@keet/abi": |
| 3617 | 3664 | return L |
| 3618 | 3665 | case "@keet/device-stats": |
| … | … | @@ -3624,7 +3671,7 @@ function ft(e) { |
| 3624 | 3671 | case "@keet/file-stats": |
| 3625 | 3672 | return B |
| 3626 | 3673 | case "@keet/stats": |
| 3627 | return J | |
| 3674 | return O | |
| 3628 | 3675 | case "@keet/room-type": |
| 3629 | 3676 | return V |
| 3630 | 3677 | case "@keet/system-settings": |
| … | … | @@ -3642,7 +3689,7 @@ function ft(e) { |
| 3642 | 3689 | case "@keet/add-blind-peer-operation": |
| 3643 | 3690 | return de |
| 3644 | 3691 | case "@keet/remove-blind-peer-operation": |
| 3645 | return oe | |
| 3692 | return ne | |
| 3646 | 3693 | case "@keet/identity-attestation": |
| 3647 | 3694 | return ce |
| 3648 | 3695 | case "@keet/device-invitation": |
| … | … | @@ -3672,7 +3719,7 @@ function ft(e) { |
| 3672 | 3719 | case "@keet/device-request": |
| 3673 | 3720 | return De |
| 3674 | 3721 | case "@keet/device-response": |
| 3675 | return Me | |
| 3722 | return Ce | |
| 3676 | 3723 | case "@keet/invitation-metadata": |
| 3677 | 3724 | return Le |
| 3678 | 3725 | case "@keet/invitation": |
| … | … | @@ -3680,11 +3727,11 @@ function ft(e) { |
| 3680 | 3727 | case "@keet/add-invitation-operation": |
| 3681 | 3728 | return Ne |
| 3682 | 3729 | case "@keet/remove-invitation-operation": |
| 3683 | return Oe | |
| 3730 | return Ue | |
| 3684 | 3731 | case "@keet/sendable-room-invitation": |
| 3685 | return Je | |
| 3732 | return Oe | |
| 3686 | 3733 | case "@keet/sendable-identity-invitation": |
| 3687 | return Ue | |
| 3734 | return Je | |
| 3688 | 3735 | case "@keet/sendable-contact-invitation": |
| 3689 | 3736 | return Ve |
| 3690 | 3737 | case "@keet/sendable-invitation": |
| … | … | @@ -3698,7 +3745,7 @@ function ft(e) { |
| 3698 | 3745 | case "@keet/stop-indexing-operation": |
| 3699 | 3746 | return ed |
| 3700 | 3747 | case "@keet/join-request": |
| 3701 | return nd | |
| 3748 | return od | |
| 3702 | 3749 | case "@keet/accept-join-request-operation": |
| 3703 | 3750 | return rd |
| 3704 | 3751 | case "@keet/reject-join-request-operation": |
| … | … | @@ -3736,111 +3783,111 @@ function ft(e) { |
| 3736 | 3783 | case "@keet/mention-display-item": |
| 3737 | 3784 | return Nd |
| 3738 | 3785 | case "@keet/link-preview": |
| 3739 | return Jd | |
| 3786 | return Od | |
| 3740 | 3787 | case "@keet/display-link-item": |
| 3741 | 3788 | return Hd |
| 3742 | 3789 | case "@keet/display": |
| 3743 | return en | |
| 3790 | return eo | |
| 3744 | 3791 | case "@keet/oplog-message": |
| 3745 | return cn | |
| 3792 | return ro | |
| 3746 | 3793 | case "@keet/index-message": |
| 3747 | return an | |
| 3794 | return ao | |
| 3748 | 3795 | case "@keet/full-index-message": |
| 3749 | return un | |
| 3796 | return uo | |
| 3750 | 3797 | case "@keet/message-status": |
| 3751 | return ln | |
| 3798 | return lo | |
| 3752 | 3799 | case "@keet/message-index-id": |
| 3753 | return fn | |
| 3800 | return fo | |
| 3754 | 3801 | case "@keet/thread": |
| 3755 | return yn | |
| 3802 | return yo | |
| 3756 | 3803 | case "@keet/chat-message-record": |
| 3757 | return vn | |
| 3804 | return vo | |
| 3758 | 3805 | case "@keet/full-chat-message-record": |
| 3759 | return wn | |
| 3806 | return wo | |
| 3760 | 3807 | case "@keet/add-chat-message-operation": |
| 3761 | return An | |
| 3808 | return Ao | |
| 3762 | 3809 | case "@keet/remove-chat-message-operation": |
| 3763 | return Dn | |
| 3810 | return Do | |
| 3764 | 3811 | case "@keet/update-chat-message-operation": |
| 3765 | return Mn | |
| 3812 | return Co | |
| 3766 | 3813 | case "@keet/pin-chat-message-operation": |
| 3767 | return qn | |
| 3814 | return qo | |
| 3768 | 3815 | case "@keet/reaction": |
| 3769 | return Fn | |
| 3816 | return Fo | |
| 3770 | 3817 | case "@keet/reactions-summary": |
| 3771 | return En | |
| 3818 | return Eo | |
| 3772 | 3819 | case "@keet/reactions-digest": |
| 3773 | return In | |
| 3820 | return Io | |
| 3774 | 3821 | case "@keet/add-reaction-operation": |
| 3775 | return jn | |
| 3822 | return jo | |
| 3776 | 3823 | case "@keet/remove-reaction-operation": |
| 3777 | return Jn | |
| 3824 | return Oo | |
| 3778 | 3825 | case "@keet/update-room-config-operation": |
| 3779 | return Hn | |
| 3826 | return Ho | |
| 3780 | 3827 | case "@keet/group-member": |
| 3781 | return zn | |
| 3828 | return zo | |
| 3782 | 3829 | case "@keet/user-registry-info": |
| 3783 | return Gn | |
| 3830 | return Go | |
| 3784 | 3831 | case "@keet/room-identity": |
| 3785 | return Wn | |
| 3832 | return Wo | |
| 3786 | 3833 | case "@keet/genesis-operation": |
| 3787 | return oo | |
| 3834 | return on | |
| 3788 | 3835 | case "@keet/upgrade-operation": |
| 3789 | return ro | |
| 3836 | return cn | |
| 3790 | 3837 | case "@keet/update-system-settings-operation": |
| 3791 | return ao | |
| 3838 | return an | |
| 3792 | 3839 | case "@keet-private-id/contact": |
| 3793 | return so | |
| 3840 | return sn | |
| 3794 | 3841 | case "@keet-private-id/v3-room-migration-info": |
| 3795 | return po | |
| 3842 | return pn | |
| 3796 | 3843 | case "@keet-private-id/run-v3-migration-operation": |
| 3797 | return fo | |
| 3844 | return fn | |
| 3798 | 3845 | case "@keet-private-id/update-identity-operation": |
| 3799 | return yo | |
| 3846 | return yn | |
| 3800 | 3847 | case "@keet-private-id/counters": |
| 3801 | return xo | |
| 3848 | return xn | |
| 3802 | 3849 | case "@keet-private-id/stats": |
| 3803 | return bo | |
| 3850 | return bn | |
| 3804 | 3851 | case "@keet-private-id/add-entropy-operation": |
| 3805 | return ko | |
| 3852 | return kn | |
| 3806 | 3853 | case "@keet-private-id/pending-invitation-identity": |
| 3807 | return vo | |
| 3854 | return vn | |
| 3808 | 3855 | case "@keet-private-id/pending-invitation": |
| 3809 | return ho | |
| 3856 | return hn | |
| 3810 | 3857 | case "@keet-private-id/resolve-pending-invitation-operation": |
| 3811 | return wo | |
| 3858 | return wn | |
| 3812 | 3859 | case "@keet-private-id/add-pending-invitation-operation": |
| 3813 | return Ao | |
| 3860 | return An | |
| 3814 | 3861 | case "@keet-private-id/remove-pending-invitation-operation": |
| 3815 | return Do | |
| 3862 | return Dn | |
| 3816 | 3863 | case "@keet-private-id/identity-swap": |
| 3817 | return So | |
| 3864 | return Mn | |
| 3818 | 3865 | case "@keet-private-id/room-status": |
| 3819 | return Co | |
| 3866 | return Sn | |
| 3820 | 3867 | case "@keet-private-id/room": |
| 3821 | return Fo | |
| 3868 | return Fn | |
| 3822 | 3869 | case "@keet-private-id/add-room-operation": |
| 3823 | return Bo | |
| 3870 | return Bn | |
| 3824 | 3871 | case "@keet-private-id/remove-room-operation": |
| 3825 | return No | |
| 3872 | return Nn | |
| 3826 | 3873 | case "@keet-private-id/update-room-status-operation": |
| 3827 | return Jo | |
| 3874 | return On | |
| 3828 | 3875 | case "@keet-private-id/contact-status": |
| 3829 | return Uo | |
| 3876 | return Jn | |
| 3830 | 3877 | case "@keet-private-id/contact-record": |
| 3831 | return Vo | |
| 3878 | return Vn | |
| 3832 | 3879 | case "@keet-private-id/add-contact-operation": |
| 3833 | return Go | |
| 3880 | return Gn | |
| 3834 | 3881 | case "@keet-private-id/update-contact-status-operation": |
| 3835 | return Wo | |
| 3882 | return Wn | |
| 3836 | 3883 | case "@keet-private-id/remove-contact-operation": |
| 3837 | return Yo | |
| 3884 | return Yn | |
| 3838 | 3885 | case "@keet-private-id/contact-request-status": |
| 3839 | return Zo | |
| 3886 | return Zn | |
| 3840 | 3887 | case "@keet-private-id/contact-request-body": |
| 3841 | 3888 | return ec |
| 3842 | 3889 | case "@keet-private-id/contact-request": |
| 3843 | return nc | |
| 3890 | return oc | |
| 3844 | 3891 | case "@keet-private-id/contact-request-record": |
| 3845 | 3892 | return tc |
| 3846 | 3893 | case "@keet-private-id/add-contact-request-operation": |
| … | … | @@ -3870,9 +3917,9 @@ function ft(e) { |
| 3870 | 3917 | case "@keet/display-type": |
| 3871 | 3918 | return Rc |
| 3872 | 3919 | case "@keet/test-increment-operation": |
| 3873 | return Sc | |
| 3920 | return Mc | |
| 3874 | 3921 | case "@keet/test-collection-record-1": |
| 3875 | return Cc | |
| 3922 | return Sc | |
| 3876 | 3923 | case "@keet/migrate-abi-operation": |
| 3877 | 3924 | return Lc |
| 3878 | 3925 | case "@keet/system-settings-keys": |
| … | … | @@ -3884,7 +3931,7 @@ function ft(e) { |
| 3884 | 3931 | case "@keet-private-id/unreads": |
| 3885 | 3932 | return jc |
| 3886 | 3933 | case "@keet-private-id/add-unreads-key-operation": |
| 3887 | return Jc | |
| 3934 | return Oc | |
| 3888 | 3935 | case "@keet-private-id/remove-unreads-key-operation": |
| 3889 | 3936 | return Vc |
| 3890 | 3937 | case "@keet/label-type": |
| … | … | @@ -3902,9 +3949,9 @@ function ft(e) { |
| 3902 | 3949 | case "@keet/update-read-length-operation": |
| 3903 | 3950 | return dr |
| 3904 | 3951 | case "@keet/read-length": |
| 3905 | return nr | |
| 3906 | case "@keet/tmp-removed-member": | |
| 3907 | 3952 | return or |
| 3953 | case "@keet/tmp-removed-member": | |
| 3954 | return nr | |
| 3908 | 3955 | case "@keet-private-id/settings": |
| 3909 | 3956 | return cr |
| 3910 | 3957 | case "@keet-private-id/user-settings-key": |
| … | … | @@ -3932,7 +3979,7 @@ function ft(e) { |
| 3932 | 3979 | case "@keet/leave-call": |
| 3933 | 3980 | return Dr |
| 3934 | 3981 | case "@keet/end-call": |
| 3935 | return Cr | |
| 3982 | return Sr | |
| 3936 | 3983 | case "@keet/add-call-stream": |
| 3937 | 3984 | return Lr |
| 3938 | 3985 | case "@keet/remove-call-stream": |
| … | … | @@ -3946,35 +3993,37 @@ function ft(e) { |
| 3946 | 3993 | case "@keet/call-stream-record": |
| 3947 | 3994 | return Nr |
| 3948 | 3995 | case "@keet/build-type": |
| 3949 | return Or | |
| 3950 | case "@keet/test-crash-operation": | |
| 3951 | 3996 | return Ur |
| 3997 | case "@keet/test-crash-operation": | |
| 3998 | return Jr | |
| 3952 | 3999 | case "@keet/test-dispatch-error-operation": |
| 3953 | 4000 | return Hr |
| 4001 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 4002 | return Gr | |
| 3954 | 4003 | default: |
| 3955 | 4004 | throw new Error("Encoder not found " + e) |
| 3956 | 4005 | } |
| 3957 | 4006 | } |
| 3958 | function mt(e, d = 20) { | |
| 3959 | const o = ft(e) | |
| 4007 | function xt(e, d = 21) { | |
| 4008 | const n = yt(e) | |
| 3960 | 4009 | return { |
| 3961 | 4010 | preencode(e, c) { |
| 3962 | ;((n = d), o.preencode(e, c)) | |
| 4011 | ;((o = d), n.preencode(e, c)) | |
| 3963 | 4012 | }, |
| 3964 | 4013 | encode(e, c) { |
| 3965 | ;((n = d), o.encode(e, c)) | |
| 4014 | ;((o = d), n.encode(e, c)) | |
| 3966 | 4015 | }, |
| 3967 | decode: (e) => ((n = d), o.decode(e)), | |
| 4016 | decode: (e) => ((o = d), n.decode(e)), | |
| 3968 | 4017 | } |
| 3969 | 4018 | } |
| 3970 | const yt = mt | |
| 4019 | const bt = xt | |
| 3971 | 4020 | module.exports = { |
| 3972 | resolveStruct: yt, | |
| 3973 | getStruct: mt, | |
| 3974 | getEnum: lt, | |
| 3975 | getEncoding: ft, | |
| 3976 | encode: pt, | |
| 3977 | decode: ut, | |
| 3978 | setVersion: st, | |
| 3979 | version: n, | |
| 4021 | resolveStruct: bt, | |
| 4022 | getStruct: xt, | |
| 4023 | getEnum: mt, | |
| 4024 | getEncoding: yt, | |
| 4025 | encode: lt, | |
| 4026 | decode: ft, | |
| 4027 | setVersion: ut, | |
| 4028 | version: o, | |
| 3980 | 4029 | } |
| … | … | @@ -1,87 +1,87 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 20 | |
| 3 | let n = d | |
| 4 | const o = { | |
| 5 | preencode(d, n) { | |
| 6 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.length)) | |
| 2 | d = 21 | |
| 3 | let o = d | |
| 4 | const n = { | |
| 5 | preencode(d, o) { | |
| 6 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.length)) | |
| 7 | 7 | }, |
| 8 | encode(d, n) { | |
| 9 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.length)) | |
| 8 | encode(d, o) { | |
| 9 | ;(e.fixed32.encode(d, o.key), e.uint.encode(d, o.length)) | |
| 10 | 10 | }, |
| 11 | 11 | decode: (d) => ({ key: e.fixed32.decode(d), length: e.uint.decode(d) }), |
| 12 | 12 | }, |
| 13 | 13 | c = { |
| 14 | preencode(d, n) { | |
| 15 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.seq)) | |
| 14 | preencode(d, o) { | |
| 15 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.seq)) | |
| 16 | 16 | }, |
| 17 | encode(d, n) { | |
| 18 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.seq)) | |
| 17 | encode(d, o) { | |
| 18 | ;(e.fixed32.encode(d, o.key), e.uint.encode(d, o.seq)) | |
| 19 | 19 | }, |
| 20 | 20 | decode: (d) => ({ key: e.fixed32.decode(d), seq: e.uint.decode(d) }), |
| 21 | 21 | }, |
| 22 | 22 | r = { |
| 23 | preencode(d, n) { | |
| 24 | ;(e.fixed32.preencode(d, n.publicKey), e.fixed32.preencode(d, n.secretKey)) | |
| 23 | preencode(d, o) { | |
| 24 | ;(e.fixed32.preencode(d, o.publicKey), e.fixed32.preencode(d, o.secretKey)) | |
| 25 | 25 | }, |
| 26 | encode(d, n) { | |
| 27 | ;(e.fixed32.encode(d, n.publicKey), e.fixed32.encode(d, n.secretKey)) | |
| 26 | encode(d, o) { | |
| 27 | ;(e.fixed32.encode(d, o.publicKey), e.fixed32.encode(d, o.secretKey)) | |
| 28 | 28 | }, |
| 29 | 29 | decode: (d) => ({ publicKey: e.fixed32.decode(d), secretKey: e.fixed32.decode(d) }), |
| 30 | 30 | }, |
| 31 | 31 | t = { |
| 32 | preencode(d, n) { | |
| 33 | ;(e.fixed32.preencode(d, n.publicKey), e.fixed64.preencode(d, n.secretKey)) | |
| 32 | preencode(d, o) { | |
| 33 | ;(e.fixed32.preencode(d, o.publicKey), e.fixed64.preencode(d, o.secretKey)) | |
| 34 | 34 | }, |
| 35 | encode(d, n) { | |
| 36 | ;(e.fixed32.encode(d, n.publicKey), e.fixed64.encode(d, n.secretKey)) | |
| 35 | encode(d, o) { | |
| 36 | ;(e.fixed32.encode(d, o.publicKey), e.fixed64.encode(d, o.secretKey)) | |
| 37 | 37 | }, |
| 38 | 38 | decode: (d) => ({ publicKey: e.fixed32.decode(d), secretKey: e.fixed64.decode(d) }), |
| 39 | 39 | }, |
| 40 | 40 | i = { |
| 41 | preencode(d, n) { | |
| 42 | ;(e.fixed32.preencode(d, n.key), | |
| 41 | preencode(d, o) { | |
| 42 | ;(e.fixed32.preencode(d, o.key), | |
| 43 | 43 | d.end++, |
| 44 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), | |
| 45 | n.fastForwardTo && e.fixed32.preencode(d, n.fastForwardTo)) | |
| 44 | o.encryptionKey && e.buffer.preencode(d, o.encryptionKey), | |
| 45 | o.fastForwardTo && e.fixed32.preencode(d, o.fastForwardTo)) | |
| 46 | 46 | }, |
| 47 | encode(d, n) { | |
| 48 | const o = (n.encryptionKey ? 1 : 0) | (n.fastForwardTo ? 2 : 0) | |
| 49 | ;(e.fixed32.encode(d, n.key), | |
| 50 | e.uint.encode(d, o), | |
| 51 | n.encryptionKey && e.buffer.encode(d, n.encryptionKey), | |
| 52 | n.fastForwardTo && e.fixed32.encode(d, n.fastForwardTo)) | |
| 47 | encode(d, o) { | |
| 48 | const n = (o.encryptionKey ? 1 : 0) | (o.fastForwardTo ? 2 : 0) | |
| 49 | ;(e.fixed32.encode(d, o.key), | |
| 50 | e.uint.encode(d, n), | |
| 51 | o.encryptionKey && e.buffer.encode(d, o.encryptionKey), | |
| 52 | o.fastForwardTo && e.fixed32.encode(d, o.fastForwardTo)) | |
| 53 | 53 | }, |
| 54 | 54 | decode(d) { |
| 55 | const n = e.fixed32.decode(d), | |
| 56 | o = e.uint.decode(d) | |
| 55 | const o = e.fixed32.decode(d), | |
| 56 | n = e.uint.decode(d) | |
| 57 | 57 | return { |
| 58 | key: n, | |
| 59 | encryptionKey: 1 & o ? e.buffer.decode(d) : null, | |
| 60 | fastForwardTo: 2 & o ? e.fixed32.decode(d) : null, | |
| 58 | key: o, | |
| 59 | encryptionKey: 1 & n ? e.buffer.decode(d) : null, | |
| 60 | fastForwardTo: 2 & n ? e.fixed32.decode(d) : null, | |
| 61 | 61 | } |
| 62 | 62 | }, |
| 63 | 63 | }, |
| 64 | 64 | a = { |
| 65 | preencode(d, n) { | |
| 66 | e.uint.preencode(d, n.timestamp) | |
| 65 | preencode(d, o) { | |
| 66 | e.uint.preencode(d, o.timestamp) | |
| 67 | 67 | }, |
| 68 | encode(d, n) { | |
| 69 | e.uint.encode(d, n.timestamp) | |
| 68 | encode(d, o) { | |
| 69 | e.uint.encode(d, o.timestamp) | |
| 70 | 70 | }, |
| 71 | 71 | decode: (d) => ({ timestamp: e.uint.decode(d) }), |
| 72 | 72 | }, |
| 73 | 73 | s = { |
| 74 | preencode(d, n) { | |
| 75 | ;(e.uint.preencode(d, n.blockOffset), | |
| 76 | e.uint.preencode(d, n.blockLength), | |
| 77 | e.uint.preencode(d, n.byteOffset), | |
| 78 | e.uint.preencode(d, n.byteLength)) | |
| 74 | preencode(d, o) { | |
| 75 | ;(e.uint.preencode(d, o.blockOffset), | |
| 76 | e.uint.preencode(d, o.blockLength), | |
| 77 | e.uint.preencode(d, o.byteOffset), | |
| 78 | e.uint.preencode(d, o.byteLength)) | |
| 79 | 79 | }, |
| 80 | encode(d, n) { | |
| 81 | ;(e.uint.encode(d, n.blockOffset), | |
| 82 | e.uint.encode(d, n.blockLength), | |
| 83 | e.uint.encode(d, n.byteOffset), | |
| 84 | e.uint.encode(d, n.byteLength)) | |
| 80 | encode(d, o) { | |
| 81 | ;(e.uint.encode(d, o.blockOffset), | |
| 82 | e.uint.encode(d, o.blockLength), | |
| 83 | e.uint.encode(d, o.byteOffset), | |
| 84 | e.uint.encode(d, o.byteLength)) | |
| 85 | 85 | }, |
| 86 | 86 | decode: (d) => ({ |
| 87 | 87 | blockOffset: e.uint.decode(d), |
| … | … | @@ -91,63 +91,63 @@ const o = { |
| 91 | 91 | }), |
| 92 | 92 | }, |
| 93 | 93 | p = { |
| 94 | preencode(d, n) { | |
| 95 | ;(e.uint.preencode(d, n.width), e.uint.preencode(d, n.height)) | |
| 94 | preencode(d, o) { | |
| 95 | ;(e.uint.preencode(d, o.width), e.uint.preencode(d, o.height)) | |
| 96 | 96 | }, |
| 97 | encode(d, n) { | |
| 98 | ;(e.uint.encode(d, n.width), e.uint.encode(d, n.height)) | |
| 97 | encode(d, o) { | |
| 98 | ;(e.uint.encode(d, o.width), e.uint.encode(d, o.height)) | |
| 99 | 99 | }, |
| 100 | 100 | decode: (d) => ({ width: e.uint.decode(d), height: e.uint.decode(d) }), |
| 101 | 101 | }, |
| 102 | 102 | u = e.frame(p), |
| 103 | 103 | l = { |
| 104 | preencode(d, n) { | |
| 104 | preencode(d, o) { | |
| 105 | 105 | ;(d.end++, |
| 106 | n.name && e.string.preencode(d, n.name), | |
| 107 | n.mimetype && e.string.preencode(d, n.mimetype), | |
| 108 | n.dimensions && u.preencode(d, n.dimensions), | |
| 109 | n.userdata && e.buffer.preencode(d, n.userdata), | |
| 110 | n.duration && e.uint.preencode(d, n.duration)) | |
| 106 | o.name && e.string.preencode(d, o.name), | |
| 107 | o.mimetype && e.string.preencode(d, o.mimetype), | |
| 108 | o.dimensions && u.preencode(d, o.dimensions), | |
| 109 | o.userdata && e.buffer.preencode(d, o.userdata), | |
| 110 | o.duration && e.uint.preencode(d, o.duration)) | |
| 111 | 111 | }, |
| 112 | encode(d, n) { | |
| 113 | const o = | |
| 114 | (n.name ? 1 : 0) | | |
| 115 | (n.mimetype ? 2 : 0) | | |
| 116 | (n.dimensions ? 4 : 0) | | |
| 117 | (n.userdata ? 8 : 0) | | |
| 118 | (n.duration ? 16 : 0) | | |
| 119 | (n.isPreview ? 32 : 0) | |
| 120 | ;(e.uint.encode(d, o), | |
| 121 | n.name && e.string.encode(d, n.name), | |
| 122 | n.mimetype && e.string.encode(d, n.mimetype), | |
| 123 | n.dimensions && u.encode(d, n.dimensions), | |
| 124 | n.userdata && e.buffer.encode(d, n.userdata), | |
| 125 | n.duration && e.uint.encode(d, n.duration)) | |
| 112 | encode(d, o) { | |
| 113 | const n = | |
| 114 | (o.name ? 1 : 0) | | |
| 115 | (o.mimetype ? 2 : 0) | | |
| 116 | (o.dimensions ? 4 : 0) | | |
| 117 | (o.userdata ? 8 : 0) | | |
| 118 | (o.duration ? 16 : 0) | | |
| 119 | (o.isPreview ? 32 : 0) | |
| 120 | ;(e.uint.encode(d, n), | |
| 121 | o.name && e.string.encode(d, o.name), | |
| 122 | o.mimetype && e.string.encode(d, o.mimetype), | |
| 123 | o.dimensions && u.encode(d, o.dimensions), | |
| 124 | o.userdata && e.buffer.encode(d, o.userdata), | |
| 125 | o.duration && e.uint.encode(d, o.duration)) | |
| 126 | 126 | }, |
| 127 | 127 | decode(d) { |
| 128 | const n = e.uint.decode(d) | |
| 128 | const o = e.uint.decode(d) | |
| 129 | 129 | return { |
| 130 | name: 1 & n ? e.string.decode(d) : null, | |
| 131 | mimetype: 2 & n ? e.string.decode(d) : null, | |
| 132 | dimensions: 4 & n ? u.decode(d) : null, | |
| 133 | userdata: 8 & n ? e.buffer.decode(d) : null, | |
| 134 | duration: 16 & n ? e.uint.decode(d) : 0, | |
| 135 | isPreview: !!(32 & n), | |
| 130 | name: 1 & o ? e.string.decode(d) : null, | |
| 131 | mimetype: 2 & o ? e.string.decode(d) : null, | |
| 132 | dimensions: 4 & o ? u.decode(d) : null, | |
| 133 | userdata: 8 & o ? e.buffer.decode(d) : null, | |
| 134 | duration: 16 & o ? e.uint.decode(d) : 0, | |
| 135 | isPreview: !!(32 & o), | |
| 136 | 136 | } |
| 137 | 137 | }, |
| 138 | 138 | }, |
| 139 | 139 | f = { |
| 140 | preencode(d, n) { | |
| 141 | ;(e.fixed32.preencode(d, n.key), | |
| 142 | e.string.preencode(d, n.path), | |
| 143 | e.uint.preencode(d, n.version), | |
| 144 | e.uint.preencode(d, n.size)) | |
| 140 | preencode(d, o) { | |
| 141 | ;(e.fixed32.preencode(d, o.key), | |
| 142 | e.string.preencode(d, o.path), | |
| 143 | e.uint.preencode(d, o.version), | |
| 144 | e.uint.preencode(d, o.size)) | |
| 145 | 145 | }, |
| 146 | encode(d, n) { | |
| 147 | ;(e.fixed32.encode(d, n.key), | |
| 148 | e.string.encode(d, n.path), | |
| 149 | e.uint.encode(d, n.version), | |
| 150 | e.uint.encode(d, n.size)) | |
| 146 | encode(d, o) { | |
| 147 | ;(e.fixed32.encode(d, o.key), | |
| 148 | e.string.encode(d, o.path), | |
| 149 | e.uint.encode(d, o.version), | |
| 150 | e.uint.encode(d, o.size)) | |
| 151 | 151 | }, |
| 152 | 152 | decode: (d) => ({ |
| 153 | 153 | key: e.fixed32.decode(d), |
| … | … | @@ -157,72 +157,72 @@ const o = { |
| 157 | 157 | }), |
| 158 | 158 | }, |
| 159 | 159 | m = { |
| 160 | preencode(d, n) { | |
| 161 | ;(e.fixed32.preencode(d, n.key), s.preencode(d, n.blob)) | |
| 160 | preencode(d, o) { | |
| 161 | ;(e.fixed32.preencode(d, o.key), s.preencode(d, o.blob)) | |
| 162 | 162 | }, |
| 163 | encode(d, n) { | |
| 164 | ;(e.fixed32.encode(d, n.key), s.encode(d, n.blob)) | |
| 163 | encode(d, o) { | |
| 164 | ;(e.fixed32.encode(d, o.key), s.encode(d, o.blob)) | |
| 165 | 165 | }, |
| 166 | 166 | decode: (d) => ({ key: e.fixed32.decode(d), blob: s.decode(d) }), |
| 167 | 167 | }, |
| 168 | 168 | y = e.frame(m), |
| 169 | 169 | x = e.frame(f), |
| 170 | 170 | b = { |
| 171 | preencode(d, n) { | |
| 171 | preencode(d, o) { | |
| 172 | 172 | ;(d.end++, |
| 173 | n.inlined && e.buffer.preencode(d, n.inlined), | |
| 174 | n.blob && s.preencode(d, n.blob), | |
| 175 | n.externalBlob && y.preencode(d, n.externalBlob), | |
| 176 | n.externalDrive && x.preencode(d, n.externalDrive)) | |
| 173 | o.inlined && e.buffer.preencode(d, o.inlined), | |
| 174 | o.blob && s.preencode(d, o.blob), | |
| 175 | o.externalBlob && y.preencode(d, o.externalBlob), | |
| 176 | o.externalDrive && x.preencode(d, o.externalDrive)) | |
| 177 | 177 | }, |
| 178 | encode(d, n) { | |
| 179 | const o = | |
| 180 | (n.inlined ? 1 : 0) | | |
| 181 | (n.blob ? 2 : 0) | | |
| 182 | (n.externalBlob ? 4 : 0) | | |
| 183 | (n.externalDrive ? 8 : 0) | |
| 184 | ;(e.uint.encode(d, o), | |
| 185 | n.inlined && e.buffer.encode(d, n.inlined), | |
| 186 | n.blob && s.encode(d, n.blob), | |
| 187 | n.externalBlob && y.encode(d, n.externalBlob), | |
| 188 | n.externalDrive && x.encode(d, n.externalDrive)) | |
| 178 | encode(d, o) { | |
| 179 | const n = | |
| 180 | (o.inlined ? 1 : 0) | | |
| 181 | (o.blob ? 2 : 0) | | |
| 182 | (o.externalBlob ? 4 : 0) | | |
| 183 | (o.externalDrive ? 8 : 0) | |
| 184 | ;(e.uint.encode(d, n), | |
| 185 | o.inlined && e.buffer.encode(d, o.inlined), | |
| 186 | o.blob && s.encode(d, o.blob), | |
| 187 | o.externalBlob && y.encode(d, o.externalBlob), | |
| 188 | o.externalDrive && x.encode(d, o.externalDrive)) | |
| 189 | 189 | }, |
| 190 | 190 | decode(d) { |
| 191 | const n = e.uint.decode(d) | |
| 191 | const o = e.uint.decode(d) | |
| 192 | 192 | return { |
| 193 | inlined: 1 & n ? e.buffer.decode(d) : null, | |
| 194 | blob: 2 & n ? s.decode(d) : null, | |
| 195 | externalBlob: 4 & n ? y.decode(d) : null, | |
| 196 | externalDrive: 8 & n ? x.decode(d) : null, | |
| 193 | inlined: 1 & o ? e.buffer.decode(d) : null, | |
| 194 | blob: 2 & o ? s.decode(d) : null, | |
| 195 | externalBlob: 4 & o ? y.decode(d) : null, | |
| 196 | externalDrive: 8 & o ? x.decode(d) : null, | |
| 197 | 197 | } |
| 198 | 198 | }, |
| 199 | 199 | }, |
| 200 | 200 | k = e.frame(b), |
| 201 | 201 | v = e.frame(l), |
| 202 | 202 | g = { |
| 203 | preencode(d, n) { | |
| 204 | ;(k.preencode(d, n.pointer), | |
| 203 | preencode(d, o) { | |
| 204 | ;(k.preencode(d, o.pointer), | |
| 205 | 205 | d.end++, |
| 206 | n.metadata && v.preencode(d, n.metadata), | |
| 207 | n.preview && zr.preencode(d, n.preview), | |
| 208 | n.hash && e.fixed32.preencode(d, n.hash)) | |
| 206 | o.metadata && v.preencode(d, o.metadata), | |
| 207 | o.preview && Qr.preencode(d, o.preview), | |
| 208 | o.hash && e.fixed32.preencode(d, o.hash)) | |
| 209 | 209 | }, |
| 210 | encode(d, n) { | |
| 211 | const o = (n.metadata ? 1 : 0) | (n.preview ? 2 : 0) | (n.hash ? 4 : 0) | |
| 212 | ;(k.encode(d, n.pointer), | |
| 213 | e.uint.encode(d, o), | |
| 214 | n.metadata && v.encode(d, n.metadata), | |
| 215 | n.preview && zr.encode(d, n.preview), | |
| 216 | n.hash && e.fixed32.encode(d, n.hash)) | |
| 210 | encode(d, o) { | |
| 211 | const n = (o.metadata ? 1 : 0) | (o.preview ? 2 : 0) | (o.hash ? 4 : 0) | |
| 212 | ;(k.encode(d, o.pointer), | |
| 213 | e.uint.encode(d, n), | |
| 214 | o.metadata && v.encode(d, o.metadata), | |
| 215 | o.preview && Qr.encode(d, o.preview), | |
| 216 | o.hash && e.fixed32.encode(d, o.hash)) | |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| 219 | const n = k.decode(d), | |
| 220 | o = e.uint.decode(d) | |
| 219 | const o = k.decode(d), | |
| 220 | n = e.uint.decode(d) | |
| 221 | 221 | return { |
| 222 | pointer: n, | |
| 223 | metadata: 1 & o ? v.decode(d) : null, | |
| 224 | preview: 2 & o ? zr.decode(d) : null, | |
| 225 | hash: 4 & o ? e.fixed32.decode(d) : null, | |
| 222 | pointer: o, | |
| 223 | metadata: 1 & n ? v.decode(d) : null, | |
| 224 | preview: 2 & n ? Qr.decode(d) : null, | |
| 225 | hash: 4 & n ? e.fixed32.decode(d) : null, | |
| 226 | 226 | } |
| 227 | 227 | }, |
| 228 | 228 | }, |
| … | … | @@ -236,19 +236,19 @@ const o = { |
| 236 | 236 | d.medium && K.preencode(e, d.medium), |
| 237 | 237 | d.large && w.preencode(e, d.large)) |
| 238 | 238 | }, |
| 239 | encode(d, n) { | |
| 240 | const o = (n.small ? 1 : 0) | (n.medium ? 2 : 0) | (n.large ? 4 : 0) | |
| 241 | ;(e.uint.encode(d, o), | |
| 242 | n.small && h.encode(d, n.small), | |
| 243 | n.medium && K.encode(d, n.medium), | |
| 244 | n.large && w.encode(d, n.large)) | |
| 239 | encode(d, o) { | |
| 240 | const n = (o.small ? 1 : 0) | (o.medium ? 2 : 0) | (o.large ? 4 : 0) | |
| 241 | ;(e.uint.encode(d, n), | |
| 242 | o.small && h.encode(d, o.small), | |
| 243 | o.medium && K.encode(d, o.medium), | |
| 244 | o.large && w.encode(d, o.large)) | |
| 245 | 245 | }, |
| 246 | 246 | decode(d) { |
| 247 | const n = e.uint.decode(d) | |
| 247 | const o = e.uint.decode(d) | |
| 248 | 248 | return { |
| 249 | small: 1 & n ? h.decode(d) : null, | |
| 250 | medium: 2 & n ? K.decode(d) : null, | |
| 251 | large: 4 & n ? w.decode(d) : null, | |
| 249 | small: 1 & o ? h.decode(d) : null, | |
| 250 | medium: 2 & o ? K.decode(d) : null, | |
| 251 | large: 4 & o ? w.decode(d) : null, | |
| 252 | 252 | } |
| 253 | 253 | }, |
| 254 | 254 | }, |
| … | … | @@ -256,136 +256,136 @@ const o = { |
| 256 | 256 | preencode(e, d) { |
| 257 | 257 | e.end++ |
| 258 | 258 | }, |
| 259 | encode(d, n) { | |
| 260 | const o = n.isDeleted ? 1 : 0 | |
| 261 | e.uint.encode(d, o) | |
| 259 | encode(d, o) { | |
| 260 | const n = o.isDeleted ? 1 : 0 | |
| 261 | e.uint.encode(d, n) | |
| 262 | 262 | }, |
| 263 | 263 | decode: (d) => ({ isDeleted: !!(1 & e.uint.decode(d)) }), |
| 264 | 264 | }, |
| 265 | 265 | A = e.frame(P), |
| 266 | 266 | R = h, |
| 267 | 267 | D = { |
| 268 | preencode(d, o) { | |
| 269 | ;(e.uint.preencode(d, o.id), | |
| 270 | c.preencode(d, o.oplog), | |
| 271 | A.preencode(d, o.status), | |
| 272 | R.preencode(d, o.file), | |
| 268 | preencode(d, n) { | |
| 269 | ;(e.uint.preencode(d, n.id), | |
| 270 | c.preencode(d, n.oplog), | |
| 271 | A.preencode(d, n.status), | |
| 272 | R.preencode(d, n.file), | |
| 273 | 273 | d.end++, |
| 274 | n >= 14 && o.version && e.uint.preencode(d, o.version)) | |
| 274 | o >= 14 && n.version && e.uint.preencode(d, n.version)) | |
| 275 | 275 | }, |
| 276 | encode(d, o) { | |
| 277 | const r = n >= 14 && o.version ? 1 : 0 | |
| 278 | ;(e.uint.encode(d, o.id), | |
| 279 | c.encode(d, o.oplog), | |
| 280 | A.encode(d, o.status), | |
| 281 | R.encode(d, o.file), | |
| 276 | encode(d, n) { | |
| 277 | const r = o >= 14 && n.version ? 1 : 0 | |
| 278 | ;(e.uint.encode(d, n.id), | |
| 279 | c.encode(d, n.oplog), | |
| 280 | A.encode(d, n.status), | |
| 281 | R.encode(d, n.file), | |
| 282 | 282 | e.uint.encode(d, r), |
| 283 | n >= 14 && o.version && e.uint.encode(d, o.version)) | |
| 283 | o >= 14 && n.version && e.uint.encode(d, n.version)) | |
| 284 | 284 | }, |
| 285 | 285 | decode(d) { |
| 286 | const o = e.uint.decode(d), | |
| 286 | const n = e.uint.decode(d), | |
| 287 | 287 | r = c.decode(d), |
| 288 | 288 | t = A.decode(d), |
| 289 | 289 | i = R.decode(d), |
| 290 | 290 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 291 | 291 | return { |
| 292 | id: o, | |
| 292 | id: n, | |
| 293 | 293 | oplog: r, |
| 294 | 294 | status: t, |
| 295 | 295 | file: i, |
| 296 | version: n >= 14 && 1 & a ? e.uint.decode(d) : 0, | |
| 296 | version: o >= 14 && 1 & a ? e.uint.decode(d) : 0, | |
| 297 | 297 | } |
| 298 | 298 | }, |
| 299 | 299 | }, |
| 300 | S = { | |
| 300 | M = { | |
| 301 | 301 | preencode(e, d) { |
| 302 | 302 | e.end++ |
| 303 | 303 | }, |
| 304 | encode(d, n) { | |
| 305 | const o = (n.isActive ? 1 : 0) | (n.isIndexing ? 2 : 0) | |
| 306 | e.uint.encode(d, o) | |
| 304 | encode(d, o) { | |
| 305 | const n = (o.isActive ? 1 : 0) | (o.isIndexing ? 2 : 0) | |
| 306 | e.uint.encode(d, n) | |
| 307 | 307 | }, |
| 308 | 308 | decode(d) { |
| 309 | const n = e.uint.decode(d) | |
| 310 | return { isActive: !!(1 & n), isIndexing: !!(2 & n) } | |
| 309 | const o = e.uint.decode(d) | |
| 310 | return { isActive: !!(1 & o), isIndexing: !!(2 & o) } | |
| 311 | 311 | }, |
| 312 | 312 | }, |
| 313 | C = { | |
| 314 | preencode(d, o) { | |
| 313 | S = { | |
| 314 | preencode(d, n) { | |
| 315 | 315 | const c = |
| 316 | (o.isAdmin ? 1 : 0) | | |
| 317 | (o.isModerator ? 2 : 0) | | |
| 318 | (o.isPending ? 4 : 0) | | |
| 319 | (o.isActive ? 8 : 0) | | |
| 320 | (o.isMuted ? 16 : 0) | | |
| 321 | (o.isBanned ? 32 : 0) | | |
| 322 | (o.isShadowBanned ? 64 : 0) | | |
| 323 | (n >= 13 && o.isRemoved ? 128 : 0) | |
| 316 | (n.isAdmin ? 1 : 0) | | |
| 317 | (n.isModerator ? 2 : 0) | | |
| 318 | (n.isPending ? 4 : 0) | | |
| 319 | (n.isActive ? 8 : 0) | | |
| 320 | (n.isMuted ? 16 : 0) | | |
| 321 | (n.isBanned ? 32 : 0) | | |
| 322 | (n.isShadowBanned ? 64 : 0) | | |
| 323 | (o >= 13 && n.isRemoved ? 128 : 0) | |
| 324 | 324 | e.uint.preencode(d, c) |
| 325 | 325 | }, |
| 326 | encode(d, o) { | |
| 326 | encode(d, n) { | |
| 327 | 327 | const c = |
| 328 | (o.isAdmin ? 1 : 0) | | |
| 329 | (o.isModerator ? 2 : 0) | | |
| 330 | (o.isPending ? 4 : 0) | | |
| 331 | (o.isActive ? 8 : 0) | | |
| 332 | (o.isMuted ? 16 : 0) | | |
| 333 | (o.isBanned ? 32 : 0) | | |
| 334 | (o.isShadowBanned ? 64 : 0) | | |
| 335 | (n >= 13 && o.isRemoved ? 128 : 0) | |
| 328 | (n.isAdmin ? 1 : 0) | | |
| 329 | (n.isModerator ? 2 : 0) | | |
| 330 | (n.isPending ? 4 : 0) | | |
| 331 | (n.isActive ? 8 : 0) | | |
| 332 | (n.isMuted ? 16 : 0) | | |
| 333 | (n.isBanned ? 32 : 0) | | |
| 334 | (n.isShadowBanned ? 64 : 0) | | |
| 335 | (o >= 13 && n.isRemoved ? 128 : 0) | |
| 336 | 336 | e.uint.encode(d, c) |
| 337 | 337 | }, |
| 338 | 338 | decode(d) { |
| 339 | const o = e.uint.decode(d) | |
| 339 | const n = e.uint.decode(d) | |
| 340 | 340 | return { |
| 341 | isAdmin: !!(1 & o), | |
| 342 | isModerator: !!(2 & o), | |
| 343 | isPending: !!(4 & o), | |
| 344 | isActive: !!(8 & o), | |
| 345 | isMuted: !!(16 & o), | |
| 346 | isBanned: !!(32 & o), | |
| 347 | isShadowBanned: !!(64 & o), | |
| 348 | isRemoved: n >= 13 && !!(128 & o), | |
| 341 | isAdmin: !!(1 & n), | |
| 342 | isModerator: !!(2 & n), | |
| 343 | isPending: !!(4 & n), | |
| 344 | isActive: !!(8 & n), | |
| 345 | isMuted: !!(16 & n), | |
| 346 | isBanned: !!(32 & n), | |
| 347 | isShadowBanned: !!(64 & n), | |
| 348 | isRemoved: o >= 13 && !!(128 & n), | |
| 349 | 349 | } |
| 350 | 350 | }, |
| 351 | 351 | }, |
| 352 | M = { | |
| 352 | C = { | |
| 353 | 353 | preencode(e, d) { |
| 354 | 354 | e.end++ |
| 355 | 355 | }, |
| 356 | encode(d, n) { | |
| 357 | const o = (n.isMuted ? 1 : 0) | (n.isBanned ? 2 : 0) | (n.isShadowBanned ? 4 : 0) | |
| 358 | e.uint.encode(d, o) | |
| 356 | encode(d, o) { | |
| 357 | const n = (o.isMuted ? 1 : 0) | (o.isBanned ? 2 : 0) | (o.isShadowBanned ? 4 : 0) | |
| 358 | e.uint.encode(d, n) | |
| 359 | 359 | }, |
| 360 | 360 | decode(d) { |
| 361 | const n = e.uint.decode(d) | |
| 362 | return { isMuted: !!(1 & n), isBanned: !!(2 & n), isShadowBanned: !!(4 & n) } | |
| 361 | const o = e.uint.decode(d) | |
| 362 | return { isMuted: !!(1 & o), isBanned: !!(2 & o), isShadowBanned: !!(4 & o) } | |
| 363 | 363 | }, |
| 364 | 364 | }, |
| 365 | 365 | L = { |
| 366 | preencode(d, n) { | |
| 367 | e.uint.preencode(d, n.version) | |
| 366 | preencode(d, o) { | |
| 367 | e.uint.preencode(d, o.version) | |
| 368 | 368 | }, |
| 369 | encode(d, n) { | |
| 370 | e.uint.encode(d, n.version) | |
| 369 | encode(d, o) { | |
| 370 | e.uint.encode(d, o.version) | |
| 371 | 371 | }, |
| 372 | 372 | decode: (d) => ({ version: e.uint.decode(d) }), |
| 373 | 373 | }, |
| 374 | 374 | q = { |
| 375 | preencode(d, n) { | |
| 376 | ;(e.uint.preencode(d, n.total), e.uint.preencode(d, n.active)) | |
| 375 | preencode(d, o) { | |
| 376 | ;(e.uint.preencode(d, o.total), e.uint.preencode(d, o.active)) | |
| 377 | 377 | }, |
| 378 | encode(d, n) { | |
| 379 | ;(e.uint.encode(d, n.total), e.uint.encode(d, n.active)) | |
| 378 | encode(d, o) { | |
| 379 | ;(e.uint.encode(d, o.total), e.uint.encode(d, o.active)) | |
| 380 | 380 | }, |
| 381 | 381 | decode: (d) => ({ total: e.uint.decode(d), active: e.uint.decode(d) }), |
| 382 | 382 | }, |
| 383 | 383 | F = { |
| 384 | preencode(d, n) { | |
| 385 | ;(e.uint.preencode(d, n.total), e.uint.preencode(d, n.active), e.uint.preencode(d, n.pending)) | |
| 384 | preencode(d, o) { | |
| 385 | ;(e.uint.preencode(d, o.total), e.uint.preencode(d, o.active), e.uint.preencode(d, o.pending)) | |
| 386 | 386 | }, |
| 387 | encode(d, n) { | |
| 388 | ;(e.uint.encode(d, n.total), e.uint.encode(d, n.active), e.uint.encode(d, n.pending)) | |
| 387 | encode(d, o) { | |
| 388 | ;(e.uint.encode(d, o.total), e.uint.encode(d, o.active), e.uint.encode(d, o.pending)) | |
| 389 | 389 | }, |
| 390 | 390 | decode: (d) => ({ |
| 391 | 391 | total: e.uint.decode(d), |
| … | … | @@ -394,157 +394,157 @@ const o = { |
| 394 | 394 | }), |
| 395 | 395 | }, |
| 396 | 396 | E = { |
| 397 | preencode(d, o) { | |
| 398 | ;(e.uint.preencode(d, o.clock), | |
| 399 | e.uint.preencode(d, o.pinned), | |
| 400 | e.uint.preencode(d, o.threads), | |
| 401 | e.uint.preencode(d, o.timestamp), | |
| 397 | preencode(d, n) { | |
| 398 | ;(e.uint.preencode(d, n.clock), | |
| 399 | e.uint.preencode(d, n.pinned), | |
| 400 | e.uint.preencode(d, n.threads), | |
| 401 | e.uint.preencode(d, n.timestamp), | |
| 402 | 402 | d.end++, |
| 403 | n >= 15 && o.flagsClock && e.uint.preencode(d, o.flagsClock)) | |
| 403 | o >= 15 && n.flagsClock && e.uint.preencode(d, n.flagsClock)) | |
| 404 | 404 | }, |
| 405 | encode(d, o) { | |
| 406 | const c = n >= 15 && o.flagsClock ? 1 : 0 | |
| 407 | ;(e.uint.encode(d, o.clock), | |
| 408 | e.uint.encode(d, o.pinned), | |
| 409 | e.uint.encode(d, o.threads), | |
| 410 | e.uint.encode(d, o.timestamp), | |
| 405 | encode(d, n) { | |
| 406 | const c = o >= 15 && n.flagsClock ? 1 : 0 | |
| 407 | ;(e.uint.encode(d, n.clock), | |
| 408 | e.uint.encode(d, n.pinned), | |
| 409 | e.uint.encode(d, n.threads), | |
| 410 | e.uint.encode(d, n.timestamp), | |
| 411 | 411 | e.uint.encode(d, c), |
| 412 | n >= 15 && o.flagsClock && e.uint.encode(d, o.flagsClock)) | |
| 412 | o >= 15 && n.flagsClock && e.uint.encode(d, n.flagsClock)) | |
| 413 | 413 | }, |
| 414 | 414 | decode(d) { |
| 415 | const o = e.uint.decode(d), | |
| 415 | const n = e.uint.decode(d), | |
| 416 | 416 | c = e.uint.decode(d), |
| 417 | 417 | r = e.uint.decode(d), |
| 418 | 418 | t = e.uint.decode(d), |
| 419 | 419 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 420 | 420 | return { |
| 421 | clock: o, | |
| 421 | clock: n, | |
| 422 | 422 | pinned: c, |
| 423 | 423 | threads: r, |
| 424 | 424 | timestamp: t, |
| 425 | flagsClock: n >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 425 | flagsClock: o >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 426 | 426 | } |
| 427 | 427 | }, |
| 428 | 428 | }, |
| 429 | 429 | B = { |
| 430 | preencode(d, n) { | |
| 431 | e.uint.preencode(d, n.clock) | |
| 430 | preencode(d, o) { | |
| 431 | e.uint.preencode(d, o.clock) | |
| 432 | 432 | }, |
| 433 | encode(d, n) { | |
| 434 | e.uint.encode(d, n.clock) | |
| 433 | encode(d, o) { | |
| 434 | e.uint.encode(d, o.clock) | |
| 435 | 435 | }, |
| 436 | 436 | decode: (d) => ({ clock: e.uint.decode(d) }), |
| 437 | 437 | }, |
| 438 | 438 | I = e.frame(q), |
| 439 | 439 | N = e.frame(F), |
| 440 | 440 | j = e.frame(E), |
| 441 | O = e.frame(B), | |
| 442 | J = { | |
| 441 | U = e.frame(B), | |
| 442 | O = { | |
| 443 | 443 | preencode(e, d) { |
| 444 | 444 | ;(I.preencode(e, d.devices), |
| 445 | 445 | N.preencode(e, d.members), |
| 446 | 446 | j.preencode(e, d.chat), |
| 447 | O.preencode(e, d.files)) | |
| 447 | U.preencode(e, d.files)) | |
| 448 | 448 | }, |
| 449 | 449 | encode(e, d) { |
| 450 | ;(I.encode(e, d.devices), N.encode(e, d.members), j.encode(e, d.chat), O.encode(e, d.files)) | |
| 450 | ;(I.encode(e, d.devices), N.encode(e, d.members), j.encode(e, d.chat), U.encode(e, d.files)) | |
| 451 | 451 | }, |
| 452 | 452 | decode: (e) => ({ |
| 453 | 453 | devices: I.decode(e), |
| 454 | 454 | members: N.decode(e), |
| 455 | 455 | chat: j.decode(e), |
| 456 | files: O.decode(e), | |
| 456 | files: U.decode(e), | |
| 457 | 457 | }), |
| 458 | 458 | }, |
| 459 | U = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 459 | J = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 460 | 460 | V = { |
| 461 | 461 | preencode(e, d) { |
| 462 | 462 | e.end++ |
| 463 | 463 | }, |
| 464 | encode(d, n) { | |
| 465 | if (n > 3) throw new Error("Unknown enum") | |
| 466 | e.uint.encode(d, n) | |
| 464 | encode(d, o) { | |
| 465 | if (o > 3) throw new Error("Unknown enum") | |
| 466 | e.uint.encode(d, o) | |
| 467 | 467 | }, |
| 468 | 468 | decode: (d) => e.uint.decode(d), |
| 469 | 469 | }, |
| 470 | 470 | H = { |
| 471 | preencode(d, o) { | |
| 471 | preencode(d, n) { | |
| 472 | 472 | const c = |
| 473 | (o.roomType ? 1 : 0) | | |
| 474 | (o.isExperimental ? 2 : 0) | | |
| 475 | (o.isJoiningDisabled ? 4 : 0) | | |
| 476 | (o.isAppendingDisabled ? 8 : 0) | | |
| 477 | (o.isCallingDisabled ? 16 : 0) | | |
| 478 | (o.isMembershipEventsDisabled ? 32 : 0) | | |
| 479 | (n >= 19 && o.isAttachmentsDisabled ? 64 : 0) | | |
| 480 | (n >= 19 && o.isLinksDisabled ? 128 : 0) | | |
| 481 | (n >= 20 && o.buildType ? 256 : 0) | |
| 473 | (n.roomType ? 1 : 0) | | |
| 474 | (n.isExperimental ? 2 : 0) | | |
| 475 | (n.isJoiningDisabled ? 4 : 0) | | |
| 476 | (n.isAppendingDisabled ? 8 : 0) | | |
| 477 | (n.isCallingDisabled ? 16 : 0) | | |
| 478 | (n.isMembershipEventsDisabled ? 32 : 0) | | |
| 479 | (o >= 19 && n.isAttachmentsDisabled ? 64 : 0) | | |
| 480 | (o >= 19 && n.isLinksDisabled ? 128 : 0) | | |
| 481 | (o >= 20 && n.buildType ? 256 : 0) | |
| 482 | 482 | ;(e.uint.preencode(d, c), |
| 483 | o.roomType && V.preencode(d, o.roomType), | |
| 484 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 483 | n.roomType && V.preencode(d, n.roomType), | |
| 484 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 485 | 485 | }, |
| 486 | encode(d, o) { | |
| 486 | encode(d, n) { | |
| 487 | 487 | const c = |
| 488 | (o.roomType ? 1 : 0) | | |
| 489 | (o.isExperimental ? 2 : 0) | | |
| 490 | (o.isJoiningDisabled ? 4 : 0) | | |
| 491 | (o.isAppendingDisabled ? 8 : 0) | | |
| 492 | (o.isCallingDisabled ? 16 : 0) | | |
| 493 | (o.isMembershipEventsDisabled ? 32 : 0) | | |
| 494 | (n >= 19 && o.isAttachmentsDisabled ? 64 : 0) | | |
| 495 | (n >= 19 && o.isLinksDisabled ? 128 : 0) | | |
| 496 | (n >= 20 && o.buildType ? 256 : 0) | |
| 488 | (n.roomType ? 1 : 0) | | |
| 489 | (n.isExperimental ? 2 : 0) | | |
| 490 | (n.isJoiningDisabled ? 4 : 0) | | |
| 491 | (n.isAppendingDisabled ? 8 : 0) | | |
| 492 | (n.isCallingDisabled ? 16 : 0) | | |
| 493 | (n.isMembershipEventsDisabled ? 32 : 0) | | |
| 494 | (o >= 19 && n.isAttachmentsDisabled ? 64 : 0) | | |
| 495 | (o >= 19 && n.isLinksDisabled ? 128 : 0) | | |
| 496 | (o >= 20 && n.buildType ? 256 : 0) | |
| 497 | 497 | ;(e.uint.encode(d, c), |
| 498 | o.roomType && V.encode(d, o.roomType), | |
| 499 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 498 | n.roomType && V.encode(d, n.roomType), | |
| 499 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 500 | 500 | }, |
| 501 | 501 | decode(d) { |
| 502 | const o = e.uint.decode(d) | |
| 502 | const n = e.uint.decode(d) | |
| 503 | 503 | return { |
| 504 | roomType: 1 & o ? V.decode(d) : 0, | |
| 505 | isExperimental: !!(2 & o), | |
| 506 | isJoiningDisabled: !!(4 & o), | |
| 507 | isAppendingDisabled: !!(8 & o), | |
| 508 | isCallingDisabled: !!(16 & o), | |
| 509 | isMembershipEventsDisabled: !!(32 & o), | |
| 510 | isAttachmentsDisabled: n >= 19 && !!(64 & o), | |
| 511 | isLinksDisabled: n >= 19 && !!(128 & o), | |
| 512 | buildType: n >= 20 && 256 & o ? Or.decode(d) : null, | |
| 504 | roomType: 1 & n ? V.decode(d) : 0, | |
| 505 | isExperimental: !!(2 & n), | |
| 506 | isJoiningDisabled: !!(4 & n), | |
| 507 | isAppendingDisabled: !!(8 & n), | |
| 508 | isCallingDisabled: !!(16 & n), | |
| 509 | isMembershipEventsDisabled: !!(32 & n), | |
| 510 | isAttachmentsDisabled: o >= 19 && !!(64 & n), | |
| 511 | isLinksDisabled: o >= 19 && !!(128 & n), | |
| 512 | buildType: o >= 20 && 256 & n ? Ur.decode(d) : null, | |
| 513 | 513 | } |
| 514 | 514 | }, |
| 515 | 515 | }, |
| 516 | 516 | z = e.frame(L), |
| 517 | 517 | G = e.frame(H), |
| 518 | 518 | Q = { |
| 519 | preencode(d, n) { | |
| 520 | ;(z.preencode(d, n.abi), G.preencode(d, n.settings), e.uint.preencode(d, n.creationTime)) | |
| 519 | preencode(d, o) { | |
| 520 | ;(z.preencode(d, o.abi), G.preencode(d, o.settings), e.uint.preencode(d, o.creationTime)) | |
| 521 | 521 | }, |
| 522 | encode(d, n) { | |
| 523 | ;(z.encode(d, n.abi), G.encode(d, n.settings), e.uint.encode(d, n.creationTime)) | |
| 522 | encode(d, o) { | |
| 523 | ;(z.encode(d, o.abi), G.encode(d, o.settings), e.uint.encode(d, o.creationTime)) | |
| 524 | 524 | }, |
| 525 | 525 | decode: (d) => ({ abi: z.decode(d), settings: G.decode(d), creationTime: e.uint.decode(d) }), |
| 526 | 526 | }, |
| 527 | 527 | W = { |
| 528 | preencode(d, n) { | |
| 529 | e.fixed32.preencode(d, n.seed) | |
| 528 | preencode(d, o) { | |
| 529 | e.fixed32.preencode(d, o.seed) | |
| 530 | 530 | }, |
| 531 | encode(d, n) { | |
| 532 | e.fixed32.encode(d, n.seed) | |
| 531 | encode(d, o) { | |
| 532 | e.fixed32.encode(d, o.seed) | |
| 533 | 533 | }, |
| 534 | 534 | decode: (d) => ({ seed: e.fixed32.decode(d) }), |
| 535 | 535 | }, |
| 536 | 536 | X = { |
| 537 | preencode(d, n) { | |
| 538 | ;(r.preencode(d, n.mailboxKeyPair), | |
| 539 | t.preencode(d, n.discoveryKeyPair), | |
| 540 | e.fixed32.preencode(d, n.wakeupTopic), | |
| 541 | e.fixed32.preencode(d, n.swarmTopic)) | |
| 537 | preencode(d, o) { | |
| 538 | ;(r.preencode(d, o.mailboxKeyPair), | |
| 539 | t.preencode(d, o.discoveryKeyPair), | |
| 540 | e.fixed32.preencode(d, o.wakeupTopic), | |
| 541 | e.fixed32.preencode(d, o.swarmTopic)) | |
| 542 | 542 | }, |
| 543 | encode(d, n) { | |
| 544 | ;(r.encode(d, n.mailboxKeyPair), | |
| 545 | t.encode(d, n.discoveryKeyPair), | |
| 546 | e.fixed32.encode(d, n.wakeupTopic), | |
| 547 | e.fixed32.encode(d, n.swarmTopic)) | |
| 543 | encode(d, o) { | |
| 544 | ;(r.encode(d, o.mailboxKeyPair), | |
| 545 | t.encode(d, o.discoveryKeyPair), | |
| 546 | e.fixed32.encode(d, o.wakeupTopic), | |
| 547 | e.fixed32.encode(d, o.swarmTopic)) | |
| 548 | 548 | }, |
| 549 | 549 | decode: (d) => ({ |
| 550 | 550 | mailboxKeyPair: r.decode(d), |
| … | … | @@ -555,45 +555,45 @@ const o = { |
| 555 | 555 | }, |
| 556 | 556 | Y = e.array(e.fixed32), |
| 557 | 557 | Z = { |
| 558 | preencode(d, o) { | |
| 558 | preencode(d, n) { | |
| 559 | 559 | ;(d.end++, |
| 560 | o.title && e.string.preencode(d, o.title), | |
| 561 | o.avatar && Gr.preencode(d, o.avatar), | |
| 562 | o.description && e.string.preencode(d, o.description), | |
| 563 | n >= 11 && o.supportedLanguages && Qr.preencode(d, o.supportedLanguages), | |
| 564 | n >= 13 && o.blindPeers && Y.preencode(d, o.blindPeers)) | |
| 560 | n.title && e.string.preencode(d, n.title), | |
| 561 | n.avatar && Wr.preencode(d, n.avatar), | |
| 562 | n.description && e.string.preencode(d, n.description), | |
| 563 | o >= 11 && n.supportedLanguages && Xr.preencode(d, n.supportedLanguages), | |
| 564 | o >= 13 && n.blindPeers && Y.preencode(d, n.blindPeers)) | |
| 565 | 565 | }, |
| 566 | encode(d, o) { | |
| 566 | encode(d, n) { | |
| 567 | 567 | const c = |
| 568 | (o.title ? 1 : 0) | | |
| 569 | (o.avatar ? 2 : 0) | | |
| 570 | (o.description ? 4 : 0) | | |
| 571 | (n >= 11 && o.supportedLanguages ? 8 : 0) | | |
| 572 | (n >= 13 && o.blindPeers ? 16 : 0) | |
| 568 | (n.title ? 1 : 0) | | |
| 569 | (n.avatar ? 2 : 0) | | |
| 570 | (n.description ? 4 : 0) | | |
| 571 | (o >= 11 && n.supportedLanguages ? 8 : 0) | | |
| 572 | (o >= 13 && n.blindPeers ? 16 : 0) | |
| 573 | 573 | ;(e.uint.encode(d, c), |
| 574 | o.title && e.string.encode(d, o.title), | |
| 575 | o.avatar && Gr.encode(d, o.avatar), | |
| 576 | o.description && e.string.encode(d, o.description), | |
| 577 | n >= 11 && o.supportedLanguages && Qr.encode(d, o.supportedLanguages), | |
| 578 | n >= 13 && o.blindPeers && Y.encode(d, o.blindPeers)) | |
| 574 | n.title && e.string.encode(d, n.title), | |
| 575 | n.avatar && Wr.encode(d, n.avatar), | |
| 576 | n.description && e.string.encode(d, n.description), | |
| 577 | o >= 11 && n.supportedLanguages && Xr.encode(d, n.supportedLanguages), | |
| 578 | o >= 13 && n.blindPeers && Y.encode(d, n.blindPeers)) | |
| 579 | 579 | }, |
| 580 | 580 | decode(d) { |
| 581 | const o = e.uint.decode(d) | |
| 581 | const n = e.uint.decode(d) | |
| 582 | 582 | return { |
| 583 | title: 1 & o ? e.string.decode(d) : null, | |
| 584 | avatar: 2 & o ? Gr.decode(d) : null, | |
| 585 | description: 4 & o ? e.string.decode(d) : null, | |
| 586 | supportedLanguages: n >= 11 && 8 & o ? Qr.decode(d) : null, | |
| 587 | blindPeers: n >= 13 && 16 & o ? Y.decode(d) : null, | |
| 583 | title: 1 & n ? e.string.decode(d) : null, | |
| 584 | avatar: 2 & n ? Wr.decode(d) : null, | |
| 585 | description: 4 & n ? e.string.decode(d) : null, | |
| 586 | supportedLanguages: o >= 11 && 8 & n ? Xr.decode(d) : null, | |
| 587 | blindPeers: o >= 13 && 16 & n ? Y.decode(d) : null, | |
| 588 | 588 | } |
| 589 | 589 | }, |
| 590 | 590 | }, |
| 591 | 591 | $ = { |
| 592 | preencode(d, n) { | |
| 593 | e.fixed32.preencode(d, n.key) | |
| 592 | preencode(d, o) { | |
| 593 | e.fixed32.preencode(d, o.key) | |
| 594 | 594 | }, |
| 595 | encode(d, n) { | |
| 596 | e.fixed32.encode(d, n.key) | |
| 595 | encode(d, o) { | |
| 596 | e.fixed32.encode(d, o.key) | |
| 597 | 597 | }, |
| 598 | 598 | decode: (d) => ({ key: e.fixed32.decode(d) }), |
| 599 | 599 | }, |
| … | … | @@ -608,118 +608,118 @@ const o = { |
| 608 | 608 | }, |
| 609 | 609 | decode: (e) => ({ header: _.decode(e), peer: ee.decode(e) }), |
| 610 | 610 | }, |
| 611 | ne = _, | |
| 612 | oe = { | |
| 613 | preencode(d, n) { | |
| 614 | ;(ne.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 611 | oe = _, | |
| 612 | ne = { | |
| 613 | preencode(d, o) { | |
| 614 | ;(oe.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 615 | 615 | }, |
| 616 | encode(d, n) { | |
| 617 | ;(ne.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 616 | encode(d, o) { | |
| 617 | ;(oe.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 618 | 618 | }, |
| 619 | decode: (d) => ({ header: ne.decode(d), key: e.fixed32.decode(d) }), | |
| 619 | decode: (d) => ({ header: oe.decode(d), key: e.fixed32.decode(d) }), | |
| 620 | 620 | }, |
| 621 | 621 | ce = { |
| 622 | preencode(d, n) { | |
| 623 | ;(e.fixed32.preencode(d, n.memberKey), e.buffer.preencode(d, n.proof)) | |
| 622 | preencode(d, o) { | |
| 623 | ;(e.fixed32.preencode(d, o.memberKey), e.buffer.preencode(d, o.proof)) | |
| 624 | 624 | }, |
| 625 | encode(d, n) { | |
| 626 | ;(e.fixed32.encode(d, n.memberKey), e.buffer.encode(d, n.proof)) | |
| 625 | encode(d, o) { | |
| 626 | ;(e.fixed32.encode(d, o.memberKey), e.buffer.encode(d, o.proof)) | |
| 627 | 627 | }, |
| 628 | 628 | decode: (d) => ({ memberKey: e.fixed32.decode(d), proof: e.buffer.decode(d) }), |
| 629 | 629 | }, |
| 630 | 630 | re = { |
| 631 | preencode(d, n) { | |
| 632 | ;(e.fixed32.preencode(d, n.id), e.buffer.preencode(d, n.response)) | |
| 631 | preencode(d, o) { | |
| 632 | ;(e.fixed32.preencode(d, o.id), e.buffer.preencode(d, o.response)) | |
| 633 | 633 | }, |
| 634 | encode(d, n) { | |
| 635 | ;(e.fixed32.encode(d, n.id), e.buffer.encode(d, n.response)) | |
| 634 | encode(d, o) { | |
| 635 | ;(e.fixed32.encode(d, o.id), e.buffer.encode(d, o.response)) | |
| 636 | 636 | }, |
| 637 | 637 | decode: (d) => ({ id: e.fixed32.decode(d), response: e.buffer.decode(d) }), |
| 638 | 638 | }, |
| 639 | te = e.frame(S), | |
| 639 | te = e.frame(M), | |
| 640 | 640 | ie = e.frame(re), |
| 641 | 641 | ae = { |
| 642 | preencode(d, n) { | |
| 643 | ;(e.fixed32.preencode(d, n.key), | |
| 644 | e.fixed32.preencode(d, n.memberKey), | |
| 645 | te.preencode(d, n.status), | |
| 646 | Wr.preencode(d, n.profile), | |
| 642 | preencode(d, o) { | |
| 643 | ;(e.fixed32.preencode(d, o.key), | |
| 644 | e.fixed32.preencode(d, o.memberKey), | |
| 645 | te.preencode(d, o.status), | |
| 646 | Yr.preencode(d, o.profile), | |
| 647 | 647 | d.end++, |
| 648 | n.invitation && ie.preencode(d, n.invitation)) | |
| 648 | o.invitation && ie.preencode(d, o.invitation)) | |
| 649 | 649 | }, |
| 650 | encode(d, n) { | |
| 651 | const o = n.invitation ? 1 : 0 | |
| 652 | ;(e.fixed32.encode(d, n.key), | |
| 653 | e.fixed32.encode(d, n.memberKey), | |
| 654 | te.encode(d, n.status), | |
| 655 | Wr.encode(d, n.profile), | |
| 656 | e.uint.encode(d, o), | |
| 657 | n.invitation && ie.encode(d, n.invitation)) | |
| 650 | encode(d, o) { | |
| 651 | const n = o.invitation ? 1 : 0 | |
| 652 | ;(e.fixed32.encode(d, o.key), | |
| 653 | e.fixed32.encode(d, o.memberKey), | |
| 654 | te.encode(d, o.status), | |
| 655 | Yr.encode(d, o.profile), | |
| 656 | e.uint.encode(d, n), | |
| 657 | o.invitation && ie.encode(d, o.invitation)) | |
| 658 | 658 | }, |
| 659 | 659 | decode: (d) => ({ |
| 660 | 660 | key: e.fixed32.decode(d), |
| 661 | 661 | memberKey: e.fixed32.decode(d), |
| 662 | 662 | status: te.decode(d), |
| 663 | profile: Wr.decode(d), | |
| 663 | profile: Yr.decode(d), | |
| 664 | 664 | invitation: 1 & e.uint.decode(d) ? ie.decode(d) : null, |
| 665 | 665 | }), |
| 666 | 666 | }, |
| 667 | 667 | se = { |
| 668 | preencode(d, n) { | |
| 669 | ;(e.uint.preencode(d, n.timestamp), | |
| 668 | preencode(d, o) { | |
| 669 | ;(e.uint.preencode(d, o.timestamp), | |
| 670 | 670 | d.end++, |
| 671 | n.mailbox && e.fixed32.preencode(d, n.mailbox), | |
| 672 | n.displayName && e.string.preencode(d, n.displayName), | |
| 673 | n.avatar && Xr.preencode(d, n.avatar), | |
| 674 | n.username && e.string.preencode(d, n.username)) | |
| 671 | o.mailbox && e.fixed32.preencode(d, o.mailbox), | |
| 672 | o.displayName && e.string.preencode(d, o.displayName), | |
| 673 | o.avatar && Zr.preencode(d, o.avatar), | |
| 674 | o.username && e.string.preencode(d, o.username)) | |
| 675 | 675 | }, |
| 676 | encode(d, n) { | |
| 677 | const o = | |
| 678 | (n.mailbox ? 1 : 0) | (n.displayName ? 2 : 0) | (n.avatar ? 4 : 0) | (n.username ? 8 : 0) | |
| 679 | ;(e.uint.encode(d, n.timestamp), | |
| 680 | e.uint.encode(d, o), | |
| 681 | n.mailbox && e.fixed32.encode(d, n.mailbox), | |
| 682 | n.displayName && e.string.encode(d, n.displayName), | |
| 683 | n.avatar && Xr.encode(d, n.avatar), | |
| 684 | n.username && e.string.encode(d, n.username)) | |
| 676 | encode(d, o) { | |
| 677 | const n = | |
| 678 | (o.mailbox ? 1 : 0) | (o.displayName ? 2 : 0) | (o.avatar ? 4 : 0) | (o.username ? 8 : 0) | |
| 679 | ;(e.uint.encode(d, o.timestamp), | |
| 680 | e.uint.encode(d, n), | |
| 681 | o.mailbox && e.fixed32.encode(d, o.mailbox), | |
| 682 | o.displayName && e.string.encode(d, o.displayName), | |
| 683 | o.avatar && Zr.encode(d, o.avatar), | |
| 684 | o.username && e.string.encode(d, o.username)) | |
| 685 | 685 | }, |
| 686 | 686 | decode(d) { |
| 687 | const n = e.uint.decode(d), | |
| 688 | o = e.uint.decode(d) | |
| 687 | const o = e.uint.decode(d), | |
| 688 | n = e.uint.decode(d) | |
| 689 | 689 | return { |
| 690 | timestamp: n, | |
| 691 | mailbox: 1 & o ? e.fixed32.decode(d) : null, | |
| 692 | displayName: 2 & o ? e.string.decode(d) : null, | |
| 693 | avatar: 4 & o ? Xr.decode(d) : null, | |
| 694 | username: 8 & o ? e.string.decode(d) : null, | |
| 690 | timestamp: o, | |
| 691 | mailbox: 1 & n ? e.fixed32.decode(d) : null, | |
| 692 | displayName: 2 & n ? e.string.decode(d) : null, | |
| 693 | avatar: 4 & n ? Zr.decode(d) : null, | |
| 694 | username: 8 & n ? e.string.decode(d) : null, | |
| 695 | 695 | } |
| 696 | 696 | }, |
| 697 | 697 | }, |
| 698 | 698 | pe = { |
| 699 | preencode(d, o) { | |
| 699 | preencode(d, n) { | |
| 700 | 700 | ;(d.end++, |
| 701 | o.swarmKey && e.fixed32.preencode(d, o.swarmKey), | |
| 702 | o.name && e.string.preencode(d, o.name), | |
| 703 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 701 | n.swarmKey && e.fixed32.preencode(d, n.swarmKey), | |
| 702 | n.name && e.string.preencode(d, n.name), | |
| 703 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 704 | 704 | }, |
| 705 | encode(d, o) { | |
| 705 | encode(d, n) { | |
| 706 | 706 | const c = |
| 707 | (o.swarmKey ? 1 : 0) | | |
| 708 | (o.name ? 2 : 0) | | |
| 709 | (o.isMobile ? 4 : 0) | | |
| 710 | (n >= 20 && o.buildType ? 8 : 0) | |
| 707 | (n.swarmKey ? 1 : 0) | | |
| 708 | (n.name ? 2 : 0) | | |
| 709 | (n.isMobile ? 4 : 0) | | |
| 710 | (o >= 20 && n.buildType ? 8 : 0) | |
| 711 | 711 | ;(e.uint.encode(d, c), |
| 712 | o.swarmKey && e.fixed32.encode(d, o.swarmKey), | |
| 713 | o.name && e.string.encode(d, o.name), | |
| 714 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 712 | n.swarmKey && e.fixed32.encode(d, n.swarmKey), | |
| 713 | n.name && e.string.encode(d, n.name), | |
| 714 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 715 | 715 | }, |
| 716 | 716 | decode(d) { |
| 717 | const o = e.uint.decode(d) | |
| 717 | const n = e.uint.decode(d) | |
| 718 | 718 | return { |
| 719 | swarmKey: 1 & o ? e.fixed32.decode(d) : null, | |
| 720 | name: 2 & o ? e.string.decode(d) : null, | |
| 721 | isMobile: !!(4 & o), | |
| 722 | buildType: n >= 20 && 8 & o ? Or.decode(d) : null, | |
| 719 | swarmKey: 1 & n ? e.fixed32.decode(d) : null, | |
| 720 | name: 2 & n ? e.string.decode(d) : null, | |
| 721 | isMobile: !!(4 & n), | |
| 722 | buildType: o >= 20 && 8 & n ? Ur.decode(d) : null, | |
| 723 | 723 | } |
| 724 | 724 | }, |
| 725 | 725 | }, |
| … | … | @@ -735,21 +735,21 @@ const o = { |
| 735 | 735 | }, |
| 736 | 736 | fe = { |
| 737 | 737 | preencode(e, d) { |
| 738 | ;(Yr.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 738 | ;($r.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 739 | 739 | }, |
| 740 | 740 | encode(e, d) { |
| 741 | ;(Yr.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 741 | ;($r.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 742 | 742 | }, |
| 743 | decode: (e) => ({ profile: Yr.decode(e), attestation: ce.decode(e) }), | |
| 743 | decode: (e) => ({ profile: $r.decode(e), attestation: ce.decode(e) }), | |
| 744 | 744 | }, |
| 745 | 745 | me = { |
| 746 | preencode(d, n) { | |
| 747 | ;(e.fixed32.preencode(d, n.id), | |
| 748 | e.buffer.preencode(d, n.data), | |
| 749 | e.buffer.preencode(d, n.signature)) | |
| 746 | preencode(d, o) { | |
| 747 | ;(e.fixed32.preencode(d, o.id), | |
| 748 | e.buffer.preencode(d, o.data), | |
| 749 | e.buffer.preencode(d, o.signature)) | |
| 750 | 750 | }, |
| 751 | encode(d, n) { | |
| 752 | ;(e.fixed32.encode(d, n.id), e.buffer.encode(d, n.data), e.buffer.encode(d, n.signature)) | |
| 751 | encode(d, o) { | |
| 752 | ;(e.fixed32.encode(d, o.id), e.buffer.encode(d, o.data), e.buffer.encode(d, o.signature)) | |
| 753 | 753 | }, |
| 754 | 754 | decode: (d) => ({ |
| 755 | 755 | id: e.fixed32.decode(d), |
| … | … | @@ -758,20 +758,20 @@ const o = { |
| 758 | 758 | }), |
| 759 | 759 | }, |
| 760 | 760 | ye = { |
| 761 | preencode(d, n) { | |
| 762 | e.fixed32.preencode(d, n.devicePublicKey) | |
| 761 | preencode(d, o) { | |
| 762 | e.fixed32.preencode(d, o.devicePublicKey) | |
| 763 | 763 | }, |
| 764 | encode(d, n) { | |
| 765 | e.fixed32.encode(d, n.devicePublicKey) | |
| 764 | encode(d, o) { | |
| 765 | e.fixed32.encode(d, o.devicePublicKey) | |
| 766 | 766 | }, |
| 767 | 767 | decode: (d) => ({ devicePublicKey: e.fixed32.decode(d) }), |
| 768 | 768 | }, |
| 769 | 769 | xe = { |
| 770 | preencode(d, n) { | |
| 771 | ;(ce.preencode(d, n.privateProfileIdentity), e.buffer.preencode(d, n.deviceProof)) | |
| 770 | preencode(d, o) { | |
| 771 | ;(ce.preencode(d, o.privateProfileIdentity), e.buffer.preencode(d, o.deviceProof)) | |
| 772 | 772 | }, |
| 773 | encode(d, n) { | |
| 774 | ;(ce.encode(d, n.privateProfileIdentity), e.buffer.encode(d, n.deviceProof)) | |
| 773 | encode(d, o) { | |
| 774 | ;(ce.encode(d, o.privateProfileIdentity), e.buffer.encode(d, o.deviceProof)) | |
| 775 | 775 | }, |
| 776 | 776 | decode: (d) => ({ privateProfileIdentity: ce.decode(d), deviceProof: e.buffer.decode(d) }), |
| 777 | 777 | }, |
| … | … | @@ -779,22 +779,22 @@ const o = { |
| 779 | 779 | ke = e.frame(le), |
| 780 | 780 | ve = e.frame(ye), |
| 781 | 781 | ge = { |
| 782 | preencode(d, n) { | |
| 783 | ;(e.fixed32.preencode(d, n.deviceKey), | |
| 784 | t.preencode(d, n.keyPair), | |
| 785 | be.preencode(d, n.device), | |
| 786 | ke.preencode(d, n.member), | |
| 782 | preencode(d, o) { | |
| 783 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 784 | t.preencode(d, o.keyPair), | |
| 785 | be.preencode(d, o.device), | |
| 786 | ke.preencode(d, o.member), | |
| 787 | 787 | d.end++, |
| 788 | n.identity && ve.preencode(d, n.identity)) | |
| 788 | o.identity && ve.preencode(d, o.identity)) | |
| 789 | 789 | }, |
| 790 | encode(d, n) { | |
| 791 | const o = n.identity ? 1 : 0 | |
| 792 | ;(e.fixed32.encode(d, n.deviceKey), | |
| 793 | t.encode(d, n.keyPair), | |
| 794 | be.encode(d, n.device), | |
| 795 | ke.encode(d, n.member), | |
| 796 | e.uint.encode(d, o), | |
| 797 | n.identity && ve.encode(d, n.identity)) | |
| 790 | encode(d, o) { | |
| 791 | const n = o.identity ? 1 : 0 | |
| 792 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 793 | t.encode(d, o.keyPair), | |
| 794 | be.encode(d, o.device), | |
| 795 | ke.encode(d, o.member), | |
| 796 | e.uint.encode(d, n), | |
| 797 | o.identity && ve.encode(d, o.identity)) | |
| 798 | 798 | }, |
| 799 | 799 | decode: (d) => ({ |
| 800 | 800 | deviceKey: e.fixed32.decode(d), |
| … | … | @@ -806,13 +806,13 @@ const o = { |
| 806 | 806 | }, |
| 807 | 807 | he = e.frame(ge), |
| 808 | 808 | Ke = { |
| 809 | preencode(d, n) { | |
| 810 | ;(e.fixed32.preencode(d, n.id), | |
| 811 | he.preencode(d, n.request), | |
| 812 | e.buffer.preencode(d, n.signature)) | |
| 809 | preencode(d, o) { | |
| 810 | ;(e.fixed32.preencode(d, o.id), | |
| 811 | he.preencode(d, o.request), | |
| 812 | e.buffer.preencode(d, o.signature)) | |
| 813 | 813 | }, |
| 814 | encode(d, n) { | |
| 815 | ;(e.fixed32.encode(d, n.id), he.encode(d, n.request), e.buffer.encode(d, n.signature)) | |
| 814 | encode(d, o) { | |
| 815 | ;(e.fixed32.encode(d, o.id), he.encode(d, o.request), e.buffer.encode(d, o.signature)) | |
| 816 | 816 | }, |
| 817 | 817 | decode: (d) => ({ |
| 818 | 818 | id: e.fixed32.decode(d), |
| … | … | @@ -826,9 +826,9 @@ const o = { |
| 826 | 826 | preencode(e, d) { |
| 827 | 827 | ;(we.preencode(e, d.device), e.end++, d.member && Te.preencode(e, d.member)) |
| 828 | 828 | }, |
| 829 | encode(d, n) { | |
| 830 | const o = n.member ? 1 : 0 | |
| 831 | ;(we.encode(d, n.device), e.uint.encode(d, o), n.member && Te.encode(d, n.member)) | |
| 829 | encode(d, o) { | |
| 830 | const n = o.member ? 1 : 0 | |
| 831 | ;(we.encode(d, o.device), e.uint.encode(d, n), o.member && Te.encode(d, o.member)) | |
| 832 | 832 | }, |
| 833 | 833 | decode: (d) => ({ device: we.decode(d), member: 1 & e.uint.decode(d) ? Te.decode(d) : null }), |
| 834 | 834 | }, |
| … | … | @@ -840,91 +840,91 @@ const o = { |
| 840 | 840 | d.withInvitation && Ae.preencode(e, d.withInvitation), |
| 841 | 841 | d.withMemberProof && Re.preencode(e, d.withMemberProof)) |
| 842 | 842 | }, |
| 843 | encode(d, n) { | |
| 844 | const o = (n.withInvitation ? 1 : 0) | (n.withMemberProof ? 2 : 0) | |
| 845 | ;(e.uint.encode(d, o), | |
| 846 | n.withInvitation && Ae.encode(d, n.withInvitation), | |
| 847 | n.withMemberProof && Re.encode(d, n.withMemberProof)) | |
| 843 | encode(d, o) { | |
| 844 | const n = (o.withInvitation ? 1 : 0) | (o.withMemberProof ? 2 : 0) | |
| 845 | ;(e.uint.encode(d, n), | |
| 846 | o.withInvitation && Ae.encode(d, o.withInvitation), | |
| 847 | o.withMemberProof && Re.encode(d, o.withMemberProof)) | |
| 848 | 848 | }, |
| 849 | 849 | decode(d) { |
| 850 | const n = e.uint.decode(d) | |
| 850 | const o = e.uint.decode(d) | |
| 851 | 851 | return { |
| 852 | withInvitation: 1 & n ? Ae.decode(d) : null, | |
| 853 | withMemberProof: 2 & n ? Re.decode(d) : null, | |
| 852 | withInvitation: 1 & o ? Ae.decode(d) : null, | |
| 853 | withMemberProof: 2 & o ? Re.decode(d) : null, | |
| 854 | 854 | } |
| 855 | 855 | }, |
| 856 | 856 | }, |
| 857 | Se = e.frame(me), | |
| 858 | Ce = e.frame(xe), | |
| 859 | Me = { | |
| 857 | Me = e.frame(me), | |
| 858 | Se = e.frame(xe), | |
| 859 | Ce = { | |
| 860 | 860 | preencode(e, d) { |
| 861 | ;(Se.preencode(e, d.signedKeys), e.end++, d.identity && Ce.preencode(e, d.identity)) | |
| 861 | ;(Me.preencode(e, d.signedKeys), e.end++, d.identity && Se.preencode(e, d.identity)) | |
| 862 | 862 | }, |
| 863 | encode(d, n) { | |
| 864 | const o = n.identity ? 1 : 0 | |
| 865 | ;(Se.encode(d, n.signedKeys), e.uint.encode(d, o), n.identity && Ce.encode(d, n.identity)) | |
| 863 | encode(d, o) { | |
| 864 | const n = o.identity ? 1 : 0 | |
| 865 | ;(Me.encode(d, o.signedKeys), e.uint.encode(d, n), o.identity && Se.encode(d, o.identity)) | |
| 866 | 866 | }, |
| 867 | 867 | decode: (d) => ({ |
| 868 | signedKeys: Se.decode(d), | |
| 869 | identity: 1 & e.uint.decode(d) ? Ce.decode(d) : null, | |
| 868 | signedKeys: Me.decode(d), | |
| 869 | identity: 1 & e.uint.decode(d) ? Se.decode(d) : null, | |
| 870 | 870 | }), |
| 871 | 871 | }, |
| 872 | 872 | Le = { |
| 873 | preencode(d, o) { | |
| 873 | preencode(d, n) { | |
| 874 | 874 | ;(d.end++, |
| 875 | o.expiration && e.uint.preencode(d, o.expiration), | |
| 876 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 875 | n.expiration && e.uint.preencode(d, n.expiration), | |
| 876 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 877 | 877 | }, |
| 878 | encode(d, o) { | |
| 878 | encode(d, n) { | |
| 879 | 879 | const c = |
| 880 | (o.expiration ? 1 : 0) | | |
| 881 | (o.requiresConfirmation ? 2 : 0) | | |
| 882 | (o.canModerate ? 4 : 0) | | |
| 883 | (o.canAdmin ? 8 : 0) | | |
| 884 | (n >= 20 && o.buildType ? 16 : 0) | |
| 880 | (n.expiration ? 1 : 0) | | |
| 881 | (n.requiresConfirmation ? 2 : 0) | | |
| 882 | (n.canModerate ? 4 : 0) | | |
| 883 | (n.canAdmin ? 8 : 0) | | |
| 884 | (o >= 20 && n.buildType ? 16 : 0) | |
| 885 | 885 | ;(e.uint.encode(d, c), |
| 886 | o.expiration && e.uint.encode(d, o.expiration), | |
| 887 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 886 | n.expiration && e.uint.encode(d, n.expiration), | |
| 887 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 888 | 888 | }, |
| 889 | 889 | decode(d) { |
| 890 | const o = e.uint.decode(d) | |
| 890 | const n = e.uint.decode(d) | |
| 891 | 891 | return { |
| 892 | expiration: 1 & o ? e.uint.decode(d) : 0, | |
| 893 | requiresConfirmation: !!(2 & o), | |
| 894 | canModerate: !!(4 & o), | |
| 895 | canAdmin: !!(8 & o), | |
| 896 | buildType: n >= 20 && 16 & o ? Or.decode(d) : null, | |
| 892 | expiration: 1 & n ? e.uint.decode(d) : 0, | |
| 893 | requiresConfirmation: !!(2 & n), | |
| 894 | canModerate: !!(4 & n), | |
| 895 | canAdmin: !!(8 & n), | |
| 896 | buildType: o >= 20 && 16 & n ? Ur.decode(d) : null, | |
| 897 | 897 | } |
| 898 | 898 | }, |
| 899 | 899 | }, |
| 900 | qe = Se, | |
| 900 | qe = Me, | |
| 901 | 901 | Fe = e.frame(Le), |
| 902 | 902 | Ee = { |
| 903 | preencode(d, n) { | |
| 904 | ;(e.fixed32.preencode(d, n.id), | |
| 905 | qe.preencode(d, n.response), | |
| 906 | Fe.preencode(d, n.metadata), | |
| 903 | preencode(d, o) { | |
| 904 | ;(e.fixed32.preencode(d, o.id), | |
| 905 | qe.preencode(d, o.response), | |
| 906 | Fe.preencode(d, o.metadata), | |
| 907 | 907 | d.end++, |
| 908 | n.anchor && o.preencode(d, n.anchor)) | |
| 908 | o.anchor && n.preencode(d, o.anchor)) | |
| 909 | 909 | }, |
| 910 | encode(d, n) { | |
| 911 | const c = (n.anchor ? 1 : 0) | (n.isActive ? 2 : 0) | |
| 912 | ;(e.fixed32.encode(d, n.id), | |
| 913 | qe.encode(d, n.response), | |
| 914 | Fe.encode(d, n.metadata), | |
| 910 | encode(d, o) { | |
| 911 | const c = (o.anchor ? 1 : 0) | (o.isActive ? 2 : 0) | |
| 912 | ;(e.fixed32.encode(d, o.id), | |
| 913 | qe.encode(d, o.response), | |
| 914 | Fe.encode(d, o.metadata), | |
| 915 | 915 | e.uint.encode(d, c), |
| 916 | n.anchor && o.encode(d, n.anchor)) | |
| 916 | o.anchor && n.encode(d, o.anchor)) | |
| 917 | 917 | }, |
| 918 | 918 | decode(d) { |
| 919 | const n = e.fixed32.decode(d), | |
| 919 | const o = e.fixed32.decode(d), | |
| 920 | 920 | c = qe.decode(d), |
| 921 | 921 | r = Fe.decode(d), |
| 922 | 922 | t = e.uint.decode(d) |
| 923 | 923 | return { |
| 924 | id: n, | |
| 924 | id: o, | |
| 925 | 925 | response: c, |
| 926 | 926 | metadata: r, |
| 927 | anchor: 1 & t ? o.decode(d) : null, | |
| 927 | anchor: 1 & t ? n.decode(d) : null, | |
| 928 | 928 | isActive: !!(2 & t), |
| 929 | 929 | } |
| 930 | 930 | }, |
| … | … | @@ -941,63 +941,63 @@ const o = { |
| 941 | 941 | decode: (e) => ({ header: Be.decode(e), invitation: Ie.decode(e) }), |
| 942 | 942 | }, |
| 943 | 943 | je = _, |
| 944 | Oe = { | |
| 945 | preencode(d, n) { | |
| 946 | ;(je.preencode(d, n.header), e.fixed32.preencode(d, n.id)) | |
| 944 | Ue = { | |
| 945 | preencode(d, o) { | |
| 946 | ;(je.preencode(d, o.header), e.fixed32.preencode(d, o.id)) | |
| 947 | 947 | }, |
| 948 | encode(d, n) { | |
| 949 | ;(je.encode(d, n.header), e.fixed32.encode(d, n.id)) | |
| 948 | encode(d, o) { | |
| 949 | ;(je.encode(d, o.header), e.fixed32.encode(d, o.id)) | |
| 950 | 950 | }, |
| 951 | 951 | decode: (d) => ({ header: je.decode(d), id: e.fixed32.decode(d) }), |
| 952 | 952 | }, |
| 953 | Je = { | |
| 954 | preencode(d, n) { | |
| 955 | ;(e.fixed32.preencode(d, n.mailbox), | |
| 956 | e.fixed32.preencode(d, n.invitationSeed), | |
| 957 | o.preencode(d, n.anchor)) | |
| 953 | Oe = { | |
| 954 | preencode(d, o) { | |
| 955 | ;(e.fixed32.preencode(d, o.mailbox), | |
| 956 | e.fixed32.preencode(d, o.invitationSeed), | |
| 957 | n.preencode(d, o.anchor)) | |
| 958 | 958 | }, |
| 959 | encode(d, n) { | |
| 960 | ;(e.fixed32.encode(d, n.mailbox), | |
| 961 | e.fixed32.encode(d, n.invitationSeed), | |
| 962 | o.encode(d, n.anchor)) | |
| 959 | encode(d, o) { | |
| 960 | ;(e.fixed32.encode(d, o.mailbox), | |
| 961 | e.fixed32.encode(d, o.invitationSeed), | |
| 962 | n.encode(d, o.anchor)) | |
| 963 | 963 | }, |
| 964 | 964 | decode: (d) => ({ |
| 965 | 965 | mailbox: e.fixed32.decode(d), |
| 966 | 966 | invitationSeed: e.fixed32.decode(d), |
| 967 | anchor: o.decode(d), | |
| 967 | anchor: n.decode(d), | |
| 968 | 968 | }), |
| 969 | 969 | }, |
| 970 | Ue = { | |
| 971 | preencode(d, n) { | |
| 972 | ;(e.fixed32.preencode(d, n.mailbox), | |
| 973 | e.fixed32.preencode(d, n.invitationSeed), | |
| 974 | o.preencode(d, n.anchor), | |
| 975 | e.fixed32.preencode(d, n.identityPublicKey)) | |
| 970 | Je = { | |
| 971 | preencode(d, o) { | |
| 972 | ;(e.fixed32.preencode(d, o.mailbox), | |
| 973 | e.fixed32.preencode(d, o.invitationSeed), | |
| 974 | n.preencode(d, o.anchor), | |
| 975 | e.fixed32.preencode(d, o.identityPublicKey)) | |
| 976 | 976 | }, |
| 977 | encode(d, n) { | |
| 978 | ;(e.fixed32.encode(d, n.mailbox), | |
| 979 | e.fixed32.encode(d, n.invitationSeed), | |
| 980 | o.encode(d, n.anchor), | |
| 981 | e.fixed32.encode(d, n.identityPublicKey)) | |
| 977 | encode(d, o) { | |
| 978 | ;(e.fixed32.encode(d, o.mailbox), | |
| 979 | e.fixed32.encode(d, o.invitationSeed), | |
| 980 | n.encode(d, o.anchor), | |
| 981 | e.fixed32.encode(d, o.identityPublicKey)) | |
| 982 | 982 | }, |
| 983 | 983 | decode: (d) => ({ |
| 984 | 984 | mailbox: e.fixed32.decode(d), |
| 985 | 985 | invitationSeed: e.fixed32.decode(d), |
| 986 | anchor: o.decode(d), | |
| 986 | anchor: n.decode(d), | |
| 987 | 987 | identityPublicKey: e.fixed32.decode(d), |
| 988 | 988 | }), |
| 989 | 989 | }, |
| 990 | 990 | Ve = { |
| 991 | preencode(d, n) { | |
| 992 | e.fixed32.preencode(d, n.mailbox) | |
| 991 | preencode(d, o) { | |
| 992 | e.fixed32.preencode(d, o.mailbox) | |
| 993 | 993 | }, |
| 994 | encode(d, n) { | |
| 995 | e.fixed32.encode(d, n.mailbox) | |
| 994 | encode(d, o) { | |
| 995 | e.fixed32.encode(d, o.mailbox) | |
| 996 | 996 | }, |
| 997 | 997 | decode: (d) => ({ mailbox: e.fixed32.decode(d) }), |
| 998 | 998 | }, |
| 999 | He = e.frame(Je), | |
| 1000 | ze = e.frame(Ue), | |
| 999 | He = e.frame(Oe), | |
| 1000 | ze = e.frame(Je), | |
| 1001 | 1001 | Ge = e.frame(Ve), |
| 1002 | 1002 | Qe = e.array(e.ipv4Address), |
| 1003 | 1003 | We = { |
| … | … | @@ -1006,70 +1006,70 @@ const o = { |
| 1006 | 1006 | d.room && He.preencode(e, d.room), |
| 1007 | 1007 | d.identity && ze.preencode(e, d.identity), |
| 1008 | 1008 | d.contact && Ge.preencode(e, d.contact), |
| 1009 | n >= 6 && d.readonly && Zr.preencode(e, d.readonly), | |
| 1010 | n >= 11 && d.additionalNodes && Qe.preencode(e, d.additionalNodes), | |
| 1011 | n >= 20 && d.buildType && Or.preencode(e, d.buildType)) | |
| 1009 | o >= 6 && d.readonly && _r.preencode(e, d.readonly), | |
| 1010 | o >= 11 && d.additionalNodes && Qe.preencode(e, d.additionalNodes), | |
| 1011 | o >= 20 && d.buildType && Ur.preencode(e, d.buildType)) | |
| 1012 | 1012 | }, |
| 1013 | encode(d, o) { | |
| 1013 | encode(d, n) { | |
| 1014 | 1014 | const c = |
| 1015 | (o.room ? 1 : 0) | | |
| 1016 | (o.identity ? 2 : 0) | | |
| 1017 | (o.contact ? 4 : 0) | | |
| 1018 | (n >= 6 && o.readonly ? 8 : 0) | | |
| 1019 | (n >= 11 && o.additionalNodes ? 16 : 0) | | |
| 1020 | (n >= 20 && o.buildType ? 32 : 0) | |
| 1015 | (n.room ? 1 : 0) | | |
| 1016 | (n.identity ? 2 : 0) | | |
| 1017 | (n.contact ? 4 : 0) | | |
| 1018 | (o >= 6 && n.readonly ? 8 : 0) | | |
| 1019 | (o >= 11 && n.additionalNodes ? 16 : 0) | | |
| 1020 | (o >= 20 && n.buildType ? 32 : 0) | |
| 1021 | 1021 | ;(e.uint.encode(d, c), |
| 1022 | o.room && He.encode(d, o.room), | |
| 1023 | o.identity && ze.encode(d, o.identity), | |
| 1024 | o.contact && Ge.encode(d, o.contact), | |
| 1025 | n >= 6 && o.readonly && Zr.encode(d, o.readonly), | |
| 1026 | n >= 11 && o.additionalNodes && Qe.encode(d, o.additionalNodes), | |
| 1027 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 1022 | n.room && He.encode(d, n.room), | |
| 1023 | n.identity && ze.encode(d, n.identity), | |
| 1024 | n.contact && Ge.encode(d, n.contact), | |
| 1025 | o >= 6 && n.readonly && _r.encode(d, n.readonly), | |
| 1026 | o >= 11 && n.additionalNodes && Qe.encode(d, n.additionalNodes), | |
| 1027 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 1028 | 1028 | }, |
| 1029 | 1029 | decode(d) { |
| 1030 | const o = e.uint.decode(d) | |
| 1030 | const n = e.uint.decode(d) | |
| 1031 | 1031 | return { |
| 1032 | room: 1 & o ? He.decode(d) : null, | |
| 1033 | identity: 2 & o ? ze.decode(d) : null, | |
| 1034 | contact: 4 & o ? Ge.decode(d) : null, | |
| 1035 | readonly: n >= 6 && 8 & o ? Zr.decode(d) : null, | |
| 1036 | additionalNodes: n >= 11 && 16 & o ? Qe.decode(d) : null, | |
| 1037 | buildType: n >= 20 && 32 & o ? Or.decode(d) : null, | |
| 1032 | room: 1 & n ? He.decode(d) : null, | |
| 1033 | identity: 2 & n ? ze.decode(d) : null, | |
| 1034 | contact: 4 & n ? Ge.decode(d) : null, | |
| 1035 | readonly: o >= 6 && 8 & n ? _r.decode(d) : null, | |
| 1036 | additionalNodes: o >= 11 && 16 & n ? Qe.decode(d) : null, | |
| 1037 | buildType: o >= 20 && 32 & n ? Ur.decode(d) : null, | |
| 1038 | 1038 | } |
| 1039 | 1039 | }, |
| 1040 | 1040 | }, |
| 1041 | 1041 | Xe = _, |
| 1042 | 1042 | Ye = { |
| 1043 | preencode(d, n) { | |
| 1044 | ;(Xe.preencode(d, n.header), e.buffer.preencode(d, n.blindRequest)) | |
| 1043 | preencode(d, o) { | |
| 1044 | ;(Xe.preencode(d, o.header), e.buffer.preencode(d, o.blindRequest)) | |
| 1045 | 1045 | }, |
| 1046 | encode(d, n) { | |
| 1047 | ;(Xe.encode(d, n.header), e.buffer.encode(d, n.blindRequest)) | |
| 1046 | encode(d, o) { | |
| 1047 | ;(Xe.encode(d, o.header), e.buffer.encode(d, o.blindRequest)) | |
| 1048 | 1048 | }, |
| 1049 | 1049 | decode: (d) => ({ header: Xe.decode(d), blindRequest: e.buffer.decode(d) }), |
| 1050 | 1050 | }, |
| 1051 | 1051 | Ze = _, |
| 1052 | 1052 | $e = { |
| 1053 | 1053 | preencode(e, d) { |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && $r.preencode(e, d.profile)) | |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && et.preencode(e, d.profile)) | |
| 1055 | 1055 | }, |
| 1056 | encode(d, n) { | |
| 1057 | const o = n.profile ? 1 : 0 | |
| 1058 | ;(Ze.encode(d, n.header), e.uint.encode(d, o), n.profile && $r.encode(d, n.profile)) | |
| 1056 | encode(d, o) { | |
| 1057 | const n = o.profile ? 1 : 0 | |
| 1058 | ;(Ze.encode(d, o.header), e.uint.encode(d, n), o.profile && et.encode(d, o.profile)) | |
| 1059 | 1059 | }, |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? $r.decode(d) : null }), | |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? et.decode(d) : null }), | |
| 1061 | 1061 | }, |
| 1062 | 1062 | _e = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({}) }, |
| 1063 | 1063 | ed = _e, |
| 1064 | 1064 | dd = he, |
| 1065 | nd = { | |
| 1066 | preencode(d, n) { | |
| 1067 | ;(e.fixed32.preencode(d, n.deviceKey), | |
| 1068 | e.fixed32.preencode(d, n.id), | |
| 1069 | dd.preencode(d, n.request)) | |
| 1065 | od = { | |
| 1066 | preencode(d, o) { | |
| 1067 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 1068 | e.fixed32.preencode(d, o.id), | |
| 1069 | dd.preencode(d, o.request)) | |
| 1070 | 1070 | }, |
| 1071 | encode(d, n) { | |
| 1072 | ;(e.fixed32.encode(d, n.deviceKey), e.fixed32.encode(d, n.id), dd.encode(d, n.request)) | |
| 1071 | encode(d, o) { | |
| 1072 | ;(e.fixed32.encode(d, o.deviceKey), e.fixed32.encode(d, o.id), dd.encode(d, o.request)) | |
| 1073 | 1073 | }, |
| 1074 | 1074 | decode: (d) => ({ |
| 1075 | 1075 | deviceKey: e.fixed32.decode(d), |
| … | … | @@ -1077,95 +1077,95 @@ const o = { |
| 1077 | 1077 | request: dd.decode(d), |
| 1078 | 1078 | }), |
| 1079 | 1079 | }, |
| 1080 | od = _, | |
| 1081 | cd = Ce, | |
| 1080 | nd = _, | |
| 1081 | cd = Se, | |
| 1082 | 1082 | rd = { |
| 1083 | preencode(d, n) { | |
| 1084 | ;(od.preencode(d, n.header), | |
| 1085 | e.fixed32.preencode(d, n.deviceKey), | |
| 1083 | preencode(d, o) { | |
| 1084 | ;(nd.preencode(d, o.header), | |
| 1085 | e.fixed32.preencode(d, o.deviceKey), | |
| 1086 | 1086 | d.end++, |
| 1087 | n.identity && cd.preencode(d, n.identity)) | |
| 1087 | o.identity && cd.preencode(d, o.identity)) | |
| 1088 | 1088 | }, |
| 1089 | encode(d, n) { | |
| 1090 | const o = n.identity ? 1 : 0 | |
| 1091 | ;(od.encode(d, n.header), | |
| 1092 | e.fixed32.encode(d, n.deviceKey), | |
| 1093 | e.uint.encode(d, o), | |
| 1094 | n.identity && cd.encode(d, n.identity)) | |
| 1089 | encode(d, o) { | |
| 1090 | const n = o.identity ? 1 : 0 | |
| 1091 | ;(nd.encode(d, o.header), | |
| 1092 | e.fixed32.encode(d, o.deviceKey), | |
| 1093 | e.uint.encode(d, n), | |
| 1094 | o.identity && cd.encode(d, o.identity)) | |
| 1095 | 1095 | }, |
| 1096 | 1096 | decode: (d) => ({ |
| 1097 | header: od.decode(d), | |
| 1097 | header: nd.decode(d), | |
| 1098 | 1098 | deviceKey: e.fixed32.decode(d), |
| 1099 | 1099 | identity: 1 & e.uint.decode(d) ? cd.decode(d) : null, |
| 1100 | 1100 | }), |
| 1101 | 1101 | }, |
| 1102 | 1102 | td = _, |
| 1103 | 1103 | id = { |
| 1104 | preencode(d, n) { | |
| 1105 | ;(td.preencode(d, n.header), e.fixed32.preencode(d, n.deviceKey)) | |
| 1104 | preencode(d, o) { | |
| 1105 | ;(td.preencode(d, o.header), e.fixed32.preencode(d, o.deviceKey)) | |
| 1106 | 1106 | }, |
| 1107 | encode(d, n) { | |
| 1108 | ;(td.encode(d, n.header), e.fixed32.encode(d, n.deviceKey)) | |
| 1107 | encode(d, o) { | |
| 1108 | ;(td.encode(d, o.header), e.fixed32.encode(d, o.deviceKey)) | |
| 1109 | 1109 | }, |
| 1110 | 1110 | decode: (d) => ({ header: td.decode(d), deviceKey: e.fixed32.decode(d) }), |
| 1111 | 1111 | }, |
| 1112 | ad = e.frame(C), | |
| 1112 | ad = e.frame(S), | |
| 1113 | 1113 | sd = ue, |
| 1114 | 1114 | pd = { |
| 1115 | preencode(d, n) { | |
| 1116 | ;(e.fixed32.preencode(d, n.key), ad.preencode(d, n.status), sd.preencode(d, n.profile)) | |
| 1115 | preencode(d, o) { | |
| 1116 | ;(e.fixed32.preencode(d, o.key), ad.preencode(d, o.status), sd.preencode(d, o.profile)) | |
| 1117 | 1117 | }, |
| 1118 | encode(d, n) { | |
| 1119 | ;(e.fixed32.encode(d, n.key), ad.encode(d, n.status), sd.encode(d, n.profile)) | |
| 1118 | encode(d, o) { | |
| 1119 | ;(e.fixed32.encode(d, o.key), ad.encode(d, o.status), sd.encode(d, o.profile)) | |
| 1120 | 1120 | }, |
| 1121 | 1121 | decode: (d) => ({ key: e.fixed32.decode(d), status: ad.decode(d), profile: sd.decode(d) }), |
| 1122 | 1122 | }, |
| 1123 | 1123 | ud = ad, |
| 1124 | 1124 | ld = ue, |
| 1125 | 1125 | fd = { |
| 1126 | preencode(d, n) { | |
| 1127 | ;(e.fixed32.preencode(d, n.key), | |
| 1128 | ud.preencode(d, n.status), | |
| 1129 | ld.preencode(d, n.profile), | |
| 1126 | preencode(d, o) { | |
| 1127 | ;(e.fixed32.preencode(d, o.key), | |
| 1128 | ud.preencode(d, o.status), | |
| 1129 | ld.preencode(d, o.profile), | |
| 1130 | 1130 | d.end++, |
| 1131 | n.proofs && _r.preencode(d, n.proofs)) | |
| 1131 | o.proofs && dt.preencode(d, o.proofs)) | |
| 1132 | 1132 | }, |
| 1133 | encode(d, n) { | |
| 1134 | const o = n.proofs ? 1 : 0 | |
| 1135 | ;(e.fixed32.encode(d, n.key), | |
| 1136 | ud.encode(d, n.status), | |
| 1137 | ld.encode(d, n.profile), | |
| 1138 | e.uint.encode(d, o), | |
| 1139 | n.proofs && _r.encode(d, n.proofs)) | |
| 1133 | encode(d, o) { | |
| 1134 | const n = o.proofs ? 1 : 0 | |
| 1135 | ;(e.fixed32.encode(d, o.key), | |
| 1136 | ud.encode(d, o.status), | |
| 1137 | ld.encode(d, o.profile), | |
| 1138 | e.uint.encode(d, n), | |
| 1139 | o.proofs && dt.encode(d, o.proofs)) | |
| 1140 | 1140 | }, |
| 1141 | 1141 | decode: (d) => ({ |
| 1142 | 1142 | key: e.fixed32.decode(d), |
| 1143 | 1143 | status: ud.decode(d), |
| 1144 | 1144 | profile: ld.decode(d), |
| 1145 | proofs: 1 & e.uint.decode(d) ? _r.decode(d) : null, | |
| 1145 | proofs: 1 & e.uint.decode(d) ? dt.decode(d) : null, | |
| 1146 | 1146 | }), |
| 1147 | 1147 | }, |
| 1148 | 1148 | md = { |
| 1149 | preencode(d, n) { | |
| 1150 | ;(e.fixed32.preencode(d, n.key), | |
| 1149 | preencode(d, o) { | |
| 1150 | ;(e.fixed32.preencode(d, o.key), | |
| 1151 | 1151 | d.end++, |
| 1152 | n.profileAttestation && e.buffer.preencode(d, n.profileAttestation), | |
| 1153 | n.latestReceipt && e.buffer.preencode(d, n.latestReceipt)) | |
| 1152 | o.profileAttestation && e.buffer.preencode(d, o.profileAttestation), | |
| 1153 | o.latestReceipt && e.buffer.preencode(d, o.latestReceipt)) | |
| 1154 | 1154 | }, |
| 1155 | encode(d, n) { | |
| 1156 | const o = (n.profileAttestation ? 1 : 0) | (n.latestReceipt ? 2 : 0) | |
| 1157 | ;(e.fixed32.encode(d, n.key), | |
| 1158 | e.uint.encode(d, o), | |
| 1159 | n.profileAttestation && e.buffer.encode(d, n.profileAttestation), | |
| 1160 | n.latestReceipt && e.buffer.encode(d, n.latestReceipt)) | |
| 1155 | encode(d, o) { | |
| 1156 | const n = (o.profileAttestation ? 1 : 0) | (o.latestReceipt ? 2 : 0) | |
| 1157 | ;(e.fixed32.encode(d, o.key), | |
| 1158 | e.uint.encode(d, n), | |
| 1159 | o.profileAttestation && e.buffer.encode(d, o.profileAttestation), | |
| 1160 | o.latestReceipt && e.buffer.encode(d, o.latestReceipt)) | |
| 1161 | 1161 | }, |
| 1162 | 1162 | decode(d) { |
| 1163 | const n = e.fixed32.decode(d), | |
| 1164 | o = e.uint.decode(d) | |
| 1163 | const o = e.fixed32.decode(d), | |
| 1164 | n = e.uint.decode(d) | |
| 1165 | 1165 | return { |
| 1166 | key: n, | |
| 1167 | profileAttestation: 1 & o ? e.buffer.decode(d) : null, | |
| 1168 | latestReceipt: 2 & o ? e.buffer.decode(d) : null, | |
| 1166 | key: o, | |
| 1167 | profileAttestation: 1 & n ? e.buffer.decode(d) : null, | |
| 1168 | latestReceipt: 2 & n ? e.buffer.decode(d) : null, | |
| 1169 | 1169 | } |
| 1170 | 1170 | }, |
| 1171 | 1171 | }, |
| … | … | @@ -1181,19 +1181,19 @@ const o = { |
| 1181 | 1181 | decode: (e) => ({ header: yd.decode(e), member: xd.decode(e) }), |
| 1182 | 1182 | }, |
| 1183 | 1183 | kd = _, |
| 1184 | vd = e.frame(M), | |
| 1184 | vd = e.frame(C), | |
| 1185 | 1185 | gd = { |
| 1186 | preencode(d, n) { | |
| 1187 | ;(kd.preencode(d, n.header), | |
| 1188 | e.fixed32.preencode(d, n.memberKey), | |
| 1189 | e.uint.preencode(d, n.key), | |
| 1190 | vd.preencode(d, n.status)) | |
| 1186 | preencode(d, o) { | |
| 1187 | ;(kd.preencode(d, o.header), | |
| 1188 | e.fixed32.preencode(d, o.memberKey), | |
| 1189 | e.uint.preencode(d, o.key), | |
| 1190 | vd.preencode(d, o.status)) | |
| 1191 | 1191 | }, |
| 1192 | encode(d, n) { | |
| 1193 | ;(kd.encode(d, n.header), | |
| 1194 | e.fixed32.encode(d, n.memberKey), | |
| 1195 | e.uint.encode(d, n.key), | |
| 1196 | vd.encode(d, n.status)) | |
| 1192 | encode(d, o) { | |
| 1193 | ;(kd.encode(d, o.header), | |
| 1194 | e.fixed32.encode(d, o.memberKey), | |
| 1195 | e.uint.encode(d, o.key), | |
| 1196 | vd.encode(d, o.status)) | |
| 1197 | 1197 | }, |
| 1198 | 1198 | decode: (d) => ({ |
| 1199 | 1199 | header: kd.decode(d), |
| … | … | @@ -1204,219 +1204,219 @@ const o = { |
| 1204 | 1204 | }, |
| 1205 | 1205 | hd = _, |
| 1206 | 1206 | Kd = { |
| 1207 | preencode(d, n) { | |
| 1208 | ;(hd.preencode(d, n.header), e.fixed32.preencode(d, n.key), d.end++) | |
| 1207 | preencode(d, o) { | |
| 1208 | ;(hd.preencode(d, o.header), e.fixed32.preencode(d, o.key), d.end++) | |
| 1209 | 1209 | }, |
| 1210 | encode(d, n) { | |
| 1211 | const o = (n.isModerator ? 1 : 0) | (n.isAdmin ? 2 : 0) | |
| 1212 | ;(hd.encode(d, n.header), e.fixed32.encode(d, n.key), e.uint.encode(d, o)) | |
| 1210 | encode(d, o) { | |
| 1211 | const n = (o.isModerator ? 1 : 0) | (o.isAdmin ? 2 : 0) | |
| 1212 | ;(hd.encode(d, o.header), e.fixed32.encode(d, o.key), e.uint.encode(d, n)) | |
| 1213 | 1213 | }, |
| 1214 | 1214 | decode(d) { |
| 1215 | const n = hd.decode(d), | |
| 1216 | o = e.fixed32.decode(d), | |
| 1215 | const o = hd.decode(d), | |
| 1216 | n = e.fixed32.decode(d), | |
| 1217 | 1217 | c = e.uint.decode(d) |
| 1218 | return { header: n, key: o, isModerator: !!(1 & c), isAdmin: !!(2 & c) } | |
| 1218 | return { header: o, key: n, isModerator: !!(1 & c), isAdmin: !!(2 & c) } | |
| 1219 | 1219 | }, |
| 1220 | 1220 | }, |
| 1221 | 1221 | wd = _, |
| 1222 | 1222 | Td = { |
| 1223 | preencode(d, n) { | |
| 1224 | ;(wd.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 1223 | preencode(d, o) { | |
| 1224 | ;(wd.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 1225 | 1225 | }, |
| 1226 | encode(d, n) { | |
| 1227 | ;(wd.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 1226 | encode(d, o) { | |
| 1227 | ;(wd.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 1228 | 1228 | }, |
| 1229 | 1229 | decode: (d) => ({ header: wd.decode(d), key: e.fixed32.decode(d) }), |
| 1230 | 1230 | }, |
| 1231 | 1231 | Pd = { |
| 1232 | preencode(d, n) { | |
| 1233 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.mentions)) | |
| 1232 | preencode(d, o) { | |
| 1233 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.mentions)) | |
| 1234 | 1234 | }, |
| 1235 | encode(d, n) { | |
| 1236 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.mentions)) | |
| 1235 | encode(d, o) { | |
| 1236 | ;(e.fixed32.encode(d, o.key), e.uint.encode(d, o.mentions)) | |
| 1237 | 1237 | }, |
| 1238 | 1238 | decode: (d) => ({ key: e.fixed32.decode(d), mentions: e.uint.decode(d) }), |
| 1239 | 1239 | }, |
| 1240 | 1240 | Ad = { |
| 1241 | preencode(d, n) { | |
| 1242 | ;(d.end++, n.memberKey && e.fixed32.preencode(d, n.memberKey)) | |
| 1241 | preencode(d, o) { | |
| 1242 | ;(d.end++, o.memberKey && e.fixed32.preencode(d, o.memberKey)) | |
| 1243 | 1243 | }, |
| 1244 | encode(d, n) { | |
| 1245 | const o = n.memberKey ? 1 : 0 | |
| 1246 | ;(e.uint.encode(d, o), n.memberKey && e.fixed32.encode(d, n.memberKey)) | |
| 1244 | encode(d, o) { | |
| 1245 | const n = o.memberKey ? 1 : 0 | |
| 1246 | ;(e.uint.encode(d, n), o.memberKey && e.fixed32.encode(d, o.memberKey)) | |
| 1247 | 1247 | }, |
| 1248 | 1248 | decode: (d) => ({ memberKey: 1 & e.uint.decode(d) ? e.fixed32.decode(d) : null }), |
| 1249 | 1249 | }, |
| 1250 | 1250 | Rd = Ad, |
| 1251 | 1251 | Dd = { |
| 1252 | preencode(d, n) { | |
| 1253 | ;(d.end++, n.from && e.string.preencode(d, n.from), n.to && e.string.preencode(d, n.to)) | |
| 1252 | preencode(d, o) { | |
| 1253 | ;(d.end++, o.from && e.string.preencode(d, o.from), o.to && e.string.preencode(d, o.to)) | |
| 1254 | 1254 | }, |
| 1255 | encode(d, n) { | |
| 1256 | const o = (n.from ? 1 : 0) | (n.to ? 2 : 0) | |
| 1257 | ;(e.uint.encode(d, o), n.from && e.string.encode(d, n.from), n.to && e.string.encode(d, n.to)) | |
| 1255 | encode(d, o) { | |
| 1256 | const n = (o.from ? 1 : 0) | (o.to ? 2 : 0) | |
| 1257 | ;(e.uint.encode(d, n), o.from && e.string.encode(d, o.from), o.to && e.string.encode(d, o.to)) | |
| 1258 | 1258 | }, |
| 1259 | 1259 | decode(d) { |
| 1260 | const n = e.uint.decode(d) | |
| 1261 | return { from: 1 & n ? e.string.decode(d) : null, to: 2 & n ? e.string.decode(d) : null } | |
| 1260 | const o = e.uint.decode(d) | |
| 1261 | return { from: 1 & o ? e.string.decode(d) : null, to: 2 & o ? e.string.decode(d) : null } | |
| 1262 | 1262 | }, |
| 1263 | 1263 | }, |
| 1264 | Sd = e.frame(Ad), | |
| 1265 | Cd = e.frame(Rd), | |
| 1266 | Md = e.frame(Dd), | |
| 1264 | Md = e.frame(Ad), | |
| 1265 | Sd = e.frame(Rd), | |
| 1266 | Cd = e.frame(Dd), | |
| 1267 | 1267 | Ld = { |
| 1268 | preencode(d, o) { | |
| 1268 | preencode(d, n) { | |
| 1269 | 1269 | const c = |
| 1270 | (o.memberJoined ? 1 : 0) | | |
| 1271 | (o.memberLeft ? 2 : 0) | | |
| 1272 | (o.titleChanged ? 4 : 0) | | |
| 1273 | (o.callStarted ? 8 : 0) | | |
| 1274 | (o.callHangup ? 16 : 0) | | |
| 1275 | (o.callMissed ? 32 : 0) | | |
| 1276 | (n >= 3 && o.roomAvatarChanged ? 64 : 0) | | |
| 1277 | (n >= 3 && o.invitationCreated ? 128 : 0) | | |
| 1278 | (n >= 3 && o.memberRemoved ? 256 : 0) | | |
| 1279 | (n >= 18 && o.locationShared ? 512 : 0) | |
| 1270 | (n.memberJoined ? 1 : 0) | | |
| 1271 | (n.memberLeft ? 2 : 0) | | |
| 1272 | (n.titleChanged ? 4 : 0) | | |
| 1273 | (n.callStarted ? 8 : 0) | | |
| 1274 | (n.callHangup ? 16 : 0) | | |
| 1275 | (n.callMissed ? 32 : 0) | | |
| 1276 | (o >= 3 && n.roomAvatarChanged ? 64 : 0) | | |
| 1277 | (o >= 3 && n.invitationCreated ? 128 : 0) | | |
| 1278 | (o >= 3 && n.memberRemoved ? 256 : 0) | | |
| 1279 | (o >= 18 && n.locationShared ? 512 : 0) | |
| 1280 | 1280 | ;(e.uint.preencode(d, c), |
| 1281 | o.memberJoined && Sd.preencode(d, o.memberJoined), | |
| 1282 | o.memberLeft && Cd.preencode(d, o.memberLeft), | |
| 1283 | o.titleChanged && Md.preencode(d, o.titleChanged), | |
| 1284 | n >= 3 && o.memberRemoved && et.preencode(d, o.memberRemoved), | |
| 1285 | n >= 18 && o.locationShared && dt.preencode(d, o.locationShared)) | |
| 1281 | n.memberJoined && Md.preencode(d, n.memberJoined), | |
| 1282 | n.memberLeft && Sd.preencode(d, n.memberLeft), | |
| 1283 | n.titleChanged && Cd.preencode(d, n.titleChanged), | |
| 1284 | o >= 3 && n.memberRemoved && ot.preencode(d, n.memberRemoved), | |
| 1285 | o >= 18 && n.locationShared && nt.preencode(d, n.locationShared)) | |
| 1286 | 1286 | }, |
| 1287 | encode(d, o) { | |
| 1287 | encode(d, n) { | |
| 1288 | 1288 | const c = |
| 1289 | (o.memberJoined ? 1 : 0) | | |
| 1290 | (o.memberLeft ? 2 : 0) | | |
| 1291 | (o.titleChanged ? 4 : 0) | | |
| 1292 | (o.callStarted ? 8 : 0) | | |
| 1293 | (o.callHangup ? 16 : 0) | | |
| 1294 | (o.callMissed ? 32 : 0) | | |
| 1295 | (n >= 3 && o.roomAvatarChanged ? 64 : 0) | | |
| 1296 | (n >= 3 && o.invitationCreated ? 128 : 0) | | |
| 1297 | (n >= 3 && o.memberRemoved ? 256 : 0) | | |
| 1298 | (n >= 18 && o.locationShared ? 512 : 0) | |
| 1289 | (n.memberJoined ? 1 : 0) | | |
| 1290 | (n.memberLeft ? 2 : 0) | | |
| 1291 | (n.titleChanged ? 4 : 0) | | |
| 1292 | (n.callStarted ? 8 : 0) | | |
| 1293 | (n.callHangup ? 16 : 0) | | |
| 1294 | (n.callMissed ? 32 : 0) | | |
| 1295 | (o >= 3 && n.roomAvatarChanged ? 64 : 0) | | |
| 1296 | (o >= 3 && n.invitationCreated ? 128 : 0) | | |
| 1297 | (o >= 3 && n.memberRemoved ? 256 : 0) | | |
| 1298 | (o >= 18 && n.locationShared ? 512 : 0) | |
| 1299 | 1299 | ;(e.uint.encode(d, c), |
| 1300 | o.memberJoined && Sd.encode(d, o.memberJoined), | |
| 1301 | o.memberLeft && Cd.encode(d, o.memberLeft), | |
| 1302 | o.titleChanged && Md.encode(d, o.titleChanged), | |
| 1303 | n >= 3 && o.memberRemoved && et.encode(d, o.memberRemoved), | |
| 1304 | n >= 18 && o.locationShared && dt.encode(d, o.locationShared)) | |
| 1300 | n.memberJoined && Md.encode(d, n.memberJoined), | |
| 1301 | n.memberLeft && Sd.encode(d, n.memberLeft), | |
| 1302 | n.titleChanged && Cd.encode(d, n.titleChanged), | |
| 1303 | o >= 3 && n.memberRemoved && ot.encode(d, n.memberRemoved), | |
| 1304 | o >= 18 && n.locationShared && nt.encode(d, n.locationShared)) | |
| 1305 | 1305 | }, |
| 1306 | 1306 | decode(d) { |
| 1307 | const o = e.uint.decode(d) | |
| 1307 | const n = e.uint.decode(d) | |
| 1308 | 1308 | return { |
| 1309 | memberJoined: 1 & o ? Sd.decode(d) : null, | |
| 1310 | memberLeft: 2 & o ? Cd.decode(d) : null, | |
| 1311 | titleChanged: 4 & o ? Md.decode(d) : null, | |
| 1312 | callStarted: !!(8 & o), | |
| 1313 | callHangup: !!(16 & o), | |
| 1314 | callMissed: !!(32 & o), | |
| 1315 | roomAvatarChanged: n >= 3 && !!(64 & o), | |
| 1316 | invitationCreated: n >= 3 && !!(128 & o), | |
| 1317 | memberRemoved: n >= 3 && 256 & o ? et.decode(d) : null, | |
| 1318 | locationShared: n >= 18 && 512 & o ? dt.decode(d) : null, | |
| 1309 | memberJoined: 1 & n ? Md.decode(d) : null, | |
| 1310 | memberLeft: 2 & n ? Sd.decode(d) : null, | |
| 1311 | titleChanged: 4 & n ? Cd.decode(d) : null, | |
| 1312 | callStarted: !!(8 & n), | |
| 1313 | callHangup: !!(16 & n), | |
| 1314 | callMissed: !!(32 & n), | |
| 1315 | roomAvatarChanged: o >= 3 && !!(64 & n), | |
| 1316 | invitationCreated: o >= 3 && !!(128 & n), | |
| 1317 | memberRemoved: o >= 3 && 256 & n ? ot.decode(d) : null, | |
| 1318 | locationShared: o >= 18 && 512 & n ? nt.decode(d) : null, | |
| 1319 | 1319 | } |
| 1320 | 1320 | }, |
| 1321 | 1321 | }, |
| 1322 | 1322 | qd = { |
| 1323 | 1323 | preencode(e, d) { |
| 1324 | ;(e.end++, n >= 18 && d.locationShared && nt.preencode(e, d.locationShared)) | |
| 1324 | ;(e.end++, o >= 18 && d.locationShared && ct.preencode(e, d.locationShared)) | |
| 1325 | 1325 | }, |
| 1326 | encode(d, o) { | |
| 1326 | encode(d, n) { | |
| 1327 | 1327 | const c = |
| 1328 | (o.callStarted ? 1 : 0) | | |
| 1329 | (o.callHangup ? 2 : 0) | | |
| 1330 | (o.callMissed ? 4 : 0) | | |
| 1331 | (n >= 18 && o.locationShared ? 8 : 0) | |
| 1332 | ;(e.uint.encode(d, c), n >= 18 && o.locationShared && nt.encode(d, o.locationShared)) | |
| 1328 | (n.callStarted ? 1 : 0) | | |
| 1329 | (n.callHangup ? 2 : 0) | | |
| 1330 | (n.callMissed ? 4 : 0) | | |
| 1331 | (o >= 18 && n.locationShared ? 8 : 0) | |
| 1332 | ;(e.uint.encode(d, c), o >= 18 && n.locationShared && ct.encode(d, n.locationShared)) | |
| 1333 | 1333 | }, |
| 1334 | 1334 | decode(d) { |
| 1335 | const o = e.uint.decode(d) | |
| 1335 | const n = e.uint.decode(d) | |
| 1336 | 1336 | return { |
| 1337 | callStarted: !!(1 & o), | |
| 1338 | callHangup: !!(2 & o), | |
| 1339 | callMissed: !!(4 & o), | |
| 1340 | locationShared: n >= 18 && 8 & o ? nt.decode(d) : null, | |
| 1337 | callStarted: !!(1 & n), | |
| 1338 | callHangup: !!(2 & n), | |
| 1339 | callMissed: !!(4 & n), | |
| 1340 | locationShared: o >= 18 && 8 & n ? ct.decode(d) : null, | |
| 1341 | 1341 | } |
| 1342 | 1342 | }, |
| 1343 | 1343 | }, |
| 1344 | 1344 | Fd = { |
| 1345 | preencode(d, n) { | |
| 1346 | ;(e.uint.preencode(d, n.start), e.uint.preencode(d, n.length)) | |
| 1345 | preencode(d, o) { | |
| 1346 | ;(e.uint.preencode(d, o.start), e.uint.preencode(d, o.length)) | |
| 1347 | 1347 | }, |
| 1348 | encode(d, n) { | |
| 1349 | ;(e.uint.encode(d, n.start), e.uint.encode(d, n.length)) | |
| 1348 | encode(d, o) { | |
| 1349 | ;(e.uint.encode(d, o.start), e.uint.encode(d, o.length)) | |
| 1350 | 1350 | }, |
| 1351 | 1351 | decode: (d) => ({ start: e.uint.decode(d), length: e.uint.decode(d) }), |
| 1352 | 1352 | }, |
| 1353 | 1353 | Ed = e.frame(Fd), |
| 1354 | 1354 | Bd = { |
| 1355 | preencode(d, n) { | |
| 1356 | ;(Ed.preencode(d, n.range), e.string.preencode(d, n.content)) | |
| 1355 | preencode(d, o) { | |
| 1356 | ;(Ed.preencode(d, o.range), e.string.preencode(d, o.content)) | |
| 1357 | 1357 | }, |
| 1358 | encode(d, n) { | |
| 1359 | ;(Ed.encode(d, n.range), e.string.encode(d, n.content)) | |
| 1358 | encode(d, o) { | |
| 1359 | ;(Ed.encode(d, o.range), e.string.encode(d, o.content)) | |
| 1360 | 1360 | }, |
| 1361 | 1361 | decode: (d) => ({ range: Ed.decode(d), content: e.string.decode(d) }), |
| 1362 | 1362 | }, |
| 1363 | 1363 | Id = Ed, |
| 1364 | 1364 | Nd = { |
| 1365 | preencode(d, n) { | |
| 1366 | ;(Id.preencode(d, n.range), e.fixed32.preencode(d, n.memberKey)) | |
| 1365 | preencode(d, o) { | |
| 1366 | ;(Id.preencode(d, o.range), e.fixed32.preencode(d, o.memberKey)) | |
| 1367 | 1367 | }, |
| 1368 | encode(d, n) { | |
| 1369 | ;(Id.encode(d, n.range), e.fixed32.encode(d, n.memberKey)) | |
| 1368 | encode(d, o) { | |
| 1369 | ;(Id.encode(d, o.range), e.fixed32.encode(d, o.memberKey)) | |
| 1370 | 1370 | }, |
| 1371 | 1371 | decode: (d) => ({ range: Id.decode(d), memberKey: e.fixed32.decode(d) }), |
| 1372 | 1372 | }, |
| 1373 | 1373 | jd = h, |
| 1374 | Od = e.array(e.uint), | |
| 1375 | Jd = { | |
| 1376 | preencode(d, o) { | |
| 1374 | Ud = e.array(e.uint), | |
| 1375 | Od = { | |
| 1376 | preencode(d, n) { | |
| 1377 | 1377 | ;(d.end++, |
| 1378 | o.title && e.string.preencode(d, o.title), | |
| 1379 | o.description && e.string.preencode(d, o.description), | |
| 1380 | o.file && jd.preencode(d, o.file), | |
| 1381 | n >= 7 && o.files && Od.preencode(d, o.files)) | |
| 1378 | n.title && e.string.preencode(d, n.title), | |
| 1379 | n.description && e.string.preencode(d, n.description), | |
| 1380 | n.file && jd.preencode(d, n.file), | |
| 1381 | o >= 7 && n.files && Ud.preencode(d, n.files)) | |
| 1382 | 1382 | }, |
| 1383 | encode(d, o) { | |
| 1383 | encode(d, n) { | |
| 1384 | 1384 | const c = |
| 1385 | (o.title ? 1 : 0) | (o.description ? 2 : 0) | (o.file ? 4 : 0) | (n >= 7 && o.files ? 8 : 0) | |
| 1385 | (n.title ? 1 : 0) | (n.description ? 2 : 0) | (n.file ? 4 : 0) | (o >= 7 && n.files ? 8 : 0) | |
| 1386 | 1386 | ;(e.uint.encode(d, c), |
| 1387 | o.title && e.string.encode(d, o.title), | |
| 1388 | o.description && e.string.encode(d, o.description), | |
| 1389 | o.file && jd.encode(d, o.file), | |
| 1390 | n >= 7 && o.files && Od.encode(d, o.files)) | |
| 1387 | n.title && e.string.encode(d, n.title), | |
| 1388 | n.description && e.string.encode(d, n.description), | |
| 1389 | n.file && jd.encode(d, n.file), | |
| 1390 | o >= 7 && n.files && Ud.encode(d, n.files)) | |
| 1391 | 1391 | }, |
| 1392 | 1392 | decode(d) { |
| 1393 | const o = e.uint.decode(d) | |
| 1393 | const n = e.uint.decode(d) | |
| 1394 | 1394 | return { |
| 1395 | title: 1 & o ? e.string.decode(d) : null, | |
| 1396 | description: 2 & o ? e.string.decode(d) : null, | |
| 1397 | file: 4 & o ? jd.decode(d) : null, | |
| 1398 | files: n >= 7 && 8 & o ? Od.decode(d) : null, | |
| 1395 | title: 1 & n ? e.string.decode(d) : null, | |
| 1396 | description: 2 & n ? e.string.decode(d) : null, | |
| 1397 | file: 4 & n ? jd.decode(d) : null, | |
| 1398 | files: o >= 7 && 8 & n ? Ud.decode(d) : null, | |
| 1399 | 1399 | } |
| 1400 | 1400 | }, |
| 1401 | 1401 | }, |
| 1402 | Ud = Ed, | |
| 1403 | Vd = e.frame(Jd), | |
| 1402 | Jd = Ed, | |
| 1403 | Vd = e.frame(Od), | |
| 1404 | 1404 | Hd = { |
| 1405 | preencode(d, n) { | |
| 1406 | ;(Ud.preencode(d, n.range), | |
| 1407 | e.string.preencode(d, n.url), | |
| 1405 | preencode(d, o) { | |
| 1406 | ;(Jd.preencode(d, o.range), | |
| 1407 | e.string.preencode(d, o.url), | |
| 1408 | 1408 | d.end++, |
| 1409 | n.preview && Vd.preencode(d, n.preview)) | |
| 1409 | o.preview && Vd.preencode(d, o.preview)) | |
| 1410 | 1410 | }, |
| 1411 | encode(d, n) { | |
| 1412 | const o = n.preview ? 1 : 0 | |
| 1413 | ;(Ud.encode(d, n.range), | |
| 1414 | e.string.encode(d, n.url), | |
| 1415 | e.uint.encode(d, o), | |
| 1416 | n.preview && Vd.encode(d, n.preview)) | |
| 1411 | encode(d, o) { | |
| 1412 | const n = o.preview ? 1 : 0 | |
| 1413 | ;(Jd.encode(d, o.range), | |
| 1414 | e.string.encode(d, o.url), | |
| 1415 | e.uint.encode(d, n), | |
| 1416 | o.preview && Vd.encode(d, o.preview)) | |
| 1417 | 1417 | }, |
| 1418 | 1418 | decode: (d) => ({ |
| 1419 | range: Ud.decode(d), | |
| 1419 | range: Jd.decode(d), | |
| 1420 | 1420 | url: e.string.decode(d), |
| 1421 | 1421 | preview: 1 & e.uint.decode(d) ? Vd.decode(d) : null, |
| 1422 | 1422 | }), |
| … | … | @@ -1430,702 +1430,702 @@ const o = { |
| 1430 | 1430 | Zd = e.array(e.frame(Bd)), |
| 1431 | 1431 | $d = Wd, |
| 1432 | 1432 | _d = Wd, |
| 1433 | en = { | |
| 1434 | preencode(d, o) { | |
| 1433 | eo = { | |
| 1434 | preencode(d, n) { | |
| 1435 | 1435 | const c = |
| 1436 | (o.mention ? 1 : 0) | | |
| 1437 | (o.httpLink ? 2 : 0) | | |
| 1438 | (o.pearLink ? 4 : 0) | | |
| 1439 | (o.bold ? 8 : 0) | | |
| 1440 | (o.italic ? 16 : 0) | | |
| 1441 | (o.code ? 32 : 0) | | |
| 1442 | (o.emoji ? 64 : 0) | | |
| 1443 | (o.codeBlock ? 128 : 0) | | |
| 1444 | (o.strike ? 256 : 0) | | |
| 1445 | (n >= 11 && o.translation ? 512 : 0) | |
| 1436 | (n.mention ? 1 : 0) | | |
| 1437 | (n.httpLink ? 2 : 0) | | |
| 1438 | (n.pearLink ? 4 : 0) | | |
| 1439 | (n.bold ? 8 : 0) | | |
| 1440 | (n.italic ? 16 : 0) | | |
| 1441 | (n.code ? 32 : 0) | | |
| 1442 | (n.emoji ? 64 : 0) | | |
| 1443 | (n.codeBlock ? 128 : 0) | | |
| 1444 | (n.strike ? 256 : 0) | | |
| 1445 | (o >= 11 && n.translation ? 512 : 0) | |
| 1446 | 1446 | ;(e.uint.preencode(d, c), |
| 1447 | o.mention && zd.preencode(d, o.mention), | |
| 1448 | o.httpLink && Gd.preencode(d, o.httpLink), | |
| 1449 | o.pearLink && Qd.preencode(d, o.pearLink), | |
| 1450 | o.bold && Wd.preencode(d, o.bold), | |
| 1451 | o.italic && Xd.preencode(d, o.italic), | |
| 1452 | o.code && Yd.preencode(d, o.code), | |
| 1453 | o.emoji && Zd.preencode(d, o.emoji), | |
| 1454 | o.codeBlock && $d.preencode(d, o.codeBlock), | |
| 1455 | o.strike && _d.preencode(d, o.strike), | |
| 1456 | n >= 11 && o.translation && ot.preencode(d, o.translation)) | |
| 1447 | n.mention && zd.preencode(d, n.mention), | |
| 1448 | n.httpLink && Gd.preencode(d, n.httpLink), | |
| 1449 | n.pearLink && Qd.preencode(d, n.pearLink), | |
| 1450 | n.bold && Wd.preencode(d, n.bold), | |
| 1451 | n.italic && Xd.preencode(d, n.italic), | |
| 1452 | n.code && Yd.preencode(d, n.code), | |
| 1453 | n.emoji && Zd.preencode(d, n.emoji), | |
| 1454 | n.codeBlock && $d.preencode(d, n.codeBlock), | |
| 1455 | n.strike && _d.preencode(d, n.strike), | |
| 1456 | o >= 11 && n.translation && rt.preencode(d, n.translation)) | |
| 1457 | 1457 | }, |
| 1458 | encode(d, o) { | |
| 1458 | encode(d, n) { | |
| 1459 | 1459 | const c = |
| 1460 | (o.mention ? 1 : 0) | | |
| 1461 | (o.httpLink ? 2 : 0) | | |
| 1462 | (o.pearLink ? 4 : 0) | | |
| 1463 | (o.bold ? 8 : 0) | | |
| 1464 | (o.italic ? 16 : 0) | | |
| 1465 | (o.code ? 32 : 0) | | |
| 1466 | (o.emoji ? 64 : 0) | | |
| 1467 | (o.codeBlock ? 128 : 0) | | |
| 1468 | (o.strike ? 256 : 0) | | |
| 1469 | (n >= 11 && o.translation ? 512 : 0) | |
| 1460 | (n.mention ? 1 : 0) | | |
| 1461 | (n.httpLink ? 2 : 0) | | |
| 1462 | (n.pearLink ? 4 : 0) | | |
| 1463 | (n.bold ? 8 : 0) | | |
| 1464 | (n.italic ? 16 : 0) | | |
| 1465 | (n.code ? 32 : 0) | | |
| 1466 | (n.emoji ? 64 : 0) | | |
| 1467 | (n.codeBlock ? 128 : 0) | | |
| 1468 | (n.strike ? 256 : 0) | | |
| 1469 | (o >= 11 && n.translation ? 512 : 0) | |
| 1470 | 1470 | ;(e.uint.encode(d, c), |
| 1471 | o.mention && zd.encode(d, o.mention), | |
| 1472 | o.httpLink && Gd.encode(d, o.httpLink), | |
| 1473 | o.pearLink && Qd.encode(d, o.pearLink), | |
| 1474 | o.bold && Wd.encode(d, o.bold), | |
| 1475 | o.italic && Xd.encode(d, o.italic), | |
| 1476 | o.code && Yd.encode(d, o.code), | |
| 1477 | o.emoji && Zd.encode(d, o.emoji), | |
| 1478 | o.codeBlock && $d.encode(d, o.codeBlock), | |
| 1479 | o.strike && _d.encode(d, o.strike), | |
| 1480 | n >= 11 && o.translation && ot.encode(d, o.translation)) | |
| 1471 | n.mention && zd.encode(d, n.mention), | |
| 1472 | n.httpLink && Gd.encode(d, n.httpLink), | |
| 1473 | n.pearLink && Qd.encode(d, n.pearLink), | |
| 1474 | n.bold && Wd.encode(d, n.bold), | |
| 1475 | n.italic && Xd.encode(d, n.italic), | |
| 1476 | n.code && Yd.encode(d, n.code), | |
| 1477 | n.emoji && Zd.encode(d, n.emoji), | |
| 1478 | n.codeBlock && $d.encode(d, n.codeBlock), | |
| 1479 | n.strike && _d.encode(d, n.strike), | |
| 1480 | o >= 11 && n.translation && rt.encode(d, n.translation)) | |
| 1481 | 1481 | }, |
| 1482 | 1482 | decode(d) { |
| 1483 | const o = e.uint.decode(d) | |
| 1483 | const n = e.uint.decode(d) | |
| 1484 | 1484 | return { |
| 1485 | mention: 1 & o ? zd.decode(d) : null, | |
| 1486 | httpLink: 2 & o ? Gd.decode(d) : null, | |
| 1487 | pearLink: 4 & o ? Qd.decode(d) : null, | |
| 1488 | bold: 8 & o ? Wd.decode(d) : null, | |
| 1489 | italic: 16 & o ? Xd.decode(d) : null, | |
| 1490 | code: 32 & o ? Yd.decode(d) : null, | |
| 1491 | emoji: 64 & o ? Zd.decode(d) : null, | |
| 1492 | codeBlock: 128 & o ? $d.decode(d) : null, | |
| 1493 | strike: 256 & o ? _d.decode(d) : null, | |
| 1494 | translation: n >= 11 && 512 & o ? ot.decode(d) : null, | |
| 1485 | mention: 1 & n ? zd.decode(d) : null, | |
| 1486 | httpLink: 2 & n ? Gd.decode(d) : null, | |
| 1487 | pearLink: 4 & n ? Qd.decode(d) : null, | |
| 1488 | bold: 8 & n ? Wd.decode(d) : null, | |
| 1489 | italic: 16 & n ? Xd.decode(d) : null, | |
| 1490 | code: 32 & n ? Yd.decode(d) : null, | |
| 1491 | emoji: 64 & n ? Zd.decode(d) : null, | |
| 1492 | codeBlock: 128 & n ? $d.decode(d) : null, | |
| 1493 | strike: 256 & n ? _d.decode(d) : null, | |
| 1494 | translation: o >= 11 && 512 & n ? rt.decode(d) : null, | |
| 1495 | 1495 | } |
| 1496 | 1496 | }, |
| 1497 | 1497 | }, |
| 1498 | dn = e.array(e.frame(g)), | |
| 1499 | nn = e.frame(en), | |
| 1500 | on = e.frame(qd), | |
| 1501 | cn = { | |
| 1502 | preencode(d, n) { | |
| 1498 | oo = e.array(e.frame(g)), | |
| 1499 | no = e.frame(eo), | |
| 1500 | co = e.frame(qd), | |
| 1501 | ro = { | |
| 1502 | preencode(d, o) { | |
| 1503 | 1503 | ;(d.end++, |
| 1504 | n.text && e.string.preencode(d, n.text), | |
| 1505 | n.files && dn.preencode(d, n.files), | |
| 1506 | n.display && nn.preencode(d, n.display), | |
| 1507 | n.replyTo && c.preencode(d, n.replyTo), | |
| 1508 | n.parent && c.preencode(d, n.parent), | |
| 1509 | n.event && on.preencode(d, n.event)) | |
| 1504 | o.text && e.string.preencode(d, o.text), | |
| 1505 | o.files && oo.preencode(d, o.files), | |
| 1506 | o.display && no.preencode(d, o.display), | |
| 1507 | o.replyTo && c.preencode(d, o.replyTo), | |
| 1508 | o.parent && c.preencode(d, o.parent), | |
| 1509 | o.event && co.preencode(d, o.event)) | |
| 1510 | 1510 | }, |
| 1511 | encode(d, o) { | |
| 1511 | encode(d, n) { | |
| 1512 | 1512 | const r = |
| 1513 | (o.text ? 1 : 0) | | |
| 1514 | (o.files ? 2 : 0) | | |
| 1515 | (o.display ? 4 : 0) | | |
| 1516 | (o.replyTo ? 8 : 0) | | |
| 1517 | (o.parent ? 16 : 0) | | |
| 1518 | (o.event ? 32 : 0) | | |
| 1519 | (n >= 18 && o.forwarded ? 64 : 0) | |
| 1513 | (n.text ? 1 : 0) | | |
| 1514 | (n.files ? 2 : 0) | | |
| 1515 | (n.display ? 4 : 0) | | |
| 1516 | (n.replyTo ? 8 : 0) | | |
| 1517 | (n.parent ? 16 : 0) | | |
| 1518 | (n.event ? 32 : 0) | | |
| 1519 | (o >= 18 && n.forwarded ? 64 : 0) | |
| 1520 | 1520 | ;(e.uint.encode(d, r), |
| 1521 | o.text && e.string.encode(d, o.text), | |
| 1522 | o.files && dn.encode(d, o.files), | |
| 1523 | o.display && nn.encode(d, o.display), | |
| 1524 | o.replyTo && c.encode(d, o.replyTo), | |
| 1525 | o.parent && c.encode(d, o.parent), | |
| 1526 | o.event && on.encode(d, o.event)) | |
| 1521 | n.text && e.string.encode(d, n.text), | |
| 1522 | n.files && oo.encode(d, n.files), | |
| 1523 | n.display && no.encode(d, n.display), | |
| 1524 | n.replyTo && c.encode(d, n.replyTo), | |
| 1525 | n.parent && c.encode(d, n.parent), | |
| 1526 | n.event && co.encode(d, n.event)) | |
| 1527 | 1527 | }, |
| 1528 | 1528 | decode(d) { |
| 1529 | const o = e.uint.decode(d) | |
| 1529 | const n = e.uint.decode(d) | |
| 1530 | 1530 | return { |
| 1531 | text: 1 & o ? e.string.decode(d) : null, | |
| 1532 | files: 2 & o ? dn.decode(d) : null, | |
| 1533 | display: 4 & o ? nn.decode(d) : null, | |
| 1534 | replyTo: 8 & o ? c.decode(d) : null, | |
| 1535 | parent: 16 & o ? c.decode(d) : null, | |
| 1536 | event: 32 & o ? on.decode(d) : null, | |
| 1537 | forwarded: n >= 18 && !!(64 & o), | |
| 1531 | text: 1 & n ? e.string.decode(d) : null, | |
| 1532 | files: 2 & n ? oo.decode(d) : null, | |
| 1533 | display: 4 & n ? no.decode(d) : null, | |
| 1534 | replyTo: 8 & n ? c.decode(d) : null, | |
| 1535 | parent: 16 & n ? c.decode(d) : null, | |
| 1536 | event: 32 & n ? co.decode(d) : null, | |
| 1537 | forwarded: o >= 18 && !!(64 & n), | |
| 1538 | 1538 | } |
| 1539 | 1539 | }, |
| 1540 | 1540 | }, |
| 1541 | rn = Od, | |
| 1542 | tn = nn, | |
| 1543 | an = { | |
| 1544 | preencode(d, n) { | |
| 1541 | to = Ud, | |
| 1542 | io = no, | |
| 1543 | ao = { | |
| 1544 | preencode(d, o) { | |
| 1545 | 1545 | ;(d.end++, |
| 1546 | n.text && e.string.preencode(d, n.text), | |
| 1547 | n.files && rn.preencode(d, n.files), | |
| 1548 | n.display && tn.preencode(d, n.display), | |
| 1549 | n.replyTo && c.preencode(d, n.replyTo), | |
| 1550 | n.parent && c.preencode(d, n.parent)) | |
| 1546 | o.text && e.string.preencode(d, o.text), | |
| 1547 | o.files && to.preencode(d, o.files), | |
| 1548 | o.display && io.preencode(d, o.display), | |
| 1549 | o.replyTo && c.preencode(d, o.replyTo), | |
| 1550 | o.parent && c.preencode(d, o.parent)) | |
| 1551 | 1551 | }, |
| 1552 | encode(d, o) { | |
| 1552 | encode(d, n) { | |
| 1553 | 1553 | const r = |
| 1554 | (o.text ? 1 : 0) | | |
| 1555 | (o.files ? 2 : 0) | | |
| 1556 | (o.display ? 4 : 0) | | |
| 1557 | (o.replyTo ? 8 : 0) | | |
| 1558 | (o.parent ? 16 : 0) | | |
| 1559 | (n >= 18 && o.forwarded ? 32 : 0) | |
| 1554 | (n.text ? 1 : 0) | | |
| 1555 | (n.files ? 2 : 0) | | |
| 1556 | (n.display ? 4 : 0) | | |
| 1557 | (n.replyTo ? 8 : 0) | | |
| 1558 | (n.parent ? 16 : 0) | | |
| 1559 | (o >= 18 && n.forwarded ? 32 : 0) | |
| 1560 | 1560 | ;(e.uint.encode(d, r), |
| 1561 | o.text && e.string.encode(d, o.text), | |
| 1562 | o.files && rn.encode(d, o.files), | |
| 1563 | o.display && tn.encode(d, o.display), | |
| 1564 | o.replyTo && c.encode(d, o.replyTo), | |
| 1565 | o.parent && c.encode(d, o.parent)) | |
| 1561 | n.text && e.string.encode(d, n.text), | |
| 1562 | n.files && to.encode(d, n.files), | |
| 1563 | n.display && io.encode(d, n.display), | |
| 1564 | n.replyTo && c.encode(d, n.replyTo), | |
| 1565 | n.parent && c.encode(d, n.parent)) | |
| 1566 | 1566 | }, |
| 1567 | 1567 | decode(d) { |
| 1568 | const o = e.uint.decode(d) | |
| 1568 | const n = e.uint.decode(d) | |
| 1569 | 1569 | return { |
| 1570 | text: 1 & o ? e.string.decode(d) : null, | |
| 1571 | files: 2 & o ? rn.decode(d) : null, | |
| 1572 | display: 4 & o ? tn.decode(d) : null, | |
| 1573 | replyTo: 8 & o ? c.decode(d) : null, | |
| 1574 | parent: 16 & o ? c.decode(d) : null, | |
| 1575 | forwarded: n >= 18 && !!(32 & o), | |
| 1570 | text: 1 & n ? e.string.decode(d) : null, | |
| 1571 | files: 2 & n ? to.decode(d) : null, | |
| 1572 | display: 4 & n ? io.decode(d) : null, | |
| 1573 | replyTo: 8 & n ? c.decode(d) : null, | |
| 1574 | parent: 16 & n ? c.decode(d) : null, | |
| 1575 | forwarded: o >= 18 && !!(32 & n), | |
| 1576 | 1576 | } |
| 1577 | 1577 | }, |
| 1578 | 1578 | }, |
| 1579 | sn = dn, | |
| 1580 | pn = nn, | |
| 1581 | un = { | |
| 1582 | preencode(d, n) { | |
| 1579 | so = oo, | |
| 1580 | po = no, | |
| 1581 | uo = { | |
| 1582 | preencode(d, o) { | |
| 1583 | 1583 | ;(d.end++, |
| 1584 | n.text && e.string.preencode(d, n.text), | |
| 1585 | n.files && sn.preencode(d, n.files), | |
| 1586 | n.display && pn.preencode(d, n.display), | |
| 1587 | n.replyTo && c.preencode(d, n.replyTo), | |
| 1588 | n.parent && c.preencode(d, n.parent)) | |
| 1584 | o.text && e.string.preencode(d, o.text), | |
| 1585 | o.files && so.preencode(d, o.files), | |
| 1586 | o.display && po.preencode(d, o.display), | |
| 1587 | o.replyTo && c.preencode(d, o.replyTo), | |
| 1588 | o.parent && c.preencode(d, o.parent)) | |
| 1589 | 1589 | }, |
| 1590 | encode(d, o) { | |
| 1590 | encode(d, n) { | |
| 1591 | 1591 | const r = |
| 1592 | (o.text ? 1 : 0) | | |
| 1593 | (o.files ? 2 : 0) | | |
| 1594 | (o.display ? 4 : 0) | | |
| 1595 | (o.replyTo ? 8 : 0) | | |
| 1596 | (o.parent ? 16 : 0) | | |
| 1597 | (n >= 18 && o.forwarded ? 32 : 0) | |
| 1592 | (n.text ? 1 : 0) | | |
| 1593 | (n.files ? 2 : 0) | | |
| 1594 | (n.display ? 4 : 0) | | |
| 1595 | (n.replyTo ? 8 : 0) | | |
| 1596 | (n.parent ? 16 : 0) | | |
| 1597 | (o >= 18 && n.forwarded ? 32 : 0) | |
| 1598 | 1598 | ;(e.uint.encode(d, r), |
| 1599 | o.text && e.string.encode(d, o.text), | |
| 1600 | o.files && sn.encode(d, o.files), | |
| 1601 | o.display && pn.encode(d, o.display), | |
| 1602 | o.replyTo && c.encode(d, o.replyTo), | |
| 1603 | o.parent && c.encode(d, o.parent)) | |
| 1599 | n.text && e.string.encode(d, n.text), | |
| 1600 | n.files && so.encode(d, n.files), | |
| 1601 | n.display && po.encode(d, n.display), | |
| 1602 | n.replyTo && c.encode(d, n.replyTo), | |
| 1603 | n.parent && c.encode(d, n.parent)) | |
| 1604 | 1604 | }, |
| 1605 | 1605 | decode(d) { |
| 1606 | const o = e.uint.decode(d) | |
| 1606 | const n = e.uint.decode(d) | |
| 1607 | 1607 | return { |
| 1608 | text: 1 & o ? e.string.decode(d) : null, | |
| 1609 | files: 2 & o ? sn.decode(d) : null, | |
| 1610 | display: 4 & o ? pn.decode(d) : null, | |
| 1611 | replyTo: 8 & o ? c.decode(d) : null, | |
| 1612 | parent: 16 & o ? c.decode(d) : null, | |
| 1613 | forwarded: n >= 18 && !!(32 & o), | |
| 1608 | text: 1 & n ? e.string.decode(d) : null, | |
| 1609 | files: 2 & n ? so.decode(d) : null, | |
| 1610 | display: 4 & n ? po.decode(d) : null, | |
| 1611 | replyTo: 8 & n ? c.decode(d) : null, | |
| 1612 | parent: 16 & n ? c.decode(d) : null, | |
| 1613 | forwarded: o >= 18 && !!(32 & n), | |
| 1614 | 1614 | } |
| 1615 | 1615 | }, |
| 1616 | 1616 | }, |
| 1617 | ln = { | |
| 1617 | lo = { | |
| 1618 | 1618 | preencode(e, d) { |
| 1619 | 1619 | e.end++ |
| 1620 | 1620 | }, |
| 1621 | encode(d, n) { | |
| 1622 | const o = (n.isEdited ? 1 : 0) | (n.isDeleted ? 2 : 0) | (n.isPinned ? 4 : 0) | |
| 1623 | e.uint.encode(d, o) | |
| 1621 | encode(d, o) { | |
| 1622 | const n = (o.isEdited ? 1 : 0) | (o.isDeleted ? 2 : 0) | (o.isPinned ? 4 : 0) | |
| 1623 | e.uint.encode(d, n) | |
| 1624 | 1624 | }, |
| 1625 | 1625 | decode(d) { |
| 1626 | const n = e.uint.decode(d) | |
| 1627 | return { isEdited: !!(1 & n), isDeleted: !!(2 & n), isPinned: !!(4 & n) } | |
| 1626 | const o = e.uint.decode(d) | |
| 1627 | return { isEdited: !!(1 & o), isDeleted: !!(2 & o), isPinned: !!(4 & o) } | |
| 1628 | 1628 | }, |
| 1629 | 1629 | }, |
| 1630 | fn = { | |
| 1631 | preencode(d, n) { | |
| 1632 | ;(e.uint.preencode(d, n.thread), e.uint.preencode(d, n.index)) | |
| 1630 | fo = { | |
| 1631 | preencode(d, o) { | |
| 1632 | ;(e.uint.preencode(d, o.thread), e.uint.preencode(d, o.index)) | |
| 1633 | 1633 | }, |
| 1634 | encode(d, n) { | |
| 1635 | ;(e.uint.encode(d, n.thread), e.uint.encode(d, n.index)) | |
| 1634 | encode(d, o) { | |
| 1635 | ;(e.uint.encode(d, o.thread), e.uint.encode(d, o.index)) | |
| 1636 | 1636 | }, |
| 1637 | 1637 | decode: (d) => ({ thread: e.uint.decode(d), index: e.uint.decode(d) }), |
| 1638 | 1638 | }, |
| 1639 | mn = e.frame(J), | |
| 1640 | yn = { | |
| 1641 | preencode(d, n) { | |
| 1642 | ;(e.uint.preencode(d, n.id), | |
| 1643 | e.uint.preencode(d, n.count), | |
| 1639 | mo = e.frame(O), | |
| 1640 | yo = { | |
| 1641 | preencode(d, o) { | |
| 1642 | ;(e.uint.preencode(d, o.id), | |
| 1643 | e.uint.preencode(d, o.count), | |
| 1644 | 1644 | d.end++, |
| 1645 | n.parent && c.preencode(d, n.parent), | |
| 1646 | n.stats && mn.preencode(d, n.stats)) | |
| 1645 | o.parent && c.preencode(d, o.parent), | |
| 1646 | o.stats && mo.preencode(d, o.stats)) | |
| 1647 | 1647 | }, |
| 1648 | encode(d, n) { | |
| 1649 | const o = (n.parent ? 1 : 0) | (n.stats ? 2 : 0) | |
| 1650 | ;(e.uint.encode(d, n.id), | |
| 1651 | e.uint.encode(d, n.count), | |
| 1652 | e.uint.encode(d, o), | |
| 1653 | n.parent && c.encode(d, n.parent), | |
| 1654 | n.stats && mn.encode(d, n.stats)) | |
| 1648 | encode(d, o) { | |
| 1649 | const n = (o.parent ? 1 : 0) | (o.stats ? 2 : 0) | |
| 1650 | ;(e.uint.encode(d, o.id), | |
| 1651 | e.uint.encode(d, o.count), | |
| 1652 | e.uint.encode(d, n), | |
| 1653 | o.parent && c.encode(d, o.parent), | |
| 1654 | o.stats && mo.encode(d, o.stats)) | |
| 1655 | 1655 | }, |
| 1656 | 1656 | decode(d) { |
| 1657 | const n = e.uint.decode(d), | |
| 1658 | o = e.uint.decode(d), | |
| 1657 | const o = e.uint.decode(d), | |
| 1658 | n = e.uint.decode(d), | |
| 1659 | 1659 | r = e.uint.decode(d) |
| 1660 | 1660 | return { |
| 1661 | id: n, | |
| 1662 | count: o, | |
| 1661 | id: o, | |
| 1662 | count: n, | |
| 1663 | 1663 | parent: 1 & r ? c.decode(d) : null, |
| 1664 | stats: 2 & r ? mn.decode(d) : null, | |
| 1664 | stats: 2 & r ? mo.decode(d) : null, | |
| 1665 | 1665 | } |
| 1666 | 1666 | }, |
| 1667 | 1667 | }, |
| 1668 | xn = e.frame(ln), | |
| 1669 | bn = e.frame(an), | |
| 1670 | kn = e.frame(Ld), | |
| 1671 | vn = { | |
| 1672 | preencode(d, n) { | |
| 1673 | ;(fn.preencode(d, n.id), | |
| 1674 | c.preencode(d, n.oplog), | |
| 1675 | e.uint.preencode(d, n.clock), | |
| 1676 | e.uint.preencode(d, n.timestamp), | |
| 1668 | xo = e.frame(lo), | |
| 1669 | bo = e.frame(ao), | |
| 1670 | ko = e.frame(Ld), | |
| 1671 | vo = { | |
| 1672 | preencode(d, o) { | |
| 1673 | ;(fo.preencode(d, o.id), | |
| 1674 | c.preencode(d, o.oplog), | |
| 1675 | e.uint.preencode(d, o.clock), | |
| 1676 | e.uint.preencode(d, o.timestamp), | |
| 1677 | 1677 | d.end++, |
| 1678 | n.editedAt && e.uint.preencode(d, n.editedAt), | |
| 1679 | xn.preencode(d, n.status), | |
| 1680 | n.message && bn.preencode(d, n.message), | |
| 1681 | n.event && kn.preencode(d, n.event)) | |
| 1678 | o.editedAt && e.uint.preencode(d, o.editedAt), | |
| 1679 | xo.preencode(d, o.status), | |
| 1680 | o.message && bo.preencode(d, o.message), | |
| 1681 | o.event && ko.preencode(d, o.event)) | |
| 1682 | 1682 | }, |
| 1683 | encode(d, n) { | |
| 1684 | const o = (n.editedAt ? 1 : 0) | (n.message ? 2 : 0) | (n.event ? 4 : 0) | |
| 1685 | ;(fn.encode(d, n.id), | |
| 1686 | c.encode(d, n.oplog), | |
| 1687 | e.uint.encode(d, n.clock), | |
| 1688 | e.uint.encode(d, n.timestamp), | |
| 1689 | e.uint.encode(d, o), | |
| 1690 | n.editedAt && e.uint.encode(d, n.editedAt), | |
| 1691 | xn.encode(d, n.status), | |
| 1692 | n.message && bn.encode(d, n.message), | |
| 1693 | n.event && kn.encode(d, n.event)) | |
| 1683 | encode(d, o) { | |
| 1684 | const n = (o.editedAt ? 1 : 0) | (o.message ? 2 : 0) | (o.event ? 4 : 0) | |
| 1685 | ;(fo.encode(d, o.id), | |
| 1686 | c.encode(d, o.oplog), | |
| 1687 | e.uint.encode(d, o.clock), | |
| 1688 | e.uint.encode(d, o.timestamp), | |
| 1689 | e.uint.encode(d, n), | |
| 1690 | o.editedAt && e.uint.encode(d, o.editedAt), | |
| 1691 | xo.encode(d, o.status), | |
| 1692 | o.message && bo.encode(d, o.message), | |
| 1693 | o.event && ko.encode(d, o.event)) | |
| 1694 | 1694 | }, |
| 1695 | 1695 | decode(d) { |
| 1696 | const n = fn.decode(d), | |
| 1697 | o = c.decode(d), | |
| 1696 | const o = fo.decode(d), | |
| 1697 | n = c.decode(d), | |
| 1698 | 1698 | r = e.uint.decode(d), |
| 1699 | 1699 | t = e.uint.decode(d), |
| 1700 | 1700 | i = e.uint.decode(d) |
| 1701 | 1701 | return { |
| 1702 | id: n, | |
| 1703 | oplog: o, | |
| 1702 | id: o, | |
| 1703 | oplog: n, | |
| 1704 | 1704 | clock: r, |
| 1705 | 1705 | timestamp: t, |
| 1706 | 1706 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 1707 | status: xn.decode(d), | |
| 1708 | message: 2 & i ? bn.decode(d) : null, | |
| 1709 | event: 4 & i ? kn.decode(d) : null, | |
| 1707 | status: xo.decode(d), | |
| 1708 | message: 2 & i ? bo.decode(d) : null, | |
| 1709 | event: 4 & i ? ko.decode(d) : null, | |
| 1710 | 1710 | } |
| 1711 | 1711 | }, |
| 1712 | 1712 | }, |
| 1713 | gn = xn, | |
| 1714 | hn = e.frame(un), | |
| 1715 | Kn = kn, | |
| 1716 | wn = { | |
| 1717 | preencode(d, n) { | |
| 1718 | ;(fn.preencode(d, n.id), | |
| 1719 | c.preencode(d, n.oplog), | |
| 1720 | e.uint.preencode(d, n.clock), | |
| 1721 | e.uint.preencode(d, n.timestamp), | |
| 1713 | go = xo, | |
| 1714 | ho = e.frame(uo), | |
| 1715 | Ko = ko, | |
| 1716 | wo = { | |
| 1717 | preencode(d, o) { | |
| 1718 | ;(fo.preencode(d, o.id), | |
| 1719 | c.preencode(d, o.oplog), | |
| 1720 | e.uint.preencode(d, o.clock), | |
| 1721 | e.uint.preencode(d, o.timestamp), | |
| 1722 | 1722 | d.end++, |
| 1723 | n.editedAt && e.uint.preencode(d, n.editedAt), | |
| 1724 | gn.preencode(d, n.status), | |
| 1725 | n.message && hn.preencode(d, n.message), | |
| 1726 | n.event && Kn.preencode(d, n.event)) | |
| 1723 | o.editedAt && e.uint.preencode(d, o.editedAt), | |
| 1724 | go.preencode(d, o.status), | |
| 1725 | o.message && ho.preencode(d, o.message), | |
| 1726 | o.event && Ko.preencode(d, o.event)) | |
| 1727 | 1727 | }, |
| 1728 | encode(d, n) { | |
| 1729 | const o = (n.editedAt ? 1 : 0) | (n.message ? 2 : 0) | (n.event ? 4 : 0) | |
| 1730 | ;(fn.encode(d, n.id), | |
| 1731 | c.encode(d, n.oplog), | |
| 1732 | e.uint.encode(d, n.clock), | |
| 1733 | e.uint.encode(d, n.timestamp), | |
| 1734 | e.uint.encode(d, o), | |
| 1735 | n.editedAt && e.uint.encode(d, n.editedAt), | |
| 1736 | gn.encode(d, n.status), | |
| 1737 | n.message && hn.encode(d, n.message), | |
| 1738 | n.event && Kn.encode(d, n.event)) | |
| 1728 | encode(d, o) { | |
| 1729 | const n = (o.editedAt ? 1 : 0) | (o.message ? 2 : 0) | (o.event ? 4 : 0) | |
| 1730 | ;(fo.encode(d, o.id), | |
| 1731 | c.encode(d, o.oplog), | |
| 1732 | e.uint.encode(d, o.clock), | |
| 1733 | e.uint.encode(d, o.timestamp), | |
| 1734 | e.uint.encode(d, n), | |
| 1735 | o.editedAt && e.uint.encode(d, o.editedAt), | |
| 1736 | go.encode(d, o.status), | |
| 1737 | o.message && ho.encode(d, o.message), | |
| 1738 | o.event && Ko.encode(d, o.event)) | |
| 1739 | 1739 | }, |
| 1740 | 1740 | decode(d) { |
| 1741 | const n = fn.decode(d), | |
| 1742 | o = c.decode(d), | |
| 1741 | const o = fo.decode(d), | |
| 1742 | n = c.decode(d), | |
| 1743 | 1743 | r = e.uint.decode(d), |
| 1744 | 1744 | t = e.uint.decode(d), |
| 1745 | 1745 | i = e.uint.decode(d) |
| 1746 | 1746 | return { |
| 1747 | id: n, | |
| 1748 | oplog: o, | |
| 1747 | id: o, | |
| 1748 | oplog: n, | |
| 1749 | 1749 | clock: r, |
| 1750 | 1750 | timestamp: t, |
| 1751 | 1751 | editedAt: 1 & i ? e.uint.decode(d) : 0, |
| 1752 | status: gn.decode(d), | |
| 1753 | message: 2 & i ? hn.decode(d) : null, | |
| 1754 | event: 4 & i ? Kn.decode(d) : null, | |
| 1752 | status: go.decode(d), | |
| 1753 | message: 2 & i ? ho.decode(d) : null, | |
| 1754 | event: 4 & i ? Ko.decode(d) : null, | |
| 1755 | 1755 | } |
| 1756 | 1756 | }, |
| 1757 | 1757 | }, |
| 1758 | Tn = _, | |
| 1759 | Pn = e.frame(cn), | |
| 1760 | An = { | |
| 1758 | To = _, | |
| 1759 | Po = e.frame(ro), | |
| 1760 | Ao = { | |
| 1761 | 1761 | preencode(e, d) { |
| 1762 | ;(Tn.preencode(e, d.header), Pn.preencode(e, d.message)) | |
| 1762 | ;(To.preencode(e, d.header), Po.preencode(e, d.message)) | |
| 1763 | 1763 | }, |
| 1764 | 1764 | encode(e, d) { |
| 1765 | ;(Tn.encode(e, d.header), Pn.encode(e, d.message)) | |
| 1765 | ;(To.encode(e, d.header), Po.encode(e, d.message)) | |
| 1766 | 1766 | }, |
| 1767 | decode: (e) => ({ header: Tn.decode(e), message: Pn.decode(e) }), | |
| 1767 | decode: (e) => ({ header: To.decode(e), message: Po.decode(e) }), | |
| 1768 | 1768 | }, |
| 1769 | Rn = _, | |
| 1770 | Dn = { | |
| 1769 | Ro = _, | |
| 1770 | Do = { | |
| 1771 | 1771 | preencode(e, d) { |
| 1772 | ;(Rn.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1772 | ;(Ro.preencode(e, d.header), c.preencode(e, d.oplog)) | |
| 1773 | 1773 | }, |
| 1774 | 1774 | encode(e, d) { |
| 1775 | ;(Rn.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1775 | ;(Ro.encode(e, d.header), c.encode(e, d.oplog)) | |
| 1776 | 1776 | }, |
| 1777 | decode: (e) => ({ header: Rn.decode(e), oplog: c.decode(e) }), | |
| 1777 | decode: (e) => ({ header: Ro.decode(e), oplog: c.decode(e) }), | |
| 1778 | 1778 | }, |
| 1779 | Sn = _, | |
| 1780 | Cn = Pn, | |
| 1781 | Mn = { | |
| 1779 | Mo = _, | |
| 1780 | So = Po, | |
| 1781 | Co = { | |
| 1782 | 1782 | preencode(e, d) { |
| 1783 | ;(Sn.preencode(e, d.header), c.preencode(e, d.oplog), Cn.preencode(e, d.message)) | |
| 1783 | ;(Mo.preencode(e, d.header), c.preencode(e, d.oplog), So.preencode(e, d.message)) | |
| 1784 | 1784 | }, |
| 1785 | 1785 | encode(e, d) { |
| 1786 | ;(Sn.encode(e, d.header), c.encode(e, d.oplog), Cn.encode(e, d.message)) | |
| 1786 | ;(Mo.encode(e, d.header), c.encode(e, d.oplog), So.encode(e, d.message)) | |
| 1787 | 1787 | }, |
| 1788 | decode: (e) => ({ header: Sn.decode(e), oplog: c.decode(e), message: Cn.decode(e) }), | |
| 1788 | decode: (e) => ({ header: Mo.decode(e), oplog: c.decode(e), message: So.decode(e) }), | |
| 1789 | 1789 | }, |
| 1790 | Ln = _, | |
| 1791 | qn = { | |
| 1790 | Lo = _, | |
| 1791 | qo = { | |
| 1792 | 1792 | preencode(e, d) { |
| 1793 | ;(Ln.preencode(e, d.header), c.preencode(e, d.oplog), e.end++) | |
| 1793 | ;(Lo.preencode(e, d.header), c.preencode(e, d.oplog), e.end++) | |
| 1794 | 1794 | }, |
| 1795 | encode(d, n) { | |
| 1796 | const o = n.isPinned ? 1 : 0 | |
| 1797 | ;(Ln.encode(d, n.header), c.encode(d, n.oplog), e.uint.encode(d, o)) | |
| 1795 | encode(d, o) { | |
| 1796 | const n = o.isPinned ? 1 : 0 | |
| 1797 | ;(Lo.encode(d, o.header), c.encode(d, o.oplog), e.uint.encode(d, n)) | |
| 1798 | 1798 | }, |
| 1799 | 1799 | decode: (d) => ({ |
| 1800 | header: Ln.decode(d), | |
| 1800 | header: Lo.decode(d), | |
| 1801 | 1801 | oplog: c.decode(d), |
| 1802 | 1802 | isPinned: !!(1 & e.uint.decode(d)), |
| 1803 | 1803 | }), |
| 1804 | 1804 | }, |
| 1805 | Fn = { | |
| 1806 | preencode(d, n) { | |
| 1807 | ;(fn.preencode(d, n.id), | |
| 1808 | e.fixed32.preencode(d, n.sender), | |
| 1809 | e.uint.preencode(d, n.clock), | |
| 1810 | e.string.preencode(d, n.reaction)) | |
| 1805 | Fo = { | |
| 1806 | preencode(d, o) { | |
| 1807 | ;(fo.preencode(d, o.id), | |
| 1808 | e.fixed32.preencode(d, o.sender), | |
| 1809 | e.uint.preencode(d, o.clock), | |
| 1810 | e.string.preencode(d, o.reaction)) | |
| 1811 | 1811 | }, |
| 1812 | encode(d, n) { | |
| 1813 | ;(fn.encode(d, n.id), | |
| 1814 | e.fixed32.encode(d, n.sender), | |
| 1815 | e.uint.encode(d, n.clock), | |
| 1816 | e.string.encode(d, n.reaction)) | |
| 1812 | encode(d, o) { | |
| 1813 | ;(fo.encode(d, o.id), | |
| 1814 | e.fixed32.encode(d, o.sender), | |
| 1815 | e.uint.encode(d, o.clock), | |
| 1816 | e.string.encode(d, o.reaction)) | |
| 1817 | 1817 | }, |
| 1818 | 1818 | decode: (d) => ({ |
| 1819 | id: fn.decode(d), | |
| 1819 | id: fo.decode(d), | |
| 1820 | 1820 | sender: e.fixed32.decode(d), |
| 1821 | 1821 | clock: e.uint.decode(d), |
| 1822 | 1822 | reaction: e.string.decode(d), |
| 1823 | 1823 | }), |
| 1824 | 1824 | }, |
| 1825 | En = { | |
| 1826 | preencode(d, n) { | |
| 1827 | ;(e.string.preencode(d, n.text), e.uint.preencode(d, n.count)) | |
| 1825 | Eo = { | |
| 1826 | preencode(d, o) { | |
| 1827 | ;(e.string.preencode(d, o.text), e.uint.preencode(d, o.count)) | |
| 1828 | 1828 | }, |
| 1829 | encode(d, n) { | |
| 1830 | ;(e.string.encode(d, n.text), e.uint.encode(d, n.count)) | |
| 1829 | encode(d, o) { | |
| 1830 | ;(e.string.encode(d, o.text), e.uint.encode(d, o.count)) | |
| 1831 | 1831 | }, |
| 1832 | 1832 | decode: (d) => ({ text: e.string.decode(d), count: e.uint.decode(d) }), |
| 1833 | 1833 | }, |
| 1834 | Bn = e.array(e.frame(En)), | |
| 1835 | In = { | |
| 1836 | preencode(d, o) { | |
| 1837 | ;(fn.preencode(d, o.id), | |
| 1838 | e.uint.preencode(d, o.total), | |
| 1839 | Bn.preencode(d, o.reactions), | |
| 1834 | Bo = e.array(e.frame(Eo)), | |
| 1835 | Io = { | |
| 1836 | preencode(d, n) { | |
| 1837 | ;(fo.preencode(d, n.id), | |
| 1838 | e.uint.preencode(d, n.total), | |
| 1839 | Bo.preencode(d, n.reactions), | |
| 1840 | 1840 | d.end++, |
| 1841 | n >= 11 && o.editedAt && e.uint.preencode(d, o.editedAt)) | |
| 1841 | o >= 11 && n.editedAt && e.uint.preencode(d, n.editedAt)) | |
| 1842 | 1842 | }, |
| 1843 | encode(d, o) { | |
| 1844 | const c = n >= 11 && o.editedAt ? 1 : 0 | |
| 1845 | ;(fn.encode(d, o.id), | |
| 1846 | e.uint.encode(d, o.total), | |
| 1847 | Bn.encode(d, o.reactions), | |
| 1843 | encode(d, n) { | |
| 1844 | const c = o >= 11 && n.editedAt ? 1 : 0 | |
| 1845 | ;(fo.encode(d, n.id), | |
| 1846 | e.uint.encode(d, n.total), | |
| 1847 | Bo.encode(d, n.reactions), | |
| 1848 | 1848 | e.uint.encode(d, c), |
| 1849 | n >= 11 && o.editedAt && e.uint.encode(d, o.editedAt)) | |
| 1849 | o >= 11 && n.editedAt && e.uint.encode(d, n.editedAt)) | |
| 1850 | 1850 | }, |
| 1851 | 1851 | decode(d) { |
| 1852 | const o = fn.decode(d), | |
| 1852 | const n = fo.decode(d), | |
| 1853 | 1853 | c = e.uint.decode(d), |
| 1854 | r = Bn.decode(d), | |
| 1854 | r = Bo.decode(d), | |
| 1855 | 1855 | t = d.start < d.end ? e.uint.decode(d) : 0 |
| 1856 | return { id: o, total: c, reactions: r, editedAt: n >= 11 && 1 & t ? e.uint.decode(d) : 0 } | |
| 1856 | return { id: n, total: c, reactions: r, editedAt: o >= 11 && 1 & t ? e.uint.decode(d) : 0 } | |
| 1857 | 1857 | }, |
| 1858 | 1858 | }, |
| 1859 | Nn = _, | |
| 1860 | jn = { | |
| 1861 | preencode(d, n) { | |
| 1862 | ;(Nn.preencode(d, n.header), c.preencode(d, n.oplog), e.string.preencode(d, n.reaction)) | |
| 1859 | No = _, | |
| 1860 | jo = { | |
| 1861 | preencode(d, o) { | |
| 1862 | ;(No.preencode(d, o.header), c.preencode(d, o.oplog), e.string.preencode(d, o.reaction)) | |
| 1863 | 1863 | }, |
| 1864 | encode(d, n) { | |
| 1865 | ;(Nn.encode(d, n.header), c.encode(d, n.oplog), e.string.encode(d, n.reaction)) | |
| 1864 | encode(d, o) { | |
| 1865 | ;(No.encode(d, o.header), c.encode(d, o.oplog), e.string.encode(d, o.reaction)) | |
| 1866 | 1866 | }, |
| 1867 | decode: (d) => ({ header: Nn.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1867 | decode: (d) => ({ header: No.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1868 | 1868 | }, |
| 1869 | On = _, | |
| 1870 | Jn = { | |
| 1871 | preencode(d, n) { | |
| 1872 | ;(On.preencode(d, n.header), c.preencode(d, n.oplog), e.string.preencode(d, n.reaction)) | |
| 1869 | Uo = _, | |
| 1870 | Oo = { | |
| 1871 | preencode(d, o) { | |
| 1872 | ;(Uo.preencode(d, o.header), c.preencode(d, o.oplog), e.string.preencode(d, o.reaction)) | |
| 1873 | 1873 | }, |
| 1874 | encode(d, n) { | |
| 1875 | ;(On.encode(d, n.header), c.encode(d, n.oplog), e.string.encode(d, n.reaction)) | |
| 1874 | encode(d, o) { | |
| 1875 | ;(Uo.encode(d, o.header), c.encode(d, o.oplog), e.string.encode(d, o.reaction)) | |
| 1876 | 1876 | }, |
| 1877 | decode: (d) => ({ header: On.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1877 | decode: (d) => ({ header: Uo.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), | |
| 1878 | 1878 | }, |
| 1879 | Un = _, | |
| 1880 | Vn = e.frame(Z), | |
| 1881 | Hn = { | |
| 1882 | preencode(d, n) { | |
| 1883 | ;(Un.preencode(d, n.header), e.uint.preencode(d, n.key), Vn.preencode(d, n.config)) | |
| 1879 | Jo = _, | |
| 1880 | Vo = e.frame(Z), | |
| 1881 | Ho = { | |
| 1882 | preencode(d, o) { | |
| 1883 | ;(Jo.preencode(d, o.header), e.uint.preencode(d, o.key), Vo.preencode(d, o.config)) | |
| 1884 | 1884 | }, |
| 1885 | encode(d, n) { | |
| 1886 | ;(Un.encode(d, n.header), e.uint.encode(d, n.key), Vn.encode(d, n.config)) | |
| 1885 | encode(d, o) { | |
| 1886 | ;(Jo.encode(d, o.header), e.uint.encode(d, o.key), Vo.encode(d, o.config)) | |
| 1887 | 1887 | }, |
| 1888 | decode: (d) => ({ header: Un.decode(d), key: e.uint.decode(d), config: Vn.decode(d) }), | |
| 1888 | decode: (d) => ({ header: Jo.decode(d), key: e.uint.decode(d), config: Vo.decode(d) }), | |
| 1889 | 1889 | }, |
| 1890 | zn = { | |
| 1891 | preencode(d, n) { | |
| 1892 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 1893 | e.string.preencode(d, n.displayName), | |
| 1890 | zo = { | |
| 1891 | preencode(d, o) { | |
| 1892 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 1893 | e.string.preencode(d, o.displayName), | |
| 1894 | 1894 | d.end++, |
| 1895 | n.avatar && ct.preencode(d, n.avatar)) | |
| 1895 | o.avatar && tt.preencode(d, o.avatar)) | |
| 1896 | 1896 | }, |
| 1897 | encode(d, n) { | |
| 1898 | const o = n.avatar ? 1 : 0 | |
| 1899 | ;(e.fixed32.encode(d, n.memberKey), | |
| 1900 | e.string.encode(d, n.displayName), | |
| 1901 | e.uint.encode(d, o), | |
| 1902 | n.avatar && ct.encode(d, n.avatar)) | |
| 1897 | encode(d, o) { | |
| 1898 | const n = o.avatar ? 1 : 0 | |
| 1899 | ;(e.fixed32.encode(d, o.memberKey), | |
| 1900 | e.string.encode(d, o.displayName), | |
| 1901 | e.uint.encode(d, n), | |
| 1902 | o.avatar && tt.encode(d, o.avatar)) | |
| 1903 | 1903 | }, |
| 1904 | 1904 | decode: (d) => ({ |
| 1905 | 1905 | memberKey: e.fixed32.decode(d), |
| 1906 | 1906 | displayName: e.string.decode(d), |
| 1907 | avatar: 1 & e.uint.decode(d) ? ct.decode(d) : null, | |
| 1907 | avatar: 1 & e.uint.decode(d) ? tt.decode(d) : null, | |
| 1908 | 1908 | }), |
| 1909 | 1909 | }, |
| 1910 | Gn = { | |
| 1911 | preencode(d, n) { | |
| 1912 | ;(e.fixed32.preencode(d, n.key), d.end++, n.username && e.string.preencode(d, n.username)) | |
| 1910 | Go = { | |
| 1911 | preencode(d, o) { | |
| 1912 | ;(e.fixed32.preencode(d, o.key), d.end++, o.username && e.string.preencode(d, o.username)) | |
| 1913 | 1913 | }, |
| 1914 | encode(d, n) { | |
| 1915 | const o = n.username ? 1 : 0 | |
| 1916 | ;(e.fixed32.encode(d, n.key), | |
| 1917 | e.uint.encode(d, o), | |
| 1918 | n.username && e.string.encode(d, n.username)) | |
| 1914 | encode(d, o) { | |
| 1915 | const n = o.username ? 1 : 0 | |
| 1916 | ;(e.fixed32.encode(d, o.key), | |
| 1917 | e.uint.encode(d, n), | |
| 1918 | o.username && e.string.encode(d, o.username)) | |
| 1919 | 1919 | }, |
| 1920 | 1920 | decode: (d) => ({ |
| 1921 | 1921 | key: e.fixed32.decode(d), |
| 1922 | 1922 | username: 1 & e.uint.decode(d) ? e.string.decode(d) : null, |
| 1923 | 1923 | }), |
| 1924 | 1924 | }, |
| 1925 | Qn = e.frame(Gn), | |
| 1926 | Wn = { | |
| 1927 | preencode(d, n) { | |
| 1928 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 1925 | Qo = e.frame(Go), | |
| 1926 | Wo = { | |
| 1927 | preencode(d, o) { | |
| 1928 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 1929 | 1929 | d.end++, |
| 1930 | n.discoveryCoreKey && e.fixed32.preencode(d, n.discoveryCoreKey), | |
| 1931 | n.userRegistry && Qn.preencode(d, n.userRegistry)) | |
| 1930 | o.discoveryCoreKey && e.fixed32.preencode(d, o.discoveryCoreKey), | |
| 1931 | o.userRegistry && Qo.preencode(d, o.userRegistry)) | |
| 1932 | 1932 | }, |
| 1933 | encode(d, n) { | |
| 1934 | const o = (n.discoveryCoreKey ? 1 : 0) | (n.userRegistry ? 2 : 0) | |
| 1935 | ;(e.fixed32.encode(d, n.publicKey), | |
| 1936 | e.uint.encode(d, o), | |
| 1937 | n.discoveryCoreKey && e.fixed32.encode(d, n.discoveryCoreKey), | |
| 1938 | n.userRegistry && Qn.encode(d, n.userRegistry)) | |
| 1933 | encode(d, o) { | |
| 1934 | const n = (o.discoveryCoreKey ? 1 : 0) | (o.userRegistry ? 2 : 0) | |
| 1935 | ;(e.fixed32.encode(d, o.publicKey), | |
| 1936 | e.uint.encode(d, n), | |
| 1937 | o.discoveryCoreKey && e.fixed32.encode(d, o.discoveryCoreKey), | |
| 1938 | o.userRegistry && Qo.encode(d, o.userRegistry)) | |
| 1939 | 1939 | }, |
| 1940 | 1940 | decode(d) { |
| 1941 | const n = e.fixed32.decode(d), | |
| 1942 | o = e.uint.decode(d) | |
| 1941 | const o = e.fixed32.decode(d), | |
| 1942 | n = e.uint.decode(d) | |
| 1943 | 1943 | return { |
| 1944 | publicKey: n, | |
| 1945 | discoveryCoreKey: 1 & o ? e.fixed32.decode(d) : null, | |
| 1946 | userRegistry: 2 & o ? Qn.decode(d) : null, | |
| 1944 | publicKey: o, | |
| 1945 | discoveryCoreKey: 1 & n ? e.fixed32.decode(d) : null, | |
| 1946 | userRegistry: 2 & n ? Qo.decode(d) : null, | |
| 1947 | 1947 | } |
| 1948 | 1948 | }, |
| 1949 | 1949 | }, |
| 1950 | Xn = _, | |
| 1951 | Yn = e.frame(Q), | |
| 1952 | Zn = e.frame(W), | |
| 1953 | $n = Vn, | |
| 1954 | _n = e.frame(Wn), | |
| 1955 | eo = be, | |
| 1956 | no = e.array(e.frame(le)), | |
| 1957 | oo = { | |
| 1950 | Xo = _, | |
| 1951 | Yo = e.frame(Q), | |
| 1952 | Zo = e.frame(W), | |
| 1953 | $o = Vo, | |
| 1954 | _o = e.frame(Wo), | |
| 1955 | en = be, | |
| 1956 | dn = e.array(e.frame(le)), | |
| 1957 | on = { | |
| 1958 | 1958 | preencode(e, d) { |
| 1959 | ;(Xn.preencode(e, d.header), | |
| 1960 | Yn.preencode(e, d.digest), | |
| 1961 | Zn.preencode(e, d.capabilities), | |
| 1959 | ;(Xo.preencode(e, d.header), | |
| 1960 | Yo.preencode(e, d.digest), | |
| 1961 | Zo.preencode(e, d.capabilities), | |
| 1962 | 1962 | e.end++, |
| 1963 | d.config && $n.preencode(e, d.config), | |
| 1964 | d.identity && _n.preencode(e, d.identity), | |
| 1965 | d.bootstrapDevice && eo.preencode(e, d.bootstrapDevice), | |
| 1966 | d.initialMembers && no.preencode(e, d.initialMembers)) | |
| 1963 | d.config && $o.preencode(e, d.config), | |
| 1964 | d.identity && _o.preencode(e, d.identity), | |
| 1965 | d.bootstrapDevice && en.preencode(e, d.bootstrapDevice), | |
| 1966 | d.initialMembers && dn.preencode(e, d.initialMembers)) | |
| 1967 | 1967 | }, |
| 1968 | encode(d, n) { | |
| 1969 | const o = | |
| 1970 | (n.config ? 1 : 0) | | |
| 1971 | (n.identity ? 2 : 0) | | |
| 1972 | (n.bootstrapDevice ? 4 : 0) | | |
| 1973 | (n.initialMembers ? 8 : 0) | |
| 1974 | ;(Xn.encode(d, n.header), | |
| 1975 | Yn.encode(d, n.digest), | |
| 1976 | Zn.encode(d, n.capabilities), | |
| 1977 | e.uint.encode(d, o), | |
| 1978 | n.config && $n.encode(d, n.config), | |
| 1979 | n.identity && _n.encode(d, n.identity), | |
| 1980 | n.bootstrapDevice && eo.encode(d, n.bootstrapDevice), | |
| 1981 | n.initialMembers && no.encode(d, n.initialMembers)) | |
| 1968 | encode(d, o) { | |
| 1969 | const n = | |
| 1970 | (o.config ? 1 : 0) | | |
| 1971 | (o.identity ? 2 : 0) | | |
| 1972 | (o.bootstrapDevice ? 4 : 0) | | |
| 1973 | (o.initialMembers ? 8 : 0) | |
| 1974 | ;(Xo.encode(d, o.header), | |
| 1975 | Yo.encode(d, o.digest), | |
| 1976 | Zo.encode(d, o.capabilities), | |
| 1977 | e.uint.encode(d, n), | |
| 1978 | o.config && $o.encode(d, o.config), | |
| 1979 | o.identity && _o.encode(d, o.identity), | |
| 1980 | o.bootstrapDevice && en.encode(d, o.bootstrapDevice), | |
| 1981 | o.initialMembers && dn.encode(d, o.initialMembers)) | |
| 1982 | 1982 | }, |
| 1983 | 1983 | decode(d) { |
| 1984 | const n = Xn.decode(d), | |
| 1985 | o = Yn.decode(d), | |
| 1986 | c = Zn.decode(d), | |
| 1984 | const o = Xo.decode(d), | |
| 1985 | n = Yo.decode(d), | |
| 1986 | c = Zo.decode(d), | |
| 1987 | 1987 | r = e.uint.decode(d) |
| 1988 | 1988 | return { |
| 1989 | header: n, | |
| 1990 | digest: o, | |
| 1989 | header: o, | |
| 1990 | digest: n, | |
| 1991 | 1991 | capabilities: c, |
| 1992 | config: 1 & r ? $n.decode(d) : null, | |
| 1993 | identity: 2 & r ? _n.decode(d) : null, | |
| 1994 | bootstrapDevice: 4 & r ? eo.decode(d) : null, | |
| 1995 | initialMembers: 8 & r ? no.decode(d) : null, | |
| 1992 | config: 1 & r ? $o.decode(d) : null, | |
| 1993 | identity: 2 & r ? _o.decode(d) : null, | |
| 1994 | bootstrapDevice: 4 & r ? en.decode(d) : null, | |
| 1995 | initialMembers: 8 & r ? dn.decode(d) : null, | |
| 1996 | 1996 | } |
| 1997 | 1997 | }, |
| 1998 | 1998 | }, |
| 1999 | co = _, | |
| 2000 | ro = { | |
| 2001 | preencode(d, n) { | |
| 2002 | ;(co.preencode(d, n.header), e.uint.preencode(d, n.version)) | |
| 1999 | nn = _, | |
| 2000 | cn = { | |
| 2001 | preencode(d, o) { | |
| 2002 | ;(nn.preencode(d, o.header), e.uint.preencode(d, o.version)) | |
| 2003 | 2003 | }, |
| 2004 | encode(d, n) { | |
| 2005 | ;(co.encode(d, n.header), e.uint.encode(d, n.version)) | |
| 2004 | encode(d, o) { | |
| 2005 | ;(nn.encode(d, o.header), e.uint.encode(d, o.version)) | |
| 2006 | 2006 | }, |
| 2007 | decode: (d) => ({ header: co.decode(d), version: e.uint.decode(d) }), | |
| 2007 | decode: (d) => ({ header: nn.decode(d), version: e.uint.decode(d) }), | |
| 2008 | 2008 | }, |
| 2009 | to = _, | |
| 2010 | io = G, | |
| 2011 | ao = { | |
| 2012 | preencode(d, n) { | |
| 2013 | ;(to.preencode(d, n.header), e.uint.preencode(d, n.key), io.preencode(d, n.settings)) | |
| 2009 | rn = _, | |
| 2010 | tn = G, | |
| 2011 | an = { | |
| 2012 | preencode(d, o) { | |
| 2013 | ;(rn.preencode(d, o.header), e.uint.preencode(d, o.key), tn.preencode(d, o.settings)) | |
| 2014 | 2014 | }, |
| 2015 | encode(d, n) { | |
| 2016 | ;(to.encode(d, n.header), e.uint.encode(d, n.key), io.encode(d, n.settings)) | |
| 2015 | encode(d, o) { | |
| 2016 | ;(rn.encode(d, o.header), e.uint.encode(d, o.key), tn.encode(d, o.settings)) | |
| 2017 | 2017 | }, |
| 2018 | decode: (d) => ({ header: to.decode(d), key: e.uint.decode(d), settings: io.decode(d) }), | |
| 2018 | decode: (d) => ({ header: rn.decode(d), key: e.uint.decode(d), settings: tn.decode(d) }), | |
| 2019 | 2019 | }, |
| 2020 | so = { | |
| 2021 | preencode(d, n) { | |
| 2022 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 2023 | rt.preencode(d, n.status), | |
| 2020 | sn = { | |
| 2021 | preencode(d, o) { | |
| 2022 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 2023 | it.preencode(d, o.status), | |
| 2024 | 2024 | d.end++, |
| 2025 | n.mailbox && e.fixed32.preencode(d, n.mailbox), | |
| 2026 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) | |
| 2025 | o.mailbox && e.fixed32.preencode(d, o.mailbox), | |
| 2026 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) | |
| 2027 | 2027 | }, |
| 2028 | encode(d, n) { | |
| 2029 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) | |
| 2030 | ;(e.fixed32.encode(d, n.memberKey), | |
| 2031 | rt.encode(d, n.status), | |
| 2032 | e.uint.encode(d, o), | |
| 2033 | n.mailbox && e.fixed32.encode(d, n.mailbox), | |
| 2034 | n.roomKey && e.fixed32.encode(d, n.roomKey)) | |
| 2028 | encode(d, o) { | |
| 2029 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) | |
| 2030 | ;(e.fixed32.encode(d, o.memberKey), | |
| 2031 | it.encode(d, o.status), | |
| 2032 | e.uint.encode(d, n), | |
| 2033 | o.mailbox && e.fixed32.encode(d, o.mailbox), | |
| 2034 | o.roomKey && e.fixed32.encode(d, o.roomKey)) | |
| 2035 | 2035 | }, |
| 2036 | 2036 | decode(d) { |
| 2037 | const n = e.fixed32.decode(d), | |
| 2038 | o = rt.decode(d), | |
| 2037 | const o = e.fixed32.decode(d), | |
| 2038 | n = it.decode(d), | |
| 2039 | 2039 | c = e.uint.decode(d) |
| 2040 | 2040 | return { |
| 2041 | memberKey: n, | |
| 2042 | status: o, | |
| 2041 | memberKey: o, | |
| 2042 | status: n, | |
| 2043 | 2043 | mailbox: 1 & c ? e.fixed32.decode(d) : null, |
| 2044 | 2044 | roomKey: 2 & c ? e.fixed32.decode(d) : null, |
| 2045 | 2045 | } |
| 2046 | 2046 | }, |
| 2047 | 2047 | }, |
| 2048 | po = { | |
| 2049 | preencode(d, n) { | |
| 2050 | ;(e.fixed32.preencode(d, n.roomKey), | |
| 2051 | e.buffer.preencode(d, n.encryptionKey), | |
| 2052 | e.fixed32.preencode(d, n.seed), | |
| 2053 | o.preencode(d, n.initiator), | |
| 2054 | e.fixed32.preencode(d, n.fastForwardTo)) | |
| 2048 | pn = { | |
| 2049 | preencode(d, o) { | |
| 2050 | ;(e.fixed32.preencode(d, o.roomKey), | |
| 2051 | e.buffer.preencode(d, o.encryptionKey), | |
| 2052 | e.fixed32.preencode(d, o.seed), | |
| 2053 | n.preencode(d, o.initiator), | |
| 2054 | e.fixed32.preencode(d, o.fastForwardTo)) | |
| 2055 | 2055 | }, |
| 2056 | encode(d, n) { | |
| 2057 | ;(e.fixed32.encode(d, n.roomKey), | |
| 2058 | e.buffer.encode(d, n.encryptionKey), | |
| 2059 | e.fixed32.encode(d, n.seed), | |
| 2060 | o.encode(d, n.initiator), | |
| 2061 | e.fixed32.encode(d, n.fastForwardTo)) | |
| 2056 | encode(d, o) { | |
| 2057 | ;(e.fixed32.encode(d, o.roomKey), | |
| 2058 | e.buffer.encode(d, o.encryptionKey), | |
| 2059 | e.fixed32.encode(d, o.seed), | |
| 2060 | n.encode(d, o.initiator), | |
| 2061 | e.fixed32.encode(d, o.fastForwardTo)) | |
| 2062 | 2062 | }, |
| 2063 | 2063 | decode: (d) => ({ |
| 2064 | 2064 | roomKey: e.fixed32.decode(d), |
| 2065 | 2065 | encryptionKey: e.buffer.decode(d), |
| 2066 | 2066 | seed: e.fixed32.decode(d), |
| 2067 | initiator: o.decode(d), | |
| 2067 | initiator: n.decode(d), | |
| 2068 | 2068 | fastForwardTo: e.fixed32.decode(d), |
| 2069 | 2069 | }), |
| 2070 | 2070 | }, |
| 2071 | uo = e.array(e.frame(po)), | |
| 2072 | lo = Y, | |
| 2073 | fo = { | |
| 2071 | un = e.array(e.frame(pn)), | |
| 2072 | ln = Y, | |
| 2073 | fn = { | |
| 2074 | 2074 | preencode(e, d) { |
| 2075 | ;(uo.preencode(e, d.sharedRooms), lo.preencode(e, d.blockedContacts)) | |
| 2075 | ;(un.preencode(e, d.sharedRooms), ln.preencode(e, d.blockedContacts)) | |
| 2076 | 2076 | }, |
| 2077 | 2077 | encode(e, d) { |
| 2078 | ;(uo.encode(e, d.sharedRooms), lo.encode(e, d.blockedContacts)) | |
| 2078 | ;(un.encode(e, d.sharedRooms), ln.encode(e, d.blockedContacts)) | |
| 2079 | 2079 | }, |
| 2080 | decode: (e) => ({ sharedRooms: uo.decode(e), blockedContacts: lo.decode(e) }), | |
| 2080 | decode: (e) => ({ sharedRooms: un.decode(e), blockedContacts: ln.decode(e) }), | |
| 2081 | 2081 | }, |
| 2082 | mo = _n, | |
| 2083 | yo = { | |
| 2082 | mn = _o, | |
| 2083 | yn = { | |
| 2084 | 2084 | preencode(e, d) { |
| 2085 | mo.preencode(e, d.identity) | |
| 2085 | mn.preencode(e, d.identity) | |
| 2086 | 2086 | }, |
| 2087 | 2087 | encode(e, d) { |
| 2088 | mo.encode(e, d.identity) | |
| 2088 | mn.encode(e, d.identity) | |
| 2089 | 2089 | }, |
| 2090 | decode: (e) => ({ identity: mo.decode(e) }), | |
| 2090 | decode: (e) => ({ identity: mn.decode(e) }), | |
| 2091 | 2091 | }, |
| 2092 | xo = { | |
| 2093 | preencode(d, n) { | |
| 2094 | ;(e.uint.preencode(d, n.rooms), e.uint.preencode(d, n.contacts)) | |
| 2092 | xn = { | |
| 2093 | preencode(d, o) { | |
| 2094 | ;(e.uint.preencode(d, o.rooms), e.uint.preencode(d, o.contacts)) | |
| 2095 | 2095 | }, |
| 2096 | encode(d, n) { | |
| 2097 | ;(e.uint.encode(d, n.rooms), e.uint.encode(d, n.contacts)) | |
| 2096 | encode(d, o) { | |
| 2097 | ;(e.uint.encode(d, o.rooms), e.uint.encode(d, o.contacts)) | |
| 2098 | 2098 | }, |
| 2099 | 2099 | decode: (d) => ({ rooms: e.uint.decode(d), contacts: e.uint.decode(d) }), |
| 2100 | 2100 | }, |
| 2101 | bo = { | |
| 2102 | preencode(d, n) { | |
| 2103 | ;(e.uint.preencode(d, n.rooms), e.uint.preencode(d, n.contactRequests)) | |
| 2101 | bn = { | |
| 2102 | preencode(d, o) { | |
| 2103 | ;(e.uint.preencode(d, o.rooms), e.uint.preencode(d, o.contactRequests)) | |
| 2104 | 2104 | }, |
| 2105 | encode(d, n) { | |
| 2106 | ;(e.uint.encode(d, n.rooms), e.uint.encode(d, n.contactRequests)) | |
| 2105 | encode(d, o) { | |
| 2106 | ;(e.uint.encode(d, o.rooms), e.uint.encode(d, o.contactRequests)) | |
| 2107 | 2107 | }, |
| 2108 | 2108 | decode: (d) => ({ rooms: e.uint.decode(d), contactRequests: e.uint.decode(d) }), |
| 2109 | 2109 | }, |
| 2110 | ko = { | |
| 2111 | preencode(d, n) { | |
| 2112 | e.buffer.preencode(d, n.entropy) | |
| 2110 | kn = { | |
| 2111 | preencode(d, o) { | |
| 2112 | e.buffer.preencode(d, o.entropy) | |
| 2113 | 2113 | }, |
| 2114 | encode(d, n) { | |
| 2115 | e.buffer.encode(d, n.entropy) | |
| 2114 | encode(d, o) { | |
| 2115 | e.buffer.encode(d, o.entropy) | |
| 2116 | 2116 | }, |
| 2117 | 2117 | decode: (d) => ({ entropy: e.buffer.decode(d) }), |
| 2118 | 2118 | }, |
| 2119 | vo = { | |
| 2120 | preencode(d, n) { | |
| 2121 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 2122 | e.fixed32.preencode(d, n.devicePublicKey), | |
| 2123 | e.fixed32.preencode(d, n.writerKey)) | |
| 2119 | vn = { | |
| 2120 | preencode(d, o) { | |
| 2121 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 2122 | e.fixed32.preencode(d, o.devicePublicKey), | |
| 2123 | e.fixed32.preencode(d, o.writerKey)) | |
| 2124 | 2124 | }, |
| 2125 | encode(d, n) { | |
| 2126 | ;(e.fixed32.encode(d, n.publicKey), | |
| 2127 | e.fixed32.encode(d, n.devicePublicKey), | |
| 2128 | e.fixed32.encode(d, n.writerKey)) | |
| 2125 | encode(d, o) { | |
| 2126 | ;(e.fixed32.encode(d, o.publicKey), | |
| 2127 | e.fixed32.encode(d, o.devicePublicKey), | |
| 2128 | e.fixed32.encode(d, o.writerKey)) | |
| 2129 | 2129 | }, |
| 2130 | 2130 | decode: (d) => ({ |
| 2131 | 2131 | publicKey: e.fixed32.decode(d), |
| … | … | @@ -2133,38 +2133,38 @@ const o = { |
| 2133 | 2133 | writerKey: e.fixed32.decode(d), |
| 2134 | 2134 | }), |
| 2135 | 2135 | }, |
| 2136 | go = e.frame(vo), | |
| 2137 | ho = { | |
| 2136 | gn = e.frame(vn), | |
| 2137 | hn = { | |
| 2138 | 2138 | preencode(d, c) { |
| 2139 | 2139 | ;(e.fixed32.preencode(d, c.id), |
| 2140 | 2140 | e.fixed32.preencode(d, c.invitationSeed), |
| 2141 | 2141 | e.fixed32.preencode(d, c.mailbox), |
| 2142 | 2142 | t.preencode(d, c.responseKeyPair), |
| 2143 | o.preencode(d, c.initiator), | |
| 2144 | o.preencode(d, c.inviter), | |
| 2143 | n.preencode(d, c.initiator), | |
| 2144 | n.preencode(d, c.inviter), | |
| 2145 | 2145 | d.end++, |
| 2146 | c.identity && go.preencode(d, c.identity), | |
| 2147 | n >= 20 && c.buildType && Or.preencode(d, c.buildType)) | |
| 2146 | c.identity && gn.preencode(d, c.identity), | |
| 2147 | o >= 20 && c.buildType && Ur.preencode(d, c.buildType)) | |
| 2148 | 2148 | }, |
| 2149 | 2149 | encode(d, c) { |
| 2150 | const r = (c.identity ? 1 : 0) | (n >= 20 && c.buildType ? 2 : 0) | |
| 2150 | const r = (c.identity ? 1 : 0) | (o >= 20 && c.buildType ? 2 : 0) | |
| 2151 | 2151 | ;(e.fixed32.encode(d, c.id), |
| 2152 | 2152 | e.fixed32.encode(d, c.invitationSeed), |
| 2153 | 2153 | e.fixed32.encode(d, c.mailbox), |
| 2154 | 2154 | t.encode(d, c.responseKeyPair), |
| 2155 | o.encode(d, c.initiator), | |
| 2156 | o.encode(d, c.inviter), | |
| 2155 | n.encode(d, c.initiator), | |
| 2156 | n.encode(d, c.inviter), | |
| 2157 | 2157 | e.uint.encode(d, r), |
| 2158 | c.identity && go.encode(d, c.identity), | |
| 2159 | n >= 20 && c.buildType && Or.encode(d, c.buildType)) | |
| 2158 | c.identity && gn.encode(d, c.identity), | |
| 2159 | o >= 20 && c.buildType && Ur.encode(d, c.buildType)) | |
| 2160 | 2160 | }, |
| 2161 | 2161 | decode(d) { |
| 2162 | 2162 | const c = e.fixed32.decode(d), |
| 2163 | 2163 | r = e.fixed32.decode(d), |
| 2164 | 2164 | i = e.fixed32.decode(d), |
| 2165 | 2165 | a = t.decode(d), |
| 2166 | s = o.decode(d), | |
| 2167 | p = o.decode(d), | |
| 2166 | s = n.decode(d), | |
| 2167 | p = n.decode(d), | |
| 2168 | 2168 | u = e.uint.decode(d) |
| 2169 | 2169 | return { |
| 2170 | 2170 | id: c, |
| … | … | @@ -2173,138 +2173,140 @@ const o = { |
| 2173 | 2173 | responseKeyPair: a, |
| 2174 | 2174 | initiator: s, |
| 2175 | 2175 | inviter: p, |
| 2176 | identity: 1 & u ? go.decode(d) : null, | |
| 2177 | buildType: n >= 20 && 2 & u ? Or.decode(d) : null, | |
| 2176 | identity: 1 & u ? gn.decode(d) : null, | |
| 2177 | buildType: o >= 20 && 2 & u ? Ur.decode(d) : null, | |
| 2178 | 2178 | } |
| 2179 | 2179 | }, |
| 2180 | 2180 | }, |
| 2181 | Ko = _, | |
| 2182 | wo = { | |
| 2183 | preencode(d, n) { | |
| 2184 | ;(Ko.preencode(d, n.header), e.buffer.preencode(d, n.blindResponse)) | |
| 2181 | Kn = _, | |
| 2182 | wn = { | |
| 2183 | preencode(d, o) { | |
| 2184 | ;(Kn.preencode(d, o.header), e.buffer.preencode(d, o.blindResponse)) | |
| 2185 | 2185 | }, |
| 2186 | encode(d, n) { | |
| 2187 | ;(Ko.encode(d, n.header), e.buffer.encode(d, n.blindResponse)) | |
| 2186 | encode(d, o) { | |
| 2187 | ;(Kn.encode(d, o.header), e.buffer.encode(d, o.blindResponse)) | |
| 2188 | 2188 | }, |
| 2189 | decode: (d) => ({ header: Ko.decode(d), blindResponse: e.buffer.decode(d) }), | |
| 2189 | decode: (d) => ({ header: Kn.decode(d), blindResponse: e.buffer.decode(d) }), | |
| 2190 | 2190 | }, |
| 2191 | To = _, | |
| 2192 | Po = e.frame(ho), | |
| 2193 | Ao = { | |
| 2191 | Tn = _, | |
| 2192 | Pn = e.frame(hn), | |
| 2193 | An = { | |
| 2194 | 2194 | preencode(e, d) { |
| 2195 | ;(To.preencode(e, d.header), Po.preencode(e, d.invitation)) | |
| 2195 | ;(Tn.preencode(e, d.header), Pn.preencode(e, d.invitation)) | |
| 2196 | 2196 | }, |
| 2197 | 2197 | encode(e, d) { |
| 2198 | ;(To.encode(e, d.header), Po.encode(e, d.invitation)) | |
| 2198 | ;(Tn.encode(e, d.header), Pn.encode(e, d.invitation)) | |
| 2199 | 2199 | }, |
| 2200 | decode: (e) => ({ header: To.decode(e), invitation: Po.decode(e) }), | |
| 2200 | decode: (e) => ({ header: Tn.decode(e), invitation: Pn.decode(e) }), | |
| 2201 | 2201 | }, |
| 2202 | Ro = _, | |
| 2203 | Do = { | |
| 2204 | preencode(d, n) { | |
| 2205 | ;(Ro.preencode(d, n.header), e.fixed32.preencode(d, n.id)) | |
| 2202 | Rn = _, | |
| 2203 | Dn = { | |
| 2204 | preencode(d, o) { | |
| 2205 | ;(Rn.preencode(d, o.header), e.fixed32.preencode(d, o.id)) | |
| 2206 | 2206 | }, |
| 2207 | encode(d, n) { | |
| 2208 | ;(Ro.encode(d, n.header), e.fixed32.encode(d, n.id)) | |
| 2207 | encode(d, o) { | |
| 2208 | ;(Rn.encode(d, o.header), e.fixed32.encode(d, o.id)) | |
| 2209 | 2209 | }, |
| 2210 | decode: (d) => ({ header: Ro.decode(d), id: e.fixed32.decode(d) }), | |
| 2210 | decode: (d) => ({ header: Rn.decode(d), id: e.fixed32.decode(d) }), | |
| 2211 | 2211 | }, |
| 2212 | So = { | |
| 2213 | preencode(d, n) { | |
| 2214 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 2215 | e.fixed32.preencode(d, n.devicePublicKey), | |
| 2212 | Mn = { | |
| 2213 | preencode(d, o) { | |
| 2214 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 2215 | e.fixed32.preencode(d, o.devicePublicKey), | |
| 2216 | 2216 | d.end++, |
| 2217 | n.privateProfileKey && e.fixed32.preencode(d, n.privateProfileKey), | |
| 2218 | n.deviceKeyPair && t.preencode(d, n.deviceKeyPair), | |
| 2219 | e.buffer.preencode(d, n.deviceProof)) | |
| 2217 | o.privateProfileKey && e.fixed32.preencode(d, o.privateProfileKey), | |
| 2218 | o.deviceKeyPair && t.preencode(d, o.deviceKeyPair), | |
| 2219 | e.buffer.preencode(d, o.deviceProof)) | |
| 2220 | 2220 | }, |
| 2221 | encode(d, n) { | |
| 2222 | const o = (n.privateProfileKey ? 1 : 0) | (n.deviceKeyPair ? 2 : 0) | |
| 2223 | ;(e.fixed32.encode(d, n.publicKey), | |
| 2224 | e.fixed32.encode(d, n.devicePublicKey), | |
| 2225 | e.uint.encode(d, o), | |
| 2226 | n.privateProfileKey && e.fixed32.encode(d, n.privateProfileKey), | |
| 2227 | n.deviceKeyPair && t.encode(d, n.deviceKeyPair), | |
| 2228 | e.buffer.encode(d, n.deviceProof)) | |
| 2221 | encode(d, o) { | |
| 2222 | const n = (o.privateProfileKey ? 1 : 0) | (o.deviceKeyPair ? 2 : 0) | |
| 2223 | ;(e.fixed32.encode(d, o.publicKey), | |
| 2224 | e.fixed32.encode(d, o.devicePublicKey), | |
| 2225 | e.uint.encode(d, n), | |
| 2226 | o.privateProfileKey && e.fixed32.encode(d, o.privateProfileKey), | |
| 2227 | o.deviceKeyPair && t.encode(d, o.deviceKeyPair), | |
| 2228 | e.buffer.encode(d, o.deviceProof)) | |
| 2229 | 2229 | }, |
| 2230 | 2230 | decode(d) { |
| 2231 | const n = e.fixed32.decode(d), | |
| 2232 | o = e.fixed32.decode(d), | |
| 2231 | const o = e.fixed32.decode(d), | |
| 2232 | n = e.fixed32.decode(d), | |
| 2233 | 2233 | c = e.uint.decode(d) |
| 2234 | 2234 | return { |
| 2235 | publicKey: n, | |
| 2236 | devicePublicKey: o, | |
| 2235 | publicKey: o, | |
| 2236 | devicePublicKey: n, | |
| 2237 | 2237 | privateProfileKey: 1 & c ? e.fixed32.decode(d) : null, |
| 2238 | 2238 | deviceKeyPair: 2 & c ? t.decode(d) : null, |
| 2239 | 2239 | deviceProof: e.buffer.decode(d), |
| 2240 | 2240 | } |
| 2241 | 2241 | }, |
| 2242 | 2242 | }, |
| 2243 | Co = { | |
| 2243 | Sn = { | |
| 2244 | 2244 | preencode(e, d) { |
| 2245 | 2245 | e.end++ |
| 2246 | 2246 | }, |
| 2247 | encode(d, o) { | |
| 2247 | encode(d, n) { | |
| 2248 | 2248 | const c = |
| 2249 | (o.isActive ? 1 : 0) | | |
| 2250 | (o.isFullyMuted ? 2 : 0) | | |
| 2251 | (o.isMentionsOnlyMuted ? 4 : 0) | | |
| 2252 | (n >= 9 && o.isReadOnly ? 8 : 0) | | |
| 2253 | (n >= 18 && o.isFavorite ? 16 : 0) | |
| 2249 | (n.isActive ? 1 : 0) | | |
| 2250 | (n.isFullyMuted ? 2 : 0) | | |
| 2251 | (n.isMentionsOnlyMuted ? 4 : 0) | | |
| 2252 | (o >= 9 && n.isReadOnly ? 8 : 0) | | |
| 2253 | (o >= 18 && n.isFavorite ? 16 : 0) | | |
| 2254 | (o >= 21 && n.isUnread ? 32 : 0) | |
| 2254 | 2255 | e.uint.encode(d, c) |
| 2255 | 2256 | }, |
| 2256 | 2257 | decode(d) { |
| 2257 | const o = e.uint.decode(d) | |
| 2258 | const n = e.uint.decode(d) | |
| 2258 | 2259 | return { |
| 2259 | isActive: !!(1 & o), | |
| 2260 | isFullyMuted: !!(2 & o), | |
| 2261 | isMentionsOnlyMuted: !!(4 & o), | |
| 2262 | isReadOnly: n >= 9 && !!(8 & o), | |
| 2263 | isFavorite: n >= 18 && !!(16 & o), | |
| 2260 | isActive: !!(1 & n), | |
| 2261 | isFullyMuted: !!(2 & n), | |
| 2262 | isMentionsOnlyMuted: !!(4 & n), | |
| 2263 | isReadOnly: o >= 9 && !!(8 & n), | |
| 2264 | isFavorite: o >= 18 && !!(16 & n), | |
| 2265 | isUnread: o >= 21 && !!(32 & n), | |
| 2264 | 2266 | } |
| 2265 | 2267 | }, |
| 2266 | 2268 | }, |
| 2267 | Mo = e.frame(Co), | |
| 2268 | Lo = e.frame(So), | |
| 2269 | qo = go, | |
| 2270 | Fo = { | |
| 2269 | Cn = e.frame(Sn), | |
| 2270 | Ln = e.frame(Mn), | |
| 2271 | qn = gn, | |
| 2272 | Fn = { | |
| 2271 | 2273 | preencode(d, c) { |
| 2272 | 2274 | ;(e.fixed32.preencode(d, c.roomKey), |
| 2273 | 2275 | e.buffer.preencode(d, c.encryptionKey), |
| 2274 | 2276 | e.fixed32.preencode(d, c.mailbox), |
| 2275 | Mo.preencode(d, c.status), | |
| 2277 | Cn.preencode(d, c.status), | |
| 2276 | 2278 | e.uint.preencode(d, c.clock), |
| 2277 | 2279 | d.end++, |
| 2278 | c.initiator && o.preencode(d, c.initiator), | |
| 2280 | c.initiator && n.preencode(d, c.initiator), | |
| 2279 | 2281 | c.fastForwardTo && e.fixed32.preencode(d, c.fastForwardTo), |
| 2280 | c.identitySwap && Lo.preencode(d, c.identitySwap), | |
| 2281 | n >= 6 && c.identitySwapV2 && qo.preencode(d, c.identitySwapV2), | |
| 2282 | n >= 10 && c.contact && e.fixed32.preencode(d, c.contact)) | |
| 2282 | c.identitySwap && Ln.preencode(d, c.identitySwap), | |
| 2283 | o >= 6 && c.identitySwapV2 && qn.preencode(d, c.identitySwapV2), | |
| 2284 | o >= 10 && c.contact && e.fixed32.preencode(d, c.contact)) | |
| 2283 | 2285 | }, |
| 2284 | 2286 | encode(d, c) { |
| 2285 | 2287 | const r = |
| 2286 | 2288 | (c.initiator ? 1 : 0) | |
| 2287 | 2289 | (c.fastForwardTo ? 2 : 0) | |
| 2288 | 2290 | (c.identitySwap ? 4 : 0) | |
| 2289 | (n >= 6 && c.identitySwapV2 ? 8 : 0) | | |
| 2290 | (n >= 10 && c.contact ? 16 : 0) | |
| 2291 | (o >= 6 && c.identitySwapV2 ? 8 : 0) | | |
| 2292 | (o >= 10 && c.contact ? 16 : 0) | |
| 2291 | 2293 | ;(e.fixed32.encode(d, c.roomKey), |
| 2292 | 2294 | e.buffer.encode(d, c.encryptionKey), |
| 2293 | 2295 | e.fixed32.encode(d, c.mailbox), |
| 2294 | Mo.encode(d, c.status), | |
| 2296 | Cn.encode(d, c.status), | |
| 2295 | 2297 | e.uint.encode(d, c.clock), |
| 2296 | 2298 | e.uint.encode(d, r), |
| 2297 | c.initiator && o.encode(d, c.initiator), | |
| 2299 | c.initiator && n.encode(d, c.initiator), | |
| 2298 | 2300 | c.fastForwardTo && e.fixed32.encode(d, c.fastForwardTo), |
| 2299 | c.identitySwap && Lo.encode(d, c.identitySwap), | |
| 2300 | n >= 6 && c.identitySwapV2 && qo.encode(d, c.identitySwapV2), | |
| 2301 | n >= 10 && c.contact && e.fixed32.encode(d, c.contact)) | |
| 2301 | c.identitySwap && Ln.encode(d, c.identitySwap), | |
| 2302 | o >= 6 && c.identitySwapV2 && qn.encode(d, c.identitySwapV2), | |
| 2303 | o >= 10 && c.contact && e.fixed32.encode(d, c.contact)) | |
| 2302 | 2304 | }, |
| 2303 | 2305 | decode(d) { |
| 2304 | 2306 | const c = e.fixed32.decode(d), |
| 2305 | 2307 | r = e.buffer.decode(d), |
| 2306 | 2308 | t = e.fixed32.decode(d), |
| 2307 | i = Mo.decode(d), | |
| 2309 | i = Cn.decode(d), | |
| 2308 | 2310 | a = e.uint.decode(d), |
| 2309 | 2311 | s = e.uint.decode(d) |
| 2310 | 2312 | return { |
| … | … | @@ -2313,43 +2315,43 @@ const o = { |
| 2313 | 2315 | mailbox: t, |
| 2314 | 2316 | status: i, |
| 2315 | 2317 | clock: a, |
| 2316 | initiator: 1 & s ? o.decode(d) : null, | |
| 2318 | initiator: 1 & s ? n.decode(d) : null, | |
| 2317 | 2319 | fastForwardTo: 2 & s ? e.fixed32.decode(d) : null, |
| 2318 | identitySwap: 4 & s ? Lo.decode(d) : null, | |
| 2319 | identitySwapV2: n >= 6 && 8 & s ? qo.decode(d) : null, | |
| 2320 | contact: n >= 10 && 16 & s ? e.fixed32.decode(d) : null, | |
| 2320 | identitySwap: 4 & s ? Ln.decode(d) : null, | |
| 2321 | identitySwapV2: o >= 6 && 8 & s ? qn.decode(d) : null, | |
| 2322 | contact: o >= 10 && 16 & s ? e.fixed32.decode(d) : null, | |
| 2321 | 2323 | } |
| 2322 | }, | |
| 2323 | }, | |
| 2324 | Eo = _, | |
| 2325 | Bo = { | |
| 2326 | preencode(d, n) { | |
| 2327 | ;(Eo.preencode(d, n.header), | |
| 2328 | e.fixed32.preencode(d, n.roomKey), | |
| 2329 | e.buffer.preencode(d, n.encryptionKey), | |
| 2330 | e.fixed32.preencode(d, n.mailbox), | |
| 2324 | }, | |
| 2325 | }, | |
| 2326 | En = _, | |
| 2327 | Bn = { | |
| 2328 | preencode(d, o) { | |
| 2329 | ;(En.preencode(d, o.header), | |
| 2330 | e.fixed32.preencode(d, o.roomKey), | |
| 2331 | e.buffer.preencode(d, o.encryptionKey), | |
| 2332 | e.fixed32.preencode(d, o.mailbox), | |
| 2331 | 2333 | d.end++, |
| 2332 | n.fastForwardTo && e.fixed32.preencode(d, n.fastForwardTo), | |
| 2333 | n.initiator && o.preencode(d, n.initiator), | |
| 2334 | n.dm && e.fixed32.preencode(d, n.dm)) | |
| 2334 | o.fastForwardTo && e.fixed32.preencode(d, o.fastForwardTo), | |
| 2335 | o.initiator && n.preencode(d, o.initiator), | |
| 2336 | o.dm && e.fixed32.preencode(d, o.dm)) | |
| 2335 | 2337 | }, |
| 2336 | 2338 | encode(d, c) { |
| 2337 | 2339 | const r = |
| 2338 | 2340 | (c.fastForwardTo ? 1 : 0) | |
| 2339 | 2341 | (c.initiator ? 2 : 0) | |
| 2340 | 2342 | (c.dm ? 4 : 0) | |
| 2341 | (n >= 9 && c.isReadOnly ? 8 : 0) | |
| 2342 | ;(Eo.encode(d, c.header), | |
| 2343 | (o >= 9 && c.isReadOnly ? 8 : 0) | |
| 2344 | ;(En.encode(d, c.header), | |
| 2343 | 2345 | e.fixed32.encode(d, c.roomKey), |
| 2344 | 2346 | e.buffer.encode(d, c.encryptionKey), |
| 2345 | 2347 | e.fixed32.encode(d, c.mailbox), |
| 2346 | 2348 | e.uint.encode(d, r), |
| 2347 | 2349 | c.fastForwardTo && e.fixed32.encode(d, c.fastForwardTo), |
| 2348 | c.initiator && o.encode(d, c.initiator), | |
| 2350 | c.initiator && n.encode(d, c.initiator), | |
| 2349 | 2351 | c.dm && e.fixed32.encode(d, c.dm)) |
| 2350 | 2352 | }, |
| 2351 | 2353 | decode(d) { |
| 2352 | const c = Eo.decode(d), | |
| 2354 | const c = En.decode(d), | |
| 2353 | 2355 | r = e.fixed32.decode(d), |
| 2354 | 2356 | t = e.buffer.decode(d), |
| 2355 | 2357 | i = e.fixed32.decode(d), |
| … | … | @@ -2360,179 +2362,179 @@ const o = { |
| 2360 | 2362 | encryptionKey: t, |
| 2361 | 2363 | mailbox: i, |
| 2362 | 2364 | fastForwardTo: 1 & a ? e.fixed32.decode(d) : null, |
| 2363 | initiator: 2 & a ? o.decode(d) : null, | |
| 2365 | initiator: 2 & a ? n.decode(d) : null, | |
| 2364 | 2366 | dm: 4 & a ? e.fixed32.decode(d) : null, |
| 2365 | isReadOnly: n >= 9 && !!(8 & a), | |
| 2367 | isReadOnly: o >= 9 && !!(8 & a), | |
| 2366 | 2368 | } |
| 2367 | 2369 | }, |
| 2368 | 2370 | }, |
| 2369 | Io = _, | |
| 2370 | No = { | |
| 2371 | preencode(d, n) { | |
| 2372 | ;(Io.preencode(d, n.header), e.fixed32.preencode(d, n.discoveryKey)) | |
| 2371 | In = _, | |
| 2372 | Nn = { | |
| 2373 | preencode(d, o) { | |
| 2374 | ;(In.preencode(d, o.header), e.fixed32.preencode(d, o.discoveryKey)) | |
| 2373 | 2375 | }, |
| 2374 | encode(d, n) { | |
| 2375 | ;(Io.encode(d, n.header), e.fixed32.encode(d, n.discoveryKey)) | |
| 2376 | encode(d, o) { | |
| 2377 | ;(In.encode(d, o.header), e.fixed32.encode(d, o.discoveryKey)) | |
| 2376 | 2378 | }, |
| 2377 | decode: (d) => ({ header: Io.decode(d), discoveryKey: e.fixed32.decode(d) }), | |
| 2379 | decode: (d) => ({ header: In.decode(d), discoveryKey: e.fixed32.decode(d) }), | |
| 2378 | 2380 | }, |
| 2379 | jo = _, | |
| 2380 | Oo = Mo, | |
| 2381 | Jo = { | |
| 2382 | preencode(d, n) { | |
| 2383 | ;(jo.preencode(d, n.header), | |
| 2384 | e.fixed32.preencode(d, n.roomKey), | |
| 2385 | e.uint.preencode(d, n.key), | |
| 2386 | Oo.preencode(d, n.status)) | |
| 2381 | jn = _, | |
| 2382 | Un = Cn, | |
| 2383 | On = { | |
| 2384 | preencode(d, o) { | |
| 2385 | ;(jn.preencode(d, o.header), | |
| 2386 | e.fixed32.preencode(d, o.roomKey), | |
| 2387 | e.uint.preencode(d, o.key), | |
| 2388 | Un.preencode(d, o.status)) | |
| 2387 | 2389 | }, |
| 2388 | encode(d, n) { | |
| 2389 | ;(jo.encode(d, n.header), | |
| 2390 | e.fixed32.encode(d, n.roomKey), | |
| 2391 | e.uint.encode(d, n.key), | |
| 2392 | Oo.encode(d, n.status)) | |
| 2390 | encode(d, o) { | |
| 2391 | ;(jn.encode(d, o.header), | |
| 2392 | e.fixed32.encode(d, o.roomKey), | |
| 2393 | e.uint.encode(d, o.key), | |
| 2394 | Un.encode(d, o.status)) | |
| 2393 | 2395 | }, |
| 2394 | 2396 | decode: (d) => ({ |
| 2395 | header: jo.decode(d), | |
| 2397 | header: jn.decode(d), | |
| 2396 | 2398 | roomKey: e.fixed32.decode(d), |
| 2397 | 2399 | key: e.uint.decode(d), |
| 2398 | status: Oo.decode(d), | |
| 2400 | status: Un.decode(d), | |
| 2399 | 2401 | }), |
| 2400 | 2402 | }, |
| 2401 | Uo = { | |
| 2403 | Jn = { | |
| 2402 | 2404 | preencode(e, d) { |
| 2403 | 2405 | e.end++ |
| 2404 | 2406 | }, |
| 2405 | encode(d, n) { | |
| 2406 | const o = n.isBlocked ? 1 : 0 | |
| 2407 | e.uint.encode(d, o) | |
| 2407 | encode(d, o) { | |
| 2408 | const n = o.isBlocked ? 1 : 0 | |
| 2409 | e.uint.encode(d, n) | |
| 2408 | 2410 | }, |
| 2409 | 2411 | decode: (d) => ({ isBlocked: !!(1 & e.uint.decode(d)) }), |
| 2410 | 2412 | }, |
| 2411 | Vo = { | |
| 2412 | preencode(d, n) { | |
| 2413 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 2414 | e.uint.preencode(d, n.clock), | |
| 2415 | tt.preencode(d, n.status), | |
| 2413 | Vn = { | |
| 2414 | preencode(d, o) { | |
| 2415 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 2416 | e.uint.preencode(d, o.clock), | |
| 2417 | at.preencode(d, o.status), | |
| 2416 | 2418 | d.end++, |
| 2417 | n.mailbox && e.fixed32.preencode(d, n.mailbox), | |
| 2418 | n.roomKey && e.fixed32.preencode(d, n.roomKey)) | |
| 2419 | o.mailbox && e.fixed32.preencode(d, o.mailbox), | |
| 2420 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) | |
| 2419 | 2421 | }, |
| 2420 | encode(d, n) { | |
| 2421 | const o = (n.mailbox ? 1 : 0) | (n.roomKey ? 2 : 0) | |
| 2422 | ;(e.fixed32.encode(d, n.memberKey), | |
| 2423 | e.uint.encode(d, n.clock), | |
| 2424 | tt.encode(d, n.status), | |
| 2425 | e.uint.encode(d, o), | |
| 2426 | n.mailbox && e.fixed32.encode(d, n.mailbox), | |
| 2427 | n.roomKey && e.fixed32.encode(d, n.roomKey)) | |
| 2422 | encode(d, o) { | |
| 2423 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) | |
| 2424 | ;(e.fixed32.encode(d, o.memberKey), | |
| 2425 | e.uint.encode(d, o.clock), | |
| 2426 | at.encode(d, o.status), | |
| 2427 | e.uint.encode(d, n), | |
| 2428 | o.mailbox && e.fixed32.encode(d, o.mailbox), | |
| 2429 | o.roomKey && e.fixed32.encode(d, o.roomKey)) | |
| 2428 | 2430 | }, |
| 2429 | 2431 | decode(d) { |
| 2430 | const n = e.fixed32.decode(d), | |
| 2431 | o = e.uint.decode(d), | |
| 2432 | c = tt.decode(d), | |
| 2432 | const o = e.fixed32.decode(d), | |
| 2433 | n = e.uint.decode(d), | |
| 2434 | c = at.decode(d), | |
| 2433 | 2435 | r = e.uint.decode(d) |
| 2434 | 2436 | return { |
| 2435 | memberKey: n, | |
| 2436 | clock: o, | |
| 2437 | memberKey: o, | |
| 2438 | clock: n, | |
| 2437 | 2439 | status: c, |
| 2438 | 2440 | mailbox: 1 & r ? e.fixed32.decode(d) : null, |
| 2439 | 2441 | roomKey: 2 & r ? e.fixed32.decode(d) : null, |
| 2440 | 2442 | } |
| 2441 | 2443 | }, |
| 2442 | 2444 | }, |
| 2443 | Ho = _, | |
| 2444 | zo = e.frame(so), | |
| 2445 | Go = { | |
| 2445 | Hn = _, | |
| 2446 | zn = e.frame(sn), | |
| 2447 | Gn = { | |
| 2446 | 2448 | preencode(e, d) { |
| 2447 | ;(Ho.preencode(e, d.header), zo.preencode(e, d.contact)) | |
| 2449 | ;(Hn.preencode(e, d.header), zn.preencode(e, d.contact)) | |
| 2448 | 2450 | }, |
| 2449 | 2451 | encode(e, d) { |
| 2450 | ;(Ho.encode(e, d.header), zo.encode(e, d.contact)) | |
| 2452 | ;(Hn.encode(e, d.header), zn.encode(e, d.contact)) | |
| 2451 | 2453 | }, |
| 2452 | decode: (e) => ({ header: Ho.decode(e), contact: zo.decode(e) }), | |
| 2454 | decode: (e) => ({ header: Hn.decode(e), contact: zn.decode(e) }), | |
| 2453 | 2455 | }, |
| 2454 | Qo = _, | |
| 2455 | Wo = { | |
| 2456 | preencode(d, n) { | |
| 2457 | ;(Qo.preencode(d, n.header), | |
| 2458 | e.fixed32.preencode(d, n.memberKey), | |
| 2459 | e.uint.preencode(d, n.key), | |
| 2460 | it.preencode(d, n.status)) | |
| 2456 | Qn = _, | |
| 2457 | Wn = { | |
| 2458 | preencode(d, o) { | |
| 2459 | ;(Qn.preencode(d, o.header), | |
| 2460 | e.fixed32.preencode(d, o.memberKey), | |
| 2461 | e.uint.preencode(d, o.key), | |
| 2462 | st.preencode(d, o.status)) | |
| 2461 | 2463 | }, |
| 2462 | encode(d, n) { | |
| 2463 | ;(Qo.encode(d, n.header), | |
| 2464 | e.fixed32.encode(d, n.memberKey), | |
| 2465 | e.uint.encode(d, n.key), | |
| 2466 | it.encode(d, n.status)) | |
| 2464 | encode(d, o) { | |
| 2465 | ;(Qn.encode(d, o.header), | |
| 2466 | e.fixed32.encode(d, o.memberKey), | |
| 2467 | e.uint.encode(d, o.key), | |
| 2468 | st.encode(d, o.status)) | |
| 2467 | 2469 | }, |
| 2468 | 2470 | decode: (d) => ({ |
| 2469 | header: Qo.decode(d), | |
| 2471 | header: Qn.decode(d), | |
| 2470 | 2472 | memberKey: e.fixed32.decode(d), |
| 2471 | 2473 | key: e.uint.decode(d), |
| 2472 | status: it.decode(d), | |
| 2474 | status: st.decode(d), | |
| 2473 | 2475 | }), |
| 2474 | 2476 | }, |
| 2475 | Xo = _, | |
| 2476 | Yo = { | |
| 2477 | preencode(d, n) { | |
| 2478 | ;(Xo.preencode(d, n.header), e.fixed32.preencode(d, n.memberKey)) | |
| 2477 | Xn = _, | |
| 2478 | Yn = { | |
| 2479 | preencode(d, o) { | |
| 2480 | ;(Xn.preencode(d, o.header), e.fixed32.preencode(d, o.memberKey)) | |
| 2479 | 2481 | }, |
| 2480 | encode(d, n) { | |
| 2481 | ;(Xo.encode(d, n.header), e.fixed32.encode(d, n.memberKey)) | |
| 2482 | encode(d, o) { | |
| 2483 | ;(Xn.encode(d, o.header), e.fixed32.encode(d, o.memberKey)) | |
| 2482 | 2484 | }, |
| 2483 | decode: (d) => ({ header: Xo.decode(d), memberKey: e.fixed32.decode(d) }), | |
| 2485 | decode: (d) => ({ header: Xn.decode(d), memberKey: e.fixed32.decode(d) }), | |
| 2484 | 2486 | }, |
| 2485 | Zo = { | |
| 2487 | Zn = { | |
| 2486 | 2488 | preencode(e, d) { |
| 2487 | 2489 | e.end++ |
| 2488 | 2490 | }, |
| 2489 | encode(d, n) { | |
| 2490 | const o = | |
| 2491 | (n.isPending ? 1 : 0) | | |
| 2492 | (n.isAccepted ? 2 : 0) | | |
| 2493 | (n.isRejected ? 4 : 0) | | |
| 2494 | (n.isDiscarded ? 8 : 0) | | |
| 2495 | (n.isSeen ? 16 : 0) | |
| 2496 | e.uint.encode(d, o) | |
| 2491 | encode(d, o) { | |
| 2492 | const n = | |
| 2493 | (o.isPending ? 1 : 0) | | |
| 2494 | (o.isAccepted ? 2 : 0) | | |
| 2495 | (o.isRejected ? 4 : 0) | | |
| 2496 | (o.isDiscarded ? 8 : 0) | | |
| 2497 | (o.isSeen ? 16 : 0) | |
| 2498 | e.uint.encode(d, n) | |
| 2497 | 2499 | }, |
| 2498 | 2500 | decode(d) { |
| 2499 | const n = e.uint.decode(d) | |
| 2501 | const o = e.uint.decode(d) | |
| 2500 | 2502 | return { |
| 2501 | isPending: !!(1 & n), | |
| 2502 | isAccepted: !!(2 & n), | |
| 2503 | isRejected: !!(4 & n), | |
| 2504 | isDiscarded: !!(8 & n), | |
| 2505 | isSeen: !!(16 & n), | |
| 2503 | isPending: !!(1 & o), | |
| 2504 | isAccepted: !!(2 & o), | |
| 2505 | isRejected: !!(4 & o), | |
| 2506 | isDiscarded: !!(8 & o), | |
| 2507 | isSeen: !!(16 & o), | |
| 2506 | 2508 | } |
| 2507 | 2509 | }, |
| 2508 | 2510 | }, |
| 2509 | $o = ke, | |
| 2510 | _o = e.frame(i), | |
| 2511 | $n = ke, | |
| 2512 | _n = e.frame(i), | |
| 2511 | 2513 | ec = { |
| 2512 | preencode(d, n) { | |
| 2513 | ;($o.preencode(d, n.sender), | |
| 2514 | _o.preencode(d, n.keys), | |
| 2515 | e.fixed32.preencode(d, n.mailbox), | |
| 2514 | preencode(d, o) { | |
| 2515 | ;($n.preencode(d, o.sender), | |
| 2516 | _n.preencode(d, o.keys), | |
| 2517 | e.fixed32.preencode(d, o.mailbox), | |
| 2516 | 2518 | d.end++, |
| 2517 | n.message && e.string.preencode(d, n.message)) | |
| 2519 | o.message && e.string.preencode(d, o.message)) | |
| 2518 | 2520 | }, |
| 2519 | encode(d, n) { | |
| 2520 | const o = n.message ? 1 : 0 | |
| 2521 | ;($o.encode(d, n.sender), | |
| 2522 | _o.encode(d, n.keys), | |
| 2523 | e.fixed32.encode(d, n.mailbox), | |
| 2524 | e.uint.encode(d, o), | |
| 2525 | n.message && e.string.encode(d, n.message)) | |
| 2521 | encode(d, o) { | |
| 2522 | const n = o.message ? 1 : 0 | |
| 2523 | ;($n.encode(d, o.sender), | |
| 2524 | _n.encode(d, o.keys), | |
| 2525 | e.fixed32.encode(d, o.mailbox), | |
| 2526 | e.uint.encode(d, n), | |
| 2527 | o.message && e.string.encode(d, o.message)) | |
| 2526 | 2528 | }, |
| 2527 | 2529 | decode: (d) => ({ |
| 2528 | sender: $o.decode(d), | |
| 2529 | keys: _o.decode(d), | |
| 2530 | sender: $n.decode(d), | |
| 2531 | keys: _n.decode(d), | |
| 2530 | 2532 | mailbox: e.fixed32.decode(d), |
| 2531 | 2533 | message: 1 & e.uint.decode(d) ? e.string.decode(d) : null, |
| 2532 | 2534 | }), |
| 2533 | 2535 | }, |
| 2534 | 2536 | dc = e.frame(ec), |
| 2535 | nc = { | |
| 2537 | oc = { | |
| 2536 | 2538 | preencode(e, d) { |
| 2537 | 2539 | ;(dc.preencode(e, d.body), ce.preencode(e, d.attestation)) |
| 2538 | 2540 | }, |
| … | … | @@ -2541,106 +2543,106 @@ const o = { |
| 2541 | 2543 | }, |
| 2542 | 2544 | decode: (e) => ({ body: dc.decode(e), attestation: ce.decode(e) }), |
| 2543 | 2545 | }, |
| 2544 | oc = ue, | |
| 2545 | cc = e.frame(Zo), | |
| 2546 | rc = _o, | |
| 2546 | nc = ue, | |
| 2547 | cc = e.frame(Zn), | |
| 2548 | rc = _n, | |
| 2547 | 2549 | tc = { |
| 2548 | preencode(d, o) { | |
| 2549 | ;(e.fixed32.preencode(d, o.memberKey), | |
| 2550 | e.uint.preencode(d, o.clock), | |
| 2551 | oc.preencode(d, o.sender), | |
| 2552 | cc.preencode(d, o.status), | |
| 2553 | rc.preencode(d, o.keys), | |
| 2554 | e.fixed32.preencode(d, o.mailbox), | |
| 2550 | preencode(d, n) { | |
| 2551 | ;(e.fixed32.preencode(d, n.memberKey), | |
| 2552 | e.uint.preencode(d, n.clock), | |
| 2553 | nc.preencode(d, n.sender), | |
| 2554 | cc.preencode(d, n.status), | |
| 2555 | rc.preencode(d, n.keys), | |
| 2556 | e.fixed32.preencode(d, n.mailbox), | |
| 2555 | 2557 | d.end++, |
| 2556 | o.message && e.string.preencode(d, o.message), | |
| 2557 | n >= 11 && o.sentAt && e.uint.preencode(d, o.sentAt)) | |
| 2558 | n.message && e.string.preencode(d, n.message), | |
| 2559 | o >= 11 && n.sentAt && e.uint.preencode(d, n.sentAt)) | |
| 2558 | 2560 | }, |
| 2559 | encode(d, o) { | |
| 2560 | const c = (o.message ? 1 : 0) | (n >= 11 && o.sentAt ? 2 : 0) | |
| 2561 | ;(e.fixed32.encode(d, o.memberKey), | |
| 2562 | e.uint.encode(d, o.clock), | |
| 2563 | oc.encode(d, o.sender), | |
| 2564 | cc.encode(d, o.status), | |
| 2565 | rc.encode(d, o.keys), | |
| 2566 | e.fixed32.encode(d, o.mailbox), | |
| 2561 | encode(d, n) { | |
| 2562 | const c = (n.message ? 1 : 0) | (o >= 11 && n.sentAt ? 2 : 0) | |
| 2563 | ;(e.fixed32.encode(d, n.memberKey), | |
| 2564 | e.uint.encode(d, n.clock), | |
| 2565 | nc.encode(d, n.sender), | |
| 2566 | cc.encode(d, n.status), | |
| 2567 | rc.encode(d, n.keys), | |
| 2568 | e.fixed32.encode(d, n.mailbox), | |
| 2567 | 2569 | e.uint.encode(d, c), |
| 2568 | o.message && e.string.encode(d, o.message), | |
| 2569 | n >= 11 && o.sentAt && e.uint.encode(d, o.sentAt)) | |
| 2570 | n.message && e.string.encode(d, n.message), | |
| 2571 | o >= 11 && n.sentAt && e.uint.encode(d, n.sentAt)) | |
| 2570 | 2572 | }, |
| 2571 | 2573 | decode(d) { |
| 2572 | const o = e.fixed32.decode(d), | |
| 2574 | const n = e.fixed32.decode(d), | |
| 2573 | 2575 | c = e.uint.decode(d), |
| 2574 | r = oc.decode(d), | |
| 2576 | r = nc.decode(d), | |
| 2575 | 2577 | t = cc.decode(d), |
| 2576 | 2578 | i = rc.decode(d), |
| 2577 | 2579 | a = e.fixed32.decode(d), |
| 2578 | 2580 | s = e.uint.decode(d) |
| 2579 | 2581 | return { |
| 2580 | memberKey: o, | |
| 2582 | memberKey: n, | |
| 2581 | 2583 | clock: c, |
| 2582 | 2584 | sender: r, |
| 2583 | 2585 | status: t, |
| 2584 | 2586 | keys: i, |
| 2585 | 2587 | mailbox: a, |
| 2586 | 2588 | message: 1 & s ? e.string.decode(d) : null, |
| 2587 | sentAt: n >= 11 && 2 & s ? e.uint.decode(d) : 0, | |
| 2589 | sentAt: o >= 11 && 2 & s ? e.uint.decode(d) : 0, | |
| 2588 | 2590 | } |
| 2589 | 2591 | }, |
| 2590 | 2592 | }, |
| 2591 | 2593 | ic = _, |
| 2592 | 2594 | ac = { |
| 2593 | preencode(d, n) { | |
| 2594 | ;(ic.preencode(d, n.header), e.buffer.preencode(d, n.blindRequest)) | |
| 2595 | preencode(d, o) { | |
| 2596 | ;(ic.preencode(d, o.header), e.buffer.preencode(d, o.blindRequest)) | |
| 2595 | 2597 | }, |
| 2596 | encode(d, n) { | |
| 2597 | ;(ic.encode(d, n.header), e.buffer.encode(d, n.blindRequest)) | |
| 2598 | encode(d, o) { | |
| 2599 | ;(ic.encode(d, o.header), e.buffer.encode(d, o.blindRequest)) | |
| 2598 | 2600 | }, |
| 2599 | 2601 | decode: (d) => ({ header: ic.decode(d), blindRequest: e.buffer.decode(d) }), |
| 2600 | 2602 | }, |
| 2601 | 2603 | sc = _, |
| 2602 | 2604 | pc = cc, |
| 2603 | 2605 | uc = { |
| 2604 | preencode(d, o) { | |
| 2605 | ;(sc.preencode(d, o.header), | |
| 2606 | e.fixed32.preencode(d, o.memberKey), | |
| 2607 | e.uint.preencode(d, o.key), | |
| 2608 | pc.preencode(d, o.status), | |
| 2606 | preencode(d, n) { | |
| 2607 | ;(sc.preencode(d, n.header), | |
| 2608 | e.fixed32.preencode(d, n.memberKey), | |
| 2609 | e.uint.preencode(d, n.key), | |
| 2610 | pc.preencode(d, n.status), | |
| 2609 | 2611 | d.end++, |
| 2610 | n >= 10 && o.roomKey && e.fixed32.preencode(d, o.roomKey)) | |
| 2612 | o >= 10 && n.roomKey && e.fixed32.preencode(d, n.roomKey)) | |
| 2611 | 2613 | }, |
| 2612 | encode(d, o) { | |
| 2613 | const c = n >= 10 && o.roomKey ? 1 : 0 | |
| 2614 | ;(sc.encode(d, o.header), | |
| 2615 | e.fixed32.encode(d, o.memberKey), | |
| 2616 | e.uint.encode(d, o.key), | |
| 2617 | pc.encode(d, o.status), | |
| 2614 | encode(d, n) { | |
| 2615 | const c = o >= 10 && n.roomKey ? 1 : 0 | |
| 2616 | ;(sc.encode(d, n.header), | |
| 2617 | e.fixed32.encode(d, n.memberKey), | |
| 2618 | e.uint.encode(d, n.key), | |
| 2619 | pc.encode(d, n.status), | |
| 2618 | 2620 | e.uint.encode(d, c), |
| 2619 | n >= 10 && o.roomKey && e.fixed32.encode(d, o.roomKey)) | |
| 2621 | o >= 10 && n.roomKey && e.fixed32.encode(d, n.roomKey)) | |
| 2620 | 2622 | }, |
| 2621 | 2623 | decode(d) { |
| 2622 | const o = sc.decode(d), | |
| 2624 | const n = sc.decode(d), | |
| 2623 | 2625 | c = e.fixed32.decode(d), |
| 2624 | 2626 | r = e.uint.decode(d), |
| 2625 | 2627 | t = pc.decode(d), |
| 2626 | 2628 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 2627 | 2629 | return { |
| 2628 | header: o, | |
| 2630 | header: n, | |
| 2629 | 2631 | memberKey: c, |
| 2630 | 2632 | key: r, |
| 2631 | 2633 | status: t, |
| 2632 | roomKey: n >= 10 && 1 & i ? e.fixed32.decode(d) : null, | |
| 2634 | roomKey: o >= 10 && 1 & i ? e.fixed32.decode(d) : null, | |
| 2633 | 2635 | } |
| 2634 | 2636 | }, |
| 2635 | 2637 | }, |
| 2636 | 2638 | lc = { |
| 2637 | preencode(d, n) { | |
| 2638 | ;(e.uint.preencode(d, n.timestamp), | |
| 2639 | e.fixed32.preencode(d, n.key), | |
| 2640 | e.fixed32.preencode(d, n.mailbox)) | |
| 2639 | preencode(d, o) { | |
| 2640 | ;(e.uint.preencode(d, o.timestamp), | |
| 2641 | e.fixed32.preencode(d, o.key), | |
| 2642 | e.fixed32.preencode(d, o.mailbox)) | |
| 2641 | 2643 | }, |
| 2642 | encode(d, n) { | |
| 2643 | ;(e.uint.encode(d, n.timestamp), e.fixed32.encode(d, n.key), e.fixed32.encode(d, n.mailbox)) | |
| 2644 | encode(d, o) { | |
| 2645 | ;(e.uint.encode(d, o.timestamp), e.fixed32.encode(d, o.key), e.fixed32.encode(d, o.mailbox)) | |
| 2644 | 2646 | }, |
| 2645 | 2647 | decode: (d) => ({ |
| 2646 | 2648 | version: e.uint.decode(d), |
| … | … | @@ -2650,30 +2652,30 @@ const o = { |
| 2650 | 2652 | }), |
| 2651 | 2653 | }, |
| 2652 | 2654 | fc = { |
| 2653 | preencode(d, n) { | |
| 2654 | switch ((e.uint.preencode(d, n.version), n.version)) { | |
| 2655 | preencode(d, o) { | |
| 2656 | switch ((e.uint.preencode(d, o.version), o.version)) { | |
| 2655 | 2657 | case 0: |
| 2656 | 2658 | case 1: |
| 2657 | lc.preencode(d, n) | |
| 2659 | lc.preencode(d, o) | |
| 2658 | 2660 | break |
| 2659 | 2661 | default: |
| 2660 | 2662 | throw new Error("Unsupported version") |
| 2661 | 2663 | } |
| 2662 | 2664 | }, |
| 2663 | encode(d, n) { | |
| 2664 | switch ((e.uint.encode(d, n.version), n.version)) { | |
| 2665 | encode(d, o) { | |
| 2666 | switch ((e.uint.encode(d, o.version), o.version)) { | |
| 2665 | 2667 | case 0: |
| 2666 | 2668 | case 1: |
| 2667 | lc.encode(d, n) | |
| 2669 | lc.encode(d, o) | |
| 2668 | 2670 | break |
| 2669 | 2671 | default: |
| 2670 | 2672 | throw new Error("Unsupported version") |
| 2671 | 2673 | } |
| 2672 | 2674 | }, |
| 2673 | 2675 | decode(d) { |
| 2674 | const n = d.start, | |
| 2675 | o = e.uint.decode(d) | |
| 2676 | switch (((d.start = n), o)) { | |
| 2676 | const o = d.start, | |
| 2677 | n = e.uint.decode(d) | |
| 2678 | switch (((d.start = o), n)) { | |
| 2677 | 2679 | case 0: |
| 2678 | 2680 | case 1: |
| 2679 | 2681 | return lc.decode(d) |
| … | … | @@ -2684,49 +2686,49 @@ const o = { |
| 2684 | 2686 | }, |
| 2685 | 2687 | mc = _, |
| 2686 | 2688 | yc = { |
| 2687 | preencode(d, o) { | |
| 2688 | ;(mc.preencode(d, o.header), | |
| 2689 | c.preencode(d, o.oplog), | |
| 2690 | e.uint.preencode(d, o.index), | |
| 2691 | at.preencode(d, o.preview), | |
| 2689 | preencode(d, n) { | |
| 2690 | ;(mc.preencode(d, n.header), | |
| 2691 | c.preencode(d, n.oplog), | |
| 2692 | e.uint.preencode(d, n.index), | |
| 2693 | pt.preencode(d, n.preview), | |
| 2692 | 2694 | d.end++, |
| 2693 | n >= 7 && o.displayType && Rc.preencode(d, o.displayType)) | |
| 2695 | o >= 7 && n.displayType && Rc.preencode(d, n.displayType)) | |
| 2694 | 2696 | }, |
| 2695 | encode(d, o) { | |
| 2696 | const r = n >= 7 && o.displayType ? 1 : 0 | |
| 2697 | ;(mc.encode(d, o.header), | |
| 2698 | c.encode(d, o.oplog), | |
| 2699 | e.uint.encode(d, o.index), | |
| 2700 | at.encode(d, o.preview), | |
| 2697 | encode(d, n) { | |
| 2698 | const r = o >= 7 && n.displayType ? 1 : 0 | |
| 2699 | ;(mc.encode(d, n.header), | |
| 2700 | c.encode(d, n.oplog), | |
| 2701 | e.uint.encode(d, n.index), | |
| 2702 | pt.encode(d, n.preview), | |
| 2701 | 2703 | e.uint.encode(d, r), |
| 2702 | n >= 7 && o.displayType && Rc.encode(d, o.displayType)) | |
| 2704 | o >= 7 && n.displayType && Rc.encode(d, n.displayType)) | |
| 2703 | 2705 | }, |
| 2704 | 2706 | decode(d) { |
| 2705 | const o = mc.decode(d), | |
| 2707 | const n = mc.decode(d), | |
| 2706 | 2708 | r = c.decode(d), |
| 2707 | 2709 | t = e.uint.decode(d), |
| 2708 | i = at.decode(d), | |
| 2710 | i = pt.decode(d), | |
| 2709 | 2711 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 2710 | 2712 | return { |
| 2711 | header: o, | |
| 2713 | header: n, | |
| 2712 | 2714 | oplog: r, |
| 2713 | 2715 | index: t, |
| 2714 | 2716 | preview: i, |
| 2715 | displayType: n >= 7 && 1 & a ? Rc.decode(d) : 0, | |
| 2717 | displayType: o >= 7 && 1 & a ? Rc.decode(d) : 0, | |
| 2716 | 2718 | } |
| 2717 | 2719 | }, |
| 2718 | 2720 | }, |
| 2719 | 2721 | xc = { |
| 2720 | preencode(d, o) { | |
| 2721 | ;(d.end++, n >= 3 && o.memberKey && e.fixed32.preencode(d, o.memberKey)) | |
| 2722 | preencode(d, n) { | |
| 2723 | ;(d.end++, o >= 3 && n.memberKey && e.fixed32.preencode(d, n.memberKey)) | |
| 2722 | 2724 | }, |
| 2723 | encode(d, o) { | |
| 2724 | const c = n >= 3 && o.memberKey ? 1 : 0 | |
| 2725 | ;(e.uint.encode(d, c), n >= 3 && o.memberKey && e.fixed32.encode(d, o.memberKey)) | |
| 2725 | encode(d, n) { | |
| 2726 | const c = o >= 3 && n.memberKey ? 1 : 0 | |
| 2727 | ;(e.uint.encode(d, c), o >= 3 && n.memberKey && e.fixed32.encode(d, n.memberKey)) | |
| 2726 | 2728 | }, |
| 2727 | 2729 | decode(d) { |
| 2728 | const o = e.uint.decode(d) | |
| 2729 | return { memberKey: n >= 3 && 1 & o ? e.fixed32.decode(d) : null } | |
| 2730 | const n = e.uint.decode(d) | |
| 2731 | return { memberKey: o >= 3 && 1 & n ? e.fixed32.decode(d) : null } | |
| 2730 | 2732 | }, |
| 2731 | 2733 | }, |
| 2732 | 2734 | bc = ue, |
| … | … | @@ -2741,24 +2743,24 @@ const o = { |
| 2741 | 2743 | }, |
| 2742 | 2744 | vc = _, |
| 2743 | 2745 | gc = { |
| 2744 | preencode(d, n) { | |
| 2745 | ;(vc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2746 | preencode(d, o) { | |
| 2747 | ;(vc.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 2746 | 2748 | }, |
| 2747 | encode(d, n) { | |
| 2748 | ;(vc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2749 | encode(d, o) { | |
| 2750 | ;(vc.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 2749 | 2751 | }, |
| 2750 | 2752 | decode: (d) => ({ header: vc.decode(d), key: e.fixed32.decode(d) }), |
| 2751 | 2753 | }, |
| 2752 | 2754 | hc = { |
| 2753 | preencode(d, n) { | |
| 2754 | ;(e.fixed32.preencode(d, n.deviceKey), | |
| 2755 | ce.preencode(d, n.privateProfileIdentity), | |
| 2756 | e.buffer.preencode(d, n.deviceProof)) | |
| 2755 | preencode(d, o) { | |
| 2756 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 2757 | ce.preencode(d, o.privateProfileIdentity), | |
| 2758 | e.buffer.preencode(d, o.deviceProof)) | |
| 2757 | 2759 | }, |
| 2758 | encode(d, n) { | |
| 2759 | ;(e.fixed32.encode(d, n.deviceKey), | |
| 2760 | ce.encode(d, n.privateProfileIdentity), | |
| 2761 | e.buffer.encode(d, n.deviceProof)) | |
| 2760 | encode(d, o) { | |
| 2761 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 2762 | ce.encode(d, o.privateProfileIdentity), | |
| 2763 | e.buffer.encode(d, o.deviceProof)) | |
| 2762 | 2764 | }, |
| 2763 | 2765 | decode: (d) => ({ |
| 2764 | 2766 | deviceKey: e.fixed32.decode(d), |
| … | … | @@ -2767,70 +2769,70 @@ const o = { |
| 2767 | 2769 | }), |
| 2768 | 2770 | }, |
| 2769 | 2771 | Kc = { |
| 2770 | preencode(d, o) { | |
| 2771 | ;(e.fixed32.preencode(d, o.roomKey), | |
| 2772 | e.fixed32.preencode(d, o.encryptionKey), | |
| 2773 | e.fixed32.preencode(d, o.seed), | |
| 2772 | preencode(d, n) { | |
| 2773 | ;(e.fixed32.preencode(d, n.roomKey), | |
| 2774 | e.fixed32.preencode(d, n.encryptionKey), | |
| 2775 | e.fixed32.preencode(d, n.seed), | |
| 2774 | 2776 | d.end++, |
| 2775 | n >= 6 && o.fastForwardTo && e.fixed32.preencode(d, o.fastForwardTo)) | |
| 2777 | o >= 6 && n.fastForwardTo && e.fixed32.preencode(d, n.fastForwardTo)) | |
| 2776 | 2778 | }, |
| 2777 | encode(d, o) { | |
| 2778 | const c = n >= 6 && o.fastForwardTo ? 1 : 0 | |
| 2779 | ;(e.fixed32.encode(d, o.roomKey), | |
| 2780 | e.fixed32.encode(d, o.encryptionKey), | |
| 2781 | e.fixed32.encode(d, o.seed), | |
| 2779 | encode(d, n) { | |
| 2780 | const c = o >= 6 && n.fastForwardTo ? 1 : 0 | |
| 2781 | ;(e.fixed32.encode(d, n.roomKey), | |
| 2782 | e.fixed32.encode(d, n.encryptionKey), | |
| 2783 | e.fixed32.encode(d, n.seed), | |
| 2782 | 2784 | e.uint.encode(d, c), |
| 2783 | n >= 6 && o.fastForwardTo && e.fixed32.encode(d, o.fastForwardTo)) | |
| 2785 | o >= 6 && n.fastForwardTo && e.fixed32.encode(d, n.fastForwardTo)) | |
| 2784 | 2786 | }, |
| 2785 | 2787 | decode(d) { |
| 2786 | const o = e.fixed32.decode(d), | |
| 2788 | const n = e.fixed32.decode(d), | |
| 2787 | 2789 | c = e.fixed32.decode(d), |
| 2788 | 2790 | r = e.fixed32.decode(d), |
| 2789 | 2791 | t = e.uint.decode(d) |
| 2790 | 2792 | return { |
| 2791 | roomKey: o, | |
| 2793 | roomKey: n, | |
| 2792 | 2794 | encryptionKey: c, |
| 2793 | 2795 | seed: r, |
| 2794 | fastForwardTo: n >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2796 | fastForwardTo: o >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2795 | 2797 | } |
| 2796 | 2798 | }, |
| 2797 | 2799 | }, |
| 2798 | 2800 | wc = { |
| 2799 | preencode(d, o) { | |
| 2800 | ;(e.fixed32.preencode(d, o.publicKey), | |
| 2801 | e.fixed32.preencode(d, o.writerKey), | |
| 2802 | e.fixed32.preencode(d, o.devicePublicKey), | |
| 2801 | preencode(d, n) { | |
| 2802 | ;(e.fixed32.preencode(d, n.publicKey), | |
| 2803 | e.fixed32.preencode(d, n.writerKey), | |
| 2804 | e.fixed32.preencode(d, n.devicePublicKey), | |
| 2803 | 2805 | d.end++, |
| 2804 | n >= 6 && o.privateProfileKey && e.fixed32.preencode(d, o.privateProfileKey)) | |
| 2806 | o >= 6 && n.privateProfileKey && e.fixed32.preencode(d, n.privateProfileKey)) | |
| 2805 | 2807 | }, |
| 2806 | encode(d, o) { | |
| 2807 | const c = n >= 6 && o.privateProfileKey ? 1 : 0 | |
| 2808 | ;(e.fixed32.encode(d, o.publicKey), | |
| 2809 | e.fixed32.encode(d, o.writerKey), | |
| 2810 | e.fixed32.encode(d, o.devicePublicKey), | |
| 2808 | encode(d, n) { | |
| 2809 | const c = o >= 6 && n.privateProfileKey ? 1 : 0 | |
| 2810 | ;(e.fixed32.encode(d, n.publicKey), | |
| 2811 | e.fixed32.encode(d, n.writerKey), | |
| 2812 | e.fixed32.encode(d, n.devicePublicKey), | |
| 2811 | 2813 | e.uint.encode(d, c), |
| 2812 | n >= 6 && o.privateProfileKey && e.fixed32.encode(d, o.privateProfileKey)) | |
| 2814 | o >= 6 && n.privateProfileKey && e.fixed32.encode(d, n.privateProfileKey)) | |
| 2813 | 2815 | }, |
| 2814 | 2816 | decode(d) { |
| 2815 | const o = e.fixed32.decode(d), | |
| 2817 | const n = e.fixed32.decode(d), | |
| 2816 | 2818 | c = e.fixed32.decode(d), |
| 2817 | 2819 | r = e.fixed32.decode(d), |
| 2818 | 2820 | t = e.uint.decode(d) |
| 2819 | 2821 | return { |
| 2820 | publicKey: o, | |
| 2822 | publicKey: n, | |
| 2821 | 2823 | writerKey: c, |
| 2822 | 2824 | devicePublicKey: r, |
| 2823 | privateProfileKey: n >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2825 | privateProfileKey: o >= 6 && 1 & t ? e.fixed32.decode(d) : null, | |
| 2824 | 2826 | } |
| 2825 | 2827 | }, |
| 2826 | 2828 | }, |
| 2827 | 2829 | Tc = _, |
| 2828 | 2830 | Pc = { |
| 2829 | preencode(d, n) { | |
| 2830 | ;(Tc.preencode(d, n.header), e.fixed32.preencode(d, n.memberKey)) | |
| 2831 | preencode(d, o) { | |
| 2832 | ;(Tc.preencode(d, o.header), e.fixed32.preencode(d, o.memberKey)) | |
| 2831 | 2833 | }, |
| 2832 | encode(d, n) { | |
| 2833 | ;(Tc.encode(d, n.header), e.fixed32.encode(d, n.memberKey)) | |
| 2834 | encode(d, o) { | |
| 2835 | ;(Tc.encode(d, o.header), e.fixed32.encode(d, o.memberKey)) | |
| 2834 | 2836 | }, |
| 2835 | 2837 | decode: (d) => ({ header: Tc.decode(d), memberKey: e.fixed32.decode(d) }), |
| 2836 | 2838 | }, |
| … | … | @@ -2839,54 +2841,54 @@ const o = { |
| 2839 | 2841 | preencode(e, d) { |
| 2840 | 2842 | e.end++ |
| 2841 | 2843 | }, |
| 2842 | encode(d, n) { | |
| 2843 | if (n > 2) throw new Error("Unknown enum") | |
| 2844 | e.uint.encode(d, n) | |
| 2844 | encode(d, o) { | |
| 2845 | if (o > 2) throw new Error("Unknown enum") | |
| 2846 | e.uint.encode(d, o) | |
| 2845 | 2847 | }, |
| 2846 | 2848 | decode: (d) => e.uint.decode(d), |
| 2847 | 2849 | }, |
| 2848 | 2850 | Dc = _, |
| 2849 | Sc = { | |
| 2850 | preencode(d, n) { | |
| 2851 | ;(Dc.preencode(d, n.header), e.uint.preencode(d, n.value)) | |
| 2851 | Mc = { | |
| 2852 | preencode(d, o) { | |
| 2853 | ;(Dc.preencode(d, o.header), e.uint.preencode(d, o.value)) | |
| 2852 | 2854 | }, |
| 2853 | encode(d, n) { | |
| 2854 | ;(Dc.encode(d, n.header), e.uint.encode(d, n.value)) | |
| 2855 | encode(d, o) { | |
| 2856 | ;(Dc.encode(d, o.header), e.uint.encode(d, o.value)) | |
| 2855 | 2857 | }, |
| 2856 | 2858 | decode: (d) => ({ header: Dc.decode(d), value: e.uint.decode(d) }), |
| 2857 | 2859 | }, |
| 2858 | Cc = { | |
| 2859 | preencode(d, n) { | |
| 2860 | ;(e.uint.preencode(d, n.key), e.uint.preencode(d, n.value)) | |
| 2860 | Sc = { | |
| 2861 | preencode(d, o) { | |
| 2862 | ;(e.uint.preencode(d, o.key), e.uint.preencode(d, o.value)) | |
| 2861 | 2863 | }, |
| 2862 | encode(d, n) { | |
| 2863 | ;(e.uint.encode(d, n.key), e.uint.encode(d, n.value)) | |
| 2864 | encode(d, o) { | |
| 2865 | ;(e.uint.encode(d, o.key), e.uint.encode(d, o.value)) | |
| 2864 | 2866 | }, |
| 2865 | 2867 | decode: (d) => ({ key: e.uint.decode(d), value: e.uint.decode(d) }), |
| 2866 | 2868 | }, |
| 2867 | Mc = _, | |
| 2869 | Cc = _, | |
| 2868 | 2870 | Lc = { |
| 2869 | preencode(d, o) { | |
| 2870 | ;(Mc.preencode(d, o.header), | |
| 2871 | e.uint.preencode(d, o.from), | |
| 2872 | e.uint.preencode(d, o.to), | |
| 2871 | preencode(d, n) { | |
| 2872 | ;(Cc.preencode(d, n.header), | |
| 2873 | e.uint.preencode(d, n.from), | |
| 2874 | e.uint.preencode(d, n.to), | |
| 2873 | 2875 | d.end++, |
| 2874 | n >= 20 && o.buildType && Or.preencode(d, o.buildType)) | |
| 2876 | o >= 20 && n.buildType && Ur.preencode(d, n.buildType)) | |
| 2875 | 2877 | }, |
| 2876 | encode(d, o) { | |
| 2877 | const c = n >= 20 && o.buildType ? 1 : 0 | |
| 2878 | ;(Mc.encode(d, o.header), | |
| 2879 | e.uint.encode(d, o.from), | |
| 2880 | e.uint.encode(d, o.to), | |
| 2878 | encode(d, n) { | |
| 2879 | const c = o >= 20 && n.buildType ? 1 : 0 | |
| 2880 | ;(Cc.encode(d, n.header), | |
| 2881 | e.uint.encode(d, n.from), | |
| 2882 | e.uint.encode(d, n.to), | |
| 2881 | 2883 | e.uint.encode(d, c), |
| 2882 | n >= 20 && o.buildType && Or.encode(d, o.buildType)) | |
| 2884 | o >= 20 && n.buildType && Ur.encode(d, n.buildType)) | |
| 2883 | 2885 | }, |
| 2884 | 2886 | decode(d) { |
| 2885 | const o = Mc.decode(d), | |
| 2887 | const n = Cc.decode(d), | |
| 2886 | 2888 | c = e.uint.decode(d), |
| 2887 | 2889 | r = e.uint.decode(d), |
| 2888 | 2890 | t = d.start < d.end ? e.uint.decode(d) : 0 |
| 2889 | return { header: o, from: c, to: r, buildType: n >= 20 && 1 & t ? Or.decode(d) : null } | |
| 2891 | return { header: n, from: c, to: r, buildType: o >= 20 && 1 & t ? Ur.decode(d) : null } | |
| 2890 | 2892 | }, |
| 2891 | 2893 | }, |
| 2892 | 2894 | qc = { |
| … | … | @@ -2903,9 +2905,9 @@ const o = { |
| 2903 | 2905 | preencode(e, d) { |
| 2904 | 2906 | e.end++ |
| 2905 | 2907 | }, |
| 2906 | encode(d, n) { | |
| 2907 | if (n > 8) throw new Error("Unknown enum") | |
| 2908 | e.uint.encode(d, n) | |
| 2908 | encode(d, o) { | |
| 2909 | if (o > 8) throw new Error("Unknown enum") | |
| 2910 | e.uint.encode(d, o) | |
| 2909 | 2911 | }, |
| 2910 | 2912 | decode: (d) => e.uint.decode(d), |
| 2911 | 2913 | }, |
| … | … | @@ -2914,8 +2916,8 @@ const o = { |
| 2914 | 2916 | preencode(e, d) { |
| 2915 | 2917 | e.end++ |
| 2916 | 2918 | }, |
| 2917 | encode(d, n) { | |
| 2918 | switch (n) { | |
| 2919 | encode(d, o) { | |
| 2920 | switch (o) { | |
| 2919 | 2921 | case "en": |
| 2920 | 2922 | e.uint.encode(d, 1) |
| 2921 | 2923 | break |
| … | … | @@ -2954,69 +2956,69 @@ const o = { |
| 2954 | 2956 | }, |
| 2955 | 2957 | Ic = Ed, |
| 2956 | 2958 | Nc = { |
| 2957 | preencode(d, n) { | |
| 2958 | ;(Ic.preencode(d, n.range), Bc.preencode(d, n.language), e.string.preencode(d, n.text)) | |
| 2959 | preencode(d, o) { | |
| 2960 | ;(Ic.preencode(d, o.range), Bc.preencode(d, o.language), e.string.preencode(d, o.text)) | |
| 2959 | 2961 | }, |
| 2960 | encode(d, n) { | |
| 2961 | ;(Ic.encode(d, n.range), Bc.encode(d, n.language), e.string.encode(d, n.text)) | |
| 2962 | encode(d, o) { | |
| 2963 | ;(Ic.encode(d, o.range), Bc.encode(d, o.language), e.string.encode(d, o.text)) | |
| 2962 | 2964 | }, |
| 2963 | 2965 | decode: (d) => ({ range: Ic.decode(d), language: Bc.decode(d), text: e.string.decode(d) }), |
| 2964 | 2966 | }, |
| 2965 | 2967 | jc = { |
| 2966 | preencode(d, n) { | |
| 2967 | ;(e.fixed32.preencode(d, n.deviceKey), e.fixed32.preencode(d, n.key)) | |
| 2968 | preencode(d, o) { | |
| 2969 | ;(e.fixed32.preencode(d, o.deviceKey), e.fixed32.preencode(d, o.key)) | |
| 2968 | 2970 | }, |
| 2969 | encode(d, n) { | |
| 2970 | ;(e.fixed32.encode(d, n.deviceKey), e.fixed32.encode(d, n.key)) | |
| 2971 | encode(d, o) { | |
| 2972 | ;(e.fixed32.encode(d, o.deviceKey), e.fixed32.encode(d, o.key)) | |
| 2971 | 2973 | }, |
| 2972 | 2974 | decode: (d) => ({ deviceKey: e.fixed32.decode(d), key: e.fixed32.decode(d) }), |
| 2973 | 2975 | }, |
| 2974 | Oc = _, | |
| 2975 | Jc = { | |
| 2976 | preencode(d, n) { | |
| 2977 | ;(Oc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2976 | Uc = _, | |
| 2977 | Oc = { | |
| 2978 | preencode(d, o) { | |
| 2979 | ;(Uc.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 2978 | 2980 | }, |
| 2979 | encode(d, n) { | |
| 2980 | ;(Oc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2981 | encode(d, o) { | |
| 2982 | ;(Uc.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 2981 | 2983 | }, |
| 2982 | decode: (d) => ({ header: Oc.decode(d), key: e.fixed32.decode(d) }), | |
| 2984 | decode: (d) => ({ header: Uc.decode(d), key: e.fixed32.decode(d) }), | |
| 2983 | 2985 | }, |
| 2984 | Uc = _, | |
| 2986 | Jc = _, | |
| 2985 | 2987 | Vc = { |
| 2986 | preencode(d, n) { | |
| 2987 | ;(Uc.preencode(d, n.header), e.fixed32.preencode(d, n.key)) | |
| 2988 | preencode(d, o) { | |
| 2989 | ;(Jc.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 2988 | 2990 | }, |
| 2989 | encode(d, n) { | |
| 2990 | ;(Uc.encode(d, n.header), e.fixed32.encode(d, n.key)) | |
| 2991 | encode(d, o) { | |
| 2992 | ;(Jc.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 2991 | 2993 | }, |
| 2992 | decode: (d) => ({ header: Uc.decode(d), key: e.fixed32.decode(d) }), | |
| 2994 | decode: (d) => ({ header: Jc.decode(d), key: e.fixed32.decode(d) }), | |
| 2993 | 2995 | }, |
| 2994 | 2996 | Hc = { Flag: 1 }, |
| 2995 | 2997 | zc = { |
| 2996 | 2998 | preencode(e, d) { |
| 2997 | 2999 | e.end++ |
| 2998 | 3000 | }, |
| 2999 | encode(d, n) { | |
| 3000 | if (n > 1) throw new Error("Unknown enum") | |
| 3001 | e.uint.encode(d, n) | |
| 3001 | encode(d, o) { | |
| 3002 | if (o > 1) throw new Error("Unknown enum") | |
| 3003 | e.uint.encode(d, o) | |
| 3002 | 3004 | }, |
| 3003 | 3005 | decode: (d) => e.uint.decode(d), |
| 3004 | 3006 | }, |
| 3005 | 3007 | Gc = { |
| 3006 | preencode(d, n) { | |
| 3007 | ;(fn.preencode(d, n.id), | |
| 3008 | e.fixed32.preencode(d, n.sender), | |
| 3009 | e.uint.preencode(d, n.clock), | |
| 3010 | zc.preencode(d, n.label)) | |
| 3008 | preencode(d, o) { | |
| 3009 | ;(fo.preencode(d, o.id), | |
| 3010 | e.fixed32.preencode(d, o.sender), | |
| 3011 | e.uint.preencode(d, o.clock), | |
| 3012 | zc.preencode(d, o.label)) | |
| 3011 | 3013 | }, |
| 3012 | encode(d, n) { | |
| 3013 | ;(fn.encode(d, n.id), | |
| 3014 | e.fixed32.encode(d, n.sender), | |
| 3015 | e.uint.encode(d, n.clock), | |
| 3016 | zc.encode(d, n.label)) | |
| 3014 | encode(d, o) { | |
| 3015 | ;(fo.encode(d, o.id), | |
| 3016 | e.fixed32.encode(d, o.sender), | |
| 3017 | e.uint.encode(d, o.clock), | |
| 3018 | zc.encode(d, o.label)) | |
| 3017 | 3019 | }, |
| 3018 | 3020 | decode: (d) => ({ |
| 3019 | id: fn.decode(d), | |
| 3021 | id: fo.decode(d), | |
| 3020 | 3022 | sender: e.fixed32.decode(d), |
| 3021 | 3023 | clock: e.uint.decode(d), |
| 3022 | 3024 | label: zc.decode(d), |
| … | … | @@ -3043,98 +3045,122 @@ const o = { |
| 3043 | 3045 | decode: (e) => ({ header: Xc.decode(e), oplog: c.decode(e), label: zc.decode(e) }), |
| 3044 | 3046 | }, |
| 3045 | 3047 | Zc = { |
| 3046 | preencode(d, n) { | |
| 3047 | ;(zc.preencode(d, n.label), e.uint.preencode(d, n.count)) | |
| 3048 | preencode(d, o) { | |
| 3049 | ;(zc.preencode(d, o.label), e.uint.preencode(d, o.count)) | |
| 3048 | 3050 | }, |
| 3049 | encode(d, n) { | |
| 3050 | ;(zc.encode(d, n.label), e.uint.encode(d, n.count)) | |
| 3051 | encode(d, o) { | |
| 3052 | ;(zc.encode(d, o.label), e.uint.encode(d, o.count)) | |
| 3051 | 3053 | }, |
| 3052 | 3054 | decode: (d) => ({ label: zc.decode(d), count: e.uint.decode(d) }), |
| 3053 | 3055 | }, |
| 3054 | 3056 | $c = e.array(e.frame(Zc)), |
| 3055 | 3057 | _c = { |
| 3056 | preencode(d, o) { | |
| 3057 | ;(fn.preencode(d, o.id), | |
| 3058 | e.uint.preencode(d, o.total), | |
| 3059 | $c.preencode(d, o.labels), | |
| 3060 | e.uint.preencode(d, o.editedAt), | |
| 3058 | preencode(d, n) { | |
| 3059 | ;(fo.preencode(d, n.id), | |
| 3060 | e.uint.preencode(d, n.total), | |
| 3061 | $c.preencode(d, n.labels), | |
| 3062 | e.uint.preencode(d, n.editedAt), | |
| 3061 | 3063 | d.end++, |
| 3062 | n >= 15 && o.flagsClock && e.uint.preencode(d, o.flagsClock), | |
| 3063 | n >= 15 && o.version && e.uint.preencode(d, o.version)) | |
| 3064 | o >= 15 && n.flagsClock && e.uint.preencode(d, n.flagsClock), | |
| 3065 | o >= 15 && n.version && e.uint.preencode(d, n.version)) | |
| 3064 | 3066 | }, |
| 3065 | encode(d, o) { | |
| 3067 | encode(d, n) { | |
| 3066 | 3068 | const c = |
| 3067 | (n >= 15 && o.flagsClock ? 1 : 0) | | |
| 3068 | (n >= 15 && o.version ? 2 : 0) | | |
| 3069 | (n >= 16 && o.isDeleted ? 4 : 0) | |
| 3070 | ;(fn.encode(d, o.id), | |
| 3071 | e.uint.encode(d, o.total), | |
| 3072 | $c.encode(d, o.labels), | |
| 3073 | e.uint.encode(d, o.editedAt), | |
| 3069 | (o >= 15 && n.flagsClock ? 1 : 0) | | |
| 3070 | (o >= 15 && n.version ? 2 : 0) | | |
| 3071 | (o >= 16 && n.isDeleted ? 4 : 0) | |
| 3072 | ;(fo.encode(d, n.id), | |
| 3073 | e.uint.encode(d, n.total), | |
| 3074 | $c.encode(d, n.labels), | |
| 3075 | e.uint.encode(d, n.editedAt), | |
| 3074 | 3076 | e.uint.encode(d, c), |
| 3075 | n >= 15 && o.flagsClock && e.uint.encode(d, o.flagsClock), | |
| 3076 | n >= 15 && o.version && e.uint.encode(d, o.version)) | |
| 3077 | o >= 15 && n.flagsClock && e.uint.encode(d, n.flagsClock), | |
| 3078 | o >= 15 && n.version && e.uint.encode(d, n.version)) | |
| 3077 | 3079 | }, |
| 3078 | 3080 | decode(d) { |
| 3079 | const o = fn.decode(d), | |
| 3081 | const n = fo.decode(d), | |
| 3080 | 3082 | c = e.uint.decode(d), |
| 3081 | 3083 | r = $c.decode(d), |
| 3082 | 3084 | t = e.uint.decode(d), |
| 3083 | 3085 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 3084 | 3086 | return { |
| 3085 | id: o, | |
| 3087 | id: n, | |
| 3086 | 3088 | total: c, |
| 3087 | 3089 | labels: r, |
| 3088 | 3090 | editedAt: t, |
| 3089 | flagsClock: n >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 3090 | version: n >= 15 && 2 & i ? e.uint.decode(d) : 0, | |
| 3091 | isDeleted: n >= 16 && !!(4 & i), | |
| 3091 | flagsClock: o >= 15 && 1 & i ? e.uint.decode(d) : 0, | |
| 3092 | version: o >= 15 && 2 & i ? e.uint.decode(d) : 0, | |
| 3093 | isDeleted: o >= 16 && !!(4 & i), | |
| 3092 | 3094 | } |
| 3093 | 3095 | }, |
| 3094 | 3096 | }, |
| 3095 | 3097 | er = _, |
| 3096 | 3098 | dr = { |
| 3097 | preencode(d, n) { | |
| 3098 | ;(er.preencode(d, n.header), e.uint.preencode(d, n.length)) | |
| 3099 | preencode(d, o) { | |
| 3100 | ;(er.preencode(d, o.header), e.uint.preencode(d, o.length)) | |
| 3099 | 3101 | }, |
| 3100 | encode(d, n) { | |
| 3101 | ;(er.encode(d, n.header), e.uint.encode(d, n.length)) | |
| 3102 | encode(d, o) { | |
| 3103 | ;(er.encode(d, o.header), e.uint.encode(d, o.length)) | |
| 3102 | 3104 | }, |
| 3103 | 3105 | decode: (d) => ({ header: er.decode(d), length: e.uint.decode(d) }), |
| 3104 | 3106 | }, |
| 3105 | nr = { | |
| 3106 | preencode(d, n) { | |
| 3107 | ;(e.fixed32.preencode(d, n.memberKey), e.uint.preencode(d, n.length)) | |
| 3107 | or = { | |
| 3108 | preencode(d, o) { | |
| 3109 | ;(e.fixed32.preencode(d, o.memberKey), e.uint.preencode(d, o.length)) | |
| 3108 | 3110 | }, |
| 3109 | encode(d, n) { | |
| 3110 | ;(e.fixed32.encode(d, n.memberKey), e.uint.encode(d, n.length)) | |
| 3111 | encode(d, o) { | |
| 3112 | ;(e.fixed32.encode(d, o.memberKey), e.uint.encode(d, o.length)) | |
| 3111 | 3113 | }, |
| 3112 | 3114 | decode: (d) => ({ memberKey: e.fixed32.decode(d), length: e.uint.decode(d) }), |
| 3113 | 3115 | }, |
| 3114 | or = $, | |
| 3116 | nr = $, | |
| 3115 | 3117 | cr = { |
| 3116 | 3118 | preencode(e, d) { |
| 3117 | 3119 | e.end++ |
| 3118 | 3120 | }, |
| 3119 | encode(d, o) { | |
| 3120 | const c = n >= 13 && o.disableReadReceipts ? 1 : 0 | |
| 3121 | encode(d, n) { | |
| 3122 | const c = | |
| 3123 | (o >= 13 && n.disableReadReceipts ? 1 : 0) | (o >= 21 && n.stripAttachmentMetadata ? 2 : 0) | |
| 3121 | 3124 | e.uint.encode(d, c) |
| 3122 | 3125 | }, |
| 3123 | 3126 | decode(d) { |
| 3124 | const o = e.uint.decode(d) | |
| 3125 | return { disableReadReceipts: n >= 13 && !!(1 & o) } | |
| 3127 | const n = e.uint.decode(d) | |
| 3128 | return { | |
| 3129 | disableReadReceipts: o >= 13 && !!(1 & n), | |
| 3130 | stripAttachmentMetadata: o >= 21 && !!(2 & n), | |
| 3131 | } | |
| 3126 | 3132 | }, |
| 3127 | 3133 | }, |
| 3128 | rr = { disableReadReceipts: "disableReadReceipts" }, | |
| 3134 | rr = { | |
| 3135 | disableReadReceipts: "disableReadReceipts", | |
| 3136 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 3137 | }, | |
| 3129 | 3138 | tr = { |
| 3130 | 3139 | preencode(e, d) { |
| 3131 | 3140 | e.end++ |
| 3132 | 3141 | }, |
| 3133 | encode(d, n) { | |
| 3134 | if ("disableReadReceipts" !== n) throw new Error("Unknown enum") | |
| 3135 | e.uint.encode(d, 1) | |
| 3142 | encode(d, o) { | |
| 3143 | switch (o) { | |
| 3144 | case "disableReadReceipts": | |
| 3145 | e.uint.encode(d, 1) | |
| 3146 | break | |
| 3147 | case "stripAttachmentMetadata": | |
| 3148 | e.uint.encode(d, 2) | |
| 3149 | break | |
| 3150 | default: | |
| 3151 | throw new Error("Unknown enum") | |
| 3152 | } | |
| 3153 | }, | |
| 3154 | decode(d) { | |
| 3155 | switch (e.uint.decode(d)) { | |
| 3156 | case 1: | |
| 3157 | return "disableReadReceipts" | |
| 3158 | case 2: | |
| 3159 | return "stripAttachmentMetadata" | |
| 3160 | default: | |
| 3161 | return null | |
| 3162 | } | |
| 3136 | 3163 | }, |
| 3137 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 3138 | 3164 | }, |
| 3139 | 3165 | ir = _, |
| 3140 | 3166 | ar = e.frame(cr), |
| … | … | @@ -3152,24 +3178,24 @@ const o = { |
| 3152 | 3178 | preencode(e, d) { |
| 3153 | 3179 | e.end++ |
| 3154 | 3180 | }, |
| 3155 | encode(d, n) { | |
| 3156 | if (n > 1) throw new Error("Unknown enum") | |
| 3157 | e.uint.encode(d, n) | |
| 3181 | encode(d, o) { | |
| 3182 | if (o > 1) throw new Error("Unknown enum") | |
| 3183 | e.uint.encode(d, o) | |
| 3158 | 3184 | }, |
| 3159 | 3185 | decode: (d) => e.uint.decode(d), |
| 3160 | 3186 | }, |
| 3161 | 3187 | lr = { |
| 3162 | preencode(d, n) { | |
| 3163 | ;(e.fixed32.preencode(d, n.key), | |
| 3164 | e.fixed32.preencode(d, n.sender), | |
| 3165 | e.uint.preencode(d, n.clock), | |
| 3166 | ur.preencode(d, n.label)) | |
| 3188 | preencode(d, o) { | |
| 3189 | ;(e.fixed32.preencode(d, o.key), | |
| 3190 | e.fixed32.preencode(d, o.sender), | |
| 3191 | e.uint.preencode(d, o.clock), | |
| 3192 | ur.preencode(d, o.label)) | |
| 3167 | 3193 | }, |
| 3168 | encode(d, n) { | |
| 3169 | ;(e.fixed32.encode(d, n.key), | |
| 3170 | e.fixed32.encode(d, n.sender), | |
| 3171 | e.uint.encode(d, n.clock), | |
| 3172 | ur.encode(d, n.label)) | |
| 3194 | encode(d, o) { | |
| 3195 | ;(e.fixed32.encode(d, o.key), | |
| 3196 | e.fixed32.encode(d, o.sender), | |
| 3197 | e.uint.encode(d, o.clock), | |
| 3198 | ur.encode(d, o.label)) | |
| 3173 | 3199 | }, |
| 3174 | 3200 | decode: (d) => ({ |
| 3175 | 3201 | key: e.fixed32.decode(d), |
| … | … | @@ -3180,38 +3206,38 @@ const o = { |
| 3180 | 3206 | }, |
| 3181 | 3207 | fr = _, |
| 3182 | 3208 | mr = { |
| 3183 | preencode(d, n) { | |
| 3184 | ;(fr.preencode(d, n.header), e.fixed32.preencode(d, n.key), ur.preencode(d, n.label)) | |
| 3209 | preencode(d, o) { | |
| 3210 | ;(fr.preencode(d, o.header), e.fixed32.preencode(d, o.key), ur.preencode(d, o.label)) | |
| 3185 | 3211 | }, |
| 3186 | encode(d, n) { | |
| 3187 | ;(fr.encode(d, n.header), e.fixed32.encode(d, n.key), ur.encode(d, n.label)) | |
| 3212 | encode(d, o) { | |
| 3213 | ;(fr.encode(d, o.header), e.fixed32.encode(d, o.key), ur.encode(d, o.label)) | |
| 3188 | 3214 | }, |
| 3189 | 3215 | decode: (d) => ({ header: fr.decode(d), key: e.fixed32.decode(d), label: ur.decode(d) }), |
| 3190 | 3216 | }, |
| 3191 | 3217 | yr = { |
| 3192 | preencode(d, n) { | |
| 3193 | ;(ur.preencode(d, n.label), e.uint.preencode(d, n.count)) | |
| 3218 | preencode(d, o) { | |
| 3219 | ;(ur.preencode(d, o.label), e.uint.preencode(d, o.count)) | |
| 3194 | 3220 | }, |
| 3195 | encode(d, n) { | |
| 3196 | ;(ur.encode(d, n.label), e.uint.encode(d, n.count)) | |
| 3221 | encode(d, o) { | |
| 3222 | ;(ur.encode(d, o.label), e.uint.encode(d, o.count)) | |
| 3197 | 3223 | }, |
| 3198 | 3224 | decode: (d) => ({ label: ur.decode(d), count: e.uint.decode(d) }), |
| 3199 | 3225 | }, |
| 3200 | 3226 | xr = e.array(e.frame(yr)), |
| 3201 | 3227 | br = { |
| 3202 | preencode(d, n) { | |
| 3203 | ;(e.fixed32.preencode(d, n.key), | |
| 3204 | e.uint.preencode(d, n.total), | |
| 3205 | xr.preencode(d, n.labels), | |
| 3206 | e.uint.preencode(d, n.editedAt), | |
| 3207 | e.uint.preencode(d, n.flagsClock)) | |
| 3228 | preencode(d, o) { | |
| 3229 | ;(e.fixed32.preencode(d, o.key), | |
| 3230 | e.uint.preencode(d, o.total), | |
| 3231 | xr.preencode(d, o.labels), | |
| 3232 | e.uint.preencode(d, o.editedAt), | |
| 3233 | e.uint.preencode(d, o.flagsClock)) | |
| 3208 | 3234 | }, |
| 3209 | encode(d, n) { | |
| 3210 | ;(e.fixed32.encode(d, n.key), | |
| 3211 | e.uint.encode(d, n.total), | |
| 3212 | xr.encode(d, n.labels), | |
| 3213 | e.uint.encode(d, n.editedAt), | |
| 3214 | e.uint.encode(d, n.flagsClock)) | |
| 3235 | encode(d, o) { | |
| 3236 | ;(e.fixed32.encode(d, o.key), | |
| 3237 | e.uint.encode(d, o.total), | |
| 3238 | xr.encode(d, o.labels), | |
| 3239 | e.uint.encode(d, o.editedAt), | |
| 3240 | e.uint.encode(d, o.flagsClock)) | |
| 3215 | 3241 | }, |
| 3216 | 3242 | decode: (d) => ({ |
| 3217 | 3243 | key: e.fixed32.decode(d), |
| … | … | @@ -3222,25 +3248,25 @@ const o = { |
| 3222 | 3248 | }), |
| 3223 | 3249 | }, |
| 3224 | 3250 | kr = { |
| 3225 | preencode(d, n) { | |
| 3226 | ;(e.float64.preencode(d, n.latitude), e.float64.preencode(d, n.longitude)) | |
| 3251 | preencode(d, o) { | |
| 3252 | ;(e.float64.preencode(d, o.latitude), e.float64.preencode(d, o.longitude)) | |
| 3227 | 3253 | }, |
| 3228 | encode(d, n) { | |
| 3229 | ;(e.float64.encode(d, n.latitude), e.float64.encode(d, n.longitude)) | |
| 3254 | encode(d, o) { | |
| 3255 | ;(e.float64.encode(d, o.latitude), e.float64.encode(d, o.longitude)) | |
| 3230 | 3256 | }, |
| 3231 | 3257 | decode: (d) => ({ latitude: e.float64.decode(d), longitude: e.float64.decode(d) }), |
| 3232 | 3258 | }, |
| 3233 | 3259 | vr = _, |
| 3234 | 3260 | gr = { |
| 3235 | preencode(d, n) { | |
| 3236 | ;(vr.preencode(d, n.header), | |
| 3237 | e.fixed32.preencode(d, n.deviceKey), | |
| 3238 | e.fixed32.preencode(d, n.fromDeviceKey)) | |
| 3261 | preencode(d, o) { | |
| 3262 | ;(vr.preencode(d, o.header), | |
| 3263 | e.fixed32.preencode(d, o.deviceKey), | |
| 3264 | e.fixed32.preencode(d, o.fromDeviceKey)) | |
| 3239 | 3265 | }, |
| 3240 | encode(d, n) { | |
| 3241 | ;(vr.encode(d, n.header), | |
| 3242 | e.fixed32.encode(d, n.deviceKey), | |
| 3243 | e.fixed32.encode(d, n.fromDeviceKey)) | |
| 3266 | encode(d, o) { | |
| 3267 | ;(vr.encode(d, o.header), | |
| 3268 | e.fixed32.encode(d, o.deviceKey), | |
| 3269 | e.fixed32.encode(d, o.fromDeviceKey)) | |
| 3244 | 3270 | }, |
| 3245 | 3271 | decode: (d) => ({ |
| 3246 | 3272 | header: vr.decode(d), |
| … | … | @@ -3251,111 +3277,111 @@ const o = { |
| 3251 | 3277 | hr = _, |
| 3252 | 3278 | Kr = Y, |
| 3253 | 3279 | wr = { |
| 3254 | preencode(d, o) { | |
| 3255 | ;(hr.preencode(d, o.header), | |
| 3256 | e.fixed32.preencode(d, o.callKey), | |
| 3257 | e.buffer.preencode(d, o.encryptionKey), | |
| 3280 | preencode(d, n) { | |
| 3281 | ;(hr.preencode(d, n.header), | |
| 3282 | e.fixed32.preencode(d, n.callKey), | |
| 3283 | e.buffer.preencode(d, n.encryptionKey), | |
| 3258 | 3284 | d.end++, |
| 3259 | n >= 19 && o.streams && Kr.preencode(d, o.streams), | |
| 3260 | n >= 19 && o.discoveryKey && e.fixed32.preencode(d, o.discoveryKey), | |
| 3261 | n >= 19 && o.version && e.uint.preencode(d, o.version)) | |
| 3285 | o >= 19 && n.streams && Kr.preencode(d, n.streams), | |
| 3286 | o >= 19 && n.discoveryKey && e.fixed32.preencode(d, n.discoveryKey), | |
| 3287 | o >= 19 && n.version && e.uint.preencode(d, n.version)) | |
| 3262 | 3288 | }, |
| 3263 | encode(d, o) { | |
| 3289 | encode(d, n) { | |
| 3264 | 3290 | const c = |
| 3265 | (n >= 19 && o.streams ? 1 : 0) | | |
| 3266 | (n >= 19 && o.discoveryKey ? 2 : 0) | | |
| 3267 | (n >= 19 && o.version ? 4 : 0) | |
| 3268 | ;(hr.encode(d, o.header), | |
| 3269 | e.fixed32.encode(d, o.callKey), | |
| 3270 | e.buffer.encode(d, o.encryptionKey), | |
| 3291 | (o >= 19 && n.streams ? 1 : 0) | | |
| 3292 | (o >= 19 && n.discoveryKey ? 2 : 0) | | |
| 3293 | (o >= 19 && n.version ? 4 : 0) | |
| 3294 | ;(hr.encode(d, n.header), | |
| 3295 | e.fixed32.encode(d, n.callKey), | |
| 3296 | e.buffer.encode(d, n.encryptionKey), | |
| 3271 | 3297 | e.uint.encode(d, c), |
| 3272 | n >= 19 && o.streams && Kr.encode(d, o.streams), | |
| 3273 | n >= 19 && o.discoveryKey && e.fixed32.encode(d, o.discoveryKey), | |
| 3274 | n >= 19 && o.version && e.uint.encode(d, o.version)) | |
| 3298 | o >= 19 && n.streams && Kr.encode(d, n.streams), | |
| 3299 | o >= 19 && n.discoveryKey && e.fixed32.encode(d, n.discoveryKey), | |
| 3300 | o >= 19 && n.version && e.uint.encode(d, n.version)) | |
| 3275 | 3301 | }, |
| 3276 | 3302 | decode(d) { |
| 3277 | const o = hr.decode(d), | |
| 3303 | const n = hr.decode(d), | |
| 3278 | 3304 | c = e.fixed32.decode(d), |
| 3279 | 3305 | r = e.buffer.decode(d), |
| 3280 | 3306 | t = e.uint.decode(d) |
| 3281 | 3307 | return { |
| 3282 | header: o, | |
| 3308 | header: n, | |
| 3283 | 3309 | callKey: c, |
| 3284 | 3310 | encryptionKey: r, |
| 3285 | streams: n >= 19 && 1 & t ? Kr.decode(d) : null, | |
| 3286 | discoveryKey: n >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3287 | version: n >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3311 | streams: o >= 19 && 1 & t ? Kr.decode(d) : null, | |
| 3312 | discoveryKey: o >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3313 | version: o >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3288 | 3314 | } |
| 3289 | 3315 | }, |
| 3290 | 3316 | }, |
| 3291 | 3317 | Tr = _, |
| 3292 | 3318 | Pr = Y, |
| 3293 | 3319 | Ar = { |
| 3294 | preencode(d, o) { | |
| 3295 | ;(Tr.preencode(d, o.header), | |
| 3296 | e.fixed32.preencode(d, o.callKey), | |
| 3320 | preencode(d, n) { | |
| 3321 | ;(Tr.preencode(d, n.header), | |
| 3322 | e.fixed32.preencode(d, n.callKey), | |
| 3297 | 3323 | d.end++, |
| 3298 | n >= 19 && o.streams && Pr.preencode(d, o.streams)) | |
| 3324 | o >= 19 && n.streams && Pr.preencode(d, n.streams)) | |
| 3299 | 3325 | }, |
| 3300 | encode(d, o) { | |
| 3301 | const c = n >= 19 && o.streams ? 1 : 0 | |
| 3302 | ;(Tr.encode(d, o.header), | |
| 3303 | e.fixed32.encode(d, o.callKey), | |
| 3326 | encode(d, n) { | |
| 3327 | const c = o >= 19 && n.streams ? 1 : 0 | |
| 3328 | ;(Tr.encode(d, n.header), | |
| 3329 | e.fixed32.encode(d, n.callKey), | |
| 3304 | 3330 | e.uint.encode(d, c), |
| 3305 | n >= 19 && o.streams && Pr.encode(d, o.streams)) | |
| 3331 | o >= 19 && n.streams && Pr.encode(d, n.streams)) | |
| 3306 | 3332 | }, |
| 3307 | 3333 | decode(d) { |
| 3308 | const o = Tr.decode(d), | |
| 3334 | const n = Tr.decode(d), | |
| 3309 | 3335 | c = e.fixed32.decode(d), |
| 3310 | 3336 | r = e.uint.decode(d) |
| 3311 | return { header: o, callKey: c, streams: n >= 19 && 1 & r ? Pr.decode(d) : null } | |
| 3337 | return { header: n, callKey: c, streams: o >= 19 && 1 & r ? Pr.decode(d) : null } | |
| 3312 | 3338 | }, |
| 3313 | 3339 | }, |
| 3314 | 3340 | Rr = _, |
| 3315 | 3341 | Dr = { |
| 3316 | preencode(d, n) { | |
| 3317 | ;(Rr.preencode(d, n.header), e.fixed32.preencode(d, n.callKey)) | |
| 3342 | preencode(d, o) { | |
| 3343 | ;(Rr.preencode(d, o.header), e.fixed32.preencode(d, o.callKey)) | |
| 3318 | 3344 | }, |
| 3319 | encode(d, n) { | |
| 3320 | ;(Rr.encode(d, n.header), e.fixed32.encode(d, n.callKey)) | |
| 3345 | encode(d, o) { | |
| 3346 | ;(Rr.encode(d, o.header), e.fixed32.encode(d, o.callKey)) | |
| 3321 | 3347 | }, |
| 3322 | 3348 | decode: (d) => ({ header: Rr.decode(d), callKey: e.fixed32.decode(d) }), |
| 3323 | 3349 | }, |
| 3324 | Sr = _, | |
| 3325 | Cr = { | |
| 3326 | preencode(d, n) { | |
| 3327 | ;(Sr.preencode(d, n.header), e.fixed32.preencode(d, n.callKey)) | |
| 3350 | Mr = _, | |
| 3351 | Sr = { | |
| 3352 | preencode(d, o) { | |
| 3353 | ;(Mr.preencode(d, o.header), e.fixed32.preencode(d, o.callKey)) | |
| 3328 | 3354 | }, |
| 3329 | encode(d, n) { | |
| 3330 | ;(Sr.encode(d, n.header), e.fixed32.encode(d, n.callKey)) | |
| 3355 | encode(d, o) { | |
| 3356 | ;(Mr.encode(d, o.header), e.fixed32.encode(d, o.callKey)) | |
| 3331 | 3357 | }, |
| 3332 | decode: (d) => ({ header: Sr.decode(d), callKey: e.fixed32.decode(d) }), | |
| 3358 | decode: (d) => ({ header: Mr.decode(d), callKey: e.fixed32.decode(d) }), | |
| 3333 | 3359 | }, |
| 3334 | Mr = _, | |
| 3360 | Cr = _, | |
| 3335 | 3361 | Lr = { |
| 3336 | preencode(d, n) { | |
| 3337 | ;(Mr.preencode(d, n.header), | |
| 3338 | e.fixed32.preencode(d, n.callKey), | |
| 3339 | e.fixed32.preencode(d, n.streamKey)) | |
| 3362 | preencode(d, o) { | |
| 3363 | ;(Cr.preencode(d, o.header), | |
| 3364 | e.fixed32.preencode(d, o.callKey), | |
| 3365 | e.fixed32.preencode(d, o.streamKey)) | |
| 3340 | 3366 | }, |
| 3341 | encode(d, n) { | |
| 3342 | ;(Mr.encode(d, n.header), e.fixed32.encode(d, n.callKey), e.fixed32.encode(d, n.streamKey)) | |
| 3367 | encode(d, o) { | |
| 3368 | ;(Cr.encode(d, o.header), e.fixed32.encode(d, o.callKey), e.fixed32.encode(d, o.streamKey)) | |
| 3343 | 3369 | }, |
| 3344 | 3370 | decode: (d) => ({ |
| 3345 | header: Mr.decode(d), | |
| 3371 | header: Cr.decode(d), | |
| 3346 | 3372 | callKey: e.fixed32.decode(d), |
| 3347 | 3373 | streamKey: e.fixed32.decode(d), |
| 3348 | 3374 | }), |
| 3349 | 3375 | }, |
| 3350 | 3376 | qr = _, |
| 3351 | 3377 | Fr = { |
| 3352 | preencode(d, n) { | |
| 3353 | ;(qr.preencode(d, n.header), | |
| 3354 | e.fixed32.preencode(d, n.callKey), | |
| 3355 | e.fixed32.preencode(d, n.streamKey)) | |
| 3378 | preencode(d, o) { | |
| 3379 | ;(qr.preencode(d, o.header), | |
| 3380 | e.fixed32.preencode(d, o.callKey), | |
| 3381 | e.fixed32.preencode(d, o.streamKey)) | |
| 3356 | 3382 | }, |
| 3357 | encode(d, n) { | |
| 3358 | ;(qr.encode(d, n.header), e.fixed32.encode(d, n.callKey), e.fixed32.encode(d, n.streamKey)) | |
| 3383 | encode(d, o) { | |
| 3384 | ;(qr.encode(d, o.header), e.fixed32.encode(d, o.callKey), e.fixed32.encode(d, o.streamKey)) | |
| 3359 | 3385 | }, |
| 3360 | 3386 | decode: (d) => ({ |
| 3361 | 3387 | header: qr.decode(d), |
| … | … | @@ -3364,53 +3390,53 @@ const o = { |
| 3364 | 3390 | }), |
| 3365 | 3391 | }, |
| 3366 | 3392 | Er = { |
| 3367 | preencode(d, o) { | |
| 3368 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3369 | e.buffer.preencode(d, o.encryptionKey), | |
| 3370 | e.uint.preencode(d, o.createdAt), | |
| 3393 | preencode(d, n) { | |
| 3394 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3395 | e.buffer.preencode(d, n.encryptionKey), | |
| 3396 | e.uint.preencode(d, n.createdAt), | |
| 3371 | 3397 | d.end++, |
| 3372 | n >= 19 && o.endedAt && e.uint.preencode(d, o.endedAt), | |
| 3373 | n >= 19 && o.discoveryKey && e.fixed32.preencode(d, o.discoveryKey), | |
| 3374 | n >= 19 && o.version && e.uint.preencode(d, o.version)) | |
| 3398 | o >= 19 && n.endedAt && e.uint.preencode(d, n.endedAt), | |
| 3399 | o >= 19 && n.discoveryKey && e.fixed32.preencode(d, n.discoveryKey), | |
| 3400 | o >= 19 && n.version && e.uint.preencode(d, n.version)) | |
| 3375 | 3401 | }, |
| 3376 | encode(d, o) { | |
| 3402 | encode(d, n) { | |
| 3377 | 3403 | const c = |
| 3378 | (n >= 19 && o.endedAt ? 1 : 0) | | |
| 3379 | (n >= 19 && o.discoveryKey ? 2 : 0) | | |
| 3380 | (n >= 19 && o.version ? 4 : 0) | |
| 3381 | ;(e.fixed32.encode(d, o.callKey), | |
| 3382 | e.buffer.encode(d, o.encryptionKey), | |
| 3383 | e.uint.encode(d, o.createdAt), | |
| 3404 | (o >= 19 && n.endedAt ? 1 : 0) | | |
| 3405 | (o >= 19 && n.discoveryKey ? 2 : 0) | | |
| 3406 | (o >= 19 && n.version ? 4 : 0) | |
| 3407 | ;(e.fixed32.encode(d, n.callKey), | |
| 3408 | e.buffer.encode(d, n.encryptionKey), | |
| 3409 | e.uint.encode(d, n.createdAt), | |
| 3384 | 3410 | e.uint.encode(d, c), |
| 3385 | n >= 19 && o.endedAt && e.uint.encode(d, o.endedAt), | |
| 3386 | n >= 19 && o.discoveryKey && e.fixed32.encode(d, o.discoveryKey), | |
| 3387 | n >= 19 && o.version && e.uint.encode(d, o.version)) | |
| 3411 | o >= 19 && n.endedAt && e.uint.encode(d, n.endedAt), | |
| 3412 | o >= 19 && n.discoveryKey && e.fixed32.encode(d, n.discoveryKey), | |
| 3413 | o >= 19 && n.version && e.uint.encode(d, n.version)) | |
| 3388 | 3414 | }, |
| 3389 | 3415 | decode(d) { |
| 3390 | const o = e.fixed32.decode(d), | |
| 3416 | const n = e.fixed32.decode(d), | |
| 3391 | 3417 | c = e.buffer.decode(d), |
| 3392 | 3418 | r = e.uint.decode(d), |
| 3393 | 3419 | t = e.uint.decode(d) |
| 3394 | 3420 | return { |
| 3395 | callKey: o, | |
| 3421 | callKey: n, | |
| 3396 | 3422 | encryptionKey: c, |
| 3397 | 3423 | createdAt: r, |
| 3398 | endedAt: n >= 19 && 1 & t ? e.uint.decode(d) : 0, | |
| 3399 | discoveryKey: n >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3400 | version: n >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3424 | endedAt: o >= 19 && 1 & t ? e.uint.decode(d) : 0, | |
| 3425 | discoveryKey: o >= 19 && 2 & t ? e.fixed32.decode(d) : null, | |
| 3426 | version: o >= 19 && 4 & t ? e.uint.decode(d) : 0, | |
| 3401 | 3427 | } |
| 3402 | 3428 | }, |
| 3403 | 3429 | }, |
| 3404 | 3430 | Br = { |
| 3405 | preencode(d, n) { | |
| 3406 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3407 | e.fixed32.preencode(d, n.memberKey), | |
| 3408 | e.uint.preencode(d, n.createdAt)) | |
| 3431 | preencode(d, o) { | |
| 3432 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3433 | e.fixed32.preencode(d, o.memberKey), | |
| 3434 | e.uint.preencode(d, o.createdAt)) | |
| 3409 | 3435 | }, |
| 3410 | encode(d, n) { | |
| 3411 | ;(e.fixed32.encode(d, n.callKey), | |
| 3412 | e.fixed32.encode(d, n.memberKey), | |
| 3413 | e.uint.encode(d, n.createdAt)) | |
| 3436 | encode(d, o) { | |
| 3437 | ;(e.fixed32.encode(d, o.callKey), | |
| 3438 | e.fixed32.encode(d, o.memberKey), | |
| 3439 | e.uint.encode(d, o.createdAt)) | |
| 3414 | 3440 | }, |
| 3415 | 3441 | decode: (d) => ({ |
| 3416 | 3442 | callKey: e.fixed32.decode(d), |
| … | … | @@ -3419,50 +3445,50 @@ const o = { |
| 3419 | 3445 | }), |
| 3420 | 3446 | }, |
| 3421 | 3447 | Ir = { |
| 3422 | preencode(d, o) { | |
| 3423 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3424 | e.fixed32.preencode(d, o.deviceKey), | |
| 3425 | e.fixed32.preencode(d, o.memberKey), | |
| 3426 | e.uint.preencode(d, o.createdAt), | |
| 3448 | preencode(d, n) { | |
| 3449 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3450 | e.fixed32.preencode(d, n.deviceKey), | |
| 3451 | e.fixed32.preencode(d, n.memberKey), | |
| 3452 | e.uint.preencode(d, n.createdAt), | |
| 3427 | 3453 | d.end++, |
| 3428 | n >= 19 && o.swarmKey && e.fixed32.preencode(d, o.swarmKey)) | |
| 3454 | o >= 19 && n.swarmKey && e.fixed32.preencode(d, n.swarmKey)) | |
| 3429 | 3455 | }, |
| 3430 | encode(d, o) { | |
| 3431 | const c = n >= 19 && o.swarmKey ? 1 : 0 | |
| 3432 | ;(e.fixed32.encode(d, o.callKey), | |
| 3433 | e.fixed32.encode(d, o.deviceKey), | |
| 3434 | e.fixed32.encode(d, o.memberKey), | |
| 3435 | e.uint.encode(d, o.createdAt), | |
| 3456 | encode(d, n) { | |
| 3457 | const c = o >= 19 && n.swarmKey ? 1 : 0 | |
| 3458 | ;(e.fixed32.encode(d, n.callKey), | |
| 3459 | e.fixed32.encode(d, n.deviceKey), | |
| 3460 | e.fixed32.encode(d, n.memberKey), | |
| 3461 | e.uint.encode(d, n.createdAt), | |
| 3436 | 3462 | e.uint.encode(d, c), |
| 3437 | n >= 19 && o.swarmKey && e.fixed32.encode(d, o.swarmKey)) | |
| 3463 | o >= 19 && n.swarmKey && e.fixed32.encode(d, n.swarmKey)) | |
| 3438 | 3464 | }, |
| 3439 | 3465 | decode(d) { |
| 3440 | const o = e.fixed32.decode(d), | |
| 3466 | const n = e.fixed32.decode(d), | |
| 3441 | 3467 | c = e.fixed32.decode(d), |
| 3442 | 3468 | r = e.fixed32.decode(d), |
| 3443 | 3469 | t = e.uint.decode(d), |
| 3444 | 3470 | i = e.uint.decode(d) |
| 3445 | 3471 | return { |
| 3446 | callKey: o, | |
| 3472 | callKey: n, | |
| 3447 | 3473 | deviceKey: c, |
| 3448 | 3474 | memberKey: r, |
| 3449 | 3475 | createdAt: t, |
| 3450 | swarmKey: n >= 19 && 1 & i ? e.fixed32.decode(d) : null, | |
| 3476 | swarmKey: o >= 19 && 1 & i ? e.fixed32.decode(d) : null, | |
| 3451 | 3477 | } |
| 3452 | 3478 | }, |
| 3453 | 3479 | }, |
| 3454 | 3480 | Nr = { |
| 3455 | preencode(d, n) { | |
| 3456 | ;(e.fixed32.preencode(d, n.callKey), | |
| 3457 | e.fixed32.preencode(d, n.deviceKey), | |
| 3458 | e.buffer.preencode(d, n.streamKey), | |
| 3459 | e.uint.preencode(d, n.createdAt)) | |
| 3481 | preencode(d, o) { | |
| 3482 | ;(e.fixed32.preencode(d, o.callKey), | |
| 3483 | e.fixed32.preencode(d, o.deviceKey), | |
| 3484 | e.buffer.preencode(d, o.streamKey), | |
| 3485 | e.uint.preencode(d, o.createdAt)) | |
| 3460 | 3486 | }, |
| 3461 | encode(d, n) { | |
| 3462 | ;(e.fixed32.encode(d, n.callKey), | |
| 3463 | e.fixed32.encode(d, n.deviceKey), | |
| 3464 | e.buffer.encode(d, n.streamKey), | |
| 3465 | e.uint.encode(d, n.createdAt)) | |
| 3487 | encode(d, o) { | |
| 3488 | ;(e.fixed32.encode(d, o.callKey), | |
| 3489 | e.fixed32.encode(d, o.deviceKey), | |
| 3490 | e.buffer.encode(d, o.streamKey), | |
| 3491 | e.uint.encode(d, o.createdAt)) | |
| 3466 | 3492 | }, |
| 3467 | 3493 | decode: (d) => ({ |
| 3468 | 3494 | callKey: e.fixed32.decode(d), |
| … | … | @@ -3472,12 +3498,12 @@ const o = { |
| 3472 | 3498 | }), |
| 3473 | 3499 | }, |
| 3474 | 3500 | jr = { Nightly: "Nightly", Internal: "Internal", Production: "Production" }, |
| 3475 | Or = { | |
| 3501 | Ur = { | |
| 3476 | 3502 | preencode(e, d) { |
| 3477 | 3503 | e.end++ |
| 3478 | 3504 | }, |
| 3479 | encode(d, n) { | |
| 3480 | switch (n) { | |
| 3505 | encode(d, o) { | |
| 3506 | switch (o) { | |
| 3481 | 3507 | case "Nightly": |
| 3482 | 3508 | e.uint.encode(d, 1) |
| 3483 | 3509 | break |
| … | … | @@ -3504,15 +3530,15 @@ const o = { |
| 3504 | 3530 | } |
| 3505 | 3531 | }, |
| 3506 | 3532 | }, |
| 3507 | Jr = _, | |
| 3508 | Ur = { | |
| 3533 | Or = _, | |
| 3534 | Jr = { | |
| 3509 | 3535 | preencode(e, d) { |
| 3510 | Jr.preencode(e, d.header) | |
| 3536 | Or.preencode(e, d.header) | |
| 3511 | 3537 | }, |
| 3512 | 3538 | encode(e, d) { |
| 3513 | Jr.encode(e, d.header) | |
| 3539 | Or.encode(e, d.header) | |
| 3514 | 3540 | }, |
| 3515 | decode: (e) => ({ header: Jr.decode(e) }), | |
| 3541 | decode: (e) => ({ header: Or.decode(e) }), | |
| 3516 | 3542 | }, |
| 3517 | 3543 | Vr = _, |
| 3518 | 3544 | Hr = { |
| … | … | @@ -3524,37 +3550,58 @@ const o = { |
| 3524 | 3550 | }, |
| 3525 | 3551 | decode: (e) => ({ header: Vr.decode(e) }), |
| 3526 | 3552 | }, |
| 3527 | zr = e.frame(T), | |
| 3528 | Gr = zr, | |
| 3529 | Qr = e.array(Bc), | |
| 3530 | Wr = e.frame(pe), | |
| 3531 | Xr = zr, | |
| 3532 | Yr = Wr, | |
| 3533 | Zr = e.frame(Kc), | |
| 3534 | $r = Wr, | |
| 3535 | _r = e.frame(md), | |
| 3536 | et = e.frame(xc), | |
| 3537 | dt = e.frame(kr), | |
| 3538 | nt = dt, | |
| 3539 | ot = e.array(e.frame(Nc)), | |
| 3540 | ct = zr, | |
| 3541 | rt = e.frame(Uo), | |
| 3542 | tt = rt, | |
| 3543 | it = rt, | |
| 3544 | at = zr | |
| 3545 | function st(e) { | |
| 3546 | n = e | |
| 3553 | zr = _, | |
| 3554 | Gr = { | |
| 3555 | preencode(d, o) { | |
| 3556 | ;(zr.preencode(d, o.header), | |
| 3557 | e.fixed32.preencode(d, o.deviceKey), | |
| 3558 | e.buffer.preencode(d, o.deviceProof), | |
| 3559 | e.buffer.preencode(d, o.writerProof)) | |
| 3560 | }, | |
| 3561 | encode(d, o) { | |
| 3562 | ;(zr.encode(d, o.header), | |
| 3563 | e.fixed32.encode(d, o.deviceKey), | |
| 3564 | e.buffer.encode(d, o.deviceProof), | |
| 3565 | e.buffer.encode(d, o.writerProof)) | |
| 3566 | }, | |
| 3567 | decode: (d) => ({ | |
| 3568 | header: zr.decode(d), | |
| 3569 | deviceKey: e.fixed32.decode(d), | |
| 3570 | deviceProof: e.buffer.decode(d), | |
| 3571 | writerProof: e.buffer.decode(d), | |
| 3572 | }), | |
| 3573 | }, | |
| 3574 | Qr = e.frame(T), | |
| 3575 | Wr = Qr, | |
| 3576 | Xr = e.array(Bc), | |
| 3577 | Yr = e.frame(pe), | |
| 3578 | Zr = Qr, | |
| 3579 | $r = Yr, | |
| 3580 | _r = e.frame(Kc), | |
| 3581 | et = Yr, | |
| 3582 | dt = e.frame(md), | |
| 3583 | ot = e.frame(xc), | |
| 3584 | nt = e.frame(kr), | |
| 3585 | ct = nt, | |
| 3586 | rt = e.array(e.frame(Nc)), | |
| 3587 | tt = Qr, | |
| 3588 | it = e.frame(Jn), | |
| 3589 | at = it, | |
| 3590 | st = it, | |
| 3591 | pt = Qr | |
| 3592 | function ut(e) { | |
| 3593 | o = e | |
| 3547 | 3594 | } |
| 3548 | function pt(d, o, c = 20) { | |
| 3549 | return ((n = c), e.encode(ft(d), o)) | |
| 3595 | function lt(d, n, c = 21) { | |
| 3596 | return ((o = c), e.encode(yt(d), n)) | |
| 3550 | 3597 | } |
| 3551 | function ut(d, o, c = 20) { | |
| 3552 | return ((n = c), e.decode(ft(d), o)) | |
| 3598 | function ft(d, n, c = 21) { | |
| 3599 | return ((o = c), e.decode(yt(d), n)) | |
| 3553 | 3600 | } |
| 3554 | function lt(e) { | |
| 3601 | function mt(e) { | |
| 3555 | 3602 | switch (e) { |
| 3556 | 3603 | case "@keet/room-type": |
| 3557 | return U | |
| 3604 | return J | |
| 3558 | 3605 | case "@keet/display-type": |
| 3559 | 3606 | return Ac |
| 3560 | 3607 | case "@keet/system-settings-keys": |
| … | … | @@ -3573,10 +3620,10 @@ function lt(e) { |
| 3573 | 3620 | throw new Error("Enum not found " + e) |
| 3574 | 3621 | } |
| 3575 | 3622 | } |
| 3576 | function ft(e) { | |
| 3623 | function yt(e) { | |
| 3577 | 3624 | switch (e) { |
| 3578 | 3625 | case "@keet/head": |
| 3579 | return o | |
| 3626 | return n | |
| 3580 | 3627 | case "@keet/oplog-id": |
| 3581 | 3628 | return c |
| 3582 | 3629 | case "@keet/encryption-keypair": |
| … | … | @@ -3608,11 +3655,11 @@ function ft(e) { |
| 3608 | 3655 | case "@keet/file-record": |
| 3609 | 3656 | return D |
| 3610 | 3657 | case "@keet/device-status": |
| 3611 | return S | |
| 3658 | return M | |
| 3612 | 3659 | case "@keet/member-status": |
| 3613 | return C | |
| 3660 | return S | |
| 3614 | 3661 | case "@keet/member-moderation-status": |
| 3615 | return M | |
| 3662 | return C | |
| 3616 | 3663 | case "@keet/abi": |
| 3617 | 3664 | return L |
| 3618 | 3665 | case "@keet/device-stats": |
| … | … | @@ -3624,7 +3671,7 @@ function ft(e) { |
| 3624 | 3671 | case "@keet/file-stats": |
| 3625 | 3672 | return B |
| 3626 | 3673 | case "@keet/stats": |
| 3627 | return J | |
| 3674 | return O | |
| 3628 | 3675 | case "@keet/room-type": |
| 3629 | 3676 | return V |
| 3630 | 3677 | case "@keet/system-settings": |
| … | … | @@ -3642,7 +3689,7 @@ function ft(e) { |
| 3642 | 3689 | case "@keet/add-blind-peer-operation": |
| 3643 | 3690 | return de |
| 3644 | 3691 | case "@keet/remove-blind-peer-operation": |
| 3645 | return oe | |
| 3692 | return ne | |
| 3646 | 3693 | case "@keet/identity-attestation": |
| 3647 | 3694 | return ce |
| 3648 | 3695 | case "@keet/device-invitation": |
| … | … | @@ -3672,7 +3719,7 @@ function ft(e) { |
| 3672 | 3719 | case "@keet/device-request": |
| 3673 | 3720 | return De |
| 3674 | 3721 | case "@keet/device-response": |
| 3675 | return Me | |
| 3722 | return Ce | |
| 3676 | 3723 | case "@keet/invitation-metadata": |
| 3677 | 3724 | return Le |
| 3678 | 3725 | case "@keet/invitation": |
| … | … | @@ -3680,11 +3727,11 @@ function ft(e) { |
| 3680 | 3727 | case "@keet/add-invitation-operation": |
| 3681 | 3728 | return Ne |
| 3682 | 3729 | case "@keet/remove-invitation-operation": |
| 3683 | return Oe | |
| 3730 | return Ue | |
| 3684 | 3731 | case "@keet/sendable-room-invitation": |
| 3685 | return Je | |
| 3732 | return Oe | |
| 3686 | 3733 | case "@keet/sendable-identity-invitation": |
| 3687 | return Ue | |
| 3734 | return Je | |
| 3688 | 3735 | case "@keet/sendable-contact-invitation": |
| 3689 | 3736 | return Ve |
| 3690 | 3737 | case "@keet/sendable-invitation": |
| … | … | @@ -3698,7 +3745,7 @@ function ft(e) { |
| 3698 | 3745 | case "@keet/stop-indexing-operation": |
| 3699 | 3746 | return ed |
| 3700 | 3747 | case "@keet/join-request": |
| 3701 | return nd | |
| 3748 | return od | |
| 3702 | 3749 | case "@keet/accept-join-request-operation": |
| 3703 | 3750 | return rd |
| 3704 | 3751 | case "@keet/reject-join-request-operation": |
| … | … | @@ -3736,111 +3783,111 @@ function ft(e) { |
| 3736 | 3783 | case "@keet/mention-display-item": |
| 3737 | 3784 | return Nd |
| 3738 | 3785 | case "@keet/link-preview": |
| 3739 | return Jd | |
| 3786 | return Od | |
| 3740 | 3787 | case "@keet/display-link-item": |
| 3741 | 3788 | return Hd |
| 3742 | 3789 | case "@keet/display": |
| 3743 | return en | |
| 3790 | return eo | |
| 3744 | 3791 | case "@keet/oplog-message": |
| 3745 | return cn | |
| 3792 | return ro | |
| 3746 | 3793 | case "@keet/index-message": |
| 3747 | return an | |
| 3794 | return ao | |
| 3748 | 3795 | case "@keet/full-index-message": |
| 3749 | return un | |
| 3796 | return uo | |
| 3750 | 3797 | case "@keet/message-status": |
| 3751 | return ln | |
| 3798 | return lo | |
| 3752 | 3799 | case "@keet/message-index-id": |
| 3753 | return fn | |
| 3800 | return fo | |
| 3754 | 3801 | case "@keet/thread": |
| 3755 | return yn | |
| 3802 | return yo | |
| 3756 | 3803 | case "@keet/chat-message-record": |
| 3757 | return vn | |
| 3804 | return vo | |
| 3758 | 3805 | case "@keet/full-chat-message-record": |
| 3759 | return wn | |
| 3806 | return wo | |
| 3760 | 3807 | case "@keet/add-chat-message-operation": |
| 3761 | return An | |
| 3808 | return Ao | |
| 3762 | 3809 | case "@keet/remove-chat-message-operation": |
| 3763 | return Dn | |
| 3810 | return Do | |
| 3764 | 3811 | case "@keet/update-chat-message-operation": |
| 3765 | return Mn | |
| 3812 | return Co | |
| 3766 | 3813 | case "@keet/pin-chat-message-operation": |
| 3767 | return qn | |
| 3814 | return qo | |
| 3768 | 3815 | case "@keet/reaction": |
| 3769 | return Fn | |
| 3816 | return Fo | |
| 3770 | 3817 | case "@keet/reactions-summary": |
| 3771 | return En | |
| 3818 | return Eo | |
| 3772 | 3819 | case "@keet/reactions-digest": |
| 3773 | return In | |
| 3820 | return Io | |
| 3774 | 3821 | case "@keet/add-reaction-operation": |
| 3775 | return jn | |
| 3822 | return jo | |
| 3776 | 3823 | case "@keet/remove-reaction-operation": |
| 3777 | return Jn | |
| 3824 | return Oo | |
| 3778 | 3825 | case "@keet/update-room-config-operation": |
| 3779 | return Hn | |
| 3826 | return Ho | |
| 3780 | 3827 | case "@keet/group-member": |
| 3781 | return zn | |
| 3828 | return zo | |
| 3782 | 3829 | case "@keet/user-registry-info": |
| 3783 | return Gn | |
| 3830 | return Go | |
| 3784 | 3831 | case "@keet/room-identity": |
| 3785 | return Wn | |
| 3832 | return Wo | |
| 3786 | 3833 | case "@keet/genesis-operation": |
| 3787 | return oo | |
| 3834 | return on | |
| 3788 | 3835 | case "@keet/upgrade-operation": |
| 3789 | return ro | |
| 3836 | return cn | |
| 3790 | 3837 | case "@keet/update-system-settings-operation": |
| 3791 | return ao | |
| 3838 | return an | |
| 3792 | 3839 | case "@keet-private-id/contact": |
| 3793 | return so | |
| 3840 | return sn | |
| 3794 | 3841 | case "@keet-private-id/v3-room-migration-info": |
| 3795 | return po | |
| 3842 | return pn | |
| 3796 | 3843 | case "@keet-private-id/run-v3-migration-operation": |
| 3797 | return fo | |
| 3844 | return fn | |
| 3798 | 3845 | case "@keet-private-id/update-identity-operation": |
| 3799 | return yo | |
| 3846 | return yn | |
| 3800 | 3847 | case "@keet-private-id/counters": |
| 3801 | return xo | |
| 3848 | return xn | |
| 3802 | 3849 | case "@keet-private-id/stats": |
| 3803 | return bo | |
| 3850 | return bn | |
| 3804 | 3851 | case "@keet-private-id/add-entropy-operation": |
| 3805 | return ko | |
| 3852 | return kn | |
| 3806 | 3853 | case "@keet-private-id/pending-invitation-identity": |
| 3807 | return vo | |
| 3854 | return vn | |
| 3808 | 3855 | case "@keet-private-id/pending-invitation": |
| 3809 | return ho | |
| 3856 | return hn | |
| 3810 | 3857 | case "@keet-private-id/resolve-pending-invitation-operation": |
| 3811 | return wo | |
| 3858 | return wn | |
| 3812 | 3859 | case "@keet-private-id/add-pending-invitation-operation": |
| 3813 | return Ao | |
| 3860 | return An | |
| 3814 | 3861 | case "@keet-private-id/remove-pending-invitation-operation": |
| 3815 | return Do | |
| 3862 | return Dn | |
| 3816 | 3863 | case "@keet-private-id/identity-swap": |
| 3817 | return So | |
| 3864 | return Mn | |
| 3818 | 3865 | case "@keet-private-id/room-status": |
| 3819 | return Co | |
| 3866 | return Sn | |
| 3820 | 3867 | case "@keet-private-id/room": |
| 3821 | return Fo | |
| 3868 | return Fn | |
| 3822 | 3869 | case "@keet-private-id/add-room-operation": |
| 3823 | return Bo | |
| 3870 | return Bn | |
| 3824 | 3871 | case "@keet-private-id/remove-room-operation": |
| 3825 | return No | |
| 3872 | return Nn | |
| 3826 | 3873 | case "@keet-private-id/update-room-status-operation": |
| 3827 | return Jo | |
| 3874 | return On | |
| 3828 | 3875 | case "@keet-private-id/contact-status": |
| 3829 | return Uo | |
| 3876 | return Jn | |
| 3830 | 3877 | case "@keet-private-id/contact-record": |
| 3831 | return Vo | |
| 3878 | return Vn | |
| 3832 | 3879 | case "@keet-private-id/add-contact-operation": |
| 3833 | return Go | |
| 3880 | return Gn | |
| 3834 | 3881 | case "@keet-private-id/update-contact-status-operation": |
| 3835 | return Wo | |
| 3882 | return Wn | |
| 3836 | 3883 | case "@keet-private-id/remove-contact-operation": |
| 3837 | return Yo | |
| 3884 | return Yn | |
| 3838 | 3885 | case "@keet-private-id/contact-request-status": |
| 3839 | return Zo | |
| 3886 | return Zn | |
| 3840 | 3887 | case "@keet-private-id/contact-request-body": |
| 3841 | 3888 | return ec |
| 3842 | 3889 | case "@keet-private-id/contact-request": |
| 3843 | return nc | |
| 3890 | return oc | |
| 3844 | 3891 | case "@keet-private-id/contact-request-record": |
| 3845 | 3892 | return tc |
| 3846 | 3893 | case "@keet-private-id/add-contact-request-operation": |
| … | … | @@ -3870,9 +3917,9 @@ function ft(e) { |
| 3870 | 3917 | case "@keet/display-type": |
| 3871 | 3918 | return Rc |
| 3872 | 3919 | case "@keet/test-increment-operation": |
| 3873 | return Sc | |
| 3920 | return Mc | |
| 3874 | 3921 | case "@keet/test-collection-record-1": |
| 3875 | return Cc | |
| 3922 | return Sc | |
| 3876 | 3923 | case "@keet/migrate-abi-operation": |
| 3877 | 3924 | return Lc |
| 3878 | 3925 | case "@keet/system-settings-keys": |
| … | … | @@ -3884,7 +3931,7 @@ function ft(e) { |
| 3884 | 3931 | case "@keet-private-id/unreads": |
| 3885 | 3932 | return jc |
| 3886 | 3933 | case "@keet-private-id/add-unreads-key-operation": |
| 3887 | return Jc | |
| 3934 | return Oc | |
| 3888 | 3935 | case "@keet-private-id/remove-unreads-key-operation": |
| 3889 | 3936 | return Vc |
| 3890 | 3937 | case "@keet/label-type": |
| … | … | @@ -3902,9 +3949,9 @@ function ft(e) { |
| 3902 | 3949 | case "@keet/update-read-length-operation": |
| 3903 | 3950 | return dr |
| 3904 | 3951 | case "@keet/read-length": |
| 3905 | return nr | |
| 3906 | case "@keet/tmp-removed-member": | |
| 3907 | 3952 | return or |
| 3953 | case "@keet/tmp-removed-member": | |
| 3954 | return nr | |
| 3908 | 3955 | case "@keet-private-id/settings": |
| 3909 | 3956 | return cr |
| 3910 | 3957 | case "@keet-private-id/user-settings-key": |
| … | … | @@ -3932,7 +3979,7 @@ function ft(e) { |
| 3932 | 3979 | case "@keet/leave-call": |
| 3933 | 3980 | return Dr |
| 3934 | 3981 | case "@keet/end-call": |
| 3935 | return Cr | |
| 3982 | return Sr | |
| 3936 | 3983 | case "@keet/add-call-stream": |
| 3937 | 3984 | return Lr |
| 3938 | 3985 | case "@keet/remove-call-stream": |
| … | … | @@ -3946,35 +3993,37 @@ function ft(e) { |
| 3946 | 3993 | case "@keet/call-stream-record": |
| 3947 | 3994 | return Nr |
| 3948 | 3995 | case "@keet/build-type": |
| 3949 | return Or | |
| 3950 | case "@keet/test-crash-operation": | |
| 3951 | 3996 | return Ur |
| 3997 | case "@keet/test-crash-operation": | |
| 3998 | return Jr | |
| 3952 | 3999 | case "@keet/test-dispatch-error-operation": |
| 3953 | 4000 | return Hr |
| 4001 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 4002 | return Gr | |
| 3954 | 4003 | default: |
| 3955 | 4004 | throw new Error("Encoder not found " + e) |
| 3956 | 4005 | } |
| 3957 | 4006 | } |
| 3958 | function mt(e, d = 20) { | |
| 3959 | const o = ft(e) | |
| 4007 | function xt(e, d = 21) { | |
| 4008 | const n = yt(e) | |
| 3960 | 4009 | return { |
| 3961 | 4010 | preencode(e, c) { |
| 3962 | ;((n = d), o.preencode(e, c)) | |
| 4011 | ;((o = d), n.preencode(e, c)) | |
| 3963 | 4012 | }, |
| 3964 | 4013 | encode(e, c) { |
| 3965 | ;((n = d), o.encode(e, c)) | |
| 4014 | ;((o = d), n.encode(e, c)) | |
| 3966 | 4015 | }, |
| 3967 | decode: (e) => ((n = d), o.decode(e)), | |
| 4016 | decode: (e) => ((o = d), n.decode(e)), | |
| 3968 | 4017 | } |
| 3969 | 4018 | } |
| 3970 | const yt = mt | |
| 4019 | const bt = xt | |
| 3971 | 4020 | module.exports = { |
| 3972 | resolveStruct: yt, | |
| 3973 | getStruct: mt, | |
| 3974 | getEnum: lt, | |
| 3975 | getEncoding: ft, | |
| 3976 | encode: pt, | |
| 3977 | decode: ut, | |
| 3978 | setVersion: st, | |
| 3979 | version: n, | |
| 4021 | resolveStruct: bt, | |
| 4022 | getStruct: xt, | |
| 4023 | getEnum: mt, | |
| 4024 | getEncoding: yt, | |
| 4025 | encode: lt, | |
| 4026 | decode: ft, | |
| 4027 | setVersion: ut, | |
| 4028 | version: o, | |
| 3980 | 4029 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | { |
| 2 | "version": 20, | |
| 2 | "version": 21, | |
| 3 | 3 | "schema": [ |
| 4 | 4 | { |
| 5 | 5 | "name": "public-key", |
| … | … | @@ -3219,6 +3219,11 @@ |
| 3219 | 3219 | "name": "isFavorite", |
| 3220 | 3220 | "type": "bool", |
| 3221 | 3221 | "version": 18 |
| 3222 | }, | |
| 3223 | { | |
| 3224 | "name": "isUnread", | |
| 3225 | "type": "bool", | |
| 3226 | "version": 21 | |
| 3222 | 3227 | } |
| 3223 | 3228 | ] |
| 3224 | 3229 | }, |
| … | … | @@ -4409,6 +4414,11 @@ |
| 4409 | 4414 | "name": "disableReadReceipts", |
| 4410 | 4415 | "type": "bool", |
| 4411 | 4416 | "version": 13 |
| 4417 | }, | |
| 4418 | { | |
| 4419 | "name": "stripAttachmentMetadata", | |
| 4420 | "type": "bool", | |
| 4421 | "version": 21 | |
| 4412 | 4422 | } |
| 4413 | 4423 | ] |
| 4414 | 4424 | }, |
| … | … | @@ -4420,6 +4430,10 @@ |
| 4420 | 4430 | { |
| 4421 | 4431 | "key": "disableReadReceipts", |
| 4422 | 4432 | "version": 13 |
| 4433 | }, | |
| 4434 | { | |
| 4435 | "key": "stripAttachmentMetadata", | |
| 4436 | "version": 21 | |
| 4423 | 4437 | } |
| 4424 | 4438 | ], |
| 4425 | 4439 | "strings": true |
| … | … | @@ -4968,6 +4982,38 @@ |
| 4968 | 4982 | "version": 20 |
| 4969 | 4983 | } |
| 4970 | 4984 | ] |
| 4985 | }, | |
| 4986 | { | |
| 4987 | "name": "shorten-device-attestation-operation", | |
| 4988 | "namespace": "keet-private-id", | |
| 4989 | "compact": false, | |
| 4990 | "flagsPosition": -1, | |
| 4991 | "fields": [ | |
| 4992 | { | |
| 4993 | "name": "header", | |
| 4994 | "required": true, | |
| 4995 | "type": "@keet/operation-header", | |
| 4996 | "version": 21 | |
| 4997 | }, | |
| 4998 | { | |
| 4999 | "name": "deviceKey", | |
| 5000 | "required": true, | |
| 5001 | "type": "@keet/device-key", | |
| 5002 | "version": 21 | |
| 5003 | }, | |
| 5004 | { | |
| 5005 | "name": "deviceProof", | |
| 5006 | "required": true, | |
| 5007 | "type": "buffer", | |
| 5008 | "version": 21 | |
| 5009 | }, | |
| 5010 | { | |
| 5011 | "name": "writerProof", | |
| 5012 | "required": true, | |
| 5013 | "type": "buffer", | |
| 5014 | "version": 21 | |
| 5015 | } | |
| 5016 | ] | |
| 4971 | 5017 | } |
| 4972 | 5018 | ] |
| 4973 | 5019 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | { |
| 2 | "version": 5, | |
| 2 | "version": 6, | |
| 3 | 3 | "offset": 0, |
| 4 | 4 | "schema": [ |
| 5 | 5 | { |
| … | … | @@ -696,6 +696,34 @@ |
| 696 | 696 | "derived": false, |
| 697 | 697 | "key": [], |
| 698 | 698 | "trigger": null |
| 699 | }, | |
| 700 | { | |
| 701 | "name": "ota-actions", | |
| 702 | "namespace": "local", | |
| 703 | "id": 43, | |
| 704 | "type": 1, | |
| 705 | "version": 6, | |
| 706 | "versionField": null, | |
| 707 | "indexes": [], | |
| 708 | "schema": "@local/ota-actions", | |
| 709 | "derived": false, | |
| 710 | "key": [], | |
| 711 | "trigger": null | |
| 712 | }, | |
| 713 | { | |
| 714 | "name": "device-attestations", | |
| 715 | "namespace": "local", | |
| 716 | "id": 44, | |
| 717 | "type": 1, | |
| 718 | "version": 6, | |
| 719 | "versionField": null, | |
| 720 | "indexes": [], | |
| 721 | "schema": "@local/device-attestation", | |
| 722 | "derived": false, | |
| 723 | "key": [ | |
| 724 | "deviceKey" | |
| 725 | ], | |
| 726 | "trigger": null | |
| 699 | 727 | } |
| 700 | 728 | ] |
| 701 | 729 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | const { IndexEncoder: e, c: n, b4a: t } = require("hyperdb/runtime"), |
| 2 | 2 | { version: o, getEncoding: r, setVersion: c } = require("./messages.js"), |
| 3 | l = { schema: o, db: 5 }, | |
| 3 | l = { schema: o, db: 6 }, | |
| 4 | 4 | d = require("../../../../lib/core/hyperdb/local/local.js"), |
| 5 | 5 | s = new e([], { prefix: 0 }) |
| 6 | 6 | function u(e) { |
| … | … | @@ -15,7 +15,7 @@ function a(e, n, t) { |
| 15 | 15 | function f(e) { |
| 16 | 16 | return {} |
| 17 | 17 | } |
| 18 | const y = { | |
| 18 | const g = { | |
| 19 | 19 | name: "@local/stats", |
| 20 | 20 | id: 0, |
| 21 | 21 | version: 0, |
| … | … | @@ -38,15 +38,15 @@ const y = { |
| 38 | 38 | indexes: [], |
| 39 | 39 | decodedVersion: 0, |
| 40 | 40 | }, |
| 41 | g = new e([], { prefix: 1 }) | |
| 42 | function p(e) { | |
| 41 | y = new e([], { prefix: 1 }) | |
| 42 | function b(e) { | |
| 43 | 43 | return [] |
| 44 | 44 | } |
| 45 | const b = r("@local/migration-status") | |
| 45 | const p = r("@local/migration-status") | |
| 46 | 46 | function m(e, n, t) { |
| 47 | 47 | c(e) |
| 48 | 48 | const o = { start: 0, end: t.byteLength, buffer: t } |
| 49 | return b.decode(o) | |
| 49 | return p.decode(o) | |
| 50 | 50 | } |
| 51 | 51 | function K(e) { |
| 52 | 52 | return {} |
| … | … | @@ -55,18 +55,18 @@ const v = { |
| 55 | 55 | name: "@local/migrations", |
| 56 | 56 | id: 1, |
| 57 | 57 | version: 0, |
| 58 | encodeKey: (e) => g.encode([]), | |
| 58 | encodeKey: (e) => y.encode([]), | |
| 59 | 59 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 60 | g.encodeRange({ | |
| 61 | gt: e ? p(e) : null, | |
| 62 | lt: n ? p(n) : null, | |
| 63 | gte: t ? p(t) : null, | |
| 64 | lte: o ? p(o) : null, | |
| 60 | y.encodeRange({ | |
| 61 | gt: e ? b(e) : null, | |
| 62 | lt: n ? b(n) : null, | |
| 63 | gte: t ? b(t) : null, | |
| 64 | lte: o ? b(o) : null, | |
| 65 | 65 | }), |
| 66 | 66 | encodeValue(e, n, o) { |
| 67 | 67 | c(e) |
| 68 | 68 | const r = { start: 0, end: 0, buffer: null } |
| 69 | return (b.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), b.encode(r, o), r.buffer) | |
| 69 | return (p.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), p.encode(r, o), r.buffer) | |
| 70 | 70 | }, |
| 71 | 71 | trigger: null, |
| 72 | 72 | reconstruct: m, |
| … | … | @@ -79,15 +79,15 @@ function h(e) { |
| 79 | 79 | return [] |
| 80 | 80 | } |
| 81 | 81 | const R = r("@local/room-migration-stats") |
| 82 | function U(e, n, t) { | |
| 82 | function w(e, n, t) { | |
| 83 | 83 | c(e) |
| 84 | 84 | const o = { start: 0, end: t.byteLength, buffer: t } |
| 85 | 85 | return R.decode(o) |
| 86 | 86 | } |
| 87 | function w(e) { | |
| 87 | function U(e) { | |
| 88 | 88 | return {} |
| 89 | 89 | } |
| 90 | const F = { | |
| 90 | const V = { | |
| 91 | 91 | name: "@local/room-migration-stats", |
| 92 | 92 | id: 2, |
| 93 | 93 | version: 0, |
| … | … | @@ -105,27 +105,27 @@ const F = { |
| 105 | 105 | return (R.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), R.encode(r, o), r.buffer) |
| 106 | 106 | }, |
| 107 | 107 | trigger: null, |
| 108 | reconstruct: U, | |
| 109 | reconstructKey: w, | |
| 108 | reconstruct: w, | |
| 109 | reconstructKey: U, | |
| 110 | 110 | indexes: [], |
| 111 | 111 | decodedVersion: 0, |
| 112 | 112 | }, |
| 113 | V = new e([e.BUFFER], { prefix: 3 }) | |
| 113 | F = new e([e.BUFFER], { prefix: 3 }) | |
| 114 | 114 | function k(e) { |
| 115 | 115 | const n = e.roomKey |
| 116 | 116 | return void 0 === n ? [] : [n] |
| 117 | 117 | } |
| 118 | 118 | const B = r("@local/room-migration/hyperdb#3"), |
| 119 | I = d.roomMigrationsTrigger | |
| 120 | function E(e, n, t) { | |
| 121 | const o = V.decode(n) | |
| 119 | E = d.roomMigrationsTrigger | |
| 120 | function I(e, n, t) { | |
| 121 | const o = F.decode(n) | |
| 122 | 122 | c(e) |
| 123 | 123 | const r = { start: 0, end: t.byteLength, buffer: t }, |
| 124 | 124 | l = B.decode(r) |
| 125 | 125 | return ((l.roomKey = o[0]), l) |
| 126 | 126 | } |
| 127 | 127 | function T(e) { |
| 128 | return { roomKey: V.decode(e)[0] } | |
| 128 | return { roomKey: F.decode(e)[0] } | |
| 129 | 129 | } |
| 130 | 130 | const L = { |
| 131 | 131 | name: "@local/room-migrations", |
| … | … | @@ -133,10 +133,10 @@ const L = { |
| 133 | 133 | version: 0, |
| 134 | 134 | encodeKey(e) { |
| 135 | 135 | const n = [e.roomKey] |
| 136 | return V.encode(n) | |
| 136 | return F.encode(n) | |
| 137 | 137 | }, |
| 138 | 138 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 139 | V.encodeRange({ | |
| 139 | F.encodeRange({ | |
| 140 | 140 | gt: e ? k(e) : null, |
| 141 | 141 | lt: n ? k(n) : null, |
| 142 | 142 | gte: t ? k(t) : null, |
| … | … | @@ -147,8 +147,8 @@ const L = { |
| 147 | 147 | const r = { start: 0, end: 0, buffer: null } |
| 148 | 148 | return (B.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), B.encode(r, o), r.buffer) |
| 149 | 149 | }, |
| 150 | trigger: I, | |
| 151 | reconstruct: E, | |
| 150 | trigger: E, | |
| 151 | reconstruct: I, | |
| 152 | 152 | reconstructKey: T, |
| 153 | 153 | indexes: [], |
| 154 | 154 | decodedVersion: 0, |
| … | … | @@ -409,44 +409,44 @@ const ae = { |
| 409 | 409 | } |
| 410 | 410 | Q.indexes.push(ae) |
| 411 | 411 | const fe = new e([e.BUFFER], { prefix: 12 }) |
| 412 | function ye(e) { | |
| 412 | function ge(e) { | |
| 413 | 413 | const n = e.capabilities?.discoveryKeyPair?.publicKey |
| 414 | 414 | return void 0 === n ? [] : [n] |
| 415 | 415 | } |
| 416 | const ge = { | |
| 416 | const ye = { | |
| 417 | 417 | name: "@local/rooms-by-discovery", |
| 418 | 418 | version: 0, |
| 419 | 419 | id: 12, |
| 420 | encodeKey: (e) => fe.encode(ye(e)), | |
| 420 | encodeKey: (e) => fe.encode(ge(e)), | |
| 421 | 421 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 422 | 422 | fe.encodeRange({ |
| 423 | gt: e ? ye(e) : null, | |
| 424 | lt: n ? ye(n) : null, | |
| 425 | gte: t ? ye(t) : null, | |
| 426 | lte: o ? ye(o) : null, | |
| 423 | gt: e ? ge(e) : null, | |
| 424 | lt: n ? ge(n) : null, | |
| 425 | gte: t ? ge(t) : null, | |
| 426 | lte: o ? ge(o) : null, | |
| 427 | 427 | }), |
| 428 | encodeValue: (e) => ge.collection.encodeKey(e), | |
| 428 | encodeValue: (e) => ye.collection.encodeKey(e), | |
| 429 | 429 | encodeIndexKeys: (e, n) => [fe.encode([e.capabilities.discoveryKeyPair.publicKey])], |
| 430 | 430 | reconstruct: (e, n) => n, |
| 431 | 431 | offset: Q.indexes.length, |
| 432 | 432 | collection: Q, |
| 433 | 433 | } |
| 434 | Q.indexes.push(ge) | |
| 435 | const pe = new e([e.BUFFER], { prefix: 13 }) | |
| 436 | function be(e) { | |
| 434 | Q.indexes.push(ye) | |
| 435 | const be = new e([e.BUFFER], { prefix: 13 }) | |
| 436 | function pe(e) { | |
| 437 | 437 | const n = e.roomKey |
| 438 | 438 | return void 0 === n ? [] : [n] |
| 439 | 439 | } |
| 440 | 440 | const me = r("@local/room-preferences/hyperdb#13") |
| 441 | 441 | function Ke(e, n, t) { |
| 442 | const o = pe.decode(n) | |
| 442 | const o = be.decode(n) | |
| 443 | 443 | c(e) |
| 444 | 444 | const r = { start: 0, end: t.byteLength, buffer: t }, |
| 445 | 445 | l = me.decode(r) |
| 446 | 446 | return ((l.roomKey = o[0]), l) |
| 447 | 447 | } |
| 448 | 448 | function ve(e) { |
| 449 | return { roomKey: pe.decode(e)[0] } | |
| 449 | return { roomKey: be.decode(e)[0] } | |
| 450 | 450 | } |
| 451 | 451 | const xe = { |
| 452 | 452 | name: "@local/room-preferences", |
| … | … | @@ -454,14 +454,14 @@ const xe = { |
| 454 | 454 | version: 0, |
| 455 | 455 | encodeKey(e) { |
| 456 | 456 | const n = [e.roomKey] |
| 457 | return pe.encode(n) | |
| 457 | return be.encode(n) | |
| 458 | 458 | }, |
| 459 | 459 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 460 | pe.encodeRange({ | |
| 461 | gt: e ? be(e) : null, | |
| 462 | lt: n ? be(n) : null, | |
| 463 | gte: t ? be(t) : null, | |
| 464 | lte: o ? be(o) : null, | |
| 460 | be.encodeRange({ | |
| 461 | gt: e ? pe(e) : null, | |
| 462 | lt: n ? pe(n) : null, | |
| 463 | gte: t ? pe(t) : null, | |
| 464 | lte: o ? pe(o) : null, | |
| 465 | 465 | }), |
| 466 | 466 | encodeValue(e, n, o) { |
| 467 | 467 | c(e) |
| … | … | @@ -479,18 +479,18 @@ function Re(e) { |
| 479 | 479 | const n = e.mailbox |
| 480 | 480 | return void 0 === n ? [] : [n] |
| 481 | 481 | } |
| 482 | const Ue = r("@local/writer/hyperdb#14") | |
| 483 | function we(e, n, t) { | |
| 482 | const we = r("@local/writer/hyperdb#14") | |
| 483 | function Ue(e, n, t) { | |
| 484 | 484 | const o = he.decode(n) |
| 485 | 485 | c(e) |
| 486 | 486 | const r = { start: 0, end: t.byteLength, buffer: t }, |
| 487 | l = Ue.decode(r) | |
| 487 | l = we.decode(r) | |
| 488 | 488 | return ((l.mailbox = o[0]), l) |
| 489 | 489 | } |
| 490 | function Fe(e) { | |
| 490 | function Ve(e) { | |
| 491 | 491 | return { mailbox: he.decode(e)[0] } |
| 492 | 492 | } |
| 493 | const Ve = { | |
| 493 | const Fe = { | |
| 494 | 494 | name: "@local/writers", |
| 495 | 495 | id: 14, |
| 496 | 496 | version: 0, |
| … | … | @@ -508,33 +508,33 @@ const Ve = { |
| 508 | 508 | encodeValue(e, n, o) { |
| 509 | 509 | c(e) |
| 510 | 510 | const r = { start: 0, end: 0, buffer: null } |
| 511 | return (Ue.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), Ue.encode(r, o), r.buffer) | |
| 511 | return (we.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), we.encode(r, o), r.buffer) | |
| 512 | 512 | }, |
| 513 | 513 | trigger: null, |
| 514 | reconstruct: we, | |
| 515 | reconstructKey: Fe, | |
| 514 | reconstruct: Ue, | |
| 515 | reconstructKey: Ve, | |
| 516 | 516 | indexes: [], |
| 517 | 517 | decodedVersion: 0, |
| 518 | 518 | }, |
| 519 | 519 | ke = new e([e.BUFFER], { prefix: 15 }), |
| 520 | 520 | Be = d.writersByWakeupTopicMap |
| 521 | function Ie(e) { | |
| 521 | function Ee(e) { | |
| 522 | 522 | const n = e.wakeupTopic |
| 523 | 523 | return void 0 === n ? [] : [n] |
| 524 | 524 | } |
| 525 | const Ee = { | |
| 525 | const Ie = { | |
| 526 | 526 | name: "@local/writers-by-wakeup-topic", |
| 527 | 527 | version: 0, |
| 528 | 528 | id: 15, |
| 529 | encodeKey: (e) => ke.encode(Ie(e)), | |
| 529 | encodeKey: (e) => ke.encode(Ee(e)), | |
| 530 | 530 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 531 | 531 | ke.encodeRange({ |
| 532 | gt: e ? Ie(e) : null, | |
| 533 | lt: n ? Ie(n) : null, | |
| 534 | gte: t ? Ie(t) : null, | |
| 535 | lte: o ? Ie(o) : null, | |
| 532 | gt: e ? Ee(e) : null, | |
| 533 | lt: n ? Ee(n) : null, | |
| 534 | gte: t ? Ee(t) : null, | |
| 535 | lte: o ? Ee(o) : null, | |
| 536 | 536 | }), |
| 537 | encodeValue: (e) => Ee.collection.encodeKey(e), | |
| 537 | encodeValue: (e) => Ie.collection.encodeKey(e), | |
| 538 | 538 | encodeIndexKeys(e, n) { |
| 539 | 539 | const t = Be(e, n), |
| 540 | 540 | o = new Array(t.length) |
| … | … | @@ -545,10 +545,10 @@ const Ee = { |
| 545 | 545 | return o |
| 546 | 546 | }, |
| 547 | 547 | reconstruct: (e, n) => n, |
| 548 | offset: Ve.indexes.length, | |
| 549 | collection: Ve, | |
| 548 | offset: Fe.indexes.length, | |
| 549 | collection: Fe, | |
| 550 | 550 | } |
| 551 | Ve.indexes.push(Ee) | |
| 551 | Fe.indexes.push(Ie) | |
| 552 | 552 | const Te = new e([e.BUFFER], { prefix: 16 }), |
| 553 | 553 | Le = d.writersByRoomKeyMap |
| 554 | 554 | function Ne(e) { |
| … | … | @@ -578,10 +578,10 @@ const De = { |
| 578 | 578 | return o |
| 579 | 579 | }, |
| 580 | 580 | reconstruct: (e, n) => n, |
| 581 | offset: Ve.indexes.length, | |
| 582 | collection: Ve, | |
| 581 | offset: Fe.indexes.length, | |
| 582 | collection: Fe, | |
| 583 | 583 | } |
| 584 | Ve.indexes.push(De) | |
| 584 | Fe.indexes.push(De) | |
| 585 | 585 | const Ae = new e([e.BUFFER], { prefix: 17 }) |
| 586 | 586 | function Pe(e) { |
| 587 | 587 | const n = e.key |
| … | … | @@ -822,8 +822,8 @@ const fn = { |
| 822 | 822 | collection: sn, |
| 823 | 823 | } |
| 824 | 824 | sn.indexes.push(fn) |
| 825 | const yn = new e([e.BUFFER, e.UINT], { prefix: 23 }) | |
| 826 | function gn(e) { | |
| 825 | const gn = new e([e.BUFFER, e.UINT], { prefix: 23 }) | |
| 826 | function yn(e) { | |
| 827 | 827 | const n = [], |
| 828 | 828 | t = e.file?.pointer?.externalBlob?.key |
| 829 | 829 | if (void 0 === t) return n |
| … | … | @@ -831,12 +831,12 @@ function gn(e) { |
| 831 | 831 | const o = e.file?.pointer?.externalBlob?.blob?.blockOffset |
| 832 | 832 | return (void 0 === o || n.push(o), n) |
| 833 | 833 | } |
| 834 | const pn = r("@local/file/hyperdb#23") | |
| 835 | function bn(e, n, t) { | |
| 836 | const o = yn.decode(n) | |
| 834 | const bn = r("@local/file/hyperdb#23") | |
| 835 | function pn(e, n, t) { | |
| 836 | const o = gn.decode(n) | |
| 837 | 837 | c(e) |
| 838 | 838 | const r = { start: 0, end: t.byteLength, buffer: t }, |
| 839 | l = pn.decode(r) | |
| 839 | l = bn.decode(r) | |
| 840 | 840 | return ( |
| 841 | 841 | (l.file.pointer.externalBlob.key = o[0]), |
| 842 | 842 | (l.file.pointer.externalBlob.blob.blockOffset = o[1]), |
| … | … | @@ -845,7 +845,7 @@ function bn(e, n, t) { |
| 845 | 845 | ) |
| 846 | 846 | } |
| 847 | 847 | function mn(e) { |
| 848 | return { file: { pointer: { externalBlob: { blob: { blockOffset: yn.decode(e)[1] } } } } } | |
| 848 | return { file: { pointer: { externalBlob: { blob: { blockOffset: gn.decode(e)[1] } } } } } | |
| 849 | 849 | } |
| 850 | 850 | const Kn = { |
| 851 | 851 | name: "@local/blob-files", |
| … | … | @@ -853,28 +853,28 @@ const Kn = { |
| 853 | 853 | version: 4, |
| 854 | 854 | encodeKey(e) { |
| 855 | 855 | const n = [e.file.pointer.externalBlob.key, e.file.pointer.externalBlob.blob.blockOffset] |
| 856 | return yn.encode(n) | |
| 856 | return gn.encode(n) | |
| 857 | 857 | }, |
| 858 | 858 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 859 | yn.encodeRange({ | |
| 860 | gt: e ? gn(e) : null, | |
| 861 | lt: n ? gn(n) : null, | |
| 862 | gte: t ? gn(t) : null, | |
| 863 | lte: o ? gn(o) : null, | |
| 859 | gn.encodeRange({ | |
| 860 | gt: e ? yn(e) : null, | |
| 861 | lt: n ? yn(n) : null, | |
| 862 | gte: t ? yn(t) : null, | |
| 863 | lte: o ? yn(o) : null, | |
| 864 | 864 | }), |
| 865 | 865 | encodeValue(e, n, o) { |
| 866 | 866 | c(e) |
| 867 | 867 | const r = { start: 0, end: 0, buffer: null } |
| 868 | 868 | return ( |
| 869 | 869 | (o.version = n), |
| 870 | pn.preencode(r, o), | |
| 870 | bn.preencode(r, o), | |
| 871 | 871 | (r.buffer = t.allocUnsafe(r.end)), |
| 872 | pn.encode(r, o), | |
| 872 | bn.encode(r, o), | |
| 873 | 873 | r.buffer |
| 874 | 874 | ) |
| 875 | 875 | }, |
| 876 | 876 | trigger: null, |
| 877 | reconstruct: bn, | |
| 877 | reconstruct: pn, | |
| 878 | 878 | reconstructKey: mn, |
| 879 | 879 | indexes: [], |
| 880 | 880 | decodedVersion: 0, |
| … | … | @@ -901,14 +901,14 @@ function Rn(e, n, t) { |
| 901 | 901 | (l.file.pointer.externalDrive.key = o[0]), |
| 902 | 902 | (l.file.pointer.externalDrive.path = o[1]), |
| 903 | 903 | (l.file.pointer.externalDrive.version = o[2]), |
| 904 | (wn.decodedVersion = l.version), | |
| 904 | (Un.decodedVersion = l.version), | |
| 905 | 905 | l |
| 906 | 906 | ) |
| 907 | 907 | } |
| 908 | function Un(e) { | |
| 908 | function wn(e) { | |
| 909 | 909 | return { file: { pointer: { externalDrive: { version: vn.decode(e)[2] } } } } |
| 910 | 910 | } |
| 911 | const wn = { | |
| 911 | const Un = { | |
| 912 | 912 | name: "@local/drive-files", |
| 913 | 913 | id: 24, |
| 914 | 914 | version: 4, |
| … | … | @@ -940,12 +940,12 @@ const wn = { |
| 940 | 940 | }, |
| 941 | 941 | trigger: null, |
| 942 | 942 | reconstruct: Rn, |
| 943 | reconstructKey: Un, | |
| 943 | reconstructKey: wn, | |
| 944 | 944 | indexes: [], |
| 945 | 945 | decodedVersion: 0, |
| 946 | 946 | }, |
| 947 | Fn = new e([e.BUFFER, e.BUFFER, e.UINT], { prefix: 25 }) | |
| 948 | function Vn(e) { | |
| 947 | Vn = new e([e.BUFFER, e.BUFFER, e.UINT], { prefix: 25 }) | |
| 948 | function Fn(e) { | |
| 949 | 949 | const n = [], |
| 950 | 950 | t = e.roomKey |
| 951 | 951 | if (void 0 === t) return n |
| … | … | @@ -960,17 +960,17 @@ const kn = { |
| 960 | 960 | name: "@local/blob-files-by-room", |
| 961 | 961 | version: 0, |
| 962 | 962 | id: 25, |
| 963 | encodeKey: (e) => Fn.encode(Vn(e)), | |
| 963 | encodeKey: (e) => Vn.encode(Fn(e)), | |
| 964 | 964 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 965 | Fn.encodeRange({ | |
| 966 | gt: e ? Vn(e) : null, | |
| 967 | lt: n ? Vn(n) : null, | |
| 968 | gte: t ? Vn(t) : null, | |
| 969 | lte: o ? Vn(o) : null, | |
| 965 | Vn.encodeRange({ | |
| 966 | gt: e ? Fn(e) : null, | |
| 967 | lt: n ? Fn(n) : null, | |
| 968 | gte: t ? Fn(t) : null, | |
| 969 | lte: o ? Fn(o) : null, | |
| 970 | 970 | }), |
| 971 | 971 | encodeValue: (e) => kn.collection.encodeKey(e), |
| 972 | 972 | encodeIndexKeys: (e, n) => [ |
| 973 | Fn.encode([ | |
| 973 | Vn.encode([ | |
| 974 | 974 | e.roomKey, |
| 975 | 975 | e.file.pointer.externalBlob.key, |
| 976 | 976 | e.file.pointer.externalBlob.blob.blockOffset, |
| … | … | @@ -982,7 +982,7 @@ const kn = { |
| 982 | 982 | } |
| 983 | 983 | Kn.indexes.push(kn) |
| 984 | 984 | const Bn = new e([e.BUFFER, e.BUFFER, e.STRING, e.UINT], { prefix: 26 }) |
| 985 | function In(e) { | |
| 985 | function En(e) { | |
| 986 | 986 | const n = [], |
| 987 | 987 | t = e.roomKey |
| 988 | 988 | if (void 0 === t) return n |
| … | … | @@ -996,19 +996,19 @@ function In(e) { |
| 996 | 996 | const c = e.file?.pointer?.externalDrive?.version |
| 997 | 997 | return (void 0 === c || n.push(c), n) |
| 998 | 998 | } |
| 999 | const En = { | |
| 999 | const In = { | |
| 1000 | 1000 | name: "@local/drive-files-by-room", |
| 1001 | 1001 | version: 0, |
| 1002 | 1002 | id: 26, |
| 1003 | encodeKey: (e) => Bn.encode(In(e)), | |
| 1003 | encodeKey: (e) => Bn.encode(En(e)), | |
| 1004 | 1004 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 1005 | 1005 | Bn.encodeRange({ |
| 1006 | gt: e ? In(e) : null, | |
| 1007 | lt: n ? In(n) : null, | |
| 1008 | gte: t ? In(t) : null, | |
| 1009 | lte: o ? In(o) : null, | |
| 1006 | gt: e ? En(e) : null, | |
| 1007 | lt: n ? En(n) : null, | |
| 1008 | gte: t ? En(t) : null, | |
| 1009 | lte: o ? En(o) : null, | |
| 1010 | 1010 | }), |
| 1011 | encodeValue: (e) => En.collection.encodeKey(e), | |
| 1011 | encodeValue: (e) => In.collection.encodeKey(e), | |
| 1012 | 1012 | encodeIndexKeys: (e, n) => [ |
| 1013 | 1013 | Bn.encode([ |
| 1014 | 1014 | e.roomKey, |
| … | … | @@ -1018,10 +1018,10 @@ const En = { |
| 1018 | 1018 | ]), |
| 1019 | 1019 | ], |
| 1020 | 1020 | reconstruct: (e, n) => n, |
| 1021 | offset: wn.indexes.length, | |
| 1022 | collection: wn, | |
| 1021 | offset: Un.indexes.length, | |
| 1022 | collection: Un, | |
| 1023 | 1023 | } |
| 1024 | wn.indexes.push(En) | |
| 1024 | Un.indexes.push(In) | |
| 1025 | 1025 | const Tn = new e([e.BUFFER], { prefix: 27 }) |
| 1026 | 1026 | function Ln(e) { |
| 1027 | 1027 | const n = e.discoveryPublicKey |
| … | … | @@ -1268,10 +1268,10 @@ function ft(e, n, t) { |
| 1268 | 1268 | l = at.decode(r) |
| 1269 | 1269 | return ((l.roomKey = o[0]), l) |
| 1270 | 1270 | } |
| 1271 | function yt(e) { | |
| 1271 | function gt(e) { | |
| 1272 | 1272 | return { roomKey: ut.decode(e)[0] } |
| 1273 | 1273 | } |
| 1274 | const gt = { | |
| 1274 | const yt = { | |
| 1275 | 1275 | name: "@local/unreads", |
| 1276 | 1276 | id: 33, |
| 1277 | 1277 | version: 0, |
| … | … | @@ -1293,12 +1293,12 @@ const gt = { |
| 1293 | 1293 | }, |
| 1294 | 1294 | trigger: null, |
| 1295 | 1295 | reconstruct: ft, |
| 1296 | reconstructKey: yt, | |
| 1296 | reconstructKey: gt, | |
| 1297 | 1297 | indexes: [], |
| 1298 | 1298 | decodedVersion: 0, |
| 1299 | 1299 | }, |
| 1300 | pt = new e([], { prefix: 34 }) | |
| 1301 | function bt(e) { | |
| 1300 | bt = new e([], { prefix: 34 }) | |
| 1301 | function pt(e) { | |
| 1302 | 1302 | return [] |
| 1303 | 1303 | } |
| 1304 | 1304 | const mt = r("@local/hyperdht-record") |
| … | … | @@ -1314,13 +1314,13 @@ const xt = { |
| 1314 | 1314 | name: "@local/hyperdht", |
| 1315 | 1315 | id: 34, |
| 1316 | 1316 | version: 0, |
| 1317 | encodeKey: (e) => pt.encode([]), | |
| 1317 | encodeKey: (e) => bt.encode([]), | |
| 1318 | 1318 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 1319 | pt.encodeRange({ | |
| 1320 | gt: e ? bt(e) : null, | |
| 1321 | lt: n ? bt(n) : null, | |
| 1322 | gte: t ? bt(t) : null, | |
| 1323 | lte: o ? bt(o) : null, | |
| 1319 | bt.encodeRange({ | |
| 1320 | gt: e ? pt(e) : null, | |
| 1321 | lt: n ? pt(n) : null, | |
| 1322 | gte: t ? pt(t) : null, | |
| 1323 | lte: o ? pt(o) : null, | |
| 1324 | 1324 | }), |
| 1325 | 1325 | encodeValue(e, n, o) { |
| 1326 | 1326 | c(e) |
| … | … | @@ -1338,18 +1338,18 @@ function Rt(e) { |
| 1338 | 1338 | const n = e.timestamp |
| 1339 | 1339 | return void 0 === n ? [] : [n] |
| 1340 | 1340 | } |
| 1341 | const Ut = r("@local/error-record/hyperdb#35") | |
| 1342 | function wt(e, n, t) { | |
| 1341 | const wt = r("@local/error-record/hyperdb#35") | |
| 1342 | function Ut(e, n, t) { | |
| 1343 | 1343 | const o = ht.decode(n) |
| 1344 | 1344 | c(e) |
| 1345 | 1345 | const r = { start: 0, end: t.byteLength, buffer: t }, |
| 1346 | l = Ut.decode(r) | |
| 1346 | l = wt.decode(r) | |
| 1347 | 1347 | return ((l.timestamp = o[0]), l) |
| 1348 | 1348 | } |
| 1349 | function Ft(e) { | |
| 1349 | function Vt(e) { | |
| 1350 | 1350 | return { timestamp: ht.decode(e)[0] } |
| 1351 | 1351 | } |
| 1352 | const Vt = { | |
| 1352 | const Ft = { | |
| 1353 | 1353 | name: "@local/errors", |
| 1354 | 1354 | id: 35, |
| 1355 | 1355 | version: 0, |
| … | … | @@ -1367,11 +1367,11 @@ const Vt = { |
| 1367 | 1367 | encodeValue(e, n, o) { |
| 1368 | 1368 | c(e) |
| 1369 | 1369 | const r = { start: 0, end: 0, buffer: null } |
| 1370 | return (Ut.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), Ut.encode(r, o), r.buffer) | |
| 1370 | return (wt.preencode(r, o), (r.buffer = t.allocUnsafe(r.end)), wt.encode(r, o), r.buffer) | |
| 1371 | 1371 | }, |
| 1372 | 1372 | trigger: null, |
| 1373 | reconstruct: wt, | |
| 1374 | reconstructKey: Ft, | |
| 1373 | reconstruct: Ut, | |
| 1374 | reconstructKey: Vt, | |
| 1375 | 1375 | indexes: [], |
| 1376 | 1376 | decodedVersion: 0, |
| 1377 | 1377 | }, |
| … | … | @@ -1384,7 +1384,7 @@ function Bt(e) { |
| 1384 | 1384 | const o = e.timestamp |
| 1385 | 1385 | return (void 0 === o || n.push(o), n) |
| 1386 | 1386 | } |
| 1387 | const It = { | |
| 1387 | const Et = { | |
| 1388 | 1388 | name: "@local/errors-by-code", |
| 1389 | 1389 | version: 0, |
| 1390 | 1390 | id: 36, |
| … | … | @@ -1396,21 +1396,21 @@ const It = { |
| 1396 | 1396 | gte: t ? Bt(t) : null, |
| 1397 | 1397 | lte: o ? Bt(o) : null, |
| 1398 | 1398 | }), |
| 1399 | encodeValue: (e) => It.collection.encodeKey(e), | |
| 1399 | encodeValue: (e) => Et.collection.encodeKey(e), | |
| 1400 | 1400 | encodeIndexKeys: (e, n) => [kt.encode([e.code, e.timestamp])], |
| 1401 | 1401 | reconstruct: (e, n) => n, |
| 1402 | offset: Vt.indexes.length, | |
| 1403 | collection: Vt, | |
| 1402 | offset: Ft.indexes.length, | |
| 1403 | collection: Ft, | |
| 1404 | 1404 | } |
| 1405 | Vt.indexes.push(It) | |
| 1406 | const Et = new e([e.BUFFER], { prefix: 37 }) | |
| 1405 | Ft.indexes.push(Et) | |
| 1406 | const It = new e([e.BUFFER], { prefix: 37 }) | |
| 1407 | 1407 | function Tt(e) { |
| 1408 | 1408 | const n = e.roomKey |
| 1409 | 1409 | return void 0 === n ? [] : [n] |
| 1410 | 1410 | } |
| 1411 | 1411 | const Lt = r("@local/file-stats/hyperdb#37") |
| 1412 | 1412 | function Nt(e, t, o) { |
| 1413 | const r = Et.decode(t) | |
| 1413 | const r = It.decode(t) | |
| 1414 | 1414 | c(e) |
| 1415 | 1415 | const l = { start: 0, end: o.byteLength, buffer: o }, |
| 1416 | 1416 | d = n.uint.decode(l) |
| … | … | @@ -1420,7 +1420,7 @@ function Nt(e, t, o) { |
| 1420 | 1420 | return ((s.roomKey = r[0]), s) |
| 1421 | 1421 | } |
| 1422 | 1422 | function Dt(e) { |
| 1423 | return { roomKey: Et.decode(e)[0] } | |
| 1423 | return { roomKey: It.decode(e)[0] } | |
| 1424 | 1424 | } |
| 1425 | 1425 | const At = { |
| 1426 | 1426 | name: "@local/file-stats", |
| … | … | @@ -1428,10 +1428,10 @@ const At = { |
| 1428 | 1428 | version: 2, |
| 1429 | 1429 | encodeKey(e) { |
| 1430 | 1430 | const n = [e.roomKey] |
| 1431 | return Et.encode(n) | |
| 1431 | return It.encode(n) | |
| 1432 | 1432 | }, |
| 1433 | 1433 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => |
| 1434 | Et.encodeRange({ | |
| 1434 | It.encodeRange({ | |
| 1435 | 1435 | gt: e ? Tt(e) : null, |
| 1436 | 1436 | lt: n ? Tt(n) : null, |
| 1437 | 1437 | gte: t ? Tt(t) : null, |
| … | … | @@ -1562,10 +1562,10 @@ const zt = { |
| 1562 | 1562 | ]), |
| 1563 | 1563 | ], |
| 1564 | 1564 | reconstruct: (e, n) => n, |
| 1565 | offset: wn.indexes.length, | |
| 1566 | collection: wn, | |
| 1565 | offset: Un.indexes.length, | |
| 1566 | collection: Un, | |
| 1567 | 1567 | } |
| 1568 | wn.indexes.push(zt) | |
| 1568 | Un.indexes.push(zt) | |
| 1569 | 1569 | const Ht = new e([], { prefix: 41 }) |
| 1570 | 1570 | function Jt(e) { |
| 1571 | 1571 | return [] |
| … | … | @@ -1656,16 +1656,140 @@ const oo = { |
| 1656 | 1656 | indexes: [], |
| 1657 | 1657 | decodedVersion: 0, |
| 1658 | 1658 | }, |
| 1659 | ro = [y, v, F, L, q, Q, xe, Ve, Se, He, $e, sn, Kn, wn, Pn, Hn, $n, rt, gt, xt, Vt, At, Zt, oo], | |
| 1660 | co = [A, Z, ne, ce, se, ae, ge, Ee, De, tn, fn, kn, En, Sn, st, It, Gt, Ct, zt] | |
| 1661 | function lo(e) { | |
| 1659 | ro = new e([], { prefix: 43 }) | |
| 1660 | function co(e) { | |
| 1661 | return [] | |
| 1662 | } | |
| 1663 | const lo = r("@local/ota-actions") | |
| 1664 | function so(e, t, o) { | |
| 1665 | c(e) | |
| 1666 | const r = { start: 0, end: o.byteLength, buffer: o }, | |
| 1667 | l = n.uint.decode(r) | |
| 1668 | if (0 !== l) throw new Error("Unknown collection type: " + l) | |
| 1669 | return ((io.decodedVersion = n.uint.decode(r)), lo.decode(r)) | |
| 1670 | } | |
| 1671 | function uo(e) { | |
| 1672 | return {} | |
| 1673 | } | |
| 1674 | const io = { | |
| 1675 | name: "@local/ota-actions", | |
| 1676 | id: 43, | |
| 1677 | version: 6, | |
| 1678 | encodeKey: (e) => ro.encode([]), | |
| 1679 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => | |
| 1680 | ro.encodeRange({ | |
| 1681 | gt: e ? co(e) : null, | |
| 1682 | lt: n ? co(n) : null, | |
| 1683 | gte: t ? co(t) : null, | |
| 1684 | lte: o ? co(o) : null, | |
| 1685 | }), | |
| 1686 | encodeValue(e, n, o) { | |
| 1687 | c(e) | |
| 1688 | const r = { start: 0, end: 2, buffer: null } | |
| 1689 | return ( | |
| 1690 | lo.preencode(r, o), | |
| 1691 | (r.buffer = t.allocUnsafe(r.end)), | |
| 1692 | (r.buffer[r.start++] = 0), | |
| 1693 | (r.buffer[r.start++] = n), | |
| 1694 | lo.encode(r, o), | |
| 1695 | r.buffer | |
| 1696 | ) | |
| 1697 | }, | |
| 1698 | trigger: null, | |
| 1699 | reconstruct: so, | |
| 1700 | reconstructKey: uo, | |
| 1701 | indexes: [], | |
| 1702 | decodedVersion: 0, | |
| 1703 | }, | |
| 1704 | ao = new e([e.BUFFER], { prefix: 44 }) | |
| 1705 | function fo(e) { | |
| 1706 | const n = e.deviceKey | |
| 1707 | return void 0 === n ? [] : [n] | |
| 1708 | } | |
| 1709 | const go = r("@local/device-attestation/hyperdb#44") | |
| 1710 | function yo(e, t, o) { | |
| 1711 | const r = ao.decode(t) | |
| 1712 | c(e) | |
| 1713 | const l = { start: 0, end: o.byteLength, buffer: o }, | |
| 1714 | d = n.uint.decode(l) | |
| 1715 | if (0 !== d) throw new Error("Unknown collection type: " + d) | |
| 1716 | po.decodedVersion = n.uint.decode(l) | |
| 1717 | const s = go.decode(l) | |
| 1718 | return ((s.deviceKey = r[0]), s) | |
| 1719 | } | |
| 1720 | function bo(e) { | |
| 1721 | return { deviceKey: ao.decode(e)[0] } | |
| 1722 | } | |
| 1723 | const po = { | |
| 1724 | name: "@local/device-attestations", | |
| 1725 | id: 44, | |
| 1726 | version: 6, | |
| 1727 | encodeKey(e) { | |
| 1728 | const n = [e.deviceKey] | |
| 1729 | return ao.encode(n) | |
| 1730 | }, | |
| 1731 | encodeKeyRange: ({ gt: e, lt: n, gte: t, lte: o } = {}) => | |
| 1732 | ao.encodeRange({ | |
| 1733 | gt: e ? fo(e) : null, | |
| 1734 | lt: n ? fo(n) : null, | |
| 1735 | gte: t ? fo(t) : null, | |
| 1736 | lte: o ? fo(o) : null, | |
| 1737 | }), | |
| 1738 | encodeValue(e, n, o) { | |
| 1739 | c(e) | |
| 1740 | const r = { start: 0, end: 2, buffer: null } | |
| 1741 | return ( | |
| 1742 | go.preencode(r, o), | |
| 1743 | (r.buffer = t.allocUnsafe(r.end)), | |
| 1744 | (r.buffer[r.start++] = 0), | |
| 1745 | (r.buffer[r.start++] = n), | |
| 1746 | go.encode(r, o), | |
| 1747 | r.buffer | |
| 1748 | ) | |
| 1749 | }, | |
| 1750 | trigger: null, | |
| 1751 | reconstruct: yo, | |
| 1752 | reconstructKey: bo, | |
| 1753 | indexes: [], | |
| 1754 | decodedVersion: 0, | |
| 1755 | }, | |
| 1756 | mo = [ | |
| 1757 | g, | |
| 1758 | v, | |
| 1759 | V, | |
| 1760 | L, | |
| 1761 | q, | |
| 1762 | Q, | |
| 1763 | xe, | |
| 1764 | Fe, | |
| 1765 | Se, | |
| 1766 | He, | |
| 1767 | $e, | |
| 1768 | sn, | |
| 1769 | Kn, | |
| 1770 | Un, | |
| 1771 | Pn, | |
| 1772 | Hn, | |
| 1773 | $n, | |
| 1774 | rt, | |
| 1775 | yt, | |
| 1776 | xt, | |
| 1777 | Ft, | |
| 1778 | At, | |
| 1779 | Zt, | |
| 1780 | oo, | |
| 1781 | io, | |
| 1782 | po, | |
| 1783 | ], | |
| 1784 | Ko = [A, Z, ne, ce, se, ae, ye, Ie, De, tn, fn, kn, In, Sn, st, Et, Gt, Ct, zt] | |
| 1785 | function vo(e) { | |
| 1662 | 1786 | switch (e) { |
| 1663 | 1787 | case "@local/stats": |
| 1664 | return y | |
| 1788 | return g | |
| 1665 | 1789 | case "@local/migrations": |
| 1666 | 1790 | return v |
| 1667 | 1791 | case "@local/room-migration-stats": |
| 1668 | return F | |
| 1792 | return V | |
| 1669 | 1793 | case "@local/room-migrations": |
| 1670 | 1794 | return L |
| 1671 | 1795 | case "@local/identity": |
| … | … | @@ -1675,7 +1799,7 @@ function lo(e) { |
| 1675 | 1799 | case "@local/room-preferences": |
| 1676 | 1800 | return xe |
| 1677 | 1801 | case "@local/writers": |
| 1678 | return Ve | |
| 1802 | return Fe | |
| 1679 | 1803 | case "@local/members": |
| 1680 | 1804 | return Se |
| 1681 | 1805 | case "@local/devices": |
| … | … | @@ -1687,7 +1811,7 @@ function lo(e) { |
| 1687 | 1811 | case "@local/blob-files": |
| 1688 | 1812 | return Kn |
| 1689 | 1813 | case "@local/drive-files": |
| 1690 | return wn | |
| 1814 | return Un | |
| 1691 | 1815 | case "@local/background-sync": |
| 1692 | 1816 | return Pn |
| 1693 | 1817 | case "@local/writer-appends": |
| … | … | @@ -1697,22 +1821,26 @@ function lo(e) { |
| 1697 | 1821 | case "@local/debug": |
| 1698 | 1822 | return rt |
| 1699 | 1823 | case "@local/unreads": |
| 1700 | return gt | |
| 1824 | return yt | |
| 1701 | 1825 | case "@local/hyperdht": |
| 1702 | 1826 | return xt |
| 1703 | 1827 | case "@local/errors": |
| 1704 | return Vt | |
| 1828 | return Ft | |
| 1705 | 1829 | case "@local/file-stats": |
| 1706 | 1830 | return At |
| 1707 | 1831 | case "@local/file-gc-info": |
| 1708 | 1832 | return Zt |
| 1709 | 1833 | case "@local/environment": |
| 1710 | 1834 | return oo |
| 1835 | case "@local/ota-actions": | |
| 1836 | return io | |
| 1837 | case "@local/device-attestations": | |
| 1838 | return po | |
| 1711 | 1839 | default: |
| 1712 | 1840 | return null |
| 1713 | 1841 | } |
| 1714 | 1842 | } |
| 1715 | function so(e) { | |
| 1843 | function xo(e) { | |
| 1716 | 1844 | switch (e) { |
| 1717 | 1845 | case "@local/room-migrations-by-priority": |
| 1718 | 1846 | return A |
| … | … | @@ -1727,9 +1855,9 @@ function so(e) { |
| 1727 | 1855 | case "@local/rooms-by-mailbox": |
| 1728 | 1856 | return ae |
| 1729 | 1857 | case "@local/rooms-by-discovery": |
| 1730 | return ge | |
| 1858 | return ye | |
| 1731 | 1859 | case "@local/writers-by-wakeup-topic": |
| 1732 | return Ee | |
| 1860 | return Ie | |
| 1733 | 1861 | case "@local/writers-by-room-key": |
| 1734 | 1862 | return De |
| 1735 | 1863 | case "@local/blocked-contacts": |
| … | … | @@ -1739,13 +1867,13 @@ function so(e) { |
| 1739 | 1867 | case "@local/blob-files-by-room": |
| 1740 | 1868 | return kn |
| 1741 | 1869 | case "@local/drive-files-by-room": |
| 1742 | return En | |
| 1870 | return In | |
| 1743 | 1871 | case "@local/background-sync-by-dirty": |
| 1744 | 1872 | return Sn |
| 1745 | 1873 | case "@local/rooms-by-contact": |
| 1746 | 1874 | return st |
| 1747 | 1875 | case "@local/errors-by-code": |
| 1748 | return It | |
| 1876 | return Et | |
| 1749 | 1877 | case "@local/rooms-by-favorite-and-timestamp": |
| 1750 | 1878 | return Gt |
| 1751 | 1879 | case "@local/blob-files-by-last-accessed": |
| … | … | @@ -1758,8 +1886,8 @@ function so(e) { |
| 1758 | 1886 | } |
| 1759 | 1887 | module.exports = { |
| 1760 | 1888 | versions: l, |
| 1761 | collections: ro, | |
| 1762 | indexes: co, | |
| 1763 | resolveCollection: lo, | |
| 1764 | resolveIndex: so, | |
| 1889 | collections: mo, | |
| 1890 | indexes: Ko, | |
| 1891 | resolveCollection: vo, | |
| 1892 | resolveIndex: xo, | |
| 1765 | 1893 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 30 | |
| 2 | d = 31 | |
| 3 | 3 | let o = d |
| 4 | 4 | const n = { |
| 5 | 5 | preencode(d, o) { |
| … | … | @@ -90,7 +90,7 @@ const n = { |
| 90 | 90 | byteLength: e.uint.decode(d), |
| 91 | 91 | }), |
| 92 | 92 | }, |
| 93 | l = { | |
| 93 | p = { | |
| 94 | 94 | preencode(d, o) { |
| 95 | 95 | ;(e.uint.preencode(d, o.width), e.uint.preencode(d, o.height)) |
| 96 | 96 | }, |
| … | … | @@ -99,13 +99,13 @@ const n = { |
| 99 | 99 | }, |
| 100 | 100 | decode: (d) => ({ width: e.uint.decode(d), height: e.uint.decode(d) }), |
| 101 | 101 | }, |
| 102 | p = e.frame(l), | |
| 102 | l = e.frame(p), | |
| 103 | 103 | u = { |
| 104 | 104 | preencode(d, o) { |
| 105 | 105 | ;(d.end++, |
| 106 | 106 | o.name && e.string.preencode(d, o.name), |
| 107 | 107 | o.mimetype && e.string.preencode(d, o.mimetype), |
| 108 | o.dimensions && p.preencode(d, o.dimensions), | |
| 108 | o.dimensions && l.preencode(d, o.dimensions), | |
| 109 | 109 | o.userdata && e.buffer.preencode(d, o.userdata), |
| 110 | 110 | o.duration && e.uint.preencode(d, o.duration)) |
| 111 | 111 | }, |
| … | … | @@ -120,7 +120,7 @@ const n = { |
| 120 | 120 | ;(e.uint.encode(d, n), |
| 121 | 121 | o.name && e.string.encode(d, o.name), |
| 122 | 122 | o.mimetype && e.string.encode(d, o.mimetype), |
| 123 | o.dimensions && p.encode(d, o.dimensions), | |
| 123 | o.dimensions && l.encode(d, o.dimensions), | |
| 124 | 124 | o.userdata && e.buffer.encode(d, o.userdata), |
| 125 | 125 | o.duration && e.uint.encode(d, o.duration)) |
| 126 | 126 | }, |
| … | … | @@ -129,7 +129,7 @@ const n = { |
| 129 | 129 | return { |
| 130 | 130 | name: 1 & o ? e.string.decode(d) : null, |
| 131 | 131 | mimetype: 2 & o ? e.string.decode(d) : null, |
| 132 | dimensions: 4 & o ? p.decode(d) : null, | |
| 132 | dimensions: 4 & o ? l.decode(d) : null, | |
| 133 | 133 | userdata: 8 & o ? e.buffer.decode(d) : null, |
| 134 | 134 | duration: 16 & o ? e.uint.decode(d) : 0, |
| 135 | 135 | isPreview: !!(32 & o), |
| … | … | @@ -204,7 +204,7 @@ const n = { |
| 204 | 204 | ;(v.preencode(d, o.pointer), |
| 205 | 205 | d.end++, |
| 206 | 206 | o.metadata && k.preencode(d, o.metadata), |
| 207 | o.preview && ja.preencode(d, o.preview), | |
| 207 | o.preview && Ea.preencode(d, o.preview), | |
| 208 | 208 | o.hash && e.fixed32.preencode(d, o.hash)) |
| 209 | 209 | }, |
| 210 | 210 | encode(d, o) { |
| … | … | @@ -212,7 +212,7 @@ const n = { |
| 212 | 212 | ;(v.encode(d, o.pointer), |
| 213 | 213 | e.uint.encode(d, n), |
| 214 | 214 | o.metadata && k.encode(d, o.metadata), |
| 215 | o.preview && ja.encode(d, o.preview), | |
| 215 | o.preview && Ea.encode(d, o.preview), | |
| 216 | 216 | o.hash && e.fixed32.encode(d, o.hash)) |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| … | … | @@ -221,7 +221,7 @@ const n = { |
| 221 | 221 | return { |
| 222 | 222 | pointer: o, |
| 223 | 223 | metadata: 1 & n ? k.decode(d) : null, |
| 224 | preview: 2 & n ? ja.decode(d) : null, | |
| 224 | preview: 2 & n ? Ea.decode(d) : null, | |
| 225 | 225 | hash: 4 & n ? e.fixed32.decode(d) : null, |
| 226 | 226 | } |
| 227 | 227 | }, |
| … | … | @@ -558,9 +558,9 @@ const n = { |
| 558 | 558 | preencode(d, n) { |
| 559 | 559 | ;(d.end++, |
| 560 | 560 | n.title && e.string.preencode(d, n.title), |
| 561 | n.avatar && La.preencode(d, n.avatar), | |
| 561 | n.avatar && Va.preencode(d, n.avatar), | |
| 562 | 562 | n.description && e.string.preencode(d, n.description), |
| 563 | o >= 17 && n.supportedLanguages && Fa.preencode(d, n.supportedLanguages), | |
| 563 | o >= 17 && n.supportedLanguages && Oa.preencode(d, n.supportedLanguages), | |
| 564 | 564 | o >= 19 && n.blindPeers && Y.preencode(d, n.blindPeers)) |
| 565 | 565 | }, |
| 566 | 566 | encode(d, n) { |
| … | … | @@ -572,18 +572,18 @@ const n = { |
| 572 | 572 | (o >= 19 && n.blindPeers ? 16 : 0) |
| 573 | 573 | ;(e.uint.encode(d, c), |
| 574 | 574 | n.title && e.string.encode(d, n.title), |
| 575 | n.avatar && La.encode(d, n.avatar), | |
| 575 | n.avatar && Va.encode(d, n.avatar), | |
| 576 | 576 | n.description && e.string.encode(d, n.description), |
| 577 | o >= 17 && n.supportedLanguages && Fa.encode(d, n.supportedLanguages), | |
| 577 | o >= 17 && n.supportedLanguages && Oa.encode(d, n.supportedLanguages), | |
| 578 | 578 | o >= 19 && n.blindPeers && Y.encode(d, n.blindPeers)) |
| 579 | 579 | }, |
| 580 | 580 | decode(d) { |
| 581 | 581 | const n = e.uint.decode(d) |
| 582 | 582 | return { |
| 583 | 583 | title: 1 & n ? e.string.decode(d) : null, |
| 584 | avatar: 2 & n ? La.decode(d) : null, | |
| 584 | avatar: 2 & n ? Va.decode(d) : null, | |
| 585 | 585 | description: 4 & n ? e.string.decode(d) : null, |
| 586 | supportedLanguages: o >= 17 && 8 & n ? Fa.decode(d) : null, | |
| 586 | supportedLanguages: o >= 17 && 8 & n ? Oa.decode(d) : null, | |
| 587 | 587 | blindPeers: o >= 19 && 16 & n ? Y.decode(d) : null, |
| 588 | 588 | } |
| 589 | 589 | }, |
| … | … | @@ -643,7 +643,7 @@ const n = { |
| 643 | 643 | ;(e.fixed32.preencode(d, o.key), |
| 644 | 644 | e.fixed32.preencode(d, o.memberKey), |
| 645 | 645 | te.preencode(d, o.status), |
| 646 | qa.preencode(d, o.profile), | |
| 646 | Na.preencode(d, o.profile), | |
| 647 | 647 | d.end++, |
| 648 | 648 | o.invitation && ie.preencode(d, o.invitation)) |
| 649 | 649 | }, |
| … | … | @@ -652,7 +652,7 @@ const n = { |
| 652 | 652 | ;(e.fixed32.encode(d, o.key), |
| 653 | 653 | e.fixed32.encode(d, o.memberKey), |
| 654 | 654 | te.encode(d, o.status), |
| 655 | qa.encode(d, o.profile), | |
| 655 | Na.encode(d, o.profile), | |
| 656 | 656 | e.uint.encode(d, n), |
| 657 | 657 | o.invitation && ie.encode(d, o.invitation)) |
| 658 | 658 | }, |
| … | … | @@ -660,7 +660,7 @@ const n = { |
| 660 | 660 | key: e.fixed32.decode(d), |
| 661 | 661 | memberKey: e.fixed32.decode(d), |
| 662 | 662 | status: te.decode(d), |
| 663 | profile: qa.decode(d), | |
| 663 | profile: Na.decode(d), | |
| 664 | 664 | invitation: 1 & e.uint.decode(d) ? ie.decode(d) : null, |
| 665 | 665 | }), |
| 666 | 666 | }, |
| … | … | @@ -670,7 +670,7 @@ const n = { |
| 670 | 670 | d.end++, |
| 671 | 671 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 672 | 672 | o.displayName && e.string.preencode(d, o.displayName), |
| 673 | o.avatar && Ba.preencode(d, o.avatar), | |
| 673 | o.avatar && Ua.preencode(d, o.avatar), | |
| 674 | 674 | o.username && e.string.preencode(d, o.username)) |
| 675 | 675 | }, |
| 676 | 676 | encode(d, o) { |
| … | … | @@ -680,7 +680,7 @@ const n = { |
| 680 | 680 | e.uint.encode(d, n), |
| 681 | 681 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 682 | 682 | o.displayName && e.string.encode(d, o.displayName), |
| 683 | o.avatar && Ba.encode(d, o.avatar), | |
| 683 | o.avatar && Ua.encode(d, o.avatar), | |
| 684 | 684 | o.username && e.string.encode(d, o.username)) |
| 685 | 685 | }, |
| 686 | 686 | decode(d) { |
| … | … | @@ -690,12 +690,12 @@ const n = { |
| 690 | 690 | timestamp: o, |
| 691 | 691 | mailbox: 1 & n ? e.fixed32.decode(d) : null, |
| 692 | 692 | displayName: 2 & n ? e.string.decode(d) : null, |
| 693 | avatar: 4 & n ? Ba.decode(d) : null, | |
| 693 | avatar: 4 & n ? Ua.decode(d) : null, | |
| 694 | 694 | username: 8 & n ? e.string.decode(d) : null, |
| 695 | 695 | } |
| 696 | 696 | }, |
| 697 | 697 | }, |
| 698 | le = { | |
| 698 | pe = { | |
| 699 | 699 | preencode(d, n) { |
| 700 | 700 | ;(d.end++, |
| 701 | 701 | n.swarmKey && e.fixed32.preencode(d, n.swarmKey), |
| … | … | @@ -723,24 +723,24 @@ const n = { |
| 723 | 723 | } |
| 724 | 724 | }, |
| 725 | 725 | }, |
| 726 | pe = e.frame(se), | |
| 726 | le = e.frame(se), | |
| 727 | 727 | ue = { |
| 728 | 728 | preencode(e, d) { |
| 729 | ;(pe.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 729 | ;(le.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 730 | 730 | }, |
| 731 | 731 | encode(e, d) { |
| 732 | ;(pe.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 732 | ;(le.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 733 | 733 | }, |
| 734 | decode: (e) => ({ profile: pe.decode(e), attestation: ce.decode(e) }), | |
| 734 | decode: (e) => ({ profile: le.decode(e), attestation: ce.decode(e) }), | |
| 735 | 735 | }, |
| 736 | 736 | fe = { |
| 737 | 737 | preencode(e, d) { |
| 738 | ;(Ea.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 738 | ;(Ja.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 739 | 739 | }, |
| 740 | 740 | encode(e, d) { |
| 741 | ;(Ea.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 741 | ;(Ja.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 742 | 742 | }, |
| 743 | decode: (e) => ({ profile: Ea.decode(e), attestation: ce.decode(e) }), | |
| 743 | decode: (e) => ({ profile: Ja.decode(e), attestation: ce.decode(e) }), | |
| 744 | 744 | }, |
| 745 | 745 | me = { |
| 746 | 746 | preencode(d, o) { |
| … | … | @@ -1006,7 +1006,7 @@ const n = { |
| 1006 | 1006 | d.room && We.preencode(e, d.room), |
| 1007 | 1007 | d.identity && ze.preencode(e, d.identity), |
| 1008 | 1008 | d.contact && He.preencode(e, d.contact), |
| 1009 | o >= 9 && d.readonly && Va.preencode(e, d.readonly), | |
| 1009 | o >= 9 && d.readonly && Wa.preencode(e, d.readonly), | |
| 1010 | 1010 | o >= 17 && d.additionalNodes && Ge.preencode(e, d.additionalNodes), |
| 1011 | 1011 | o >= 29 && d.buildType && vi.preencode(e, d.buildType)) |
| 1012 | 1012 | }, |
| … | … | @@ -1022,7 +1022,7 @@ const n = { |
| 1022 | 1022 | n.room && We.encode(d, n.room), |
| 1023 | 1023 | n.identity && ze.encode(d, n.identity), |
| 1024 | 1024 | n.contact && He.encode(d, n.contact), |
| 1025 | o >= 9 && n.readonly && Va.encode(d, n.readonly), | |
| 1025 | o >= 9 && n.readonly && Wa.encode(d, n.readonly), | |
| 1026 | 1026 | o >= 17 && n.additionalNodes && Ge.encode(d, n.additionalNodes), |
| 1027 | 1027 | o >= 29 && n.buildType && vi.encode(d, n.buildType)) |
| 1028 | 1028 | }, |
| … | … | @@ -1032,7 +1032,7 @@ const n = { |
| 1032 | 1032 | room: 1 & n ? We.decode(d) : null, |
| 1033 | 1033 | identity: 2 & n ? ze.decode(d) : null, |
| 1034 | 1034 | contact: 4 & n ? He.decode(d) : null, |
| 1035 | readonly: o >= 9 && 8 & n ? Va.decode(d) : null, | |
| 1035 | readonly: o >= 9 && 8 & n ? Wa.decode(d) : null, | |
| 1036 | 1036 | additionalNodes: o >= 17 && 16 & n ? Ge.decode(d) : null, |
| 1037 | 1037 | buildType: o >= 29 && 32 & n ? vi.decode(d) : null, |
| 1038 | 1038 | } |
| … | … | @@ -1051,13 +1051,13 @@ const n = { |
| 1051 | 1051 | Ze = _, |
| 1052 | 1052 | $e = { |
| 1053 | 1053 | preencode(e, d) { |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && Oa.preencode(e, d.profile)) | |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && za.preencode(e, d.profile)) | |
| 1055 | 1055 | }, |
| 1056 | 1056 | encode(d, o) { |
| 1057 | 1057 | const n = o.profile ? 1 : 0 |
| 1058 | ;(Ze.encode(d, o.header), e.uint.encode(d, n), o.profile && Oa.encode(d, o.profile)) | |
| 1058 | ;(Ze.encode(d, o.header), e.uint.encode(d, n), o.profile && za.encode(d, o.profile)) | |
| 1059 | 1059 | }, |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? Oa.decode(d) : null }), | |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? za.decode(d) : null }), | |
| 1061 | 1061 | }, |
| 1062 | 1062 | _e = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({}) }, |
| 1063 | 1063 | ed = _e, |
| … | … | @@ -1110,8 +1110,8 @@ const n = { |
| 1110 | 1110 | decode: (d) => ({ header: td.decode(d), deviceKey: e.fixed32.decode(d) }), |
| 1111 | 1111 | }, |
| 1112 | 1112 | ad = e.frame(C), |
| 1113 | sd = pe, | |
| 1114 | ld = { | |
| 1113 | sd = le, | |
| 1114 | pd = { | |
| 1115 | 1115 | preencode(d, o) { |
| 1116 | 1116 | ;(e.fixed32.preencode(d, o.key), ad.preencode(d, o.status), sd.preencode(d, o.profile)) |
| 1117 | 1117 | }, |
| … | … | @@ -1120,29 +1120,29 @@ const n = { |
| 1120 | 1120 | }, |
| 1121 | 1121 | decode: (d) => ({ key: e.fixed32.decode(d), status: ad.decode(d), profile: sd.decode(d) }), |
| 1122 | 1122 | }, |
| 1123 | pd = ad, | |
| 1124 | ud = pe, | |
| 1123 | ld = ad, | |
| 1124 | ud = le, | |
| 1125 | 1125 | fd = { |
| 1126 | 1126 | preencode(d, o) { |
| 1127 | 1127 | ;(e.fixed32.preencode(d, o.key), |
| 1128 | pd.preencode(d, o.status), | |
| 1128 | ld.preencode(d, o.status), | |
| 1129 | 1129 | ud.preencode(d, o.profile), |
| 1130 | 1130 | d.end++, |
| 1131 | o.proofs && Na.preencode(d, o.proofs)) | |
| 1131 | o.proofs && Ha.preencode(d, o.proofs)) | |
| 1132 | 1132 | }, |
| 1133 | 1133 | encode(d, o) { |
| 1134 | 1134 | const n = o.proofs ? 1 : 0 |
| 1135 | 1135 | ;(e.fixed32.encode(d, o.key), |
| 1136 | pd.encode(d, o.status), | |
| 1136 | ld.encode(d, o.status), | |
| 1137 | 1137 | ud.encode(d, o.profile), |
| 1138 | 1138 | e.uint.encode(d, n), |
| 1139 | o.proofs && Na.encode(d, o.proofs)) | |
| 1139 | o.proofs && Ha.encode(d, o.proofs)) | |
| 1140 | 1140 | }, |
| 1141 | 1141 | decode: (d) => ({ |
| 1142 | 1142 | key: e.fixed32.decode(d), |
| 1143 | status: pd.decode(d), | |
| 1143 | status: ld.decode(d), | |
| 1144 | 1144 | profile: ud.decode(d), |
| 1145 | proofs: 1 & e.uint.decode(d) ? Na.decode(d) : null, | |
| 1145 | proofs: 1 & e.uint.decode(d) ? Ha.decode(d) : null, | |
| 1146 | 1146 | }), |
| 1147 | 1147 | }, |
| 1148 | 1148 | md = { |
| … | … | @@ -1281,8 +1281,8 @@ const n = { |
| 1281 | 1281 | n.memberJoined && Dd.preencode(d, n.memberJoined), |
| 1282 | 1282 | n.memberLeft && Cd.preencode(d, n.memberLeft), |
| 1283 | 1283 | n.titleChanged && Sd.preencode(d, n.titleChanged), |
| 1284 | o >= 4 && n.memberRemoved && Ua.preencode(d, n.memberRemoved), | |
| 1285 | o >= 27 && n.locationShared && Ja.preencode(d, n.locationShared)) | |
| 1284 | o >= 4 && n.memberRemoved && Ga.preencode(d, n.memberRemoved), | |
| 1285 | o >= 27 && n.locationShared && Qa.preencode(d, n.locationShared)) | |
| 1286 | 1286 | }, |
| 1287 | 1287 | encode(d, n) { |
| 1288 | 1288 | const c = |
| … | … | @@ -1300,8 +1300,8 @@ const n = { |
| 1300 | 1300 | n.memberJoined && Dd.encode(d, n.memberJoined), |
| 1301 | 1301 | n.memberLeft && Cd.encode(d, n.memberLeft), |
| 1302 | 1302 | n.titleChanged && Sd.encode(d, n.titleChanged), |
| 1303 | o >= 4 && n.memberRemoved && Ua.encode(d, n.memberRemoved), | |
| 1304 | o >= 27 && n.locationShared && Ja.encode(d, n.locationShared)) | |
| 1303 | o >= 4 && n.memberRemoved && Ga.encode(d, n.memberRemoved), | |
| 1304 | o >= 27 && n.locationShared && Qa.encode(d, n.locationShared)) | |
| 1305 | 1305 | }, |
| 1306 | 1306 | decode(d) { |
| 1307 | 1307 | const n = e.uint.decode(d) |
| … | … | @@ -1314,14 +1314,14 @@ const n = { |
| 1314 | 1314 | callMissed: !!(32 & n), |
| 1315 | 1315 | roomAvatarChanged: o >= 4 && !!(64 & n), |
| 1316 | 1316 | invitationCreated: o >= 4 && !!(128 & n), |
| 1317 | memberRemoved: o >= 4 && 256 & n ? Ua.decode(d) : null, | |
| 1318 | locationShared: o >= 27 && 512 & n ? Ja.decode(d) : null, | |
| 1317 | memberRemoved: o >= 4 && 256 & n ? Ga.decode(d) : null, | |
| 1318 | locationShared: o >= 27 && 512 & n ? Qa.decode(d) : null, | |
| 1319 | 1319 | } |
| 1320 | 1320 | }, |
| 1321 | 1321 | }, |
| 1322 | 1322 | jd = { |
| 1323 | 1323 | preencode(e, d) { |
| 1324 | ;(e.end++, o >= 27 && d.locationShared && Wa.preencode(e, d.locationShared)) | |
| 1324 | ;(e.end++, o >= 27 && d.locationShared && Xa.preencode(e, d.locationShared)) | |
| 1325 | 1325 | }, |
| 1326 | 1326 | encode(d, n) { |
| 1327 | 1327 | const c = |
| … | … | @@ -1329,7 +1329,7 @@ const n = { |
| 1329 | 1329 | (n.callHangup ? 2 : 0) | |
| 1330 | 1330 | (n.callMissed ? 4 : 0) | |
| 1331 | 1331 | (o >= 27 && n.locationShared ? 8 : 0) |
| 1332 | ;(e.uint.encode(d, c), o >= 27 && n.locationShared && Wa.encode(d, n.locationShared)) | |
| 1332 | ;(e.uint.encode(d, c), o >= 27 && n.locationShared && Xa.encode(d, n.locationShared)) | |
| 1333 | 1333 | }, |
| 1334 | 1334 | decode(d) { |
| 1335 | 1335 | const n = e.uint.decode(d) |
| … | … | @@ -1337,7 +1337,7 @@ const n = { |
| 1337 | 1337 | callStarted: !!(1 & n), |
| 1338 | 1338 | callHangup: !!(2 & n), |
| 1339 | 1339 | callMissed: !!(4 & n), |
| 1340 | locationShared: o >= 27 && 8 & n ? Wa.decode(d) : null, | |
| 1340 | locationShared: o >= 27 && 8 & n ? Xa.decode(d) : null, | |
| 1341 | 1341 | } |
| 1342 | 1342 | }, |
| 1343 | 1343 | }, |
| … | … | @@ -1456,7 +1456,7 @@ const n = { |
| 1456 | 1456 | n.emoji && Zd.preencode(d, n.emoji), |
| 1457 | 1457 | n.codeBlock && $d.preencode(d, n.codeBlock), |
| 1458 | 1458 | n.strike && _d.preencode(d, n.strike), |
| 1459 | o >= 17 && n.translation && za.preencode(d, n.translation)) | |
| 1459 | o >= 17 && n.translation && Ya.preencode(d, n.translation)) | |
| 1460 | 1460 | }, |
| 1461 | 1461 | encode(d, n) { |
| 1462 | 1462 | const c = |
| … | … | @@ -1480,7 +1480,7 @@ const n = { |
| 1480 | 1480 | n.emoji && Zd.encode(d, n.emoji), |
| 1481 | 1481 | n.codeBlock && $d.encode(d, n.codeBlock), |
| 1482 | 1482 | n.strike && _d.encode(d, n.strike), |
| 1483 | o >= 17 && n.translation && za.encode(d, n.translation)) | |
| 1483 | o >= 17 && n.translation && Ya.encode(d, n.translation)) | |
| 1484 | 1484 | }, |
| 1485 | 1485 | decode(d) { |
| 1486 | 1486 | const n = e.uint.decode(d) |
| … | … | @@ -1494,7 +1494,7 @@ const n = { |
| 1494 | 1494 | emoji: 64 & n ? Zd.decode(d) : null, |
| 1495 | 1495 | codeBlock: 128 & n ? $d.decode(d) : null, |
| 1496 | 1496 | strike: 256 & n ? _d.decode(d) : null, |
| 1497 | translation: o >= 17 && 512 & n ? za.decode(d) : null, | |
| 1497 | translation: o >= 17 && 512 & n ? Ya.decode(d) : null, | |
| 1498 | 1498 | } |
| 1499 | 1499 | }, |
| 1500 | 1500 | }, |
| … | … | @@ -1580,13 +1580,13 @@ const n = { |
| 1580 | 1580 | }, |
| 1581 | 1581 | }, |
| 1582 | 1582 | so = oo, |
| 1583 | lo = no, | |
| 1584 | po = { | |
| 1583 | po = no, | |
| 1584 | lo = { | |
| 1585 | 1585 | preencode(d, o) { |
| 1586 | 1586 | ;(d.end++, |
| 1587 | 1587 | o.text && e.string.preencode(d, o.text), |
| 1588 | 1588 | o.files && so.preencode(d, o.files), |
| 1589 | o.display && lo.preencode(d, o.display), | |
| 1589 | o.display && po.preencode(d, o.display), | |
| 1590 | 1590 | o.replyTo && c.preencode(d, o.replyTo), |
| 1591 | 1591 | o.parent && c.preencode(d, o.parent)) |
| 1592 | 1592 | }, |
| … | … | @@ -1601,7 +1601,7 @@ const n = { |
| 1601 | 1601 | ;(e.uint.encode(d, r), |
| 1602 | 1602 | n.text && e.string.encode(d, n.text), |
| 1603 | 1603 | n.files && so.encode(d, n.files), |
| 1604 | n.display && lo.encode(d, n.display), | |
| 1604 | n.display && po.encode(d, n.display), | |
| 1605 | 1605 | n.replyTo && c.encode(d, n.replyTo), |
| 1606 | 1606 | n.parent && c.encode(d, n.parent)) |
| 1607 | 1607 | }, |
| … | … | @@ -1610,7 +1610,7 @@ const n = { |
| 1610 | 1610 | return { |
| 1611 | 1611 | text: 1 & n ? e.string.decode(d) : null, |
| 1612 | 1612 | files: 2 & n ? so.decode(d) : null, |
| 1613 | display: 4 & n ? lo.decode(d) : null, | |
| 1613 | display: 4 & n ? po.decode(d) : null, | |
| 1614 | 1614 | replyTo: 8 & n ? c.decode(d) : null, |
| 1615 | 1615 | parent: 16 & n ? c.decode(d) : null, |
| 1616 | 1616 | forwarded: o >= 27 && !!(32 & n), |
| … | … | @@ -1714,7 +1714,7 @@ const n = { |
| 1714 | 1714 | }, |
| 1715 | 1715 | }, |
| 1716 | 1716 | go = bo, |
| 1717 | Ko = e.frame(po), | |
| 1717 | Ko = e.frame(lo), | |
| 1718 | 1718 | ho = vo, |
| 1719 | 1719 | wo = { |
| 1720 | 1720 | preencode(d, o) { |
| … | … | @@ -1895,19 +1895,19 @@ const n = { |
| 1895 | 1895 | ;(e.fixed32.preencode(d, o.memberKey), |
| 1896 | 1896 | e.string.preencode(d, o.displayName), |
| 1897 | 1897 | d.end++, |
| 1898 | o.avatar && Ha.preencode(d, o.avatar)) | |
| 1898 | o.avatar && Za.preencode(d, o.avatar)) | |
| 1899 | 1899 | }, |
| 1900 | 1900 | encode(d, o) { |
| 1901 | 1901 | const n = o.avatar ? 1 : 0 |
| 1902 | 1902 | ;(e.fixed32.encode(d, o.memberKey), |
| 1903 | 1903 | e.string.encode(d, o.displayName), |
| 1904 | 1904 | e.uint.encode(d, n), |
| 1905 | o.avatar && Ha.encode(d, o.avatar)) | |
| 1905 | o.avatar && Za.encode(d, o.avatar)) | |
| 1906 | 1906 | }, |
| 1907 | 1907 | decode: (d) => ({ |
| 1908 | 1908 | memberKey: e.fixed32.decode(d), |
| 1909 | 1909 | displayName: e.string.decode(d), |
| 1910 | avatar: 1 & e.uint.decode(d) ? Ha.decode(d) : null, | |
| 1910 | avatar: 1 & e.uint.decode(d) ? Za.decode(d) : null, | |
| 1911 | 1911 | }), |
| 1912 | 1912 | }, |
| 1913 | 1913 | Ho = { |
| … | … | @@ -2023,7 +2023,7 @@ const n = { |
| 2023 | 2023 | sn = { |
| 2024 | 2024 | preencode(d, o) { |
| 2025 | 2025 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2026 | Ga.preencode(d, o.status), | |
| 2026 | $a.preencode(d, o.status), | |
| 2027 | 2027 | d.end++, |
| 2028 | 2028 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2029 | 2029 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2031,14 +2031,14 @@ const n = { |
| 2031 | 2031 | encode(d, o) { |
| 2032 | 2032 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2033 | 2033 | ;(e.fixed32.encode(d, o.memberKey), |
| 2034 | Ga.encode(d, o.status), | |
| 2034 | $a.encode(d, o.status), | |
| 2035 | 2035 | e.uint.encode(d, n), |
| 2036 | 2036 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2037 | 2037 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| 2038 | 2038 | }, |
| 2039 | 2039 | decode(d) { |
| 2040 | 2040 | const o = e.fixed32.decode(d), |
| 2041 | n = Ga.decode(d), | |
| 2041 | n = $a.decode(d), | |
| 2042 | 2042 | c = e.uint.decode(d) |
| 2043 | 2043 | return { |
| 2044 | 2044 | memberKey: o, |
| … | … | @@ -2048,7 +2048,7 @@ const n = { |
| 2048 | 2048 | } |
| 2049 | 2049 | }, |
| 2050 | 2050 | }, |
| 2051 | ln = { | |
| 2051 | pn = { | |
| 2052 | 2052 | preencode(d, o) { |
| 2053 | 2053 | ;(e.fixed32.preencode(d, o.roomKey), |
| 2054 | 2054 | e.buffer.preencode(d, o.encryptionKey), |
| … | … | @@ -2071,16 +2071,16 @@ const n = { |
| 2071 | 2071 | fastForwardTo: e.fixed32.decode(d), |
| 2072 | 2072 | }), |
| 2073 | 2073 | }, |
| 2074 | pn = e.array(e.frame(ln)), | |
| 2074 | ln = e.array(e.frame(pn)), | |
| 2075 | 2075 | un = Y, |
| 2076 | 2076 | fn = { |
| 2077 | 2077 | preencode(e, d) { |
| 2078 | ;(pn.preencode(e, d.sharedRooms), un.preencode(e, d.blockedContacts)) | |
| 2078 | ;(ln.preencode(e, d.sharedRooms), un.preencode(e, d.blockedContacts)) | |
| 2079 | 2079 | }, |
| 2080 | 2080 | encode(e, d) { |
| 2081 | ;(pn.encode(e, d.sharedRooms), un.encode(e, d.blockedContacts)) | |
| 2081 | ;(ln.encode(e, d.sharedRooms), un.encode(e, d.blockedContacts)) | |
| 2082 | 2082 | }, |
| 2083 | decode: (e) => ({ sharedRooms: pn.decode(e), blockedContacts: un.decode(e) }), | |
| 2083 | decode: (e) => ({ sharedRooms: ln.decode(e), blockedContacts: un.decode(e) }), | |
| 2084 | 2084 | }, |
| 2085 | 2085 | mn = _o, |
| 2086 | 2086 | yn = { |
| … | … | @@ -2167,17 +2167,17 @@ const n = { |
| 2167 | 2167 | i = e.fixed32.decode(d), |
| 2168 | 2168 | a = t.decode(d), |
| 2169 | 2169 | s = n.decode(d), |
| 2170 | l = n.decode(d), | |
| 2171 | p = e.uint.decode(d) | |
| 2170 | p = n.decode(d), | |
| 2171 | l = e.uint.decode(d) | |
| 2172 | 2172 | return { |
| 2173 | 2173 | id: c, |
| 2174 | 2174 | invitationSeed: r, |
| 2175 | 2175 | mailbox: i, |
| 2176 | 2176 | responseKeyPair: a, |
| 2177 | 2177 | initiator: s, |
| 2178 | inviter: l, | |
| 2179 | identity: 1 & p ? gn.decode(d) : null, | |
| 2180 | buildType: o >= 29 && 2 & p ? vi.decode(d) : null, | |
| 2178 | inviter: p, | |
| 2179 | identity: 1 & l ? gn.decode(d) : null, | |
| 2180 | buildType: o >= 29 && 2 & l ? vi.decode(d) : null, | |
| 2181 | 2181 | } |
| 2182 | 2182 | }, |
| 2183 | 2183 | }, |
| … | … | @@ -2253,7 +2253,8 @@ const n = { |
| 2253 | 2253 | (n.isFullyMuted ? 2 : 0) | |
| 2254 | 2254 | (n.isMentionsOnlyMuted ? 4 : 0) | |
| 2255 | 2255 | (o >= 14 && n.isReadOnly ? 8 : 0) | |
| 2256 | (o >= 27 && n.isFavorite ? 16 : 0) | |
| 2256 | (o >= 27 && n.isFavorite ? 16 : 0) | | |
| 2257 | (o >= 31 && n.isUnread ? 32 : 0) | |
| 2257 | 2258 | e.uint.encode(d, c) |
| 2258 | 2259 | }, |
| 2259 | 2260 | decode(d) { |
| … | … | @@ -2264,6 +2265,7 @@ const n = { |
| 2264 | 2265 | isMentionsOnlyMuted: !!(4 & n), |
| 2265 | 2266 | isReadOnly: o >= 14 && !!(8 & n), |
| 2266 | 2267 | isFavorite: o >= 27 && !!(16 & n), |
| 2268 | isUnread: o >= 31 && !!(32 & n), | |
| 2267 | 2269 | } |
| 2268 | 2270 | }, |
| 2269 | 2271 | }, |
| … | … | @@ -2415,7 +2417,7 @@ const n = { |
| 2415 | 2417 | preencode(d, o) { |
| 2416 | 2418 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2417 | 2419 | e.uint.preencode(d, o.clock), |
| 2418 | Qa.preencode(d, o.status), | |
| 2420 | _a.preencode(d, o.status), | |
| 2419 | 2421 | d.end++, |
| 2420 | 2422 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2421 | 2423 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2424,7 +2426,7 @@ const n = { |
| 2424 | 2426 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2425 | 2427 | ;(e.fixed32.encode(d, o.memberKey), |
| 2426 | 2428 | e.uint.encode(d, o.clock), |
| 2427 | Qa.encode(d, o.status), | |
| 2429 | _a.encode(d, o.status), | |
| 2428 | 2430 | e.uint.encode(d, n), |
| 2429 | 2431 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2430 | 2432 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| … | … | @@ -2432,7 +2434,7 @@ const n = { |
| 2432 | 2434 | decode(d) { |
| 2433 | 2435 | const o = e.fixed32.decode(d), |
| 2434 | 2436 | n = e.uint.decode(d), |
| 2435 | c = Qa.decode(d), | |
| 2437 | c = _a.decode(d), | |
| 2436 | 2438 | r = e.uint.decode(d) |
| 2437 | 2439 | return { |
| 2438 | 2440 | memberKey: o, |
| … | … | @@ -2460,19 +2462,19 @@ const n = { |
| 2460 | 2462 | ;(Gn.preencode(d, o.header), |
| 2461 | 2463 | e.fixed32.preencode(d, o.memberKey), |
| 2462 | 2464 | e.uint.preencode(d, o.key), |
| 2463 | Xa.preencode(d, o.status)) | |
| 2465 | es.preencode(d, o.status)) | |
| 2464 | 2466 | }, |
| 2465 | 2467 | encode(d, o) { |
| 2466 | 2468 | ;(Gn.encode(d, o.header), |
| 2467 | 2469 | e.fixed32.encode(d, o.memberKey), |
| 2468 | 2470 | e.uint.encode(d, o.key), |
| 2469 | Xa.encode(d, o.status)) | |
| 2471 | es.encode(d, o.status)) | |
| 2470 | 2472 | }, |
| 2471 | 2473 | decode: (d) => ({ |
| 2472 | 2474 | header: Gn.decode(d), |
| 2473 | 2475 | memberKey: e.fixed32.decode(d), |
| 2474 | 2476 | key: e.uint.decode(d), |
| 2475 | status: Xa.decode(d), | |
| 2477 | status: es.decode(d), | |
| 2476 | 2478 | }), |
| 2477 | 2479 | }, |
| 2478 | 2480 | Xn = _, |
| … | … | @@ -2544,7 +2546,7 @@ const n = { |
| 2544 | 2546 | }, |
| 2545 | 2547 | decode: (e) => ({ body: dc.decode(e), attestation: ce.decode(e) }), |
| 2546 | 2548 | }, |
| 2547 | nc = pe, | |
| 2549 | nc = le, | |
| 2548 | 2550 | cc = e.frame(Zn), |
| 2549 | 2551 | rc = _n, |
| 2550 | 2552 | tc = { |
| … | … | @@ -2602,13 +2604,13 @@ const n = { |
| 2602 | 2604 | decode: (d) => ({ header: ic.decode(d), blindRequest: e.buffer.decode(d) }), |
| 2603 | 2605 | }, |
| 2604 | 2606 | sc = _, |
| 2605 | lc = cc, | |
| 2606 | pc = { | |
| 2607 | pc = cc, | |
| 2608 | lc = { | |
| 2607 | 2609 | preencode(d, n) { |
| 2608 | 2610 | ;(sc.preencode(d, n.header), |
| 2609 | 2611 | e.fixed32.preencode(d, n.memberKey), |
| 2610 | 2612 | e.uint.preencode(d, n.key), |
| 2611 | lc.preencode(d, n.status), | |
| 2613 | pc.preencode(d, n.status), | |
| 2612 | 2614 | d.end++, |
| 2613 | 2615 | o >= 15 && n.roomKey && e.fixed32.preencode(d, n.roomKey)) |
| 2614 | 2616 | }, |
| … | … | @@ -2617,7 +2619,7 @@ const n = { |
| 2617 | 2619 | ;(sc.encode(d, n.header), |
| 2618 | 2620 | e.fixed32.encode(d, n.memberKey), |
| 2619 | 2621 | e.uint.encode(d, n.key), |
| 2620 | lc.encode(d, n.status), | |
| 2622 | pc.encode(d, n.status), | |
| 2621 | 2623 | e.uint.encode(d, c), |
| 2622 | 2624 | o >= 15 && n.roomKey && e.fixed32.encode(d, n.roomKey)) |
| 2623 | 2625 | }, |
| … | … | @@ -2625,7 +2627,7 @@ const n = { |
| 2625 | 2627 | const n = sc.decode(d), |
| 2626 | 2628 | c = e.fixed32.decode(d), |
| 2627 | 2629 | r = e.uint.decode(d), |
| 2628 | t = lc.decode(d), | |
| 2630 | t = pc.decode(d), | |
| 2629 | 2631 | i = d.start < d.end ? e.uint.decode(d) : 0 |
| 2630 | 2632 | return { |
| 2631 | 2633 | header: n, |
| … | … | @@ -2825,10 +2827,15 @@ const n = { |
| 2825 | 2827 | d.end++, |
| 2826 | 2828 | n.entropy && e.buffer.preencode(d, n.entropy), |
| 2827 | 2829 | n.swap && Ac.preencode(d, n.swap), |
| 2828 | o >= 9 && n.swapV2 && Ya.preencode(d, n.swapV2)) | |
| 2830 | o >= 9 && n.swapV2 && ds.preencode(d, n.swapV2), | |
| 2831 | o >= 31 && n.proofShortenedAt && e.uint.preencode(d, n.proofShortenedAt)) | |
| 2829 | 2832 | }, |
| 2830 | 2833 | encode(d, n) { |
| 2831 | const c = (n.entropy ? 1 : 0) | (n.swap ? 2 : 0) | (o >= 9 && n.swapV2 ? 4 : 0) | |
| 2834 | const c = | |
| 2835 | (n.entropy ? 1 : 0) | | |
| 2836 | (n.swap ? 2 : 0) | | |
| 2837 | (o >= 9 && n.swapV2 ? 4 : 0) | | |
| 2838 | (o >= 31 && n.proofShortenedAt ? 8 : 0) | |
| 2832 | 2839 | ;(e.fixed32.encode(d, n.publicKey), |
| 2833 | 2840 | e.fixed32.encode(d, n.privateProfileKey), |
| 2834 | 2841 | t.encode(d, n.deviceKeyPair), |
| … | … | @@ -2837,7 +2844,8 @@ const n = { |
| 2837 | 2844 | e.uint.encode(d, c), |
| 2838 | 2845 | n.entropy && e.buffer.encode(d, n.entropy), |
| 2839 | 2846 | n.swap && Ac.encode(d, n.swap), |
| 2840 | o >= 9 && n.swapV2 && Ya.encode(d, n.swapV2)) | |
| 2847 | o >= 9 && n.swapV2 && ds.encode(d, n.swapV2), | |
| 2848 | o >= 31 && n.proofShortenedAt && e.uint.encode(d, n.proofShortenedAt)) | |
| 2841 | 2849 | }, |
| 2842 | 2850 | decode(d) { |
| 2843 | 2851 | const n = e.fixed32.decode(d), |
| … | … | @@ -2854,7 +2862,8 @@ const n = { |
| 2854 | 2862 | status: a, |
| 2855 | 2863 | entropy: 1 & s ? e.buffer.decode(d) : null, |
| 2856 | 2864 | swap: 2 & s ? Ac.decode(d) : null, |
| 2857 | swapV2: o >= 9 && 4 & s ? Ya.decode(d) : null, | |
| 2865 | swapV2: o >= 9 && 4 & s ? ds.decode(d) : null, | |
| 2866 | proofShortenedAt: o >= 31 && 8 & s ? e.uint.decode(d) : 0, | |
| 2858 | 2867 | } |
| 2859 | 2868 | }, |
| 2860 | 2869 | }, |
| … | … | @@ -3068,7 +3077,7 @@ const n = { |
| 3068 | 3077 | e.fixed32.preencode(d, n.memberKey), |
| 3069 | 3078 | d.end++, |
| 3070 | 3079 | n.message && e.string.preencode(d, n.message), |
| 3071 | o >= 6 && n.contactInfo && Za.preencode(d, n.contactInfo)) | |
| 3080 | o >= 6 && n.contactInfo && os.preencode(d, n.contactInfo)) | |
| 3072 | 3081 | }, |
| 3073 | 3082 | encode(d, n) { |
| 3074 | 3083 | const c = (n.message ? 1 : 0) | (o >= 6 && n.contactInfo ? 2 : 0) |
| … | … | @@ -3076,7 +3085,7 @@ const n = { |
| 3076 | 3085 | e.fixed32.encode(d, n.memberKey), |
| 3077 | 3086 | e.uint.encode(d, c), |
| 3078 | 3087 | n.message && e.string.encode(d, n.message), |
| 3079 | o >= 6 && n.contactInfo && Za.encode(d, n.contactInfo)) | |
| 3088 | o >= 6 && n.contactInfo && os.encode(d, n.contactInfo)) | |
| 3080 | 3089 | }, |
| 3081 | 3090 | decode(d) { |
| 3082 | 3091 | const n = e.fixed32.decode(d), |
| … | … | @@ -3086,7 +3095,7 @@ const n = { |
| 3086 | 3095 | roomKey: n, |
| 3087 | 3096 | memberKey: c, |
| 3088 | 3097 | message: 1 & r ? e.string.decode(d) : null, |
| 3089 | contactInfo: o >= 6 && 2 & r ? Za.decode(d) : null, | |
| 3098 | contactInfo: o >= 6 && 2 & r ? os.decode(d) : null, | |
| 3090 | 3099 | } |
| 3091 | 3100 | }, |
| 3092 | 3101 | }, |
| … | … | @@ -3238,14 +3247,14 @@ const n = { |
| 3238 | 3247 | ir = mo, |
| 3239 | 3248 | ar = e.frame(rr), |
| 3240 | 3249 | sr = kc, |
| 3241 | lr = e.frame(cr), | |
| 3242 | pr = e.frame(ae), | |
| 3250 | pr = e.frame(cr), | |
| 3251 | lr = e.frame(ae), | |
| 3243 | 3252 | ur = e.frame(fd), |
| 3244 | 3253 | fr = Jo, |
| 3245 | 3254 | mr = _o, |
| 3246 | 3255 | yr = e.frame(wo), |
| 3247 | 3256 | br = Y, |
| 3248 | xr = e.frame(ld), | |
| 3257 | xr = e.frame(pd), | |
| 3249 | 3258 | vr = Sn, |
| 3250 | 3259 | kr = { |
| 3251 | 3260 | preencode(d, n) { |
| … | … | @@ -3271,19 +3280,19 @@ const n = { |
| 3271 | 3280 | e.uint.preencode(d, n.length), |
| 3272 | 3281 | e.fixed32.preencode(d, n.seed), |
| 3273 | 3282 | sr.preencode(d, n.capabilities), |
| 3274 | lr.preencode(d, n.status), | |
| 3283 | pr.preencode(d, n.status), | |
| 3275 | 3284 | e.uint.preencode(d, c), |
| 3276 | n.selfDevice && pr.preencode(d, n.selfDevice), | |
| 3285 | n.selfDevice && lr.preencode(d, n.selfDevice), | |
| 3277 | 3286 | n.selfMember && ur.preencode(d, n.selfMember), |
| 3278 | 3287 | n.config && fr.preencode(d, n.config), |
| 3279 | 3288 | n.identity && mr.preencode(d, n.identity), |
| 3280 | 3289 | n.lastMessage && yr.preencode(d, n.lastMessage), |
| 3281 | 3290 | n.dm && br.preencode(d, n.dm), |
| 3282 | o >= 19 && n.readLengths && $a.preencode(d, n.readLengths), | |
| 3291 | o >= 19 && n.readLengths && ns.preencode(d, n.readLengths), | |
| 3283 | 3292 | o >= 19 && n.lastMember && xr.preencode(d, n.lastMember), |
| 3284 | 3293 | o >= 21 && n.version && e.uint.preencode(d, n.version), |
| 3285 | 3294 | o >= 27 && n.preferences && vr.preencode(d, n.preferences), |
| 3286 | o >= 28 && n.activeCall && _a.preencode(d, n.activeCall)) | |
| 3295 | o >= 28 && n.activeCall && cs.preencode(d, n.activeCall)) | |
| 3287 | 3296 | }, |
| 3288 | 3297 | encode(d, n) { |
| 3289 | 3298 | const c = |
| … | … | @@ -3308,19 +3317,19 @@ const n = { |
| 3308 | 3317 | e.uint.encode(d, n.length), |
| 3309 | 3318 | e.fixed32.encode(d, n.seed), |
| 3310 | 3319 | sr.encode(d, n.capabilities), |
| 3311 | lr.encode(d, n.status), | |
| 3320 | pr.encode(d, n.status), | |
| 3312 | 3321 | e.uint.encode(d, c), |
| 3313 | n.selfDevice && pr.encode(d, n.selfDevice), | |
| 3322 | n.selfDevice && lr.encode(d, n.selfDevice), | |
| 3314 | 3323 | n.selfMember && ur.encode(d, n.selfMember), |
| 3315 | 3324 | n.config && fr.encode(d, n.config), |
| 3316 | 3325 | n.identity && mr.encode(d, n.identity), |
| 3317 | 3326 | n.lastMessage && yr.encode(d, n.lastMessage), |
| 3318 | 3327 | n.dm && br.encode(d, n.dm), |
| 3319 | o >= 19 && n.readLengths && $a.encode(d, n.readLengths), | |
| 3328 | o >= 19 && n.readLengths && ns.encode(d, n.readLengths), | |
| 3320 | 3329 | o >= 19 && n.lastMember && xr.encode(d, n.lastMember), |
| 3321 | 3330 | o >= 21 && n.version && e.uint.encode(d, n.version), |
| 3322 | 3331 | o >= 27 && n.preferences && vr.encode(d, n.preferences), |
| 3323 | o >= 28 && n.activeCall && _a.encode(d, n.activeCall)) | |
| 3332 | o >= 28 && n.activeCall && cs.encode(d, n.activeCall)) | |
| 3324 | 3333 | }, |
| 3325 | 3334 | decode(d) { |
| 3326 | 3335 | const n = e.fixed32.decode(d), |
| … | … | @@ -3330,10 +3339,10 @@ const n = { |
| 3330 | 3339 | i = ir.decode(d), |
| 3331 | 3340 | a = ar.decode(d), |
| 3332 | 3341 | s = e.uint.decode(d), |
| 3333 | l = e.uint.decode(d), | |
| 3334 | p = e.fixed32.decode(d), | |
| 3342 | p = e.uint.decode(d), | |
| 3343 | l = e.fixed32.decode(d), | |
| 3335 | 3344 | u = sr.decode(d), |
| 3336 | f = lr.decode(d), | |
| 3345 | f = pr.decode(d), | |
| 3337 | 3346 | m = e.uint.decode(d) |
| 3338 | 3347 | return { |
| 3339 | 3348 | roomKey: n, |
| … | … | @@ -3343,21 +3352,21 @@ const n = { |
| 3343 | 3352 | stats: i, |
| 3344 | 3353 | timestamps: a, |
| 3345 | 3354 | fork: s, |
| 3346 | length: l, | |
| 3347 | seed: p, | |
| 3355 | length: p, | |
| 3356 | seed: l, | |
| 3348 | 3357 | capabilities: u, |
| 3349 | 3358 | status: f, |
| 3350 | selfDevice: 1 & m ? pr.decode(d) : null, | |
| 3359 | selfDevice: 1 & m ? lr.decode(d) : null, | |
| 3351 | 3360 | selfMember: 2 & m ? ur.decode(d) : null, |
| 3352 | 3361 | config: 4 & m ? fr.decode(d) : null, |
| 3353 | 3362 | identity: 8 & m ? mr.decode(d) : null, |
| 3354 | 3363 | lastMessage: 16 & m ? yr.decode(d) : null, |
| 3355 | 3364 | dm: 32 & m ? br.decode(d) : null, |
| 3356 | readLengths: o >= 19 && 64 & m ? $a.decode(d) : null, | |
| 3365 | readLengths: o >= 19 && 64 & m ? ns.decode(d) : null, | |
| 3357 | 3366 | lastMember: o >= 19 && 128 & m ? xr.decode(d) : null, |
| 3358 | 3367 | version: o >= 21 && 256 & m ? e.uint.decode(d) : 0, |
| 3359 | 3368 | preferences: o >= 27 && 512 & m ? vr.decode(d) : null, |
| 3360 | activeCall: o >= 28 && 1024 & m ? _a.decode(d) : null, | |
| 3369 | activeCall: o >= 28 && 1024 & m ? cs.decode(d) : null, | |
| 3361 | 3370 | } |
| 3362 | 3371 | }, |
| 3363 | 3372 | }, |
| … | … | @@ -3402,7 +3411,7 @@ const n = { |
| 3402 | 3411 | } |
| 3403 | 3412 | }, |
| 3404 | 3413 | }, |
| 3405 | wr = pe, | |
| 3414 | wr = le, | |
| 3406 | 3415 | Rr = { |
| 3407 | 3416 | preencode(d, o) { |
| 3408 | 3417 | ;(e.fixed32.preencode(d, o.key), wr.preencode(d, o.profile)) |
| … | … | @@ -3412,7 +3421,7 @@ const n = { |
| 3412 | 3421 | }, |
| 3413 | 3422 | decode: (d) => ({ key: e.fixed32.decode(d), profile: wr.decode(d) }), |
| 3414 | 3423 | }, |
| 3415 | Pr = pr, | |
| 3424 | Pr = lr, | |
| 3416 | 3425 | Tr = { |
| 3417 | 3426 | preencode(d, o) { |
| 3418 | 3427 | ;(e.fixed32.preencode(d, o.roomKey), Pr.preencode(d, o.device)) |
| … | … | @@ -3467,7 +3476,7 @@ const n = { |
| 3467 | 3476 | ;(Dr.preencode(d, n.header), |
| 3468 | 3477 | c.preencode(d, n.oplog), |
| 3469 | 3478 | e.uint.preencode(d, n.index), |
| 3470 | es.preencode(d, n.preview), | |
| 3479 | rs.preencode(d, n.preview), | |
| 3471 | 3480 | d.end++, |
| 3472 | 3481 | o >= 12 && n.displayType && Qr.preencode(d, n.displayType)) |
| 3473 | 3482 | }, |
| … | … | @@ -3476,7 +3485,7 @@ const n = { |
| 3476 | 3485 | ;(Dr.encode(d, n.header), |
| 3477 | 3486 | c.encode(d, n.oplog), |
| 3478 | 3487 | e.uint.encode(d, n.index), |
| 3479 | es.encode(d, n.preview), | |
| 3488 | rs.encode(d, n.preview), | |
| 3480 | 3489 | e.uint.encode(d, r), |
| 3481 | 3490 | o >= 12 && n.displayType && Qr.encode(d, n.displayType)) |
| 3482 | 3491 | }, |
| … | … | @@ -3484,7 +3493,7 @@ const n = { |
| 3484 | 3493 | const n = Dr.decode(d), |
| 3485 | 3494 | r = c.decode(d), |
| 3486 | 3495 | t = e.uint.decode(d), |
| 3487 | i = es.decode(d), | |
| 3496 | i = rs.decode(d), | |
| 3488 | 3497 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 3489 | 3498 | return { |
| 3490 | 3499 | header: n, |
| … | … | @@ -3508,7 +3517,7 @@ const n = { |
| 3508 | 3517 | return { memberKey: o >= 4 && 1 & n ? e.fixed32.decode(d) : null } |
| 3509 | 3518 | }, |
| 3510 | 3519 | }, |
| 3511 | Ir = pe, | |
| 3520 | Ir = le, | |
| 3512 | 3521 | jr = { |
| 3513 | 3522 | preencode(e, d) { |
| 3514 | 3523 | ;(Ir.preencode(e, d.profile), ce.preencode(e, d.attestation)) |
| … | … | @@ -3868,15 +3877,15 @@ const n = { |
| 3868 | 3877 | }, |
| 3869 | 3878 | decode: (d) => ({ deviceKey: e.fixed32.decode(d), key: e.fixed32.decode(d) }), |
| 3870 | 3879 | }, |
| 3871 | lt = _, | |
| 3872 | pt = { | |
| 3880 | pt = _, | |
| 3881 | lt = { | |
| 3873 | 3882 | preencode(d, o) { |
| 3874 | ;(lt.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 3883 | ;(pt.preencode(d, o.header), e.fixed32.preencode(d, o.key)) | |
| 3875 | 3884 | }, |
| 3876 | 3885 | encode(d, o) { |
| 3877 | ;(lt.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 3886 | ;(pt.encode(d, o.header), e.fixed32.encode(d, o.key)) | |
| 3878 | 3887 | }, |
| 3879 | decode: (d) => ({ header: lt.decode(d), key: e.fixed32.decode(d) }), | |
| 3888 | decode: (d) => ({ header: pt.decode(d), key: e.fixed32.decode(d) }), | |
| 3880 | 3889 | }, |
| 3881 | 3890 | ut = _, |
| 3882 | 3891 | ft = { |
| … | … | @@ -4014,24 +4023,48 @@ const n = { |
| 4014 | 4023 | e.end++ |
| 4015 | 4024 | }, |
| 4016 | 4025 | encode(d, n) { |
| 4017 | const c = o >= 19 && n.disableReadReceipts ? 1 : 0 | |
| 4026 | const c = | |
| 4027 | (o >= 19 && n.disableReadReceipts ? 1 : 0) | (o >= 31 && n.stripAttachmentMetadata ? 2 : 0) | |
| 4018 | 4028 | e.uint.encode(d, c) |
| 4019 | 4029 | }, |
| 4020 | 4030 | decode(d) { |
| 4021 | 4031 | const n = e.uint.decode(d) |
| 4022 | return { disableReadReceipts: o >= 19 && !!(1 & n) } | |
| 4032 | return { | |
| 4033 | disableReadReceipts: o >= 19 && !!(1 & n), | |
| 4034 | stripAttachmentMetadata: o >= 31 && !!(2 & n), | |
| 4035 | } | |
| 4023 | 4036 | }, |
| 4024 | 4037 | }, |
| 4025 | Dt = { disableReadReceipts: "disableReadReceipts" }, | |
| 4038 | Dt = { | |
| 4039 | disableReadReceipts: "disableReadReceipts", | |
| 4040 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 4041 | }, | |
| 4026 | 4042 | Ct = { |
| 4027 | 4043 | preencode(e, d) { |
| 4028 | 4044 | e.end++ |
| 4029 | 4045 | }, |
| 4030 | 4046 | encode(d, o) { |
| 4031 | if ("disableReadReceipts" !== o) throw new Error("Unknown enum") | |
| 4032 | e.uint.encode(d, 1) | |
| 4047 | switch (o) { | |
| 4048 | case "disableReadReceipts": | |
| 4049 | e.uint.encode(d, 1) | |
| 4050 | break | |
| 4051 | case "stripAttachmentMetadata": | |
| 4052 | e.uint.encode(d, 2) | |
| 4053 | break | |
| 4054 | default: | |
| 4055 | throw new Error("Unknown enum") | |
| 4056 | } | |
| 4057 | }, | |
| 4058 | decode(d) { | |
| 4059 | switch (e.uint.decode(d)) { | |
| 4060 | case 1: | |
| 4061 | return "disableReadReceipts" | |
| 4062 | case 2: | |
| 4063 | return "stripAttachmentMetadata" | |
| 4064 | default: | |
| 4065 | return null | |
| 4066 | } | |
| 4033 | 4067 | }, |
| 4034 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 4035 | 4068 | }, |
| 4036 | 4069 | St = _, |
| 4037 | 4070 | It = e.frame(Mt), |
| … | … | @@ -4319,7 +4352,7 @@ const n = { |
| 4319 | 4352 | }), |
| 4320 | 4353 | }, |
| 4321 | 4354 | si = _, |
| 4322 | li = { | |
| 4355 | pi = { | |
| 4323 | 4356 | preencode(d, o) { |
| 4324 | 4357 | ;(si.preencode(d, o.header), |
| 4325 | 4358 | e.fixed32.preencode(d, o.callKey), |
| … | … | @@ -4334,7 +4367,7 @@ const n = { |
| 4334 | 4367 | streamKey: e.fixed32.decode(d), |
| 4335 | 4368 | }), |
| 4336 | 4369 | }, |
| 4337 | pi = { | |
| 4370 | li = { | |
| 4338 | 4371 | preencode(d, n) { |
| 4339 | 4372 | ;(e.fixed32.preencode(d, n.callKey), |
| 4340 | 4373 | e.buffer.preencode(d, n.encryptionKey), |
| … | … | @@ -4540,19 +4573,74 @@ const n = { |
| 4540 | 4573 | return { buildType: n, latestOfflineAbi: o >= 30 && 1 & c ? e.uint.decode(d) : 0 } |
| 4541 | 4574 | }, |
| 4542 | 4575 | }, |
| 4543 | Ri = wc, | |
| 4576 | Ri = _, | |
| 4544 | 4577 | Pi = { |
| 4578 | preencode(d, o) { | |
| 4579 | ;(Ri.preencode(d, o.header), | |
| 4580 | e.fixed32.preencode(d, o.deviceKey), | |
| 4581 | e.buffer.preencode(d, o.deviceProof), | |
| 4582 | e.buffer.preencode(d, o.writerProof)) | |
| 4583 | }, | |
| 4584 | encode(d, o) { | |
| 4585 | ;(Ri.encode(d, o.header), | |
| 4586 | e.fixed32.encode(d, o.deviceKey), | |
| 4587 | e.buffer.encode(d, o.deviceProof), | |
| 4588 | e.buffer.encode(d, o.writerProof)) | |
| 4589 | }, | |
| 4590 | decode: (d) => ({ | |
| 4591 | header: Ri.decode(d), | |
| 4592 | deviceKey: e.fixed32.decode(d), | |
| 4593 | deviceProof: e.buffer.decode(d), | |
| 4594 | writerProof: e.buffer.decode(d), | |
| 4595 | }), | |
| 4596 | }, | |
| 4597 | Ti = { | |
| 4598 | preencode(d, n) { | |
| 4599 | ;(d.end++, | |
| 4600 | o >= 31 && | |
| 4601 | n.otaResyncPrivateProfileBump && | |
| 4602 | e.uint.preencode(d, n.otaResyncPrivateProfileBump)) | |
| 4603 | }, | |
| 4604 | encode(d, n) { | |
| 4605 | const c = o >= 31 && n.otaResyncPrivateProfileBump ? 1 : 0 | |
| 4606 | ;(e.uint.encode(d, c), | |
| 4607 | o >= 31 && n.otaResyncPrivateProfileBump && e.uint.encode(d, n.otaResyncPrivateProfileBump)) | |
| 4608 | }, | |
| 4609 | decode(d) { | |
| 4610 | const n = e.uint.decode(d) | |
| 4611 | return { otaResyncPrivateProfileBump: o >= 31 && 1 & n ? e.uint.decode(d) : 0 } | |
| 4612 | }, | |
| 4613 | }, | |
| 4614 | Ai = { | |
| 4615 | preencode(d, o) { | |
| 4616 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 4617 | e.buffer.preencode(d, o.proof), | |
| 4618 | e.uint.preencode(d, o.createdAt)) | |
| 4619 | }, | |
| 4620 | encode(d, o) { | |
| 4621 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 4622 | e.buffer.encode(d, o.proof), | |
| 4623 | e.uint.encode(d, o.createdAt)) | |
| 4624 | }, | |
| 4625 | decode: (d) => ({ | |
| 4626 | deviceKey: e.fixed32.decode(d), | |
| 4627 | proof: e.buffer.decode(d), | |
| 4628 | createdAt: e.uint.decode(d), | |
| 4629 | }), | |
| 4630 | }, | |
| 4631 | Mi = wc, | |
| 4632 | Di = { | |
| 4545 | 4633 | preencode(d, n) { |
| 4546 | 4634 | ;(e.uint.preencode(d, n.priority), |
| 4547 | 4635 | d.end++, |
| 4548 | n.v3 && Ri.preencode(d, n.v3), | |
| 4636 | n.v3 && Mi.preencode(d, n.v3), | |
| 4549 | 4637 | o >= 5 && n.timestamp && e.uint.preencode(d, n.timestamp)) |
| 4550 | 4638 | }, |
| 4551 | 4639 | encode(d, n) { |
| 4552 | 4640 | const c = (n.v3 ? 1 : 0) | (o >= 3 && n.errored ? 2 : 0) | (o >= 5 && n.timestamp ? 4 : 0) |
| 4553 | 4641 | ;(e.uint.encode(d, n.priority), |
| 4554 | 4642 | e.uint.encode(d, c), |
| 4555 | n.v3 && Ri.encode(d, n.v3), | |
| 4643 | n.v3 && Mi.encode(d, n.v3), | |
| 4556 | 4644 | o >= 5 && n.timestamp && e.uint.encode(d, n.timestamp)) |
| 4557 | 4645 | }, |
| 4558 | 4646 | decode(d) { |
| … | … | @@ -4561,26 +4649,26 @@ const n = { |
| 4561 | 4649 | return { |
| 4562 | 4650 | roomKey: null, |
| 4563 | 4651 | priority: n, |
| 4564 | v3: 1 & c ? Ri.decode(d) : null, | |
| 4652 | v3: 1 & c ? Mi.decode(d) : null, | |
| 4565 | 4653 | errored: o >= 3 && !!(2 & c), |
| 4566 | 4654 | timestamp: o >= 5 && 4 & c ? e.uint.decode(d) : 0, |
| 4567 | 4655 | } |
| 4568 | 4656 | }, |
| 4569 | 4657 | }, |
| 4570 | Ti = Yo, | |
| 4571 | Ai = mo, | |
| 4572 | Mi = ar, | |
| 4573 | Di = kc, | |
| 4574 | Ci = lr, | |
| 4575 | Si = pr, | |
| 4576 | Ii = ur, | |
| 4577 | ji = Jo, | |
| 4578 | Li = _o, | |
| 4579 | Fi = yr, | |
| 4580 | qi = Y, | |
| 4581 | Bi = xr, | |
| 4582 | Ei = Sn, | |
| 4583 | Vi = { | |
| 4658 | Ci = Yo, | |
| 4659 | Si = mo, | |
| 4660 | Ii = ar, | |
| 4661 | ji = kc, | |
| 4662 | Li = pr, | |
| 4663 | Fi = lr, | |
| 4664 | qi = ur, | |
| 4665 | Bi = Jo, | |
| 4666 | Ei = _o, | |
| 4667 | Vi = yr, | |
| 4668 | Oi = Y, | |
| 4669 | Ni = xr, | |
| 4670 | Ui = Sn, | |
| 4671 | Ji = { | |
| 4584 | 4672 | preencode(d, n) { |
| 4585 | 4673 | const c = |
| 4586 | 4674 | (n.selfDevice ? 1 : 0) | |
| … | … | @@ -4596,26 +4684,26 @@ const n = { |
| 4596 | 4684 | (o >= 28 && n.activeCall ? 1024 : 0) |
| 4597 | 4685 | ;(e.fixed32.preencode(d, n.discoveryKey), |
| 4598 | 4686 | e.buffer.preencode(d, n.encryptionKey), |
| 4599 | Ti.preencode(d, n.digest), | |
| 4600 | Ai.preencode(d, n.stats), | |
| 4601 | Mi.preencode(d, n.timestamps), | |
| 4687 | Ci.preencode(d, n.digest), | |
| 4688 | Si.preencode(d, n.stats), | |
| 4689 | Ii.preencode(d, n.timestamps), | |
| 4602 | 4690 | e.uint.preencode(d, n.fork), |
| 4603 | 4691 | e.uint.preencode(d, n.length), |
| 4604 | 4692 | e.fixed32.preencode(d, n.seed), |
| 4605 | Di.preencode(d, n.capabilities), | |
| 4606 | Ci.preencode(d, n.status), | |
| 4693 | ji.preencode(d, n.capabilities), | |
| 4694 | Li.preencode(d, n.status), | |
| 4607 | 4695 | e.uint.preencode(d, c), |
| 4608 | n.selfDevice && Si.preencode(d, n.selfDevice), | |
| 4609 | n.selfMember && Ii.preencode(d, n.selfMember), | |
| 4610 | n.config && ji.preencode(d, n.config), | |
| 4611 | n.identity && Li.preencode(d, n.identity), | |
| 4612 | n.lastMessage && Fi.preencode(d, n.lastMessage), | |
| 4613 | n.dm && qi.preencode(d, n.dm), | |
| 4614 | o >= 19 && n.readLengths && ds.preencode(d, n.readLengths), | |
| 4615 | o >= 19 && n.lastMember && Bi.preencode(d, n.lastMember), | |
| 4696 | n.selfDevice && Fi.preencode(d, n.selfDevice), | |
| 4697 | n.selfMember && qi.preencode(d, n.selfMember), | |
| 4698 | n.config && Bi.preencode(d, n.config), | |
| 4699 | n.identity && Ei.preencode(d, n.identity), | |
| 4700 | n.lastMessage && Vi.preencode(d, n.lastMessage), | |
| 4701 | n.dm && Oi.preencode(d, n.dm), | |
| 4702 | o >= 19 && n.readLengths && ts.preencode(d, n.readLengths), | |
| 4703 | o >= 19 && n.lastMember && Ni.preencode(d, n.lastMember), | |
| 4616 | 4704 | o >= 21 && n.version && e.uint.preencode(d, n.version), |
| 4617 | o >= 27 && n.preferences && Ei.preencode(d, n.preferences), | |
| 4618 | o >= 28 && n.activeCall && os.preencode(d, n.activeCall)) | |
| 4705 | o >= 27 && n.preferences && Ui.preencode(d, n.preferences), | |
| 4706 | o >= 28 && n.activeCall && is.preencode(d, n.activeCall)) | |
| 4619 | 4707 | }, |
| 4620 | 4708 | encode(d, n) { |
| 4621 | 4709 | const c = |
| … | … | @@ -4632,38 +4720,38 @@ const n = { |
| 4632 | 4720 | (o >= 28 && n.activeCall ? 1024 : 0) |
| 4633 | 4721 | ;(e.fixed32.encode(d, n.discoveryKey), |
| 4634 | 4722 | e.buffer.encode(d, n.encryptionKey), |
| 4635 | Ti.encode(d, n.digest), | |
| 4636 | Ai.encode(d, n.stats), | |
| 4637 | Mi.encode(d, n.timestamps), | |
| 4723 | Ci.encode(d, n.digest), | |
| 4724 | Si.encode(d, n.stats), | |
| 4725 | Ii.encode(d, n.timestamps), | |
| 4638 | 4726 | e.uint.encode(d, n.fork), |
| 4639 | 4727 | e.uint.encode(d, n.length), |
| 4640 | 4728 | e.fixed32.encode(d, n.seed), |
| 4641 | Di.encode(d, n.capabilities), | |
| 4642 | Ci.encode(d, n.status), | |
| 4729 | ji.encode(d, n.capabilities), | |
| 4730 | Li.encode(d, n.status), | |
| 4643 | 4731 | e.uint.encode(d, c), |
| 4644 | n.selfDevice && Si.encode(d, n.selfDevice), | |
| 4645 | n.selfMember && Ii.encode(d, n.selfMember), | |
| 4646 | n.config && ji.encode(d, n.config), | |
| 4647 | n.identity && Li.encode(d, n.identity), | |
| 4648 | n.lastMessage && Fi.encode(d, n.lastMessage), | |
| 4649 | n.dm && qi.encode(d, n.dm), | |
| 4650 | o >= 19 && n.readLengths && ds.encode(d, n.readLengths), | |
| 4651 | o >= 19 && n.lastMember && Bi.encode(d, n.lastMember), | |
| 4732 | n.selfDevice && Fi.encode(d, n.selfDevice), | |
| 4733 | n.selfMember && qi.encode(d, n.selfMember), | |
| 4734 | n.config && Bi.encode(d, n.config), | |
| 4735 | n.identity && Ei.encode(d, n.identity), | |
| 4736 | n.lastMessage && Vi.encode(d, n.lastMessage), | |
| 4737 | n.dm && Oi.encode(d, n.dm), | |
| 4738 | o >= 19 && n.readLengths && ts.encode(d, n.readLengths), | |
| 4739 | o >= 19 && n.lastMember && Ni.encode(d, n.lastMember), | |
| 4652 | 4740 | o >= 21 && n.version && e.uint.encode(d, n.version), |
| 4653 | o >= 27 && n.preferences && Ei.encode(d, n.preferences), | |
| 4654 | o >= 28 && n.activeCall && os.encode(d, n.activeCall)) | |
| 4741 | o >= 27 && n.preferences && Ui.encode(d, n.preferences), | |
| 4742 | o >= 28 && n.activeCall && is.encode(d, n.activeCall)) | |
| 4655 | 4743 | }, |
| 4656 | 4744 | decode(d) { |
| 4657 | 4745 | const n = e.fixed32.decode(d), |
| 4658 | 4746 | c = e.buffer.decode(d), |
| 4659 | r = Ti.decode(d), | |
| 4660 | t = Ai.decode(d), | |
| 4661 | i = Mi.decode(d), | |
| 4747 | r = Ci.decode(d), | |
| 4748 | t = Si.decode(d), | |
| 4749 | i = Ii.decode(d), | |
| 4662 | 4750 | a = e.uint.decode(d), |
| 4663 | 4751 | s = e.uint.decode(d), |
| 4664 | l = e.fixed32.decode(d), | |
| 4665 | p = Di.decode(d), | |
| 4666 | u = Ci.decode(d), | |
| 4752 | p = e.fixed32.decode(d), | |
| 4753 | l = ji.decode(d), | |
| 4754 | u = Li.decode(d), | |
| 4667 | 4755 | f = e.uint.decode(d) |
| 4668 | 4756 | return { |
| 4669 | 4757 | roomKey: null, |
| … | … | @@ -4674,34 +4762,34 @@ const n = { |
| 4674 | 4762 | timestamps: i, |
| 4675 | 4763 | fork: a, |
| 4676 | 4764 | length: s, |
| 4677 | seed: l, | |
| 4678 | capabilities: p, | |
| 4765 | seed: p, | |
| 4766 | capabilities: l, | |
| 4679 | 4767 | status: u, |
| 4680 | selfDevice: 1 & f ? Si.decode(d) : null, | |
| 4681 | selfMember: 2 & f ? Ii.decode(d) : null, | |
| 4682 | config: 4 & f ? ji.decode(d) : null, | |
| 4683 | identity: 8 & f ? Li.decode(d) : null, | |
| 4684 | lastMessage: 16 & f ? Fi.decode(d) : null, | |
| 4685 | dm: 32 & f ? qi.decode(d) : null, | |
| 4686 | readLengths: o >= 19 && 64 & f ? ds.decode(d) : null, | |
| 4687 | lastMember: o >= 19 && 128 & f ? Bi.decode(d) : null, | |
| 4768 | selfDevice: 1 & f ? Fi.decode(d) : null, | |
| 4769 | selfMember: 2 & f ? qi.decode(d) : null, | |
| 4770 | config: 4 & f ? Bi.decode(d) : null, | |
| 4771 | identity: 8 & f ? Ei.decode(d) : null, | |
| 4772 | lastMessage: 16 & f ? Vi.decode(d) : null, | |
| 4773 | dm: 32 & f ? Oi.decode(d) : null, | |
| 4774 | readLengths: o >= 19 && 64 & f ? ts.decode(d) : null, | |
| 4775 | lastMember: o >= 19 && 128 & f ? Ni.decode(d) : null, | |
| 4688 | 4776 | version: o >= 21 && 256 & f ? e.uint.decode(d) : 0, |
| 4689 | preferences: o >= 27 && 512 & f ? Ei.decode(d) : null, | |
| 4690 | activeCall: o >= 28 && 1024 & f ? os.decode(d) : null, | |
| 4777 | preferences: o >= 27 && 512 & f ? Ui.decode(d) : null, | |
| 4778 | activeCall: o >= 28 && 1024 & f ? is.decode(d) : null, | |
| 4691 | 4779 | } |
| 4692 | 4780 | }, |
| 4693 | 4781 | }, |
| 4694 | Oi = Sn, | |
| 4695 | Ni = { | |
| 4782 | Wi = Sn, | |
| 4783 | zi = { | |
| 4696 | 4784 | preencode(e, d) { |
| 4697 | Oi.preencode(e, d.status) | |
| 4785 | Wi.preencode(e, d.status) | |
| 4698 | 4786 | }, |
| 4699 | 4787 | encode(e, d) { |
| 4700 | Oi.encode(e, d.status) | |
| 4788 | Wi.encode(e, d.status) | |
| 4701 | 4789 | }, |
| 4702 | decode: (e) => ({ roomKey: null, status: Oi.decode(e) }), | |
| 4790 | decode: (e) => ({ roomKey: null, status: Wi.decode(e) }), | |
| 4703 | 4791 | }, |
| 4704 | Ui = { | |
| 4792 | Hi = { | |
| 4705 | 4793 | preencode(d, o) { |
| 4706 | 4794 | ;(e.fixed32.preencode(d, o.key), |
| 4707 | 4795 | d.end++, |
| … | … | @@ -4729,68 +4817,68 @@ const n = { |
| 4729 | 4817 | } |
| 4730 | 4818 | }, |
| 4731 | 4819 | }, |
| 4732 | Ji = pe, | |
| 4733 | Wi = { | |
| 4820 | Gi = le, | |
| 4821 | Qi = { | |
| 4734 | 4822 | preencode(e, d) { |
| 4735 | Ji.preencode(e, d.profile) | |
| 4823 | Gi.preencode(e, d.profile) | |
| 4736 | 4824 | }, |
| 4737 | 4825 | encode(e, d) { |
| 4738 | Ji.encode(e, d.profile) | |
| 4826 | Gi.encode(e, d.profile) | |
| 4739 | 4827 | }, |
| 4740 | decode: (e) => ({ key: null, profile: Ji.decode(e) }), | |
| 4828 | decode: (e) => ({ key: null, profile: Gi.decode(e) }), | |
| 4741 | 4829 | }, |
| 4742 | zi = te, | |
| 4743 | Hi = ie, | |
| 4744 | Gi = { | |
| 4830 | Xi = te, | |
| 4831 | Yi = ie, | |
| 4832 | Zi = { | |
| 4745 | 4833 | preencode(d, o) { |
| 4746 | 4834 | ;(e.fixed32.preencode(d, o.memberKey), |
| 4747 | zi.preencode(d, o.status), | |
| 4748 | ns.preencode(d, o.profile), | |
| 4835 | Xi.preencode(d, o.status), | |
| 4836 | as.preencode(d, o.profile), | |
| 4749 | 4837 | d.end++, |
| 4750 | o.invitation && Hi.preencode(d, o.invitation)) | |
| 4838 | o.invitation && Yi.preencode(d, o.invitation)) | |
| 4751 | 4839 | }, |
| 4752 | 4840 | encode(d, o) { |
| 4753 | 4841 | const n = o.invitation ? 1 : 0 |
| 4754 | 4842 | ;(e.fixed32.encode(d, o.memberKey), |
| 4755 | zi.encode(d, o.status), | |
| 4756 | ns.encode(d, o.profile), | |
| 4843 | Xi.encode(d, o.status), | |
| 4844 | as.encode(d, o.profile), | |
| 4757 | 4845 | e.uint.encode(d, n), |
| 4758 | o.invitation && Hi.encode(d, o.invitation)) | |
| 4846 | o.invitation && Yi.encode(d, o.invitation)) | |
| 4759 | 4847 | }, |
| 4760 | 4848 | decode: (d) => ({ |
| 4761 | 4849 | key: null, |
| 4762 | 4850 | memberKey: e.fixed32.decode(d), |
| 4763 | status: zi.decode(d), | |
| 4764 | profile: ns.decode(d), | |
| 4765 | invitation: 1 & e.uint.decode(d) ? Hi.decode(d) : null, | |
| 4851 | status: Xi.decode(d), | |
| 4852 | profile: as.decode(d), | |
| 4853 | invitation: 1 & e.uint.decode(d) ? Yi.decode(d) : null, | |
| 4766 | 4854 | }), |
| 4767 | 4855 | }, |
| 4768 | Qi = pr, | |
| 4769 | Xi = { | |
| 4856 | $i = lr, | |
| 4857 | _i = { | |
| 4770 | 4858 | preencode(d, o) { |
| 4771 | ;(e.fixed32.preencode(d, o.roomKey), Qi.preencode(d, o.device)) | |
| 4859 | ;(e.fixed32.preencode(d, o.roomKey), $i.preencode(d, o.device)) | |
| 4772 | 4860 | }, |
| 4773 | 4861 | encode(d, o) { |
| 4774 | ;(e.fixed32.encode(d, o.roomKey), Qi.encode(d, o.device)) | |
| 4862 | ;(e.fixed32.encode(d, o.roomKey), $i.encode(d, o.device)) | |
| 4775 | 4863 | }, |
| 4776 | decode: (d) => ({ roomKey: e.fixed32.decode(d), device: Qi.decode(d) }), | |
| 4864 | decode: (d) => ({ roomKey: e.fixed32.decode(d), device: $i.decode(d) }), | |
| 4777 | 4865 | }, |
| 4778 | Yi = { | |
| 4866 | ea = { | |
| 4779 | 4867 | preencode(d, o) { |
| 4780 | ;(cs.preencode(d, o.status), | |
| 4868 | ;(ss.preencode(d, o.status), | |
| 4781 | 4869 | d.end++, |
| 4782 | 4870 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 4783 | 4871 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| 4784 | 4872 | }, |
| 4785 | 4873 | encode(d, o) { |
| 4786 | 4874 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 4787 | ;(cs.encode(d, o.status), | |
| 4875 | ;(ss.encode(d, o.status), | |
| 4788 | 4876 | e.uint.encode(d, n), |
| 4789 | 4877 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 4790 | 4878 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| 4791 | 4879 | }, |
| 4792 | 4880 | decode(d) { |
| 4793 | const o = cs.decode(d), | |
| 4881 | const o = ss.decode(d), | |
| 4794 | 4882 | n = e.uint.decode(d) |
| 4795 | 4883 | return { |
| 4796 | 4884 | memberKey: null, |
| … | … | @@ -4800,16 +4888,16 @@ const n = { |
| 4800 | 4888 | } |
| 4801 | 4889 | }, |
| 4802 | 4890 | }, |
| 4803 | Zi = Hc, | |
| 4804 | $i = Gc, | |
| 4805 | _i = Qc, | |
| 4806 | ea = Xc, | |
| 4807 | da = Yc, | |
| 4808 | oa = Zc, | |
| 4809 | na = $c, | |
| 4810 | ca = _c, | |
| 4811 | ra = er, | |
| 4812 | ta = { | |
| 4891 | da = Hc, | |
| 4892 | oa = Gc, | |
| 4893 | na = Qc, | |
| 4894 | ca = Xc, | |
| 4895 | ra = Yc, | |
| 4896 | ta = Zc, | |
| 4897 | ia = $c, | |
| 4898 | aa = _c, | |
| 4899 | sa = er, | |
| 4900 | pa = { | |
| 4813 | 4901 | preencode(d, o) { |
| 4814 | 4902 | const n = |
| 4815 | 4903 | (o.restoreIdentity ? 1 : 0) | |
| … | … | @@ -4822,15 +4910,15 @@ const n = { |
| 4822 | 4910 | (o.sendContactRequest ? 128 : 0) | |
| 4823 | 4911 | (o.migrateV2Room ? 256 : 0) |
| 4824 | 4912 | ;(e.uint.preencode(d, n), |
| 4825 | o.restoreIdentity && Zi.preencode(d, o.restoreIdentity), | |
| 4826 | o.createRoom && $i.preencode(d, o.createRoom), | |
| 4827 | o.leaveRoom && _i.preencode(d, o.leaveRoom), | |
| 4828 | o.clearRoom && ea.preencode(d, o.clearRoom), | |
| 4829 | o.joinRoomInvitation && da.preencode(d, o.joinRoomInvitation), | |
| 4830 | o.joinRoomKeys && oa.preencode(d, o.joinRoomKeys), | |
| 4831 | o.joinRoomResponse && na.preencode(d, o.joinRoomResponse), | |
| 4832 | o.sendContactRequest && ca.preencode(d, o.sendContactRequest), | |
| 4833 | o.migrateV2Room && ra.preencode(d, o.migrateV2Room)) | |
| 4913 | o.restoreIdentity && da.preencode(d, o.restoreIdentity), | |
| 4914 | o.createRoom && oa.preencode(d, o.createRoom), | |
| 4915 | o.leaveRoom && na.preencode(d, o.leaveRoom), | |
| 4916 | o.clearRoom && ca.preencode(d, o.clearRoom), | |
| 4917 | o.joinRoomInvitation && ra.preencode(d, o.joinRoomInvitation), | |
| 4918 | o.joinRoomKeys && ta.preencode(d, o.joinRoomKeys), | |
| 4919 | o.joinRoomResponse && ia.preencode(d, o.joinRoomResponse), | |
| 4920 | o.sendContactRequest && aa.preencode(d, o.sendContactRequest), | |
| 4921 | o.migrateV2Room && sa.preencode(d, o.migrateV2Room)) | |
| 4834 | 4922 | }, |
| 4835 | 4923 | encode(d, o) { |
| 4836 | 4924 | const n = |
| … | … | @@ -4844,15 +4932,15 @@ const n = { |
| 4844 | 4932 | (o.sendContactRequest ? 128 : 0) | |
| 4845 | 4933 | (o.migrateV2Room ? 256 : 0) |
| 4846 | 4934 | ;(e.uint.encode(d, n), |
| 4847 | o.restoreIdentity && Zi.encode(d, o.restoreIdentity), | |
| 4848 | o.createRoom && $i.encode(d, o.createRoom), | |
| 4849 | o.leaveRoom && _i.encode(d, o.leaveRoom), | |
| 4850 | o.clearRoom && ea.encode(d, o.clearRoom), | |
| 4851 | o.joinRoomInvitation && da.encode(d, o.joinRoomInvitation), | |
| 4852 | o.joinRoomKeys && oa.encode(d, o.joinRoomKeys), | |
| 4853 | o.joinRoomResponse && na.encode(d, o.joinRoomResponse), | |
| 4854 | o.sendContactRequest && ca.encode(d, o.sendContactRequest), | |
| 4855 | o.migrateV2Room && ra.encode(d, o.migrateV2Room)) | |
| 4935 | o.restoreIdentity && da.encode(d, o.restoreIdentity), | |
| 4936 | o.createRoom && oa.encode(d, o.createRoom), | |
| 4937 | o.leaveRoom && na.encode(d, o.leaveRoom), | |
| 4938 | o.clearRoom && ca.encode(d, o.clearRoom), | |
| 4939 | o.joinRoomInvitation && ra.encode(d, o.joinRoomInvitation), | |
| 4940 | o.joinRoomKeys && ta.encode(d, o.joinRoomKeys), | |
| 4941 | o.joinRoomResponse && ia.encode(d, o.joinRoomResponse), | |
| 4942 | o.sendContactRequest && aa.encode(d, o.sendContactRequest), | |
| 4943 | o.migrateV2Room && sa.encode(d, o.migrateV2Room)) | |
| 4856 | 4944 | }, |
| 4857 | 4945 | decode(d) { |
| 4858 | 4946 | const o = e.uint.decode(d) |
| … | … | @@ -4861,19 +4949,19 @@ const n = { |
| 4861 | 4949 | priority: 0, |
| 4862 | 4950 | timestamp: 0, |
| 4863 | 4951 | type: 0, |
| 4864 | restoreIdentity: 1 & o ? Zi.decode(d) : null, | |
| 4865 | createRoom: 2 & o ? $i.decode(d) : null, | |
| 4866 | leaveRoom: 4 & o ? _i.decode(d) : null, | |
| 4867 | clearRoom: 8 & o ? ea.decode(d) : null, | |
| 4868 | joinRoomInvitation: 16 & o ? da.decode(d) : null, | |
| 4869 | joinRoomKeys: 32 & o ? oa.decode(d) : null, | |
| 4870 | joinRoomResponse: 64 & o ? na.decode(d) : null, | |
| 4871 | sendContactRequest: 128 & o ? ca.decode(d) : null, | |
| 4872 | migrateV2Room: 256 & o ? ra.decode(d) : null, | |
| 4952 | restoreIdentity: 1 & o ? da.decode(d) : null, | |
| 4953 | createRoom: 2 & o ? oa.decode(d) : null, | |
| 4954 | leaveRoom: 4 & o ? na.decode(d) : null, | |
| 4955 | clearRoom: 8 & o ? ca.decode(d) : null, | |
| 4956 | joinRoomInvitation: 16 & o ? ra.decode(d) : null, | |
| 4957 | joinRoomKeys: 32 & o ? ta.decode(d) : null, | |
| 4958 | joinRoomResponse: 64 & o ? ia.decode(d) : null, | |
| 4959 | sendContactRequest: 128 & o ? aa.decode(d) : null, | |
| 4960 | migrateV2Room: 256 & o ? sa.decode(d) : null, | |
| 4873 | 4961 | } |
| 4874 | 4962 | }, |
| 4875 | 4963 | }, |
| 4876 | ia = { | |
| 4964 | la = { | |
| 4877 | 4965 | preencode(d, o) { |
| 4878 | 4966 | ;(e.uint.preencode(d, o.blockLength), |
| 4879 | 4967 | e.uint.preencode(d, o.byteOffset), |
| … | … | @@ -4891,7 +4979,7 @@ const n = { |
| 4891 | 4979 | byteLength: e.uint.decode(d), |
| 4892 | 4980 | }), |
| 4893 | 4981 | }, |
| 4894 | aa = { | |
| 4982 | ua = { | |
| 4895 | 4983 | preencode(e, d) { |
| 4896 | 4984 | s.preencode(e, d.blob) |
| 4897 | 4985 | }, |
| … | … | @@ -4900,15 +4988,15 @@ const n = { |
| 4900 | 4988 | }, |
| 4901 | 4989 | decode: (e) => ({ key: null, blob: s.decode(e) }), |
| 4902 | 4990 | }, |
| 4903 | sa = y, | |
| 4904 | la = b, | |
| 4905 | pa = { | |
| 4991 | fa = y, | |
| 4992 | ma = b, | |
| 4993 | ya = { | |
| 4906 | 4994 | preencode(d, o) { |
| 4907 | 4995 | ;(d.end++, |
| 4908 | 4996 | o.inlined && e.buffer.preencode(d, o.inlined), |
| 4909 | 4997 | o.blob && s.preencode(d, o.blob), |
| 4910 | o.externalBlob && sa.preencode(d, o.externalBlob), | |
| 4911 | o.externalDrive && la.preencode(d, o.externalDrive)) | |
| 4998 | o.externalBlob && fa.preencode(d, o.externalBlob), | |
| 4999 | o.externalDrive && ma.preencode(d, o.externalDrive)) | |
| 4912 | 5000 | }, |
| 4913 | 5001 | encode(d, o) { |
| 4914 | 5002 | const n = |
| … | … | @@ -4919,52 +5007,52 @@ const n = { |
| 4919 | 5007 | ;(e.uint.encode(d, n), |
| 4920 | 5008 | o.inlined && e.buffer.encode(d, o.inlined), |
| 4921 | 5009 | o.blob && s.encode(d, o.blob), |
| 4922 | o.externalBlob && sa.encode(d, o.externalBlob), | |
| 4923 | o.externalDrive && la.encode(d, o.externalDrive)) | |
| 5010 | o.externalBlob && fa.encode(d, o.externalBlob), | |
| 5011 | o.externalDrive && ma.encode(d, o.externalDrive)) | |
| 4924 | 5012 | }, |
| 4925 | 5013 | decode(d) { |
| 4926 | 5014 | const o = e.uint.decode(d) |
| 4927 | 5015 | return { |
| 4928 | 5016 | inlined: 1 & o ? e.buffer.decode(d) : null, |
| 4929 | 5017 | blob: 2 & o ? s.decode(d) : null, |
| 4930 | externalBlob: 4 & o ? sa.decode(d) : null, | |
| 4931 | externalDrive: 8 & o ? la.decode(d) : null, | |
| 5018 | externalBlob: 4 & o ? fa.decode(d) : null, | |
| 5019 | externalDrive: 8 & o ? ma.decode(d) : null, | |
| 4932 | 5020 | } |
| 4933 | 5021 | }, |
| 4934 | 5022 | }, |
| 4935 | ua = v, | |
| 4936 | fa = k, | |
| 4937 | ma = { | |
| 5023 | ba = v, | |
| 5024 | xa = k, | |
| 5025 | va = { | |
| 4938 | 5026 | preencode(d, o) { |
| 4939 | ;(ua.preencode(d, o.pointer), | |
| 5027 | ;(ba.preencode(d, o.pointer), | |
| 4940 | 5028 | d.end++, |
| 4941 | o.metadata && fa.preencode(d, o.metadata), | |
| 4942 | o.preview && rs.preencode(d, o.preview), | |
| 5029 | o.metadata && xa.preencode(d, o.metadata), | |
| 5030 | o.preview && ps.preencode(d, o.preview), | |
| 4943 | 5031 | o.hash && e.fixed32.preencode(d, o.hash)) |
| 4944 | 5032 | }, |
| 4945 | 5033 | encode(d, o) { |
| 4946 | 5034 | const n = (o.metadata ? 1 : 0) | (o.preview ? 2 : 0) | (o.hash ? 4 : 0) |
| 4947 | ;(ua.encode(d, o.pointer), | |
| 5035 | ;(ba.encode(d, o.pointer), | |
| 4948 | 5036 | e.uint.encode(d, n), |
| 4949 | o.metadata && fa.encode(d, o.metadata), | |
| 4950 | o.preview && rs.encode(d, o.preview), | |
| 5037 | o.metadata && xa.encode(d, o.metadata), | |
| 5038 | o.preview && ps.encode(d, o.preview), | |
| 4951 | 5039 | o.hash && e.fixed32.encode(d, o.hash)) |
| 4952 | 5040 | }, |
| 4953 | 5041 | decode(d) { |
| 4954 | const o = ua.decode(d), | |
| 5042 | const o = ba.decode(d), | |
| 4955 | 5043 | n = e.uint.decode(d) |
| 4956 | 5044 | return { |
| 4957 | 5045 | pointer: o, |
| 4958 | metadata: 1 & n ? fa.decode(d) : null, | |
| 4959 | preview: 2 & n ? rs.decode(d) : null, | |
| 5046 | metadata: 1 & n ? xa.decode(d) : null, | |
| 5047 | preview: 2 & n ? ps.decode(d) : null, | |
| 4960 | 5048 | hash: 4 & n ? e.fixed32.decode(d) : null, |
| 4961 | 5049 | } |
| 4962 | 5050 | }, |
| 4963 | 5051 | }, |
| 4964 | ya = K, | |
| 4965 | ba = { | |
| 5052 | ka = K, | |
| 5053 | ga = { | |
| 4966 | 5054 | preencode(d, n) { |
| 4967 | ;(ya.preencode(d, n.file), | |
| 5055 | ;(ka.preencode(d, n.file), | |
| 4968 | 5056 | e.fixed32.preencode(d, n.roomKey), |
| 4969 | 5057 | d.end++, |
| 4970 | 5058 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), |
| … | … | @@ -4978,7 +5066,7 @@ const n = { |
| 4978 | 5066 | (n.own ? 4 : 0) | |
| 4979 | 5067 | (o >= 28 && n.lastAccessed ? 8 : 0) | |
| 4980 | 5068 | (o >= 28 && n.version ? 16 : 0) |
| 4981 | ;(ya.encode(d, n.file), | |
| 5069 | ;(ka.encode(d, n.file), | |
| 4982 | 5070 | e.fixed32.encode(d, n.roomKey), |
| 4983 | 5071 | e.uint.encode(d, c), |
| 4984 | 5072 | n.encryptionKey && e.buffer.encode(d, n.encryptionKey), |
| … | … | @@ -4986,7 +5074,7 @@ const n = { |
| 4986 | 5074 | o >= 28 && n.version && e.uint.encode(d, n.version)) |
| 4987 | 5075 | }, |
| 4988 | 5076 | decode(d) { |
| 4989 | const n = ya.decode(d), | |
| 5077 | const n = ka.decode(d), | |
| 4990 | 5078 | c = e.fixed32.decode(d), |
| 4991 | 5079 | r = e.uint.decode(d) |
| 4992 | 5080 | return { |
| … | … | @@ -5000,7 +5088,7 @@ const n = { |
| 5000 | 5088 | } |
| 5001 | 5089 | }, |
| 5002 | 5090 | }, |
| 5003 | xa = { | |
| 5091 | Ka = { | |
| 5004 | 5092 | preencode(d, o) { |
| 5005 | 5093 | e.uint.preencode(d, o.size) |
| 5006 | 5094 | }, |
| … | … | @@ -5009,15 +5097,15 @@ const n = { |
| 5009 | 5097 | }, |
| 5010 | 5098 | decode: (d) => ({ key: null, path: null, version: 0, size: e.uint.decode(d) }), |
| 5011 | 5099 | }, |
| 5012 | va = y, | |
| 5013 | ka = b, | |
| 5014 | ga = { | |
| 5100 | ha = y, | |
| 5101 | wa = b, | |
| 5102 | Ra = { | |
| 5015 | 5103 | preencode(d, o) { |
| 5016 | 5104 | ;(d.end++, |
| 5017 | 5105 | o.inlined && e.buffer.preencode(d, o.inlined), |
| 5018 | 5106 | o.blob && s.preencode(d, o.blob), |
| 5019 | o.externalBlob && va.preencode(d, o.externalBlob), | |
| 5020 | o.externalDrive && ka.preencode(d, o.externalDrive)) | |
| 5107 | o.externalBlob && ha.preencode(d, o.externalBlob), | |
| 5108 | o.externalDrive && wa.preencode(d, o.externalDrive)) | |
| 5021 | 5109 | }, |
| 5022 | 5110 | encode(d, o) { |
| 5023 | 5111 | const n = |
| … | … | @@ -5028,52 +5116,52 @@ const n = { |
| 5028 | 5116 | ;(e.uint.encode(d, n), |
| 5029 | 5117 | o.inlined && e.buffer.encode(d, o.inlined), |
| 5030 | 5118 | o.blob && s.encode(d, o.blob), |
| 5031 | o.externalBlob && va.encode(d, o.externalBlob), | |
| 5032 | o.externalDrive && ka.encode(d, o.externalDrive)) | |
| 5119 | o.externalBlob && ha.encode(d, o.externalBlob), | |
| 5120 | o.externalDrive && wa.encode(d, o.externalDrive)) | |
| 5033 | 5121 | }, |
| 5034 | 5122 | decode(d) { |
| 5035 | 5123 | const o = e.uint.decode(d) |
| 5036 | 5124 | return { |
| 5037 | 5125 | inlined: 1 & o ? e.buffer.decode(d) : null, |
| 5038 | 5126 | blob: 2 & o ? s.decode(d) : null, |
| 5039 | externalBlob: 4 & o ? va.decode(d) : null, | |
| 5040 | externalDrive: 8 & o ? ka.decode(d) : null, | |
| 5127 | externalBlob: 4 & o ? ha.decode(d) : null, | |
| 5128 | externalDrive: 8 & o ? wa.decode(d) : null, | |
| 5041 | 5129 | } |
| 5042 | 5130 | }, |
| 5043 | 5131 | }, |
| 5044 | Ka = v, | |
| 5045 | ha = k, | |
| 5046 | wa = { | |
| 5132 | Pa = v, | |
| 5133 | Ta = k, | |
| 5134 | Aa = { | |
| 5047 | 5135 | preencode(d, o) { |
| 5048 | ;(Ka.preencode(d, o.pointer), | |
| 5136 | ;(Pa.preencode(d, o.pointer), | |
| 5049 | 5137 | d.end++, |
| 5050 | o.metadata && ha.preencode(d, o.metadata), | |
| 5051 | o.preview && ts.preencode(d, o.preview), | |
| 5138 | o.metadata && Ta.preencode(d, o.metadata), | |
| 5139 | o.preview && ls.preencode(d, o.preview), | |
| 5052 | 5140 | o.hash && e.fixed32.preencode(d, o.hash)) |
| 5053 | 5141 | }, |
| 5054 | 5142 | encode(d, o) { |
| 5055 | 5143 | const n = (o.metadata ? 1 : 0) | (o.preview ? 2 : 0) | (o.hash ? 4 : 0) |
| 5056 | ;(Ka.encode(d, o.pointer), | |
| 5144 | ;(Pa.encode(d, o.pointer), | |
| 5057 | 5145 | e.uint.encode(d, n), |
| 5058 | o.metadata && ha.encode(d, o.metadata), | |
| 5059 | o.preview && ts.encode(d, o.preview), | |
| 5146 | o.metadata && Ta.encode(d, o.metadata), | |
| 5147 | o.preview && ls.encode(d, o.preview), | |
| 5060 | 5148 | o.hash && e.fixed32.encode(d, o.hash)) |
| 5061 | 5149 | }, |
| 5062 | 5150 | decode(d) { |
| 5063 | const o = Ka.decode(d), | |
| 5151 | const o = Pa.decode(d), | |
| 5064 | 5152 | n = e.uint.decode(d) |
| 5065 | 5153 | return { |
| 5066 | 5154 | pointer: o, |
| 5067 | metadata: 1 & n ? ha.decode(d) : null, | |
| 5068 | preview: 2 & n ? ts.decode(d) : null, | |
| 5155 | metadata: 1 & n ? Ta.decode(d) : null, | |
| 5156 | preview: 2 & n ? ls.decode(d) : null, | |
| 5069 | 5157 | hash: 4 & n ? e.fixed32.decode(d) : null, |
| 5070 | 5158 | } |
| 5071 | 5159 | }, |
| 5072 | 5160 | }, |
| 5073 | Ra = K, | |
| 5074 | Pa = { | |
| 5161 | Ma = K, | |
| 5162 | Da = { | |
| 5075 | 5163 | preencode(d, n) { |
| 5076 | ;(Ra.preencode(d, n.file), | |
| 5164 | ;(Ma.preencode(d, n.file), | |
| 5077 | 5165 | e.fixed32.preencode(d, n.roomKey), |
| 5078 | 5166 | d.end++, |
| 5079 | 5167 | n.encryptionKey && e.buffer.preencode(d, n.encryptionKey), |
| … | … | @@ -5087,7 +5175,7 @@ const n = { |
| 5087 | 5175 | (n.own ? 4 : 0) | |
| 5088 | 5176 | (o >= 28 && n.lastAccessed ? 8 : 0) | |
| 5089 | 5177 | (o >= 28 && n.version ? 16 : 0) |
| 5090 | ;(Ra.encode(d, n.file), | |
| 5178 | ;(Ma.encode(d, n.file), | |
| 5091 | 5179 | e.fixed32.encode(d, n.roomKey), |
| 5092 | 5180 | e.uint.encode(d, c), |
| 5093 | 5181 | n.encryptionKey && e.buffer.encode(d, n.encryptionKey), |
| … | … | @@ -5095,7 +5183,7 @@ const n = { |
| 5095 | 5183 | o >= 28 && n.version && e.uint.encode(d, n.version)) |
| 5096 | 5184 | }, |
| 5097 | 5185 | decode(d) { |
| 5098 | const n = Ra.decode(d), | |
| 5186 | const n = Ma.decode(d), | |
| 5099 | 5187 | c = e.fixed32.decode(d), |
| 5100 | 5188 | r = e.uint.decode(d) |
| 5101 | 5189 | return { |
| … | … | @@ -5109,7 +5197,7 @@ const n = { |
| 5109 | 5197 | } |
| 5110 | 5198 | }, |
| 5111 | 5199 | }, |
| 5112 | Ta = { | |
| 5200 | Ca = { | |
| 5113 | 5201 | preencode(d, o) { |
| 5114 | 5202 | ;(e.uint.preencode(d, o.timestamp), |
| 5115 | 5203 | d.end++, |
| … | … | @@ -5132,12 +5220,12 @@ const n = { |
| 5132 | 5220 | } |
| 5133 | 5221 | }, |
| 5134 | 5222 | }, |
| 5135 | Aa = { | |
| 5223 | Sa = { | |
| 5136 | 5224 | preencode(e, d) {}, |
| 5137 | 5225 | encode(e, d) {}, |
| 5138 | 5226 | decode: (e) => ({ key: null, responsePublicKey: null }), |
| 5139 | 5227 | }, |
| 5140 | Ma = { | |
| 5228 | Ia = { | |
| 5141 | 5229 | preencode(d, n) { |
| 5142 | 5230 | ;(d.end++, o >= 10 && n.repairs && e.uint.preencode(d, n.repairs)) |
| 5143 | 5231 | }, |
| … | … | @@ -5150,7 +5238,7 @@ const n = { |
| 5150 | 5238 | return { roomKey: null, repairs: o >= 10 && 1 & n ? e.uint.decode(d) : 0 } |
| 5151 | 5239 | }, |
| 5152 | 5240 | }, |
| 5153 | Da = { | |
| 5241 | ja = { | |
| 5154 | 5242 | preencode(d, o) { |
| 5155 | 5243 | e.uint.preencode(d, o.count) |
| 5156 | 5244 | }, |
| … | … | @@ -5159,14 +5247,14 @@ const n = { |
| 5159 | 5247 | }, |
| 5160 | 5248 | decode: (d) => ({ roomKey: null, count: e.uint.decode(d) }), |
| 5161 | 5249 | }, |
| 5162 | Ca = Ft, | |
| 5163 | Sa = { | |
| 5250 | La = Ft, | |
| 5251 | Fa = { | |
| 5164 | 5252 | preencode(d, n) { |
| 5165 | 5253 | ;(e.string.preencode(d, n.code), |
| 5166 | 5254 | e.string.preencode(d, n.message), |
| 5167 | 5255 | e.string.preencode(d, n.stack), |
| 5168 | 5256 | d.end++, |
| 5169 | o >= 20 && n.details && Ca.preencode(d, n.details)) | |
| 5257 | o >= 20 && n.details && La.preencode(d, n.details)) | |
| 5170 | 5258 | }, |
| 5171 | 5259 | encode(d, n) { |
| 5172 | 5260 | const c = o >= 20 && n.details ? 1 : 0 |
| … | … | @@ -5174,7 +5262,7 @@ const n = { |
| 5174 | 5262 | e.string.encode(d, n.message), |
| 5175 | 5263 | e.string.encode(d, n.stack), |
| 5176 | 5264 | e.uint.encode(d, c), |
| 5177 | o >= 20 && n.details && Ca.encode(d, n.details)) | |
| 5265 | o >= 20 && n.details && La.encode(d, n.details)) | |
| 5178 | 5266 | }, |
| 5179 | 5267 | decode(d) { |
| 5180 | 5268 | const n = e.string.decode(d), |
| … | … | @@ -5186,11 +5274,11 @@ const n = { |
| 5186 | 5274 | message: c, |
| 5187 | 5275 | stack: r, |
| 5188 | 5276 | timestamp: 0, |
| 5189 | details: o >= 20 && 1 & t ? Ca.decode(d) : null, | |
| 5277 | details: o >= 20 && 1 & t ? La.decode(d) : null, | |
| 5190 | 5278 | } |
| 5191 | 5279 | }, |
| 5192 | 5280 | }, |
| 5193 | Ia = { | |
| 5281 | qa = { | |
| 5194 | 5282 | preencode(d, o) { |
| 5195 | 5283 | e.uint.preencode(d, o.total) |
| 5196 | 5284 | }, |
| … | … | @@ -5199,44 +5287,53 @@ const n = { |
| 5199 | 5287 | }, |
| 5200 | 5288 | decode: (d) => ({ roomKey: null, total: e.uint.decode(d) }), |
| 5201 | 5289 | }, |
| 5202 | ja = e.frame(R), | |
| 5203 | La = ja, | |
| 5204 | Fa = e.array(rt), | |
| 5205 | qa = e.frame(le), | |
| 5206 | Ba = ja, | |
| 5207 | Ea = qa, | |
| 5208 | Va = e.frame(Br), | |
| 5209 | Oa = qa, | |
| 5210 | Na = e.frame(md), | |
| 5211 | Ua = e.frame(Sr), | |
| 5212 | Ja = e.frame(Qt), | |
| 5213 | Wa = Ja, | |
| 5214 | za = e.array(e.frame(it)), | |
| 5215 | Ha = ja, | |
| 5216 | Ga = e.frame(Un), | |
| 5217 | Qa = Ga, | |
| 5218 | Xa = Ga, | |
| 5219 | Ya = e.frame(Er), | |
| 5220 | Za = e.frame(jr), | |
| 5221 | $a = e.array(e.frame(Tt)), | |
| 5222 | _a = e.frame(yi), | |
| 5223 | es = ja, | |
| 5224 | ds = $a, | |
| 5225 | os = _a, | |
| 5226 | ns = qa, | |
| 5227 | cs = Ga, | |
| 5228 | rs = ja, | |
| 5229 | ts = ja | |
| 5230 | function is(e) { | |
| 5290 | Ba = { | |
| 5291 | preencode(d, o) { | |
| 5292 | ;(e.buffer.preencode(d, o.proof), e.uint.preencode(d, o.createdAt)) | |
| 5293 | }, | |
| 5294 | encode(d, o) { | |
| 5295 | ;(e.buffer.encode(d, o.proof), e.uint.encode(d, o.createdAt)) | |
| 5296 | }, | |
| 5297 | decode: (d) => ({ deviceKey: null, proof: e.buffer.decode(d), createdAt: e.uint.decode(d) }), | |
| 5298 | }, | |
| 5299 | Ea = e.frame(R), | |
| 5300 | Va = Ea, | |
| 5301 | Oa = e.array(rt), | |
| 5302 | Na = e.frame(pe), | |
| 5303 | Ua = Ea, | |
| 5304 | Ja = Na, | |
| 5305 | Wa = e.frame(Br), | |
| 5306 | za = Na, | |
| 5307 | Ha = e.frame(md), | |
| 5308 | Ga = e.frame(Sr), | |
| 5309 | Qa = e.frame(Qt), | |
| 5310 | Xa = Qa, | |
| 5311 | Ya = e.array(e.frame(it)), | |
| 5312 | Za = Ea, | |
| 5313 | $a = e.frame(Un), | |
| 5314 | _a = $a, | |
| 5315 | es = $a, | |
| 5316 | ds = e.frame(Er), | |
| 5317 | os = e.frame(jr), | |
| 5318 | ns = e.array(e.frame(Tt)), | |
| 5319 | cs = e.frame(yi), | |
| 5320 | rs = Ea, | |
| 5321 | ts = ns, | |
| 5322 | is = cs, | |
| 5323 | as = Na, | |
| 5324 | ss = $a, | |
| 5325 | ps = Ea, | |
| 5326 | ls = Ea | |
| 5327 | function us(e) { | |
| 5231 | 5328 | o = e |
| 5232 | 5329 | } |
| 5233 | function as(d, n, c = 30) { | |
| 5234 | return ((o = c), e.encode(ps(d), n)) | |
| 5330 | function fs(d, n, c = 31) { | |
| 5331 | return ((o = c), e.encode(bs(d), n)) | |
| 5235 | 5332 | } |
| 5236 | function ss(d, n, c = 30) { | |
| 5237 | return ((o = c), e.decode(ps(d), n)) | |
| 5333 | function ms(d, n, c = 31) { | |
| 5334 | return ((o = c), e.decode(bs(d), n)) | |
| 5238 | 5335 | } |
| 5239 | function ls(e) { | |
| 5336 | function ys(e) { | |
| 5240 | 5337 | switch (e) { |
| 5241 | 5338 | case "@keet/room-type": |
| 5242 | 5339 | return U |
| … | … | @@ -5262,7 +5359,7 @@ function ls(e) { |
| 5262 | 5359 | throw new Error("Enum not found " + e) |
| 5263 | 5360 | } |
| 5264 | 5361 | } |
| 5265 | function ps(e) { | |
| 5362 | function bs(e) { | |
| 5266 | 5363 | switch (e) { |
| 5267 | 5364 | case "@keet/head": |
| 5268 | 5365 | return n |
| … | … | @@ -5279,7 +5376,7 @@ function ps(e) { |
| 5279 | 5376 | case "@keet/blob-pointer": |
| 5280 | 5377 | return s |
| 5281 | 5378 | case "@keet/file-dimensions": |
| 5282 | return l | |
| 5379 | return p | |
| 5283 | 5380 | case "@keet/file-metadata": |
| 5284 | 5381 | return u |
| 5285 | 5382 | case "@keet/external-drive-pointer": |
| … | … | @@ -5341,7 +5438,7 @@ function ps(e) { |
| 5341 | 5438 | case "@keet/member-profile": |
| 5342 | 5439 | return se |
| 5343 | 5440 | case "@keet/device-profile": |
| 5344 | return le | |
| 5441 | return pe | |
| 5345 | 5442 | case "@keet/member-update": |
| 5346 | 5443 | return ue |
| 5347 | 5444 | case "@keet/device-update": |
| … | … | @@ -5393,7 +5490,7 @@ function ps(e) { |
| 5393 | 5490 | case "@keet/reject-join-request-operation": |
| 5394 | 5491 | return id |
| 5395 | 5492 | case "@keet/member": |
| 5396 | return ld | |
| 5493 | return pd | |
| 5397 | 5494 | case "@keet/full-member": |
| 5398 | 5495 | return fd |
| 5399 | 5496 | case "@keet/member-proofs": |
| … | … | @@ -5435,7 +5532,7 @@ function ps(e) { |
| 5435 | 5532 | case "@keet/index-message": |
| 5436 | 5533 | return ao |
| 5437 | 5534 | case "@keet/full-index-message": |
| 5438 | return po | |
| 5535 | return lo | |
| 5439 | 5536 | case "@keet/message-status": |
| 5440 | 5537 | return uo |
| 5441 | 5538 | case "@keet/message-index-id": |
| … | … | @@ -5481,7 +5578,7 @@ function ps(e) { |
| 5481 | 5578 | case "@keet-private-id/contact": |
| 5482 | 5579 | return sn |
| 5483 | 5580 | case "@keet-private-id/v3-room-migration-info": |
| 5484 | return ln | |
| 5581 | return pn | |
| 5485 | 5582 | case "@keet-private-id/run-v3-migration-operation": |
| 5486 | 5583 | return fn |
| 5487 | 5584 | case "@keet-private-id/update-identity-operation": |
| … | … | @@ -5535,7 +5632,7 @@ function ps(e) { |
| 5535 | 5632 | case "@keet-private-id/add-contact-request-operation": |
| 5536 | 5633 | return ac |
| 5537 | 5634 | case "@keet-private-id/update-contact-request-status-operation": |
| 5538 | return pc | |
| 5635 | return lc | |
| 5539 | 5636 | case "@keet-private-id/profile-discovery-record-v1": |
| 5540 | 5637 | return uc |
| 5541 | 5638 | case "@keet-private-id/profile-discovery-record": |
| … | … | @@ -5651,7 +5748,7 @@ function ps(e) { |
| 5651 | 5748 | case "@keet-private-id/unreads": |
| 5652 | 5749 | return st |
| 5653 | 5750 | case "@keet-private-id/add-unreads-key-operation": |
| 5654 | return pt | |
| 5751 | return lt | |
| 5655 | 5752 | case "@keet-private-id/remove-unreads-key-operation": |
| 5656 | 5753 | return ft |
| 5657 | 5754 | case "@keet/label-type": |
| … | … | @@ -5711,9 +5808,9 @@ function ps(e) { |
| 5711 | 5808 | case "@keet/add-call-stream": |
| 5712 | 5809 | return ai |
| 5713 | 5810 | case "@keet/remove-call-stream": |
| 5714 | return li | |
| 5715 | case "@keet/call-record": | |
| 5716 | 5811 | return pi |
| 5812 | case "@keet/call-record": | |
| 5813 | return li | |
| 5717 | 5814 | case "@keet/call-member-record": |
| 5718 | 5815 | return ui |
| 5719 | 5816 | case "@keet/call-device-record": |
| … | … | @@ -5732,60 +5829,68 @@ function ps(e) { |
| 5732 | 5829 | return hi |
| 5733 | 5830 | case "@local/environment-record": |
| 5734 | 5831 | return wi |
| 5735 | case "@local/room-migration/hyperdb#3": | |
| 5832 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 5736 | 5833 | return Pi |
| 5834 | case "@local/ota-actions": | |
| 5835 | return Ti | |
| 5836 | case "@local/device-attestation": | |
| 5837 | return Ai | |
| 5838 | case "@local/room-migration/hyperdb#3": | |
| 5839 | return Di | |
| 5737 | 5840 | case "@local/room/hyperdb#6": |
| 5738 | return Vi | |
| 5841 | return Ji | |
| 5739 | 5842 | case "@local/room-preferences/hyperdb#13": |
| 5740 | return Ni | |
| 5843 | return zi | |
| 5741 | 5844 | case "@local/writer/hyperdb#14": |
| 5742 | return Ui | |
| 5845 | return Hi | |
| 5743 | 5846 | case "@local/member/hyperdb#17": |
| 5744 | return Wi | |
| 5847 | return Qi | |
| 5745 | 5848 | case "@keet/device/hyperdb#18": |
| 5746 | return Gi | |
| 5849 | return Zi | |
| 5747 | 5850 | case "@local/device/hyperdb#18": |
| 5748 | return Xi | |
| 5851 | return _i | |
| 5749 | 5852 | case "@keet-private-id/contact/hyperdb#19": |
| 5750 | return Yi | |
| 5853 | return ea | |
| 5751 | 5854 | case "@local/task/hyperdb#21": |
| 5752 | return ta | |
| 5855 | return pa | |
| 5753 | 5856 | case "@keet/blob-pointer/hyperdb#23": |
| 5754 | return ia | |
| 5857 | return la | |
| 5755 | 5858 | case "@keet/external-blob-pointer/hyperdb#23": |
| 5756 | return aa | |
| 5859 | return ua | |
| 5757 | 5860 | case "@keet/file-pointer/hyperdb#23": |
| 5758 | return pa | |
| 5861 | return ya | |
| 5759 | 5862 | case "@keet/file/hyperdb#23": |
| 5760 | return ma | |
| 5863 | return va | |
| 5761 | 5864 | case "@local/file/hyperdb#23": |
| 5762 | return ba | |
| 5865 | return ga | |
| 5763 | 5866 | case "@keet/external-drive-pointer/hyperdb#24": |
| 5764 | return xa | |
| 5867 | return Ka | |
| 5765 | 5868 | case "@keet/file-pointer/hyperdb#24": |
| 5766 | return ga | |
| 5869 | return Ra | |
| 5767 | 5870 | case "@keet/file/hyperdb#24": |
| 5768 | return wa | |
| 5871 | return Aa | |
| 5769 | 5872 | case "@local/file/hyperdb#24": |
| 5770 | return Pa | |
| 5873 | return Da | |
| 5771 | 5874 | case "@local/background-sync-room/hyperdb#27": |
| 5772 | return Ta | |
| 5875 | return Ca | |
| 5773 | 5876 | case "@local/writer-append/hyperdb#29": |
| 5774 | return Aa | |
| 5877 | return Sa | |
| 5775 | 5878 | case "@local/room-metadata/hyperdb#30": |
| 5776 | return Ma | |
| 5879 | return Ia | |
| 5777 | 5880 | case "@local/unread/hyperdb#33": |
| 5778 | return Da | |
| 5881 | return ja | |
| 5779 | 5882 | case "@local/error-record/hyperdb#35": |
| 5780 | return Sa | |
| 5883 | return Fa | |
| 5781 | 5884 | case "@local/file-stats/hyperdb#37": |
| 5782 | return Ia | |
| 5885 | return qa | |
| 5886 | case "@local/device-attestation/hyperdb#44": | |
| 5887 | return Ba | |
| 5783 | 5888 | default: |
| 5784 | 5889 | throw new Error("Encoder not found " + e) |
| 5785 | 5890 | } |
| 5786 | 5891 | } |
| 5787 | function us(e, d = 30) { | |
| 5788 | const n = ps(e) | |
| 5892 | function xs(e, d = 31) { | |
| 5893 | const n = bs(e) | |
| 5789 | 5894 | return { |
| 5790 | 5895 | preencode(e, c) { |
| 5791 | 5896 | ;((o = d), n.preencode(e, c)) |
| … | … | @@ -5796,14 +5901,14 @@ function us(e, d = 30) { |
| 5796 | 5901 | decode: (e) => ((o = d), n.decode(e)), |
| 5797 | 5902 | } |
| 5798 | 5903 | } |
| 5799 | const fs = us | |
| 5904 | const vs = xs | |
| 5800 | 5905 | module.exports = { |
| 5801 | resolveStruct: fs, | |
| 5802 | getStruct: us, | |
| 5803 | getEnum: ls, | |
| 5804 | getEncoding: ps, | |
| 5805 | encode: as, | |
| 5806 | decode: ss, | |
| 5807 | setVersion: is, | |
| 5906 | resolveStruct: vs, | |
| 5907 | getStruct: xs, | |
| 5908 | getEnum: ys, | |
| 5909 | getEncoding: bs, | |
| 5910 | encode: fs, | |
| 5911 | decode: ms, | |
| 5912 | setVersion: us, | |
| 5808 | 5913 | version: o, |
| 5809 | 5914 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | const { c: e } = require("hyperschema/runtime"), |
| 2 | d = 30 | |
| 2 | d = 31 | |
| 3 | 3 | let o = d |
| 4 | 4 | const n = { |
| 5 | 5 | preencode(d, o) { |
| … | … | @@ -204,7 +204,7 @@ const n = { |
| 204 | 204 | ;(v.preencode(d, o.pointer), |
| 205 | 205 | d.end++, |
| 206 | 206 | o.metadata && k.preencode(d, o.metadata), |
| 207 | o.preview && Pi.preencode(d, o.preview), | |
| 207 | o.preview && Mi.preencode(d, o.preview), | |
| 208 | 208 | o.hash && e.fixed32.preencode(d, o.hash)) |
| 209 | 209 | }, |
| 210 | 210 | encode(d, o) { |
| … | … | @@ -212,7 +212,7 @@ const n = { |
| 212 | 212 | ;(v.encode(d, o.pointer), |
| 213 | 213 | e.uint.encode(d, n), |
| 214 | 214 | o.metadata && k.encode(d, o.metadata), |
| 215 | o.preview && Pi.encode(d, o.preview), | |
| 215 | o.preview && Mi.encode(d, o.preview), | |
| 216 | 216 | o.hash && e.fixed32.encode(d, o.hash)) |
| 217 | 217 | }, |
| 218 | 218 | decode(d) { |
| … | … | @@ -221,7 +221,7 @@ const n = { |
| 221 | 221 | return { |
| 222 | 222 | pointer: o, |
| 223 | 223 | metadata: 1 & n ? k.decode(d) : null, |
| 224 | preview: 2 & n ? Pi.decode(d) : null, | |
| 224 | preview: 2 & n ? Mi.decode(d) : null, | |
| 225 | 225 | hash: 4 & n ? e.fixed32.decode(d) : null, |
| 226 | 226 | } |
| 227 | 227 | }, |
| … | … | @@ -252,7 +252,7 @@ const n = { |
| 252 | 252 | } |
| 253 | 253 | }, |
| 254 | 254 | }, |
| 255 | T = { | |
| 255 | R = { | |
| 256 | 256 | preencode(e, d) { |
| 257 | 257 | e.end++ |
| 258 | 258 | }, |
| … | … | @@ -262,13 +262,13 @@ const n = { |
| 262 | 262 | }, |
| 263 | 263 | decode: (d) => ({ isDeleted: !!(1 & e.uint.decode(d)) }), |
| 264 | 264 | }, |
| 265 | R = e.frame(T), | |
| 265 | T = e.frame(R), | |
| 266 | 266 | A = K, |
| 267 | 267 | M = { |
| 268 | 268 | preencode(d, n) { |
| 269 | 269 | ;(e.uint.preencode(d, n.id), |
| 270 | 270 | c.preencode(d, n.oplog), |
| 271 | R.preencode(d, n.status), | |
| 271 | T.preencode(d, n.status), | |
| 272 | 272 | A.preencode(d, n.file), |
| 273 | 273 | d.end++, |
| 274 | 274 | o >= 22 && n.version && e.uint.preencode(d, n.version)) |
| … | … | @@ -277,7 +277,7 @@ const n = { |
| 277 | 277 | const r = o >= 22 && n.version ? 1 : 0 |
| 278 | 278 | ;(e.uint.encode(d, n.id), |
| 279 | 279 | c.encode(d, n.oplog), |
| 280 | R.encode(d, n.status), | |
| 280 | T.encode(d, n.status), | |
| 281 | 281 | A.encode(d, n.file), |
| 282 | 282 | e.uint.encode(d, r), |
| 283 | 283 | o >= 22 && n.version && e.uint.encode(d, n.version)) |
| … | … | @@ -285,7 +285,7 @@ const n = { |
| 285 | 285 | decode(d) { |
| 286 | 286 | const n = e.uint.decode(d), |
| 287 | 287 | r = c.decode(d), |
| 288 | t = R.decode(d), | |
| 288 | t = T.decode(d), | |
| 289 | 289 | i = A.decode(d), |
| 290 | 290 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 291 | 291 | return { |
| … | … | @@ -310,7 +310,7 @@ const n = { |
| 310 | 310 | return { isActive: !!(1 & o), isIndexing: !!(2 & o) } |
| 311 | 311 | }, |
| 312 | 312 | }, |
| 313 | C = { | |
| 313 | S = { | |
| 314 | 314 | preencode(d, n) { |
| 315 | 315 | const c = |
| 316 | 316 | (n.isAdmin ? 1 : 0) | |
| … | … | @@ -349,7 +349,7 @@ const n = { |
| 349 | 349 | } |
| 350 | 350 | }, |
| 351 | 351 | }, |
| 352 | S = { | |
| 352 | C = { | |
| 353 | 353 | preencode(e, d) { |
| 354 | 354 | e.end++ |
| 355 | 355 | }, |
| … | … | @@ -439,7 +439,7 @@ const n = { |
| 439 | 439 | B = e.frame(L), |
| 440 | 440 | N = e.frame(q), |
| 441 | 441 | V = e.frame(j), |
| 442 | O = { | |
| 442 | U = { | |
| 443 | 443 | preencode(e, d) { |
| 444 | 444 | ;(E.preencode(e, d.devices), |
| 445 | 445 | B.preencode(e, d.members), |
| … | … | @@ -456,7 +456,7 @@ const n = { |
| 456 | 456 | files: V.decode(e), |
| 457 | 457 | }), |
| 458 | 458 | }, |
| 459 | U = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 459 | O = { Default: 1, Broadcast: 2, DirectMessage: 3 }, | |
| 460 | 460 | J = { |
| 461 | 461 | preencode(e, d) { |
| 462 | 462 | e.end++ |
| … | … | @@ -558,9 +558,9 @@ const n = { |
| 558 | 558 | preencode(d, n) { |
| 559 | 559 | ;(d.end++, |
| 560 | 560 | n.title && e.string.preencode(d, n.title), |
| 561 | n.avatar && Ti.preencode(d, n.avatar), | |
| 561 | n.avatar && Di.preencode(d, n.avatar), | |
| 562 | 562 | n.description && e.string.preencode(d, n.description), |
| 563 | o >= 17 && n.supportedLanguages && Ri.preencode(d, n.supportedLanguages), | |
| 563 | o >= 17 && n.supportedLanguages && Si.preencode(d, n.supportedLanguages), | |
| 564 | 564 | o >= 19 && n.blindPeers && Y.preencode(d, n.blindPeers)) |
| 565 | 565 | }, |
| 566 | 566 | encode(d, n) { |
| … | … | @@ -572,18 +572,18 @@ const n = { |
| 572 | 572 | (o >= 19 && n.blindPeers ? 16 : 0) |
| 573 | 573 | ;(e.uint.encode(d, c), |
| 574 | 574 | n.title && e.string.encode(d, n.title), |
| 575 | n.avatar && Ti.encode(d, n.avatar), | |
| 575 | n.avatar && Di.encode(d, n.avatar), | |
| 576 | 576 | n.description && e.string.encode(d, n.description), |
| 577 | o >= 17 && n.supportedLanguages && Ri.encode(d, n.supportedLanguages), | |
| 577 | o >= 17 && n.supportedLanguages && Si.encode(d, n.supportedLanguages), | |
| 578 | 578 | o >= 19 && n.blindPeers && Y.encode(d, n.blindPeers)) |
| 579 | 579 | }, |
| 580 | 580 | decode(d) { |
| 581 | 581 | const n = e.uint.decode(d) |
| 582 | 582 | return { |
| 583 | 583 | title: 1 & n ? e.string.decode(d) : null, |
| 584 | avatar: 2 & n ? Ti.decode(d) : null, | |
| 584 | avatar: 2 & n ? Di.decode(d) : null, | |
| 585 | 585 | description: 4 & n ? e.string.decode(d) : null, |
| 586 | supportedLanguages: o >= 17 && 8 & n ? Ri.decode(d) : null, | |
| 586 | supportedLanguages: o >= 17 && 8 & n ? Si.decode(d) : null, | |
| 587 | 587 | blindPeers: o >= 19 && 16 & n ? Y.decode(d) : null, |
| 588 | 588 | } |
| 589 | 589 | }, |
| … | … | @@ -643,7 +643,7 @@ const n = { |
| 643 | 643 | ;(e.fixed32.preencode(d, o.key), |
| 644 | 644 | e.fixed32.preencode(d, o.memberKey), |
| 645 | 645 | te.preencode(d, o.status), |
| 646 | Ai.preencode(d, o.profile), | |
| 646 | Ci.preencode(d, o.profile), | |
| 647 | 647 | d.end++, |
| 648 | 648 | o.invitation && ie.preencode(d, o.invitation)) |
| 649 | 649 | }, |
| … | … | @@ -652,7 +652,7 @@ const n = { |
| 652 | 652 | ;(e.fixed32.encode(d, o.key), |
| 653 | 653 | e.fixed32.encode(d, o.memberKey), |
| 654 | 654 | te.encode(d, o.status), |
| 655 | Ai.encode(d, o.profile), | |
| 655 | Ci.encode(d, o.profile), | |
| 656 | 656 | e.uint.encode(d, n), |
| 657 | 657 | o.invitation && ie.encode(d, o.invitation)) |
| 658 | 658 | }, |
| … | … | @@ -660,7 +660,7 @@ const n = { |
| 660 | 660 | key: e.fixed32.decode(d), |
| 661 | 661 | memberKey: e.fixed32.decode(d), |
| 662 | 662 | status: te.decode(d), |
| 663 | profile: Ai.decode(d), | |
| 663 | profile: Ci.decode(d), | |
| 664 | 664 | invitation: 1 & e.uint.decode(d) ? ie.decode(d) : null, |
| 665 | 665 | }), |
| 666 | 666 | }, |
| … | … | @@ -670,7 +670,7 @@ const n = { |
| 670 | 670 | d.end++, |
| 671 | 671 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 672 | 672 | o.displayName && e.string.preencode(d, o.displayName), |
| 673 | o.avatar && Mi.preencode(d, o.avatar), | |
| 673 | o.avatar && Fi.preencode(d, o.avatar), | |
| 674 | 674 | o.username && e.string.preencode(d, o.username)) |
| 675 | 675 | }, |
| 676 | 676 | encode(d, o) { |
| … | … | @@ -680,7 +680,7 @@ const n = { |
| 680 | 680 | e.uint.encode(d, n), |
| 681 | 681 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 682 | 682 | o.displayName && e.string.encode(d, o.displayName), |
| 683 | o.avatar && Mi.encode(d, o.avatar), | |
| 683 | o.avatar && Fi.encode(d, o.avatar), | |
| 684 | 684 | o.username && e.string.encode(d, o.username)) |
| 685 | 685 | }, |
| 686 | 686 | decode(d) { |
| … | … | @@ -690,7 +690,7 @@ const n = { |
| 690 | 690 | timestamp: o, |
| 691 | 691 | mailbox: 1 & n ? e.fixed32.decode(d) : null, |
| 692 | 692 | displayName: 2 & n ? e.string.decode(d) : null, |
| 693 | avatar: 4 & n ? Mi.decode(d) : null, | |
| 693 | avatar: 4 & n ? Fi.decode(d) : null, | |
| 694 | 694 | username: 8 & n ? e.string.decode(d) : null, |
| 695 | 695 | } |
| 696 | 696 | }, |
| … | … | @@ -735,12 +735,12 @@ const n = { |
| 735 | 735 | }, |
| 736 | 736 | fe = { |
| 737 | 737 | preencode(e, d) { |
| 738 | ;(Di.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 738 | ;(Ii.preencode(e, d.profile), ce.preencode(e, d.attestation)) | |
| 739 | 739 | }, |
| 740 | 740 | encode(e, d) { |
| 741 | ;(Di.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 741 | ;(Ii.encode(e, d.profile), ce.encode(e, d.attestation)) | |
| 742 | 742 | }, |
| 743 | decode: (e) => ({ profile: Di.decode(e), attestation: ce.decode(e) }), | |
| 743 | decode: (e) => ({ profile: Ii.decode(e), attestation: ce.decode(e) }), | |
| 744 | 744 | }, |
| 745 | 745 | me = { |
| 746 | 746 | preencode(d, o) { |
| … | … | @@ -822,7 +822,7 @@ const n = { |
| 822 | 822 | }, |
| 823 | 823 | we = be, |
| 824 | 824 | Pe = ve, |
| 825 | Te = { | |
| 825 | Re = { | |
| 826 | 826 | preencode(e, d) { |
| 827 | 827 | ;(we.preencode(e, d.device), e.end++, d.member && Pe.preencode(e, d.member)) |
| 828 | 828 | }, |
| … | … | @@ -832,41 +832,41 @@ const n = { |
| 832 | 832 | }, |
| 833 | 833 | decode: (d) => ({ device: we.decode(d), member: 1 & e.uint.decode(d) ? Pe.decode(d) : null }), |
| 834 | 834 | }, |
| 835 | Re = e.frame(he), | |
| 836 | Ae = e.frame(Te), | |
| 835 | Te = e.frame(he), | |
| 836 | Ae = e.frame(Re), | |
| 837 | 837 | Me = { |
| 838 | 838 | preencode(e, d) { |
| 839 | 839 | ;(e.end++, |
| 840 | d.withInvitation && Re.preencode(e, d.withInvitation), | |
| 840 | d.withInvitation && Te.preencode(e, d.withInvitation), | |
| 841 | 841 | d.withMemberProof && Ae.preencode(e, d.withMemberProof)) |
| 842 | 842 | }, |
| 843 | 843 | encode(d, o) { |
| 844 | 844 | const n = (o.withInvitation ? 1 : 0) | (o.withMemberProof ? 2 : 0) |
| 845 | 845 | ;(e.uint.encode(d, n), |
| 846 | o.withInvitation && Re.encode(d, o.withInvitation), | |
| 846 | o.withInvitation && Te.encode(d, o.withInvitation), | |
| 847 | 847 | o.withMemberProof && Ae.encode(d, o.withMemberProof)) |
| 848 | 848 | }, |
| 849 | 849 | decode(d) { |
| 850 | 850 | const o = e.uint.decode(d) |
| 851 | 851 | return { |
| 852 | withInvitation: 1 & o ? Re.decode(d) : null, | |
| 852 | withInvitation: 1 & o ? Te.decode(d) : null, | |
| 853 | 853 | withMemberProof: 2 & o ? Ae.decode(d) : null, |
| 854 | 854 | } |
| 855 | 855 | }, |
| 856 | 856 | }, |
| 857 | 857 | De = e.frame(me), |
| 858 | Ce = e.frame(xe), | |
| 859 | Se = { | |
| 858 | Se = e.frame(xe), | |
| 859 | Ce = { | |
| 860 | 860 | preencode(e, d) { |
| 861 | ;(De.preencode(e, d.signedKeys), e.end++, d.identity && Ce.preencode(e, d.identity)) | |
| 861 | ;(De.preencode(e, d.signedKeys), e.end++, d.identity && Se.preencode(e, d.identity)) | |
| 862 | 862 | }, |
| 863 | 863 | encode(d, o) { |
| 864 | 864 | const n = o.identity ? 1 : 0 |
| 865 | ;(De.encode(d, o.signedKeys), e.uint.encode(d, n), o.identity && Ce.encode(d, o.identity)) | |
| 865 | ;(De.encode(d, o.signedKeys), e.uint.encode(d, n), o.identity && Se.encode(d, o.identity)) | |
| 866 | 866 | }, |
| 867 | 867 | decode: (d) => ({ |
| 868 | 868 | signedKeys: De.decode(d), |
| 869 | identity: 1 & e.uint.decode(d) ? Ce.decode(d) : null, | |
| 869 | identity: 1 & e.uint.decode(d) ? Se.decode(d) : null, | |
| 870 | 870 | }), |
| 871 | 871 | }, |
| 872 | 872 | Fe = { |
| … | … | @@ -950,7 +950,7 @@ const n = { |
| 950 | 950 | }, |
| 951 | 951 | decode: (d) => ({ header: Ne.decode(d), id: e.fixed32.decode(d) }), |
| 952 | 952 | }, |
| 953 | Oe = { | |
| 953 | Ue = { | |
| 954 | 954 | preencode(d, o) { |
| 955 | 955 | ;(e.fixed32.preencode(d, o.mailbox), |
| 956 | 956 | e.fixed32.preencode(d, o.invitationSeed), |
| … | … | @@ -967,7 +967,7 @@ const n = { |
| 967 | 967 | anchor: n.decode(d), |
| 968 | 968 | }), |
| 969 | 969 | }, |
| 970 | Ue = { | |
| 970 | Oe = { | |
| 971 | 971 | preencode(d, o) { |
| 972 | 972 | ;(e.fixed32.preencode(d, o.mailbox), |
| 973 | 973 | e.fixed32.preencode(d, o.invitationSeed), |
| … | … | @@ -996,8 +996,8 @@ const n = { |
| 996 | 996 | }, |
| 997 | 997 | decode: (d) => ({ mailbox: e.fixed32.decode(d) }), |
| 998 | 998 | }, |
| 999 | We = e.frame(Oe), | |
| 1000 | He = e.frame(Ue), | |
| 999 | We = e.frame(Ue), | |
| 1000 | He = e.frame(Oe), | |
| 1001 | 1001 | ze = e.frame(Je), |
| 1002 | 1002 | Ge = e.array(e.ipv4Address), |
| 1003 | 1003 | Qe = { |
| … | … | @@ -1006,7 +1006,7 @@ const n = { |
| 1006 | 1006 | d.room && We.preencode(e, d.room), |
| 1007 | 1007 | d.identity && He.preencode(e, d.identity), |
| 1008 | 1008 | d.contact && ze.preencode(e, d.contact), |
| 1009 | o >= 9 && d.readonly && Ci.preencode(e, d.readonly), | |
| 1009 | o >= 9 && d.readonly && Li.preencode(e, d.readonly), | |
| 1010 | 1010 | o >= 17 && d.additionalNodes && Ge.preencode(e, d.additionalNodes), |
| 1011 | 1011 | o >= 29 && d.buildType && vi.preencode(e, d.buildType)) |
| 1012 | 1012 | }, |
| … | … | @@ -1022,7 +1022,7 @@ const n = { |
| 1022 | 1022 | n.room && We.encode(d, n.room), |
| 1023 | 1023 | n.identity && He.encode(d, n.identity), |
| 1024 | 1024 | n.contact && ze.encode(d, n.contact), |
| 1025 | o >= 9 && n.readonly && Ci.encode(d, n.readonly), | |
| 1025 | o >= 9 && n.readonly && Li.encode(d, n.readonly), | |
| 1026 | 1026 | o >= 17 && n.additionalNodes && Ge.encode(d, n.additionalNodes), |
| 1027 | 1027 | o >= 29 && n.buildType && vi.encode(d, n.buildType)) |
| 1028 | 1028 | }, |
| … | … | @@ -1032,7 +1032,7 @@ const n = { |
| 1032 | 1032 | room: 1 & n ? We.decode(d) : null, |
| 1033 | 1033 | identity: 2 & n ? He.decode(d) : null, |
| 1034 | 1034 | contact: 4 & n ? ze.decode(d) : null, |
| 1035 | readonly: o >= 9 && 8 & n ? Ci.decode(d) : null, | |
| 1035 | readonly: o >= 9 && 8 & n ? Li.decode(d) : null, | |
| 1036 | 1036 | additionalNodes: o >= 17 && 16 & n ? Ge.decode(d) : null, |
| 1037 | 1037 | buildType: o >= 29 && 32 & n ? vi.decode(d) : null, |
| 1038 | 1038 | } |
| … | … | @@ -1051,13 +1051,13 @@ const n = { |
| 1051 | 1051 | Ze = _, |
| 1052 | 1052 | $e = { |
| 1053 | 1053 | preencode(e, d) { |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && Si.preencode(e, d.profile)) | |
| 1054 | ;(Ze.preencode(e, d.header), e.end++, d.profile && qi.preencode(e, d.profile)) | |
| 1055 | 1055 | }, |
| 1056 | 1056 | encode(d, o) { |
| 1057 | 1057 | const n = o.profile ? 1 : 0 |
| 1058 | ;(Ze.encode(d, o.header), e.uint.encode(d, n), o.profile && Si.encode(d, o.profile)) | |
| 1058 | ;(Ze.encode(d, o.header), e.uint.encode(d, n), o.profile && qi.encode(d, o.profile)) | |
| 1059 | 1059 | }, |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? Si.decode(d) : null }), | |
| 1060 | decode: (d) => ({ header: Ze.decode(d), profile: 1 & e.uint.decode(d) ? qi.decode(d) : null }), | |
| 1061 | 1061 | }, |
| 1062 | 1062 | _e = { preencode(e, d) {}, encode(e, d) {}, decode: (e) => ({}) }, |
| 1063 | 1063 | ed = _e, |
| … | … | @@ -1078,7 +1078,7 @@ const n = { |
| 1078 | 1078 | }), |
| 1079 | 1079 | }, |
| 1080 | 1080 | nd = _, |
| 1081 | cd = Ce, | |
| 1081 | cd = Se, | |
| 1082 | 1082 | rd = { |
| 1083 | 1083 | preencode(d, o) { |
| 1084 | 1084 | ;(nd.preencode(d, o.header), |
| … | … | @@ -1109,7 +1109,7 @@ const n = { |
| 1109 | 1109 | }, |
| 1110 | 1110 | decode: (d) => ({ header: td.decode(d), deviceKey: e.fixed32.decode(d) }), |
| 1111 | 1111 | }, |
| 1112 | ad = e.frame(C), | |
| 1112 | ad = e.frame(S), | |
| 1113 | 1113 | sd = ue, |
| 1114 | 1114 | pd = { |
| 1115 | 1115 | preencode(d, o) { |
| … | … | @@ -1128,7 +1128,7 @@ const n = { |
| 1128 | 1128 | ud.preencode(d, o.status), |
| 1129 | 1129 | ld.preencode(d, o.profile), |
| 1130 | 1130 | d.end++, |
| 1131 | o.proofs && Fi.preencode(d, o.proofs)) | |
| 1131 | o.proofs && ji.preencode(d, o.proofs)) | |
| 1132 | 1132 | }, |
| 1133 | 1133 | encode(d, o) { |
| 1134 | 1134 | const n = o.proofs ? 1 : 0 |
| … | … | @@ -1136,13 +1136,13 @@ const n = { |
| 1136 | 1136 | ud.encode(d, o.status), |
| 1137 | 1137 | ld.encode(d, o.profile), |
| 1138 | 1138 | e.uint.encode(d, n), |
| 1139 | o.proofs && Fi.encode(d, o.proofs)) | |
| 1139 | o.proofs && ji.encode(d, o.proofs)) | |
| 1140 | 1140 | }, |
| 1141 | 1141 | decode: (d) => ({ |
| 1142 | 1142 | key: e.fixed32.decode(d), |
| 1143 | 1143 | status: ud.decode(d), |
| 1144 | 1144 | profile: ld.decode(d), |
| 1145 | proofs: 1 & e.uint.decode(d) ? Fi.decode(d) : null, | |
| 1145 | proofs: 1 & e.uint.decode(d) ? ji.decode(d) : null, | |
| 1146 | 1146 | }), |
| 1147 | 1147 | }, |
| 1148 | 1148 | md = { |
| … | … | @@ -1181,7 +1181,7 @@ const n = { |
| 1181 | 1181 | decode: (e) => ({ header: yd.decode(e), member: xd.decode(e) }), |
| 1182 | 1182 | }, |
| 1183 | 1183 | vd = _, |
| 1184 | kd = e.frame(S), | |
| 1184 | kd = e.frame(C), | |
| 1185 | 1185 | gd = { |
| 1186 | 1186 | preencode(d, o) { |
| 1187 | 1187 | ;(vd.preencode(d, o.header), |
| … | … | @@ -1228,7 +1228,7 @@ const n = { |
| 1228 | 1228 | }, |
| 1229 | 1229 | decode: (d) => ({ header: wd.decode(d), key: e.fixed32.decode(d) }), |
| 1230 | 1230 | }, |
| 1231 | Td = { | |
| 1231 | Rd = { | |
| 1232 | 1232 | preencode(d, o) { |
| 1233 | 1233 | ;(e.fixed32.preencode(d, o.key), e.uint.preencode(d, o.mentions)) |
| 1234 | 1234 | }, |
| … | … | @@ -1237,7 +1237,7 @@ const n = { |
| 1237 | 1237 | }, |
| 1238 | 1238 | decode: (d) => ({ key: e.fixed32.decode(d), mentions: e.uint.decode(d) }), |
| 1239 | 1239 | }, |
| 1240 | Rd = { | |
| 1240 | Td = { | |
| 1241 | 1241 | preencode(d, o) { |
| 1242 | 1242 | ;(d.end++, o.memberKey && e.fixed32.preencode(d, o.memberKey)) |
| 1243 | 1243 | }, |
| … | … | @@ -1247,7 +1247,7 @@ const n = { |
| 1247 | 1247 | }, |
| 1248 | 1248 | decode: (d) => ({ memberKey: 1 & e.uint.decode(d) ? e.fixed32.decode(d) : null }), |
| 1249 | 1249 | }, |
| 1250 | Ad = Rd, | |
| 1250 | Ad = Td, | |
| 1251 | 1251 | Md = { |
| 1252 | 1252 | preencode(d, o) { |
| 1253 | 1253 | ;(d.end++, o.from && e.string.preencode(d, o.from), o.to && e.string.preencode(d, o.to)) |
| … | … | @@ -1261,9 +1261,9 @@ const n = { |
| 1261 | 1261 | return { from: 1 & o ? e.string.decode(d) : null, to: 2 & o ? e.string.decode(d) : null } |
| 1262 | 1262 | }, |
| 1263 | 1263 | }, |
| 1264 | Dd = e.frame(Rd), | |
| 1265 | Cd = e.frame(Ad), | |
| 1266 | Sd = e.frame(Md), | |
| 1264 | Dd = e.frame(Td), | |
| 1265 | Sd = e.frame(Ad), | |
| 1266 | Cd = e.frame(Md), | |
| 1267 | 1267 | Fd = { |
| 1268 | 1268 | preencode(d, n) { |
| 1269 | 1269 | const c = |
| … | … | @@ -1279,10 +1279,10 @@ const n = { |
| 1279 | 1279 | (o >= 27 && n.locationShared ? 512 : 0) |
| 1280 | 1280 | ;(e.uint.preencode(d, c), |
| 1281 | 1281 | n.memberJoined && Dd.preencode(d, n.memberJoined), |
| 1282 | n.memberLeft && Cd.preencode(d, n.memberLeft), | |
| 1283 | n.titleChanged && Sd.preencode(d, n.titleChanged), | |
| 1284 | o >= 4 && n.memberRemoved && Ii.preencode(d, n.memberRemoved), | |
| 1285 | o >= 27 && n.locationShared && Li.preencode(d, n.locationShared)) | |
| 1282 | n.memberLeft && Sd.preencode(d, n.memberLeft), | |
| 1283 | n.titleChanged && Cd.preencode(d, n.titleChanged), | |
| 1284 | o >= 4 && n.memberRemoved && Ei.preencode(d, n.memberRemoved), | |
| 1285 | o >= 27 && n.locationShared && Bi.preencode(d, n.locationShared)) | |
| 1286 | 1286 | }, |
| 1287 | 1287 | encode(d, n) { |
| 1288 | 1288 | const c = |
| … | … | @@ -1298,30 +1298,30 @@ const n = { |
| 1298 | 1298 | (o >= 27 && n.locationShared ? 512 : 0) |
| 1299 | 1299 | ;(e.uint.encode(d, c), |
| 1300 | 1300 | n.memberJoined && Dd.encode(d, n.memberJoined), |
| 1301 | n.memberLeft && Cd.encode(d, n.memberLeft), | |
| 1302 | n.titleChanged && Sd.encode(d, n.titleChanged), | |
| 1303 | o >= 4 && n.memberRemoved && Ii.encode(d, n.memberRemoved), | |
| 1304 | o >= 27 && n.locationShared && Li.encode(d, n.locationShared)) | |
| 1301 | n.memberLeft && Sd.encode(d, n.memberLeft), | |
| 1302 | n.titleChanged && Cd.encode(d, n.titleChanged), | |
| 1303 | o >= 4 && n.memberRemoved && Ei.encode(d, n.memberRemoved), | |
| 1304 | o >= 27 && n.locationShared && Bi.encode(d, n.locationShared)) | |
| 1305 | 1305 | }, |
| 1306 | 1306 | decode(d) { |
| 1307 | 1307 | const n = e.uint.decode(d) |
| 1308 | 1308 | return { |
| 1309 | 1309 | memberJoined: 1 & n ? Dd.decode(d) : null, |
| 1310 | memberLeft: 2 & n ? Cd.decode(d) : null, | |
| 1311 | titleChanged: 4 & n ? Sd.decode(d) : null, | |
| 1310 | memberLeft: 2 & n ? Sd.decode(d) : null, | |
| 1311 | titleChanged: 4 & n ? Cd.decode(d) : null, | |
| 1312 | 1312 | callStarted: !!(8 & n), |
| 1313 | 1313 | callHangup: !!(16 & n), |
| 1314 | 1314 | callMissed: !!(32 & n), |
| 1315 | 1315 | roomAvatarChanged: o >= 4 && !!(64 & n), |
| 1316 | 1316 | invitationCreated: o >= 4 && !!(128 & n), |
| 1317 | memberRemoved: o >= 4 && 256 & n ? Ii.decode(d) : null, | |
| 1318 | locationShared: o >= 27 && 512 & n ? Li.decode(d) : null, | |
| 1317 | memberRemoved: o >= 4 && 256 & n ? Ei.decode(d) : null, | |
| 1318 | locationShared: o >= 27 && 512 & n ? Bi.decode(d) : null, | |
| 1319 | 1319 | } |
| 1320 | 1320 | }, |
| 1321 | 1321 | }, |
| 1322 | 1322 | Id = { |
| 1323 | 1323 | preencode(e, d) { |
| 1324 | ;(e.end++, o >= 27 && d.locationShared && qi.preencode(e, d.locationShared)) | |
| 1324 | ;(e.end++, o >= 27 && d.locationShared && Ni.preencode(e, d.locationShared)) | |
| 1325 | 1325 | }, |
| 1326 | 1326 | encode(d, n) { |
| 1327 | 1327 | const c = |
| … | … | @@ -1329,7 +1329,7 @@ const n = { |
| 1329 | 1329 | (n.callHangup ? 2 : 0) | |
| 1330 | 1330 | (n.callMissed ? 4 : 0) | |
| 1331 | 1331 | (o >= 27 && n.locationShared ? 8 : 0) |
| 1332 | ;(e.uint.encode(d, c), o >= 27 && n.locationShared && qi.encode(d, n.locationShared)) | |
| 1332 | ;(e.uint.encode(d, c), o >= 27 && n.locationShared && Ni.encode(d, n.locationShared)) | |
| 1333 | 1333 | }, |
| 1334 | 1334 | decode(d) { |
| 1335 | 1335 | const n = e.uint.decode(d) |
| … | … | @@ -1337,7 +1337,7 @@ const n = { |
| 1337 | 1337 | callStarted: !!(1 & n), |
| 1338 | 1338 | callHangup: !!(2 & n), |
| 1339 | 1339 | callMissed: !!(4 & n), |
| 1340 | locationShared: o >= 27 && 8 & n ? qi.decode(d) : null, | |
| 1340 | locationShared: o >= 27 && 8 & n ? Ni.decode(d) : null, | |
| 1341 | 1341 | } |
| 1342 | 1342 | }, |
| 1343 | 1343 | }, |
| … | … | @@ -1372,7 +1372,7 @@ const n = { |
| 1372 | 1372 | }, |
| 1373 | 1373 | Nd = K, |
| 1374 | 1374 | Vd = e.array(e.uint), |
| 1375 | Od = { | |
| 1375 | Ud = { | |
| 1376 | 1376 | preencode(d, n) { |
| 1377 | 1377 | ;(d.end++, |
| 1378 | 1378 | n.title && e.string.preencode(d, n.title), |
| … | … | @@ -1402,24 +1402,24 @@ const n = { |
| 1402 | 1402 | } |
| 1403 | 1403 | }, |
| 1404 | 1404 | }, |
| 1405 | Ud = qd, | |
| 1406 | Jd = e.frame(Od), | |
| 1405 | Od = qd, | |
| 1406 | Jd = e.frame(Ud), | |
| 1407 | 1407 | Wd = { |
| 1408 | 1408 | preencode(d, o) { |
| 1409 | ;(Ud.preencode(d, o.range), | |
| 1409 | ;(Od.preencode(d, o.range), | |
| 1410 | 1410 | e.string.preencode(d, o.url), |
| 1411 | 1411 | d.end++, |
| 1412 | 1412 | o.preview && Jd.preencode(d, o.preview)) |
| 1413 | 1413 | }, |
| 1414 | 1414 | encode(d, o) { |
| 1415 | 1415 | const n = o.preview ? 1 : 0 |
| 1416 | ;(Ud.encode(d, o.range), | |
| 1416 | ;(Od.encode(d, o.range), | |
| 1417 | 1417 | e.string.encode(d, o.url), |
| 1418 | 1418 | e.uint.encode(d, n), |
| 1419 | 1419 | o.preview && Jd.encode(d, o.preview)) |
| 1420 | 1420 | }, |
| 1421 | 1421 | decode: (d) => ({ |
| 1422 | range: Ud.decode(d), | |
| 1422 | range: Od.decode(d), | |
| 1423 | 1423 | url: e.string.decode(d), |
| 1424 | 1424 | preview: 1 & e.uint.decode(d) ? Jd.decode(d) : null, |
| 1425 | 1425 | }), |
| … | … | @@ -1456,7 +1456,7 @@ const n = { |
| 1456 | 1456 | n.emoji && Zd.preencode(d, n.emoji), |
| 1457 | 1457 | n.codeBlock && $d.preencode(d, n.codeBlock), |
| 1458 | 1458 | n.strike && _d.preencode(d, n.strike), |
| 1459 | o >= 17 && n.translation && ji.preencode(d, n.translation)) | |
| 1459 | o >= 17 && n.translation && Vi.preencode(d, n.translation)) | |
| 1460 | 1460 | }, |
| 1461 | 1461 | encode(d, n) { |
| 1462 | 1462 | const c = |
| … | … | @@ -1480,7 +1480,7 @@ const n = { |
| 1480 | 1480 | n.emoji && Zd.encode(d, n.emoji), |
| 1481 | 1481 | n.codeBlock && $d.encode(d, n.codeBlock), |
| 1482 | 1482 | n.strike && _d.encode(d, n.strike), |
| 1483 | o >= 17 && n.translation && ji.encode(d, n.translation)) | |
| 1483 | o >= 17 && n.translation && Vi.encode(d, n.translation)) | |
| 1484 | 1484 | }, |
| 1485 | 1485 | decode(d) { |
| 1486 | 1486 | const n = e.uint.decode(d) |
| … | … | @@ -1494,7 +1494,7 @@ const n = { |
| 1494 | 1494 | emoji: 64 & n ? Zd.decode(d) : null, |
| 1495 | 1495 | codeBlock: 128 & n ? $d.decode(d) : null, |
| 1496 | 1496 | strike: 256 & n ? _d.decode(d) : null, |
| 1497 | translation: o >= 17 && 512 & n ? ji.decode(d) : null, | |
| 1497 | translation: o >= 17 && 512 & n ? Vi.decode(d) : null, | |
| 1498 | 1498 | } |
| 1499 | 1499 | }, |
| 1500 | 1500 | }, |
| … | … | @@ -1639,7 +1639,7 @@ const n = { |
| 1639 | 1639 | }, |
| 1640 | 1640 | decode: (d) => ({ thread: e.uint.decode(d), index: e.uint.decode(d) }), |
| 1641 | 1641 | }, |
| 1642 | mo = e.frame(O), | |
| 1642 | mo = e.frame(U), | |
| 1643 | 1643 | yo = { |
| 1644 | 1644 | preencode(d, o) { |
| 1645 | 1645 | ;(e.uint.preencode(d, o.id), |
| … | … | @@ -1759,15 +1759,15 @@ const n = { |
| 1759 | 1759 | }, |
| 1760 | 1760 | }, |
| 1761 | 1761 | Po = _, |
| 1762 | To = e.frame(ro), | |
| 1763 | Ro = { | |
| 1762 | Ro = e.frame(ro), | |
| 1763 | To = { | |
| 1764 | 1764 | preencode(e, d) { |
| 1765 | ;(Po.preencode(e, d.header), To.preencode(e, d.message)) | |
| 1765 | ;(Po.preencode(e, d.header), Ro.preencode(e, d.message)) | |
| 1766 | 1766 | }, |
| 1767 | 1767 | encode(e, d) { |
| 1768 | ;(Po.encode(e, d.header), To.encode(e, d.message)) | |
| 1768 | ;(Po.encode(e, d.header), Ro.encode(e, d.message)) | |
| 1769 | 1769 | }, |
| 1770 | decode: (e) => ({ header: Po.decode(e), message: To.decode(e) }), | |
| 1770 | decode: (e) => ({ header: Po.decode(e), message: Ro.decode(e) }), | |
| 1771 | 1771 | }, |
| 1772 | 1772 | Ao = _, |
| 1773 | 1773 | Mo = { |
| … | … | @@ -1780,15 +1780,15 @@ const n = { |
| 1780 | 1780 | decode: (e) => ({ header: Ao.decode(e), oplog: c.decode(e) }), |
| 1781 | 1781 | }, |
| 1782 | 1782 | Do = _, |
| 1783 | Co = To, | |
| 1784 | So = { | |
| 1783 | So = Ro, | |
| 1784 | Co = { | |
| 1785 | 1785 | preencode(e, d) { |
| 1786 | ;(Do.preencode(e, d.header), c.preencode(e, d.oplog), Co.preencode(e, d.message)) | |
| 1786 | ;(Do.preencode(e, d.header), c.preencode(e, d.oplog), So.preencode(e, d.message)) | |
| 1787 | 1787 | }, |
| 1788 | 1788 | encode(e, d) { |
| 1789 | ;(Do.encode(e, d.header), c.encode(e, d.oplog), Co.encode(e, d.message)) | |
| 1789 | ;(Do.encode(e, d.header), c.encode(e, d.oplog), So.encode(e, d.message)) | |
| 1790 | 1790 | }, |
| 1791 | decode: (e) => ({ header: Do.decode(e), oplog: c.decode(e), message: Co.decode(e) }), | |
| 1791 | decode: (e) => ({ header: Do.decode(e), oplog: c.decode(e), message: So.decode(e) }), | |
| 1792 | 1792 | }, |
| 1793 | 1793 | Fo = _, |
| 1794 | 1794 | Io = { |
| … | … | @@ -1870,7 +1870,7 @@ const n = { |
| 1870 | 1870 | decode: (d) => ({ header: Bo.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), |
| 1871 | 1871 | }, |
| 1872 | 1872 | Vo = _, |
| 1873 | Oo = { | |
| 1873 | Uo = { | |
| 1874 | 1874 | preencode(d, o) { |
| 1875 | 1875 | ;(Vo.preencode(d, o.header), c.preencode(d, o.oplog), e.string.preencode(d, o.reaction)) |
| 1876 | 1876 | }, |
| … | … | @@ -1879,35 +1879,35 @@ const n = { |
| 1879 | 1879 | }, |
| 1880 | 1880 | decode: (d) => ({ header: Vo.decode(d), oplog: c.decode(d), reaction: e.string.decode(d) }), |
| 1881 | 1881 | }, |
| 1882 | Uo = _, | |
| 1882 | Oo = _, | |
| 1883 | 1883 | Jo = e.frame(Z), |
| 1884 | 1884 | Wo = { |
| 1885 | 1885 | preencode(d, o) { |
| 1886 | ;(Uo.preencode(d, o.header), e.uint.preencode(d, o.key), Jo.preencode(d, o.config)) | |
| 1886 | ;(Oo.preencode(d, o.header), e.uint.preencode(d, o.key), Jo.preencode(d, o.config)) | |
| 1887 | 1887 | }, |
| 1888 | 1888 | encode(d, o) { |
| 1889 | ;(Uo.encode(d, o.header), e.uint.encode(d, o.key), Jo.encode(d, o.config)) | |
| 1889 | ;(Oo.encode(d, o.header), e.uint.encode(d, o.key), Jo.encode(d, o.config)) | |
| 1890 | 1890 | }, |
| 1891 | decode: (d) => ({ header: Uo.decode(d), key: e.uint.decode(d), config: Jo.decode(d) }), | |
| 1891 | decode: (d) => ({ header: Oo.decode(d), key: e.uint.decode(d), config: Jo.decode(d) }), | |
| 1892 | 1892 | }, |
| 1893 | 1893 | Ho = { |
| 1894 | 1894 | preencode(d, o) { |
| 1895 | 1895 | ;(e.fixed32.preencode(d, o.memberKey), |
| 1896 | 1896 | e.string.preencode(d, o.displayName), |
| 1897 | 1897 | d.end++, |
| 1898 | o.avatar && Ei.preencode(d, o.avatar)) | |
| 1898 | o.avatar && Ui.preencode(d, o.avatar)) | |
| 1899 | 1899 | }, |
| 1900 | 1900 | encode(d, o) { |
| 1901 | 1901 | const n = o.avatar ? 1 : 0 |
| 1902 | 1902 | ;(e.fixed32.encode(d, o.memberKey), |
| 1903 | 1903 | e.string.encode(d, o.displayName), |
| 1904 | 1904 | e.uint.encode(d, n), |
| 1905 | o.avatar && Ei.encode(d, o.avatar)) | |
| 1905 | o.avatar && Ui.encode(d, o.avatar)) | |
| 1906 | 1906 | }, |
| 1907 | 1907 | decode: (d) => ({ |
| 1908 | 1908 | memberKey: e.fixed32.decode(d), |
| 1909 | 1909 | displayName: e.string.decode(d), |
| 1910 | avatar: 1 & e.uint.decode(d) ? Ei.decode(d) : null, | |
| 1910 | avatar: 1 & e.uint.decode(d) ? Ui.decode(d) : null, | |
| 1911 | 1911 | }), |
| 1912 | 1912 | }, |
| 1913 | 1913 | zo = { |
| … | … | @@ -2023,7 +2023,7 @@ const n = { |
| 2023 | 2023 | sn = { |
| 2024 | 2024 | preencode(d, o) { |
| 2025 | 2025 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2026 | Bi.preencode(d, o.status), | |
| 2026 | Oi.preencode(d, o.status), | |
| 2027 | 2027 | d.end++, |
| 2028 | 2028 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2029 | 2029 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2031,14 +2031,14 @@ const n = { |
| 2031 | 2031 | encode(d, o) { |
| 2032 | 2032 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2033 | 2033 | ;(e.fixed32.encode(d, o.memberKey), |
| 2034 | Bi.encode(d, o.status), | |
| 2034 | Oi.encode(d, o.status), | |
| 2035 | 2035 | e.uint.encode(d, n), |
| 2036 | 2036 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2037 | 2037 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| 2038 | 2038 | }, |
| 2039 | 2039 | decode(d) { |
| 2040 | 2040 | const o = e.fixed32.decode(d), |
| 2041 | n = Bi.decode(d), | |
| 2041 | n = Oi.decode(d), | |
| 2042 | 2042 | c = e.uint.decode(d) |
| 2043 | 2043 | return { |
| 2044 | 2044 | memberKey: o, |
| … | … | @@ -2192,15 +2192,15 @@ const n = { |
| 2192 | 2192 | decode: (d) => ({ header: hn.decode(d), blindResponse: e.buffer.decode(d) }), |
| 2193 | 2193 | }, |
| 2194 | 2194 | Pn = _, |
| 2195 | Tn = e.frame(Kn), | |
| 2196 | Rn = { | |
| 2195 | Rn = e.frame(Kn), | |
| 2196 | Tn = { | |
| 2197 | 2197 | preencode(e, d) { |
| 2198 | ;(Pn.preencode(e, d.header), Tn.preencode(e, d.invitation)) | |
| 2198 | ;(Pn.preencode(e, d.header), Rn.preencode(e, d.invitation)) | |
| 2199 | 2199 | }, |
| 2200 | 2200 | encode(e, d) { |
| 2201 | ;(Pn.encode(e, d.header), Tn.encode(e, d.invitation)) | |
| 2201 | ;(Pn.encode(e, d.header), Rn.encode(e, d.invitation)) | |
| 2202 | 2202 | }, |
| 2203 | decode: (e) => ({ header: Pn.decode(e), invitation: Tn.decode(e) }), | |
| 2203 | decode: (e) => ({ header: Pn.decode(e), invitation: Rn.decode(e) }), | |
| 2204 | 2204 | }, |
| 2205 | 2205 | An = _, |
| 2206 | 2206 | Mn = { |
| … | … | @@ -2243,7 +2243,7 @@ const n = { |
| 2243 | 2243 | } |
| 2244 | 2244 | }, |
| 2245 | 2245 | }, |
| 2246 | Cn = { | |
| 2246 | Sn = { | |
| 2247 | 2247 | preencode(e, d) { |
| 2248 | 2248 | e.end++ |
| 2249 | 2249 | }, |
| … | … | @@ -2253,7 +2253,8 @@ const n = { |
| 2253 | 2253 | (n.isFullyMuted ? 2 : 0) | |
| 2254 | 2254 | (n.isMentionsOnlyMuted ? 4 : 0) | |
| 2255 | 2255 | (o >= 14 && n.isReadOnly ? 8 : 0) | |
| 2256 | (o >= 27 && n.isFavorite ? 16 : 0) | |
| 2256 | (o >= 27 && n.isFavorite ? 16 : 0) | | |
| 2257 | (o >= 31 && n.isUnread ? 32 : 0) | |
| 2257 | 2258 | e.uint.encode(d, c) |
| 2258 | 2259 | }, |
| 2259 | 2260 | decode(d) { |
| … | … | @@ -2264,10 +2265,11 @@ const n = { |
| 2264 | 2265 | isMentionsOnlyMuted: !!(4 & n), |
| 2265 | 2266 | isReadOnly: o >= 14 && !!(8 & n), |
| 2266 | 2267 | isFavorite: o >= 27 && !!(16 & n), |
| 2268 | isUnread: o >= 31 && !!(32 & n), | |
| 2267 | 2269 | } |
| 2268 | 2270 | }, |
| 2269 | 2271 | }, |
| 2270 | Sn = e.frame(Cn), | |
| 2272 | Cn = e.frame(Sn), | |
| 2271 | 2273 | Fn = e.frame(Dn), |
| 2272 | 2274 | In = gn, |
| 2273 | 2275 | Ln = { |
| … | … | @@ -2275,7 +2277,7 @@ const n = { |
| 2275 | 2277 | ;(e.fixed32.preencode(d, c.roomKey), |
| 2276 | 2278 | e.buffer.preencode(d, c.encryptionKey), |
| 2277 | 2279 | e.fixed32.preencode(d, c.mailbox), |
| 2278 | Sn.preencode(d, c.status), | |
| 2280 | Cn.preencode(d, c.status), | |
| 2279 | 2281 | e.uint.preencode(d, c.clock), |
| 2280 | 2282 | d.end++, |
| 2281 | 2283 | c.initiator && n.preencode(d, c.initiator), |
| … | … | @@ -2294,7 +2296,7 @@ const n = { |
| 2294 | 2296 | ;(e.fixed32.encode(d, c.roomKey), |
| 2295 | 2297 | e.buffer.encode(d, c.encryptionKey), |
| 2296 | 2298 | e.fixed32.encode(d, c.mailbox), |
| 2297 | Sn.encode(d, c.status), | |
| 2299 | Cn.encode(d, c.status), | |
| 2298 | 2300 | e.uint.encode(d, c.clock), |
| 2299 | 2301 | e.uint.encode(d, r), |
| 2300 | 2302 | c.initiator && n.encode(d, c.initiator), |
| … | … | @@ -2307,7 +2309,7 @@ const n = { |
| 2307 | 2309 | const c = e.fixed32.decode(d), |
| 2308 | 2310 | r = e.buffer.decode(d), |
| 2309 | 2311 | t = e.fixed32.decode(d), |
| 2310 | i = Sn.decode(d), | |
| 2312 | i = Cn.decode(d), | |
| 2311 | 2313 | a = e.uint.decode(d), |
| 2312 | 2314 | s = e.uint.decode(d) |
| 2313 | 2315 | return { |
| … | … | @@ -2380,8 +2382,8 @@ const n = { |
| 2380 | 2382 | decode: (d) => ({ header: En.decode(d), discoveryKey: e.fixed32.decode(d) }), |
| 2381 | 2383 | }, |
| 2382 | 2384 | Nn = _, |
| 2383 | Vn = Sn, | |
| 2384 | On = { | |
| 2385 | Vn = Cn, | |
| 2386 | Un = { | |
| 2385 | 2387 | preencode(d, o) { |
| 2386 | 2388 | ;(Nn.preencode(d, o.header), |
| 2387 | 2389 | e.fixed32.preencode(d, o.roomKey), |
| … | … | @@ -2401,7 +2403,7 @@ const n = { |
| 2401 | 2403 | status: Vn.decode(d), |
| 2402 | 2404 | }), |
| 2403 | 2405 | }, |
| 2404 | Un = { | |
| 2406 | On = { | |
| 2405 | 2407 | preencode(e, d) { |
| 2406 | 2408 | e.end++ |
| 2407 | 2409 | }, |
| … | … | @@ -2415,7 +2417,7 @@ const n = { |
| 2415 | 2417 | preencode(d, o) { |
| 2416 | 2418 | ;(e.fixed32.preencode(d, o.memberKey), |
| 2417 | 2419 | e.uint.preencode(d, o.clock), |
| 2418 | Ni.preencode(d, o.status), | |
| 2420 | Ji.preencode(d, o.status), | |
| 2419 | 2421 | d.end++, |
| 2420 | 2422 | o.mailbox && e.fixed32.preencode(d, o.mailbox), |
| 2421 | 2423 | o.roomKey && e.fixed32.preencode(d, o.roomKey)) |
| … | … | @@ -2424,7 +2426,7 @@ const n = { |
| 2424 | 2426 | const n = (o.mailbox ? 1 : 0) | (o.roomKey ? 2 : 0) |
| 2425 | 2427 | ;(e.fixed32.encode(d, o.memberKey), |
| 2426 | 2428 | e.uint.encode(d, o.clock), |
| 2427 | Ni.encode(d, o.status), | |
| 2429 | Ji.encode(d, o.status), | |
| 2428 | 2430 | e.uint.encode(d, n), |
| 2429 | 2431 | o.mailbox && e.fixed32.encode(d, o.mailbox), |
| 2430 | 2432 | o.roomKey && e.fixed32.encode(d, o.roomKey)) |
| … | … | @@ -2432,7 +2434,7 @@ const n = { |
| 2432 | 2434 | decode(d) { |
| 2433 | 2435 | const o = e.fixed32.decode(d), |
| 2434 | 2436 | n = e.uint.decode(d), |
| 2435 | c = Ni.decode(d), | |
| 2437 | c = Ji.decode(d), | |
| 2436 | 2438 | r = e.uint.decode(d) |
| 2437 | 2439 | return { |
| 2438 | 2440 | memberKey: o, |
| … | … | @@ -2460,19 +2462,19 @@ const n = { |
| 2460 | 2462 | ;(Gn.preencode(d, o.header), |
| 2461 | 2463 | e.fixed32.preencode(d, o.memberKey), |
| 2462 | 2464 | e.uint.preencode(d, o.key), |
| 2463 | Vi.preencode(d, o.status)) | |
| 2465 | Wi.preencode(d, o.status)) | |
| 2464 | 2466 | }, |
| 2465 | 2467 | encode(d, o) { |
| 2466 | 2468 | ;(Gn.encode(d, o.header), |
| 2467 | 2469 | e.fixed32.encode(d, o.memberKey), |
| 2468 | 2470 | e.uint.encode(d, o.key), |
| 2469 | Vi.encode(d, o.status)) | |
| 2471 | Wi.encode(d, o.status)) | |
| 2470 | 2472 | }, |
| 2471 | 2473 | decode: (d) => ({ |
| 2472 | 2474 | header: Gn.decode(d), |
| 2473 | 2475 | memberKey: e.fixed32.decode(d), |
| 2474 | 2476 | key: e.uint.decode(d), |
| 2475 | status: Vi.decode(d), | |
| 2477 | status: Wi.decode(d), | |
| 2476 | 2478 | }), |
| 2477 | 2479 | }, |
| 2478 | 2480 | Xn = _, |
| … | … | @@ -2803,7 +2805,7 @@ const n = { |
| 2803 | 2805 | } |
| 2804 | 2806 | }, |
| 2805 | 2807 | }, |
| 2806 | Tc = { | |
| 2808 | Rc = { | |
| 2807 | 2809 | preencode(e, d) { |
| 2808 | 2810 | e.end++ |
| 2809 | 2811 | }, |
| … | … | @@ -2813,7 +2815,7 @@ const n = { |
| 2813 | 2815 | }, |
| 2814 | 2816 | decode: (d) => ({ isConfirmed: !!(1 & e.uint.decode(d)) }), |
| 2815 | 2817 | }, |
| 2816 | Rc = e.frame(Tc), | |
| 2818 | Tc = e.frame(Rc), | |
| 2817 | 2819 | Ac = Fn, |
| 2818 | 2820 | Mc = { |
| 2819 | 2821 | preencode(d, n) { |
| … | … | @@ -2821,30 +2823,36 @@ const n = { |
| 2821 | 2823 | e.fixed32.preencode(d, n.privateProfileKey), |
| 2822 | 2824 | t.preencode(d, n.deviceKeyPair), |
| 2823 | 2825 | e.buffer.preencode(d, n.deviceProof), |
| 2824 | Rc.preencode(d, n.status), | |
| 2826 | Tc.preencode(d, n.status), | |
| 2825 | 2827 | d.end++, |
| 2826 | 2828 | n.entropy && e.buffer.preencode(d, n.entropy), |
| 2827 | 2829 | n.swap && Ac.preencode(d, n.swap), |
| 2828 | o >= 9 && n.swapV2 && Oi.preencode(d, n.swapV2)) | |
| 2830 | o >= 9 && n.swapV2 && Hi.preencode(d, n.swapV2), | |
| 2831 | o >= 31 && n.proofShortenedAt && e.uint.preencode(d, n.proofShortenedAt)) | |
| 2829 | 2832 | }, |
| 2830 | 2833 | encode(d, n) { |
| 2831 | const c = (n.entropy ? 1 : 0) | (n.swap ? 2 : 0) | (o >= 9 && n.swapV2 ? 4 : 0) | |
| 2834 | const c = | |
| 2835 | (n.entropy ? 1 : 0) | | |
| 2836 | (n.swap ? 2 : 0) | | |
| 2837 | (o >= 9 && n.swapV2 ? 4 : 0) | | |
| 2838 | (o >= 31 && n.proofShortenedAt ? 8 : 0) | |
| 2832 | 2839 | ;(e.fixed32.encode(d, n.publicKey), |
| 2833 | 2840 | e.fixed32.encode(d, n.privateProfileKey), |
| 2834 | 2841 | t.encode(d, n.deviceKeyPair), |
| 2835 | 2842 | e.buffer.encode(d, n.deviceProof), |
| 2836 | Rc.encode(d, n.status), | |
| 2843 | Tc.encode(d, n.status), | |
| 2837 | 2844 | e.uint.encode(d, c), |
| 2838 | 2845 | n.entropy && e.buffer.encode(d, n.entropy), |
| 2839 | 2846 | n.swap && Ac.encode(d, n.swap), |
| 2840 | o >= 9 && n.swapV2 && Oi.encode(d, n.swapV2)) | |
| 2847 | o >= 9 && n.swapV2 && Hi.encode(d, n.swapV2), | |
| 2848 | o >= 31 && n.proofShortenedAt && e.uint.encode(d, n.proofShortenedAt)) | |
| 2841 | 2849 | }, |
| 2842 | 2850 | decode(d) { |
| 2843 | 2851 | const n = e.fixed32.decode(d), |
| 2844 | 2852 | c = e.fixed32.decode(d), |
| 2845 | 2853 | r = t.decode(d), |
| 2846 | 2854 | i = e.buffer.decode(d), |
| 2847 | a = Rc.decode(d), | |
| 2855 | a = Tc.decode(d), | |
| 2848 | 2856 | s = e.uint.decode(d) |
| 2849 | 2857 | return { |
| 2850 | 2858 | publicKey: n, |
| … | … | @@ -2854,7 +2862,8 @@ const n = { |
| 2854 | 2862 | status: a, |
| 2855 | 2863 | entropy: 1 & s ? e.buffer.decode(d) : null, |
| 2856 | 2864 | swap: 2 & s ? Ac.decode(d) : null, |
| 2857 | swapV2: o >= 9 && 4 & s ? Oi.decode(d) : null, | |
| 2865 | swapV2: o >= 9 && 4 & s ? Hi.decode(d) : null, | |
| 2866 | proofShortenedAt: o >= 31 && 8 & s ? e.uint.decode(d) : 0, | |
| 2858 | 2867 | } |
| 2859 | 2868 | }, |
| 2860 | 2869 | }, |
| … | … | @@ -2871,7 +2880,7 @@ const n = { |
| 2871 | 2880 | TestSlowTask: 10, |
| 2872 | 2881 | TestErrorTask: 11, |
| 2873 | 2882 | }, |
| 2874 | Cc = { | |
| 2883 | Sc = { | |
| 2875 | 2884 | preencode(e, d) { |
| 2876 | 2885 | e.end++ |
| 2877 | 2886 | }, |
| … | … | @@ -2881,7 +2890,7 @@ const n = { |
| 2881 | 2890 | }, |
| 2882 | 2891 | decode: (d) => e.uint.decode(d), |
| 2883 | 2892 | }, |
| 2884 | Sc = { | |
| 2893 | Cc = { | |
| 2885 | 2894 | preencode(d, o) { |
| 2886 | 2895 | ;(e.fixed32.preencode(d, o.roomKey), |
| 2887 | 2896 | e.buffer.preencode(d, o.encryptionKey), |
| … | … | @@ -2909,7 +2918,7 @@ const n = { |
| 2909 | 2918 | } |
| 2910 | 2919 | }, |
| 2911 | 2920 | }, |
| 2912 | Fc = Tn, | |
| 2921 | Fc = Rn, | |
| 2913 | 2922 | Ic = { |
| 2914 | 2923 | preencode(e, d) { |
| 2915 | 2924 | Fc.preencode(e, d.invitation) |
| … | … | @@ -3021,7 +3030,7 @@ const n = { |
| 3021 | 3030 | } |
| 3022 | 3031 | }, |
| 3023 | 3032 | }, |
| 3024 | Oc = { | |
| 3033 | Uc = { | |
| 3025 | 3034 | preencode(d, o) { |
| 3026 | 3035 | ;(e.fixed32.preencode(d, o.roomKey), d.end++) |
| 3027 | 3036 | }, |
| … | … | @@ -3031,7 +3040,7 @@ const n = { |
| 3031 | 3040 | }, |
| 3032 | 3041 | decode: (d) => ({ roomKey: e.fixed32.decode(d), isGossiped: !!(1 & e.uint.decode(d)) }), |
| 3033 | 3042 | }, |
| 3034 | Uc = { | |
| 3043 | Oc = { | |
| 3035 | 3044 | preencode(d, o) { |
| 3036 | 3045 | e.fixed32.preencode(d, o.roomKey) |
| 3037 | 3046 | }, |
| … | … | @@ -3068,7 +3077,7 @@ const n = { |
| 3068 | 3077 | e.fixed32.preencode(d, n.memberKey), |
| 3069 | 3078 | d.end++, |
| 3070 | 3079 | n.message && e.string.preencode(d, n.message), |
| 3071 | o >= 6 && n.contactInfo && Ui.preencode(d, n.contactInfo)) | |
| 3080 | o >= 6 && n.contactInfo && zi.preencode(d, n.contactInfo)) | |
| 3072 | 3081 | }, |
| 3073 | 3082 | encode(d, n) { |
| 3074 | 3083 | const c = (n.message ? 1 : 0) | (o >= 6 && n.contactInfo ? 2 : 0) |
| … | … | @@ -3076,7 +3085,7 @@ const n = { |
| 3076 | 3085 | e.fixed32.encode(d, n.memberKey), |
| 3077 | 3086 | e.uint.encode(d, c), |
| 3078 | 3087 | n.message && e.string.encode(d, n.message), |
| 3079 | o >= 6 && n.contactInfo && Ui.encode(d, n.contactInfo)) | |
| 3088 | o >= 6 && n.contactInfo && zi.encode(d, n.contactInfo)) | |
| 3080 | 3089 | }, |
| 3081 | 3090 | decode(d) { |
| 3082 | 3091 | const n = e.fixed32.decode(d), |
| … | … | @@ -3086,7 +3095,7 @@ const n = { |
| 3086 | 3095 | roomKey: n, |
| 3087 | 3096 | memberKey: c, |
| 3088 | 3097 | message: 1 & r ? e.string.decode(d) : null, |
| 3089 | contactInfo: o >= 6 && 2 & r ? Ui.decode(d) : null, | |
| 3098 | contactInfo: o >= 6 && 2 & r ? zi.decode(d) : null, | |
| 3090 | 3099 | } |
| 3091 | 3100 | }, |
| 3092 | 3101 | }, |
| … | … | @@ -3102,8 +3111,8 @@ const n = { |
| 3102 | 3111 | }, |
| 3103 | 3112 | zc = e.frame(Jc), |
| 3104 | 3113 | Gc = e.frame(Vc), |
| 3105 | Qc = e.frame(Oc), | |
| 3106 | Xc = e.frame(Uc), | |
| 3114 | Qc = e.frame(Uc), | |
| 3115 | Xc = e.frame(Oc), | |
| 3107 | 3116 | Yc = e.frame(Ic), |
| 3108 | 3117 | Zc = e.frame(Bc), |
| 3109 | 3118 | $c = e.frame(Lc), |
| … | … | @@ -3246,7 +3255,7 @@ const n = { |
| 3246 | 3255 | yr = e.frame(wo), |
| 3247 | 3256 | xr = Y, |
| 3248 | 3257 | br = e.frame(pd), |
| 3249 | vr = Sn, | |
| 3258 | vr = Cn, | |
| 3250 | 3259 | kr = { |
| 3251 | 3260 | preencode(d, n) { |
| 3252 | 3261 | const c = |
| … | … | @@ -3279,11 +3288,11 @@ const n = { |
| 3279 | 3288 | n.identity && mr.preencode(d, n.identity), |
| 3280 | 3289 | n.lastMessage && yr.preencode(d, n.lastMessage), |
| 3281 | 3290 | n.dm && xr.preencode(d, n.dm), |
| 3282 | o >= 19 && n.readLengths && Ji.preencode(d, n.readLengths), | |
| 3291 | o >= 19 && n.readLengths && Gi.preencode(d, n.readLengths), | |
| 3283 | 3292 | o >= 19 && n.lastMember && br.preencode(d, n.lastMember), |
| 3284 | 3293 | o >= 21 && n.version && e.uint.preencode(d, n.version), |
| 3285 | 3294 | o >= 27 && n.preferences && vr.preencode(d, n.preferences), |
| 3286 | o >= 28 && n.activeCall && Wi.preencode(d, n.activeCall)) | |
| 3295 | o >= 28 && n.activeCall && Qi.preencode(d, n.activeCall)) | |
| 3287 | 3296 | }, |
| 3288 | 3297 | encode(d, n) { |
| 3289 | 3298 | const c = |
| … | … | @@ -3316,11 +3325,11 @@ const n = { |
| 3316 | 3325 | n.identity && mr.encode(d, n.identity), |
| 3317 | 3326 | n.lastMessage && yr.encode(d, n.lastMessage), |
| 3318 | 3327 | n.dm && xr.encode(d, n.dm), |
| 3319 | o >= 19 && n.readLengths && Ji.encode(d, n.readLengths), | |
| 3328 | o >= 19 && n.readLengths && Gi.encode(d, n.readLengths), | |
| 3320 | 3329 | o >= 19 && n.lastMember && br.encode(d, n.lastMember), |
| 3321 | 3330 | o >= 21 && n.version && e.uint.encode(d, n.version), |
| 3322 | 3331 | o >= 27 && n.preferences && vr.encode(d, n.preferences), |
| 3323 | o >= 28 && n.activeCall && Wi.encode(d, n.activeCall)) | |
| 3332 | o >= 28 && n.activeCall && Qi.encode(d, n.activeCall)) | |
| 3324 | 3333 | }, |
| 3325 | 3334 | decode(d) { |
| 3326 | 3335 | const n = e.fixed32.decode(d), |
| … | … | @@ -3353,15 +3362,15 @@ const n = { |
| 3353 | 3362 | identity: 8 & m ? mr.decode(d) : null, |
| 3354 | 3363 | lastMessage: 16 & m ? yr.decode(d) : null, |
| 3355 | 3364 | dm: 32 & m ? xr.decode(d) : null, |
| 3356 | readLengths: o >= 19 && 64 & m ? Ji.decode(d) : null, | |
| 3365 | readLengths: o >= 19 && 64 & m ? Gi.decode(d) : null, | |
| 3357 | 3366 | lastMember: o >= 19 && 128 & m ? br.decode(d) : null, |
| 3358 | 3367 | version: o >= 21 && 256 & m ? e.uint.decode(d) : 0, |
| 3359 | 3368 | preferences: o >= 27 && 512 & m ? vr.decode(d) : null, |
| 3360 | activeCall: o >= 28 && 1024 & m ? Wi.decode(d) : null, | |
| 3369 | activeCall: o >= 28 && 1024 & m ? Qi.decode(d) : null, | |
| 3361 | 3370 | } |
| 3362 | 3371 | }, |
| 3363 | 3372 | }, |
| 3364 | gr = Sn, | |
| 3373 | gr = Cn, | |
| 3365 | 3374 | Kr = { |
| 3366 | 3375 | preencode(d, o) { |
| 3367 | 3376 | ;(e.fixed32.preencode(d, o.roomKey), gr.preencode(d, o.status)) |
| … | … | @@ -3412,15 +3421,15 @@ const n = { |
| 3412 | 3421 | }, |
| 3413 | 3422 | decode: (d) => ({ key: e.fixed32.decode(d), profile: wr.decode(d) }), |
| 3414 | 3423 | }, |
| 3415 | Tr = ur, | |
| 3416 | Rr = { | |
| 3424 | Rr = ur, | |
| 3425 | Tr = { | |
| 3417 | 3426 | preencode(d, o) { |
| 3418 | ;(e.fixed32.preencode(d, o.roomKey), Tr.preencode(d, o.device)) | |
| 3427 | ;(e.fixed32.preencode(d, o.roomKey), Rr.preencode(d, o.device)) | |
| 3419 | 3428 | }, |
| 3420 | 3429 | encode(d, o) { |
| 3421 | ;(e.fixed32.encode(d, o.roomKey), Tr.encode(d, o.device)) | |
| 3430 | ;(e.fixed32.encode(d, o.roomKey), Rr.encode(d, o.device)) | |
| 3422 | 3431 | }, |
| 3423 | decode: (d) => ({ roomKey: e.fixed32.decode(d), device: Tr.decode(d) }), | |
| 3432 | decode: (d) => ({ roomKey: e.fixed32.decode(d), device: Rr.decode(d) }), | |
| 3424 | 3433 | }, |
| 3425 | 3434 | Ar = K, |
| 3426 | 3435 | Mr = { |
| … | … | @@ -3462,12 +3471,12 @@ const n = { |
| 3462 | 3471 | }, |
| 3463 | 3472 | }, |
| 3464 | 3473 | Dr = _, |
| 3465 | Cr = { | |
| 3474 | Sr = { | |
| 3466 | 3475 | preencode(d, n) { |
| 3467 | 3476 | ;(Dr.preencode(d, n.header), |
| 3468 | 3477 | c.preencode(d, n.oplog), |
| 3469 | 3478 | e.uint.preencode(d, n.index), |
| 3470 | Hi.preencode(d, n.preview), | |
| 3479 | Xi.preencode(d, n.preview), | |
| 3471 | 3480 | d.end++, |
| 3472 | 3481 | o >= 12 && n.displayType && Qr.preencode(d, n.displayType)) |
| 3473 | 3482 | }, |
| … | … | @@ -3476,7 +3485,7 @@ const n = { |
| 3476 | 3485 | ;(Dr.encode(d, n.header), |
| 3477 | 3486 | c.encode(d, n.oplog), |
| 3478 | 3487 | e.uint.encode(d, n.index), |
| 3479 | Hi.encode(d, n.preview), | |
| 3488 | Xi.encode(d, n.preview), | |
| 3480 | 3489 | e.uint.encode(d, r), |
| 3481 | 3490 | o >= 12 && n.displayType && Qr.encode(d, n.displayType)) |
| 3482 | 3491 | }, |
| … | … | @@ -3484,7 +3493,7 @@ const n = { |
| 3484 | 3493 | const n = Dr.decode(d), |
| 3485 | 3494 | r = c.decode(d), |
| 3486 | 3495 | t = e.uint.decode(d), |
| 3487 | i = Hi.decode(d), | |
| 3496 | i = Xi.decode(d), | |
| 3488 | 3497 | a = d.start < d.end ? e.uint.decode(d) : 0 |
| 3489 | 3498 | return { |
| 3490 | 3499 | header: n, |
| … | … | @@ -3495,7 +3504,7 @@ const n = { |
| 3495 | 3504 | } |
| 3496 | 3505 | }, |
| 3497 | 3506 | }, |
| 3498 | Sr = { | |
| 3507 | Cr = { | |
| 3499 | 3508 | preencode(d, n) { |
| 3500 | 3509 | ;(d.end++, o >= 4 && n.memberKey && e.fixed32.preencode(d, n.memberKey)) |
| 3501 | 3510 | }, |
| … | … | @@ -3613,7 +3622,7 @@ const n = { |
| 3613 | 3622 | }, |
| 3614 | 3623 | decode: (d) => ({ header: Nr.decode(d), memberKey: e.fixed32.decode(d) }), |
| 3615 | 3624 | }, |
| 3616 | Or = { | |
| 3625 | Ur = { | |
| 3617 | 3626 | preencode(d, o) { |
| 3618 | 3627 | e.fixed32.preencode(d, o.privateProfileKey) |
| 3619 | 3628 | }, |
| … | … | @@ -3622,7 +3631,7 @@ const n = { |
| 3622 | 3631 | }, |
| 3623 | 3632 | decode: (d) => ({ privateProfileKey: e.fixed32.decode(d) }), |
| 3624 | 3633 | }, |
| 3625 | Ur = { | |
| 3634 | Or = { | |
| 3626 | 3635 | preencode(d, o) { |
| 3627 | 3636 | ;(e.fixed32.preencode(d, o.key), e.fixed32.preencode(d, o.responsePublicKey)) |
| 3628 | 3637 | }, |
| … | … | @@ -3990,7 +3999,7 @@ const n = { |
| 3990 | 3999 | }, |
| 3991 | 4000 | }, |
| 3992 | 4001 | Pt = _, |
| 3993 | Tt = { | |
| 4002 | Rt = { | |
| 3994 | 4003 | preencode(d, o) { |
| 3995 | 4004 | ;(Pt.preencode(d, o.header), e.uint.preencode(d, o.length)) |
| 3996 | 4005 | }, |
| … | … | @@ -3999,7 +4008,7 @@ const n = { |
| 3999 | 4008 | }, |
| 4000 | 4009 | decode: (d) => ({ header: Pt.decode(d), length: e.uint.decode(d) }), |
| 4001 | 4010 | }, |
| 4002 | Rt = { | |
| 4011 | Tt = { | |
| 4003 | 4012 | preencode(d, o) { |
| 4004 | 4013 | ;(e.fixed32.preencode(d, o.memberKey), e.uint.preencode(d, o.length)) |
| 4005 | 4014 | }, |
| … | … | @@ -4014,35 +4023,59 @@ const n = { |
| 4014 | 4023 | e.end++ |
| 4015 | 4024 | }, |
| 4016 | 4025 | encode(d, n) { |
| 4017 | const c = o >= 19 && n.disableReadReceipts ? 1 : 0 | |
| 4026 | const c = | |
| 4027 | (o >= 19 && n.disableReadReceipts ? 1 : 0) | (o >= 31 && n.stripAttachmentMetadata ? 2 : 0) | |
| 4018 | 4028 | e.uint.encode(d, c) |
| 4019 | 4029 | }, |
| 4020 | 4030 | decode(d) { |
| 4021 | 4031 | const n = e.uint.decode(d) |
| 4022 | return { disableReadReceipts: o >= 19 && !!(1 & n) } | |
| 4032 | return { | |
| 4033 | disableReadReceipts: o >= 19 && !!(1 & n), | |
| 4034 | stripAttachmentMetadata: o >= 31 && !!(2 & n), | |
| 4035 | } | |
| 4023 | 4036 | }, |
| 4024 | 4037 | }, |
| 4025 | Dt = { disableReadReceipts: "disableReadReceipts" }, | |
| 4026 | Ct = { | |
| 4038 | Dt = { | |
| 4039 | disableReadReceipts: "disableReadReceipts", | |
| 4040 | stripAttachmentMetadata: "stripAttachmentMetadata", | |
| 4041 | }, | |
| 4042 | St = { | |
| 4027 | 4043 | preencode(e, d) { |
| 4028 | 4044 | e.end++ |
| 4029 | 4045 | }, |
| 4030 | 4046 | encode(d, o) { |
| 4031 | if ("disableReadReceipts" !== o) throw new Error("Unknown enum") | |
| 4032 | e.uint.encode(d, 1) | |
| 4047 | switch (o) { | |
| 4048 | case "disableReadReceipts": | |
| 4049 | e.uint.encode(d, 1) | |
| 4050 | break | |
| 4051 | case "stripAttachmentMetadata": | |
| 4052 | e.uint.encode(d, 2) | |
| 4053 | break | |
| 4054 | default: | |
| 4055 | throw new Error("Unknown enum") | |
| 4056 | } | |
| 4057 | }, | |
| 4058 | decode(d) { | |
| 4059 | switch (e.uint.decode(d)) { | |
| 4060 | case 1: | |
| 4061 | return "disableReadReceipts" | |
| 4062 | case 2: | |
| 4063 | return "stripAttachmentMetadata" | |
| 4064 | default: | |
| 4065 | return null | |
| 4066 | } | |
| 4033 | 4067 | }, |
| 4034 | decode: (d) => (1 === e.uint.decode(d) ? "disableReadReceipts" : null), | |
| 4035 | 4068 | }, |
| 4036 | St = _, | |
| 4069 | Ct = _, | |
| 4037 | 4070 | Ft = e.frame(Mt), |
| 4038 | 4071 | It = { |
| 4039 | 4072 | preencode(e, d) { |
| 4040 | ;(St.preencode(e, d.header), Ct.preencode(e, d.key), Ft.preencode(e, d.settings)) | |
| 4073 | ;(Ct.preencode(e, d.header), St.preencode(e, d.key), Ft.preencode(e, d.settings)) | |
| 4041 | 4074 | }, |
| 4042 | 4075 | encode(e, d) { |
| 4043 | ;(St.encode(e, d.header), Ct.encode(e, d.key), Ft.encode(e, d.settings)) | |
| 4076 | ;(Ct.encode(e, d.header), St.encode(e, d.key), Ft.encode(e, d.settings)) | |
| 4044 | 4077 | }, |
| 4045 | decode: (e) => ({ header: St.decode(e), key: Ct.decode(e), settings: Ft.decode(e) }), | |
| 4078 | decode: (e) => ({ header: Ct.decode(e), key: St.decode(e), settings: Ft.decode(e) }), | |
| 4046 | 4079 | }, |
| 4047 | 4080 | Lt = { |
| 4048 | 4081 | preencode(d, n) { |
| … | … | @@ -4119,7 +4152,7 @@ const n = { |
| 4119 | 4152 | decode: (d) => ({ roomKey: e.fixed32.decode(d), total: e.uint.decode(d) }), |
| 4120 | 4153 | }, |
| 4121 | 4154 | Vt = { Flag: 1 }, |
| 4122 | Ot = { | |
| 4155 | Ut = { | |
| 4123 | 4156 | preencode(e, d) { |
| 4124 | 4157 | e.end++ |
| 4125 | 4158 | }, |
| … | … | @@ -4129,44 +4162,44 @@ const n = { |
| 4129 | 4162 | }, |
| 4130 | 4163 | decode: (d) => e.uint.decode(d), |
| 4131 | 4164 | }, |
| 4132 | Ut = { | |
| 4165 | Ot = { | |
| 4133 | 4166 | preencode(d, o) { |
| 4134 | 4167 | ;(e.fixed32.preencode(d, o.key), |
| 4135 | 4168 | e.fixed32.preencode(d, o.sender), |
| 4136 | 4169 | e.uint.preencode(d, o.clock), |
| 4137 | Ot.preencode(d, o.label)) | |
| 4170 | Ut.preencode(d, o.label)) | |
| 4138 | 4171 | }, |
| 4139 | 4172 | encode(d, o) { |
| 4140 | 4173 | ;(e.fixed32.encode(d, o.key), |
| 4141 | 4174 | e.fixed32.encode(d, o.sender), |
| 4142 | 4175 | e.uint.encode(d, o.clock), |
| 4143 | Ot.encode(d, o.label)) | |
| 4176 | Ut.encode(d, o.label)) | |
| 4144 | 4177 | }, |
| 4145 | 4178 | decode: (d) => ({ |
| 4146 | 4179 | key: e.fixed32.decode(d), |
| 4147 | 4180 | sender: e.fixed32.decode(d), |
| 4148 | 4181 | clock: e.uint.decode(d), |
| 4149 | label: Ot.decode(d), | |
| 4182 | label: Ut.decode(d), | |
| 4150 | 4183 | }), |
| 4151 | 4184 | }, |
| 4152 | 4185 | Jt = _, |
| 4153 | 4186 | Wt = { |
| 4154 | 4187 | preencode(d, o) { |
| 4155 | ;(Jt.preencode(d, o.header), e.fixed32.preencode(d, o.key), Ot.preencode(d, o.label)) | |
| 4188 | ;(Jt.preencode(d, o.header), e.fixed32.preencode(d, o.key), Ut.preencode(d, o.label)) | |
| 4156 | 4189 | }, |
| 4157 | 4190 | encode(d, o) { |
| 4158 | ;(Jt.encode(d, o.header), e.fixed32.encode(d, o.key), Ot.encode(d, o.label)) | |
| 4191 | ;(Jt.encode(d, o.header), e.fixed32.encode(d, o.key), Ut.encode(d, o.label)) | |
| 4159 | 4192 | }, |
| 4160 | decode: (d) => ({ header: Jt.decode(d), key: e.fixed32.decode(d), label: Ot.decode(d) }), | |
| 4193 | decode: (d) => ({ header: Jt.decode(d), key: e.fixed32.decode(d), label: Ut.decode(d) }), | |
| 4161 | 4194 | }, |
| 4162 | 4195 | Ht = { |
| 4163 | 4196 | preencode(d, o) { |
| 4164 | ;(Ot.preencode(d, o.label), e.uint.preencode(d, o.count)) | |
| 4197 | ;(Ut.preencode(d, o.label), e.uint.preencode(d, o.count)) | |
| 4165 | 4198 | }, |
| 4166 | 4199 | encode(d, o) { |
| 4167 | ;(Ot.encode(d, o.label), e.uint.encode(d, o.count)) | |
| 4200 | ;(Ut.encode(d, o.label), e.uint.encode(d, o.count)) | |
| 4168 | 4201 | }, |
| 4169 | decode: (d) => ({ label: Ot.decode(d), count: e.uint.decode(d) }), | |
| 4202 | decode: (d) => ({ label: Ut.decode(d), count: e.uint.decode(d) }), | |
| 4170 | 4203 | }, |
| 4171 | 4204 | zt = e.array(e.frame(Ht)), |
| 4172 | 4205 | Gt = { |
| … | … | @@ -4540,41 +4573,96 @@ const n = { |
| 4540 | 4573 | return { buildType: n, latestOfflineAbi: o >= 30 && 1 & c ? e.uint.decode(d) : 0 } |
| 4541 | 4574 | }, |
| 4542 | 4575 | }, |
| 4543 | Pi = e.frame(P), | |
| 4544 | Ti = Pi, | |
| 4545 | Ri = e.array(rt), | |
| 4546 | Ai = e.frame(pe), | |
| 4547 | Mi = Pi, | |
| 4548 | Di = Ai, | |
| 4549 | Ci = e.frame(Er), | |
| 4550 | Si = Ai, | |
| 4551 | Fi = e.frame(md), | |
| 4552 | Ii = e.frame(Sr), | |
| 4553 | Li = e.frame(Qt), | |
| 4554 | qi = Li, | |
| 4555 | ji = e.array(e.frame(it)), | |
| 4556 | Ei = Pi, | |
| 4557 | Bi = e.frame(Un), | |
| 4576 | Pi = _, | |
| 4577 | Ri = { | |
| 4578 | preencode(d, o) { | |
| 4579 | ;(Pi.preencode(d, o.header), | |
| 4580 | e.fixed32.preencode(d, o.deviceKey), | |
| 4581 | e.buffer.preencode(d, o.deviceProof), | |
| 4582 | e.buffer.preencode(d, o.writerProof)) | |
| 4583 | }, | |
| 4584 | encode(d, o) { | |
| 4585 | ;(Pi.encode(d, o.header), | |
| 4586 | e.fixed32.encode(d, o.deviceKey), | |
| 4587 | e.buffer.encode(d, o.deviceProof), | |
| 4588 | e.buffer.encode(d, o.writerProof)) | |
| 4589 | }, | |
| 4590 | decode: (d) => ({ | |
| 4591 | header: Pi.decode(d), | |
| 4592 | deviceKey: e.fixed32.decode(d), | |
| 4593 | deviceProof: e.buffer.decode(d), | |
| 4594 | writerProof: e.buffer.decode(d), | |
| 4595 | }), | |
| 4596 | }, | |
| 4597 | Ti = { | |
| 4598 | preencode(d, n) { | |
| 4599 | ;(d.end++, | |
| 4600 | o >= 31 && | |
| 4601 | n.otaResyncPrivateProfileBump && | |
| 4602 | e.uint.preencode(d, n.otaResyncPrivateProfileBump)) | |
| 4603 | }, | |
| 4604 | encode(d, n) { | |
| 4605 | const c = o >= 31 && n.otaResyncPrivateProfileBump ? 1 : 0 | |
| 4606 | ;(e.uint.encode(d, c), | |
| 4607 | o >= 31 && n.otaResyncPrivateProfileBump && e.uint.encode(d, n.otaResyncPrivateProfileBump)) | |
| 4608 | }, | |
| 4609 | decode(d) { | |
| 4610 | const n = e.uint.decode(d) | |
| 4611 | return { otaResyncPrivateProfileBump: o >= 31 && 1 & n ? e.uint.decode(d) : 0 } | |
| 4612 | }, | |
| 4613 | }, | |
| 4614 | Ai = { | |
| 4615 | preencode(d, o) { | |
| 4616 | ;(e.fixed32.preencode(d, o.deviceKey), | |
| 4617 | e.buffer.preencode(d, o.proof), | |
| 4618 | e.uint.preencode(d, o.createdAt)) | |
| 4619 | }, | |
| 4620 | encode(d, o) { | |
| 4621 | ;(e.fixed32.encode(d, o.deviceKey), | |
| 4622 | e.buffer.encode(d, o.proof), | |
| 4623 | e.uint.encode(d, o.createdAt)) | |
| 4624 | }, | |
| 4625 | decode: (d) => ({ | |
| 4626 | deviceKey: e.fixed32.decode(d), | |
| 4627 | proof: e.buffer.decode(d), | |
| 4628 | createdAt: e.uint.decode(d), | |
| 4629 | }), | |
| 4630 | }, | |
| 4631 | Mi = e.frame(P), | |
| 4632 | Di = Mi, | |
| 4633 | Si = e.array(rt), | |
| 4634 | Ci = e.frame(pe), | |
| 4635 | Fi = Mi, | |
| 4636 | Ii = Ci, | |
| 4637 | Li = e.frame(Er), | |
| 4638 | qi = Ci, | |
| 4639 | ji = e.frame(md), | |
| 4640 | Ei = e.frame(Cr), | |
| 4641 | Bi = e.frame(Qt), | |
| 4558 | 4642 | Ni = Bi, |
| 4559 | Vi = Bi, | |
| 4560 | Oi = e.frame(Br), | |
| 4561 | Ui = e.frame(Ir), | |
| 4562 | Ji = e.array(e.frame(Rt)), | |
| 4563 | Wi = e.frame(yi), | |
| 4564 | Hi = Pi | |
| 4565 | function zi(e) { | |
| 4643 | Vi = e.array(e.frame(it)), | |
| 4644 | Ui = Mi, | |
| 4645 | Oi = e.frame(On), | |
| 4646 | Ji = Oi, | |
| 4647 | Wi = Oi, | |
| 4648 | Hi = e.frame(Br), | |
| 4649 | zi = e.frame(Ir), | |
| 4650 | Gi = e.array(e.frame(Tt)), | |
| 4651 | Qi = e.frame(yi), | |
| 4652 | Xi = Mi | |
| 4653 | function Yi(e) { | |
| 4566 | 4654 | o = e |
| 4567 | 4655 | } |
| 4568 | function Gi(d, n, c = 30) { | |
| 4569 | return ((o = c), e.encode(Yi(d), n)) | |
| 4656 | function Zi(d, n, c = 31) { | |
| 4657 | return ((o = c), e.encode(ea(d), n)) | |
| 4570 | 4658 | } |
| 4571 | function Qi(d, n, c = 30) { | |
| 4572 | return ((o = c), e.decode(Yi(d), n)) | |
| 4659 | function $i(d, n, c = 31) { | |
| 4660 | return ((o = c), e.decode(ea(d), n)) | |
| 4573 | 4661 | } |
| 4574 | function Xi(e) { | |
| 4662 | function _i(e) { | |
| 4575 | 4663 | switch (e) { |
| 4576 | 4664 | case "@keet/room-type": |
| 4577 | return U | |
| 4665 | return O | |
| 4578 | 4666 | case "@local/tasks": |
| 4579 | 4667 | return Dc |
| 4580 | 4668 | case "@keet/display-type": |
| … | … | @@ -4597,7 +4685,7 @@ function Xi(e) { |
| 4597 | 4685 | throw new Error("Enum not found " + e) |
| 4598 | 4686 | } |
| 4599 | 4687 | } |
| 4600 | function Yi(e) { | |
| 4688 | function ea(e) { | |
| 4601 | 4689 | switch (e) { |
| 4602 | 4690 | case "@keet/head": |
| 4603 | 4691 | return n |
| … | … | @@ -4628,15 +4716,15 @@ function Yi(e) { |
| 4628 | 4716 | case "@keet/image-file": |
| 4629 | 4717 | return P |
| 4630 | 4718 | case "@keet/file-status": |
| 4631 | return T | |
| 4719 | return R | |
| 4632 | 4720 | case "@keet/file-record": |
| 4633 | 4721 | return M |
| 4634 | 4722 | case "@keet/device-status": |
| 4635 | 4723 | return D |
| 4636 | 4724 | case "@keet/member-status": |
| 4637 | return C | |
| 4638 | case "@keet/member-moderation-status": | |
| 4639 | 4725 | return S |
| 4726 | case "@keet/member-moderation-status": | |
| 4727 | return C | |
| 4640 | 4728 | case "@keet/abi": |
| 4641 | 4729 | return F |
| 4642 | 4730 | case "@keet/device-stats": |
| … | … | @@ -4648,7 +4736,7 @@ function Yi(e) { |
| 4648 | 4736 | case "@keet/file-stats": |
| 4649 | 4737 | return j |
| 4650 | 4738 | case "@keet/stats": |
| 4651 | return O | |
| 4739 | return U | |
| 4652 | 4740 | case "@keet/room-type": |
| 4653 | 4741 | return J |
| 4654 | 4742 | case "@keet/system-settings": |
| … | … | @@ -4692,11 +4780,11 @@ function Yi(e) { |
| 4692 | 4780 | case "@keet/device-request-with-invitation-and-proof": |
| 4693 | 4781 | return he |
| 4694 | 4782 | case "@keet/device-request-with-member-proof": |
| 4695 | return Te | |
| 4783 | return Re | |
| 4696 | 4784 | case "@keet/device-request": |
| 4697 | 4785 | return Me |
| 4698 | 4786 | case "@keet/device-response": |
| 4699 | return Se | |
| 4787 | return Ce | |
| 4700 | 4788 | case "@keet/invitation-metadata": |
| 4701 | 4789 | return Fe |
| 4702 | 4790 | case "@keet/invitation": |
| … | … | @@ -4706,9 +4794,9 @@ function Yi(e) { |
| 4706 | 4794 | case "@keet/remove-invitation-operation": |
| 4707 | 4795 | return Ve |
| 4708 | 4796 | case "@keet/sendable-room-invitation": |
| 4709 | return Oe | |
| 4710 | case "@keet/sendable-identity-invitation": | |
| 4711 | 4797 | return Ue |
| 4798 | case "@keet/sendable-identity-invitation": | |
| 4799 | return Oe | |
| 4712 | 4800 | case "@keet/sendable-contact-invitation": |
| 4713 | 4801 | return Je |
| 4714 | 4802 | case "@keet/sendable-invitation": |
| … | … | @@ -4742,9 +4830,9 @@ function Yi(e) { |
| 4742 | 4830 | case "@keet/remove-member-operation": |
| 4743 | 4831 | return Pd |
| 4744 | 4832 | case "@keet/member-activity": |
| 4745 | return Td | |
| 4746 | case "@keet/member-joined-event": | |
| 4747 | 4833 | return Rd |
| 4834 | case "@keet/member-joined-event": | |
| 4835 | return Td | |
| 4748 | 4836 | case "@keet/member-left-event": |
| 4749 | 4837 | return Ad |
| 4750 | 4838 | case "@keet/title-changed-chat-event": |
| … | … | @@ -4760,7 +4848,7 @@ function Yi(e) { |
| 4760 | 4848 | case "@keet/mention-display-item": |
| 4761 | 4849 | return Bd |
| 4762 | 4850 | case "@keet/link-preview": |
| 4763 | return Od | |
| 4851 | return Ud | |
| 4764 | 4852 | case "@keet/display-link-item": |
| 4765 | 4853 | return Wd |
| 4766 | 4854 | case "@keet/display": |
| … | … | @@ -4782,11 +4870,11 @@ function Yi(e) { |
| 4782 | 4870 | case "@keet/full-chat-message-record": |
| 4783 | 4871 | return wo |
| 4784 | 4872 | case "@keet/add-chat-message-operation": |
| 4785 | return Ro | |
| 4873 | return To | |
| 4786 | 4874 | case "@keet/remove-chat-message-operation": |
| 4787 | 4875 | return Mo |
| 4788 | 4876 | case "@keet/update-chat-message-operation": |
| 4789 | return So | |
| 4877 | return Co | |
| 4790 | 4878 | case "@keet/pin-chat-message-operation": |
| 4791 | 4879 | return Io |
| 4792 | 4880 | case "@keet/reaction": |
| … | … | @@ -4798,7 +4886,7 @@ function Yi(e) { |
| 4798 | 4886 | case "@keet/add-reaction-operation": |
| 4799 | 4887 | return No |
| 4800 | 4888 | case "@keet/remove-reaction-operation": |
| 4801 | return Oo | |
| 4889 | return Uo | |
| 4802 | 4890 | case "@keet/update-room-config-operation": |
| 4803 | 4891 | return Wo |
| 4804 | 4892 | case "@keet/group-member": |
| … | … | @@ -4834,13 +4922,13 @@ function Yi(e) { |
| 4834 | 4922 | case "@keet-private-id/resolve-pending-invitation-operation": |
| 4835 | 4923 | return wn |
| 4836 | 4924 | case "@keet-private-id/add-pending-invitation-operation": |
| 4837 | return Rn | |
| 4925 | return Tn | |
| 4838 | 4926 | case "@keet-private-id/remove-pending-invitation-operation": |
| 4839 | 4927 | return Mn |
| 4840 | 4928 | case "@keet-private-id/identity-swap": |
| 4841 | 4929 | return Dn |
| 4842 | 4930 | case "@keet-private-id/room-status": |
| 4843 | return Cn | |
| 4931 | return Sn | |
| 4844 | 4932 | case "@keet-private-id/room": |
| 4845 | 4933 | return Ln |
| 4846 | 4934 | case "@keet-private-id/add-room-operation": |
| … | … | @@ -4848,9 +4936,9 @@ function Yi(e) { |
| 4848 | 4936 | case "@keet-private-id/remove-room-operation": |
| 4849 | 4937 | return Bn |
| 4850 | 4938 | case "@keet-private-id/update-room-status-operation": |
| 4851 | return On | |
| 4852 | case "@keet-private-id/contact-status": | |
| 4853 | 4939 | return Un |
| 4940 | case "@keet-private-id/contact-status": | |
| 4941 | return On | |
| 4854 | 4942 | case "@keet-private-id/contact-record": |
| 4855 | 4943 | return Jn |
| 4856 | 4944 | case "@keet-private-id/add-contact-operation": |
| … | … | @@ -4890,13 +4978,13 @@ function Yi(e) { |
| 4890 | 4978 | case "@local/room-migration": |
| 4891 | 4979 | return Pc |
| 4892 | 4980 | case "@local/identity-status": |
| 4893 | return Tc | |
| 4981 | return Rc | |
| 4894 | 4982 | case "@local/identity-record": |
| 4895 | 4983 | return Mc |
| 4896 | 4984 | case "@local/tasks": |
| 4897 | return Cc | |
| 4898 | case "@local/room-keys": | |
| 4899 | 4985 | return Sc |
| 4986 | case "@local/room-keys": | |
| 4987 | return Cc | |
| 4900 | 4988 | case "@local/join-room-invitation-task": |
| 4901 | 4989 | return Ic |
| 4902 | 4990 | case "@local/join-room-response-task": |
| … | … | @@ -4910,9 +4998,9 @@ function Yi(e) { |
| 4910 | 4998 | case "@local/create-room-task": |
| 4911 | 4999 | return Vc |
| 4912 | 5000 | case "@local/leave-room-task": |
| 4913 | return Oc | |
| 4914 | case "@local/clear-room-task": | |
| 4915 | 5001 | return Uc |
| 5002 | case "@local/clear-room-task": | |
| 5003 | return Oc | |
| 4916 | 5004 | case "@local/restore-identity-task": |
| 4917 | 5005 | return Jc |
| 4918 | 5006 | case "@local/send-contact-request-task": |
| … | … | @@ -4936,13 +5024,13 @@ function Yi(e) { |
| 4936 | 5024 | case "@local/member": |
| 4937 | 5025 | return Pr |
| 4938 | 5026 | case "@local/device": |
| 4939 | return Rr | |
| 5027 | return Tr | |
| 4940 | 5028 | case "@local/file": |
| 4941 | 5029 | return Mr |
| 4942 | 5030 | case "@keet/add-file-preview-operation": |
| 4943 | return Cr | |
| 4944 | case "@keet/member-removed-event": | |
| 4945 | 5031 | return Sr |
| 5032 | case "@keet/member-removed-event": | |
| 5033 | return Cr | |
| 4946 | 5034 | case "@keet/member-contact-info": |
| 4947 | 5035 | return Ir |
| 4948 | 5036 | case "@keet/remove-device-operation": |
| … | … | @@ -4956,9 +5044,9 @@ function Yi(e) { |
| 4956 | 5044 | case "@keet-private-id/activate-contact-room-operation": |
| 4957 | 5045 | return Vr |
| 4958 | 5046 | case "@local/identity-swap": |
| 4959 | return Or | |
| 4960 | case "@local/writer-append": | |
| 4961 | 5047 | return Ur |
| 5048 | case "@local/writer-append": | |
| 5049 | return Or | |
| 4962 | 5050 | case "@local/room-metadata": |
| 4963 | 5051 | return Jr |
| 4964 | 5052 | case "@local/debug-flag": |
| … | … | @@ -5002,15 +5090,15 @@ function Yi(e) { |
| 5002 | 5090 | case "@keet/chat-label-digest": |
| 5003 | 5091 | return wt |
| 5004 | 5092 | case "@keet/update-read-length-operation": |
| 5005 | return Tt | |
| 5006 | case "@keet/read-length": | |
| 5007 | 5093 | return Rt |
| 5094 | case "@keet/read-length": | |
| 5095 | return Tt | |
| 5008 | 5096 | case "@keet/tmp-removed-member": |
| 5009 | 5097 | return At |
| 5010 | 5098 | case "@keet-private-id/settings": |
| 5011 | 5099 | return Mt |
| 5012 | 5100 | case "@keet-private-id/user-settings-key": |
| 5013 | return Ct | |
| 5101 | return St | |
| 5014 | 5102 | case "@keet-private-id/update-settings-operation": |
| 5015 | 5103 | return It |
| 5016 | 5104 | case "@local/error-record-details": |
| … | … | @@ -5022,9 +5110,9 @@ function Yi(e) { |
| 5022 | 5110 | case "@local/file-stats": |
| 5023 | 5111 | return Nt |
| 5024 | 5112 | case "@keet/member-label-type": |
| 5025 | return Ot | |
| 5026 | case "@keet/member-label": | |
| 5027 | 5113 | return Ut |
| 5114 | case "@keet/member-label": | |
| 5115 | return Ot | |
| 5028 | 5116 | case "@keet/add-member-label-operation": |
| 5029 | 5117 | return Wt |
| 5030 | 5118 | case "@keet/member-label-summary": |
| … | … | @@ -5067,12 +5155,18 @@ function Yi(e) { |
| 5067 | 5155 | return hi |
| 5068 | 5156 | case "@local/environment-record": |
| 5069 | 5157 | return wi |
| 5158 | case "@keet-private-id/shorten-device-attestation-operation": | |
| 5159 | return Ri | |
| 5160 | case "@local/ota-actions": | |
| 5161 | return Ti | |
| 5162 | case "@local/device-attestation": | |
| 5163 | return Ai | |
| 5070 | 5164 | default: |
| 5071 | 5165 | throw new Error("Encoder not found " + e) |
| 5072 | 5166 | } |
| 5073 | 5167 | } |
| 5074 | function Zi(e, d = 30) { | |
| 5075 | const n = Yi(e) | |
| 5168 | function da(e, d = 31) { | |
| 5169 | const n = ea(e) | |
| 5076 | 5170 | return { |
| 5077 | 5171 | preencode(e, c) { |
| 5078 | 5172 | ;((o = d), n.preencode(e, c)) |
| … | … | @@ -5083,14 +5177,14 @@ function Zi(e, d = 30) { |
| 5083 | 5177 | decode: (e) => ((o = d), n.decode(e)), |
| 5084 | 5178 | } |
| 5085 | 5179 | } |
| 5086 | const $i = Zi | |
| 5180 | const oa = da | |
| 5087 | 5181 | module.exports = { |
| 5088 | resolveStruct: $i, | |
| 5089 | getStruct: Zi, | |
| 5090 | getEnum: Xi, | |
| 5091 | getEncoding: Yi, | |
| 5092 | encode: Gi, | |
| 5093 | decode: Qi, | |
| 5094 | setVersion: zi, | |
| 5182 | resolveStruct: oa, | |
| 5183 | getStruct: da, | |
| 5184 | getEnum: _i, | |
| 5185 | getEncoding: ea, | |
| 5186 | encode: Zi, | |
| 5187 | decode: $i, | |
| 5188 | setVersion: Yi, | |
| 5095 | 5189 | version: o, |
| 5096 | 5190 | } |
| … | … | @@ -1,5 +1,5 @@ |
| 1 | 1 | { |
| 2 | "version": 30, | |
| 2 | "version": 31, | |
| 3 | 3 | "schema": [ |
| 4 | 4 | { |
| 5 | 5 | "name": "public-key", |
| … | … | @@ -3219,6 +3219,11 @@ |
| 3219 | 3219 | "name": "isFavorite", |
| 3220 | 3220 | "type": "bool", |
| 3221 | 3221 | "version": 27 |
| 3222 | }, | |
| 3223 | { | |
| 3224 | "name": "isUnread", | |
| 3225 | "type": "bool", | |
| 3226 | "version": 31 | |
| 3222 | 3227 | } |
| 3223 | 3228 | ] |
| 3224 | 3229 | }, |
| … | … | @@ -3974,6 +3979,11 @@ |
| 3974 | 3979 | "name": "swapV2", |
| 3975 | 3980 | "type": "@keet-private-id/identity-swap-v2", |
| 3976 | 3981 | "version": 9 |
| 3982 | }, | |
| 3983 | { | |
| 3984 | "name": "proofShortenedAt", | |
| 3985 | "type": "uint", | |
| 3986 | "version": 31 | |
| 3977 | 3987 | } |
| 3978 | 3988 | ] |
| 3979 | 3989 | }, |
| … | … | @@ -5551,6 +5561,11 @@ |
| 5551 | 5561 | "name": "disableReadReceipts", |
| 5552 | 5562 | "type": "bool", |
| 5553 | 5563 | "version": 19 |
| 5564 | }, | |
| 5565 | { | |
| 5566 | "name": "stripAttachmentMetadata", | |
| 5567 | "type": "bool", | |
| 5568 | "version": 31 | |
| 5554 | 5569 | } |
| 5555 | 5570 | ] |
| 5556 | 5571 | }, |
| … | … | @@ -5562,6 +5577,10 @@ |
| 5562 | 5577 | { |
| 5563 | 5578 | "key": "disableReadReceipts", |
| 5564 | 5579 | "version": 19 |
| 5580 | }, | |
| 5581 | { | |
| 5582 | "key": "stripAttachmentMetadata", | |
| 5583 | "version": 31 | |
| 5565 | 5584 | } |
| 5566 | 5585 | ], |
| 5567 | 5586 | "strings": true |
| … | … | @@ -6261,6 +6280,77 @@ |
| 6261 | 6280 | "version": 30 |
| 6262 | 6281 | } |
| 6263 | 6282 | ] |
| 6283 | }, | |
| 6284 | { | |
| 6285 | "name": "shorten-device-attestation-operation", | |
| 6286 | "namespace": "keet-private-id", | |
| 6287 | "compact": false, | |
| 6288 | "flagsPosition": -1, | |
| 6289 | "fields": [ | |
| 6290 | { | |
| 6291 | "name": "header", | |
| 6292 | "required": true, | |
| 6293 | "type": "@keet/operation-header", | |
| 6294 | "version": 31 | |
| 6295 | }, | |
| 6296 | { | |
| 6297 | "name": "deviceKey", | |
| 6298 | "required": true, | |
| 6299 | "type": "@keet/device-key", | |
| 6300 | "version": 31 | |
| 6301 | }, | |
| 6302 | { | |
| 6303 | "name": "deviceProof", | |
| 6304 | "required": true, | |
| 6305 | "type": "buffer", | |
| 6306 | "version": 31 | |
| 6307 | }, | |
| 6308 | { | |
| 6309 | "name": "writerProof", | |
| 6310 | "required": true, | |
| 6311 | "type": "buffer", | |
| 6312 | "version": 31 | |
| 6313 | } | |
| 6314 | ] | |
| 6315 | }, | |
| 6316 | { | |
| 6317 | "name": "ota-actions", | |
| 6318 | "namespace": "local", | |
| 6319 | "compact": false, | |
| 6320 | "flagsPosition": 0, | |
| 6321 | "fields": [ | |
| 6322 | { | |
| 6323 | "name": "otaResyncPrivateProfileBump", | |
| 6324 | "type": "uint", | |
| 6325 | "version": 31 | |
| 6326 | } | |
| 6327 | ] | |
| 6328 | }, | |
| 6329 | { | |
| 6330 | "name": "device-attestation", | |
| 6331 | "namespace": "local", | |
| 6332 | "compact": false, | |
| 6333 | "flagsPosition": -1, | |
| 6334 | "fields": [ | |
| 6335 | { | |
| 6336 | "name": "deviceKey", | |
| 6337 | "required": true, | |
| 6338 | "type": "@keet/device-key", | |
| 6339 | "version": 31 | |
| 6340 | }, | |
| 6341 | { | |
| 6342 | "name": "proof", | |
| 6343 | "required": true, | |
| 6344 | "type": "buffer", | |
| 6345 | "version": 31 | |
| 6346 | }, | |
| 6347 | { | |
| 6348 | "name": "createdAt", | |
| 6349 | "required": true, | |
| 6350 | "type": "uint", | |
| 6351 | "version": 31 | |
| 6352 | } | |
| 6353 | ] | |
| 6264 | 6354 | } |
| 6265 | 6355 | ] |
| 6266 | 6356 | } |
| … | … | @@ -32,6 +32,9 @@ const E = 1, |
| 32 | 32 | DISABLE_LINKS: 30, |
| 33 | 33 | DM_PEERS_TO_MODS: 31, |
| 34 | 34 | V2_UNREADS: 32, |
| 35 | ROOM_MARK_UNREAD: 33, | |
| 36 | STRIP_ATTACHMENT_METADATA: 34, | |
| 37 | SHORTEN_ATTESTATION: 34, | |
| 35 | 38 | }, |
| 36 | 39 | e = {}, |
| 37 | 40 | R = [ |
| … | … | @@ -65,27 +68,33 @@ const E = 1, |
| 65 | 68 | { abi: 25, features: [] }, |
| 66 | 69 | { abi: 26, features: [] }, |
| 67 | 70 | { abi: 27, features: [] }, |
| 68 | { abi: 28, features: [_.V2_UNREADS], stable: !0 }, | |
| 71 | { abi: 28, features: [_.V2_UNREADS] }, | |
| 72 | { | |
| 73 | abi: 29, | |
| 74 | features: [_.ROOM_MARK_UNREAD, _.STRIP_ATTACHMENT_METADATA, _.SHORTEN_ATTESTATION], | |
| 75 | stable: !0, | |
| 76 | }, | |
| 77 | { abi: 30, features: [] }, | |
| 69 | 78 | ], |
| 70 | a = new Map() | |
| 71 | let A = -1, | |
| 72 | M = -1, | |
| 73 | S = -1 | |
| 79 | A = new Map() | |
| 80 | let a = -1, | |
| 81 | T = -1, | |
| 82 | M = -1 | |
| 74 | 83 | for (const { abi: E, features: _, stable: e, autoupgrade: O } of R) { |
| 75 | for (const e of _) a.set(e, E) | |
| 76 | ;(O && (S = E), e && (A = E), (M = E)) | |
| 84 | for (const e of _) A.set(e, E) | |
| 85 | ;(O && (M = E), e && (a = E), (T = E)) | |
| 77 | 86 | } |
| 78 | for (const [E, R] of Object.entries(_)) a.has(R) && (e[E] = a.get(R)) | |
| 87 | for (const [E, R] of Object.entries(_)) A.has(R) && (e[E] = A.get(R)) | |
| 79 | 88 | function O(E, _) { |
| 80 | const e = a.get(_) | |
| 89 | const e = A.get(_) | |
| 81 | 90 | return !!e && e <= E |
| 82 | 91 | } |
| 83 | 92 | module.exports = { |
| 84 | 93 | isFeatureSupported: O, |
| 85 | 94 | FEATURES_TO_ABI: e, |
| 86 | 95 | FEATURES: _, |
| 87 | STABLE: A, | |
| 88 | AUTOUPGRADE: S, | |
| 89 | EXPERIMENTAL: M, | |
| 96 | STABLE: a, | |
| 97 | AUTOUPGRADE: M, | |
| 98 | EXPERIMENTAL: T, | |
| 90 | 99 | FORCE_UPDATE: 1, |
| 91 | 100 | } |
| … | … | @@ -4,137 +4,140 @@ const e = require("tiny-buffer-rpc/any"), |
| 4 | 4 | { GENERIC_EVENTS: i } = require("@holepunchto/keet-core-api"), |
| 5 | 5 | t = require("hypercore-proof-queue"), |
| 6 | 6 | r = require("b4a"), |
| 7 | o = require("xache"), | |
| 8 | s = require("suspendify"), | |
| 7 | s = require("xache"), | |
| 8 | o = require("suspendify"), | |
| 9 | 9 | c = require("fs-native-lock"), |
| 10 | { getNotificationBody: u, getNotificationTitle: d } = require("./utils/notification") | |
| 11 | async function l(l, g) { | |
| 12 | const p = Bare.argv[0], | |
| 10 | { getNotificationBody: u, getNotificationTitle: l } = require("./utils/notification") | |
| 11 | async function d(d, p) { | |
| 12 | const g = Bare.argv[0], | |
| 13 | 13 | f = Bare.argv[1], |
| 14 | 14 | y = Bare.argv[2], |
| 15 | 15 | w = "true" === Bare.argv[3], |
| 16 | 16 | h = "store" !== Bare.argv[1] || w, |
| 17 | 17 | k = h, |
| 18 | m = "ios" === Bare.platform, | |
| 19 | b = Math.random().toString(16).slice(2), | |
| 20 | v = "true" === Bare.argv[4], | |
| 18 | b = "ios" === Bare.platform, | |
| 19 | v = Math.random().toString(16).slice(2), | |
| 20 | m = "true" === Bare.argv[4], | |
| 21 | 21 | q = Bare.argv[5], |
| 22 | 22 | B = Bare.argv[6], |
| 23 | 23 | S = Bare.argv[7], |
| 24 | 24 | x = Bare.argv[8] ? JSON.parse(r.toString(r.from(Bare.argv[8], "base64"))) : {}, |
| 25 | 25 | A = x?.strings, |
| 26 | 26 | I = x.logFile || x.logFilePath || x.fileLogPath, |
| 27 | L = x.logFileMaxSize, | |
| 28 | N = x.logLevel || "info" | |
| 29 | let C = null, | |
| 30 | E = 0, | |
| 31 | R = !1 | |
| 32 | const F = (...e) => { | |
| 33 | ;(E++, M.logger.info(b, E, ...e)) | |
| 27 | C = x.logFileMaxSize, | |
| 28 | L = x.logLevel || "info", | |
| 29 | N = x?.disableSuspension ?? !1, | |
| 30 | E = x.verbose || !1 | |
| 31 | let R = null, | |
| 32 | F = 0, | |
| 33 | M = !1 | |
| 34 | const P = (...e) => { | |
| 35 | ;(F++, z.logger.info(v, F, ...e)) | |
| 34 | 36 | }, |
| 35 | { keet: M } = a.from(p, { | |
| 37 | { keet: z } = a.from(g, { | |
| 36 | 38 | buildType: f, |
| 37 | logger: { logFile: I, logLevel: N, logFileMaxSize: L }, | |
| 39 | logger: { logFile: I, logLevel: L, logFileMaxSize: C, verbose: E }, | |
| 38 | 40 | devMirrors: k, |
| 39 | 41 | devUserRegistry: h, |
| 40 | 42 | hyperconfKey: S, |
| 41 | 43 | production: !0, |
| 42 | 44 | appVersion: B, |
| 43 | apiLogger: F, | |
| 45 | apiLogger: P, | |
| 44 | 46 | mobile: !0, |
| 45 | 47 | storage: { id: y, wait: !0 }, |
| 46 | 48 | }) |
| 47 | function P(e) { | |
| 48 | M.onerror(e) | |
| 49 | function D(e) { | |
| 50 | z.onerror(e) | |
| 49 | 51 | } |
| 50 | v && | |
| 52 | m && | |
| 51 | 53 | require("sentry-bare").init({ |
| 52 | 54 | release: q, |
| 53 | 55 | dsn: "https://cbea8d749dec25aa3e4443fe1ad280b4@o139579.ingest.us.sentry.io/4509075596967936", |
| 54 | 56 | }) |
| 55 | const z = M.backendAPI, | |
| 56 | D = new o({ maxSize: 1024 }) | |
| 57 | F("Started bare worker...") | |
| 58 | const K = new s({ | |
| 57 | const K = z.backendAPI, | |
| 58 | T = new s({ maxSize: 1024 }) | |
| 59 | P("Started bare worker...") | |
| 60 | const _ = new o({ | |
| 59 | 61 | wakeupLinger: 6e3, |
| 60 | 62 | async pollLinger() { |
| 61 | const e = await U(), | |
| 63 | const e = await $(), | |
| 62 | 64 | a = Math.round(Math.max(1e3 * e - 1e4, 0)) |
| 63 | return (F("app says we have", a, "left to suspend"), a) | |
| 65 | return (P("app says we have", a, "left to suspend"), a) | |
| 64 | 66 | }, |
| 65 | 67 | async suspend() { |
| 66 | 68 | try { |
| 67 | ;(F("Suspending..."), | |
| 68 | await H, | |
| 69 | F("Suspending queue"), | |
| 70 | await T.suspend(), | |
| 71 | F("Freeing lock so push can run"), | |
| 72 | C && (await C.unlock()), | |
| 73 | (C = null), | |
| 74 | F("Suspending backend"), | |
| 75 | await z.suspend(), | |
| 76 | F("Signalling frontend to suspend"), | |
| 77 | await G.request(!0), | |
| 78 | K.interrupted | |
| 79 | ? F("interrupted skipping idle") | |
| 80 | : (F("Asking bare to go Idle"), Bare.idle())) | |
| 69 | ;(P("Suspending..."), | |
| 70 | await O, | |
| 71 | P("Suspending queue"), | |
| 72 | await W.suspend(), | |
| 73 | P("Freeing lock so push can run"), | |
| 74 | R && (await R.unlock()), | |
| 75 | (R = null), | |
| 76 | N | |
| 77 | ? P("Suspension is disabled, skipping bare idle") | |
| 78 | : (P("Suspending backend"), | |
| 79 | await K.suspend(), | |
| 80 | P("Signalling frontend to suspend"), | |
| 81 | await V.request(!0), | |
| 82 | _.interrupted | |
| 83 | ? P("interrupted skipping idle") | |
| 84 | : (P("Asking bare to go Idle"), Bare.idle()))) | |
| 81 | 85 | } catch (e) { |
| 82 | F("Caught suspension error: " + e.stack) | |
| 86 | P("Caught suspension error: " + e.stack) | |
| 83 | 87 | } |
| 84 | 88 | }, |
| 85 | 89 | async suspendCancelled() { |
| 86 | ;(F("Signalling frontend to suspend (cancelled)"), await G.request(!1)) | |
| 90 | ;(P("Signalling frontend to suspend (cancelled)"), await V.request(!1)) | |
| 87 | 91 | }, |
| 88 | 92 | async presuspend() { |
| 89 | ;(F("Presuspending..."), await M.presuspend()) | |
| 93 | N | |
| 94 | ? P("Suspension is disabled, skipping presuspending") | |
| 95 | : (P("Presuspending..."), await z.presuspend()) | |
| 90 | 96 | }, |
| 91 | 97 | async resume() { |
| 92 | await H | |
| 98 | await O | |
| 93 | 99 | try { |
| 94 | ;(F("Resuming..."), | |
| 95 | await z.resume(), | |
| 96 | F("Acquiring push lock"), | |
| 97 | await J(), | |
| 98 | F("Resuming push queue"), | |
| 99 | await T.resume(), | |
| 100 | F("Resuming concluded")) | |
| 100 | ;(P("Resuming..."), | |
| 101 | await K.resume(), | |
| 102 | P("Acquiring push lock"), | |
| 103 | await Q(), | |
| 104 | P("Resuming push queue"), | |
| 105 | await W.resume(), | |
| 106 | P("Resuming concluded")) | |
| 101 | 107 | } catch (e) { |
| 102 | F("Caught suspension error: " + e.stack) | |
| 108 | P("Caught suspension error: " + e.stack) | |
| 103 | 109 | } |
| 104 | 110 | }, |
| 105 | 111 | async wakeup() { |
| 106 | ;(F("Waking up"), | |
| 107 | await H, | |
| 108 | F("resuming backend"), | |
| 109 | await z.resume(), | |
| 110 | F("backgrounding the core"), | |
| 111 | await M.wakeup(), | |
| 112 | F("Wake up done")) | |
| 112 | ;(P("Waking up"), | |
| 113 | await O, | |
| 114 | N || (P("Calling core.wakeup"), await z.wakeup()), | |
| 115 | P("Wake up done")) | |
| 113 | 116 | }, |
| 114 | 117 | }) |
| 115 | 118 | ;(Bare.on("idle", function () { |
| 116 | 119 | console.log("Bare has fully idled, zzz....") |
| 117 | 120 | }), |
| 118 | 121 | Bare.on("suspend", function (e) { |
| 119 | ;((R = !0), | |
| 122 | ;((M = !0), | |
| 120 | 123 | (e = Math.max(e - 1e4, 0)), |
| 121 | F("Bare suspend, linger", e), | |
| 122 | (null !== z.api.call && z.api.call.callIsActive) || | |
| 123 | (F("Asking suspendify to suspend"), K.suspend(e))) | |
| 124 | P("Bare suspend, linger", e), | |
| 125 | (null !== K.api.call && K.api.call.callIsActive) || | |
| 126 | (P("Asking suspendify to suspend"), _.suspend(e))) | |
| 124 | 127 | }), |
| 125 | 128 | Bare.on("resume", function () { |
| 126 | ;(F("Bare resume"), (R = !1), K.resume()) | |
| 129 | ;(P("Bare resume"), (M = !1), _.resume()) | |
| 127 | 130 | }), |
| 128 | 131 | Bare.on("wakeup", function () { |
| 129 | ;(F("Bare wakeup"), K.wakeup()) | |
| 132 | ;(P("Bare wakeup"), _.wakeup()) | |
| 130 | 133 | }), |
| 131 | n(z, l)) | |
| 132 | const T = new t(`${p}/notifications`, async function (e) { | |
| 134 | n(K, d)) | |
| 135 | const W = new t(`${g}/notifications`, async function (e) { | |
| 133 | 136 | try { |
| 134 | ;(!1 === z.opened && (await z.ready()), | |
| 135 | F("Draining notification handler, got", e.length, "proofs"), | |
| 136 | z.api.core.setProcessingNotifications(!0)) | |
| 137 | const a = M.rootCorestore, | |
| 137 | ;(!1 === K.opened && (await K.ready()), | |
| 138 | P("Draining notification handler, got", e.length, "proofs"), | |
| 139 | K.api.core.setProcessingNotifications(!0)) | |
| 140 | const a = z.rootCorestore, | |
| 138 | 141 | n = new Set() |
| 139 | 142 | for (const i of e) { |
| 140 | 143 | const e = a.get({ discoveryKey: i.discoveryKey }) |
| … | … | @@ -150,88 +153,88 @@ async function l(l, g) { |
| 150 | 153 | await e.core.verify(i.data, null), |
| 151 | 154 | n.add(r.toString(i.discoveryKey, "hex"))) |
| 152 | 155 | } catch (e) { |
| 153 | F("Ignoring proof update due to:", e.message) | |
| 156 | P("Ignoring proof update due to:", e.message) | |
| 154 | 157 | } |
| 155 | 158 | try { |
| 156 | 159 | await e.close() |
| 157 | 160 | } catch {} |
| 158 | 161 | } |
| 159 | 162 | for (const e of n) |
| 160 | (F("Waking up", e), M.scheduleDiscoverySwarmingFromDiscoveryKey(r.from(e, "hex"))) | |
| 161 | F("Draining notification complete") | |
| 163 | (P("Waking up", e), z.scheduleDiscoverySwarmingFromDiscoveryKey(r.from(e, "hex"))) | |
| 164 | P("Draining notification complete") | |
| 162 | 165 | } catch (e) { |
| 163 | F("Error handling notifications queue", e) | |
| 166 | P("Error handling notifications queue", e) | |
| 164 | 167 | } finally { |
| 165 | ;(F("Draining notification complete, enabling notifications"), | |
| 166 | z.api.core.setProcessingNotifications(!1)) | |
| 168 | ;(P("Draining notification complete, enabling notifications"), | |
| 169 | K.api.core.setProcessingNotifications(!1)) | |
| 167 | 170 | } |
| 168 | 171 | }), |
| 169 | _ = l.register(512, { request: e, response: e }), | |
| 170 | W = l.register(1280, { request: e, response: e }), | |
| 171 | j = l.register(1536, { request: e, response: e }), | |
| 172 | G = l.register(2816, { request: e, response: e }), | |
| 173 | U = () => (m ? W.request({}) : 30), | |
| 174 | V = (e) => _.request(e), | |
| 175 | $ = () => j.request(), | |
| 176 | H = (async function () { | |
| 177 | ;(F("Booting backend"), | |
| 178 | await z.ready(), | |
| 179 | Bare.off("uncaughtException", g).off("unhandledRejection", g), | |
| 180 | Bare.on("uncaughtException", P).on("unhandledRejection", P), | |
| 181 | F("Backend ready"), | |
| 182 | await J(), | |
| 183 | F("Acquired push lock")) | |
| 172 | j = d.register(512, { request: e, response: e }), | |
| 173 | G = d.register(1280, { request: e, response: e }), | |
| 174 | U = d.register(1536, { request: e, response: e }), | |
| 175 | V = d.register(2816, { request: e, response: e }), | |
| 176 | $ = () => (b ? G.request({}) : 30), | |
| 177 | H = (e) => j.request(e), | |
| 178 | J = () => U.request(), | |
| 179 | O = (async function () { | |
| 180 | ;(P("Booting backend"), | |
| 181 | await K.ready(), | |
| 182 | Bare.off("uncaughtException", p).off("unhandledRejection", p), | |
| 183 | Bare.on("uncaughtException", D).on("unhandledRejection", D), | |
| 184 | P("Backend ready"), | |
| 185 | await Q(), | |
| 186 | P("Acquired push lock")) | |
| 184 | 187 | })() |
| 185 | async function J() { | |
| 186 | ;(C && (await C.unlock()), (C = new c(`${p}/lock`, { wait: !0 })), await C.lock()) | |
| 188 | async function Q() { | |
| 189 | ;(R && (await R.unlock()), (R = new c(`${g}/lock`, { wait: !0 })), await R.lock()) | |
| 187 | 190 | } |
| 188 | 191 | !(async function () { |
| 189 | ;(F("await booting in notifications"), | |
| 190 | await H, | |
| 191 | z.api.call.on("call-active", function () { | |
| 192 | R && (F("Call started in bg, resuming"), K.resume()) | |
| 192 | ;(P("await booting in notifications"), | |
| 193 | await O, | |
| 194 | K.api.call.on("call-active", function () { | |
| 195 | M && (P("Call started in bg, resuming"), _.resume()) | |
| 193 | 196 | }), |
| 194 | z.api.call.on("call-inactive", function () { | |
| 195 | R && | |
| 196 | (F("Call ended in bg, suspending"), | |
| 197 | z.api.call.callIsActive || (F("suspending now in 5000"), K.suspend(5e3))) | |
| 197 | K.api.call.on("call-inactive", function () { | |
| 198 | M && | |
| 199 | (P("Call ended in bg, suspending"), | |
| 200 | K.api.call.callIsActive || (P("suspending now in 5000"), _.suspend(5e3))) | |
| 198 | 201 | }), |
| 199 | F("subscribing to notifications")) | |
| 200 | const e = await z.api.core.subscribeNotifications() | |
| 202 | P("subscribing to notifications")) | |
| 203 | const e = await K.api.core.subscribeNotifications() | |
| 201 | 204 | for await (const a of e) |
| 202 | 205 | switch (a.type) { |
| 203 | 206 | case i.CALL_HANGUP: |
| 204 | ;(F("stopping call ring"), | |
| 205 | await $(), | |
| 206 | !z.api.call.callIsActive && R && (F("call hangup - suspending 5000"), K.suspend(5e3))) | |
| 207 | ;(P("stopping call ring"), | |
| 208 | await J(), | |
| 209 | !K.api.call.callIsActive && M && (P("call hangup - suspending 5000"), _.suspend(5e3))) | |
| 207 | 210 | break |
| 208 | 211 | case i.CALL_STARTED: |
| 209 | ;(F("suspending"), R && K.suspend()) | |
| 212 | ;(P("suspending"), M && _.suspend()) | |
| 210 | 213 | break |
| 211 | 214 | default: |
| 212 | if (!R) { | |
| 213 | F("Not backgrounded, dropping") | |
| 215 | if (!M) { | |
| 216 | P("Not backgrounded, dropping") | |
| 214 | 217 | continue |
| 215 | 218 | } |
| 216 | if (D.get(a.id)) { | |
| 217 | F("message is in cache already, dropping", a.id) | |
| 219 | if (T.get(a.id)) { | |
| 220 | P("message is in cache already, dropping", a.id) | |
| 218 | 221 | continue |
| 219 | 222 | } |
| 220 | if ((D.set(a.id, !0), (a.strings = A), a.message)) { | |
| 223 | if ((T.set(a.id, !0), (a.strings = A), a.message)) { | |
| 221 | 224 | const e = { |
| 222 | 225 | id: a.id, |
| 223 | 226 | threadIdentifier: a.roomId, |
| 224 | 227 | avatar: a.avatar, |
| 225 | title: d(a), | |
| 228 | title: l(a), | |
| 226 | 229 | body: u(a), |
| 227 | 230 | userInfo: a.userInfo, |
| 228 | 231 | sound: { type: "named", name: "notif_default.wav" }, |
| 229 | 232 | } |
| 230 | ;(F("sending push notification"), V(e)) | |
| 233 | ;(P("sending push notification"), H(e)) | |
| 231 | 234 | break |
| 232 | 235 | } |
| 233 | F("skipping push notification, no message") | |
| 236 | P("skipping push notification, no message") | |
| 234 | 237 | } |
| 235 | 238 | })() |
| 236 | 239 | } |
| 237 | module.exports = { load: l } | |
| 240 | module.exports = { load: d } |
| … | … | @@ -1,21 +0,0 @@ |
| 1 | MIT License | |
| 2 | ||
| 3 | Copyright (c) 2023 Holepunch | |
| 4 | ||
| 5 | Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | of this software and associated documentation files (the "Software"), to deal | |
| 7 | in the Software without restriction, including without limitation the rights | |
| 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | copies of the Software, and to permit persons to whom the Software is | |
| 10 | furnished to do so, subject to the following conditions: | |
| 11 | ||
| 12 | The above copyright notice and this permission notice shall be included in all | |
| 13 | copies or substantial portions of the Software. | |
| 14 | ||
| 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | SOFTWARE. |
| … | … | @@ -1 +0,0 @@ |
| 1 | export default{groups:[{key:"smileys-emotion",message:"smileys & emotion",order:0},{key:"people-body",message:"people & body",order:1},{key:"component",message:"components",order:2},{key:"animals-nature",message:"animals & nature",order:3},{key:"food-drink",message:"food & drink",order:4},{key:"travel-places",message:"travel & places",order:5},{key:"activities",message:"activities",order:6},{key:"objects",message:"objects",order:7},{key:"symbols",message:"symbols",order:8},{key:"flags",message:"flags",order:9}],skinTones:[{key:"dark",message:"dark skin tone"},{key:"light",message:"light skin tone"},{key:"medium",message:"medium skin tone"},{key:"medium-dark",message:"medium-dark skin tone"},{key:"medium-light",message:"medium-light skin tone"}],subgroups:[{key:"face-smiling",message:"smiling",order:0},{key:"face-affection",message:"affectionate",order:1},{key:"face-tongue",message:"with tongue",order:2},{key:"face-hand",message:"with hands",order:3},{key:"face-neutral-skeptical",message:"neutral / skeptical",order:4},{key:"face-sleepy",message:"sleepy",order:5},{key:"face-unwell",message:"unwell",order:6},{key:"face-hat",message:"with hats",order:7},{key:"face-glasses",message:"with glasses",order:8},{key:"face-concerned",message:"concerned",order:9},{key:"face-negative",message:"negative",order:10},{key:"face-costume",message:"costumed & creatures",order:11},{key:"cat-face",message:"cat faces",order:12},{key:"monkey-face",message:"monkey faces",order:13},{key:"heart",message:"hearts",order:14},{key:"emotion",message:"emotions",order:15},{key:"hand-fingers-open",message:"fingers open",order:16},{key:"hand-fingers-partial",message:"hand signs",order:17},{key:"hand-single-finger",message:"finger pointing",order:18},{key:"hand-fingers-closed",message:"fingers closed",order:19},{key:"hands",message:"hands",order:20},{key:"hand-prop",message:"hand props",order:21},{key:"body-parts",message:"body parts",order:22},{key:"person",message:"people",order:23},{key:"person-gesture",message:"gestures",order:24},{key:"person-role",message:"roles & careers",order:25},{key:"person-fantasy",message:"fantasy",order:26},{key:"person-activity",message:"activities",order:27},{key:"person-sport",message:"athletics",order:28},{key:"person-resting",message:"resting",order:29},{key:"family",message:"family",order:30},{key:"person-symbol",message:"people symbols",order:31},{key:"skin-tone",message:"skin tones",order:32},{key:"hair-style",message:"hair styles",order:33},{key:"animal-mammal",message:"mammals",order:34},{key:"animal-bird",message:"birds",order:35},{key:"animal-amphibian",message:"amphibians",order:36},{key:"animal-reptile",message:"reptiles",order:37},{key:"animal-marine",message:"marine life",order:38},{key:"animal-bug",message:"bugs",order:39},{key:"plant-flower",message:"flowers",order:40},{key:"plant-other",message:"other plants",order:41},{key:"food-fruit",message:"fruit",order:42},{key:"food-vegetable",message:"vegetables",order:43},{key:"food-prepared",message:"cooked / prepared",order:44},{key:"food-asian",message:"asian",order:45},{key:"food-marine",message:"seafood",order:46},{key:"food-sweet",message:"sweets & candy",order:46},{key:"drink",message:"drink",order:47},{key:"dishware",message:"dishware",order:48},{key:"place-map",message:"globes & maps",order:49},{key:"place-geographic",message:"geographic locations",order:50},{key:"place-building",message:"buildings",order:51},{key:"place-religious",message:"religious buildings",order:52},{key:"place-other",message:"other places",order:53},{key:"transport-ground",message:"ground transportation",order:54},{key:"transport-water",message:"water transportation",order:55},{key:"transport-air",message:"air transportation",order:56},{key:"hotel",message:"hotel",order:57},{key:"time",message:"time",order:58},{key:"sky-weather",message:"weather",order:59},{key:"event",message:"events & holidays",order:60},{key:"award-medal",message:"award medals",order:61},{key:"sport",message:"sports",order:62},{key:"game",message:"games & hobbies",order:63},{key:"arts-crafts",message:"arts & crafts",order:64},{key:"clothing",message:"clothing",order:65},{key:"sound",message:"sound",order:66},{key:"music",message:"music",order:67},{key:"musical-instrument",message:"musical instruments",order:68},{key:"phone",message:"phone",order:69},{key:"computer",message:"computer",order:70},{key:"light-video",message:"light, film & video",order:71},{key:"book-paper",message:"books & paper",order:72},{key:"money",message:"money",order:73},{key:"mail",message:"mail",order:74},{key:"writing",message:"writing",order:75},{key:"office",message:"office supplies",order:76},{key:"lock",message:"lock & keys",order:77},{key:"tool",message:"tools",order:78},{key:"science",message:"science equipment",order:79},{key:"medical",message:"medical",order:80},{key:"household",message:"household items",order:81},{key:"other-object",message:"other objects",order:82},{key:"transport-sign",message:"transport signs",order:83},{key:"warning",message:"warning symbols",order:84},{key:"arrow",message:"arrows",order:85},{key:"religion",message:"religious symbols",order:86},{key:"zodiac",message:"zodiac signs",order:87},{key:"av-symbol",message:"audio & video symbols",order:88},{key:"gender",message:"gender signs",order:89},{key:"math",message:"math symbols",order:90},{key:"punctuation",message:"punctuation",order:91},{key:"currency",message:"currencies",order:92},{key:"other-symbol",message:"other symbols",order:93},{key:"keycap",message:"keypad characters",order:94},{key:"alphanum",message:"alphanumeric symbols",order:95},{key:"geometric",message:"shapes & colors",order:96},{key:"flag",message:"other flags",order:97},{key:"country-flag",message:"country flags",order:98},{key:"subdivision-flag",message:"subdivision flags",order:99}]}; |
| … | … | @@ -1 +0,0 @@ |
| 1 | export default[{label:"grinning face",hexcode:"1F600",tags:["cheerful","cheery","face","grin","grinning","happy","laugh","nice","smile","smiling","teeth"],emoji:"😀",text:"",type:1,order:1,group:0,subgroup:0,version:1,shortCodes:["grinning","grinning_face"]},{label:"grinning face with big eyes",hexcode:"1F603",tags:["awesome","big","eyes","face","grin","grinning","happy","mouth","open","smile","smiling","teeth","yay"],emoji:"😃",text:"",type:1,order:2,group:0,subgroup:0,version:.6,shortCodes:["grinning_face_with_big_eyes","smiley"]},{label:"grinning face with smiling eyes",hexcode:"1F604",tags:["eye","eyes","face","grin","grinning","happy","laugh","lol","mouth","open","smile","smiling"],emoji:"😄",text:"",type:1,order:3,group:0,subgroup:0,version:.6,emoticon:[":D"],shortCodes:["grinning_face_with_closed_eyes","smile"]},{label:"beaming face with smiling eyes",hexcode:"1F601",tags:["beaming","eye","eyes","face","grin","grinning","happy","nice","smile","smiling","teeth"],emoji:"😁",text:"",type:1,order:4,group:0,subgroup:0,version:.6,shortCodes:["beaming_face","grin"]},{label:"grinning squinting face",hexcode:"1F606",tags:["closed","eyes","face","grinning","haha","hahaha","happy","laugh","lol","mouth","open","rofl","smile","smiling","squinting"],emoji:"😆",text:"",type:1,order:5,group:0,subgroup:0,version:.6,emoticon:["xD","XD"],shortCodes:["laughing","lol","satisfied","squinting_face"]},{label:"grinning face with sweat",hexcode:"1F605",tags:["cold","dejected","excited","face","grinning","mouth","nervous","open","smile","smiling","stress","stressed","sweat"],emoji:"😅",text:"",type:1,order:6,group:0,subgroup:0,version:.6,shortCodes:["grinning_face_with_sweat","sweat_smile"]},{label:"rolling on the floor laughing",hexcode:"1F923",tags:["crying","face","floor","funny","haha","happy","hehe","hilarious","joy","laugh","lmao","lol","rofl","roflmao","rolling","tear"],emoji:"🤣",text:"",type:1,order:7,group:0,subgroup:0,version:3,emoticon:[":'D"],shortCodes:["rofl"]},{label:"face with tears of joy",hexcode:"1F602",tags:["crying","face","feels","funny","haha","happy","hehe","hilarious","joy","laugh","lmao","lol","rofl","roflmao","tear"],emoji:"😂",text:"",type:1,order:8,group:0,subgroup:0,version:.6,emoticon:[":')"],shortCodes:["joy","lmao","tears_of_joy"]},{label:"slightly smiling face",hexcode:"1F642",tags:["face","happy","slightly","smile","smiling"],emoji:"🙂",text:"",type:1,order:9,group:0,subgroup:0,version:1,emoticon:[":)"],shortCodes:["slightly_smiling_face"]},{label:"upside-down face",hexcode:"1F643",tags:["face","hehe","smile","upside-down"],emoji:"🙃",text:"",type:1,order:10,group:0,subgroup:0,version:1,shortCodes:["upside_down_face"]},{label:"melting face",hexcode:"1FAE0",tags:["disappear","dissolve","embarrassed","face","haha","heat","hot","liquid","lol","melt","melting","sarcasm","sarcastic"],emoji:"🫠",text:"",type:1,order:11,group:0,subgroup:0,version:14,shortCodes:["melt","melting_face"]},{label:"winking face",hexcode:"1F609",tags:["face","flirt","heartbreaker","sexy","slide","tease","wink","winking","winks"],emoji:"😉",text:"",type:1,order:12,group:0,subgroup:0,version:.6,emoticon:[";)"],shortCodes:["wink","winking_face"]},{label:"smiling face with smiling eyes",hexcode:"1F60A",tags:["blush","eye","eyes","face","glad","satisfied","smile","smiling"],emoji:"😊",text:"",type:1,order:13,group:0,subgroup:0,version:.6,emoticon:[":>"],shortCodes:["blush","smiling_face_with_closed_eyes"]},{label:"smiling face with halo",hexcode:"1F607",tags:["angel","angelic","angels","blessed","face","fairy","fairytale","fantasy","halo","happy","innocent","peaceful","smile","smiling","spirit","tale"],emoji:"😇",text:"",type:1,order:14,group:0,subgroup:0,version:1,emoticon:["o:)","O:)"],shortCodes:["halo","innocent"]},{label:"smiling face with hearts",hexcode:"1F970",tags:["3","adore","crush","face","heart","hearts","ily","love","romance","smile","smiling","you"],emoji:"🥰",text:"",type:1,order:15,group:0,subgroup:1,version:11,shortCodes:["smiling_face_with_3_hearts"]},{label:"smiling face with heart-eyes",hexcode:"1F60D",tags:["143","bae","eye","face","feels","heart-eyes","hearts","ily","kisses","love","romance","romantic","smile","xoxo"],emoji:"😍",text:"",type:1,order:16,group:0,subgroup:1,version:.6,shortCodes:["heart_eyes","smiling_face_with_heart_eyes"]},{label:"star-struck",hexcode:"1F929",tags:["excited","eyes","face","grinning","smile","star","starry-eyed","wow"],emoji:"🤩",text:"",type:1,order:17,group:0,subgroup:1,version:5,shortCodes:["star_struck"]},{label:"face blowing a kiss",hexcode:"1F618",tags:["adorbs","bae","blowing","face","flirt","heart","ily","kiss","love","lover","miss","muah","romantic","smooch","xoxo","you"],emoji:"😘",text:"",type:1,order:18,group:0,subgroup:1,version:.6,emoticon:[":x",":X"],shortCodes:["blowing_a_kiss","kissing_heart"]},{label:"kissing face",hexcode:"1F617",tags:["143","date","dating","face","flirt","ily","kiss","love","smooch","smooches","xoxo","you"],emoji:"😗",text:"",type:1,order:19,group:0,subgroup:1,version:1,shortCodes:["kissing","kissing_face"]},{label:"smiling face",hexcode:"263A",tags:["face","happy","outlined","relaxed","smile","smiling"],emoji:"☺️",text:"☺︎",type:0,order:21,group:0,subgroup:1,version:.6,shortCodes:["relaxed","smiling_face"]},{label:"kissing face with closed eyes",hexcode:"1F61A",tags:["143","bae","blush","closed","date","dating","eye","eyes","face","flirt","ily","kisses","kissing","smooches","xoxo"],emoji:"😚",text:"",type:1,order:22,group:0,subgroup:1,version:.6,emoticon:[":*"],shortCodes:["kissing_closed_eyes","kissing_face_with_closed_eyes"]},{label:"kissing face with smiling eyes",hexcode:"1F619",tags:["143","closed","date","dating","eye","eyes","face","flirt","ily","kiss","kisses","kissing","love","night","smile","smiling"],emoji:"😙",text:"",type:1,order:23,group:0,subgroup:1,version:1,shortCodes:["kissing_face_with_smiling_eyes","kissing_smiling_eyes"]},{label:"smiling face with tear",hexcode:"1F972",tags:["face","glad","grateful","happy","joy","pain","proud","relieved","smile","smiley","smiling","tear","touched"],emoji:"🥲",text:"",type:1,order:24,group:0,subgroup:1,version:13,shortCodes:["smiling_face_with_tear"]},{label:"face savoring food",hexcode:"1F60B",tags:["delicious","eat","face","food","full","hungry","savor","smile","smiling","tasty","um","yum","yummy"],emoji:"😋",text:"",type:1,order:25,group:0,subgroup:2,version:.6,shortCodes:["savoring_food","yum"]},{label:"face with tongue",hexcode:"1F61B",tags:["awesome","cool","face","nice","party","stuck-out","sweet","tongue"],emoji:"😛",text:"",type:1,order:26,group:0,subgroup:2,version:1,emoticon:[":p",":P"],shortCodes:["face_with_tongue","stuck_out_tongue"]},{label:"winking face with tongue",hexcode:"1F61C",tags:["crazy","epic","eye","face","funny","joke","loopy","nutty","party","stuck-out","tongue","wacky","weirdo","wink","winking","yolo"],emoji:"😜",text:"",type:1,order:27,group:0,subgroup:2,version:.6,emoticon:[";p",";P"],shortCodes:["stuck_out_tongue_winking_eye"]},{label:"zany face",hexcode:"1F92A",tags:["crazy","eye","eyes","face","goofy","large","small","zany"],emoji:"🤪",text:"",type:1,order:28,group:0,subgroup:2,version:5,shortCodes:["zany","zany_face"]},{label:"squinting face with tongue",hexcode:"1F61D",tags:["closed","eye","eyes","face","gross","horrible","omg","squinting","stuck-out","taste","tongue","whatever","yolo"],emoji:"😝",text:"",type:1,order:29,group:0,subgroup:2,version:.6,emoticon:["xp","xP","XP"],shortCodes:["stuck_out_tongue_closed_eyes"]},{label:"money-mouth face",hexcode:"1F911",tags:["face","money","money-mouth","mouth","paid"],emoji:"🤑",text:"",type:1,order:30,group:0,subgroup:2,version:1,shortCodes:["money_mouth_face"]},{label:"smiling face with open hands",hexcode:"1F917",tags:["face","hands","hug","hugging","open","smiling"],emoji:"🤗",text:"",type:1,order:31,group:0,subgroup:3,version:1,shortCodes:["hug","hugging","hugging_face"]},{label:"face with hand over mouth",hexcode:"1F92D",tags:["face","giggle","giggling","hand","mouth","oops","realization","secret","shock","sudden","surprise","whoops"],emoji:"🤭",text:"",type:1,order:32,group:0,subgroup:3,version:5,shortCodes:["face_with_hand_over_mouth","hand_over_mouth"]},{label:"face with open eyes and hand over mouth",hexcode:"1FAE2",tags:["amazement","awe","disbelief","embarrass","eyes","face","gasp","hand","mouth","omg","open","over","quiet","scared","shock","surprise"],emoji:"🫢",text:"",type:1,order:33,group:0,subgroup:3,version:14,shortCodes:["face_with_open_eyes_hand_over_mouth","gasp"]},{label:"face with peeking eye",hexcode:"1FAE3",tags:["captivated","embarrass","eye","face","hide","hiding","peek","peeking","peep","scared","shy","stare"],emoji:"🫣",text:"",type:1,order:34,group:0,subgroup:3,version:14,shortCodes:["face_with_peeking_eye","peek"]},{label:"shushing face",hexcode:"1F92B",tags:["face","quiet","shh","shush","shushing"],emoji:"🤫",text:"",type:1,order:35,group:0,subgroup:3,version:5,shortCodes:["shush","shushing_face"]},{label:"thinking face",hexcode:"1F914",tags:["chin","consider","face","hmm","ponder","pondering","thinking","wondering"],emoji:"🤔",text:"",type:1,order:36,group:0,subgroup:3,version:1,emoticon:[":l",":L"],shortCodes:["thinking","thinking_face","wtf"]},{label:"saluting face",hexcode:"1FAE1",tags:["face","good","luck","ma’am","ok","respect","salute","saluting","sir","troops","yes"],emoji:"🫡",text:"",type:1,order:37,group:0,subgroup:3,version:14,shortCodes:["salute","saluting_face"]},{label:"zipper-mouth face",hexcode:"1F910",tags:["face","keep","mouth","quiet","secret","shut","zip","zipper","zipper-mouth"],emoji:"🤐",text:"",type:1,order:38,group:0,subgroup:4,version:1,emoticon:[":z",":Z"],shortCodes:["zipper_mouth","zipper_mouth_face"]},{label:"face with raised eyebrow",hexcode:"1F928",tags:["disapproval","disbelief","distrust","emoji","eyebrow","face","hmm","mild","raised","skeptic","skeptical","skepticism","surprise","what"],emoji:"🤨",text:"",type:1,order:39,group:0,subgroup:4,version:5,shortCodes:["face_with_raised_eyebrow","raised_eyebrow"]},{label:"neutral face",hexcode:"1F610",tags:["awkward","blank","deadpan","expressionless","face","fine","jealous","meh","neutral","oh","shade","straight","unamused","unhappy","unimpressed","whatever"],emoji:"😐️",text:"😐︎",type:1,order:40,group:0,subgroup:4,version:.7,emoticon:[":|"],shortCodes:["neutral","neutral_face"]},{label:"expressionless face",hexcode:"1F611",tags:["awkward","dead","expressionless","face","fine","inexpressive","jealous","meh","not","oh","omg","straight","uh","unhappy","unimpressed","whatever"],emoji:"😑",text:"",type:1,order:41,group:0,subgroup:4,version:1,shortCodes:["expressionless","expressionless_face"]},{label:"face without mouth",hexcode:"1F636",tags:["awkward","blank","expressionless","face","mouth","mouthless","mute","quiet","secret","silence","silent","speechless"],emoji:"😶",text:"",type:1,order:42,group:0,subgroup:4,version:1,emoticon:[":#"],shortCodes:["no_mouth"]},{label:"dotted line face",hexcode:"1FAE5",tags:["depressed","disappear","dotted","face","hidden","hide","introvert","invisible","line","meh","whatever","wtv"],emoji:"🫥",text:"",type:1,order:43,group:0,subgroup:4,version:14,shortCodes:["dotted_line_face"]},{label:"face in clouds",hexcode:"1F636-200D-1F32B-FE0F",tags:["absentminded","clouds","face","fog","head"],emoji:"😶🌫️",text:"",type:1,order:44,group:0,subgroup:4,version:13.1,shortCodes:["in_clouds"]},{label:"smirking face",hexcode:"1F60F",tags:["boss","dapper","face","flirt","homie","kidding","leer","shade","slick","sly","smirk","smug","snicker","suave","suspicious","swag"],emoji:"😏",text:"",type:1,order:46,group:0,subgroup:4,version:.6,emoticon:[":j"],shortCodes:["smirk","smirking","smirking_face"]},{label:"unamused face",hexcode:"1F612",tags:["...","bored","face","fine","jealous","jel","jelly","pissed","smh","ugh","uhh","unamused","unhappy","weird","whatever"],emoji:"😒",text:"",type:1,order:47,group:0,subgroup:4,version:.6,emoticon:[":?"],shortCodes:["unamused","unamused_face"]},{label:"face with rolling eyes",hexcode:"1F644",tags:["eyeroll","eyes","face","rolling","shade","ugh","whatever"],emoji:"🙄",text:"",type:1,order:48,group:0,subgroup:4,version:1,shortCodes:["rolling_eyes"]},{label:"grimacing face",hexcode:"1F62C",tags:["awk","awkward","dentist","face","grimace","grimacing","grinning","smile","smiling"],emoji:"😬",text:"",type:1,order:49,group:0,subgroup:4,version:1,emoticon:["8D"],shortCodes:["grimacing","grimacing_face"]},{label:"face exhaling",hexcode:"1F62E-200D-1F4A8",tags:["blow","blowing","exhale","exhaling","exhausted","face","gasp","groan","relief","sigh","smiley","smoke","whisper","whistle"],emoji:"😮💨",text:"",type:1,order:50,group:0,subgroup:4,version:13.1,shortCodes:["exhale","exhaling"]},{label:"lying face",hexcode:"1F925",tags:["face","liar","lie","lying","pinocchio"],emoji:"🤥",text:"",type:1,order:51,group:0,subgroup:4,version:3,shortCodes:["lying","lying_face"]},{label:"shaking face",hexcode:"1FAE8",tags:["crazy","daze","earthquake","face","omg","panic","shaking","shock","surprise","vibrate","whoa","wow"],emoji:"🫨",text:"",type:1,order:52,group:0,subgroup:4,version:15,shortCodes:["shaking","shaking_face"]},{label:"head shaking horizontally",hexcode:"1F642-200D-2194-FE0F",tags:["head","horizontally","no","shake","shaking"],emoji:"🙂↔️",text:"",type:1,order:53,group:0,subgroup:4,version:15.1,shortCodes:["head_shaking_horizontally"]},{label:"head shaking vertically",hexcode:"1F642-200D-2195-FE0F",tags:["head","nod","shaking","vertically","yes"],emoji:"🙂↕️",text:"",type:1,order:55,group:0,subgroup:4,version:15.1,shortCodes:["head_shaking_vertically"]},{label:"relieved face",hexcode:"1F60C",tags:["calm","face","peace","relief","relieved","zen"],emoji:"😌",text:"",type:1,order:57,group:0,subgroup:5,version:.6,shortCodes:["relieved","relieved_face"]},{label:"pensive face",hexcode:"1F614",tags:["awful","bored","dejected","died","disappointed","face","losing","lost","pensive","sad","sucks"],emoji:"😔",text:"",type:1,order:58,group:0,subgroup:5,version:.6,shortCodes:["pensive","pensive_face"]},{label:"sleepy face",hexcode:"1F62A",tags:["crying","face","good","night","sad","sleep","sleeping","sleepy","tired"],emoji:"😪",text:"",type:1,order:59,group:0,subgroup:5,version:.6,shortCodes:["sleepy","sleepy_face"]},{label:"drooling face",hexcode:"1F924",tags:["drooling","face"],emoji:"🤤",text:"",type:1,order:60,group:0,subgroup:5,version:3,shortCodes:["drooling","drooling_face"]},{label:"sleeping face",hexcode:"1F634",tags:["bed","bedtime","face","good","goodnight","nap","night","sleep","sleeping","tired","whatever","yawn","zzz"],emoji:"😴",text:"",type:1,order:61,group:0,subgroup:5,version:1,shortCodes:["sleeping","sleeping_face"]},{label:"face with bags under eyes",hexcode:"1FAE9",tags:["bags","bored","exhausted","eyes","face","fatigued","late","sleepy","tired","weary"],emoji:"",text:"",type:1,order:62,group:0,subgroup:5,version:16,shortCodes:["face_with_eye_bags"]},{label:"face with medical mask",hexcode:"1F637",tags:["cold","dentist","dermatologist","doctor","dr","face","germs","mask","medical","medicine","sick"],emoji:"😷",text:"",type:1,order:63,group:0,subgroup:6,version:.6,shortCodes:["mask","medical_mask"]},{label:"face with thermometer",hexcode:"1F912",tags:["face","ill","sick","thermometer"],emoji:"🤒",text:"",type:1,order:64,group:0,subgroup:6,version:1,shortCodes:["face_with_thermometer"]},{label:"face with head-bandage",hexcode:"1F915",tags:["bandage","face","head-bandage","hurt","injury","ouch"],emoji:"🤕",text:"",type:1,order:65,group:0,subgroup:6,version:1,shortCodes:["face_with_head_bandage"]},{label:"nauseated face",hexcode:"1F922",tags:["face","gross","nasty","nauseated","sick","vomit"],emoji:"🤢",text:"",type:1,order:66,group:0,subgroup:6,version:3,emoticon:["%("],shortCodes:["nauseated","nauseated_face"]},{label:"face vomiting",hexcode:"1F92E",tags:["barf","ew","face","gross","puke","sick","spew","throw","up","vomit","vomiting"],emoji:"🤮",text:"",type:1,order:67,group:0,subgroup:6,version:5,shortCodes:["face_vomiting","vomiting"]},{label:"sneezing face",hexcode:"1F927",tags:["face","fever","flu","gesundheit","sick","sneeze","sneezing"],emoji:"🤧",text:"",type:1,order:68,group:0,subgroup:6,version:3,shortCodes:["sneezing","sneezing_face"]},{label:"hot face",hexcode:"1F975",tags:["dying","face","feverish","heat","hot","panting","red-faced","stroke","sweating","tongue"],emoji:"🥵",text:"",type:1,order:69,group:0,subgroup:6,version:11,shortCodes:["hot","hot_face"]},{label:"cold face",hexcode:"1F976",tags:["blue","blue-faced","cold","face","freezing","frostbite","icicles","subzero","teeth"],emoji:"🥶",text:"",type:1,order:70,group:0,subgroup:6,version:11,shortCodes:["cold","cold_face"]},{label:"woozy face",hexcode:"1F974",tags:["dizzy","drunk","eyes","face","intoxicated","mouth","tipsy","uneven","wavy","woozy"],emoji:"🥴",text:"",type:1,order:71,group:0,subgroup:6,version:11,emoticon:[":&"],shortCodes:["woozy","woozy_face"]},{label:"face with crossed-out eyes",hexcode:"1F635",tags:["crossed-out","dead","dizzy","eyes","face","feels","knocked","out","sick","tired"],emoji:"😵",text:"",type:1,order:72,group:0,subgroup:6,version:.6,emoticon:["xo","XO"],shortCodes:["dizzy_face","knocked_out"]},{label:"face with spiral eyes",hexcode:"1F635-200D-1F4AB",tags:["confused","dizzy","eyes","face","hypnotized","omg","smiley","spiral","trouble","whoa","woah","woozy"],emoji:"😵💫",text:"",type:1,order:73,group:0,subgroup:6,version:13.1,shortCodes:["dizzy_eyes"]},{label:"exploding head",hexcode:"1F92F",tags:["blown","explode","exploding","head","mind","mindblown","no","shocked","way"],emoji:"🤯",text:"",type:1,order:74,group:0,subgroup:6,version:5,shortCodes:["exploding_head"]},{label:"cowboy hat face",hexcode:"1F920",tags:["cowboy","cowgirl","face","hat"],emoji:"🤠",text:"",type:1,order:75,group:0,subgroup:7,version:3,shortCodes:["cowboy","cowboy_face"]},{label:"partying face",hexcode:"1F973",tags:["bday","birthday","celebrate","celebration","excited","face","happy","hat","hooray","horn","party","partying"],emoji:"🥳",text:"",type:1,order:76,group:0,subgroup:7,version:11,shortCodes:["hooray","partying","partying_face"]},{label:"disguised face",hexcode:"1F978",tags:["disguise","eyebrow","face","glasses","incognito","moustache","mustache","nose","person","spy","tache","tash"],emoji:"🥸",text:"",type:1,order:77,group:0,subgroup:7,version:13,shortCodes:["disguised","disguised_face"]},{label:"smiling face with sunglasses",hexcode:"1F60E",tags:["awesome","beach","bright","bro","chilling","cool","face","rad","relaxed","shades","slay","smile","style","sunglasses","swag","win"],emoji:"😎",text:"",type:1,order:78,group:0,subgroup:8,version:1,emoticon:["8)"],shortCodes:["smiling_face_with_sunglasses","sunglasses_cool","too_cool"]},{label:"nerd face",hexcode:"1F913",tags:["brainy","clever","expert","face","geek","gifted","glasses","intelligent","nerd","smart"],emoji:"🤓",text:"",type:1,order:79,group:0,subgroup:8,version:1,emoticon:[":B"],shortCodes:["nerd","nerd_face"]},{label:"face with monocle",hexcode:"1F9D0",tags:["classy","face","fancy","monocle","rich","stuffy","wealthy"],emoji:"🧐",text:"",type:1,order:80,group:0,subgroup:8,version:5,shortCodes:["face_with_monocle"]},{label:"confused face",hexcode:"1F615",tags:["befuddled","confused","confusing","dunno","face","frown","hm","meh","not","sad","sorry","sure"],emoji:"😕",text:"",type:1,order:81,group:0,subgroup:9,version:1,emoticon:[":/"],shortCodes:["confused","confused_face"]},{label:"face with diagonal mouth",hexcode:"1FAE4",tags:["confused","confusion","diagonal","disappointed","doubt","doubtful","face","frustrated","frustration","meh","mouth","skeptical","unsure","whatever","wtv"],emoji:"🫤",text:"",type:1,order:82,group:0,subgroup:9,version:14,shortCodes:["face_with_diagonal_mouth"]},{label:"worried face",hexcode:"1F61F",tags:["anxious","butterflies","face","nerves","nervous","sad","stress","stressed","surprised","worried","worry"],emoji:"😟",text:"",type:1,order:83,group:0,subgroup:9,version:1,shortCodes:["worried","worried_face"]},{label:"slightly frowning face",hexcode:"1F641",tags:["face","frown","frowning","sad","slightly"],emoji:"🙁",text:"",type:1,order:84,group:0,subgroup:9,version:1,shortCodes:["slightly_frowning_face"]},{label:"frowning face",hexcode:"2639",tags:["face","frown","frowning","sad"],emoji:"☹️",text:"☹︎",type:0,order:86,group:0,subgroup:9,version:.7,emoticon:[":("],shortCodes:["white_frowning_face"]},{label:"face with open mouth",hexcode:"1F62E",tags:["believe","face","forgot","mouth","omg","open","shocked","surprised","sympathy","unbelievable","unreal","whoa","wow","you"],emoji:"😮",text:"",type:1,order:87,group:0,subgroup:9,version:1,shortCodes:["face_with_open_mouth","open_mouth"]},{label:"hushed face",hexcode:"1F62F",tags:["epic","face","hushed","omg","stunned","surprised","whoa","woah"],emoji:"😯",text:"",type:1,order:88,group:0,subgroup:9,version:1,shortCodes:["hushed","hushed_face"]},{label:"astonished face",hexcode:"1F632",tags:["astonished","cost","face","no","omg","shocked","totally","way"],emoji:"😲",text:"",type:1,order:89,group:0,subgroup:9,version:.6,emoticon:[":o",":O"],shortCodes:["astonished","astonished_face"]},{label:"flushed face",hexcode:"1F633",tags:["amazed","awkward","crazy","dazed","dead","disbelief","embarrassed","face","flushed","geez","heat","hot","impressed","jeez","what","wow"],emoji:"😳",text:"",type:1,order:90,group:0,subgroup:9,version:.6,emoticon:[":$"],shortCodes:["flushed","flushed_face"]},{label:"pleading face",hexcode:"1F97A",tags:["begging","big","eyes","face","mercy","not","pleading","please","pretty","puppy","sad","why"],emoji:"🥺",text:"",type:1,order:92,group:0,subgroup:9,version:11,shortCodes:["pleading","pleading_face"]},{label:"face holding back tears",hexcode:"1F979",tags:["admiration","aww","back","cry","embarrassed","face","feelings","grateful","gratitude","holding","joy","please","proud","resist","sad","tears"],emoji:"🥹",text:"",type:1,order:93,group:0,subgroup:9,version:14,shortCodes:["face_holding_back_tears","watery_eyes"]},{label:"frowning face with open mouth",hexcode:"1F626",tags:["caught","face","frown","frowning","guard","mouth","open","scared","scary","surprise","what","wow"],emoji:"😦",text:"",type:1,order:94,group:0,subgroup:9,version:1,shortCodes:["frowning","frowning_face"]},{label:"anguished face",hexcode:"1F627",tags:["anguished","face","forgot","scared","scary","stressed","surprise","unhappy","what","wow"],emoji:"😧",text:"",type:1,order:95,group:0,subgroup:9,version:1,emoticon:[":s",":S"],shortCodes:["anguished","anguished_face"]},{label:"fearful face",hexcode:"1F628",tags:["afraid","anxious","blame","face","fear","fearful","scared","worried"],emoji:"😨",text:"",type:1,order:96,group:0,subgroup:9,version:.6,shortCodes:["fearful","fearful_face"]},{label:"anxious face with sweat",hexcode:"1F630",tags:["anxious","blue","cold","eek","face","mouth","nervous","open","rushed","scared","sweat","yikes"],emoji:"😰",text:"",type:1,order:97,group:0,subgroup:9,version:.6,shortCodes:["anxious","anxious_face","cold_sweat"]},{label:"sad but relieved face",hexcode:"1F625",tags:["anxious","call","close","complicated","disappointed","face","not","relieved","sad","sweat","time","whew"],emoji:"😥",text:"",type:1,order:98,group:0,subgroup:9,version:.6,shortCodes:["disappointed_relieved","sad_relieved_face"]},{label:"crying face",hexcode:"1F622",tags:["awful","cry","crying","face","feels","miss","sad","tear","triste","unhappy"],emoji:"😢",text:"",type:1,order:99,group:0,subgroup:9,version:.6,emoticon:[":'("],shortCodes:["cry","crying_face"]},{label:"loudly crying face",hexcode:"1F62D",tags:["bawling","cry","crying","face","loudly","sad","sob","tear","tears","unhappy"],emoji:"😭",text:"",type:1,order:100,group:0,subgroup:9,version:.6,emoticon:[":'o"],shortCodes:["loudly_crying_face","sob"]},{label:"face screaming in fear",hexcode:"1F631",tags:["epic","face","fear","fearful","munch","scared","scream","screamer","screaming","shocked","surprised","woah"],emoji:"😱",text:"",type:1,order:101,group:0,subgroup:9,version:.6,emoticon:["Dx"],shortCodes:["scream","screaming_in_fear"]},{label:"confounded face",hexcode:"1F616",tags:["annoyed","confounded","confused","cringe","distraught","face","feels","frustrated","mad","sad"],emoji:"😖",text:"",type:1,order:102,group:0,subgroup:9,version:.6,emoticon:["x(","X("],shortCodes:["confounded","confounded_face"]},{label:"persevering face",hexcode:"1F623",tags:["concentrate","concentration","face","focus","headache","persevere","persevering"],emoji:"😣",text:"",type:1,order:103,group:0,subgroup:9,version:.6,shortCodes:["persevere","persevering_face"]},{label:"disappointed face",hexcode:"1F61E",tags:["awful","blame","dejected","disappointed","face","fail","losing","sad","unhappy"],emoji:"😞",text:"",type:1,order:104,group:0,subgroup:9,version:.6,shortCodes:["disappointed","disappointed_face"]},{label:"downcast face with sweat",hexcode:"1F613",tags:["close","cold","downcast","face","feels","headache","nervous","sad","scared","sweat","yikes"],emoji:"😓",text:"",type:1,order:105,group:0,subgroup:9,version:.6,emoticon:[":<"],shortCodes:["downcast_face","sweat"]},{label:"weary face",hexcode:"1F629",tags:["crying","face","fail","feels","hungry","mad","nooo","sad","sleepy","tired","unhappy","weary"],emoji:"😩",text:"",type:1,order:106,group:0,subgroup:9,version:.6,emoticon:["D:"],shortCodes:["weary","weary_face"]},{label:"tired face",hexcode:"1F62B",tags:["cost","face","feels","nap","sad","sneeze","tired"],emoji:"😫",text:"",type:1,order:107,group:0,subgroup:9,version:.6,emoticon:[":c",":C"],shortCodes:["tired","tired_face"]},{label:"yawning face",hexcode:"1F971",tags:["bedtime","bored","face","goodnight","nap","night","sleep","sleepy","tired","whatever","yawn","yawning","zzz"],emoji:"🥱",text:"",type:1,order:108,group:0,subgroup:9,version:12,shortCodes:["yawn","yawning","yawning_face"]},{label:"face with steam from nose",hexcode:"1F624",tags:["anger","angry","face","feels","fume","fuming","furious","fury","mad","nose","steam","triumph","unhappy","won"],emoji:"😤",text:"",type:1,order:109,group:0,subgroup:10,version:.6,shortCodes:["nose_steam","triumph"]},{label:"enraged face",hexcode:"1F621",tags:["anger","angry","enraged","face","feels","mad","maddening","pouting","rage","red","shade","unhappy","upset"],emoji:"😡",text:"",type:1,order:110,group:0,subgroup:10,version:.6,emoticon:[">:/"],shortCodes:["pout","pouting_face","rage"]},{label:"angry face",hexcode:"1F620",tags:["anger","angry","blame","face","feels","frustrated","mad","maddening","rage","shade","unhappy","upset"],emoji:"😠",text:"",type:1,order:111,group:0,subgroup:10,version:.6,shortCodes:["angry","angry_face"]},{label:"face with symbols on mouth",hexcode:"1F92C",tags:["censor","cursing","cussing","face","mad","mouth","pissed","swearing","symbols"],emoji:"🤬",text:"",type:1,order:112,group:0,subgroup:10,version:5,emoticon:[":@"],shortCodes:["censored","face_with_symbols_on_mouth"]},{label:"smiling face with horns",hexcode:"1F608",tags:["demon","devil","evil","face","fairy","fairytale","fantasy","horns","purple","shade","smile","smiling","tale"],emoji:"😈",text:"",type:1,order:113,group:0,subgroup:10,version:1,emoticon:[">:)"],shortCodes:["smiling_imp"]},{label:"angry face with horns",hexcode:"1F47F",tags:["angry","demon","devil","evil","face","fairy","fairytale","fantasy","horns","imp","mischievous","purple","shade","tale"],emoji:"👿",text:"",type:1,order:114,group:0,subgroup:10,version:.6,emoticon:[">:("],shortCodes:["angry_imp","imp"]},{label:"skull",hexcode:"1F480",tags:["body","dead","death","face","fairy","fairytale","i’m","lmao","monster","tale","yolo"],emoji:"💀",text:"",type:1,order:115,group:0,subgroup:10,version:.6,shortCodes:["skull"]},{label:"skull and crossbones",hexcode:"2620",tags:["bone","crossbones","dead","death","face","monster","skull"],emoji:"☠️",text:"☠︎",type:0,order:117,group:0,subgroup:10,version:1,shortCodes:["skull_and_crossbones"]},{label:"pile of poo",hexcode:"1F4A9",tags:["bs","comic","doo","dung","face","fml","monster","pile","poo","poop","smelly","smh","stink","stinks","stinky","turd"],emoji:"💩",text:"",type:1,order:118,group:0,subgroup:11,version:.6,shortCodes:["poop","shit"]},{label:"clown face",hexcode:"1F921",tags:["clown","face"],emoji:"🤡",text:"",type:1,order:119,group:0,subgroup:11,version:3,shortCodes:["clown","clown_face"]},{label:"ogre",hexcode:"1F479",tags:["creature","devil","face","fairy","fairytale","fantasy","mask","monster","scary","tale"],emoji:"👹",text:"",type:1,order:120,group:0,subgroup:11,version:.6,emoticon:[">0)"],shortCodes:["japanese_ogre","ogre"]},{label:"goblin",hexcode:"1F47A",tags:["angry","creature","face","fairy","fairytale","fantasy","mask","mean","monster","tale"],emoji:"👺",text:"",type:1,order:121,group:0,subgroup:11,version:.6,shortCodes:["goblin","japanese_goblin"]},{label:"ghost",hexcode:"1F47B",tags:["boo","creature","excited","face","fairy","fairytale","fantasy","halloween","haunting","monster","scary","silly","tale"],emoji:"👻",text:"",type:1,order:122,group:0,subgroup:11,version:.6,shortCodes:["ghost"]},{label:"alien",hexcode:"1F47D",tags:["creature","extraterrestrial","face","fairy","fairytale","fantasy","monster","space","tale","ufo"],emoji:"👽️",text:"👽︎",type:1,order:123,group:0,subgroup:11,version:.6,shortCodes:["alien"]},{label:"alien monster",hexcode:"1F47E",tags:["alien","creature","extraterrestrial","face","fairy","fairytale","fantasy","game","gamer","games","monster","pixelated","space","tale","ufo"],emoji:"👾",text:"",type:1,order:124,group:0,subgroup:11,version:.6,shortCodes:["alien_monster","space_invader"]},{label:"robot",hexcode:"1F916",tags:["face","monster"],emoji:"🤖",text:"",type:1,order:125,group:0,subgroup:11,version:1,shortCodes:["robot","robot_face"]},{label:"grinning cat",hexcode:"1F63A",tags:["animal","cat","face","grinning","mouth","open","smile","smiling"],emoji:"😺",text:"",type:1,order:126,group:0,subgroup:12,version:.6,shortCodes:["grinning_cat","smiley_cat"]},{label:"grinning cat with smiling eyes",hexcode:"1F638",tags:["animal","cat","eye","eyes","face","grin","grinning","smile","smiling"],emoji:"😸",text:"",type:1,order:127,group:0,subgroup:12,version:.6,shortCodes:["grinning_cat_with_closed_eyes","smile_cat"]},{label:"cat with tears of joy",hexcode:"1F639",tags:["animal","cat","face","joy","laugh","laughing","lol","tear","tears"],emoji:"😹",text:"",type:1,order:128,group:0,subgroup:12,version:.6,shortCodes:["joy_cat","tears_of_joy_cat"]},{label:"smiling cat with heart-eyes",hexcode:"1F63B",tags:["animal","cat","eye","face","heart","heart-eyes","love","smile","smiling"],emoji:"😻",text:"",type:1,order:129,group:0,subgroup:12,version:.6,shortCodes:["heart_eyes_cat","smiling_cat_with_heart_eyes"]},{label:"cat with wry smile",hexcode:"1F63C",tags:["animal","cat","face","ironic","smile","wry"],emoji:"😼",text:"",type:1,order:130,group:0,subgroup:12,version:.6,shortCodes:["smirk_cat","wry_smile_cat"]},{label:"kissing cat",hexcode:"1F63D",tags:["animal","cat","closed","eye","eyes","face","kiss","kissing"],emoji:"😽",text:"",type:1,order:131,group:0,subgroup:12,version:.6,emoticon:[":3"],shortCodes:["kissing_cat"]},{label:"weary cat",hexcode:"1F640",tags:["animal","cat","face","oh","surprised","weary"],emoji:"🙀",text:"",type:1,order:132,group:0,subgroup:12,version:.6,shortCodes:["scream_cat","weary_cat"]},{label:"crying cat",hexcode:"1F63F",tags:["animal","cat","cry","crying","face","sad","tear"],emoji:"😿",text:"",type:1,order:133,group:0,subgroup:12,version:.6,shortCodes:["crying_cat"]},{label:"pouting cat",hexcode:"1F63E",tags:["animal","cat","face","pouting"],emoji:"😾",text:"",type:1,order:134,group:0,subgroup:12,version:.6,shortCodes:["pouting_cat"]},{label:"see-no-evil monkey",hexcode:"1F648",tags:["embarrassed","evil","face","forbidden","forgot","gesture","hide","monkey","no","omg","prohibited","scared","secret","smh","watch"],emoji:"🙈",text:"",type:1,order:135,group:0,subgroup:13,version:.6,shortCodes:["see_no_evil"]},{label:"hear-no-evil monkey",hexcode:"1F649",tags:["animal","ears","evil","face","forbidden","gesture","hear","listen","monkey","no","not","prohibited","secret","shh","tmi"],emoji:"🙉",text:"",type:1,order:136,group:0,subgroup:13,version:.6,shortCodes:["hear_no_evil"]},{label:"speak-no-evil monkey",hexcode:"1F64A",tags:["animal","evil","face","forbidden","gesture","monkey","no","not","oops","prohibited","quiet","secret","speak","stealth"],emoji:"🙊",text:"",type:1,order:137,group:0,subgroup:13,version:.6,shortCodes:["speak_no_evil"]},{label:"love letter",hexcode:"1F48C",tags:["heart","letter","love","mail","romance","valentine"],emoji:"💌",text:"",type:1,order:138,group:0,subgroup:14,version:.6,shortCodes:["love_letter"]},{label:"heart with arrow",hexcode:"1F498",tags:["143","adorbs","arrow","cupid","date","emotion","heart","ily","love","romance","valentine"],emoji:"💘",text:"",type:1,order:139,group:0,subgroup:14,version:.6,shortCodes:["cupid","heart_with_arrow"]},{label:"heart with ribbon",hexcode:"1F49D",tags:["143","anniversary","emotion","heart","ily","kisses","ribbon","valentine","xoxo"],emoji:"💝",text:"",type:1,order:140,group:0,subgroup:14,version:.6,shortCodes:["gift_heart","heart_with_ribbon"]},{label:"sparkling heart",hexcode:"1F496",tags:["143","emotion","excited","good","heart","ily","kisses","morning","night","sparkle","sparkling","xoxo"],emoji:"💖",text:"",type:1,order:141,group:0,subgroup:14,version:.6,shortCodes:["sparkling_heart"]},{label:"growing heart",hexcode:"1F497",tags:["143","emotion","excited","growing","heart","heartpulse","ily","kisses","muah","nervous","pulse","xoxo"],emoji:"💗",text:"",type:1,order:142,group:0,subgroup:14,version:.6,shortCodes:["growing_heart","heartpulse"]},{label:"beating heart",hexcode:"1F493",tags:["143","beating","cardio","emotion","heart","heartbeat","ily","love","pulsating","pulse"],emoji:"💓",text:"",type:1,order:143,group:0,subgroup:14,version:.6,shortCodes:["beating_heart","heartbeat"]},{label:"revolving hearts",hexcode:"1F49E",tags:["143","adorbs","anniversary","emotion","heart","hearts","revolving"],emoji:"💞",text:"",type:1,order:144,group:0,subgroup:14,version:.6,shortCodes:["revolving_hearts"]},{label:"two hearts",hexcode:"1F495",tags:["143","anniversary","date","dating","emotion","heart","hearts","ily","kisses","love","loving","two","xoxo"],emoji:"💕",text:"",type:1,order:145,group:0,subgroup:14,version:.6,shortCodes:["two_hearts"]},{label:"heart decoration",hexcode:"1F49F",tags:["143","decoration","emotion","heart","hearth","purple","white"],emoji:"💟",text:"",type:1,order:146,group:0,subgroup:14,version:.6,shortCodes:["heart_decoration"]},{label:"heart exclamation",hexcode:"2763",tags:["exclamation","heart","heavy","mark","punctuation"],emoji:"❣️",text:"❣︎",type:0,order:148,group:0,subgroup:14,version:1,shortCodes:["heart_exclamation"]},{label:"broken heart",hexcode:"1F494",tags:["break","broken","crushed","emotion","heart","heartbroken","lonely","sad"],emoji:"💔",text:"",type:1,order:149,group:0,subgroup:14,version:.6,emoticon:["</3"],shortCodes:["broken_heart"]},{label:"heart on fire",hexcode:"2764-FE0F-200D-1F525",tags:["burn","fire","heart","love","lust","sacred"],emoji:"❤️🔥",text:"",type:1,order:150,group:0,subgroup:14,version:13.1,shortCodes:["heart_on_fire"]},{label:"mending heart",hexcode:"2764-FE0F-200D-1FA79",tags:["healthier","heart","improving","mending","recovering","recuperating","well"],emoji:"❤️🩹",text:"",type:1,order:152,group:0,subgroup:14,version:13.1,shortCodes:["mending_heart"]},{label:"red heart",hexcode:"2764",tags:["emotion","heart","love","red"],emoji:"❤️",text:"❤︎",type:0,order:155,group:0,subgroup:14,version:.6,emoticon:["<3"],shortCodes:["heart","red_heart"]},{label:"pink heart",hexcode:"1FA77",tags:["143","adorable","cute","emotion","heart","ily","like","love","pink","special","sweet"],emoji:"🩷",text:"",type:1,order:156,group:0,subgroup:14,version:15,shortCodes:["pink_heart"]},{label:"orange heart",hexcode:"1F9E1",tags:["143","heart","orange"],emoji:"🧡",text:"",type:1,order:157,group:0,subgroup:14,version:5,shortCodes:["orange_heart"]},{label:"yellow heart",hexcode:"1F49B",tags:["143","cardiac","emotion","heart","ily","love","yellow"],emoji:"💛",text:"",type:1,order:158,group:0,subgroup:14,version:.6,shortCodes:["yellow_heart"]},{label:"green heart",hexcode:"1F49A",tags:["143","emotion","green","heart","ily","love","romantic"],emoji:"💚",text:"",type:1,order:159,group:0,subgroup:14,version:.6,shortCodes:["green_heart"]},{label:"blue heart",hexcode:"1F499",tags:["143","blue","emotion","heart","ily","love","romance"],emoji:"💙",text:"",type:1,order:160,group:0,subgroup:14,version:.6,shortCodes:["blue_heart"]},{label:"light blue heart",hexcode:"1FA75",tags:["143","blue","cute","cyan","emotion","heart","ily","light","like","love","sky","special","teal"],emoji:"🩵",text:"",type:1,order:161,group:0,subgroup:14,version:15,shortCodes:["light_blue_heart"]},{label:"purple heart",hexcode:"1F49C",tags:["143","bestest","emotion","heart","ily","love","purple"],emoji:"💜",text:"",type:1,order:162,group:0,subgroup:14,version:.6,shortCodes:["purple_heart"]},{label:"brown heart",hexcode:"1F90E",tags:["143","brown","heart"],emoji:"🤎",text:"",type:1,order:163,group:0,subgroup:14,version:12,shortCodes:["brown_heart"]},{label:"black heart",hexcode:"1F5A4",tags:["black","evil","heart","wicked"],emoji:"🖤",text:"",type:1,order:164,group:0,subgroup:14,version:3,shortCodes:["black_heart"]},{label:"grey heart",hexcode:"1FA76",tags:["143","emotion","gray","grey","heart","ily","love","silver","slate","special"],emoji:"🩶",text:"",type:1,order:165,group:0,subgroup:14,version:15,shortCodes:["gray_heart","grey_heart"]},{label:"white heart",hexcode:"1F90D",tags:["143","heart","white"],emoji:"🤍",text:"",type:1,order:166,group:0,subgroup:14,version:12,shortCodes:["white_heart"]},{label:"kiss mark",hexcode:"1F48B",tags:["dating","emotion","heart","kiss","kissing","lips","mark","romance","sexy"],emoji:"💋",text:"",type:1,order:167,group:0,subgroup:15,version:.6,shortCodes:["kiss"]},{label:"hundred points",hexcode:"1F4AF",tags:["100","a+","agree","clearly","definitely","faithful","fleek","full","hundred","keep","perfect","point","score","true","truth","yup"],emoji:"💯",text:"",type:1,order:168,group:0,subgroup:15,version:.6,shortCodes:["100"]},{label:"anger symbol",hexcode:"1F4A2",tags:["anger","angry","comic","mad","symbol","upset"],emoji:"💢",text:"",type:1,order:169,group:0,subgroup:15,version:.6,shortCodes:["anger"]},{label:"collision",hexcode:"1F4A5",tags:["bomb","boom","collide","comic","explode"],emoji:"💥",text:"",type:1,order:171,group:0,subgroup:15,version:.6,shortCodes:["boom","collision"]},{label:"dizzy",hexcode:"1F4AB",tags:["comic","shining","shooting","star","stars"],emoji:"💫",text:"",type:1,order:172,group:0,subgroup:15,version:.6,shortCodes:["dizzy"]},{label:"sweat droplets",hexcode:"1F4A6",tags:["comic","drip","droplet","droplets","drops","splashing","squirt","sweat","water","wet","work","workout"],emoji:"💦",text:"",type:1,order:173,group:0,subgroup:15,version:.6,shortCodes:["sweat_drops"]},{label:"dashing away",hexcode:"1F4A8",tags:["away","cloud","comic","dash","dashing","fart","fast","go","gone","gotta","running","smoke"],emoji:"💨",text:"",type:1,order:174,group:0,subgroup:15,version:.6,shortCodes:["dash","dashing_away"]},{label:"hole",hexcode:"1F573",tags:["hole"],emoji:"🕳️",text:"🕳︎",type:0,order:176,group:0,subgroup:15,version:.7,shortCodes:["hole"]},{label:"speech balloon",hexcode:"1F4AC",tags:["balloon","bubble","comic","dialog","message","sms","speech","talk","text","typing"],emoji:"💬",text:"",type:1,order:177,group:0,subgroup:15,version:.6,shortCodes:["speech_balloon"]},{label:"eye in speech bubble",hexcode:"1F441-FE0F-200D-1F5E8-FE0F",tags:["balloon","bubble","eye","speech","witness"],emoji:"👁️🗨️",text:"",type:1,order:178,group:0,subgroup:15,version:2,shortCodes:["eye_in_speech_bubble"]},{label:"left speech bubble",hexcode:"1F5E8",tags:["balloon","bubble","dialog","left","speech"],emoji:"🗨️",text:"🗨︎",type:0,order:183,group:0,subgroup:15,version:2,shortCodes:["left_speech_bubble"]},{label:"right anger bubble",hexcode:"1F5EF",tags:["anger","angry","balloon","bubble","mad","right"],emoji:"🗯️",text:"🗯︎",type:0,order:185,group:0,subgroup:15,version:.7,shortCodes:["right_anger_bubble"]},{label:"thought balloon",hexcode:"1F4AD",tags:["balloon","bubble","cartoon","cloud","comic","daydream","decisions","dream","idea","invent","invention","realize","think","thoughts","wonder"],emoji:"💭",text:"",type:1,order:186,group:0,subgroup:15,version:1,shortCodes:["thought_balloon"]},{label:"ZZZ",hexcode:"1F4A4",tags:["comic","good","goodnight","night","sleep","sleeping","sleepy","tired","zzz"],emoji:"💤",text:"",type:1,order:187,group:0,subgroup:15,version:.6,shortCodes:["zzz"]},{label:"waving hand",hexcode:"1F44B",tags:["bye","cya","g2g","greetings","gtg","hand","hello","hey","hi","later","outtie","ttfn","ttyl","wave","yo","you"],emoji:"👋",text:"",type:1,order:188,group:1,subgroup:16,version:.6,skins:[{label:"waving hand: light skin tone",hexcode:"1F44B-1F3FB",emoji:"👋🏻",text:"",type:1,order:189,group:1,subgroup:16,version:1,tone:1,shortCodes:["wave_tone1","waving_hand_tone1"]},{label:"waving hand: medium-light skin tone",hexcode:"1F44B-1F3FC",emoji:"👋🏼",text:"",type:1,order:190,group:1,subgroup:16,version:1,tone:2,shortCodes:["wave_tone2","waving_hand_tone2"]},{label:"waving hand: medium skin tone",hexcode:"1F44B-1F3FD",emoji:"👋🏽",text:"",type:1,order:191,group:1,subgroup:16,version:1,tone:3,shortCodes:["wave_tone3","waving_hand_tone3"]},{label:"waving hand: medium-dark skin tone",hexcode:"1F44B-1F3FE",emoji:"👋🏾",text:"",type:1,order:192,group:1,subgroup:16,version:1,tone:4,shortCodes:["wave_tone4","waving_hand_tone4"]},{label:"waving hand: dark skin tone",hexcode:"1F44B-1F3FF",emoji:"👋🏿",text:"",type:1,order:193,group:1,subgroup:16,version:1,tone:5,shortCodes:["wave_tone5","waving_hand_tone5"]}],shortCodes:["wave","waving_hand"]},{label:"raised back of hand",hexcode:"1F91A",tags:["back","backhand","hand","raised"],emoji:"🤚",text:"",type:1,order:194,group:1,subgroup:16,version:3,skins:[{label:"raised back of hand: light skin tone",hexcode:"1F91A-1F3FB",emoji:"🤚🏻",text:"",type:1,order:195,group:1,subgroup:16,version:3,tone:1,shortCodes:["raised_back_of_hand_tone1"]},{label:"raised back of hand: medium-light skin tone",hexcode:"1F91A-1F3FC",emoji:"🤚🏼",text:"",type:1,order:196,group:1,subgroup:16,version:3,tone:2,shortCodes:["raised_back_of_hand_tone2"]},{label:"raised back of hand: medium skin tone",hexcode:"1F91A-1F3FD",emoji:"🤚🏽",text:"",type:1,order:197,group:1,subgroup:16,version:3,tone:3,shortCodes:["raised_back_of_hand_tone3"]},{label:"raised back of hand: medium-dark skin tone",hexcode:"1F91A-1F3FE",emoji:"🤚🏾",text:"",type:1,order:198,group:1,subgroup:16,version:3,tone:4,shortCodes:["raised_back_of_hand_tone4"]},{label:"raised back of hand: dark skin tone",hexcode:"1F91A-1F3FF",emoji:"🤚🏿",text:"",type:1,order:199,group:1,subgroup:16,version:3,tone:5,shortCodes:["raised_back_of_hand_tone5"]}],shortCodes:["raised_back_of_hand"]},{label:"hand with fingers splayed",hexcode:"1F590",tags:["finger","fingers","hand","raised","splayed","stop"],emoji:"🖐️",text:"🖐︎",type:0,order:201,group:1,subgroup:16,version:.7,skins:[{label:"hand with fingers splayed: light skin tone",hexcode:"1F590-1F3FB",emoji:"🖐🏻",text:"",type:1,order:202,group:1,subgroup:16,version:1,tone:1,shortCodes:["raised_hand_with_fingers_splayed_tone1"]},{label:"hand with fingers splayed: medium-light skin tone",hexcode:"1F590-1F3FC",emoji:"🖐🏼",text:"",type:1,order:203,group:1,subgroup:16,version:1,tone:2,shortCodes:["raised_hand_with_fingers_splayed_tone2"]},{label:"hand with fingers splayed: medium skin tone",hexcode:"1F590-1F3FD",emoji:"🖐🏽",text:"",type:1,order:204,group:1,subgroup:16,version:1,tone:3,shortCodes:["raised_hand_with_fingers_splayed_tone3"]},{label:"hand with fingers splayed: medium-dark skin tone",hexcode:"1F590-1F3FE",emoji:"🖐🏾",text:"",type:1,order:205,group:1,subgroup:16,version:1,tone:4,shortCodes:["raised_hand_with_fingers_splayed_tone4"]},{label:"hand with fingers splayed: dark skin tone",hexcode:"1F590-1F3FF",emoji:"🖐🏿",text:"",type:1,order:206,group:1,subgroup:16,version:1,tone:5,shortCodes:["raised_hand_with_fingers_splayed_tone5"]}],shortCodes:["raised_hand_with_fingers_splayed"]},{label:"raised hand",hexcode:"270B",tags:["5","five","hand","high","raised","stop"],emoji:"✋️",text:"✋︎",type:1,order:207,group:1,subgroup:16,version:.6,skins:[{label:"raised hand: light skin tone",hexcode:"270B-1F3FB",emoji:"✋🏻",text:"",type:1,order:208,group:1,subgroup:16,version:1,tone:1,shortCodes:["high_five_tone1","raised_hand_tone1"]},{label:"raised hand: medium-light skin tone",hexcode:"270B-1F3FC",emoji:"✋🏼",text:"",type:1,order:209,group:1,subgroup:16,version:1,tone:2,shortCodes:["high_five_tone2","raised_hand_tone2"]},{label:"raised hand: medium skin tone",hexcode:"270B-1F3FD",emoji:"✋🏽",text:"",type:1,order:210,group:1,subgroup:16,version:1,tone:3,shortCodes:["high_five_tone3","raised_hand_tone3"]},{label:"raised hand: medium-dark skin tone",hexcode:"270B-1F3FE",emoji:"✋🏾",text:"",type:1,order:211,group:1,subgroup:16,version:1,tone:4,shortCodes:["high_five_tone4","raised_hand_tone4"]},{label:"raised hand: dark skin tone",hexcode:"270B-1F3FF",emoji:"✋🏿",text:"",type:1,order:212,group:1,subgroup:16,version:1,tone:5,shortCodes:["high_five_tone5","raised_hand_tone5"]}],shortCodes:["high_five","raised_hand"]},{label:"vulcan salute",hexcode:"1F596",tags:["finger","hand","hands","salute","vulcan"],emoji:"🖖",text:"",type:1,order:213,group:1,subgroup:16,version:1,skins:[{label:"vulcan salute: light skin tone",hexcode:"1F596-1F3FB",emoji:"🖖🏻",text:"",type:1,order:214,group:1,subgroup:16,version:1,tone:1,shortCodes:["vulcan_tone1"]},{label:"vulcan salute: medium-light skin tone",hexcode:"1F596-1F3FC",emoji:"🖖🏼",text:"",type:1,order:215,group:1,subgroup:16,version:1,tone:2,shortCodes:["vulcan_tone2"]},{label:"vulcan salute: medium skin tone",hexcode:"1F596-1F3FD",emoji:"🖖🏽",text:"",type:1,order:216,group:1,subgroup:16,version:1,tone:3,shortCodes:["vulcan_tone3"]},{label:"vulcan salute: medium-dark skin tone",hexcode:"1F596-1F3FE",emoji:"🖖🏾",text:"",type:1,order:217,group:1,subgroup:16,version:1,tone:4,shortCodes:["vulcan_tone4"]},{label:"vulcan salute: dark skin tone",hexcode:"1F596-1F3FF",emoji:"🖖🏿",text:"",type:1,order:218,group:1,subgroup:16,version:1,tone:5,shortCodes:["vulcan_tone5"]}],shortCodes:["vulcan"]},{label:"rightwards hand",hexcode:"1FAF1",tags:["hand","handshake","hold","reach","right","rightward","rightwards","shake"],emoji:"🫱",text:"",type:1,order:219,group:1,subgroup:16,version:14,skins:[{label:"rightwards hand: light skin tone",hexcode:"1FAF1-1F3FB",emoji:"🫱🏻",text:"",type:1,order:220,group:1,subgroup:16,version:14,tone:1,shortCodes:["rightwards_hand_tone1"]},{label:"rightwards hand: medium-light skin tone",hexcode:"1FAF1-1F3FC",emoji:"🫱🏼",text:"",type:1,order:221,group:1,subgroup:16,version:14,tone:2,shortCodes:["rightwards_hand_tone2"]},{label:"rightwards hand: medium skin tone",hexcode:"1FAF1-1F3FD",emoji:"🫱🏽",text:"",type:1,order:222,group:1,subgroup:16,version:14,tone:3,shortCodes:["rightwards_hand_tone3"]},{label:"rightwards hand: medium-dark skin tone",hexcode:"1FAF1-1F3FE",emoji:"🫱🏾",text:"",type:1,order:223,group:1,subgroup:16,version:14,tone:4,shortCodes:["rightwards_hand_tone4"]},{label:"rightwards hand: dark skin tone",hexcode:"1FAF1-1F3FF",emoji:"🫱🏿",text:"",type:1,order:224,group:1,subgroup:16,version:14,tone:5,shortCodes:["rightwards_hand_tone5"]}],shortCodes:["rightwards_hand"]},{label:"leftwards hand",hexcode:"1FAF2",tags:["hand","handshake","hold","left","leftward","leftwards","reach","shake"],emoji:"🫲",text:"",type:1,order:225,group:1,subgroup:16,version:14,skins:[{label:"leftwards hand: light skin tone",hexcode:"1FAF2-1F3FB",emoji:"🫲🏻",text:"",type:1,order:226,group:1,subgroup:16,version:14,tone:1,shortCodes:["leftwards_hand_tone1"]},{label:"leftwards hand: medium-light skin tone",hexcode:"1FAF2-1F3FC",emoji:"🫲🏼",text:"",type:1,order:227,group:1,subgroup:16,version:14,tone:2,shortCodes:["leftwards_hand_tone2"]},{label:"leftwards hand: medium skin tone",hexcode:"1FAF2-1F3FD",emoji:"🫲🏽",text:"",type:1,order:228,group:1,subgroup:16,version:14,tone:3,shortCodes:["leftwards_hand_tone3"]},{label:"leftwards hand: medium-dark skin tone",hexcode:"1FAF2-1F3FE",emoji:"🫲🏾",text:"",type:1,order:229,group:1,subgroup:16,version:14,tone:4,shortCodes:["leftwards_hand_tone4"]},{label:"leftwards hand: dark skin tone",hexcode:"1FAF2-1F3FF",emoji:"🫲🏿",text:"",type:1,order:230,group:1,subgroup:16,version:14,tone:5,shortCodes:["leftwards_hand_tone5"]}],shortCodes:["leftwards_hand"]},{label:"palm down hand",hexcode:"1FAF3",tags:["dismiss","down","drop","dropped","hand","palm","pick","shoo","up"],emoji:"🫳",text:"",type:1,order:231,group:1,subgroup:16,version:14,skins:[{label:"palm down hand: light skin tone",hexcode:"1FAF3-1F3FB",emoji:"🫳🏻",text:"",type:1,order:232,group:1,subgroup:16,version:14,tone:1,shortCodes:["palm_down_tone1"]},{label:"palm down hand: medium-light skin tone",hexcode:"1FAF3-1F3FC",emoji:"🫳🏼",text:"",type:1,order:233,group:1,subgroup:16,version:14,tone:2,shortCodes:["palm_down_tone2"]},{label:"palm down hand: medium skin tone",hexcode:"1FAF3-1F3FD",emoji:"🫳🏽",text:"",type:1,order:234,group:1,subgroup:16,version:14,tone:3,shortCodes:["palm_down_tone3"]},{label:"palm down hand: medium-dark skin tone",hexcode:"1FAF3-1F3FE",emoji:"🫳🏾",text:"",type:1,order:235,group:1,subgroup:16,version:14,tone:4,shortCodes:["palm_down_tone4"]},{label:"palm down hand: dark skin tone",hexcode:"1FAF3-1F3FF",emoji:"🫳🏿",text:"",type:1,order:236,group:1,subgroup:16,version:14,tone:5,shortCodes:["palm_down_tone5"]}],shortCodes:["palm_down"]},{label:"palm up hand",hexcode:"1FAF4",tags:["beckon","catch","come","hand","hold","know","lift","me","offer","palm","tell"],emoji:"🫴",text:"",type:1,order:237,group:1,subgroup:16,version:14,skins:[{label:"palm up hand: light skin tone",hexcode:"1FAF4-1F3FB",emoji:"🫴🏻",text:"",type:1,order:238,group:1,subgroup:16,version:14,tone:1,shortCodes:["palm_up_tone1"]},{label:"palm up hand: medium-light skin tone",hexcode:"1FAF4-1F3FC",emoji:"🫴🏼",text:"",type:1,order:239,group:1,subgroup:16,version:14,tone:2,shortCodes:["palm_up_tone2"]},{label:"palm up hand: medium skin tone",hexcode:"1FAF4-1F3FD",emoji:"🫴🏽",text:"",type:1,order:240,group:1,subgroup:16,version:14,tone:3,shortCodes:["palm_up_tone3"]},{label:"palm up hand: medium-dark skin tone",hexcode:"1FAF4-1F3FE",emoji:"🫴🏾",text:"",type:1,order:241,group:1,subgroup:16,version:14,tone:4,shortCodes:["palm_up_tone4"]},{label:"palm up hand: dark skin tone",hexcode:"1FAF4-1F3FF",emoji:"🫴🏿",text:"",type:1,order:242,group:1,subgroup:16,version:14,tone:5,shortCodes:["palm_up_tone5"]}],shortCodes:["palm_up"]},{label:"leftwards pushing hand",hexcode:"1FAF7",tags:["block","five","halt","hand","high","hold","leftward","leftwards","pause","push","pushing","refuse","slap","stop","wait"],emoji:"🫷",text:"",type:1,order:243,group:1,subgroup:16,version:15,skins:[{label:"leftwards pushing hand: light skin tone",hexcode:"1FAF7-1F3FB",emoji:"🫷🏻",text:"",type:1,order:244,group:1,subgroup:16,version:15,tone:1,shortCodes:["leftwards_pushing_hand_tone1"]},{label:"leftwards pushing hand: medium-light skin tone",hexcode:"1FAF7-1F3FC",emoji:"🫷🏼",text:"",type:1,order:245,group:1,subgroup:16,version:15,tone:2,shortCodes:["leftwards_pushing_hand_tone2"]},{label:"leftwards pushing hand: medium skin tone",hexcode:"1FAF7-1F3FD",emoji:"🫷🏽",text:"",type:1,order:246,group:1,subgroup:16,version:15,tone:3,shortCodes:["leftwards_pushing_hand_tone3"]},{label:"leftwards pushing hand: medium-dark skin tone",hexcode:"1FAF7-1F3FE",emoji:"🫷🏾",text:"",type:1,order:247,group:1,subgroup:16,version:15,tone:4,shortCodes:["leftwards_pushing_hand_tone4"]},{label:"leftwards pushing hand: dark skin tone",hexcode:"1FAF7-1F3FF",emoji:"🫷🏿",text:"",type:1,order:248,group:1,subgroup:16,version:15,tone:5,shortCodes:["leftwards_pushing_hand_tone5"]}],shortCodes:["leftwards_pushing_hand"]},{label:"rightwards pushing hand",hexcode:"1FAF8",tags:["block","five","halt","hand","high","hold","pause","push","pushing","refuse","rightward","rightwards","slap","stop","wait"],emoji:"🫸",text:"",type:1,order:249,group:1,subgroup:16,version:15,skins:[{label:"rightwards pushing hand: light skin tone",hexcode:"1FAF8-1F3FB",emoji:"🫸🏻",text:"",type:1,order:250,group:1,subgroup:16,version:15,tone:1,shortCodes:["rightwards_pushing_hand_tone1"]},{label:"rightwards pushing hand: medium-light skin tone",hexcode:"1FAF8-1F3FC",emoji:"🫸🏼",text:"",type:1,order:251,group:1,subgroup:16,version:15,tone:2,shortCodes:["rightwards_pushing_hand_tone2"]},{label:"rightwards pushing hand: medium skin tone",hexcode:"1FAF8-1F3FD",emoji:"🫸🏽",text:"",type:1,order:252,group:1,subgroup:16,version:15,tone:3,shortCodes:["rightwards_pushing_hand_tone3"]},{label:"rightwards pushing hand: medium-dark skin tone",hexcode:"1FAF8-1F3FE",emoji:"🫸🏾",text:"",type:1,order:253,group:1,subgroup:16,version:15,tone:4,shortCodes:["rightwards_pushing_hand_tone4"]},{label:"rightwards pushing hand: dark skin tone",hexcode:"1FAF8-1F3FF",emoji:"🫸🏿",text:"",type:1,order:254,group:1,subgroup:16,version:15,tone:5,shortCodes:["rightwards_pushing_hand_tone5"]}],shortCodes:["rightwards_pushing_hand"]},{label:"OK hand",hexcode:"1F44C",tags:["awesome","bet","dope","fleek","fosho","got","gotcha","hand","legit","ok","okay","pinch","rad","sure","sweet","three"],emoji:"👌",text:"",type:1,order:255,group:1,subgroup:17,version:.6,skins:[{label:"OK hand: light skin tone",hexcode:"1F44C-1F3FB",emoji:"👌🏻",text:"",type:1,order:256,group:1,subgroup:17,version:1,tone:1,shortCodes:["ok_hand_tone1"]},{label:"OK hand: medium-light skin tone",hexcode:"1F44C-1F3FC",emoji:"👌🏼",text:"",type:1,order:257,group:1,subgroup:17,version:1,tone:2,shortCodes:["ok_hand_tone2"]},{label:"OK hand: medium skin tone",hexcode:"1F44C-1F3FD",emoji:"👌🏽",text:"",type:1,order:258,group:1,subgroup:17,version:1,tone:3,shortCodes:["ok_hand_tone3"]},{label:"OK hand: medium-dark skin tone",hexcode:"1F44C-1F3FE",emoji:"👌🏾",text:"",type:1,order:259,group:1,subgroup:17,version:1,tone:4,shortCodes:["ok_hand_tone4"]},{label:"OK hand: dark skin tone",hexcode:"1F44C-1F3FF",emoji:"👌🏿",text:"",type:1,order:260,group:1,subgroup:17,version:1,tone:5,shortCodes:["ok_hand_tone5"]}],shortCodes:["ok_hand"]},{label:"pinched fingers",hexcode:"1F90C",tags:["fingers","gesture","hand","hold","huh","interrogation","patience","pinched","relax","sarcastic","ugh","what","zip"],emoji:"🤌",text:"",type:1,order:261,group:1,subgroup:17,version:13,skins:[{label:"pinched fingers: light skin tone",hexcode:"1F90C-1F3FB",emoji:"🤌🏻",text:"",type:1,order:262,group:1,subgroup:17,version:13,tone:1,shortCodes:["pinch_tone1","pinched_fingers_tone1"]},{label:"pinched fingers: medium-light skin tone",hexcode:"1F90C-1F3FC",emoji:"🤌🏼",text:"",type:1,order:263,group:1,subgroup:17,version:13,tone:2,shortCodes:["pinch_tone2","pinched_fingers_tone2"]},{label:"pinched fingers: medium skin tone",hexcode:"1F90C-1F3FD",emoji:"🤌🏽",text:"",type:1,order:264,group:1,subgroup:17,version:13,tone:3,shortCodes:["pinch_tone3","pinched_fingers_tone3"]},{label:"pinched fingers: medium-dark skin tone",hexcode:"1F90C-1F3FE",emoji:"🤌🏾",text:"",type:1,order:265,group:1,subgroup:17,version:13,tone:4,shortCodes:["pinch_tone4","pinched_fingers_tone4"]},{label:"pinched fingers: dark skin tone",hexcode:"1F90C-1F3FF",emoji:"🤌🏿",text:"",type:1,order:266,group:1,subgroup:17,version:13,tone:5,shortCodes:["pinch_tone5","pinched_fingers_tone5"]}],shortCodes:["pinch","pinched_fingers"]},{label:"pinching hand",hexcode:"1F90F",tags:["amount","bit","fingers","hand","little","pinching","small","sort"],emoji:"🤏",text:"",type:1,order:267,group:1,subgroup:17,version:12,skins:[{label:"pinching hand: light skin tone",hexcode:"1F90F-1F3FB",emoji:"🤏🏻",text:"",type:1,order:268,group:1,subgroup:17,version:12,tone:1,shortCodes:["pinching_hand_tone1"]},{label:"pinching hand: medium-light skin tone",hexcode:"1F90F-1F3FC",emoji:"🤏🏼",text:"",type:1,order:269,group:1,subgroup:17,version:12,tone:2,shortCodes:["pinching_hand_tone2"]},{label:"pinching hand: medium skin tone",hexcode:"1F90F-1F3FD",emoji:"🤏🏽",text:"",type:1,order:270,group:1,subgroup:17,version:12,tone:3,shortCodes:["pinching_hand_tone3"]},{label:"pinching hand: medium-dark skin tone",hexcode:"1F90F-1F3FE",emoji:"🤏🏾",text:"",type:1,order:271,group:1,subgroup:17,version:12,tone:4,shortCodes:["pinching_hand_tone4"]},{label:"pinching hand: dark skin tone",hexcode:"1F90F-1F3FF",emoji:"🤏🏿",text:"",type:1,order:272,group:1,subgroup:17,version:12,tone:5,shortCodes:["pinching_hand_tone5"]}],shortCodes:["pinching_hand"]},{label:"victory hand",hexcode:"270C",tags:["hand","peace","v","victory"],emoji:"✌️",text:"✌︎",type:0,order:274,group:1,subgroup:17,version:.6,skins:[{label:"victory hand: light skin tone",hexcode:"270C-1F3FB",emoji:"✌🏻",text:"",type:1,order:275,group:1,subgroup:17,version:1,tone:1,shortCodes:["v_tone1","victory_tone1"]},{label:"victory hand: medium-light skin tone",hexcode:"270C-1F3FC",emoji:"✌🏼",text:"",type:1,order:276,group:1,subgroup:17,version:1,tone:2,shortCodes:["v_tone2","victory_tone2"]},{label:"victory hand: medium skin tone",hexcode:"270C-1F3FD",emoji:"✌🏽",text:"",type:1,order:277,group:1,subgroup:17,version:1,tone:3,shortCodes:["v_tone3","victory_tone3"]},{label:"victory hand: medium-dark skin tone",hexcode:"270C-1F3FE",emoji:"✌🏾",text:"",type:1,order:278,group:1,subgroup:17,version:1,tone:4,shortCodes:["v_tone4","victory_tone4"]},{label:"victory hand: dark skin tone",hexcode:"270C-1F3FF",emoji:"✌🏿",text:"",type:1,order:279,group:1,subgroup:17,version:1,tone:5,shortCodes:["v_tone5","victory_tone5"]}],shortCodes:["v","victory"]},{label:"crossed fingers",hexcode:"1F91E",tags:["cross","crossed","finger","fingers","hand","luck"],emoji:"🤞",text:"",type:1,order:280,group:1,subgroup:17,version:3,skins:[{label:"crossed fingers: light skin tone",hexcode:"1F91E-1F3FB",emoji:"🤞🏻",text:"",type:1,order:281,group:1,subgroup:17,version:3,tone:1,shortCodes:["fingers_crossed_tone1"]},{label:"crossed fingers: medium-light skin tone",hexcode:"1F91E-1F3FC",emoji:"🤞🏼",text:"",type:1,order:282,group:1,subgroup:17,version:3,tone:2,shortCodes:["fingers_crossed_tone2"]},{label:"crossed fingers: medium skin tone",hexcode:"1F91E-1F3FD",emoji:"🤞🏽",text:"",type:1,order:283,group:1,subgroup:17,version:3,tone:3,shortCodes:["fingers_crossed_tone3"]},{label:"crossed fingers: medium-dark skin tone",hexcode:"1F91E-1F3FE",emoji:"🤞🏾",text:"",type:1,order:284,group:1,subgroup:17,version:3,tone:4,shortCodes:["fingers_crossed_tone4"]},{label:"crossed fingers: dark skin tone",hexcode:"1F91E-1F3FF",emoji:"🤞🏿",text:"",type:1,order:285,group:1,subgroup:17,version:3,tone:5,shortCodes:["fingers_crossed_tone5"]}],shortCodes:["fingers_crossed"]},{label:"hand with index finger and thumb crossed",hexcode:"1FAF0",tags:["<3","crossed","expensive","finger","hand","heart","index","love","money","snap","thumb"],emoji:"🫰",text:"",type:1,order:286,group:1,subgroup:17,version:14,skins:[{label:"hand with index finger and thumb crossed: light skin tone",hexcode:"1FAF0-1F3FB",emoji:"🫰🏻",text:"",type:1,order:287,group:1,subgroup:17,version:14,tone:1,shortCodes:["hand_with_index_finger_and_thumb_crossed_tone1"]},{label:"hand with index finger and thumb crossed: medium-light skin tone",hexcode:"1FAF0-1F3FC",emoji:"🫰🏼",text:"",type:1,order:288,group:1,subgroup:17,version:14,tone:2,shortCodes:["hand_with_index_finger_and_thumb_crossed_tone2"]},{label:"hand with index finger and thumb crossed: medium skin tone",hexcode:"1FAF0-1F3FD",emoji:"🫰🏽",text:"",type:1,order:289,group:1,subgroup:17,version:14,tone:3,shortCodes:["hand_with_index_finger_and_thumb_crossed_tone3"]},{label:"hand with index finger and thumb crossed: medium-dark skin tone",hexcode:"1FAF0-1F3FE",emoji:"🫰🏾",text:"",type:1,order:290,group:1,subgroup:17,version:14,tone:4,shortCodes:["hand_with_index_finger_and_thumb_crossed_tone4"]},{label:"hand with index finger and thumb crossed: dark skin tone",hexcode:"1FAF0-1F3FF",emoji:"🫰🏿",text:"",type:1,order:291,group:1,subgroup:17,version:14,tone:5,shortCodes:["hand_with_index_finger_and_thumb_crossed_tone5"]}],shortCodes:["hand_with_index_finger_and_thumb_crossed"]},{label:"love-you gesture",hexcode:"1F91F",tags:["fingers","gesture","hand","ily","love","love-you","three","you"],emoji:"🤟",text:"",type:1,order:292,group:1,subgroup:17,version:5,skins:[{label:"love-you gesture: light skin tone",hexcode:"1F91F-1F3FB",emoji:"🤟🏻",text:"",type:1,order:293,group:1,subgroup:17,version:5,tone:1,shortCodes:["love_you_gesture_tone1"]},{label:"love-you gesture: medium-light skin tone",hexcode:"1F91F-1F3FC",emoji:"🤟🏼",text:"",type:1,order:294,group:1,subgroup:17,version:5,tone:2,shortCodes:["love_you_gesture_tone2"]},{label:"love-you gesture: medium skin tone",hexcode:"1F91F-1F3FD",emoji:"🤟🏽",text:"",type:1,order:295,group:1,subgroup:17,version:5,tone:3,shortCodes:["love_you_gesture_tone3"]},{label:"love-you gesture: medium-dark skin tone",hexcode:"1F91F-1F3FE",emoji:"🤟🏾",text:"",type:1,order:296,group:1,subgroup:17,version:5,tone:4,shortCodes:["love_you_gesture_tone4"]},{label:"love-you gesture: dark skin tone",hexcode:"1F91F-1F3FF",emoji:"🤟🏿",text:"",type:1,order:297,group:1,subgroup:17,version:5,tone:5,shortCodes:["love_you_gesture_tone5"]}],shortCodes:["love_you_gesture"]},{label:"sign of the horns",hexcode:"1F918",tags:["finger","hand","horns","rock-on","sign"],emoji:"🤘",text:"",type:1,order:298,group:1,subgroup:17,version:1,emoticon:["\\m/","\\M/"],skins:[{label:"sign of the horns: light skin tone",hexcode:"1F918-1F3FB",emoji:"🤘🏻",text:"",type:1,order:299,group:1,subgroup:17,version:1,tone:1,shortCodes:["metal_tone1","sign_of_the_horns_tone1"]},{label:"sign of the horns: medium-light skin tone",hexcode:"1F918-1F3FC",emoji:"🤘🏼",text:"",type:1,order:300,group:1,subgroup:17,version:1,tone:2,shortCodes:["metal_tone2","sign_of_the_horns_tone2"]},{label:"sign of the horns: medium skin tone",hexcode:"1F918-1F3FD",emoji:"🤘🏽",text:"",type:1,order:301,group:1,subgroup:17,version:1,tone:3,shortCodes:["metal_tone3","sign_of_the_horns_tone3"]},{label:"sign of the horns: medium-dark skin tone",hexcode:"1F918-1F3FE",emoji:"🤘🏾",text:"",type:1,order:302,group:1,subgroup:17,version:1,tone:4,shortCodes:["metal_tone4","sign_of_the_horns_tone4"]},{label:"sign of the horns: dark skin tone",hexcode:"1F918-1F3FF",emoji:"🤘🏿",text:"",type:1,order:303,group:1,subgroup:17,version:1,tone:5,shortCodes:["metal_tone5","sign_of_the_horns_tone5"]}],shortCodes:["metal","sign_of_the_horns"]},{label:"call me hand",hexcode:"1F919",tags:["call","hand","hang","loose","me","shaka"],emoji:"🤙",text:"",type:1,order:304,group:1,subgroup:17,version:3,skins:[{label:"call me hand: light skin tone",hexcode:"1F919-1F3FB",emoji:"🤙🏻",text:"",type:1,order:305,group:1,subgroup:17,version:3,tone:1,shortCodes:["call_me_hand_tone1"]},{label:"call me hand: medium-light skin tone",hexcode:"1F919-1F3FC",emoji:"🤙🏼",text:"",type:1,order:306,group:1,subgroup:17,version:3,tone:2,shortCodes:["call_me_hand_tone2"]},{label:"call me hand: medium skin tone",hexcode:"1F919-1F3FD",emoji:"🤙🏽",text:"",type:1,order:307,group:1,subgroup:17,version:3,tone:3,shortCodes:["call_me_hand_tone3"]},{label:"call me hand: medium-dark skin tone",hexcode:"1F919-1F3FE",emoji:"🤙🏾",text:"",type:1,order:308,group:1,subgroup:17,version:3,tone:4,shortCodes:["call_me_hand_tone4"]},{label:"call me hand: dark skin tone",hexcode:"1F919-1F3FF",emoji:"🤙🏿",text:"",type:1,order:309,group:1,subgroup:17,version:3,tone:5,shortCodes:["call_me_hand_tone5"]}],shortCodes:["call_me_hand"]},{label:"backhand index pointing left",hexcode:"1F448",tags:["backhand","finger","hand","index","left","point","pointing"],emoji:"👈️",text:"👈︎",type:1,order:310,group:1,subgroup:18,version:.6,skins:[{label:"backhand index pointing left: light skin tone",hexcode:"1F448-1F3FB",emoji:"👈🏻",text:"",type:1,order:311,group:1,subgroup:18,version:1,tone:1,shortCodes:["point_left_tone1"]},{label:"backhand index pointing left: medium-light skin tone",hexcode:"1F448-1F3FC",emoji:"👈🏼",text:"",type:1,order:312,group:1,subgroup:18,version:1,tone:2,shortCodes:["point_left_tone2"]},{label:"backhand index pointing left: medium skin tone",hexcode:"1F448-1F3FD",emoji:"👈🏽",text:"",type:1,order:313,group:1,subgroup:18,version:1,tone:3,shortCodes:["point_left_tone3"]},{label:"backhand index pointing left: medium-dark skin tone",hexcode:"1F448-1F3FE",emoji:"👈🏾",text:"",type:1,order:314,group:1,subgroup:18,version:1,tone:4,shortCodes:["point_left_tone4"]},{label:"backhand index pointing left: dark skin tone",hexcode:"1F448-1F3FF",emoji:"👈🏿",text:"",type:1,order:315,group:1,subgroup:18,version:1,tone:5,shortCodes:["point_left_tone5"]}],shortCodes:["point_left"]},{label:"backhand index pointing right",hexcode:"1F449",tags:["backhand","finger","hand","index","point","pointing","right"],emoji:"👉️",text:"👉︎",type:1,order:316,group:1,subgroup:18,version:.6,skins:[{label:"backhand index pointing right: light skin tone",hexcode:"1F449-1F3FB",emoji:"👉🏻",text:"",type:1,order:317,group:1,subgroup:18,version:1,tone:1,shortCodes:["point_right_tone1"]},{label:"backhand index pointing right: medium-light skin tone",hexcode:"1F449-1F3FC",emoji:"👉🏼",text:"",type:1,order:318,group:1,subgroup:18,version:1,tone:2,shortCodes:["point_right_tone2"]},{label:"backhand index pointing right: medium skin tone",hexcode:"1F449-1F3FD",emoji:"👉🏽",text:"",type:1,order:319,group:1,subgroup:18,version:1,tone:3,shortCodes:["point_right_tone3"]},{label:"backhand index pointing right: medium-dark skin tone",hexcode:"1F449-1F3FE",emoji:"👉🏾",text:"",type:1,order:320,group:1,subgroup:18,version:1,tone:4,shortCodes:["point_right_tone4"]},{label:"backhand index pointing right: dark skin tone",hexcode:"1F449-1F3FF",emoji:"👉🏿",text:"",type:1,order:321,group:1,subgroup:18,version:1,tone:5,shortCodes:["point_right_tone5"]}],shortCodes:["point_right"]},{label:"backhand index pointing up",hexcode:"1F446",tags:["backhand","finger","hand","index","point","pointing","up"],emoji:"👆️",text:"👆︎",type:1,order:322,group:1,subgroup:18,version:.6,skins:[{label:"backhand index pointing up: light skin tone",hexcode:"1F446-1F3FB",emoji:"👆🏻",text:"",type:1,order:323,group:1,subgroup:18,version:1,tone:1,shortCodes:["point_up_tone1"]},{label:"backhand index pointing up: medium-light skin tone",hexcode:"1F446-1F3FC",emoji:"👆🏼",text:"",type:1,order:324,group:1,subgroup:18,version:1,tone:2,shortCodes:["point_up_tone2"]},{label:"backhand index pointing up: medium skin tone",hexcode:"1F446-1F3FD",emoji:"👆🏽",text:"",type:1,order:325,group:1,subgroup:18,version:1,tone:3,shortCodes:["point_up_tone3"]},{label:"backhand index pointing up: medium-dark skin tone",hexcode:"1F446-1F3FE",emoji:"👆🏾",text:"",type:1,order:326,group:1,subgroup:18,version:1,tone:4,shortCodes:["point_up_tone4"]},{label:"backhand index pointing up: dark skin tone",hexcode:"1F446-1F3FF",emoji:"👆🏿",text:"",type:1,order:327,group:1,subgroup:18,version:1,tone:5,shortCodes:["point_up_tone5"]}],shortCodes:["point_up"]},{label:"middle finger",hexcode:"1F595",tags:["finger","hand","middle"],emoji:"🖕",text:"",type:1,order:328,group:1,subgroup:18,version:1,skins:[{label:"middle finger: light skin tone",hexcode:"1F595-1F3FB",emoji:"🖕🏻",text:"",type:1,order:329,group:1,subgroup:18,version:1,tone:1,shortCodes:["middle_finger_tone1"]},{label:"middle finger: medium-light skin tone",hexcode:"1F595-1F3FC",emoji:"🖕🏼",text:"",type:1,order:330,group:1,subgroup:18,version:1,tone:2,shortCodes:["middle_finger_tone2"]},{label:"middle finger: medium skin tone",hexcode:"1F595-1F3FD",emoji:"🖕🏽",text:"",type:1,order:331,group:1,subgroup:18,version:1,tone:3,shortCodes:["middle_finger_tone3"]},{label:"middle finger: medium-dark skin tone",hexcode:"1F595-1F3FE",emoji:"🖕🏾",text:"",type:1,order:332,group:1,subgroup:18,version:1,tone:4,shortCodes:["middle_finger_tone4"]},{label:"middle finger: dark skin tone",hexcode:"1F595-1F3FF",emoji:"🖕🏿",text:"",type:1,order:333,group:1,subgroup:18,version:1,tone:5,shortCodes:["middle_finger_tone5"]}],shortCodes:["middle_finger"]},{label:"backhand index pointing down",hexcode:"1F447",tags:["backhand","down","finger","hand","index","point","pointing"],emoji:"👇️",text:"👇︎",type:1,order:334,group:1,subgroup:18,version:.6,skins:[{label:"backhand index pointing down: light skin tone",hexcode:"1F447-1F3FB",emoji:"👇🏻",text:"",type:1,order:335,group:1,subgroup:18,version:1,tone:1,shortCodes:["point_down_tone1"]},{label:"backhand index pointing down: medium-light skin tone",hexcode:"1F447-1F3FC",emoji:"👇🏼",text:"",type:1,order:336,group:1,subgroup:18,version:1,tone:2,shortCodes:["point_down_tone2"]},{label:"backhand index pointing down: medium skin tone",hexcode:"1F447-1F3FD",emoji:"👇🏽",text:"",type:1,order:337,group:1,subgroup:18,version:1,tone:3,shortCodes:["point_down_tone3"]},{label:"backhand index pointing down: medium-dark skin tone",hexcode:"1F447-1F3FE",emoji:"👇🏾",text:"",type:1,order:338,group:1,subgroup:18,version:1,tone:4,shortCodes:["point_down_tone4"]},{label:"backhand index pointing down: dark skin tone",hexcode:"1F447-1F3FF",emoji:"👇🏿",text:"",type:1,order:339,group:1,subgroup:18,version:1,tone:5,shortCodes:["point_down_tone5"]}],shortCodes:["point_down"]},{label:"index pointing up",hexcode:"261D",tags:["finger","hand","index","point","pointing","this","up"],emoji:"☝️",text:"☝︎",type:0,order:341,group:1,subgroup:18,version:.6,skins:[{label:"index pointing up: light skin tone",hexcode:"261D-1F3FB",emoji:"☝🏻",text:"",type:1,order:342,group:1,subgroup:18,version:1,tone:1,shortCodes:["point_up_2_tone1"]},{label:"index pointing up: medium-light skin tone",hexcode:"261D-1F3FC",emoji:"☝🏼",text:"",type:1,order:343,group:1,subgroup:18,version:1,tone:2,shortCodes:["point_up_2_tone2"]},{label:"index pointing up: medium skin tone",hexcode:"261D-1F3FD",emoji:"☝🏽",text:"",type:1,order:344,group:1,subgroup:18,version:1,tone:3,shortCodes:["point_up_2_tone3"]},{label:"index pointing up: medium-dark skin tone",hexcode:"261D-1F3FE",emoji:"☝🏾",text:"",type:1,order:345,group:1,subgroup:18,version:1,tone:4,shortCodes:["point_up_2_tone4"]},{label:"index pointing up: dark skin tone",hexcode:"261D-1F3FF",emoji:"☝🏿",text:"",type:1,order:346,group:1,subgroup:18,version:1,tone:5,shortCodes:["point_up_2_tone5"]}],shortCodes:["point_up_2"]},{label:"index pointing at the viewer",hexcode:"1FAF5",tags:["at","finger","hand","index","pointing","poke","viewer","you"],emoji:"🫵",text:"",type:1,order:347,group:1,subgroup:18,version:14,skins:[{label:"index pointing at the viewer: light skin tone",hexcode:"1FAF5-1F3FB",emoji:"🫵🏻",text:"",type:1,order:348,group:1,subgroup:18,version:14,tone:1,shortCodes:["point_forward_tone1"]},{label:"index pointing at the viewer: medium-light skin tone",hexcode:"1FAF5-1F3FC",emoji:"🫵🏼",text:"",type:1,order:349,group:1,subgroup:18,version:14,tone:2,shortCodes:["point_forward_tone2"]},{label:"index pointing at the viewer: medium skin tone",hexcode:"1FAF5-1F3FD",emoji:"🫵🏽",text:"",type:1,order:350,group:1,subgroup:18,version:14,tone:3,shortCodes:["point_forward_tone3"]},{label:"index pointing at the viewer: medium-dark skin tone",hexcode:"1FAF5-1F3FE",emoji:"🫵🏾",text:"",type:1,order:351,group:1,subgroup:18,version:14,tone:4,shortCodes:["point_forward_tone4"]},{label:"index pointing at the viewer: dark skin tone",hexcode:"1FAF5-1F3FF",emoji:"🫵🏿",text:"",type:1,order:352,group:1,subgroup:18,version:14,tone:5,shortCodes:["point_forward_tone5"]}],shortCodes:["point_forward"]},{label:"thumbs up",hexcode:"1F44D",tags:["+1","good","hand","like","thumb","up","yes"],emoji:"👍️",text:"👍︎",type:1,order:353,group:1,subgroup:19,version:.6,skins:[{label:"thumbs up: light skin tone",hexcode:"1F44D-1F3FB",emoji:"👍🏻",text:"",type:1,order:354,group:1,subgroup:19,version:1,tone:1,shortCodes:["+1_tone1","thumbsup_tone1","yes_tone1"]},{label:"thumbs up: medium-light skin tone",hexcode:"1F44D-1F3FC",emoji:"👍🏼",text:"",type:1,order:355,group:1,subgroup:19,version:1,tone:2,shortCodes:["+1_tone2","thumbsup_tone2","yes_tone2"]},{label:"thumbs up: medium skin tone",hexcode:"1F44D-1F3FD",emoji:"👍🏽",text:"",type:1,order:356,group:1,subgroup:19,version:1,tone:3,shortCodes:["+1_tone3","thumbsup_tone3","yes_tone3"]},{label:"thumbs up: medium-dark skin tone",hexcode:"1F44D-1F3FE",emoji:"👍🏾",text:"",type:1,order:357,group:1,subgroup:19,version:1,tone:4,shortCodes:["+1_tone4","thumbsup_tone4","yes_tone4"]},{label:"thumbs up: dark skin tone",hexcode:"1F44D-1F3FF",emoji:"👍🏿",text:"",type:1,order:358,group:1,subgroup:19,version:1,tone:5,shortCodes:["+1_tone5","thumbsup_tone5","yes_tone5"]}],shortCodes:["+1","thumbsup","yes"]},{label:"thumbs down",hexcode:"1F44E",tags:["-1","bad","dislike","down","good","hand","no","nope","thumb","thumbs"],emoji:"👎️",text:"👎︎",type:1,order:359,group:1,subgroup:19,version:.6,skins:[{label:"thumbs down: light skin tone",hexcode:"1F44E-1F3FB",emoji:"👎🏻",text:"",type:1,order:360,group:1,subgroup:19,version:1,tone:1,shortCodes:["-1_tone1","no_tone1","thumbsdown_tone1"]},{label:"thumbs down: medium-light skin tone",hexcode:"1F44E-1F3FC",emoji:"👎🏼",text:"",type:1,order:361,group:1,subgroup:19,version:1,tone:2,shortCodes:["-1_tone2","no_tone2","thumbsdown_tone2"]},{label:"thumbs down: medium skin tone",hexcode:"1F44E-1F3FD",emoji:"👎🏽",text:"",type:1,order:362,group:1,subgroup:19,version:1,tone:3,shortCodes:["-1_tone3","no_tone3","thumbsdown_tone3"]},{label:"thumbs down: medium-dark skin tone",hexcode:"1F44E-1F3FE",emoji:"👎🏾",text:"",type:1,order:363,group:1,subgroup:19,version:1,tone:4,shortCodes:["-1_tone4","no_tone4","thumbsdown_tone4"]},{label:"thumbs down: dark skin tone",hexcode:"1F44E-1F3FF",emoji:"👎🏿",text:"",type:1,order:364,group:1,subgroup:19,version:1,tone:5,shortCodes:["-1_tone5","no_tone5","thumbsdown_tone5"]}],shortCodes:["-1","no","thumbsdown"]},{label:"raised fist",hexcode:"270A",tags:["clenched","fist","hand","punch","raised","solidarity"],emoji:"✊️",text:"✊︎",type:1,order:365,group:1,subgroup:19,version:.6,skins:[{label:"raised fist: light skin tone",hexcode:"270A-1F3FB",emoji:"✊🏻",text:"",type:1,order:366,group:1,subgroup:19,version:1,tone:1,shortCodes:["fist_tone1"]},{label:"raised fist: medium-light skin tone",hexcode:"270A-1F3FC",emoji:"✊🏼",text:"",type:1,order:367,group:1,subgroup:19,version:1,tone:2,shortCodes:["fist_tone2"]},{label:"raised fist: medium skin tone",hexcode:"270A-1F3FD",emoji:"✊🏽",text:"",type:1,order:368,group:1,subgroup:19,version:1,tone:3,shortCodes:["fist_tone3"]},{label:"raised fist: medium-dark skin tone",hexcode:"270A-1F3FE",emoji:"✊🏾",text:"",type:1,order:369,group:1,subgroup:19,version:1,tone:4,shortCodes:["fist_tone4"]},{label:"raised fist: dark skin tone",hexcode:"270A-1F3FF",emoji:"✊🏿",text:"",type:1,order:370,group:1,subgroup:19,version:1,tone:5,shortCodes:["fist_tone5"]}],shortCodes:["fist"]},{label:"oncoming fist",hexcode:"1F44A",tags:["absolutely","agree","boom","bro","bruh","bump","clenched","correct","fist","hand","knuckle","oncoming","pound","punch","rock","ttyl"],emoji:"👊",text:"",type:1,order:371,group:1,subgroup:19,version:.6,skins:[{label:"oncoming fist: light skin tone",hexcode:"1F44A-1F3FB",emoji:"👊🏻",text:"",type:1,order:372,group:1,subgroup:19,version:1,tone:1,shortCodes:["punch_tone1"]},{label:"oncoming fist: medium-light skin tone",hexcode:"1F44A-1F3FC",emoji:"👊🏼",text:"",type:1,order:373,group:1,subgroup:19,version:1,tone:2,shortCodes:["punch_tone2"]},{label:"oncoming fist: medium skin tone",hexcode:"1F44A-1F3FD",emoji:"👊🏽",text:"",type:1,order:374,group:1,subgroup:19,version:1,tone:3,shortCodes:["punch_tone3"]},{label:"oncoming fist: medium-dark skin tone",hexcode:"1F44A-1F3FE",emoji:"👊🏾",text:"",type:1,order:375,group:1,subgroup:19,version:1,tone:4,shortCodes:["punch_tone4"]},{label:"oncoming fist: dark skin tone",hexcode:"1F44A-1F3FF",emoji:"👊🏿",text:"",type:1,order:376,group:1,subgroup:19,version:1,tone:5,shortCodes:["punch_tone5"]}],shortCodes:["punch"]},{label:"left-facing fist",hexcode:"1F91B",tags:["fist","left-facing","leftwards"],emoji:"🤛",text:"",type:1,order:377,group:1,subgroup:19,version:3,skins:[{label:"left-facing fist: light skin tone",hexcode:"1F91B-1F3FB",emoji:"🤛🏻",text:"",type:1,order:378,group:1,subgroup:19,version:3,tone:1,shortCodes:["left_facing_fist_tone1"]},{label:"left-facing fist: medium-light skin tone",hexcode:"1F91B-1F3FC",emoji:"🤛🏼",text:"",type:1,order:379,group:1,subgroup:19,version:3,tone:2,shortCodes:["left_facing_fist_tone2"]},{label:"left-facing fist: medium skin tone",hexcode:"1F91B-1F3FD",emoji:"🤛🏽",text:"",type:1,order:380,group:1,subgroup:19,version:3,tone:3,shortCodes:["left_facing_fist_tone3"]},{label:"left-facing fist: medium-dark skin tone",hexcode:"1F91B-1F3FE",emoji:"🤛🏾",text:"",type:1,order:381,group:1,subgroup:19,version:3,tone:4,shortCodes:["left_facing_fist_tone4"]},{label:"left-facing fist: dark skin tone",hexcode:"1F91B-1F3FF",emoji:"🤛🏿",text:"",type:1,order:382,group:1,subgroup:19,version:3,tone:5,shortCodes:["left_facing_fist_tone5"]}],shortCodes:["left_facing_fist"]},{label:"right-facing fist",hexcode:"1F91C",tags:["fist","right-facing","rightwards"],emoji:"🤜",text:"",type:1,order:383,group:1,subgroup:19,version:3,skins:[{label:"right-facing fist: light skin tone",hexcode:"1F91C-1F3FB",emoji:"🤜🏻",text:"",type:1,order:384,group:1,subgroup:19,version:3,tone:1,shortCodes:["right_facing_fist_tone1"]},{label:"right-facing fist: medium-light skin tone",hexcode:"1F91C-1F3FC",emoji:"🤜🏼",text:"",type:1,order:385,group:1,subgroup:19,version:3,tone:2,shortCodes:["right_facing_fist_tone2"]},{label:"right-facing fist: medium skin tone",hexcode:"1F91C-1F3FD",emoji:"🤜🏽",text:"",type:1,order:386,group:1,subgroup:19,version:3,tone:3,shortCodes:["right_facing_fist_tone3"]},{label:"right-facing fist: medium-dark skin tone",hexcode:"1F91C-1F3FE",emoji:"🤜🏾",text:"",type:1,order:387,group:1,subgroup:19,version:3,tone:4,shortCodes:["right_facing_fist_tone4"]},{label:"right-facing fist: dark skin tone",hexcode:"1F91C-1F3FF",emoji:"🤜🏿",text:"",type:1,order:388,group:1,subgroup:19,version:3,tone:5,shortCodes:["right_facing_fist_tone5"]}],shortCodes:["right_facing_fist"]},{label:"clapping hands",hexcode:"1F44F",tags:["applause","approval","awesome","clap","congrats","congratulations","excited","good","great","hand","homie","job","nice","prayed","well","yay"],emoji:"👏",text:"",type:1,order:389,group:1,subgroup:20,version:.6,skins:[{label:"clapping hands: light skin tone",hexcode:"1F44F-1F3FB",emoji:"👏🏻",text:"",type:1,order:390,group:1,subgroup:20,version:1,tone:1,shortCodes:["clap_tone1","clapping_hands_tone1"]},{label:"clapping hands: medium-light skin tone",hexcode:"1F44F-1F3FC",emoji:"👏🏼",text:"",type:1,order:391,group:1,subgroup:20,version:1,tone:2,shortCodes:["clap_tone2","clapping_hands_tone2"]},{label:"clapping hands: medium skin tone",hexcode:"1F44F-1F3FD",emoji:"👏🏽",text:"",type:1,order:392,group:1,subgroup:20,version:1,tone:3,shortCodes:["clap_tone3","clapping_hands_tone3"]},{label:"clapping hands: medium-dark skin tone",hexcode:"1F44F-1F3FE",emoji:"👏🏾",text:"",type:1,order:393,group:1,subgroup:20,version:1,tone:4,shortCodes:["clap_tone4","clapping_hands_tone4"]},{label:"clapping hands: dark skin tone",hexcode:"1F44F-1F3FF",emoji:"👏🏿",text:"",type:1,order:394,group:1,subgroup:20,version:1,tone:5,shortCodes:["clap_tone5","clapping_hands_tone5"]}],shortCodes:["clap","clapping_hands"]},{label:"raising hands",hexcode:"1F64C",tags:["celebration","gesture","hand","hands","hooray","praise","raised","raising"],emoji:"🙌",text:"",type:1,order:395,group:1,subgroup:20,version:.6,skins:[{label:"raising hands: light skin tone",hexcode:"1F64C-1F3FB",emoji:"🙌🏻",text:"",type:1,order:396,group:1,subgroup:20,version:1,tone:1,shortCodes:["raised_hands_tone1"]},{label:"raising hands: medium-light skin tone",hexcode:"1F64C-1F3FC",emoji:"🙌🏼",text:"",type:1,order:397,group:1,subgroup:20,version:1,tone:2,shortCodes:["raised_hands_tone2"]},{label:"raising hands: medium skin tone",hexcode:"1F64C-1F3FD",emoji:"🙌🏽",text:"",type:1,order:398,group:1,subgroup:20,version:1,tone:3,shortCodes:["raised_hands_tone3"]},{label:"raising hands: medium-dark skin tone",hexcode:"1F64C-1F3FE",emoji:"🙌🏾",text:"",type:1,order:399,group:1,subgroup:20,version:1,tone:4,shortCodes:["raised_hands_tone4"]},{label:"raising hands: dark skin tone",hexcode:"1F64C-1F3FF",emoji:"🙌🏿",text:"",type:1,order:400,group:1,subgroup:20,version:1,tone:5,shortCodes:["raised_hands_tone5"]}],shortCodes:["raised_hands"]},{label:"heart hands",hexcode:"1FAF6",tags:["<3","hands","heart","love","you"],emoji:"🫶",text:"",type:1,order:401,group:1,subgroup:20,version:14,skins:[{label:"heart hands: light skin tone",hexcode:"1FAF6-1F3FB",emoji:"🫶🏻",text:"",type:1,order:402,group:1,subgroup:20,version:14,tone:1,shortCodes:["heart_hands_tone1"]},{label:"heart hands: medium-light skin tone",hexcode:"1FAF6-1F3FC",emoji:"🫶🏼",text:"",type:1,order:403,group:1,subgroup:20,version:14,tone:2,shortCodes:["heart_hands_tone2"]},{label:"heart hands: medium skin tone",hexcode:"1FAF6-1F3FD",emoji:"🫶🏽",text:"",type:1,order:404,group:1,subgroup:20,version:14,tone:3,shortCodes:["heart_hands_tone3"]},{label:"heart hands: medium-dark skin tone",hexcode:"1FAF6-1F3FE",emoji:"🫶🏾",text:"",type:1,order:405,group:1,subgroup:20,version:14,tone:4,shortCodes:["heart_hands_tone4"]},{label:"heart hands: dark skin tone",hexcode:"1FAF6-1F3FF",emoji:"🫶🏿",text:"",type:1,order:406,group:1,subgroup:20,version:14,tone:5,shortCodes:["heart_hands_tone5"]}],shortCodes:["heart_hands"]},{label:"open hands",hexcode:"1F450",tags:["hand","hands","hug","jazz","open","swerve"],emoji:"👐",text:"",type:1,order:407,group:1,subgroup:20,version:.6,skins:[{label:"open hands: light skin tone",hexcode:"1F450-1F3FB",emoji:"👐🏻",text:"",type:1,order:408,group:1,subgroup:20,version:1,tone:1,shortCodes:["open_hands_tone1"]},{label:"open hands: medium-light skin tone",hexcode:"1F450-1F3FC",emoji:"👐🏼",text:"",type:1,order:409,group:1,subgroup:20,version:1,tone:2,shortCodes:["open_hands_tone2"]},{label:"open hands: medium skin tone",hexcode:"1F450-1F3FD",emoji:"👐🏽",text:"",type:1,order:410,group:1,subgroup:20,version:1,tone:3,shortCodes:["open_hands_tone3"]},{label:"open hands: medium-dark skin tone",hexcode:"1F450-1F3FE",emoji:"👐🏾",text:"",type:1,order:411,group:1,subgroup:20,version:1,tone:4,shortCodes:["open_hands_tone4"]},{label:"open hands: dark skin tone",hexcode:"1F450-1F3FF",emoji:"👐🏿",text:"",type:1,order:412,group:1,subgroup:20,version:1,tone:5,shortCodes:["open_hands_tone5"]}],shortCodes:["open_hands"]},{label:"palms up together",hexcode:"1F932",tags:["cupped","dua","hands","palms","pray","prayer","together","up","wish"],emoji:"🤲",text:"",type:1,order:413,group:1,subgroup:20,version:5,skins:[{label:"palms up together: light skin tone",hexcode:"1F932-1F3FB",emoji:"🤲🏻",text:"",type:1,order:414,group:1,subgroup:20,version:5,tone:1,shortCodes:["palms_up_together_tone1"]},{label:"palms up together: medium-light skin tone",hexcode:"1F932-1F3FC",emoji:"🤲🏼",text:"",type:1,order:415,group:1,subgroup:20,version:5,tone:2,shortCodes:["palms_up_together_tone2"]},{label:"palms up together: medium skin tone",hexcode:"1F932-1F3FD",emoji:"🤲🏽",text:"",type:1,order:416,group:1,subgroup:20,version:5,tone:3,shortCodes:["palms_up_together_tone3"]},{label:"palms up together: medium-dark skin tone",hexcode:"1F932-1F3FE",emoji:"🤲🏾",text:"",type:1,order:417,group:1,subgroup:20,version:5,tone:4,shortCodes:["palms_up_together_tone4"]},{label:"palms up together: dark skin tone",hexcode:"1F932-1F3FF",emoji:"🤲🏿",text:"",type:1,order:418,group:1,subgroup:20,version:5,tone:5,shortCodes:["palms_up_together_tone5"]}],shortCodes:["palms_up_together"]},{label:"handshake",hexcode:"1F91D",tags:["agreement","deal","hand","meeting","shake"],emoji:"🤝",text:"",type:1,order:419,group:1,subgroup:20,version:3,skins:[{label:"handshake: light skin tone",hexcode:"1F91D-1F3FB",emoji:"🤝🏻",text:"",type:1,order:420,group:1,subgroup:20,version:14,tone:1,shortCodes:["handshake_tone1"]},{label:"handshake: medium-light skin tone",hexcode:"1F91D-1F3FC",emoji:"🤝🏼",text:"",type:1,order:421,group:1,subgroup:20,version:14,tone:2,shortCodes:["handshake_tone2"]},{label:"handshake: medium skin tone",hexcode:"1F91D-1F3FD",emoji:"🤝🏽",text:"",type:1,order:422,group:1,subgroup:20,version:14,tone:3,shortCodes:["handshake_tone3"]},{label:"handshake: medium-dark skin tone",hexcode:"1F91D-1F3FE",emoji:"🤝🏾",text:"",type:1,order:423,group:1,subgroup:20,version:14,tone:4,shortCodes:["handshake_tone4"]},{label:"handshake: dark skin tone",hexcode:"1F91D-1F3FF",emoji:"🤝🏿",text:"",type:1,order:424,group:1,subgroup:20,version:14,tone:5,shortCodes:["handshake_tone5"]},{label:"handshake: light skin tone, medium-light skin tone",hexcode:"1FAF1-1F3FB-200D-1FAF2-1F3FC",emoji:"🫱🏻🫲🏼",text:"",type:1,order:425,group:1,subgroup:20,version:14,tone:[1,2],shortCodes:["handshake_tone1-2"]},{label:"handshake: light skin tone, medium skin tone",hexcode:"1FAF1-1F3FB-200D-1FAF2-1F3FD",emoji:"🫱🏻🫲🏽",text:"",type:1,order:426,group:1,subgroup:20,version:14,tone:[1,3],shortCodes:["handshake_tone1-3"]},{label:"handshake: light skin tone, medium-dark skin tone",hexcode:"1FAF1-1F3FB-200D-1FAF2-1F3FE",emoji:"🫱🏻🫲🏾",text:"",type:1,order:427,group:1,subgroup:20,version:14,tone:[1,4],shortCodes:["handshake_tone1-4"]},{label:"handshake: light skin tone, dark skin tone",hexcode:"1FAF1-1F3FB-200D-1FAF2-1F3FF",emoji:"🫱🏻🫲🏿",text:"",type:1,order:428,group:1,subgroup:20,version:14,tone:[1,5],shortCodes:["handshake_tone1-5"]},{label:"handshake: medium-light skin tone, light skin tone",hexcode:"1FAF1-1F3FC-200D-1FAF2-1F3FB",emoji:"🫱🏼🫲🏻",text:"",type:1,order:429,group:1,subgroup:20,version:14,tone:[2,1],shortCodes:["handshake_tone2-1"]},{label:"handshake: medium-light skin tone, medium skin tone",hexcode:"1FAF1-1F3FC-200D-1FAF2-1F3FD",emoji:"🫱🏼🫲🏽",text:"",type:1,order:430,group:1,subgroup:20,version:14,tone:[2,3],shortCodes:["handshake_tone2-3"]},{label:"handshake: medium-light skin tone, medium-dark skin tone",hexcode:"1FAF1-1F3FC-200D-1FAF2-1F3FE",emoji:"🫱🏼🫲🏾",text:"",type:1,order:431,group:1,subgroup:20,version:14,tone:[2,4],shortCodes:["handshake_tone2-4"]},{label:"handshake: medium-light skin tone, dark skin tone",hexcode:"1FAF1-1F3FC-200D-1FAF2-1F3FF",emoji:"🫱🏼🫲🏿",text:"",type:1,order:432,group:1,subgroup:20,version:14,tone:[2,5],shortCodes:["handshake_tone2-5"]},{label:"handshake: medium skin tone, light skin tone",hexcode:"1FAF1-1F3FD-200D-1FAF2-1F3FB",emoji:"🫱🏽🫲🏻",text:"",type:1,order:433,group:1,subgroup:20,version:14,tone:[3,1],shortCodes:["handshake_tone3-1"]},{label:"handshake: medium skin tone, medium-light skin tone",hexcode:"1FAF1-1F3FD-200D-1FAF2-1F3FC",emoji:"🫱🏽🫲🏼",text:"",type:1,order:434,group:1,subgroup:20,version:14,tone:[3,2],shortCodes:["handshake_tone3-2"]},{label:"handshake: medium skin tone, medium-dark skin tone",hexcode:"1FAF1-1F3FD-200D-1FAF2-1F3FE",emoji:"🫱🏽🫲🏾",text:"",type:1,order:435,group:1,subgroup:20,version:14,tone:[3,4],shortCodes:["handshake_tone3-4"]},{label:"handshake: medium skin tone, dark skin tone",hexcode:"1FAF1-1F3FD-200D-1FAF2-1F3FF",emoji:"🫱🏽🫲🏿",text:"",type:1,order:436,group:1,subgroup:20,version:14,tone:[3,5],shortCodes:["handshake_tone3-5"]},{label:"handshake: medium-dark skin tone, light skin tone",hexcode:"1FAF1-1F3FE-200D-1FAF2-1F3FB",emoji:"🫱🏾🫲🏻",text:"",type:1,order:437,group:1,subgroup:20,version:14,tone:[4,1],shortCodes:["handshake_tone4-1"]},{label:"handshake: medium-dark skin tone, medium-light skin tone",hexcode:"1FAF1-1F3FE-200D-1FAF2-1F3FC",emoji:"🫱🏾🫲🏼",text:"",type:1,order:438,group:1,subgroup:20,version:14,tone:[4,2],shortCodes:["handshake_tone4-2"]},{label:"handshake: medium-dark skin tone, medium skin tone",hexcode:"1FAF1-1F3FE-200D-1FAF2-1F3FD",emoji:"🫱🏾🫲🏽",text:"",type:1,order:439,group:1,subgroup:20,version:14,tone:[4,3],shortCodes:["handshake_tone4-3"]},{label:"handshake: medium-dark skin tone, dark skin tone",hexcode:"1FAF1-1F3FE-200D-1FAF2-1F3FF",emoji:"🫱🏾🫲🏿",text:"",type:1,order:440,group:1,subgroup:20,version:14,tone:[4,5],shortCodes:["handshake_tone4-5"]},{label:"handshake: dark skin tone, light skin tone",hexcode:"1FAF1-1F3FF-200D-1FAF2-1F3FB",emoji:"🫱🏿🫲🏻",text:"",type:1,order:441,group:1,subgroup:20,version:14,tone:[5,1],shortCodes:["handshake_tone5-1"]},{label:"handshake: dark skin tone, medium-light skin tone",hexcode:"1FAF1-1F3FF-200D-1FAF2-1F3FC",emoji:"🫱🏿🫲🏼",text:"",type:1,order:442,group:1,subgroup:20,version:14,tone:[5,2],shortCodes:["handshake_tone5-2"]},{label:"handshake: dark skin tone, medium skin tone",hexcode:"1FAF1-1F3FF-200D-1FAF2-1F3FD",emoji:"🫱🏿🫲🏽",text:"",type:1,order:443,group:1,subgroup:20,version:14,tone:[5,3],shortCodes:["handshake_tone5-3"]},{label:"handshake: dark skin tone, medium-dark skin tone",hexcode:"1FAF1-1F3FF-200D-1FAF2-1F3FE",emoji:"🫱🏿🫲🏾",text:"",type:1,order:444,group:1,subgroup:20,version:14,tone:[5,4],shortCodes:["handshake_tone5-4"]}],shortCodes:["handshake"]},{label:"folded hands",hexcode:"1F64F",tags:["appreciate","ask","beg","blessed","bow","cmon","five","folded","gesture","hand","high","please","pray","thanks","thx"],emoji:"🙏",text:"",type:1,order:445,group:1,subgroup:20,version:.6,skins:[{label:"folded hands: light skin tone",hexcode:"1F64F-1F3FB",emoji:"🙏🏻",text:"",type:1,order:446,group:1,subgroup:20,version:1,tone:1,shortCodes:["folded_hands_tone1","pray_tone1"]},{label:"folded hands: medium-light skin tone",hexcode:"1F64F-1F3FC",emoji:"🙏🏼",text:"",type:1,order:447,group:1,subgroup:20,version:1,tone:2,shortCodes:["folded_hands_tone2","pray_tone2"]},{label:"folded hands: medium skin tone",hexcode:"1F64F-1F3FD",emoji:"🙏🏽",text:"",type:1,order:448,group:1,subgroup:20,version:1,tone:3,shortCodes:["folded_hands_tone3","pray_tone3"]},{label:"folded hands: medium-dark skin tone",hexcode:"1F64F-1F3FE",emoji:"🙏🏾",text:"",type:1,order:449,group:1,subgroup:20,version:1,tone:4,shortCodes:["folded_hands_tone4","pray_tone4"]},{label:"folded hands: dark skin tone",hexcode:"1F64F-1F3FF",emoji:"🙏🏿",text:"",type:1,order:450,group:1,subgroup:20,version:1,tone:5,shortCodes:["folded_hands_tone5","pray_tone5"]}],shortCodes:["folded_hands","pray"]},{label:"writing hand",hexcode:"270D",tags:["hand","write","writing"],emoji:"✍️",text:"✍︎",type:0,order:452,group:1,subgroup:21,version:.7,skins:[{label:"writing hand: light skin tone",hexcode:"270D-1F3FB",emoji:"✍🏻",text:"",type:1,order:453,group:1,subgroup:21,version:1,tone:1,shortCodes:["writing_hand_tone1"]},{label:"writing hand: medium-light skin tone",hexcode:"270D-1F3FC",emoji:"✍🏼",text:"",type:1,order:454,group:1,subgroup:21,version:1,tone:2,shortCodes:["writing_hand_tone2"]},{label:"writing hand: medium skin tone",hexcode:"270D-1F3FD",emoji:"✍🏽",text:"",type:1,order:455,group:1,subgroup:21,version:1,tone:3,shortCodes:["writing_hand_tone3"]},{label:"writing hand: medium-dark skin tone",hexcode:"270D-1F3FE",emoji:"✍🏾",text:"",type:1,order:456,group:1,subgroup:21,version:1,tone:4,shortCodes:["writing_hand_tone4"]},{label:"writing hand: dark skin tone",hexcode:"270D-1F3FF",emoji:"✍🏿",text:"",type:1,order:457,group:1,subgroup:21,version:1,tone:5,shortCodes:["writing_hand_tone5"]}],shortCodes:["writing_hand"]},{label:"nail polish",hexcode:"1F485",tags:["bored","care","cosmetics","done","makeup","manicure","nail","polish","whatever"],emoji:"💅",text:"",type:1,order:458,group:1,subgroup:21,version:.6,skins:[{label:"nail polish: light skin tone",hexcode:"1F485-1F3FB",emoji:"💅🏻",text:"",type:1,order:459,group:1,subgroup:21,version:1,tone:1,shortCodes:["nail_care_tone1","nail_polish_tone1"]},{label:"nail polish: medium-light skin tone",hexcode:"1F485-1F3FC",emoji:"💅🏼",text:"",type:1,order:460,group:1,subgroup:21,version:1,tone:2,shortCodes:["nail_care_tone2","nail_polish_tone2"]},{label:"nail polish: medium skin tone",hexcode:"1F485-1F3FD",emoji:"💅🏽",text:"",type:1,order:461,group:1,subgroup:21,version:1,tone:3,shortCodes:["nail_care_tone3","nail_polish_tone3"]},{label:"nail polish: medium-dark skin tone",hexcode:"1F485-1F3FE",emoji:"💅🏾",text:"",type:1,order:462,group:1,subgroup:21,version:1,tone:4,shortCodes:["nail_care_tone4","nail_polish_tone4"]},{label:"nail polish: dark skin tone",hexcode:"1F485-1F3FF",emoji:"💅🏿",text:"",type:1,order:463,group:1,subgroup:21,version:1,tone:5,shortCodes:["nail_care_tone5","nail_polish_tone5"]}],shortCodes:["nail_care","nail_polish"]},{label:"selfie",hexcode:"1F933",tags:["camera","phone"],emoji:"🤳",text:"",type:1,order:464,group:1,subgroup:21,version:3,skins:[{label:"selfie: light skin tone",hexcode:"1F933-1F3FB",emoji:"🤳🏻",text:"",type:1,order:465,group:1,subgroup:21,version:3,tone:1,shortCodes:["selfie_tone1"]},{label:"selfie: medium-light skin tone",hexcode:"1F933-1F3FC",emoji:"🤳🏼",text:"",type:1,order:466,group:1,subgroup:21,version:3,tone:2,shortCodes:["selfie_tone2"]},{label:"selfie: medium skin tone",hexcode:"1F933-1F3FD",emoji:"🤳🏽",text:"",type:1,order:467,group:1,subgroup:21,version:3,tone:3,shortCodes:["selfie_tone3"]},{label:"selfie: medium-dark skin tone",hexcode:"1F933-1F3FE",emoji:"🤳🏾",text:"",type:1,order:468,group:1,subgroup:21,version:3,tone:4,shortCodes:["selfie_tone4"]},{label:"selfie: dark skin tone",hexcode:"1F933-1F3FF",emoji:"🤳🏿",text:"",type:1,order:469,group:1,subgroup:21,version:3,tone:5,shortCodes:["selfie_tone5"]}],shortCodes:["selfie"]},{label:"flexed biceps",hexcode:"1F4AA",tags:["arm","beast","bench","biceps","bodybuilder","bro","curls","flex","gains","gym","jacked","muscle","press","ripped","strong","weightlift"],emoji:"💪",text:"",type:1,order:470,group:1,subgroup:22,version:.6,skins:[{label:"flexed biceps: light skin tone",hexcode:"1F4AA-1F3FB",emoji:"💪🏻",text:"",type:1,order:471,group:1,subgroup:22,version:1,tone:1,shortCodes:["muscle_tone1","right_bicep_tone1"]},{label:"flexed biceps: medium-light skin tone",hexcode:"1F4AA-1F3FC",emoji:"💪🏼",text:"",type:1,order:472,group:1,subgroup:22,version:1,tone:2,shortCodes:["muscle_tone2","right_bicep_tone2"]},{label:"flexed biceps: medium skin tone",hexcode:"1F4AA-1F3FD",emoji:"💪🏽",text:"",type:1,order:473,group:1,subgroup:22,version:1,tone:3,shortCodes:["muscle_tone3","right_bicep_tone3"]},{label:"flexed biceps: medium-dark skin tone",hexcode:"1F4AA-1F3FE",emoji:"💪🏾",text:"",type:1,order:474,group:1,subgroup:22,version:1,tone:4,shortCodes:["muscle_tone4","right_bicep_tone4"]},{label:"flexed biceps: dark skin tone",hexcode:"1F4AA-1F3FF",emoji:"💪🏿",text:"",type:1,order:475,group:1,subgroup:22,version:1,tone:5,shortCodes:["muscle_tone5","right_bicep_tone5"]}],shortCodes:["muscle","right_bicep"]},{label:"mechanical arm",hexcode:"1F9BE",tags:["accessibility","arm","mechanical","prosthetic"],emoji:"🦾",text:"",type:1,order:476,group:1,subgroup:22,version:12,shortCodes:["mechanical_arm"]},{label:"mechanical leg",hexcode:"1F9BF",tags:["accessibility","leg","mechanical","prosthetic"],emoji:"🦿",text:"",type:1,order:477,group:1,subgroup:22,version:12,shortCodes:["mechanical_leg"]},{label:"leg",hexcode:"1F9B5",tags:["bent","foot","kick","knee","limb"],emoji:"🦵",text:"",type:1,order:478,group:1,subgroup:22,version:11,skins:[{label:"leg: light skin tone",hexcode:"1F9B5-1F3FB",emoji:"🦵🏻",text:"",type:1,order:479,group:1,subgroup:22,version:11,tone:1,shortCodes:["leg_tone1"]},{label:"leg: medium-light skin tone",hexcode:"1F9B5-1F3FC",emoji:"🦵🏼",text:"",type:1,order:480,group:1,subgroup:22,version:11,tone:2,shortCodes:["leg_tone2"]},{label:"leg: medium skin tone",hexcode:"1F9B5-1F3FD",emoji:"🦵🏽",text:"",type:1,order:481,group:1,subgroup:22,version:11,tone:3,shortCodes:["leg_tone3"]},{label:"leg: medium-dark skin tone",hexcode:"1F9B5-1F3FE",emoji:"🦵🏾",text:"",type:1,order:482,group:1,subgroup:22,version:11,tone:4,shortCodes:["leg_tone4"]},{label:"leg: dark skin tone",hexcode:"1F9B5-1F3FF",emoji:"🦵🏿",text:"",type:1,order:483,group:1,subgroup:22,version:11,tone:5,shortCodes:["leg_tone5"]}],shortCodes:["leg"]},{label:"foot",hexcode:"1F9B6",tags:["ankle","feet","kick","stomp"],emoji:"🦶",text:"",type:1,order:484,group:1,subgroup:22,version:11,skins:[{label:"foot: light skin tone",hexcode:"1F9B6-1F3FB",emoji:"🦶🏻",text:"",type:1,order:485,group:1,subgroup:22,version:11,tone:1,shortCodes:["foot_tone1"]},{label:"foot: medium-light skin tone",hexcode:"1F9B6-1F3FC",emoji:"🦶🏼",text:"",type:1,order:486,group:1,subgroup:22,version:11,tone:2,shortCodes:["foot_tone2"]},{label:"foot: medium skin tone",hexcode:"1F9B6-1F3FD",emoji:"🦶🏽",text:"",type:1,order:487,group:1,subgroup:22,version:11,tone:3,shortCodes:["foot_tone3"]},{label:"foot: medium-dark skin tone",hexcode:"1F9B6-1F3FE",emoji:"🦶🏾",text:"",type:1,order:488,group:1,subgroup:22,version:11,tone:4,shortCodes:["foot_tone4"]},{label:"foot: dark skin tone",hexcode:"1F9B6-1F3FF",emoji:"🦶🏿",text:"",type:1,order:489,group:1,subgroup:22,version:11,tone:5,shortCodes:["foot_tone5"]}],shortCodes:["foot"]},{label:"ear",hexcode:"1F442",tags:["body","ears","hear","hearing","listen","listening","sound"],emoji:"👂️",text:"👂︎",type:1,order:490,group:1,subgroup:22,version:.6,skins:[{label:"ear: light skin tone",hexcode:"1F442-1F3FB",emoji:"👂🏻",text:"",type:1,order:491,group:1,subgroup:22,version:1,tone:1,shortCodes:["ear_tone1"]},{label:"ear: medium-light skin tone",hexcode:"1F442-1F3FC",emoji:"👂🏼",text:"",type:1,order:492,group:1,subgroup:22,version:1,tone:2,shortCodes:["ear_tone2"]},{label:"ear: medium skin tone",hexcode:"1F442-1F3FD",emoji:"👂🏽",text:"",type:1,order:493,group:1,subgroup:22,version:1,tone:3,shortCodes:["ear_tone3"]},{label:"ear: medium-dark skin tone",hexcode:"1F442-1F3FE",emoji:"👂🏾",text:"",type:1,order:494,group:1,subgroup:22,version:1,tone:4,shortCodes:["ear_tone4"]},{label:"ear: dark skin tone",hexcode:"1F442-1F3FF",emoji:"👂🏿",text:"",type:1,order:495,group:1,subgroup:22,version:1,tone:5,shortCodes:["ear_tone5"]}],shortCodes:["ear"]},{label:"ear with hearing aid",hexcode:"1F9BB",tags:["accessibility","aid","ear","hard","hearing"],emoji:"🦻",text:"",type:1,order:496,group:1,subgroup:22,version:12,skins:[{label:"ear with hearing aid: light skin tone",hexcode:"1F9BB-1F3FB",emoji:"🦻🏻",text:"",type:1,order:497,group:1,subgroup:22,version:12,tone:1,shortCodes:["ear_with_hearing_aid_tone1","hearing_aid_tone1"]},{label:"ear with hearing aid: medium-light skin tone",hexcode:"1F9BB-1F3FC",emoji:"🦻🏼",text:"",type:1,order:498,group:1,subgroup:22,version:12,tone:2,shortCodes:["ear_with_hearing_aid_tone2","hearing_aid_tone2"]},{label:"ear with hearing aid: medium skin tone",hexcode:"1F9BB-1F3FD",emoji:"🦻🏽",text:"",type:1,order:499,group:1,subgroup:22,version:12,tone:3,shortCodes:["ear_with_hearing_aid_tone3","hearing_aid_tone3"]},{label:"ear with hearing aid: medium-dark skin tone",hexcode:"1F9BB-1F3FE",emoji:"🦻🏾",text:"",type:1,order:500,group:1,subgroup:22,version:12,tone:4,shortCodes:["ear_with_hearing_aid_tone4","hearing_aid_tone4"]},{label:"ear with hearing aid: dark skin tone",hexcode:"1F9BB-1F3FF",emoji:"🦻🏿",text:"",type:1,order:501,group:1,subgroup:22,version:12,tone:5,shortCodes:["ear_with_hearing_aid_tone5","hearing_aid_tone5"]}],shortCodes:["ear_with_hearing_aid","hearing_aid"]},{label:"nose",hexcode:"1F443",tags:["body","noses","nosey","odor","smell","smells"],emoji:"👃",text:"",type:1,order:502,group:1,subgroup:22,version:.6,skins:[{label:"nose: light skin tone",hexcode:"1F443-1F3FB",emoji:"👃🏻",text:"",type:1,order:503,group:1,subgroup:22,version:1,tone:1,shortCodes:["nose_tone1"]},{label:"nose: medium-light skin tone",hexcode:"1F443-1F3FC",emoji:"👃🏼",text:"",type:1,order:504,group:1,subgroup:22,version:1,tone:2,shortCodes:["nose_tone2"]},{label:"nose: medium skin tone",hexcode:"1F443-1F3FD",emoji:"👃🏽",text:"",type:1,order:505,group:1,subgroup:22,version:1,tone:3,shortCodes:["nose_tone3"]},{label:"nose: medium-dark skin tone",hexcode:"1F443-1F3FE",emoji:"👃🏾",text:"",type:1,order:506,group:1,subgroup:22,version:1,tone:4,shortCodes:["nose_tone4"]},{label:"nose: dark skin tone",hexcode:"1F443-1F3FF",emoji:"👃🏿",text:"",type:1,order:507,group:1,subgroup:22,version:1,tone:5,shortCodes:["nose_tone5"]}],shortCodes:["nose"]},{label:"brain",hexcode:"1F9E0",tags:["intelligent","smart"],emoji:"🧠",text:"",type:1,order:508,group:1,subgroup:22,version:5,shortCodes:["brain"]},{label:"anatomical heart",hexcode:"1FAC0",tags:["anatomical","beat","cardiology","heart","heartbeat","organ","pulse","real","red"],emoji:"🫀",text:"",type:1,order:509,group:1,subgroup:22,version:13,shortCodes:["anatomical_heart"]},{label:"lungs",hexcode:"1FAC1",tags:["breath","breathe","exhalation","inhalation","lung","organ","respiration"],emoji:"🫁",text:"",type:1,order:510,group:1,subgroup:22,version:13,shortCodes:["lungs"]},{label:"tooth",hexcode:"1F9B7",tags:["dentist","pearly","teeth","white"],emoji:"🦷",text:"",type:1,order:511,group:1,subgroup:22,version:11,shortCodes:["tooth"]},{label:"bone",hexcode:"1F9B4",tags:["bones","dog","skeleton","wishbone"],emoji:"🦴",text:"",type:1,order:512,group:1,subgroup:22,version:11,shortCodes:["bone"]},{label:"eyes",hexcode:"1F440",tags:["body","eye","face","googly","look","looking","omg","peep","see","seeing"],emoji:"👀",text:"",type:1,order:513,group:1,subgroup:22,version:.6,shortCodes:["eyes"]},{label:"eye",hexcode:"1F441",tags:["1","body","one"],emoji:"👁️",text:"👁︎",type:0,order:515,group:1,subgroup:22,version:.7,shortCodes:["eye"]},{label:"tongue",hexcode:"1F445",tags:["body","lick","slurp"],emoji:"👅",text:"",type:1,order:516,group:1,subgroup:22,version:.6,shortCodes:["tongue"]},{label:"mouth",hexcode:"1F444",tags:["beauty","body","kiss","kissing","lips","lipstick"],emoji:"👄",text:"",type:1,order:517,group:1,subgroup:22,version:.6,shortCodes:["lips","mouth"]},{label:"biting lip",hexcode:"1FAE6",tags:["anxious","bite","biting","fear","flirt","flirting","kiss","lip","lipstick","nervous","sexy","uncomfortable","worried","worry"],emoji:"🫦",text:"",type:1,order:518,group:1,subgroup:22,version:14,shortCodes:["biting_lip"]},{label:"baby",hexcode:"1F476",tags:["babies","children","goo","infant","newborn","pregnant","young"],emoji:"👶",text:"",type:1,order:519,group:1,subgroup:23,version:.6,skins:[{label:"baby: light skin tone",hexcode:"1F476-1F3FB",emoji:"👶🏻",text:"",type:1,order:520,group:1,subgroup:23,version:1,tone:1,shortCodes:["baby_tone1"]},{label:"baby: medium-light skin tone",hexcode:"1F476-1F3FC",emoji:"👶🏼",text:"",type:1,order:521,group:1,subgroup:23,version:1,tone:2,shortCodes:["baby_tone2"]},{label:"baby: medium skin tone",hexcode:"1F476-1F3FD",emoji:"👶🏽",text:"",type:1,order:522,group:1,subgroup:23,version:1,tone:3,shortCodes:["baby_tone3"]},{label:"baby: medium-dark skin tone",hexcode:"1F476-1F3FE",emoji:"👶🏾",text:"",type:1,order:523,group:1,subgroup:23,version:1,tone:4,shortCodes:["baby_tone4"]},{label:"baby: dark skin tone",hexcode:"1F476-1F3FF",emoji:"👶🏿",text:"",type:1,order:524,group:1,subgroup:23,version:1,tone:5,shortCodes:["baby_tone5"]}],shortCodes:["baby"]},{label:"child",hexcode:"1F9D2",tags:["bright-eyed","grandchild","kid","young","younger"],emoji:"🧒",text:"",type:1,order:525,group:1,subgroup:23,version:5,skins:[{label:"child: light skin tone",hexcode:"1F9D2-1F3FB",emoji:"🧒🏻",text:"",type:1,order:526,group:1,subgroup:23,version:5,tone:1,shortCodes:["child_tone1"]},{label:"child: medium-light skin tone",hexcode:"1F9D2-1F3FC",emoji:"🧒🏼",text:"",type:1,order:527,group:1,subgroup:23,version:5,tone:2,shortCodes:["child_tone2"]},{label:"child: medium skin tone",hexcode:"1F9D2-1F3FD",emoji:"🧒🏽",text:"",type:1,order:528,group:1,subgroup:23,version:5,tone:3,shortCodes:["child_tone3"]},{label:"child: medium-dark skin tone",hexcode:"1F9D2-1F3FE",emoji:"🧒🏾",text:"",type:1,order:529,group:1,subgroup:23,version:5,tone:4,shortCodes:["child_tone4"]},{label:"child: dark skin tone",hexcode:"1F9D2-1F3FF",emoji:"🧒🏿",text:"",type:1,order:530,group:1,subgroup:23,version:5,tone:5,shortCodes:["child_tone5"]}],shortCodes:["child"]},{label:"boy",hexcode:"1F466",tags:["bright-eyed","child","grandson","kid","son","young","younger"],emoji:"👦",text:"",type:1,order:531,group:1,subgroup:23,version:.6,skins:[{label:"boy: light skin tone",hexcode:"1F466-1F3FB",emoji:"👦🏻",text:"",type:1,order:532,group:1,subgroup:23,version:1,tone:1,shortCodes:["boy_tone1"]},{label:"boy: medium-light skin tone",hexcode:"1F466-1F3FC",emoji:"👦🏼",text:"",type:1,order:533,group:1,subgroup:23,version:1,tone:2,shortCodes:["boy_tone2"]},{label:"boy: medium skin tone",hexcode:"1F466-1F3FD",emoji:"👦🏽",text:"",type:1,order:534,group:1,subgroup:23,version:1,tone:3,shortCodes:["boy_tone3"]},{label:"boy: medium-dark skin tone",hexcode:"1F466-1F3FE",emoji:"👦🏾",text:"",type:1,order:535,group:1,subgroup:23,version:1,tone:4,shortCodes:["boy_tone4"]},{label:"boy: dark skin tone",hexcode:"1F466-1F3FF",emoji:"👦🏿",text:"",type:1,order:536,group:1,subgroup:23,version:1,tone:5,shortCodes:["boy_tone5"]}],shortCodes:["boy"]},{label:"girl",hexcode:"1F467",tags:["bright-eyed","child","daughter","granddaughter","kid","virgo","young","younger","zodiac"],emoji:"👧",text:"",type:1,order:537,group:1,subgroup:23,version:.6,skins:[{label:"girl: light skin tone",hexcode:"1F467-1F3FB",emoji:"👧🏻",text:"",type:1,order:538,group:1,subgroup:23,version:1,tone:1,shortCodes:["girl_tone1"]},{label:"girl: medium-light skin tone",hexcode:"1F467-1F3FC",emoji:"👧🏼",text:"",type:1,order:539,group:1,subgroup:23,version:1,tone:2,shortCodes:["girl_tone2"]},{label:"girl: medium skin tone",hexcode:"1F467-1F3FD",emoji:"👧🏽",text:"",type:1,order:540,group:1,subgroup:23,version:1,tone:3,shortCodes:["girl_tone3"]},{label:"girl: medium-dark skin tone",hexcode:"1F467-1F3FE",emoji:"👧🏾",text:"",type:1,order:541,group:1,subgroup:23,version:1,tone:4,shortCodes:["girl_tone4"]},{label:"girl: dark skin tone",hexcode:"1F467-1F3FF",emoji:"👧🏿",text:"",type:1,order:542,group:1,subgroup:23,version:1,tone:5,shortCodes:["girl_tone5"]}],shortCodes:["girl"]},{label:"person",hexcode:"1F9D1",tags:["adult"],emoji:"🧑",text:"",type:1,order:543,group:1,subgroup:23,version:5,skins:[{label:"person: light skin tone",hexcode:"1F9D1-1F3FB",emoji:"🧑🏻",text:"",type:1,order:544,group:1,subgroup:23,version:5,tone:1,shortCodes:["adult_tone1"]},{label:"person: medium-light skin tone",hexcode:"1F9D1-1F3FC",emoji:"🧑🏼",text:"",type:1,order:545,group:1,subgroup:23,version:5,tone:2,shortCodes:["adult_tone2"]},{label:"person: medium skin tone",hexcode:"1F9D1-1F3FD",emoji:"🧑🏽",text:"",type:1,order:546,group:1,subgroup:23,version:5,tone:3,shortCodes:["adult_tone3"]},{label:"person: medium-dark skin tone",hexcode:"1F9D1-1F3FE",emoji:"🧑🏾",text:"",type:1,order:547,group:1,subgroup:23,version:5,tone:4,shortCodes:["adult_tone4"]},{label:"person: dark skin tone",hexcode:"1F9D1-1F3FF",emoji:"🧑🏿",text:"",type:1,order:548,group:1,subgroup:23,version:5,tone:5,shortCodes:["adult_tone5"]}],shortCodes:["adult"]},{label:"person: blond hair",hexcode:"1F471",tags:["blond","blond-haired","human","person"],emoji:"👱",text:"",type:1,order:549,group:1,subgroup:23,version:.6,skins:[{label:"person: light skin tone, blond hair",hexcode:"1F471-1F3FB",emoji:"👱🏻",text:"",type:1,order:550,group:1,subgroup:23,version:1,tone:1,shortCodes:["blond_haired_tone1"]},{label:"person: medium-light skin tone, blond hair",hexcode:"1F471-1F3FC",emoji:"👱🏼",text:"",type:1,order:551,group:1,subgroup:23,version:1,tone:2,shortCodes:["blond_haired_tone2"]},{label:"person: medium skin tone, blond hair",hexcode:"1F471-1F3FD",emoji:"👱🏽",text:"",type:1,order:552,group:1,subgroup:23,version:1,tone:3,shortCodes:["blond_haired_tone3"]},{label:"person: medium-dark skin tone, blond hair",hexcode:"1F471-1F3FE",emoji:"👱🏾",text:"",type:1,order:553,group:1,subgroup:23,version:1,tone:4,shortCodes:["blond_haired_tone4"]},{label:"person: dark skin tone, blond hair",hexcode:"1F471-1F3FF",emoji:"👱🏿",text:"",type:1,order:554,group:1,subgroup:23,version:1,tone:5,shortCodes:["blond_haired_tone5"]}],shortCodes:["blond_haired"]},{label:"man",hexcode:"1F468",tags:["adult","bro"],emoji:"👨",text:"",type:1,order:555,group:1,subgroup:23,version:.6,skins:[{label:"man: light skin tone",hexcode:"1F468-1F3FB",emoji:"👨🏻",text:"",type:1,order:556,group:1,subgroup:23,version:1,tone:1,shortCodes:["man_tone1"]},{label:"man: medium-light skin tone",hexcode:"1F468-1F3FC",emoji:"👨🏼",text:"",type:1,order:557,group:1,subgroup:23,version:1,tone:2,shortCodes:["man_tone2"]},{label:"man: medium skin tone",hexcode:"1F468-1F3FD",emoji:"👨🏽",text:"",type:1,order:558,group:1,subgroup:23,version:1,tone:3,shortCodes:["man_tone3"]},{label:"man: medium-dark skin tone",hexcode:"1F468-1F3FE",emoji:"👨🏾",text:"",type:1,order:559,group:1,subgroup:23,version:1,tone:4,shortCodes:["man_tone4"]},{label:"man: dark skin tone",hexcode:"1F468-1F3FF",emoji:"👨🏿",text:"",type:1,order:560,group:1,subgroup:23,version:1,tone:5,shortCodes:["man_tone5"]}],shortCodes:["man"]},{label:"person: beard",hexcode:"1F9D4",tags:["beard","bearded","person","whiskers"],emoji:"🧔",text:"",type:1,order:561,group:1,subgroup:23,version:5,skins:[{label:"person: light skin tone, beard",hexcode:"1F9D4-1F3FB",emoji:"🧔🏻",text:"",type:1,order:562,group:1,subgroup:23,version:5,tone:1,shortCodes:["person_bearded_tone1"]},{label:"person: medium-light skin tone, beard",hexcode:"1F9D4-1F3FC",emoji:"🧔🏼",text:"",type:1,order:563,group:1,subgroup:23,version:5,tone:2,shortCodes:["person_bearded_tone2"]},{label:"person: medium skin tone, beard",hexcode:"1F9D4-1F3FD",emoji:"🧔🏽",text:"",type:1,order:564,group:1,subgroup:23,version:5,tone:3,shortCodes:["person_bearded_tone3"]},{label:"person: medium-dark skin tone, beard",hexcode:"1F9D4-1F3FE",emoji:"🧔🏾",text:"",type:1,order:565,group:1,subgroup:23,version:5,tone:4,shortCodes:["person_bearded_tone4"]},{label:"person: dark skin tone, beard",hexcode:"1F9D4-1F3FF",emoji:"🧔🏿",text:"",type:1,order:566,group:1,subgroup:23,version:5,tone:5,shortCodes:["person_bearded_tone5"]}],shortCodes:["person_bearded"]},{label:"man: beard",hexcode:"1F9D4-200D-2642-FE0F",tags:["beard","bearded","man","whiskers"],emoji:"🧔♂️",text:"",type:1,order:567,group:1,subgroup:23,version:13.1,gender:1,skins:[{label:"man: light skin tone, beard",hexcode:"1F9D4-1F3FB-200D-2642-FE0F",emoji:"🧔🏻♂️",text:"",type:1,order:569,group:1,subgroup:23,version:13.1,gender:1,tone:1,shortCodes:["man_bearded_tone1"]},{label:"man: medium-light skin tone, beard",hexcode:"1F9D4-1F3FC-200D-2642-FE0F",emoji:"🧔🏼♂️",text:"",type:1,order:571,group:1,subgroup:23,version:13.1,gender:1,tone:2,shortCodes:["man_bearded_tone2"]},{label:"man: medium skin tone, beard",hexcode:"1F9D4-1F3FD-200D-2642-FE0F",emoji:"🧔🏽♂️",text:"",type:1,order:573,group:1,subgroup:23,version:13.1,gender:1,tone:3,shortCodes:["man_bearded_tone3"]},{label:"man: medium-dark skin tone, beard",hexcode:"1F9D4-1F3FE-200D-2642-FE0F",emoji:"🧔🏾♂️",text:"",type:1,order:575,group:1,subgroup:23,version:13.1,gender:1,tone:4,shortCodes:["man_bearded_tone4"]},{label:"man: dark skin tone, beard",hexcode:"1F9D4-1F3FF-200D-2642-FE0F",emoji:"🧔🏿♂️",text:"",type:1,order:577,group:1,subgroup:23,version:13.1,gender:1,tone:5,shortCodes:["man_bearded_tone5"]}],shortCodes:["man_bearded"]},{label:"woman: beard",hexcode:"1F9D4-200D-2640-FE0F",tags:["beard","bearded","whiskers","woman"],emoji:"🧔♀️",text:"",type:1,order:579,group:1,subgroup:23,version:13.1,gender:0,skins:[{label:"woman: light skin tone, beard",hexcode:"1F9D4-1F3FB-200D-2640-FE0F",emoji:"🧔🏻♀️",text:"",type:1,order:581,group:1,subgroup:23,version:13.1,gender:0,tone:1,shortCodes:["woman_bearded_tone1"]},{label:"woman: medium-light skin tone, beard",hexcode:"1F9D4-1F3FC-200D-2640-FE0F",emoji:"🧔🏼♀️",text:"",type:1,order:583,group:1,subgroup:23,version:13.1,gender:0,tone:2,shortCodes:["woman_bearded_tone2"]},{label:"woman: medium skin tone, beard",hexcode:"1F9D4-1F3FD-200D-2640-FE0F",emoji:"🧔🏽♀️",text:"",type:1,order:585,group:1,subgroup:23,version:13.1,gender:0,tone:3,shortCodes:["woman_bearded_tone3"]},{label:"woman: medium-dark skin tone, beard",hexcode:"1F9D4-1F3FE-200D-2640-FE0F",emoji:"🧔🏾♀️",text:"",type:1,order:587,group:1,subgroup:23,version:13.1,gender:0,tone:4,shortCodes:["woman_bearded_tone4"]},{label:"woman: dark skin tone, beard",hexcode:"1F9D4-1F3FF-200D-2640-FE0F",emoji:"🧔🏿♀️",text:"",type:1,order:589,group:1,subgroup:23,version:13.1,gender:0,tone:5,shortCodes:["woman_bearded_tone5"]}],shortCodes:["woman_bearded"]},{label:"man: red hair",hexcode:"1F468-200D-1F9B0",tags:["adult","bro","man","red hair"],emoji:"👨🦰",text:"",type:1,order:591,group:1,subgroup:23,version:11,skins:[{label:"man: light skin tone, red hair",hexcode:"1F468-1F3FB-200D-1F9B0",emoji:"👨🏻🦰",text:"",type:1,order:592,group:1,subgroup:23,version:11,tone:1,shortCodes:["man_red_haired_tone1"]},{label:"man: medium-light skin tone, red hair",hexcode:"1F468-1F3FC-200D-1F9B0",emoji:"👨🏼🦰",text:"",type:1,order:593,group:1,subgroup:23,version:11,tone:2,shortCodes:["man_red_haired_tone2"]},{label:"man: medium skin tone, red hair",hexcode:"1F468-1F3FD-200D-1F9B0",emoji:"👨🏽🦰",text:"",type:1,order:594,group:1,subgroup:23,version:11,tone:3,shortCodes:["man_red_haired_tone3"]},{label:"man: medium-dark skin tone, red hair",hexcode:"1F468-1F3FE-200D-1F9B0",emoji:"👨🏾🦰",text:"",type:1,order:595,group:1,subgroup:23,version:11,tone:4,shortCodes:["man_red_haired_tone4"]},{label:"man: dark skin tone, red hair",hexcode:"1F468-1F3FF-200D-1F9B0",emoji:"👨🏿🦰",text:"",type:1,order:596,group:1,subgroup:23,version:11,tone:5,shortCodes:["man_red_haired_tone5"]}],shortCodes:["man_red_haired"]},{label:"man: curly hair",hexcode:"1F468-200D-1F9B1",tags:["adult","bro","curly hair","man"],emoji:"👨🦱",text:"",type:1,order:597,group:1,subgroup:23,version:11,skins:[{label:"man: light skin tone, curly hair",hexcode:"1F468-1F3FB-200D-1F9B1",emoji:"👨🏻🦱",text:"",type:1,order:598,group:1,subgroup:23,version:11,tone:1,shortCodes:["man_curly_haired_tone1"]},{label:"man: medium-light skin tone, curly hair",hexcode:"1F468-1F3FC-200D-1F9B1",emoji:"👨🏼🦱",text:"",type:1,order:599,group:1,subgroup:23,version:11,tone:2,shortCodes:["man_curly_haired_tone2"]},{label:"man: medium skin tone, curly hair",hexcode:"1F468-1F3FD-200D-1F9B1",emoji:"👨🏽🦱",text:"",type:1,order:600,group:1,subgroup:23,version:11,tone:3,shortCodes:["man_curly_haired_tone3"]},{label:"man: medium-dark skin tone, curly hair",hexcode:"1F468-1F3FE-200D-1F9B1",emoji:"👨🏾🦱",text:"",type:1,order:601,group:1,subgroup:23,version:11,tone:4,shortCodes:["man_curly_haired_tone4"]},{label:"man: dark skin tone, curly hair",hexcode:"1F468-1F3FF-200D-1F9B1",emoji:"👨🏿🦱",text:"",type:1,order:602,group:1,subgroup:23,version:11,tone:5,shortCodes:["man_curly_haired_tone5"]}],shortCodes:["man_curly_haired"]},{label:"man: white hair",hexcode:"1F468-200D-1F9B3",tags:["adult","bro","man","white hair"],emoji:"👨🦳",text:"",type:1,order:603,group:1,subgroup:23,version:11,skins:[{label:"man: light skin tone, white hair",hexcode:"1F468-1F3FB-200D-1F9B3",emoji:"👨🏻🦳",text:"",type:1,order:604,group:1,subgroup:23,version:11,tone:1,shortCodes:["man_white_haired_tone1"]},{label:"man: medium-light skin tone, white hair",hexcode:"1F468-1F3FC-200D-1F9B3",emoji:"👨🏼🦳",text:"",type:1,order:605,group:1,subgroup:23,version:11,tone:2,shortCodes:["man_white_haired_tone2"]},{label:"man: medium skin tone, white hair",hexcode:"1F468-1F3FD-200D-1F9B3",emoji:"👨🏽🦳",text:"",type:1,order:606,group:1,subgroup:23,version:11,tone:3,shortCodes:["man_white_haired_tone3"]},{label:"man: medium-dark skin tone, white hair",hexcode:"1F468-1F3FE-200D-1F9B3",emoji:"👨🏾🦳",text:"",type:1,order:607,group:1,subgroup:23,version:11,tone:4,shortCodes:["man_white_haired_tone4"]},{label:"man: dark skin tone, white hair",hexcode:"1F468-1F3FF-200D-1F9B3",emoji:"👨🏿🦳",text:"",type:1,order:608,group:1,subgroup:23,version:11,tone:5,shortCodes:["man_white_haired_tone5"]}],shortCodes:["man_white_haired"]},{label:"man: bald",hexcode:"1F468-200D-1F9B2",tags:["adult","bald","bro","man"],emoji:"👨🦲",text:"",type:1,order:609,group:1,subgroup:23,version:11,skins:[{label:"man: light skin tone, bald",hexcode:"1F468-1F3FB-200D-1F9B2",emoji:"👨🏻🦲",text:"",type:1,order:610,group:1,subgroup:23,version:11,tone:1,shortCodes:["man_bald_tone1"]},{label:"man: medium-light skin tone, bald",hexcode:"1F468-1F3FC-200D-1F9B2",emoji:"👨🏼🦲",text:"",type:1,order:611,group:1,subgroup:23,version:11,tone:2,shortCodes:["man_bald_tone2"]},{label:"man: medium skin tone, bald",hexcode:"1F468-1F3FD-200D-1F9B2",emoji:"👨🏽🦲",text:"",type:1,order:612,group:1,subgroup:23,version:11,tone:3,shortCodes:["man_bald_tone3"]},{label:"man: medium-dark skin tone, bald",hexcode:"1F468-1F3FE-200D-1F9B2",emoji:"👨🏾🦲",text:"",type:1,order:613,group:1,subgroup:23,version:11,tone:4,shortCodes:["man_bald_tone4"]},{label:"man: dark skin tone, bald",hexcode:"1F468-1F3FF-200D-1F9B2",emoji:"👨🏿🦲",text:"",type:1,order:614,group:1,subgroup:23,version:11,tone:5,shortCodes:["man_bald_tone5"]}],shortCodes:["man_bald"]},{label:"woman",hexcode:"1F469",tags:["adult","lady"],emoji:"👩",text:"",type:1,order:615,group:1,subgroup:23,version:.6,skins:[{label:"woman: light skin tone",hexcode:"1F469-1F3FB",emoji:"👩🏻",text:"",type:1,order:616,group:1,subgroup:23,version:1,tone:1,shortCodes:["woman_tone1"]},{label:"woman: medium-light skin tone",hexcode:"1F469-1F3FC",emoji:"👩🏼",text:"",type:1,order:617,group:1,subgroup:23,version:1,tone:2,shortCodes:["woman_tone2"]},{label:"woman: medium skin tone",hexcode:"1F469-1F3FD",emoji:"👩🏽",text:"",type:1,order:618,group:1,subgroup:23,version:1,tone:3,shortCodes:["woman_tone3"]},{label:"woman: medium-dark skin tone",hexcode:"1F469-1F3FE",emoji:"👩🏾",text:"",type:1,order:619,group:1,subgroup:23,version:1,tone:4,shortCodes:["woman_tone4"]},{label:"woman: dark skin tone",hexcode:"1F469-1F3FF",emoji:"👩🏿",text:"",type:1,order:620,group:1,subgroup:23,version:1,tone:5,shortCodes:["woman_tone5"]}],shortCodes:["woman"]},{label:"woman: red hair",hexcode:"1F469-200D-1F9B0",tags:["adult","lady","red hair","woman"],emoji:"👩🦰",text:"",type:1,order:621,group:1,subgroup:23,version:11,skins:[{label:"woman: light skin tone, red hair",hexcode:"1F469-1F3FB-200D-1F9B0",emoji:"👩🏻🦰",text:"",type:1,order:622,group:1,subgroup:23,version:11,tone:1,shortCodes:["woman_red_haired_tone1"]},{label:"woman: medium-light skin tone, red hair",hexcode:"1F469-1F3FC-200D-1F9B0",emoji:"👩🏼🦰",text:"",type:1,order:623,group:1,subgroup:23,version:11,tone:2,shortCodes:["woman_red_haired_tone2"]},{label:"woman: medium skin tone, red hair",hexcode:"1F469-1F3FD-200D-1F9B0",emoji:"👩🏽🦰",text:"",type:1,order:624,group:1,subgroup:23,version:11,tone:3,shortCodes:["woman_red_haired_tone3"]},{label:"woman: medium-dark skin tone, red hair",hexcode:"1F469-1F3FE-200D-1F9B0",emoji:"👩🏾🦰",text:"",type:1,order:625,group:1,subgroup:23,version:11,tone:4,shortCodes:["woman_red_haired_tone4"]},{label:"woman: dark skin tone, red hair",hexcode:"1F469-1F3FF-200D-1F9B0",emoji:"👩🏿🦰",text:"",type:1,order:626,group:1,subgroup:23,version:11,tone:5,shortCodes:["woman_red_haired_tone5"]}],shortCodes:["woman_red_haired"]},{label:"person: red hair",hexcode:"1F9D1-200D-1F9B0",tags:["adult","person","red hair"],emoji:"🧑🦰",text:"",type:1,order:627,group:1,subgroup:23,version:12.1,skins:[{label:"person: light skin tone, red hair",hexcode:"1F9D1-1F3FB-200D-1F9B0",emoji:"🧑🏻🦰",text:"",type:1,order:628,group:1,subgroup:23,version:12.1,tone:1,shortCodes:["red_haired_tone1"]},{label:"person: medium-light skin tone, red hair",hexcode:"1F9D1-1F3FC-200D-1F9B0",emoji:"🧑🏼🦰",text:"",type:1,order:629,group:1,subgroup:23,version:12.1,tone:2,shortCodes:["red_haired_tone2"]},{label:"person: medium skin tone, red hair",hexcode:"1F9D1-1F3FD-200D-1F9B0",emoji:"🧑🏽🦰",text:"",type:1,order:630,group:1,subgroup:23,version:12.1,tone:3,shortCodes:["red_haired_tone3"]},{label:"person: medium-dark skin tone, red hair",hexcode:"1F9D1-1F3FE-200D-1F9B0",emoji:"🧑🏾🦰",text:"",type:1,order:631,group:1,subgroup:23,version:12.1,tone:4,shortCodes:["red_haired_tone4"]},{label:"person: dark skin tone, red hair",hexcode:"1F9D1-1F3FF-200D-1F9B0",emoji:"🧑🏿🦰",text:"",type:1,order:632,group:1,subgroup:23,version:12.1,tone:5,shortCodes:["red_haired_tone5"]}],shortCodes:["red_haired"]},{label:"woman: curly hair",hexcode:"1F469-200D-1F9B1",tags:["adult","curly hair","lady","woman"],emoji:"👩🦱",text:"",type:1,order:633,group:1,subgroup:23,version:11,skins:[{label:"woman: light skin tone, curly hair",hexcode:"1F469-1F3FB-200D-1F9B1",emoji:"👩🏻🦱",text:"",type:1,order:634,group:1,subgroup:23,version:11,tone:1,shortCodes:["woman_curly_haired_tone1"]},{label:"woman: medium-light skin tone, curly hair",hexcode:"1F469-1F3FC-200D-1F9B1",emoji:"👩🏼🦱",text:"",type:1,order:635,group:1,subgroup:23,version:11,tone:2,shortCodes:["woman_curly_haired_tone2"]},{label:"woman: medium skin tone, curly hair",hexcode:"1F469-1F3FD-200D-1F9B1",emoji:"👩🏽🦱",text:"",type:1,order:636,group:1,subgroup:23,version:11,tone:3,shortCodes:["woman_curly_haired_tone3"]},{label:"woman: medium-dark skin tone, curly hair",hexcode:"1F469-1F3FE-200D-1F9B1",emoji:"👩🏾🦱",text:"",type:1,order:637,group:1,subgroup:23,version:11,tone:4,shortCodes:["woman_curly_haired_tone4"]},{label:"woman: dark skin tone, curly hair",hexcode:"1F469-1F3FF-200D-1F9B1",emoji:"👩🏿🦱",text:"",type:1,order:638,group:1,subgroup:23,version:11,tone:5,shortCodes:["woman_curly_haired_tone5"]}],shortCodes:["woman_curly_haired"]},{label:"person: curly hair",hexcode:"1F9D1-200D-1F9B1",tags:["adult","curly hair","person"],emoji:"🧑🦱",text:"",type:1,order:639,group:1,subgroup:23,version:12.1,skins:[{label:"person: light skin tone, curly hair",hexcode:"1F9D1-1F3FB-200D-1F9B1",emoji:"🧑🏻🦱",text:"",type:1,order:640,group:1,subgroup:23,version:12.1,tone:1,shortCodes:["curly_haired_tone1"]},{label:"person: medium-light skin tone, curly hair",hexcode:"1F9D1-1F3FC-200D-1F9B1",emoji:"🧑🏼🦱",text:"",type:1,order:641,group:1,subgroup:23,version:12.1,tone:2,shortCodes:["curly_haired_tone2"]},{label:"person: medium skin tone, curly hair",hexcode:"1F9D1-1F3FD-200D-1F9B1",emoji:"🧑🏽🦱",text:"",type:1,order:642,group:1,subgroup:23,version:12.1,tone:3,shortCodes:["curly_haired_tone3"]},{label:"person: medium-dark skin tone, curly hair",hexcode:"1F9D1-1F3FE-200D-1F9B1",emoji:"🧑🏾🦱",text:"",type:1,order:643,group:1,subgroup:23,version:12.1,tone:4,shortCodes:["curly_haired_tone4"]},{label:"person: dark skin tone, curly hair",hexcode:"1F9D1-1F3FF-200D-1F9B1",emoji:"🧑🏿🦱",text:"",type:1,order:644,group:1,subgroup:23,version:12.1,tone:5,shortCodes:["curly_haired_tone5"]}],shortCodes:["curly_haired"]},{label:"woman: white hair",hexcode:"1F469-200D-1F9B3",tags:["adult","lady","white hair","woman"],emoji:"👩🦳",text:"",type:1,order:645,group:1,subgroup:23,version:11,skins:[{label:"woman: light skin tone, white hair",hexcode:"1F469-1F3FB-200D-1F9B3",emoji:"👩🏻🦳",text:"",type:1,order:646,group:1,subgroup:23,version:11,tone:1,shortCodes:["woman_white_haired_tone1"]},{label:"woman: medium-light skin tone, white hair",hexcode:"1F469-1F3FC-200D-1F9B3",emoji:"👩🏼🦳",text:"",type:1,order:647,group:1,subgroup:23,version:11,tone:2,shortCodes:["woman_white_haired_tone2"]},{label:"woman: medium skin tone, white hair",hexcode:"1F469-1F3FD-200D-1F9B3",emoji:"👩🏽🦳",text:"",type:1,order:648,group:1,subgroup:23,version:11,tone:3,shortCodes:["woman_white_haired_tone3"]},{label:"woman: medium-dark skin tone, white hair",hexcode:"1F469-1F3FE-200D-1F9B3",emoji:"👩🏾🦳",text:"",type:1,order:649,group:1,subgroup:23,version:11,tone:4,shortCodes:["woman_white_haired_tone4"]},{label:"woman: dark skin tone, white hair",hexcode:"1F469-1F3FF-200D-1F9B3",emoji:"👩🏿🦳",text:"",type:1,order:650,group:1,subgroup:23,version:11,tone:5,shortCodes:["woman_white_haired_tone5"]}],shortCodes:["woman_white_haired"]},{label:"person: white hair",hexcode:"1F9D1-200D-1F9B3",tags:["adult","person","white hair"],emoji:"🧑🦳",text:"",type:1,order:651,group:1,subgroup:23,version:12.1,skins:[{label:"person: light skin tone, white hair",hexcode:"1F9D1-1F3FB-200D-1F9B3",emoji:"🧑🏻🦳",text:"",type:1,order:652,group:1,subgroup:23,version:12.1,tone:1,shortCodes:["white_haired_tone1"]},{label:"person: medium-light skin tone, white hair",hexcode:"1F9D1-1F3FC-200D-1F9B3",emoji:"🧑🏼🦳",text:"",type:1,order:653,group:1,subgroup:23,version:12.1,tone:2,shortCodes:["white_haired_tone2"]},{label:"person: medium skin tone, white hair",hexcode:"1F9D1-1F3FD-200D-1F9B3",emoji:"🧑🏽🦳",text:"",type:1,order:654,group:1,subgroup:23,version:12.1,tone:3,shortCodes:["white_haired_tone3"]},{label:"person: medium-dark skin tone, white hair",hexcode:"1F9D1-1F3FE-200D-1F9B3",emoji:"🧑🏾🦳",text:"",type:1,order:655,group:1,subgroup:23,version:12.1,tone:4,shortCodes:["white_haired_tone4"]},{label:"person: dark skin tone, white hair",hexcode:"1F9D1-1F3FF-200D-1F9B3",emoji:"🧑🏿🦳",text:"",type:1,order:656,group:1,subgroup:23,version:12.1,tone:5,shortCodes:["white_haired_tone5"]}],shortCodes:["white_haired"]},{label:"woman: bald",hexcode:"1F469-200D-1F9B2",tags:["adult","bald","lady","woman"],emoji:"👩🦲",text:"",type:1,order:657,group:1,subgroup:23,version:11,skins:[{label:"woman: light skin tone, bald",hexcode:"1F469-1F3FB-200D-1F9B2",emoji:"👩🏻🦲",text:"",type:1,order:658,group:1,subgroup:23,version:11,tone:1,shortCodes:["woman_bald_tone1"]},{label:"woman: medium-light skin tone, bald",hexcode:"1F469-1F3FC-200D-1F9B2",emoji:"👩🏼🦲",text:"",type:1,order:659,group:1,subgroup:23,version:11,tone:2,shortCodes:["woman_bald_tone2"]},{label:"woman: medium skin tone, bald",hexcode:"1F469-1F3FD-200D-1F9B2",emoji:"👩🏽🦲",text:"",type:1,order:660,group:1,subgroup:23,version:11,tone:3,shortCodes:["woman_bald_tone3"]},{label:"woman: medium-dark skin tone, bald",hexcode:"1F469-1F3FE-200D-1F9B2",emoji:"👩🏾🦲",text:"",type:1,order:661,group:1,subgroup:23,version:11,tone:4,shortCodes:["woman_bald_tone4"]},{label:"woman: dark skin tone, bald",hexcode:"1F469-1F3FF-200D-1F9B2",emoji:"👩🏿🦲",text:"",type:1,order:662,group:1,subgroup:23,version:11,tone:5,shortCodes:["woman_bald_tone5"]}],shortCodes:["woman_bald"]},{label:"person: bald",hexcode:"1F9D1-200D-1F9B2",tags:["adult","bald","person"],emoji:"🧑🦲",text:"",type:1,order:663,group:1,subgroup:23,version:12.1,skins:[{label:"person: light skin tone, bald",hexcode:"1F9D1-1F3FB-200D-1F9B2",emoji:"🧑🏻🦲",text:"",type:1,order:664,group:1,subgroup:23,version:12.1,tone:1,shortCodes:["bald_tone1"]},{label:"person: medium-light skin tone, bald",hexcode:"1F9D1-1F3FC-200D-1F9B2",emoji:"🧑🏼🦲",text:"",type:1,order:665,group:1,subgroup:23,version:12.1,tone:2,shortCodes:["bald_tone2"]},{label:"person: medium skin tone, bald",hexcode:"1F9D1-1F3FD-200D-1F9B2",emoji:"🧑🏽🦲",text:"",type:1,order:666,group:1,subgroup:23,version:12.1,tone:3,shortCodes:["bald_tone3"]},{label:"person: medium-dark skin tone, bald",hexcode:"1F9D1-1F3FE-200D-1F9B2",emoji:"🧑🏾🦲",text:"",type:1,order:667,group:1,subgroup:23,version:12.1,tone:4,shortCodes:["bald_tone4"]},{label:"person: dark skin tone, bald",hexcode:"1F9D1-1F3FF-200D-1F9B2",emoji:"🧑🏿🦲",text:"",type:1,order:668,group:1,subgroup:23,version:12.1,tone:5,shortCodes:["bald_tone5"]}],shortCodes:["bald"]},{label:"woman: blond hair",hexcode:"1F471-200D-2640-FE0F",tags:["blond","blond-haired","blonde","hair","woman"],emoji:"👱♀️",text:"",type:1,order:669,group:1,subgroup:23,version:4,gender:0,skins:[{label:"woman: light skin tone, blond hair",hexcode:"1F471-1F3FB-200D-2640-FE0F",emoji:"👱🏻♀️",text:"",type:1,order:671,group:1,subgroup:23,version:4,gender:0,tone:1,shortCodes:["woman_blond_haired_tone1"]},{label:"woman: medium-light skin tone, blond hair",hexcode:"1F471-1F3FC-200D-2640-FE0F",emoji:"👱🏼♀️",text:"",type:1,order:673,group:1,subgroup:23,version:4,gender:0,tone:2,shortCodes:["woman_blond_haired_tone2"]},{label:"woman: medium skin tone, blond hair",hexcode:"1F471-1F3FD-200D-2640-FE0F",emoji:"👱🏽♀️",text:"",type:1,order:675,group:1,subgroup:23,version:4,gender:0,tone:3,shortCodes:["woman_blond_haired_tone3"]},{label:"woman: medium-dark skin tone, blond hair",hexcode:"1F471-1F3FE-200D-2640-FE0F",emoji:"👱🏾♀️",text:"",type:1,order:677,group:1,subgroup:23,version:4,gender:0,tone:4,shortCodes:["woman_blond_haired_tone4"]},{label:"woman: dark skin tone, blond hair",hexcode:"1F471-1F3FF-200D-2640-FE0F",emoji:"👱🏿♀️",text:"",type:1,order:679,group:1,subgroup:23,version:4,gender:0,tone:5,shortCodes:["woman_blond_haired_tone5"]}],shortCodes:["woman_blond_haired"]},{label:"man: blond hair",hexcode:"1F471-200D-2642-FE0F",tags:["blond","blond-haired","hair","man"],emoji:"👱♂️",text:"",type:1,order:681,group:1,subgroup:23,version:4,gender:1,skins:[{label:"man: light skin tone, blond hair",hexcode:"1F471-1F3FB-200D-2642-FE0F",emoji:"👱🏻♂️",text:"",type:1,order:683,group:1,subgroup:23,version:4,gender:1,tone:1,shortCodes:["man_blond_haired_tone1"]},{label:"man: medium-light skin tone, blond hair",hexcode:"1F471-1F3FC-200D-2642-FE0F",emoji:"👱🏼♂️",text:"",type:1,order:685,group:1,subgroup:23,version:4,gender:1,tone:2,shortCodes:["man_blond_haired_tone2"]},{label:"man: medium skin tone, blond hair",hexcode:"1F471-1F3FD-200D-2642-FE0F",emoji:"👱🏽♂️",text:"",type:1,order:687,group:1,subgroup:23,version:4,gender:1,tone:3,shortCodes:["man_blond_haired_tone3"]},{label:"man: medium-dark skin tone, blond hair",hexcode:"1F471-1F3FE-200D-2642-FE0F",emoji:"👱🏾♂️",text:"",type:1,order:689,group:1,subgroup:23,version:4,gender:1,tone:4,shortCodes:["man_blond_haired_tone4"]},{label:"man: dark skin tone, blond hair",hexcode:"1F471-1F3FF-200D-2642-FE0F",emoji:"👱🏿♂️",text:"",type:1,order:691,group:1,subgroup:23,version:4,gender:1,tone:5,shortCodes:["man_blond_haired_tone5"]}],shortCodes:["man_blond_haired"]},{label:"older person",hexcode:"1F9D3",tags:["adult","elderly","grandparent","old","person","wise"],emoji:"🧓",text:"",type:1,order:693,group:1,subgroup:23,version:5,skins:[{label:"older person: light skin tone",hexcode:"1F9D3-1F3FB",emoji:"🧓🏻",text:"",type:1,order:694,group:1,subgroup:23,version:5,tone:1,shortCodes:["older_adult_tone1"]},{label:"older person: medium-light skin tone",hexcode:"1F9D3-1F3FC",emoji:"🧓🏼",text:"",type:1,order:695,group:1,subgroup:23,version:5,tone:2,shortCodes:["older_adult_tone2"]},{label:"older person: medium skin tone",hexcode:"1F9D3-1F3FD",emoji:"🧓🏽",text:"",type:1,order:696,group:1,subgroup:23,version:5,tone:3,shortCodes:["older_adult_tone3"]},{label:"older person: medium-dark skin tone",hexcode:"1F9D3-1F3FE",emoji:"🧓🏾",text:"",type:1,order:697,group:1,subgroup:23,version:5,tone:4,shortCodes:["older_adult_tone4"]},{label:"older person: dark skin tone",hexcode:"1F9D3-1F3FF",emoji:"🧓🏿",text:"",type:1,order:698,group:1,subgroup:23,version:5,tone:5,shortCodes:["older_adult_tone5"]}],shortCodes:["older_adult"]},{label:"old man",hexcode:"1F474",tags:["adult","bald","elderly","gramps","grandfather","grandpa","man","old","wise"],emoji:"👴",text:"",type:1,order:699,group:1,subgroup:23,version:.6,skins:[{label:"old man: light skin tone",hexcode:"1F474-1F3FB",emoji:"👴🏻",text:"",type:1,order:700,group:1,subgroup:23,version:1,tone:1,shortCodes:["older_man_tone1"]},{label:"old man: medium-light skin tone",hexcode:"1F474-1F3FC",emoji:"👴🏼",text:"",type:1,order:701,group:1,subgroup:23,version:1,tone:2,shortCodes:["older_man_tone2"]},{label:"old man: medium skin tone",hexcode:"1F474-1F3FD",emoji:"👴🏽",text:"",type:1,order:702,group:1,subgroup:23,version:1,tone:3,shortCodes:["older_man_tone3"]},{label:"old man: medium-dark skin tone",hexcode:"1F474-1F3FE",emoji:"👴🏾",text:"",type:1,order:703,group:1,subgroup:23,version:1,tone:4,shortCodes:["older_man_tone4"]},{label:"old man: dark skin tone",hexcode:"1F474-1F3FF",emoji:"👴🏿",text:"",type:1,order:704,group:1,subgroup:23,version:1,tone:5,shortCodes:["older_man_tone5"]}],shortCodes:["older_man"]},{label:"old woman",hexcode:"1F475",tags:["adult","elderly","grandma","grandmother","granny","lady","old","wise","woman"],emoji:"👵",text:"",type:1,order:705,group:1,subgroup:23,version:.6,skins:[{label:"old woman: light skin tone",hexcode:"1F475-1F3FB",emoji:"👵🏻",text:"",type:1,order:706,group:1,subgroup:23,version:1,tone:1,shortCodes:["older_woman_tone1"]},{label:"old woman: medium-light skin tone",hexcode:"1F475-1F3FC",emoji:"👵🏼",text:"",type:1,order:707,group:1,subgroup:23,version:1,tone:2,shortCodes:["older_woman_tone2"]},{label:"old woman: medium skin tone",hexcode:"1F475-1F3FD",emoji:"👵🏽",text:"",type:1,order:708,group:1,subgroup:23,version:1,tone:3,shortCodes:["older_woman_tone3"]},{label:"old woman: medium-dark skin tone",hexcode:"1F475-1F3FE",emoji:"👵🏾",text:"",type:1,order:709,group:1,subgroup:23,version:1,tone:4,shortCodes:["older_woman_tone4"]},{label:"old woman: dark skin tone",hexcode:"1F475-1F3FF",emoji:"👵🏿",text:"",type:1,order:710,group:1,subgroup:23,version:1,tone:5,shortCodes:["older_woman_tone5"]}],shortCodes:["older_woman"]},{label:"person frowning",hexcode:"1F64D",tags:["annoyed","disappointed","disgruntled","disturbed","frown","frowning","frustrated","gesture","irritated","person","upset"],emoji:"🙍",text:"",type:1,order:711,group:1,subgroup:24,version:.6,skins:[{label:"person frowning: light skin tone",hexcode:"1F64D-1F3FB",emoji:"🙍🏻",text:"",type:1,order:712,group:1,subgroup:24,version:1,tone:1,shortCodes:["person_frowning_tone1"]},{label:"person frowning: medium-light skin tone",hexcode:"1F64D-1F3FC",emoji:"🙍🏼",text:"",type:1,order:713,group:1,subgroup:24,version:1,tone:2,shortCodes:["person_frowning_tone2"]},{label:"person frowning: medium skin tone",hexcode:"1F64D-1F3FD",emoji:"🙍🏽",text:"",type:1,order:714,group:1,subgroup:24,version:1,tone:3,shortCodes:["person_frowning_tone3"]},{label:"person frowning: medium-dark skin tone",hexcode:"1F64D-1F3FE",emoji:"🙍🏾",text:"",type:1,order:715,group:1,subgroup:24,version:1,tone:4,shortCodes:["person_frowning_tone4"]},{label:"person frowning: dark skin tone",hexcode:"1F64D-1F3FF",emoji:"🙍🏿",text:"",type:1,order:716,group:1,subgroup:24,version:1,tone:5,shortCodes:["person_frowning_tone5"]}],shortCodes:["person_frowning"]},{label:"man frowning",hexcode:"1F64D-200D-2642-FE0F",tags:["annoyed","disappointed","disgruntled","disturbed","frown","frowning","frustrated","gesture","irritated","man","upset"],emoji:"🙍♂️",text:"",type:1,order:717,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man frowning: light skin tone",hexcode:"1F64D-1F3FB-200D-2642-FE0F",emoji:"🙍🏻♂️",text:"",type:1,order:719,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_frowning_tone1"]},{label:"man frowning: medium-light skin tone",hexcode:"1F64D-1F3FC-200D-2642-FE0F",emoji:"🙍🏼♂️",text:"",type:1,order:721,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_frowning_tone2"]},{label:"man frowning: medium skin tone",hexcode:"1F64D-1F3FD-200D-2642-FE0F",emoji:"🙍🏽♂️",text:"",type:1,order:723,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_frowning_tone3"]},{label:"man frowning: medium-dark skin tone",hexcode:"1F64D-1F3FE-200D-2642-FE0F",emoji:"🙍🏾♂️",text:"",type:1,order:725,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_frowning_tone4"]},{label:"man frowning: dark skin tone",hexcode:"1F64D-1F3FF-200D-2642-FE0F",emoji:"🙍🏿♂️",text:"",type:1,order:727,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_frowning_tone5"]}],shortCodes:["man_frowning"]},{label:"woman frowning",hexcode:"1F64D-200D-2640-FE0F",tags:["annoyed","disappointed","disgruntled","disturbed","frown","frowning","frustrated","gesture","irritated","upset","woman"],emoji:"🙍♀️",text:"",type:1,order:729,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman frowning: light skin tone",hexcode:"1F64D-1F3FB-200D-2640-FE0F",emoji:"🙍🏻♀️",text:"",type:1,order:731,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_frowning_tone1"]},{label:"woman frowning: medium-light skin tone",hexcode:"1F64D-1F3FC-200D-2640-FE0F",emoji:"🙍🏼♀️",text:"",type:1,order:733,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_frowning_tone2"]},{label:"woman frowning: medium skin tone",hexcode:"1F64D-1F3FD-200D-2640-FE0F",emoji:"🙍🏽♀️",text:"",type:1,order:735,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_frowning_tone3"]},{label:"woman frowning: medium-dark skin tone",hexcode:"1F64D-1F3FE-200D-2640-FE0F",emoji:"🙍🏾♀️",text:"",type:1,order:737,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_frowning_tone4"]},{label:"woman frowning: dark skin tone",hexcode:"1F64D-1F3FF-200D-2640-FE0F",emoji:"🙍🏿♀️",text:"",type:1,order:739,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_frowning_tone5"]}],shortCodes:["woman_frowning"]},{label:"person pouting",hexcode:"1F64E",tags:["disappointed","downtrodden","frown","grimace","person","pouting","scowl","sulk","upset","whine"],emoji:"🙎",text:"",type:1,order:741,group:1,subgroup:24,version:.6,skins:[{label:"person pouting: light skin tone",hexcode:"1F64E-1F3FB",emoji:"🙎🏻",text:"",type:1,order:742,group:1,subgroup:24,version:1,tone:1,shortCodes:["person_pouting_tone1","pouting_tone1"]},{label:"person pouting: medium-light skin tone",hexcode:"1F64E-1F3FC",emoji:"🙎🏼",text:"",type:1,order:743,group:1,subgroup:24,version:1,tone:2,shortCodes:["person_pouting_tone2","pouting_tone2"]},{label:"person pouting: medium skin tone",hexcode:"1F64E-1F3FD",emoji:"🙎🏽",text:"",type:1,order:744,group:1,subgroup:24,version:1,tone:3,shortCodes:["person_pouting_tone3","pouting_tone3"]},{label:"person pouting: medium-dark skin tone",hexcode:"1F64E-1F3FE",emoji:"🙎🏾",text:"",type:1,order:745,group:1,subgroup:24,version:1,tone:4,shortCodes:["person_pouting_tone4","pouting_tone4"]},{label:"person pouting: dark skin tone",hexcode:"1F64E-1F3FF",emoji:"🙎🏿",text:"",type:1,order:746,group:1,subgroup:24,version:1,tone:5,shortCodes:["person_pouting_tone5","pouting_tone5"]}],shortCodes:["person_pouting","pouting"]},{label:"man pouting",hexcode:"1F64E-200D-2642-FE0F",tags:["disappointed","downtrodden","frown","grimace","man","pouting","scowl","sulk","upset","whine"],emoji:"🙎♂️",text:"",type:1,order:747,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man pouting: light skin tone",hexcode:"1F64E-1F3FB-200D-2642-FE0F",emoji:"🙎🏻♂️",text:"",type:1,order:749,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_pouting_tone1"]},{label:"man pouting: medium-light skin tone",hexcode:"1F64E-1F3FC-200D-2642-FE0F",emoji:"🙎🏼♂️",text:"",type:1,order:751,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_pouting_tone2"]},{label:"man pouting: medium skin tone",hexcode:"1F64E-1F3FD-200D-2642-FE0F",emoji:"🙎🏽♂️",text:"",type:1,order:753,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_pouting_tone3"]},{label:"man pouting: medium-dark skin tone",hexcode:"1F64E-1F3FE-200D-2642-FE0F",emoji:"🙎🏾♂️",text:"",type:1,order:755,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_pouting_tone4"]},{label:"man pouting: dark skin tone",hexcode:"1F64E-1F3FF-200D-2642-FE0F",emoji:"🙎🏿♂️",text:"",type:1,order:757,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_pouting_tone5"]}],shortCodes:["man_pouting"]},{label:"woman pouting",hexcode:"1F64E-200D-2640-FE0F",tags:["disappointed","downtrodden","frown","grimace","pouting","scowl","sulk","upset","whine","woman"],emoji:"🙎♀️",text:"",type:1,order:759,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman pouting: light skin tone",hexcode:"1F64E-1F3FB-200D-2640-FE0F",emoji:"🙎🏻♀️",text:"",type:1,order:761,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_pouting_tone1"]},{label:"woman pouting: medium-light skin tone",hexcode:"1F64E-1F3FC-200D-2640-FE0F",emoji:"🙎🏼♀️",text:"",type:1,order:763,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_pouting_tone2"]},{label:"woman pouting: medium skin tone",hexcode:"1F64E-1F3FD-200D-2640-FE0F",emoji:"🙎🏽♀️",text:"",type:1,order:765,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_pouting_tone3"]},{label:"woman pouting: medium-dark skin tone",hexcode:"1F64E-1F3FE-200D-2640-FE0F",emoji:"🙎🏾♀️",text:"",type:1,order:767,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_pouting_tone4"]},{label:"woman pouting: dark skin tone",hexcode:"1F64E-1F3FF-200D-2640-FE0F",emoji:"🙎🏿♀️",text:"",type:1,order:769,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_pouting_tone5"]}],shortCodes:["woman_pouting"]},{label:"person gesturing NO",hexcode:"1F645",tags:["forbidden","gesture","hand","no","not","person","prohibit"],emoji:"🙅",text:"",type:1,order:771,group:1,subgroup:24,version:.6,skins:[{label:"person gesturing NO: light skin tone",hexcode:"1F645-1F3FB",emoji:"🙅🏻",text:"",type:1,order:772,group:1,subgroup:24,version:1,tone:1,shortCodes:["no_good_tone1","person_gesturing_no_tone1"]},{label:"person gesturing NO: medium-light skin tone",hexcode:"1F645-1F3FC",emoji:"🙅🏼",text:"",type:1,order:773,group:1,subgroup:24,version:1,tone:2,shortCodes:["no_good_tone2","person_gesturing_no_tone2"]},{label:"person gesturing NO: medium skin tone",hexcode:"1F645-1F3FD",emoji:"🙅🏽",text:"",type:1,order:774,group:1,subgroup:24,version:1,tone:3,shortCodes:["no_good_tone3","person_gesturing_no_tone3"]},{label:"person gesturing NO: medium-dark skin tone",hexcode:"1F645-1F3FE",emoji:"🙅🏾",text:"",type:1,order:775,group:1,subgroup:24,version:1,tone:4,shortCodes:["no_good_tone4","person_gesturing_no_tone4"]},{label:"person gesturing NO: dark skin tone",hexcode:"1F645-1F3FF",emoji:"🙅🏿",text:"",type:1,order:776,group:1,subgroup:24,version:1,tone:5,shortCodes:["no_good_tone5","person_gesturing_no_tone5"]}],shortCodes:["no_good","person_gesturing_no"]},{label:"man gesturing NO",hexcode:"1F645-200D-2642-FE0F",tags:["forbidden","gesture","hand","man","no","not","prohibit"],emoji:"🙅♂️",text:"",type:1,order:777,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man gesturing NO: light skin tone",hexcode:"1F645-1F3FB-200D-2642-FE0F",emoji:"🙅🏻♂️",text:"",type:1,order:779,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_gesturing_no_tone1"]},{label:"man gesturing NO: medium-light skin tone",hexcode:"1F645-1F3FC-200D-2642-FE0F",emoji:"🙅🏼♂️",text:"",type:1,order:781,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_gesturing_no_tone2"]},{label:"man gesturing NO: medium skin tone",hexcode:"1F645-1F3FD-200D-2642-FE0F",emoji:"🙅🏽♂️",text:"",type:1,order:783,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_gesturing_no_tone3"]},{label:"man gesturing NO: medium-dark skin tone",hexcode:"1F645-1F3FE-200D-2642-FE0F",emoji:"🙅🏾♂️",text:"",type:1,order:785,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_gesturing_no_tone4"]},{label:"man gesturing NO: dark skin tone",hexcode:"1F645-1F3FF-200D-2642-FE0F",emoji:"🙅🏿♂️",text:"",type:1,order:787,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_gesturing_no_tone5"]}],shortCodes:["man_gesturing_no"]},{label:"woman gesturing NO",hexcode:"1F645-200D-2640-FE0F",tags:["forbidden","gesture","hand","no","not","prohibit","woman"],emoji:"🙅♀️",text:"",type:1,order:789,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman gesturing NO: light skin tone",hexcode:"1F645-1F3FB-200D-2640-FE0F",emoji:"🙅🏻♀️",text:"",type:1,order:791,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_gesturing_no_tone1"]},{label:"woman gesturing NO: medium-light skin tone",hexcode:"1F645-1F3FC-200D-2640-FE0F",emoji:"🙅🏼♀️",text:"",type:1,order:793,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_gesturing_no_tone2"]},{label:"woman gesturing NO: medium skin tone",hexcode:"1F645-1F3FD-200D-2640-FE0F",emoji:"🙅🏽♀️",text:"",type:1,order:795,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_gesturing_no_tone3"]},{label:"woman gesturing NO: medium-dark skin tone",hexcode:"1F645-1F3FE-200D-2640-FE0F",emoji:"🙅🏾♀️",text:"",type:1,order:797,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_gesturing_no_tone4"]},{label:"woman gesturing NO: dark skin tone",hexcode:"1F645-1F3FF-200D-2640-FE0F",emoji:"🙅🏿♀️",text:"",type:1,order:799,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_gesturing_no_tone5"]}],shortCodes:["woman_gesturing_no"]},{label:"person gesturing OK",hexcode:"1F646",tags:["exercise","gesture","gesturing","hand","ok","omg","person"],emoji:"🙆",text:"",type:1,order:801,group:1,subgroup:24,version:.6,skins:[{label:"person gesturing OK: light skin tone",hexcode:"1F646-1F3FB",emoji:"🙆🏻",text:"",type:1,order:802,group:1,subgroup:24,version:1,tone:1,shortCodes:["all_good_tone1","person_gesturing_ok_tone1"]},{label:"person gesturing OK: medium-light skin tone",hexcode:"1F646-1F3FC",emoji:"🙆🏼",text:"",type:1,order:803,group:1,subgroup:24,version:1,tone:2,shortCodes:["all_good_tone2","person_gesturing_ok_tone2"]},{label:"person gesturing OK: medium skin tone",hexcode:"1F646-1F3FD",emoji:"🙆🏽",text:"",type:1,order:804,group:1,subgroup:24,version:1,tone:3,shortCodes:["all_good_tone3","person_gesturing_ok_tone3"]},{label:"person gesturing OK: medium-dark skin tone",hexcode:"1F646-1F3FE",emoji:"🙆🏾",text:"",type:1,order:805,group:1,subgroup:24,version:1,tone:4,shortCodes:["all_good_tone4","person_gesturing_ok_tone4"]},{label:"person gesturing OK: dark skin tone",hexcode:"1F646-1F3FF",emoji:"🙆🏿",text:"",type:1,order:806,group:1,subgroup:24,version:1,tone:5,shortCodes:["all_good_tone5","person_gesturing_ok_tone5"]}],shortCodes:["all_good","person_gesturing_ok"]},{label:"man gesturing OK",hexcode:"1F646-200D-2642-FE0F",tags:["exercise","gesture","gesturing","hand","man","ok","omg"],emoji:"🙆♂️",text:"",type:1,order:807,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man gesturing OK: light skin tone",hexcode:"1F646-1F3FB-200D-2642-FE0F",emoji:"🙆🏻♂️",text:"",type:1,order:809,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_gesturing_ok_tone1"]},{label:"man gesturing OK: medium-light skin tone",hexcode:"1F646-1F3FC-200D-2642-FE0F",emoji:"🙆🏼♂️",text:"",type:1,order:811,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_gesturing_ok_tone2"]},{label:"man gesturing OK: medium skin tone",hexcode:"1F646-1F3FD-200D-2642-FE0F",emoji:"🙆🏽♂️",text:"",type:1,order:813,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_gesturing_ok_tone3"]},{label:"man gesturing OK: medium-dark skin tone",hexcode:"1F646-1F3FE-200D-2642-FE0F",emoji:"🙆🏾♂️",text:"",type:1,order:815,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_gesturing_ok_tone4"]},{label:"man gesturing OK: dark skin tone",hexcode:"1F646-1F3FF-200D-2642-FE0F",emoji:"🙆🏿♂️",text:"",type:1,order:817,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_gesturing_ok_tone5"]}],shortCodes:["man_gesturing_ok"]},{label:"woman gesturing OK",hexcode:"1F646-200D-2640-FE0F",tags:["exercise","gesture","gesturing","hand","ok","omg","woman"],emoji:"🙆♀️",text:"",type:1,order:819,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman gesturing OK: light skin tone",hexcode:"1F646-1F3FB-200D-2640-FE0F",emoji:"🙆🏻♀️",text:"",type:1,order:821,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_gesturing_ok_tone1"]},{label:"woman gesturing OK: medium-light skin tone",hexcode:"1F646-1F3FC-200D-2640-FE0F",emoji:"🙆🏼♀️",text:"",type:1,order:823,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_gesturing_ok_tone2"]},{label:"woman gesturing OK: medium skin tone",hexcode:"1F646-1F3FD-200D-2640-FE0F",emoji:"🙆🏽♀️",text:"",type:1,order:825,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_gesturing_ok_tone3"]},{label:"woman gesturing OK: medium-dark skin tone",hexcode:"1F646-1F3FE-200D-2640-FE0F",emoji:"🙆🏾♀️",text:"",type:1,order:827,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_gesturing_ok_tone4"]},{label:"woman gesturing OK: dark skin tone",hexcode:"1F646-1F3FF-200D-2640-FE0F",emoji:"🙆🏿♀️",text:"",type:1,order:829,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_gesturing_ok_tone5"]}],shortCodes:["woman_gesturing_ok"]},{label:"person tipping hand",hexcode:"1F481",tags:["fetch","flick","flip","gossip","hand","person","sarcasm","sarcastic","sassy","seriously","tipping","whatever"],emoji:"💁",text:"",type:1,order:831,group:1,subgroup:24,version:.6,skins:[{label:"person tipping hand: light skin tone",hexcode:"1F481-1F3FB",emoji:"💁🏻",text:"",type:1,order:832,group:1,subgroup:24,version:1,tone:1,shortCodes:["person_tipping_hand_tone1"]},{label:"person tipping hand: medium-light skin tone",hexcode:"1F481-1F3FC",emoji:"💁🏼",text:"",type:1,order:833,group:1,subgroup:24,version:1,tone:2,shortCodes:["person_tipping_hand_tone2"]},{label:"person tipping hand: medium skin tone",hexcode:"1F481-1F3FD",emoji:"💁🏽",text:"",type:1,order:834,group:1,subgroup:24,version:1,tone:3,shortCodes:["person_tipping_hand_tone3"]},{label:"person tipping hand: medium-dark skin tone",hexcode:"1F481-1F3FE",emoji:"💁🏾",text:"",type:1,order:835,group:1,subgroup:24,version:1,tone:4,shortCodes:["person_tipping_hand_tone4"]},{label:"person tipping hand: dark skin tone",hexcode:"1F481-1F3FF",emoji:"💁🏿",text:"",type:1,order:836,group:1,subgroup:24,version:1,tone:5,shortCodes:["person_tipping_hand_tone5"]}],shortCodes:["person_tipping_hand"]},{label:"man tipping hand",hexcode:"1F481-200D-2642-FE0F",tags:["fetch","flick","flip","gossip","hand","man","sarcasm","sarcastic","sassy","seriously","tipping","whatever"],emoji:"💁♂️",text:"",type:1,order:837,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man tipping hand: light skin tone",hexcode:"1F481-1F3FB-200D-2642-FE0F",emoji:"💁🏻♂️",text:"",type:1,order:839,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_tipping_hand_tone1"]},{label:"man tipping hand: medium-light skin tone",hexcode:"1F481-1F3FC-200D-2642-FE0F",emoji:"💁🏼♂️",text:"",type:1,order:841,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_tipping_hand_tone2"]},{label:"man tipping hand: medium skin tone",hexcode:"1F481-1F3FD-200D-2642-FE0F",emoji:"💁🏽♂️",text:"",type:1,order:843,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_tipping_hand_tone3"]},{label:"man tipping hand: medium-dark skin tone",hexcode:"1F481-1F3FE-200D-2642-FE0F",emoji:"💁🏾♂️",text:"",type:1,order:845,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_tipping_hand_tone4"]},{label:"man tipping hand: dark skin tone",hexcode:"1F481-1F3FF-200D-2642-FE0F",emoji:"💁🏿♂️",text:"",type:1,order:847,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_tipping_hand_tone5"]}],shortCodes:["man_tipping_hand"]},{label:"woman tipping hand",hexcode:"1F481-200D-2640-FE0F",tags:["fetch","flick","flip","gossip","hand","sarcasm","sarcastic","sassy","seriously","tipping","whatever","woman"],emoji:"💁♀️",text:"",type:1,order:849,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman tipping hand: light skin tone",hexcode:"1F481-1F3FB-200D-2640-FE0F",emoji:"💁🏻♀️",text:"",type:1,order:851,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_tipping_hand_tone1"]},{label:"woman tipping hand: medium-light skin tone",hexcode:"1F481-1F3FC-200D-2640-FE0F",emoji:"💁🏼♀️",text:"",type:1,order:853,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_tipping_hand_tone2"]},{label:"woman tipping hand: medium skin tone",hexcode:"1F481-1F3FD-200D-2640-FE0F",emoji:"💁🏽♀️",text:"",type:1,order:855,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_tipping_hand_tone3"]},{label:"woman tipping hand: medium-dark skin tone",hexcode:"1F481-1F3FE-200D-2640-FE0F",emoji:"💁🏾♀️",text:"",type:1,order:857,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_tipping_hand_tone4"]},{label:"woman tipping hand: dark skin tone",hexcode:"1F481-1F3FF-200D-2640-FE0F",emoji:"💁🏿♀️",text:"",type:1,order:859,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_tipping_hand_tone5"]}],shortCodes:["woman_tipping_hand"]},{label:"person raising hand",hexcode:"1F64B",tags:["gesture","hand","here","know","me","person","pick","question","raise","raising"],emoji:"🙋",text:"",type:1,order:861,group:1,subgroup:24,version:.6,skins:[{label:"person raising hand: light skin tone",hexcode:"1F64B-1F3FB",emoji:"🙋🏻",text:"",type:1,order:862,group:1,subgroup:24,version:1,tone:1,shortCodes:["person_raising_hand_tone1"]},{label:"person raising hand: medium-light skin tone",hexcode:"1F64B-1F3FC",emoji:"🙋🏼",text:"",type:1,order:863,group:1,subgroup:24,version:1,tone:2,shortCodes:["person_raising_hand_tone2"]},{label:"person raising hand: medium skin tone",hexcode:"1F64B-1F3FD",emoji:"🙋🏽",text:"",type:1,order:864,group:1,subgroup:24,version:1,tone:3,shortCodes:["person_raising_hand_tone3"]},{label:"person raising hand: medium-dark skin tone",hexcode:"1F64B-1F3FE",emoji:"🙋🏾",text:"",type:1,order:865,group:1,subgroup:24,version:1,tone:4,shortCodes:["person_raising_hand_tone4"]},{label:"person raising hand: dark skin tone",hexcode:"1F64B-1F3FF",emoji:"🙋🏿",text:"",type:1,order:866,group:1,subgroup:24,version:1,tone:5,shortCodes:["person_raising_hand_tone5"]}],shortCodes:["person_raising_hand"]},{label:"man raising hand",hexcode:"1F64B-200D-2642-FE0F",tags:["gesture","hand","here","know","man","me","pick","question","raise","raising"],emoji:"🙋♂️",text:"",type:1,order:867,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man raising hand: light skin tone",hexcode:"1F64B-1F3FB-200D-2642-FE0F",emoji:"🙋🏻♂️",text:"",type:1,order:869,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_raising_hand_tone1"]},{label:"man raising hand: medium-light skin tone",hexcode:"1F64B-1F3FC-200D-2642-FE0F",emoji:"🙋🏼♂️",text:"",type:1,order:871,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_raising_hand_tone2"]},{label:"man raising hand: medium skin tone",hexcode:"1F64B-1F3FD-200D-2642-FE0F",emoji:"🙋🏽♂️",text:"",type:1,order:873,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_raising_hand_tone3"]},{label:"man raising hand: medium-dark skin tone",hexcode:"1F64B-1F3FE-200D-2642-FE0F",emoji:"🙋🏾♂️",text:"",type:1,order:875,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_raising_hand_tone4"]},{label:"man raising hand: dark skin tone",hexcode:"1F64B-1F3FF-200D-2642-FE0F",emoji:"🙋🏿♂️",text:"",type:1,order:877,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_raising_hand_tone5"]}],shortCodes:["man_raising_hand"]},{label:"woman raising hand",hexcode:"1F64B-200D-2640-FE0F",tags:["gesture","hand","here","know","me","pick","question","raise","raising","woman"],emoji:"🙋♀️",text:"",type:1,order:879,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman raising hand: light skin tone",hexcode:"1F64B-1F3FB-200D-2640-FE0F",emoji:"🙋🏻♀️",text:"",type:1,order:881,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_raising_hand_tone1"]},{label:"woman raising hand: medium-light skin tone",hexcode:"1F64B-1F3FC-200D-2640-FE0F",emoji:"🙋🏼♀️",text:"",type:1,order:883,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_raising_hand_tone2"]},{label:"woman raising hand: medium skin tone",hexcode:"1F64B-1F3FD-200D-2640-FE0F",emoji:"🙋🏽♀️",text:"",type:1,order:885,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_raising_hand_tone3"]},{label:"woman raising hand: medium-dark skin tone",hexcode:"1F64B-1F3FE-200D-2640-FE0F",emoji:"🙋🏾♀️",text:"",type:1,order:887,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_raising_hand_tone4"]},{label:"woman raising hand: dark skin tone",hexcode:"1F64B-1F3FF-200D-2640-FE0F",emoji:"🙋🏿♀️",text:"",type:1,order:889,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_raising_hand_tone5"]}],shortCodes:["woman_raising_hand"]},{label:"deaf person",hexcode:"1F9CF",tags:["accessibility","deaf","ear","gesture","hear","person"],emoji:"🧏",text:"",type:1,order:891,group:1,subgroup:24,version:12,skins:[{label:"deaf person: light skin tone",hexcode:"1F9CF-1F3FB",emoji:"🧏🏻",text:"",type:1,order:892,group:1,subgroup:24,version:12,tone:1,shortCodes:["deaf_person_tone1"]},{label:"deaf person: medium-light skin tone",hexcode:"1F9CF-1F3FC",emoji:"🧏🏼",text:"",type:1,order:893,group:1,subgroup:24,version:12,tone:2,shortCodes:["deaf_person_tone2"]},{label:"deaf person: medium skin tone",hexcode:"1F9CF-1F3FD",emoji:"🧏🏽",text:"",type:1,order:894,group:1,subgroup:24,version:12,tone:3,shortCodes:["deaf_person_tone3"]},{label:"deaf person: medium-dark skin tone",hexcode:"1F9CF-1F3FE",emoji:"🧏🏾",text:"",type:1,order:895,group:1,subgroup:24,version:12,tone:4,shortCodes:["deaf_person_tone4"]},{label:"deaf person: dark skin tone",hexcode:"1F9CF-1F3FF",emoji:"🧏🏿",text:"",type:1,order:896,group:1,subgroup:24,version:12,tone:5,shortCodes:["deaf_person_tone5"]}],shortCodes:["deaf_person"]},{label:"deaf man",hexcode:"1F9CF-200D-2642-FE0F",tags:["accessibility","deaf","ear","gesture","hear","man"],emoji:"🧏♂️",text:"",type:1,order:897,group:1,subgroup:24,version:12,gender:1,skins:[{label:"deaf man: light skin tone",hexcode:"1F9CF-1F3FB-200D-2642-FE0F",emoji:"🧏🏻♂️",text:"",type:1,order:899,group:1,subgroup:24,version:12,gender:1,tone:1,shortCodes:["deaf_man_tone1"]},{label:"deaf man: medium-light skin tone",hexcode:"1F9CF-1F3FC-200D-2642-FE0F",emoji:"🧏🏼♂️",text:"",type:1,order:901,group:1,subgroup:24,version:12,gender:1,tone:2,shortCodes:["deaf_man_tone2"]},{label:"deaf man: medium skin tone",hexcode:"1F9CF-1F3FD-200D-2642-FE0F",emoji:"🧏🏽♂️",text:"",type:1,order:903,group:1,subgroup:24,version:12,gender:1,tone:3,shortCodes:["deaf_man_tone3"]},{label:"deaf man: medium-dark skin tone",hexcode:"1F9CF-1F3FE-200D-2642-FE0F",emoji:"🧏🏾♂️",text:"",type:1,order:905,group:1,subgroup:24,version:12,gender:1,tone:4,shortCodes:["deaf_man_tone4"]},{label:"deaf man: dark skin tone",hexcode:"1F9CF-1F3FF-200D-2642-FE0F",emoji:"🧏🏿♂️",text:"",type:1,order:907,group:1,subgroup:24,version:12,gender:1,tone:5,shortCodes:["deaf_man_tone5"]}],shortCodes:["deaf_man"]},{label:"deaf woman",hexcode:"1F9CF-200D-2640-FE0F",tags:["accessibility","deaf","ear","gesture","hear","woman"],emoji:"🧏♀️",text:"",type:1,order:909,group:1,subgroup:24,version:12,gender:0,skins:[{label:"deaf woman: light skin tone",hexcode:"1F9CF-1F3FB-200D-2640-FE0F",emoji:"🧏🏻♀️",text:"",type:1,order:911,group:1,subgroup:24,version:12,gender:0,tone:1,shortCodes:["deaf_woman_tone1"]},{label:"deaf woman: medium-light skin tone",hexcode:"1F9CF-1F3FC-200D-2640-FE0F",emoji:"🧏🏼♀️",text:"",type:1,order:913,group:1,subgroup:24,version:12,gender:0,tone:2,shortCodes:["deaf_woman_tone2"]},{label:"deaf woman: medium skin tone",hexcode:"1F9CF-1F3FD-200D-2640-FE0F",emoji:"🧏🏽♀️",text:"",type:1,order:915,group:1,subgroup:24,version:12,gender:0,tone:3,shortCodes:["deaf_woman_tone3"]},{label:"deaf woman: medium-dark skin tone",hexcode:"1F9CF-1F3FE-200D-2640-FE0F",emoji:"🧏🏾♀️",text:"",type:1,order:917,group:1,subgroup:24,version:12,gender:0,tone:4,shortCodes:["deaf_woman_tone4"]},{label:"deaf woman: dark skin tone",hexcode:"1F9CF-1F3FF-200D-2640-FE0F",emoji:"🧏🏿♀️",text:"",type:1,order:919,group:1,subgroup:24,version:12,gender:0,tone:5,shortCodes:["deaf_woman_tone5"]}],shortCodes:["deaf_woman"]},{label:"person bowing",hexcode:"1F647",tags:["apology","ask","beg","bow","bowing","favor","forgive","gesture","meditate","meditation","person","pity","regret","sorry"],emoji:"🙇",text:"",type:1,order:921,group:1,subgroup:24,version:.6,skins:[{label:"person bowing: light skin tone",hexcode:"1F647-1F3FB",emoji:"🙇🏻",text:"",type:1,order:922,group:1,subgroup:24,version:1,tone:1,shortCodes:["bow_tone1","person_bowing_tone1"]},{label:"person bowing: medium-light skin tone",hexcode:"1F647-1F3FC",emoji:"🙇🏼",text:"",type:1,order:923,group:1,subgroup:24,version:1,tone:2,shortCodes:["bow_tone2","person_bowing_tone2"]},{label:"person bowing: medium skin tone",hexcode:"1F647-1F3FD",emoji:"🙇🏽",text:"",type:1,order:924,group:1,subgroup:24,version:1,tone:3,shortCodes:["bow_tone3","person_bowing_tone3"]},{label:"person bowing: medium-dark skin tone",hexcode:"1F647-1F3FE",emoji:"🙇🏾",text:"",type:1,order:925,group:1,subgroup:24,version:1,tone:4,shortCodes:["bow_tone4","person_bowing_tone4"]},{label:"person bowing: dark skin tone",hexcode:"1F647-1F3FF",emoji:"🙇🏿",text:"",type:1,order:926,group:1,subgroup:24,version:1,tone:5,shortCodes:["bow_tone5","person_bowing_tone5"]}],shortCodes:["bow","person_bowing"]},{label:"man bowing",hexcode:"1F647-200D-2642-FE0F",tags:["apology","ask","beg","bow","bowing","favor","forgive","gesture","man","meditate","meditation","pity","regret","sorry"],emoji:"🙇♂️",text:"",type:1,order:927,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man bowing: light skin tone",hexcode:"1F647-1F3FB-200D-2642-FE0F",emoji:"🙇🏻♂️",text:"",type:1,order:929,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_bowing_tone1"]},{label:"man bowing: medium-light skin tone",hexcode:"1F647-1F3FC-200D-2642-FE0F",emoji:"🙇🏼♂️",text:"",type:1,order:931,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_bowing_tone2"]},{label:"man bowing: medium skin tone",hexcode:"1F647-1F3FD-200D-2642-FE0F",emoji:"🙇🏽♂️",text:"",type:1,order:933,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_bowing_tone3"]},{label:"man bowing: medium-dark skin tone",hexcode:"1F647-1F3FE-200D-2642-FE0F",emoji:"🙇🏾♂️",text:"",type:1,order:935,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_bowing_tone4"]},{label:"man bowing: dark skin tone",hexcode:"1F647-1F3FF-200D-2642-FE0F",emoji:"🙇🏿♂️",text:"",type:1,order:937,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_bowing_tone5"]}],shortCodes:["man_bowing"]},{label:"woman bowing",hexcode:"1F647-200D-2640-FE0F",tags:["apology","ask","beg","bow","bowing","favor","forgive","gesture","meditate","meditation","pity","regret","sorry","woman"],emoji:"🙇♀️",text:"",type:1,order:939,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman bowing: light skin tone",hexcode:"1F647-1F3FB-200D-2640-FE0F",emoji:"🙇🏻♀️",text:"",type:1,order:941,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_bowing_tone1"]},{label:"woman bowing: medium-light skin tone",hexcode:"1F647-1F3FC-200D-2640-FE0F",emoji:"🙇🏼♀️",text:"",type:1,order:943,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_bowing_tone2"]},{label:"woman bowing: medium skin tone",hexcode:"1F647-1F3FD-200D-2640-FE0F",emoji:"🙇🏽♀️",text:"",type:1,order:945,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_bowing_tone3"]},{label:"woman bowing: medium-dark skin tone",hexcode:"1F647-1F3FE-200D-2640-FE0F",emoji:"🙇🏾♀️",text:"",type:1,order:947,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_bowing_tone4"]},{label:"woman bowing: dark skin tone",hexcode:"1F647-1F3FF-200D-2640-FE0F",emoji:"🙇🏿♀️",text:"",type:1,order:949,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_bowing_tone5"]}],shortCodes:["woman_bowing"]},{label:"person facepalming",hexcode:"1F926",tags:["again","bewilder","disbelief","exasperation","facepalm","no","not","oh","omg","person","shock","smh"],emoji:"🤦",text:"",type:1,order:951,group:1,subgroup:24,version:3,skins:[{label:"person facepalming: light skin tone",hexcode:"1F926-1F3FB",emoji:"🤦🏻",text:"",type:1,order:952,group:1,subgroup:24,version:3,tone:1,shortCodes:["facepalm_tone1","person_facepalming_tone1"]},{label:"person facepalming: medium-light skin tone",hexcode:"1F926-1F3FC",emoji:"🤦🏼",text:"",type:1,order:953,group:1,subgroup:24,version:3,tone:2,shortCodes:["facepalm_tone2","person_facepalming_tone2"]},{label:"person facepalming: medium skin tone",hexcode:"1F926-1F3FD",emoji:"🤦🏽",text:"",type:1,order:954,group:1,subgroup:24,version:3,tone:3,shortCodes:["facepalm_tone3","person_facepalming_tone3"]},{label:"person facepalming: medium-dark skin tone",hexcode:"1F926-1F3FE",emoji:"🤦🏾",text:"",type:1,order:955,group:1,subgroup:24,version:3,tone:4,shortCodes:["facepalm_tone4","person_facepalming_tone4"]},{label:"person facepalming: dark skin tone",hexcode:"1F926-1F3FF",emoji:"🤦🏿",text:"",type:1,order:956,group:1,subgroup:24,version:3,tone:5,shortCodes:["facepalm_tone5","person_facepalming_tone5"]}],shortCodes:["facepalm","person_facepalming"]},{label:"man facepalming",hexcode:"1F926-200D-2642-FE0F",tags:["again","bewilder","disbelief","exasperation","facepalm","man","no","not","oh","omg","shock","smh"],emoji:"🤦♂️",text:"",type:1,order:957,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man facepalming: light skin tone",hexcode:"1F926-1F3FB-200D-2642-FE0F",emoji:"🤦🏻♂️",text:"",type:1,order:959,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_facepalming_tone1"]},{label:"man facepalming: medium-light skin tone",hexcode:"1F926-1F3FC-200D-2642-FE0F",emoji:"🤦🏼♂️",text:"",type:1,order:961,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_facepalming_tone2"]},{label:"man facepalming: medium skin tone",hexcode:"1F926-1F3FD-200D-2642-FE0F",emoji:"🤦🏽♂️",text:"",type:1,order:963,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_facepalming_tone3"]},{label:"man facepalming: medium-dark skin tone",hexcode:"1F926-1F3FE-200D-2642-FE0F",emoji:"🤦🏾♂️",text:"",type:1,order:965,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_facepalming_tone4"]},{label:"man facepalming: dark skin tone",hexcode:"1F926-1F3FF-200D-2642-FE0F",emoji:"🤦🏿♂️",text:"",type:1,order:967,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_facepalming_tone5"]}],shortCodes:["man_facepalming"]},{label:"woman facepalming",hexcode:"1F926-200D-2640-FE0F",tags:["again","bewilder","disbelief","exasperation","facepalm","no","not","oh","omg","shock","smh","woman"],emoji:"🤦♀️",text:"",type:1,order:969,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman facepalming: light skin tone",hexcode:"1F926-1F3FB-200D-2640-FE0F",emoji:"🤦🏻♀️",text:"",type:1,order:971,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_facepalming_tone1"]},{label:"woman facepalming: medium-light skin tone",hexcode:"1F926-1F3FC-200D-2640-FE0F",emoji:"🤦🏼♀️",text:"",type:1,order:973,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_facepalming_tone2"]},{label:"woman facepalming: medium skin tone",hexcode:"1F926-1F3FD-200D-2640-FE0F",emoji:"🤦🏽♀️",text:"",type:1,order:975,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_facepalming_tone3"]},{label:"woman facepalming: medium-dark skin tone",hexcode:"1F926-1F3FE-200D-2640-FE0F",emoji:"🤦🏾♀️",text:"",type:1,order:977,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_facepalming_tone4"]},{label:"woman facepalming: dark skin tone",hexcode:"1F926-1F3FF-200D-2640-FE0F",emoji:"🤦🏿♀️",text:"",type:1,order:979,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_facepalming_tone5"]}],shortCodes:["woman_facepalming"]},{label:"person shrugging",hexcode:"1F937",tags:["doubt","dunno","guess","idk","ignorance","indifference","knows","maybe","person","shrug","shrugging","whatever","who"],emoji:"🤷",text:"",type:1,order:981,group:1,subgroup:24,version:3,skins:[{label:"person shrugging: light skin tone",hexcode:"1F937-1F3FB",emoji:"🤷🏻",text:"",type:1,order:982,group:1,subgroup:24,version:3,tone:1,shortCodes:["person_shrugging_tone1","shrug_tone1"]},{label:"person shrugging: medium-light skin tone",hexcode:"1F937-1F3FC",emoji:"🤷🏼",text:"",type:1,order:983,group:1,subgroup:24,version:3,tone:2,shortCodes:["person_shrugging_tone2","shrug_tone2"]},{label:"person shrugging: medium skin tone",hexcode:"1F937-1F3FD",emoji:"🤷🏽",text:"",type:1,order:984,group:1,subgroup:24,version:3,tone:3,shortCodes:["person_shrugging_tone3","shrug_tone3"]},{label:"person shrugging: medium-dark skin tone",hexcode:"1F937-1F3FE",emoji:"🤷🏾",text:"",type:1,order:985,group:1,subgroup:24,version:3,tone:4,shortCodes:["person_shrugging_tone4","shrug_tone4"]},{label:"person shrugging: dark skin tone",hexcode:"1F937-1F3FF",emoji:"🤷🏿",text:"",type:1,order:986,group:1,subgroup:24,version:3,tone:5,shortCodes:["person_shrugging_tone5","shrug_tone5"]}],shortCodes:["person_shrugging","shrug"]},{label:"man shrugging",hexcode:"1F937-200D-2642-FE0F",tags:["doubt","dunno","guess","idk","ignorance","indifference","knows","man","maybe","shrug","shrugging","whatever","who"],emoji:"🤷♂️",text:"",type:1,order:987,group:1,subgroup:24,version:4,gender:1,skins:[{label:"man shrugging: light skin tone",hexcode:"1F937-1F3FB-200D-2642-FE0F",emoji:"🤷🏻♂️",text:"",type:1,order:989,group:1,subgroup:24,version:4,gender:1,tone:1,shortCodes:["man_shrugging_tone1"]},{label:"man shrugging: medium-light skin tone",hexcode:"1F937-1F3FC-200D-2642-FE0F",emoji:"🤷🏼♂️",text:"",type:1,order:991,group:1,subgroup:24,version:4,gender:1,tone:2,shortCodes:["man_shrugging_tone2"]},{label:"man shrugging: medium skin tone",hexcode:"1F937-1F3FD-200D-2642-FE0F",emoji:"🤷🏽♂️",text:"",type:1,order:993,group:1,subgroup:24,version:4,gender:1,tone:3,shortCodes:["man_shrugging_tone3"]},{label:"man shrugging: medium-dark skin tone",hexcode:"1F937-1F3FE-200D-2642-FE0F",emoji:"🤷🏾♂️",text:"",type:1,order:995,group:1,subgroup:24,version:4,gender:1,tone:4,shortCodes:["man_shrugging_tone4"]},{label:"man shrugging: dark skin tone",hexcode:"1F937-1F3FF-200D-2642-FE0F",emoji:"🤷🏿♂️",text:"",type:1,order:997,group:1,subgroup:24,version:4,gender:1,tone:5,shortCodes:["man_shrugging_tone5"]}],shortCodes:["man_shrugging"]},{label:"woman shrugging",hexcode:"1F937-200D-2640-FE0F",tags:["doubt","dunno","guess","idk","ignorance","indifference","knows","maybe","shrug","shrugging","whatever","who","woman"],emoji:"🤷♀️",text:"",type:1,order:999,group:1,subgroup:24,version:4,gender:0,skins:[{label:"woman shrugging: light skin tone",hexcode:"1F937-1F3FB-200D-2640-FE0F",emoji:"🤷🏻♀️",text:"",type:1,order:1001,group:1,subgroup:24,version:4,gender:0,tone:1,shortCodes:["woman_shrugging_tone1"]},{label:"woman shrugging: medium-light skin tone",hexcode:"1F937-1F3FC-200D-2640-FE0F",emoji:"🤷🏼♀️",text:"",type:1,order:1003,group:1,subgroup:24,version:4,gender:0,tone:2,shortCodes:["woman_shrugging_tone2"]},{label:"woman shrugging: medium skin tone",hexcode:"1F937-1F3FD-200D-2640-FE0F",emoji:"🤷🏽♀️",text:"",type:1,order:1005,group:1,subgroup:24,version:4,gender:0,tone:3,shortCodes:["woman_shrugging_tone3"]},{label:"woman shrugging: medium-dark skin tone",hexcode:"1F937-1F3FE-200D-2640-FE0F",emoji:"🤷🏾♀️",text:"",type:1,order:1007,group:1,subgroup:24,version:4,gender:0,tone:4,shortCodes:["woman_shrugging_tone4"]},{label:"woman shrugging: dark skin tone",hexcode:"1F937-1F3FF-200D-2640-FE0F",emoji:"🤷🏿♀️",text:"",type:1,order:1009,group:1,subgroup:24,version:4,gender:0,tone:5,shortCodes:["woman_shrugging_tone5"]}],shortCodes:["woman_shrugging"]},{label:"health worker",hexcode:"1F9D1-200D-2695-FE0F",tags:["doctor","health","healthcare","nurse","therapist","worker"],emoji:"🧑⚕️",text:"",type:1,order:1011,group:1,subgroup:25,version:12.1,skins:[{label:"health worker: light skin tone",hexcode:"1F9D1-1F3FB-200D-2695-FE0F",emoji:"🧑🏻⚕️",text:"",type:1,order:1013,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["health_worker_tone1"]},{label:"health worker: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-2695-FE0F",emoji:"🧑🏼⚕️",text:"",type:1,order:1015,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["health_worker_tone2"]},{label:"health worker: medium skin tone",hexcode:"1F9D1-1F3FD-200D-2695-FE0F",emoji:"🧑🏽⚕️",text:"",type:1,order:1017,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["health_worker_tone3"]},{label:"health worker: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-2695-FE0F",emoji:"🧑🏾⚕️",text:"",type:1,order:1019,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["health_worker_tone4"]},{label:"health worker: dark skin tone",hexcode:"1F9D1-1F3FF-200D-2695-FE0F",emoji:"🧑🏿⚕️",text:"",type:1,order:1021,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["health_worker_tone5"]}],shortCodes:["health_worker"]},{label:"man health worker",hexcode:"1F468-200D-2695-FE0F",tags:["doctor","health","healthcare","man","nurse","therapist","worker"],emoji:"👨⚕️",text:"",type:1,order:1023,group:1,subgroup:25,version:4,skins:[{label:"man health worker: light skin tone",hexcode:"1F468-1F3FB-200D-2695-FE0F",emoji:"👨🏻⚕️",text:"",type:1,order:1025,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_health_worker_tone1"]},{label:"man health worker: medium-light skin tone",hexcode:"1F468-1F3FC-200D-2695-FE0F",emoji:"👨🏼⚕️",text:"",type:1,order:1027,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_health_worker_tone2"]},{label:"man health worker: medium skin tone",hexcode:"1F468-1F3FD-200D-2695-FE0F",emoji:"👨🏽⚕️",text:"",type:1,order:1029,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_health_worker_tone3"]},{label:"man health worker: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-2695-FE0F",emoji:"👨🏾⚕️",text:"",type:1,order:1031,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_health_worker_tone4"]},{label:"man health worker: dark skin tone",hexcode:"1F468-1F3FF-200D-2695-FE0F",emoji:"👨🏿⚕️",text:"",type:1,order:1033,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_health_worker_tone5"]}],shortCodes:["man_health_worker"]},{label:"woman health worker",hexcode:"1F469-200D-2695-FE0F",tags:["doctor","health","healthcare","nurse","therapist","woman","worker"],emoji:"👩⚕️",text:"",type:1,order:1035,group:1,subgroup:25,version:4,skins:[{label:"woman health worker: light skin tone",hexcode:"1F469-1F3FB-200D-2695-FE0F",emoji:"👩🏻⚕️",text:"",type:1,order:1037,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_health_worker_tone1"]},{label:"woman health worker: medium-light skin tone",hexcode:"1F469-1F3FC-200D-2695-FE0F",emoji:"👩🏼⚕️",text:"",type:1,order:1039,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_health_worker_tone2"]},{label:"woman health worker: medium skin tone",hexcode:"1F469-1F3FD-200D-2695-FE0F",emoji:"👩🏽⚕️",text:"",type:1,order:1041,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_health_worker_tone3"]},{label:"woman health worker: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2695-FE0F",emoji:"👩🏾⚕️",text:"",type:1,order:1043,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_health_worker_tone4"]},{label:"woman health worker: dark skin tone",hexcode:"1F469-1F3FF-200D-2695-FE0F",emoji:"👩🏿⚕️",text:"",type:1,order:1045,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_health_worker_tone5"]}],shortCodes:["woman_health_worker"]},{label:"student",hexcode:"1F9D1-200D-1F393",tags:["graduate"],emoji:"🧑🎓",text:"",type:1,order:1047,group:1,subgroup:25,version:12.1,skins:[{label:"student: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F393",emoji:"🧑🏻🎓",text:"",type:1,order:1048,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["student_tone1"]},{label:"student: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F393",emoji:"🧑🏼🎓",text:"",type:1,order:1049,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["student_tone2"]},{label:"student: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F393",emoji:"🧑🏽🎓",text:"",type:1,order:1050,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["student_tone3"]},{label:"student: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F393",emoji:"🧑🏾🎓",text:"",type:1,order:1051,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["student_tone4"]},{label:"student: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F393",emoji:"🧑🏿🎓",text:"",type:1,order:1052,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["student_tone5"]}],shortCodes:["student"]},{label:"man student",hexcode:"1F468-200D-1F393",tags:["graduate","man","student"],emoji:"👨🎓",text:"",type:1,order:1053,group:1,subgroup:25,version:4,skins:[{label:"man student: light skin tone",hexcode:"1F468-1F3FB-200D-1F393",emoji:"👨🏻🎓",text:"",type:1,order:1054,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_student_tone1"]},{label:"man student: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F393",emoji:"👨🏼🎓",text:"",type:1,order:1055,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_student_tone2"]},{label:"man student: medium skin tone",hexcode:"1F468-1F3FD-200D-1F393",emoji:"👨🏽🎓",text:"",type:1,order:1056,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_student_tone3"]},{label:"man student: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F393",emoji:"👨🏾🎓",text:"",type:1,order:1057,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_student_tone4"]},{label:"man student: dark skin tone",hexcode:"1F468-1F3FF-200D-1F393",emoji:"👨🏿🎓",text:"",type:1,order:1058,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_student_tone5"]}],shortCodes:["man_student"]},{label:"woman student",hexcode:"1F469-200D-1F393",tags:["graduate","student","woman"],emoji:"👩🎓",text:"",type:1,order:1059,group:1,subgroup:25,version:4,skins:[{label:"woman student: light skin tone",hexcode:"1F469-1F3FB-200D-1F393",emoji:"👩🏻🎓",text:"",type:1,order:1060,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_student_tone1"]},{label:"woman student: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F393",emoji:"👩🏼🎓",text:"",type:1,order:1061,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_student_tone2"]},{label:"woman student: medium skin tone",hexcode:"1F469-1F3FD-200D-1F393",emoji:"👩🏽🎓",text:"",type:1,order:1062,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_student_tone3"]},{label:"woman student: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F393",emoji:"👩🏾🎓",text:"",type:1,order:1063,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_student_tone4"]},{label:"woman student: dark skin tone",hexcode:"1F469-1F3FF-200D-1F393",emoji:"👩🏿🎓",text:"",type:1,order:1064,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_student_tone5"]}],shortCodes:["woman_student"]},{label:"teacher",hexcode:"1F9D1-200D-1F3EB",tags:["instructor","lecturer","professor"],emoji:"🧑🏫",text:"",type:1,order:1065,group:1,subgroup:25,version:12.1,skins:[{label:"teacher: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F3EB",emoji:"🧑🏻🏫",text:"",type:1,order:1066,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["teacher_tone1"]},{label:"teacher: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F3EB",emoji:"🧑🏼🏫",text:"",type:1,order:1067,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["teacher_tone2"]},{label:"teacher: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F3EB",emoji:"🧑🏽🏫",text:"",type:1,order:1068,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["teacher_tone3"]},{label:"teacher: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F3EB",emoji:"🧑🏾🏫",text:"",type:1,order:1069,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["teacher_tone4"]},{label:"teacher: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F3EB",emoji:"🧑🏿🏫",text:"",type:1,order:1070,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["teacher_tone5"]}],shortCodes:["teacher"]},{label:"man teacher",hexcode:"1F468-200D-1F3EB",tags:["instructor","lecturer","man","professor","teacher"],emoji:"👨🏫",text:"",type:1,order:1071,group:1,subgroup:25,version:4,skins:[{label:"man teacher: light skin tone",hexcode:"1F468-1F3FB-200D-1F3EB",emoji:"👨🏻🏫",text:"",type:1,order:1072,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_teacher_tone1"]},{label:"man teacher: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F3EB",emoji:"👨🏼🏫",text:"",type:1,order:1073,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_teacher_tone2"]},{label:"man teacher: medium skin tone",hexcode:"1F468-1F3FD-200D-1F3EB",emoji:"👨🏽🏫",text:"",type:1,order:1074,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_teacher_tone3"]},{label:"man teacher: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F3EB",emoji:"👨🏾🏫",text:"",type:1,order:1075,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_teacher_tone4"]},{label:"man teacher: dark skin tone",hexcode:"1F468-1F3FF-200D-1F3EB",emoji:"👨🏿🏫",text:"",type:1,order:1076,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_teacher_tone5"]}],shortCodes:["man_teacher"]},{label:"woman teacher",hexcode:"1F469-200D-1F3EB",tags:["instructor","lecturer","professor","teacher","woman"],emoji:"👩🏫",text:"",type:1,order:1077,group:1,subgroup:25,version:4,skins:[{label:"woman teacher: light skin tone",hexcode:"1F469-1F3FB-200D-1F3EB",emoji:"👩🏻🏫",text:"",type:1,order:1078,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_teacher_tone1"]},{label:"woman teacher: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F3EB",emoji:"👩🏼🏫",text:"",type:1,order:1079,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_teacher_tone2"]},{label:"woman teacher: medium skin tone",hexcode:"1F469-1F3FD-200D-1F3EB",emoji:"👩🏽🏫",text:"",type:1,order:1080,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_teacher_tone3"]},{label:"woman teacher: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F3EB",emoji:"👩🏾🏫",text:"",type:1,order:1081,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_teacher_tone4"]},{label:"woman teacher: dark skin tone",hexcode:"1F469-1F3FF-200D-1F3EB",emoji:"👩🏿🏫",text:"",type:1,order:1082,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_teacher_tone5"]}],shortCodes:["woman_teacher"]},{label:"judge",hexcode:"1F9D1-200D-2696-FE0F",tags:["justice","law","scales"],emoji:"🧑⚖️",text:"",type:1,order:1083,group:1,subgroup:25,version:12.1,skins:[{label:"judge: light skin tone",hexcode:"1F9D1-1F3FB-200D-2696-FE0F",emoji:"🧑🏻⚖️",text:"",type:1,order:1085,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["judge_tone1"]},{label:"judge: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-2696-FE0F",emoji:"🧑🏼⚖️",text:"",type:1,order:1087,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["judge_tone2"]},{label:"judge: medium skin tone",hexcode:"1F9D1-1F3FD-200D-2696-FE0F",emoji:"🧑🏽⚖️",text:"",type:1,order:1089,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["judge_tone3"]},{label:"judge: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-2696-FE0F",emoji:"🧑🏾⚖️",text:"",type:1,order:1091,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["judge_tone4"]},{label:"judge: dark skin tone",hexcode:"1F9D1-1F3FF-200D-2696-FE0F",emoji:"🧑🏿⚖️",text:"",type:1,order:1093,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["judge_tone5"]}],shortCodes:["judge"]},{label:"man judge",hexcode:"1F468-200D-2696-FE0F",tags:["judge","justice","law","man","scales"],emoji:"👨⚖️",text:"",type:1,order:1095,group:1,subgroup:25,version:4,skins:[{label:"man judge: light skin tone",hexcode:"1F468-1F3FB-200D-2696-FE0F",emoji:"👨🏻⚖️",text:"",type:1,order:1097,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_judge_tone1"]},{label:"man judge: medium-light skin tone",hexcode:"1F468-1F3FC-200D-2696-FE0F",emoji:"👨🏼⚖️",text:"",type:1,order:1099,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_judge_tone2"]},{label:"man judge: medium skin tone",hexcode:"1F468-1F3FD-200D-2696-FE0F",emoji:"👨🏽⚖️",text:"",type:1,order:1101,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_judge_tone3"]},{label:"man judge: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-2696-FE0F",emoji:"👨🏾⚖️",text:"",type:1,order:1103,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_judge_tone4"]},{label:"man judge: dark skin tone",hexcode:"1F468-1F3FF-200D-2696-FE0F",emoji:"👨🏿⚖️",text:"",type:1,order:1105,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_judge_tone5"]}],shortCodes:["man_judge"]},{label:"woman judge",hexcode:"1F469-200D-2696-FE0F",tags:["judge","justice","law","scales","woman"],emoji:"👩⚖️",text:"",type:1,order:1107,group:1,subgroup:25,version:4,skins:[{label:"woman judge: light skin tone",hexcode:"1F469-1F3FB-200D-2696-FE0F",emoji:"👩🏻⚖️",text:"",type:1,order:1109,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_judge_tone1"]},{label:"woman judge: medium-light skin tone",hexcode:"1F469-1F3FC-200D-2696-FE0F",emoji:"👩🏼⚖️",text:"",type:1,order:1111,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_judge_tone2"]},{label:"woman judge: medium skin tone",hexcode:"1F469-1F3FD-200D-2696-FE0F",emoji:"👩🏽⚖️",text:"",type:1,order:1113,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_judge_tone3"]},{label:"woman judge: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2696-FE0F",emoji:"👩🏾⚖️",text:"",type:1,order:1115,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_judge_tone4"]},{label:"woman judge: dark skin tone",hexcode:"1F469-1F3FF-200D-2696-FE0F",emoji:"👩🏿⚖️",text:"",type:1,order:1117,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_judge_tone5"]}],shortCodes:["woman_judge"]},{label:"farmer",hexcode:"1F9D1-200D-1F33E",tags:["gardener","rancher"],emoji:"🧑🌾",text:"",type:1,order:1119,group:1,subgroup:25,version:12.1,skins:[{label:"farmer: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F33E",emoji:"🧑🏻🌾",text:"",type:1,order:1120,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["farmer_tone1"]},{label:"farmer: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F33E",emoji:"🧑🏼🌾",text:"",type:1,order:1121,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["farmer_tone2"]},{label:"farmer: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F33E",emoji:"🧑🏽🌾",text:"",type:1,order:1122,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["farmer_tone3"]},{label:"farmer: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F33E",emoji:"🧑🏾🌾",text:"",type:1,order:1123,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["farmer_tone4"]},{label:"farmer: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F33E",emoji:"🧑🏿🌾",text:"",type:1,order:1124,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["farmer_tone5"]}],shortCodes:["farmer"]},{label:"man farmer",hexcode:"1F468-200D-1F33E",tags:["farmer","gardener","man","rancher"],emoji:"👨🌾",text:"",type:1,order:1125,group:1,subgroup:25,version:4,skins:[{label:"man farmer: light skin tone",hexcode:"1F468-1F3FB-200D-1F33E",emoji:"👨🏻🌾",text:"",type:1,order:1126,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_farmer_tone1"]},{label:"man farmer: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F33E",emoji:"👨🏼🌾",text:"",type:1,order:1127,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_farmer_tone2"]},{label:"man farmer: medium skin tone",hexcode:"1F468-1F3FD-200D-1F33E",emoji:"👨🏽🌾",text:"",type:1,order:1128,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_farmer_tone3"]},{label:"man farmer: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F33E",emoji:"👨🏾🌾",text:"",type:1,order:1129,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_farmer_tone4"]},{label:"man farmer: dark skin tone",hexcode:"1F468-1F3FF-200D-1F33E",emoji:"👨🏿🌾",text:"",type:1,order:1130,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_farmer_tone5"]}],shortCodes:["man_farmer"]},{label:"woman farmer",hexcode:"1F469-200D-1F33E",tags:["farmer","gardener","rancher","woman"],emoji:"👩🌾",text:"",type:1,order:1131,group:1,subgroup:25,version:4,skins:[{label:"woman farmer: light skin tone",hexcode:"1F469-1F3FB-200D-1F33E",emoji:"👩🏻🌾",text:"",type:1,order:1132,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_farmer_tone1"]},{label:"woman farmer: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F33E",emoji:"👩🏼🌾",text:"",type:1,order:1133,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_farmer_tone2"]},{label:"woman farmer: medium skin tone",hexcode:"1F469-1F3FD-200D-1F33E",emoji:"👩🏽🌾",text:"",type:1,order:1134,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_farmer_tone3"]},{label:"woman farmer: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F33E",emoji:"👩🏾🌾",text:"",type:1,order:1135,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_farmer_tone4"]},{label:"woman farmer: dark skin tone",hexcode:"1F469-1F3FF-200D-1F33E",emoji:"👩🏿🌾",text:"",type:1,order:1136,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_farmer_tone5"]}],shortCodes:["woman_farmer"]},{label:"cook",hexcode:"1F9D1-200D-1F373",tags:["chef"],emoji:"🧑🍳",text:"",type:1,order:1137,group:1,subgroup:25,version:12.1,skins:[{label:"cook: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F373",emoji:"🧑🏻🍳",text:"",type:1,order:1138,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["cook_tone1"]},{label:"cook: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F373",emoji:"🧑🏼🍳",text:"",type:1,order:1139,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["cook_tone2"]},{label:"cook: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F373",emoji:"🧑🏽🍳",text:"",type:1,order:1140,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["cook_tone3"]},{label:"cook: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F373",emoji:"🧑🏾🍳",text:"",type:1,order:1141,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["cook_tone4"]},{label:"cook: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F373",emoji:"🧑🏿🍳",text:"",type:1,order:1142,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["cook_tone5"]}],shortCodes:["cook"]},{label:"man cook",hexcode:"1F468-200D-1F373",tags:["chef","cook","man"],emoji:"👨🍳",text:"",type:1,order:1143,group:1,subgroup:25,version:4,skins:[{label:"man cook: light skin tone",hexcode:"1F468-1F3FB-200D-1F373",emoji:"👨🏻🍳",text:"",type:1,order:1144,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_cook_tone1"]},{label:"man cook: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F373",emoji:"👨🏼🍳",text:"",type:1,order:1145,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_cook_tone2"]},{label:"man cook: medium skin tone",hexcode:"1F468-1F3FD-200D-1F373",emoji:"👨🏽🍳",text:"",type:1,order:1146,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_cook_tone3"]},{label:"man cook: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F373",emoji:"👨🏾🍳",text:"",type:1,order:1147,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_cook_tone4"]},{label:"man cook: dark skin tone",hexcode:"1F468-1F3FF-200D-1F373",emoji:"👨🏿🍳",text:"",type:1,order:1148,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_cook_tone5"]}],shortCodes:["man_cook"]},{label:"woman cook",hexcode:"1F469-200D-1F373",tags:["chef","cook","woman"],emoji:"👩🍳",text:"",type:1,order:1149,group:1,subgroup:25,version:4,skins:[{label:"woman cook: light skin tone",hexcode:"1F469-1F3FB-200D-1F373",emoji:"👩🏻🍳",text:"",type:1,order:1150,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_cook_tone1"]},{label:"woman cook: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F373",emoji:"👩🏼🍳",text:"",type:1,order:1151,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_cook_tone2"]},{label:"woman cook: medium skin tone",hexcode:"1F469-1F3FD-200D-1F373",emoji:"👩🏽🍳",text:"",type:1,order:1152,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_cook_tone3"]},{label:"woman cook: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F373",emoji:"👩🏾🍳",text:"",type:1,order:1153,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_cook_tone4"]},{label:"woman cook: dark skin tone",hexcode:"1F469-1F3FF-200D-1F373",emoji:"👩🏿🍳",text:"",type:1,order:1154,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_cook_tone5"]}],shortCodes:["woman_cook"]},{label:"mechanic",hexcode:"1F9D1-200D-1F527",tags:["electrician","plumber","tradesperson"],emoji:"🧑🔧",text:"",type:1,order:1155,group:1,subgroup:25,version:12.1,skins:[{label:"mechanic: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F527",emoji:"🧑🏻🔧",text:"",type:1,order:1156,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["mechanic_tone1"]},{label:"mechanic: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F527",emoji:"🧑🏼🔧",text:"",type:1,order:1157,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["mechanic_tone2"]},{label:"mechanic: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F527",emoji:"🧑🏽🔧",text:"",type:1,order:1158,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["mechanic_tone3"]},{label:"mechanic: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F527",emoji:"🧑🏾🔧",text:"",type:1,order:1159,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["mechanic_tone4"]},{label:"mechanic: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F527",emoji:"🧑🏿🔧",text:"",type:1,order:1160,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["mechanic_tone5"]}],shortCodes:["mechanic"]},{label:"man mechanic",hexcode:"1F468-200D-1F527",tags:["electrician","man","mechanic","plumber","tradesperson"],emoji:"👨🔧",text:"",type:1,order:1161,group:1,subgroup:25,version:4,skins:[{label:"man mechanic: light skin tone",hexcode:"1F468-1F3FB-200D-1F527",emoji:"👨🏻🔧",text:"",type:1,order:1162,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_mechanic_tone1"]},{label:"man mechanic: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F527",emoji:"👨🏼🔧",text:"",type:1,order:1163,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_mechanic_tone2"]},{label:"man mechanic: medium skin tone",hexcode:"1F468-1F3FD-200D-1F527",emoji:"👨🏽🔧",text:"",type:1,order:1164,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_mechanic_tone3"]},{label:"man mechanic: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F527",emoji:"👨🏾🔧",text:"",type:1,order:1165,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_mechanic_tone4"]},{label:"man mechanic: dark skin tone",hexcode:"1F468-1F3FF-200D-1F527",emoji:"👨🏿🔧",text:"",type:1,order:1166,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_mechanic_tone5"]}],shortCodes:["man_mechanic"]},{label:"woman mechanic",hexcode:"1F469-200D-1F527",tags:["electrician","mechanic","plumber","tradesperson","woman"],emoji:"👩🔧",text:"",type:1,order:1167,group:1,subgroup:25,version:4,skins:[{label:"woman mechanic: light skin tone",hexcode:"1F469-1F3FB-200D-1F527",emoji:"👩🏻🔧",text:"",type:1,order:1168,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_mechanic_tone1"]},{label:"woman mechanic: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F527",emoji:"👩🏼🔧",text:"",type:1,order:1169,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_mechanic_tone2"]},{label:"woman mechanic: medium skin tone",hexcode:"1F469-1F3FD-200D-1F527",emoji:"👩🏽🔧",text:"",type:1,order:1170,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_mechanic_tone3"]},{label:"woman mechanic: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F527",emoji:"👩🏾🔧",text:"",type:1,order:1171,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_mechanic_tone4"]},{label:"woman mechanic: dark skin tone",hexcode:"1F469-1F3FF-200D-1F527",emoji:"👩🏿🔧",text:"",type:1,order:1172,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_mechanic_tone5"]}],shortCodes:["woman_mechanic"]},{label:"factory worker",hexcode:"1F9D1-200D-1F3ED",tags:["assembly","factory","industrial","worker"],emoji:"🧑🏭",text:"",type:1,order:1173,group:1,subgroup:25,version:12.1,skins:[{label:"factory worker: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F3ED",emoji:"🧑🏻🏭",text:"",type:1,order:1174,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["factory_worker_tone1"]},{label:"factory worker: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F3ED",emoji:"🧑🏼🏭",text:"",type:1,order:1175,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["factory_worker_tone2"]},{label:"factory worker: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F3ED",emoji:"🧑🏽🏭",text:"",type:1,order:1176,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["factory_worker_tone3"]},{label:"factory worker: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F3ED",emoji:"🧑🏾🏭",text:"",type:1,order:1177,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["factory_worker_tone4"]},{label:"factory worker: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F3ED",emoji:"🧑🏿🏭",text:"",type:1,order:1178,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["factory_worker_tone5"]}],shortCodes:["factory_worker"]},{label:"man factory worker",hexcode:"1F468-200D-1F3ED",tags:["assembly","factory","industrial","man","worker"],emoji:"👨🏭",text:"",type:1,order:1179,group:1,subgroup:25,version:4,skins:[{label:"man factory worker: light skin tone",hexcode:"1F468-1F3FB-200D-1F3ED",emoji:"👨🏻🏭",text:"",type:1,order:1180,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_factory_worker_tone1"]},{label:"man factory worker: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F3ED",emoji:"👨🏼🏭",text:"",type:1,order:1181,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_factory_worker_tone2"]},{label:"man factory worker: medium skin tone",hexcode:"1F468-1F3FD-200D-1F3ED",emoji:"👨🏽🏭",text:"",type:1,order:1182,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_factory_worker_tone3"]},{label:"man factory worker: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F3ED",emoji:"👨🏾🏭",text:"",type:1,order:1183,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_factory_worker_tone4"]},{label:"man factory worker: dark skin tone",hexcode:"1F468-1F3FF-200D-1F3ED",emoji:"👨🏿🏭",text:"",type:1,order:1184,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_factory_worker_tone5"]}],shortCodes:["man_factory_worker"]},{label:"woman factory worker",hexcode:"1F469-200D-1F3ED",tags:["assembly","factory","industrial","woman","worker"],emoji:"👩🏭",text:"",type:1,order:1185,group:1,subgroup:25,version:4,skins:[{label:"woman factory worker: light skin tone",hexcode:"1F469-1F3FB-200D-1F3ED",emoji:"👩🏻🏭",text:"",type:1,order:1186,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_factory_worker_tone1"]},{label:"woman factory worker: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F3ED",emoji:"👩🏼🏭",text:"",type:1,order:1187,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_factory_worker_tone2"]},{label:"woman factory worker: medium skin tone",hexcode:"1F469-1F3FD-200D-1F3ED",emoji:"👩🏽🏭",text:"",type:1,order:1188,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_factory_worker_tone3"]},{label:"woman factory worker: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F3ED",emoji:"👩🏾🏭",text:"",type:1,order:1189,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_factory_worker_tone4"]},{label:"woman factory worker: dark skin tone",hexcode:"1F469-1F3FF-200D-1F3ED",emoji:"👩🏿🏭",text:"",type:1,order:1190,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_factory_worker_tone5"]}],shortCodes:["woman_factory_worker"]},{label:"office worker",hexcode:"1F9D1-200D-1F4BC",tags:["architect","business","manager","office","white-collar","worker"],emoji:"🧑💼",text:"",type:1,order:1191,group:1,subgroup:25,version:12.1,skins:[{label:"office worker: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F4BC",emoji:"🧑🏻💼",text:"",type:1,order:1192,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["office_worker_tone1"]},{label:"office worker: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F4BC",emoji:"🧑🏼💼",text:"",type:1,order:1193,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["office_worker_tone2"]},{label:"office worker: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F4BC",emoji:"🧑🏽💼",text:"",type:1,order:1194,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["office_worker_tone3"]},{label:"office worker: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F4BC",emoji:"🧑🏾💼",text:"",type:1,order:1195,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["office_worker_tone4"]},{label:"office worker: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F4BC",emoji:"🧑🏿💼",text:"",type:1,order:1196,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["office_worker_tone5"]}],shortCodes:["office_worker"]},{label:"man office worker",hexcode:"1F468-200D-1F4BC",tags:["architect","business","man","manager","office","white-collar","worker"],emoji:"👨💼",text:"",type:1,order:1197,group:1,subgroup:25,version:4,skins:[{label:"man office worker: light skin tone",hexcode:"1F468-1F3FB-200D-1F4BC",emoji:"👨🏻💼",text:"",type:1,order:1198,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_office_worker_tone1"]},{label:"man office worker: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F4BC",emoji:"👨🏼💼",text:"",type:1,order:1199,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_office_worker_tone2"]},{label:"man office worker: medium skin tone",hexcode:"1F468-1F3FD-200D-1F4BC",emoji:"👨🏽💼",text:"",type:1,order:1200,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_office_worker_tone3"]},{label:"man office worker: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F4BC",emoji:"👨🏾💼",text:"",type:1,order:1201,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_office_worker_tone4"]},{label:"man office worker: dark skin tone",hexcode:"1F468-1F3FF-200D-1F4BC",emoji:"👨🏿💼",text:"",type:1,order:1202,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_office_worker_tone5"]}],shortCodes:["man_office_worker"]},{label:"woman office worker",hexcode:"1F469-200D-1F4BC",tags:["architect","business","manager","office","white-collar","woman","worker"],emoji:"👩💼",text:"",type:1,order:1203,group:1,subgroup:25,version:4,skins:[{label:"woman office worker: light skin tone",hexcode:"1F469-1F3FB-200D-1F4BC",emoji:"👩🏻💼",text:"",type:1,order:1204,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_office_worker_tone1"]},{label:"woman office worker: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F4BC",emoji:"👩🏼💼",text:"",type:1,order:1205,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_office_worker_tone2"]},{label:"woman office worker: medium skin tone",hexcode:"1F469-1F3FD-200D-1F4BC",emoji:"👩🏽💼",text:"",type:1,order:1206,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_office_worker_tone3"]},{label:"woman office worker: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F4BC",emoji:"👩🏾💼",text:"",type:1,order:1207,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_office_worker_tone4"]},{label:"woman office worker: dark skin tone",hexcode:"1F469-1F3FF-200D-1F4BC",emoji:"👩🏿💼",text:"",type:1,order:1208,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_office_worker_tone5"]}],shortCodes:["woman_office_worker"]},{label:"scientist",hexcode:"1F9D1-200D-1F52C",tags:["biologist","chemist","engineer","mathematician","physicist"],emoji:"🧑🔬",text:"",type:1,order:1209,group:1,subgroup:25,version:12.1,skins:[{label:"scientist: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F52C",emoji:"🧑🏻🔬",text:"",type:1,order:1210,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["scientist_tone1"]},{label:"scientist: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F52C",emoji:"🧑🏼🔬",text:"",type:1,order:1211,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["scientist_tone2"]},{label:"scientist: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F52C",emoji:"🧑🏽🔬",text:"",type:1,order:1212,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["scientist_tone3"]},{label:"scientist: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F52C",emoji:"🧑🏾🔬",text:"",type:1,order:1213,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["scientist_tone4"]},{label:"scientist: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F52C",emoji:"🧑🏿🔬",text:"",type:1,order:1214,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["scientist_tone5"]}],shortCodes:["scientist"]},{label:"man scientist",hexcode:"1F468-200D-1F52C",tags:["biologist","chemist","engineer","man","mathematician","physicist","scientist"],emoji:"👨🔬",text:"",type:1,order:1215,group:1,subgroup:25,version:4,skins:[{label:"man scientist: light skin tone",hexcode:"1F468-1F3FB-200D-1F52C",emoji:"👨🏻🔬",text:"",type:1,order:1216,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_scientist_tone1"]},{label:"man scientist: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F52C",emoji:"👨🏼🔬",text:"",type:1,order:1217,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_scientist_tone2"]},{label:"man scientist: medium skin tone",hexcode:"1F468-1F3FD-200D-1F52C",emoji:"👨🏽🔬",text:"",type:1,order:1218,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_scientist_tone3"]},{label:"man scientist: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F52C",emoji:"👨🏾🔬",text:"",type:1,order:1219,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_scientist_tone4"]},{label:"man scientist: dark skin tone",hexcode:"1F468-1F3FF-200D-1F52C",emoji:"👨🏿🔬",text:"",type:1,order:1220,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_scientist_tone5"]}],shortCodes:["man_scientist"]},{label:"woman scientist",hexcode:"1F469-200D-1F52C",tags:["biologist","chemist","engineer","mathematician","physicist","scientist","woman"],emoji:"👩🔬",text:"",type:1,order:1221,group:1,subgroup:25,version:4,skins:[{label:"woman scientist: light skin tone",hexcode:"1F469-1F3FB-200D-1F52C",emoji:"👩🏻🔬",text:"",type:1,order:1222,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_scientist_tone1"]},{label:"woman scientist: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F52C",emoji:"👩🏼🔬",text:"",type:1,order:1223,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_scientist_tone2"]},{label:"woman scientist: medium skin tone",hexcode:"1F469-1F3FD-200D-1F52C",emoji:"👩🏽🔬",text:"",type:1,order:1224,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_scientist_tone3"]},{label:"woman scientist: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F52C",emoji:"👩🏾🔬",text:"",type:1,order:1225,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_scientist_tone4"]},{label:"woman scientist: dark skin tone",hexcode:"1F469-1F3FF-200D-1F52C",emoji:"👩🏿🔬",text:"",type:1,order:1226,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_scientist_tone5"]}],shortCodes:["woman_scientist"]},{label:"technologist",hexcode:"1F9D1-200D-1F4BB",tags:["coder","computer","developer","inventor","software"],emoji:"🧑💻",text:"",type:1,order:1227,group:1,subgroup:25,version:12.1,skins:[{label:"technologist: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F4BB",emoji:"🧑🏻💻",text:"",type:1,order:1228,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["technologist_tone1"]},{label:"technologist: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F4BB",emoji:"🧑🏼💻",text:"",type:1,order:1229,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["technologist_tone2"]},{label:"technologist: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F4BB",emoji:"🧑🏽💻",text:"",type:1,order:1230,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["technologist_tone3"]},{label:"technologist: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F4BB",emoji:"🧑🏾💻",text:"",type:1,order:1231,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["technologist_tone4"]},{label:"technologist: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F4BB",emoji:"🧑🏿💻",text:"",type:1,order:1232,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["technologist_tone5"]}],shortCodes:["technologist"]},{label:"man technologist",hexcode:"1F468-200D-1F4BB",tags:["coder","computer","developer","inventor","man","software","technologist"],emoji:"👨💻",text:"",type:1,order:1233,group:1,subgroup:25,version:4,skins:[{label:"man technologist: light skin tone",hexcode:"1F468-1F3FB-200D-1F4BB",emoji:"👨🏻💻",text:"",type:1,order:1234,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_technologist_tone1"]},{label:"man technologist: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F4BB",emoji:"👨🏼💻",text:"",type:1,order:1235,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_technologist_tone2"]},{label:"man technologist: medium skin tone",hexcode:"1F468-1F3FD-200D-1F4BB",emoji:"👨🏽💻",text:"",type:1,order:1236,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_technologist_tone3"]},{label:"man technologist: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F4BB",emoji:"👨🏾💻",text:"",type:1,order:1237,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_technologist_tone4"]},{label:"man technologist: dark skin tone",hexcode:"1F468-1F3FF-200D-1F4BB",emoji:"👨🏿💻",text:"",type:1,order:1238,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_technologist_tone5"]}],shortCodes:["man_technologist"]},{label:"woman technologist",hexcode:"1F469-200D-1F4BB",tags:["coder","computer","developer","inventor","software","technologist","woman"],emoji:"👩💻",text:"",type:1,order:1239,group:1,subgroup:25,version:4,skins:[{label:"woman technologist: light skin tone",hexcode:"1F469-1F3FB-200D-1F4BB",emoji:"👩🏻💻",text:"",type:1,order:1240,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_technologist_tone1"]},{label:"woman technologist: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F4BB",emoji:"👩🏼💻",text:"",type:1,order:1241,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_technologist_tone2"]},{label:"woman technologist: medium skin tone",hexcode:"1F469-1F3FD-200D-1F4BB",emoji:"👩🏽💻",text:"",type:1,order:1242,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_technologist_tone3"]},{label:"woman technologist: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F4BB",emoji:"👩🏾💻",text:"",type:1,order:1243,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_technologist_tone4"]},{label:"woman technologist: dark skin tone",hexcode:"1F469-1F3FF-200D-1F4BB",emoji:"👩🏿💻",text:"",type:1,order:1244,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_technologist_tone5"]}],shortCodes:["woman_technologist"]},{label:"singer",hexcode:"1F9D1-200D-1F3A4",tags:["actor","entertainer","rock","rockstar","star"],emoji:"🧑🎤",text:"",type:1,order:1245,group:1,subgroup:25,version:12.1,skins:[{label:"singer: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F3A4",emoji:"🧑🏻🎤",text:"",type:1,order:1246,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["singer_tone1"]},{label:"singer: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F3A4",emoji:"🧑🏼🎤",text:"",type:1,order:1247,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["singer_tone2"]},{label:"singer: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F3A4",emoji:"🧑🏽🎤",text:"",type:1,order:1248,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["singer_tone3"]},{label:"singer: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F3A4",emoji:"🧑🏾🎤",text:"",type:1,order:1249,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["singer_tone4"]},{label:"singer: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F3A4",emoji:"🧑🏿🎤",text:"",type:1,order:1250,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["singer_tone5"]}],shortCodes:["singer"]},{label:"man singer",hexcode:"1F468-200D-1F3A4",tags:["actor","entertainer","man","rock","rockstar","singer","star"],emoji:"👨🎤",text:"",type:1,order:1251,group:1,subgroup:25,version:4,skins:[{label:"man singer: light skin tone",hexcode:"1F468-1F3FB-200D-1F3A4",emoji:"👨🏻🎤",text:"",type:1,order:1252,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_singer_tone1"]},{label:"man singer: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F3A4",emoji:"👨🏼🎤",text:"",type:1,order:1253,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_singer_tone2"]},{label:"man singer: medium skin tone",hexcode:"1F468-1F3FD-200D-1F3A4",emoji:"👨🏽🎤",text:"",type:1,order:1254,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_singer_tone3"]},{label:"man singer: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F3A4",emoji:"👨🏾🎤",text:"",type:1,order:1255,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_singer_tone4"]},{label:"man singer: dark skin tone",hexcode:"1F468-1F3FF-200D-1F3A4",emoji:"👨🏿🎤",text:"",type:1,order:1256,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_singer_tone5"]}],shortCodes:["man_singer"]},{label:"woman singer",hexcode:"1F469-200D-1F3A4",tags:["actor","entertainer","rock","rockstar","singer","star","woman"],emoji:"👩🎤",text:"",type:1,order:1257,group:1,subgroup:25,version:4,skins:[{label:"woman singer: light skin tone",hexcode:"1F469-1F3FB-200D-1F3A4",emoji:"👩🏻🎤",text:"",type:1,order:1258,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_singer_tone1"]},{label:"woman singer: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F3A4",emoji:"👩🏼🎤",text:"",type:1,order:1259,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_singer_tone2"]},{label:"woman singer: medium skin tone",hexcode:"1F469-1F3FD-200D-1F3A4",emoji:"👩🏽🎤",text:"",type:1,order:1260,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_singer_tone3"]},{label:"woman singer: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F3A4",emoji:"👩🏾🎤",text:"",type:1,order:1261,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_singer_tone4"]},{label:"woman singer: dark skin tone",hexcode:"1F469-1F3FF-200D-1F3A4",emoji:"👩🏿🎤",text:"",type:1,order:1262,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_singer_tone5"]}],shortCodes:["woman_singer"]},{label:"artist",hexcode:"1F9D1-200D-1F3A8",tags:["palette"],emoji:"🧑🎨",text:"",type:1,order:1263,group:1,subgroup:25,version:12.1,skins:[{label:"artist: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F3A8",emoji:"🧑🏻🎨",text:"",type:1,order:1264,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["artist_tone1"]},{label:"artist: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F3A8",emoji:"🧑🏼🎨",text:"",type:1,order:1265,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["artist_tone2"]},{label:"artist: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F3A8",emoji:"🧑🏽🎨",text:"",type:1,order:1266,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["artist_tone3"]},{label:"artist: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F3A8",emoji:"🧑🏾🎨",text:"",type:1,order:1267,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["artist_tone4"]},{label:"artist: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F3A8",emoji:"🧑🏿🎨",text:"",type:1,order:1268,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["artist_tone5"]}],shortCodes:["artist"]},{label:"man artist",hexcode:"1F468-200D-1F3A8",tags:["artist","man","palette"],emoji:"👨🎨",text:"",type:1,order:1269,group:1,subgroup:25,version:4,skins:[{label:"man artist: light skin tone",hexcode:"1F468-1F3FB-200D-1F3A8",emoji:"👨🏻🎨",text:"",type:1,order:1270,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_artist_tone1"]},{label:"man artist: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F3A8",emoji:"👨🏼🎨",text:"",type:1,order:1271,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_artist_tone2"]},{label:"man artist: medium skin tone",hexcode:"1F468-1F3FD-200D-1F3A8",emoji:"👨🏽🎨",text:"",type:1,order:1272,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_artist_tone3"]},{label:"man artist: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F3A8",emoji:"👨🏾🎨",text:"",type:1,order:1273,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_artist_tone4"]},{label:"man artist: dark skin tone",hexcode:"1F468-1F3FF-200D-1F3A8",emoji:"👨🏿🎨",text:"",type:1,order:1274,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_artist_tone5"]}],shortCodes:["man_artist"]},{label:"woman artist",hexcode:"1F469-200D-1F3A8",tags:["artist","palette","woman"],emoji:"👩🎨",text:"",type:1,order:1275,group:1,subgroup:25,version:4,skins:[{label:"woman artist: light skin tone",hexcode:"1F469-1F3FB-200D-1F3A8",emoji:"👩🏻🎨",text:"",type:1,order:1276,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_artist_tone1"]},{label:"woman artist: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F3A8",emoji:"👩🏼🎨",text:"",type:1,order:1277,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_artist_tone2"]},{label:"woman artist: medium skin tone",hexcode:"1F469-1F3FD-200D-1F3A8",emoji:"👩🏽🎨",text:"",type:1,order:1278,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_artist_tone3"]},{label:"woman artist: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F3A8",emoji:"👩🏾🎨",text:"",type:1,order:1279,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_artist_tone4"]},{label:"woman artist: dark skin tone",hexcode:"1F469-1F3FF-200D-1F3A8",emoji:"👩🏿🎨",text:"",type:1,order:1280,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_artist_tone5"]}],shortCodes:["woman_artist"]},{label:"pilot",hexcode:"1F9D1-200D-2708-FE0F",tags:["plane"],emoji:"🧑✈️",text:"",type:1,order:1281,group:1,subgroup:25,version:12.1,skins:[{label:"pilot: light skin tone",hexcode:"1F9D1-1F3FB-200D-2708-FE0F",emoji:"🧑🏻✈️",text:"",type:1,order:1283,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["pilot_tone1"]},{label:"pilot: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-2708-FE0F",emoji:"🧑🏼✈️",text:"",type:1,order:1285,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["pilot_tone2"]},{label:"pilot: medium skin tone",hexcode:"1F9D1-1F3FD-200D-2708-FE0F",emoji:"🧑🏽✈️",text:"",type:1,order:1287,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["pilot_tone3"]},{label:"pilot: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-2708-FE0F",emoji:"🧑🏾✈️",text:"",type:1,order:1289,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["pilot_tone4"]},{label:"pilot: dark skin tone",hexcode:"1F9D1-1F3FF-200D-2708-FE0F",emoji:"🧑🏿✈️",text:"",type:1,order:1291,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["pilot_tone5"]}],shortCodes:["pilot"]},{label:"man pilot",hexcode:"1F468-200D-2708-FE0F",tags:["man","pilot","plane"],emoji:"👨✈️",text:"",type:1,order:1293,group:1,subgroup:25,version:4,skins:[{label:"man pilot: light skin tone",hexcode:"1F468-1F3FB-200D-2708-FE0F",emoji:"👨🏻✈️",text:"",type:1,order:1295,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_pilot_tone1"]},{label:"man pilot: medium-light skin tone",hexcode:"1F468-1F3FC-200D-2708-FE0F",emoji:"👨🏼✈️",text:"",type:1,order:1297,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_pilot_tone2"]},{label:"man pilot: medium skin tone",hexcode:"1F468-1F3FD-200D-2708-FE0F",emoji:"👨🏽✈️",text:"",type:1,order:1299,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_pilot_tone3"]},{label:"man pilot: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-2708-FE0F",emoji:"👨🏾✈️",text:"",type:1,order:1301,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_pilot_tone4"]},{label:"man pilot: dark skin tone",hexcode:"1F468-1F3FF-200D-2708-FE0F",emoji:"👨🏿✈️",text:"",type:1,order:1303,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_pilot_tone5"]}],shortCodes:["man_pilot"]},{label:"woman pilot",hexcode:"1F469-200D-2708-FE0F",tags:["pilot","plane","woman"],emoji:"👩✈️",text:"",type:1,order:1305,group:1,subgroup:25,version:4,skins:[{label:"woman pilot: light skin tone",hexcode:"1F469-1F3FB-200D-2708-FE0F",emoji:"👩🏻✈️",text:"",type:1,order:1307,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_pilot_tone1"]},{label:"woman pilot: medium-light skin tone",hexcode:"1F469-1F3FC-200D-2708-FE0F",emoji:"👩🏼✈️",text:"",type:1,order:1309,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_pilot_tone2"]},{label:"woman pilot: medium skin tone",hexcode:"1F469-1F3FD-200D-2708-FE0F",emoji:"👩🏽✈️",text:"",type:1,order:1311,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_pilot_tone3"]},{label:"woman pilot: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2708-FE0F",emoji:"👩🏾✈️",text:"",type:1,order:1313,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_pilot_tone4"]},{label:"woman pilot: dark skin tone",hexcode:"1F469-1F3FF-200D-2708-FE0F",emoji:"👩🏿✈️",text:"",type:1,order:1315,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_pilot_tone5"]}],shortCodes:["woman_pilot"]},{label:"astronaut",hexcode:"1F9D1-200D-1F680",tags:["rocket","space"],emoji:"🧑🚀",text:"",type:1,order:1317,group:1,subgroup:25,version:12.1,skins:[{label:"astronaut: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F680",emoji:"🧑🏻🚀",text:"",type:1,order:1318,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["astronaut_tone1"]},{label:"astronaut: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F680",emoji:"🧑🏼🚀",text:"",type:1,order:1319,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["astronaut_tone2"]},{label:"astronaut: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F680",emoji:"🧑🏽🚀",text:"",type:1,order:1320,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["astronaut_tone3"]},{label:"astronaut: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F680",emoji:"🧑🏾🚀",text:"",type:1,order:1321,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["astronaut_tone4"]},{label:"astronaut: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F680",emoji:"🧑🏿🚀",text:"",type:1,order:1322,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["astronaut_tone5"]}],shortCodes:["astronaut"]},{label:"man astronaut",hexcode:"1F468-200D-1F680",tags:["astronaut","man","rocket","space"],emoji:"👨🚀",text:"",type:1,order:1323,group:1,subgroup:25,version:4,skins:[{label:"man astronaut: light skin tone",hexcode:"1F468-1F3FB-200D-1F680",emoji:"👨🏻🚀",text:"",type:1,order:1324,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_astronaut_tone1"]},{label:"man astronaut: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F680",emoji:"👨🏼🚀",text:"",type:1,order:1325,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_astronaut_tone2"]},{label:"man astronaut: medium skin tone",hexcode:"1F468-1F3FD-200D-1F680",emoji:"👨🏽🚀",text:"",type:1,order:1326,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_astronaut_tone3"]},{label:"man astronaut: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F680",emoji:"👨🏾🚀",text:"",type:1,order:1327,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_astronaut_tone4"]},{label:"man astronaut: dark skin tone",hexcode:"1F468-1F3FF-200D-1F680",emoji:"👨🏿🚀",text:"",type:1,order:1328,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_astronaut_tone5"]}],shortCodes:["man_astronaut"]},{label:"woman astronaut",hexcode:"1F469-200D-1F680",tags:["astronaut","rocket","space","woman"],emoji:"👩🚀",text:"",type:1,order:1329,group:1,subgroup:25,version:4,skins:[{label:"woman astronaut: light skin tone",hexcode:"1F469-1F3FB-200D-1F680",emoji:"👩🏻🚀",text:"",type:1,order:1330,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_astronaut_tone1"]},{label:"woman astronaut: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F680",emoji:"👩🏼🚀",text:"",type:1,order:1331,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_astronaut_tone2"]},{label:"woman astronaut: medium skin tone",hexcode:"1F469-1F3FD-200D-1F680",emoji:"👩🏽🚀",text:"",type:1,order:1332,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_astronaut_tone3"]},{label:"woman astronaut: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F680",emoji:"👩🏾🚀",text:"",type:1,order:1333,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_astronaut_tone4"]},{label:"woman astronaut: dark skin tone",hexcode:"1F469-1F3FF-200D-1F680",emoji:"👩🏿🚀",text:"",type:1,order:1334,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_astronaut_tone5"]}],shortCodes:["woman_astronaut"]},{label:"firefighter",hexcode:"1F9D1-200D-1F692",tags:["fire","firetruck"],emoji:"🧑🚒",text:"",type:1,order:1335,group:1,subgroup:25,version:12.1,skins:[{label:"firefighter: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F692",emoji:"🧑🏻🚒",text:"",type:1,order:1336,group:1,subgroup:25,version:12.1,tone:1,shortCodes:["firefighter_tone1"]},{label:"firefighter: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F692",emoji:"🧑🏼🚒",text:"",type:1,order:1337,group:1,subgroup:25,version:12.1,tone:2,shortCodes:["firefighter_tone2"]},{label:"firefighter: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F692",emoji:"🧑🏽🚒",text:"",type:1,order:1338,group:1,subgroup:25,version:12.1,tone:3,shortCodes:["firefighter_tone3"]},{label:"firefighter: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F692",emoji:"🧑🏾🚒",text:"",type:1,order:1339,group:1,subgroup:25,version:12.1,tone:4,shortCodes:["firefighter_tone4"]},{label:"firefighter: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F692",emoji:"🧑🏿🚒",text:"",type:1,order:1340,group:1,subgroup:25,version:12.1,tone:5,shortCodes:["firefighter_tone5"]}],shortCodes:["firefighter"]},{label:"man firefighter",hexcode:"1F468-200D-1F692",tags:["fire","firefighter","firetruck","man"],emoji:"👨🚒",text:"",type:1,order:1341,group:1,subgroup:25,version:4,skins:[{label:"man firefighter: light skin tone",hexcode:"1F468-1F3FB-200D-1F692",emoji:"👨🏻🚒",text:"",type:1,order:1342,group:1,subgroup:25,version:4,tone:1,shortCodes:["man_firefighter_tone1"]},{label:"man firefighter: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F692",emoji:"👨🏼🚒",text:"",type:1,order:1343,group:1,subgroup:25,version:4,tone:2,shortCodes:["man_firefighter_tone2"]},{label:"man firefighter: medium skin tone",hexcode:"1F468-1F3FD-200D-1F692",emoji:"👨🏽🚒",text:"",type:1,order:1344,group:1,subgroup:25,version:4,tone:3,shortCodes:["man_firefighter_tone3"]},{label:"man firefighter: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F692",emoji:"👨🏾🚒",text:"",type:1,order:1345,group:1,subgroup:25,version:4,tone:4,shortCodes:["man_firefighter_tone4"]},{label:"man firefighter: dark skin tone",hexcode:"1F468-1F3FF-200D-1F692",emoji:"👨🏿🚒",text:"",type:1,order:1346,group:1,subgroup:25,version:4,tone:5,shortCodes:["man_firefighter_tone5"]}],shortCodes:["man_firefighter"]},{label:"woman firefighter",hexcode:"1F469-200D-1F692",tags:["fire","firefighter","firetruck","woman"],emoji:"👩🚒",text:"",type:1,order:1347,group:1,subgroup:25,version:4,skins:[{label:"woman firefighter: light skin tone",hexcode:"1F469-1F3FB-200D-1F692",emoji:"👩🏻🚒",text:"",type:1,order:1348,group:1,subgroup:25,version:4,tone:1,shortCodes:["woman_firefighter_tone1"]},{label:"woman firefighter: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F692",emoji:"👩🏼🚒",text:"",type:1,order:1349,group:1,subgroup:25,version:4,tone:2,shortCodes:["woman_firefighter_tone2"]},{label:"woman firefighter: medium skin tone",hexcode:"1F469-1F3FD-200D-1F692",emoji:"👩🏽🚒",text:"",type:1,order:1350,group:1,subgroup:25,version:4,tone:3,shortCodes:["woman_firefighter_tone3"]},{label:"woman firefighter: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F692",emoji:"👩🏾🚒",text:"",type:1,order:1351,group:1,subgroup:25,version:4,tone:4,shortCodes:["woman_firefighter_tone4"]},{label:"woman firefighter: dark skin tone",hexcode:"1F469-1F3FF-200D-1F692",emoji:"👩🏿🚒",text:"",type:1,order:1352,group:1,subgroup:25,version:4,tone:5,shortCodes:["woman_firefighter_tone5"]}],shortCodes:["woman_firefighter"]},{label:"police officer",hexcode:"1F46E",tags:["apprehend","arrest","citation","cop","law","officer","over","police","pulled","undercover"],emoji:"👮",text:"",type:1,order:1353,group:1,subgroup:25,version:.6,skins:[{label:"police officer: light skin tone",hexcode:"1F46E-1F3FB",emoji:"👮🏻",text:"",type:1,order:1354,group:1,subgroup:25,version:1,tone:1,shortCodes:["cop_tone1","police_officer_tone1"]},{label:"police officer: medium-light skin tone",hexcode:"1F46E-1F3FC",emoji:"👮🏼",text:"",type:1,order:1355,group:1,subgroup:25,version:1,tone:2,shortCodes:["cop_tone2","police_officer_tone2"]},{label:"police officer: medium skin tone",hexcode:"1F46E-1F3FD",emoji:"👮🏽",text:"",type:1,order:1356,group:1,subgroup:25,version:1,tone:3,shortCodes:["cop_tone3","police_officer_tone3"]},{label:"police officer: medium-dark skin tone",hexcode:"1F46E-1F3FE",emoji:"👮🏾",text:"",type:1,order:1357,group:1,subgroup:25,version:1,tone:4,shortCodes:["cop_tone4","police_officer_tone4"]},{label:"police officer: dark skin tone",hexcode:"1F46E-1F3FF",emoji:"👮🏿",text:"",type:1,order:1358,group:1,subgroup:25,version:1,tone:5,shortCodes:["cop_tone5","police_officer_tone5"]}],shortCodes:["cop","police_officer"]},{label:"man police officer",hexcode:"1F46E-200D-2642-FE0F",tags:["apprehend","arrest","citation","cop","law","man","officer","over","police","pulled","undercover"],emoji:"👮♂️",text:"",type:1,order:1359,group:1,subgroup:25,version:4,gender:1,skins:[{label:"man police officer: light skin tone",hexcode:"1F46E-1F3FB-200D-2642-FE0F",emoji:"👮🏻♂️",text:"",type:1,order:1361,group:1,subgroup:25,version:4,gender:1,tone:1,shortCodes:["man_police_officer_tone1"]},{label:"man police officer: medium-light skin tone",hexcode:"1F46E-1F3FC-200D-2642-FE0F",emoji:"👮🏼♂️",text:"",type:1,order:1363,group:1,subgroup:25,version:4,gender:1,tone:2,shortCodes:["man_police_officer_tone2"]},{label:"man police officer: medium skin tone",hexcode:"1F46E-1F3FD-200D-2642-FE0F",emoji:"👮🏽♂️",text:"",type:1,order:1365,group:1,subgroup:25,version:4,gender:1,tone:3,shortCodes:["man_police_officer_tone3"]},{label:"man police officer: medium-dark skin tone",hexcode:"1F46E-1F3FE-200D-2642-FE0F",emoji:"👮🏾♂️",text:"",type:1,order:1367,group:1,subgroup:25,version:4,gender:1,tone:4,shortCodes:["man_police_officer_tone4"]},{label:"man police officer: dark skin tone",hexcode:"1F46E-1F3FF-200D-2642-FE0F",emoji:"👮🏿♂️",text:"",type:1,order:1369,group:1,subgroup:25,version:4,gender:1,tone:5,shortCodes:["man_police_officer_tone5"]}],shortCodes:["man_police_officer"]},{label:"woman police officer",hexcode:"1F46E-200D-2640-FE0F",tags:["apprehend","arrest","citation","cop","law","officer","over","police","pulled","undercover","woman"],emoji:"👮♀️",text:"",type:1,order:1371,group:1,subgroup:25,version:4,gender:0,skins:[{label:"woman police officer: light skin tone",hexcode:"1F46E-1F3FB-200D-2640-FE0F",emoji:"👮🏻♀️",text:"",type:1,order:1373,group:1,subgroup:25,version:4,gender:0,tone:1,shortCodes:["woman_police_officer_tone1"]},{label:"woman police officer: medium-light skin tone",hexcode:"1F46E-1F3FC-200D-2640-FE0F",emoji:"👮🏼♀️",text:"",type:1,order:1375,group:1,subgroup:25,version:4,gender:0,tone:2,shortCodes:["woman_police_officer_tone2"]},{label:"woman police officer: medium skin tone",hexcode:"1F46E-1F3FD-200D-2640-FE0F",emoji:"👮🏽♀️",text:"",type:1,order:1377,group:1,subgroup:25,version:4,gender:0,tone:3,shortCodes:["woman_police_officer_tone3"]},{label:"woman police officer: medium-dark skin tone",hexcode:"1F46E-1F3FE-200D-2640-FE0F",emoji:"👮🏾♀️",text:"",type:1,order:1379,group:1,subgroup:25,version:4,gender:0,tone:4,shortCodes:["woman_police_officer_tone4"]},{label:"woman police officer: dark skin tone",hexcode:"1F46E-1F3FF-200D-2640-FE0F",emoji:"👮🏿♀️",text:"",type:1,order:1381,group:1,subgroup:25,version:4,gender:0,tone:5,shortCodes:["woman_police_officer_tone5"]}],shortCodes:["woman_police_officer"]},{label:"detective",hexcode:"1F575",tags:["sleuth","spy"],emoji:"🕵️",text:"🕵︎",type:0,order:1384,group:1,subgroup:25,version:.7,skins:[{label:"detective: light skin tone",hexcode:"1F575-1F3FB",emoji:"🕵🏻",text:"",type:1,order:1385,group:1,subgroup:25,version:2,tone:1,shortCodes:["detective_tone1"]},{label:"detective: medium-light skin tone",hexcode:"1F575-1F3FC",emoji:"🕵🏼",text:"",type:1,order:1386,group:1,subgroup:25,version:2,tone:2,shortCodes:["detective_tone2"]},{label:"detective: medium skin tone",hexcode:"1F575-1F3FD",emoji:"🕵🏽",text:"",type:1,order:1387,group:1,subgroup:25,version:2,tone:3,shortCodes:["detective_tone3"]},{label:"detective: medium-dark skin tone",hexcode:"1F575-1F3FE",emoji:"🕵🏾",text:"",type:1,order:1388,group:1,subgroup:25,version:2,tone:4,shortCodes:["detective_tone4"]},{label:"detective: dark skin tone",hexcode:"1F575-1F3FF",emoji:"🕵🏿",text:"",type:1,order:1389,group:1,subgroup:25,version:2,tone:5,shortCodes:["detective_tone5"]}],shortCodes:["detective"]},{label:"man detective",hexcode:"1F575-FE0F-200D-2642-FE0F",tags:["detective","man","sleuth","spy"],emoji:"🕵️♂️",text:"",type:1,order:1390,group:1,subgroup:25,version:4,gender:1,skins:[{label:"man detective: light skin tone",hexcode:"1F575-1F3FB-200D-2642-FE0F",emoji:"🕵🏻♂️",text:"",type:1,order:1394,group:1,subgroup:25,version:4,gender:1,tone:1,shortCodes:["man_detective_tone1"]},{label:"man detective: medium-light skin tone",hexcode:"1F575-1F3FC-200D-2642-FE0F",emoji:"🕵🏼♂️",text:"",type:1,order:1396,group:1,subgroup:25,version:4,gender:1,tone:2,shortCodes:["man_detective_tone2"]},{label:"man detective: medium skin tone",hexcode:"1F575-1F3FD-200D-2642-FE0F",emoji:"🕵🏽♂️",text:"",type:1,order:1398,group:1,subgroup:25,version:4,gender:1,tone:3,shortCodes:["man_detective_tone3"]},{label:"man detective: medium-dark skin tone",hexcode:"1F575-1F3FE-200D-2642-FE0F",emoji:"🕵🏾♂️",text:"",type:1,order:1400,group:1,subgroup:25,version:4,gender:1,tone:4,shortCodes:["man_detective_tone4"]},{label:"man detective: dark skin tone",hexcode:"1F575-1F3FF-200D-2642-FE0F",emoji:"🕵🏿♂️",text:"",type:1,order:1402,group:1,subgroup:25,version:4,gender:1,tone:5,shortCodes:["man_detective_tone5"]}],shortCodes:["man_detective"]},{label:"woman detective",hexcode:"1F575-FE0F-200D-2640-FE0F",tags:["detective","sleuth","spy","woman"],emoji:"🕵️♀️",text:"",type:1,order:1404,group:1,subgroup:25,version:4,gender:0,skins:[{label:"woman detective: light skin tone",hexcode:"1F575-1F3FB-200D-2640-FE0F",emoji:"🕵🏻♀️",text:"",type:1,order:1408,group:1,subgroup:25,version:4,gender:0,tone:1,shortCodes:["woman_detective_tone1"]},{label:"woman detective: medium-light skin tone",hexcode:"1F575-1F3FC-200D-2640-FE0F",emoji:"🕵🏼♀️",text:"",type:1,order:1410,group:1,subgroup:25,version:4,gender:0,tone:2,shortCodes:["woman_detective_tone2"]},{label:"woman detective: medium skin tone",hexcode:"1F575-1F3FD-200D-2640-FE0F",emoji:"🕵🏽♀️",text:"",type:1,order:1412,group:1,subgroup:25,version:4,gender:0,tone:3,shortCodes:["woman_detective_tone3"]},{label:"woman detective: medium-dark skin tone",hexcode:"1F575-1F3FE-200D-2640-FE0F",emoji:"🕵🏾♀️",text:"",type:1,order:1414,group:1,subgroup:25,version:4,gender:0,tone:4,shortCodes:["woman_detective_tone4"]},{label:"woman detective: dark skin tone",hexcode:"1F575-1F3FF-200D-2640-FE0F",emoji:"🕵🏿♀️",text:"",type:1,order:1416,group:1,subgroup:25,version:4,gender:0,tone:5,shortCodes:["woman_detective_tone5"]}],shortCodes:["woman_detective"]},{label:"guard",hexcode:"1F482",tags:["buckingham","helmet","london","palace"],emoji:"💂",text:"",type:1,order:1418,group:1,subgroup:25,version:.6,skins:[{label:"guard: light skin tone",hexcode:"1F482-1F3FB",emoji:"💂🏻",text:"",type:1,order:1419,group:1,subgroup:25,version:1,tone:1,shortCodes:["guard_tone1"]},{label:"guard: medium-light skin tone",hexcode:"1F482-1F3FC",emoji:"💂🏼",text:"",type:1,order:1420,group:1,subgroup:25,version:1,tone:2,shortCodes:["guard_tone2"]},{label:"guard: medium skin tone",hexcode:"1F482-1F3FD",emoji:"💂🏽",text:"",type:1,order:1421,group:1,subgroup:25,version:1,tone:3,shortCodes:["guard_tone3"]},{label:"guard: medium-dark skin tone",hexcode:"1F482-1F3FE",emoji:"💂🏾",text:"",type:1,order:1422,group:1,subgroup:25,version:1,tone:4,shortCodes:["guard_tone4"]},{label:"guard: dark skin tone",hexcode:"1F482-1F3FF",emoji:"💂🏿",text:"",type:1,order:1423,group:1,subgroup:25,version:1,tone:5,shortCodes:["guard_tone5"]}],shortCodes:["guard"]},{label:"man guard",hexcode:"1F482-200D-2642-FE0F",tags:["buckingham","guard","helmet","london","man","palace"],emoji:"💂♂️",text:"",type:1,order:1424,group:1,subgroup:25,version:4,gender:1,skins:[{label:"man guard: light skin tone",hexcode:"1F482-1F3FB-200D-2642-FE0F",emoji:"💂🏻♂️",text:"",type:1,order:1426,group:1,subgroup:25,version:4,gender:1,tone:1,shortCodes:["man_guard_tone1"]},{label:"man guard: medium-light skin tone",hexcode:"1F482-1F3FC-200D-2642-FE0F",emoji:"💂🏼♂️",text:"",type:1,order:1428,group:1,subgroup:25,version:4,gender:1,tone:2,shortCodes:["man_guard_tone2"]},{label:"man guard: medium skin tone",hexcode:"1F482-1F3FD-200D-2642-FE0F",emoji:"💂🏽♂️",text:"",type:1,order:1430,group:1,subgroup:25,version:4,gender:1,tone:3,shortCodes:["man_guard_tone3"]},{label:"man guard: medium-dark skin tone",hexcode:"1F482-1F3FE-200D-2642-FE0F",emoji:"💂🏾♂️",text:"",type:1,order:1432,group:1,subgroup:25,version:4,gender:1,tone:4,shortCodes:["man_guard_tone4"]},{label:"man guard: dark skin tone",hexcode:"1F482-1F3FF-200D-2642-FE0F",emoji:"💂🏿♂️",text:"",type:1,order:1434,group:1,subgroup:25,version:4,gender:1,tone:5,shortCodes:["man_guard_tone5"]}],shortCodes:["man_guard"]},{label:"woman guard",hexcode:"1F482-200D-2640-FE0F",tags:["buckingham","guard","helmet","london","palace","woman"],emoji:"💂♀️",text:"",type:1,order:1436,group:1,subgroup:25,version:4,gender:0,skins:[{label:"woman guard: light skin tone",hexcode:"1F482-1F3FB-200D-2640-FE0F",emoji:"💂🏻♀️",text:"",type:1,order:1438,group:1,subgroup:25,version:4,gender:0,tone:1,shortCodes:["woman_guard_tone1"]},{label:"woman guard: medium-light skin tone",hexcode:"1F482-1F3FC-200D-2640-FE0F",emoji:"💂🏼♀️",text:"",type:1,order:1440,group:1,subgroup:25,version:4,gender:0,tone:2,shortCodes:["woman_guard_tone2"]},{label:"woman guard: medium skin tone",hexcode:"1F482-1F3FD-200D-2640-FE0F",emoji:"💂🏽♀️",text:"",type:1,order:1442,group:1,subgroup:25,version:4,gender:0,tone:3,shortCodes:["woman_guard_tone3"]},{label:"woman guard: medium-dark skin tone",hexcode:"1F482-1F3FE-200D-2640-FE0F",emoji:"💂🏾♀️",text:"",type:1,order:1444,group:1,subgroup:25,version:4,gender:0,tone:4,shortCodes:["woman_guard_tone4"]},{label:"woman guard: dark skin tone",hexcode:"1F482-1F3FF-200D-2640-FE0F",emoji:"💂🏿♀️",text:"",type:1,order:1446,group:1,subgroup:25,version:4,gender:0,tone:5,shortCodes:["woman_guard_tone5"]}],shortCodes:["woman_guard"]},{label:"ninja",hexcode:"1F977",tags:["assassin","fight","fighter","hidden","person","secret","skills","sly","soldier","stealth","war"],emoji:"🥷",text:"",type:1,order:1448,group:1,subgroup:25,version:13,skins:[{label:"ninja: light skin tone",hexcode:"1F977-1F3FB",emoji:"🥷🏻",text:"",type:1,order:1449,group:1,subgroup:25,version:13,tone:1,shortCodes:["ninja_tone1"]},{label:"ninja: medium-light skin tone",hexcode:"1F977-1F3FC",emoji:"🥷🏼",text:"",type:1,order:1450,group:1,subgroup:25,version:13,tone:2,shortCodes:["ninja_tone2"]},{label:"ninja: medium skin tone",hexcode:"1F977-1F3FD",emoji:"🥷🏽",text:"",type:1,order:1451,group:1,subgroup:25,version:13,tone:3,shortCodes:["ninja_tone3"]},{label:"ninja: medium-dark skin tone",hexcode:"1F977-1F3FE",emoji:"🥷🏾",text:"",type:1,order:1452,group:1,subgroup:25,version:13,tone:4,shortCodes:["ninja_tone4"]},{label:"ninja: dark skin tone",hexcode:"1F977-1F3FF",emoji:"🥷🏿",text:"",type:1,order:1453,group:1,subgroup:25,version:13,tone:5,shortCodes:["ninja_tone5"]}],shortCodes:["ninja"]},{label:"construction worker",hexcode:"1F477",tags:["build","construction","fix","hardhat","hat","man","person","rebuild","remodel","repair","work","worker"],emoji:"👷",text:"",type:1,order:1454,group:1,subgroup:25,version:.6,skins:[{label:"construction worker: light skin tone",hexcode:"1F477-1F3FB",emoji:"👷🏻",text:"",type:1,order:1455,group:1,subgroup:25,version:1,tone:1,shortCodes:["construction_worker_tone1"]},{label:"construction worker: medium-light skin tone",hexcode:"1F477-1F3FC",emoji:"👷🏼",text:"",type:1,order:1456,group:1,subgroup:25,version:1,tone:2,shortCodes:["construction_worker_tone2"]},{label:"construction worker: medium skin tone",hexcode:"1F477-1F3FD",emoji:"👷🏽",text:"",type:1,order:1457,group:1,subgroup:25,version:1,tone:3,shortCodes:["construction_worker_tone3"]},{label:"construction worker: medium-dark skin tone",hexcode:"1F477-1F3FE",emoji:"👷🏾",text:"",type:1,order:1458,group:1,subgroup:25,version:1,tone:4,shortCodes:["construction_worker_tone4"]},{label:"construction worker: dark skin tone",hexcode:"1F477-1F3FF",emoji:"👷🏿",text:"",type:1,order:1459,group:1,subgroup:25,version:1,tone:5,shortCodes:["construction_worker_tone5"]}],shortCodes:["construction_worker"]},{label:"man construction worker",hexcode:"1F477-200D-2642-FE0F",tags:["build","construction","fix","hardhat","hat","man","rebuild","remodel","repair","work","worker"],emoji:"👷♂️",text:"",type:1,order:1460,group:1,subgroup:25,version:4,gender:1,skins:[{label:"man construction worker: light skin tone",hexcode:"1F477-1F3FB-200D-2642-FE0F",emoji:"👷🏻♂️",text:"",type:1,order:1462,group:1,subgroup:25,version:4,gender:1,tone:1,shortCodes:["man_construction_worker_tone1"]},{label:"man construction worker: medium-light skin tone",hexcode:"1F477-1F3FC-200D-2642-FE0F",emoji:"👷🏼♂️",text:"",type:1,order:1464,group:1,subgroup:25,version:4,gender:1,tone:2,shortCodes:["man_construction_worker_tone2"]},{label:"man construction worker: medium skin tone",hexcode:"1F477-1F3FD-200D-2642-FE0F",emoji:"👷🏽♂️",text:"",type:1,order:1466,group:1,subgroup:25,version:4,gender:1,tone:3,shortCodes:["man_construction_worker_tone3"]},{label:"man construction worker: medium-dark skin tone",hexcode:"1F477-1F3FE-200D-2642-FE0F",emoji:"👷🏾♂️",text:"",type:1,order:1468,group:1,subgroup:25,version:4,gender:1,tone:4,shortCodes:["man_construction_worker_tone4"]},{label:"man construction worker: dark skin tone",hexcode:"1F477-1F3FF-200D-2642-FE0F",emoji:"👷🏿♂️",text:"",type:1,order:1470,group:1,subgroup:25,version:4,gender:1,tone:5,shortCodes:["man_construction_worker_tone5"]}],shortCodes:["man_construction_worker"]},{label:"woman construction worker",hexcode:"1F477-200D-2640-FE0F",tags:["build","construction","fix","hardhat","hat","man","rebuild","remodel","repair","woman","work","worker"],emoji:"👷♀️",text:"",type:1,order:1472,group:1,subgroup:25,version:4,gender:0,skins:[{label:"woman construction worker: light skin tone",hexcode:"1F477-1F3FB-200D-2640-FE0F",emoji:"👷🏻♀️",text:"",type:1,order:1474,group:1,subgroup:25,version:4,gender:0,tone:1,shortCodes:["woman_construction_worker_tone1"]},{label:"woman construction worker: medium-light skin tone",hexcode:"1F477-1F3FC-200D-2640-FE0F",emoji:"👷🏼♀️",text:"",type:1,order:1476,group:1,subgroup:25,version:4,gender:0,tone:2,shortCodes:["woman_construction_worker_tone2"]},{label:"woman construction worker: medium skin tone",hexcode:"1F477-1F3FD-200D-2640-FE0F",emoji:"👷🏽♀️",text:"",type:1,order:1478,group:1,subgroup:25,version:4,gender:0,tone:3,shortCodes:["woman_construction_worker_tone3"]},{label:"woman construction worker: medium-dark skin tone",hexcode:"1F477-1F3FE-200D-2640-FE0F",emoji:"👷🏾♀️",text:"",type:1,order:1480,group:1,subgroup:25,version:4,gender:0,tone:4,shortCodes:["woman_construction_worker_tone4"]},{label:"woman construction worker: dark skin tone",hexcode:"1F477-1F3FF-200D-2640-FE0F",emoji:"👷🏿♀️",text:"",type:1,order:1482,group:1,subgroup:25,version:4,gender:0,tone:5,shortCodes:["woman_construction_worker_tone5"]}],shortCodes:["woman_construction_worker"]},{label:"person with crown",hexcode:"1FAC5",tags:["crown","monarch","noble","person","regal","royal","royalty"],emoji:"🫅",text:"",type:1,order:1484,group:1,subgroup:25,version:14,skins:[{label:"person with crown: light skin tone",hexcode:"1FAC5-1F3FB",emoji:"🫅🏻",text:"",type:1,order:1485,group:1,subgroup:25,version:14,tone:1,shortCodes:["person_with_crown_tone1","royalty_tone1"]},{label:"person with crown: medium-light skin tone",hexcode:"1FAC5-1F3FC",emoji:"🫅🏼",text:"",type:1,order:1486,group:1,subgroup:25,version:14,tone:2,shortCodes:["person_with_crown_tone2","royalty_tone2"]},{label:"person with crown: medium skin tone",hexcode:"1FAC5-1F3FD",emoji:"🫅🏽",text:"",type:1,order:1487,group:1,subgroup:25,version:14,tone:3,shortCodes:["person_with_crown_tone3","royalty_tone3"]},{label:"person with crown: medium-dark skin tone",hexcode:"1FAC5-1F3FE",emoji:"🫅🏾",text:"",type:1,order:1488,group:1,subgroup:25,version:14,tone:4,shortCodes:["person_with_crown_tone4","royalty_tone4"]},{label:"person with crown: dark skin tone",hexcode:"1FAC5-1F3FF",emoji:"🫅🏿",text:"",type:1,order:1489,group:1,subgroup:25,version:14,tone:5,shortCodes:["person_with_crown_tone5","royalty_tone5"]}],shortCodes:["person_with_crown","royalty"]},{label:"prince",hexcode:"1F934",tags:["crown","fairy","fairytale","fantasy","king","royal","royalty","tale"],emoji:"🤴",text:"",type:1,order:1490,group:1,subgroup:25,version:3,skins:[{label:"prince: light skin tone",hexcode:"1F934-1F3FB",emoji:"🤴🏻",text:"",type:1,order:1491,group:1,subgroup:25,version:3,tone:1,shortCodes:["prince_tone1"]},{label:"prince: medium-light skin tone",hexcode:"1F934-1F3FC",emoji:"🤴🏼",text:"",type:1,order:1492,group:1,subgroup:25,version:3,tone:2,shortCodes:["prince_tone2"]},{label:"prince: medium skin tone",hexcode:"1F934-1F3FD",emoji:"🤴🏽",text:"",type:1,order:1493,group:1,subgroup:25,version:3,tone:3,shortCodes:["prince_tone3"]},{label:"prince: medium-dark skin tone",hexcode:"1F934-1F3FE",emoji:"🤴🏾",text:"",type:1,order:1494,group:1,subgroup:25,version:3,tone:4,shortCodes:["prince_tone4"]},{label:"prince: dark skin tone",hexcode:"1F934-1F3FF",emoji:"🤴🏿",text:"",type:1,order:1495,group:1,subgroup:25,version:3,tone:5,shortCodes:["prince_tone5"]}],shortCodes:["prince"]},{label:"princess",hexcode:"1F478",tags:["crown","fairy","fairytale","fantasy","queen","royal","royalty","tale"],emoji:"👸",text:"",type:1,order:1496,group:1,subgroup:25,version:.6,skins:[{label:"princess: light skin tone",hexcode:"1F478-1F3FB",emoji:"👸🏻",text:"",type:1,order:1497,group:1,subgroup:25,version:1,tone:1,shortCodes:["princess_tone1"]},{label:"princess: medium-light skin tone",hexcode:"1F478-1F3FC",emoji:"👸🏼",text:"",type:1,order:1498,group:1,subgroup:25,version:1,tone:2,shortCodes:["princess_tone2"]},{label:"princess: medium skin tone",hexcode:"1F478-1F3FD",emoji:"👸🏽",text:"",type:1,order:1499,group:1,subgroup:25,version:1,tone:3,shortCodes:["princess_tone3"]},{label:"princess: medium-dark skin tone",hexcode:"1F478-1F3FE",emoji:"👸🏾",text:"",type:1,order:1500,group:1,subgroup:25,version:1,tone:4,shortCodes:["princess_tone4"]},{label:"princess: dark skin tone",hexcode:"1F478-1F3FF",emoji:"👸🏿",text:"",type:1,order:1501,group:1,subgroup:25,version:1,tone:5,shortCodes:["princess_tone5"]}],shortCodes:["princess"]},{label:"person wearing turban",hexcode:"1F473",tags:["person","turban","wearing"],emoji:"👳",text:"",type:1,order:1502,group:1,subgroup:25,version:.6,skins:[{label:"person wearing turban: light skin tone",hexcode:"1F473-1F3FB",emoji:"👳🏻",text:"",type:1,order:1503,group:1,subgroup:25,version:1,tone:1,shortCodes:["person_wearing_turban_tone1"]},{label:"person wearing turban: medium-light skin tone",hexcode:"1F473-1F3FC",emoji:"👳🏼",text:"",type:1,order:1504,group:1,subgroup:25,version:1,tone:2,shortCodes:["person_wearing_turban_tone2"]},{label:"person wearing turban: medium skin tone",hexcode:"1F473-1F3FD",emoji:"👳🏽",text:"",type:1,order:1505,group:1,subgroup:25,version:1,tone:3,shortCodes:["person_wearing_turban_tone3"]},{label:"person wearing turban: medium-dark skin tone",hexcode:"1F473-1F3FE",emoji:"👳🏾",text:"",type:1,order:1506,group:1,subgroup:25,version:1,tone:4,shortCodes:["person_wearing_turban_tone4"]},{label:"person wearing turban: dark skin tone",hexcode:"1F473-1F3FF",emoji:"👳🏿",text:"",type:1,order:1507,group:1,subgroup:25,version:1,tone:5,shortCodes:["person_wearing_turban_tone5"]}],shortCodes:["person_wearing_turban"]},{label:"man wearing turban",hexcode:"1F473-200D-2642-FE0F",tags:["man","turban","wearing"],emoji:"👳♂️",text:"",type:1,order:1508,group:1,subgroup:25,version:4,gender:1,skins:[{label:"man wearing turban: light skin tone",hexcode:"1F473-1F3FB-200D-2642-FE0F",emoji:"👳🏻♂️",text:"",type:1,order:1510,group:1,subgroup:25,version:4,gender:1,tone:1,shortCodes:["man_wearing_turban_tone1"]},{label:"man wearing turban: medium-light skin tone",hexcode:"1F473-1F3FC-200D-2642-FE0F",emoji:"👳🏼♂️",text:"",type:1,order:1512,group:1,subgroup:25,version:4,gender:1,tone:2,shortCodes:["man_wearing_turban_tone2"]},{label:"man wearing turban: medium skin tone",hexcode:"1F473-1F3FD-200D-2642-FE0F",emoji:"👳🏽♂️",text:"",type:1,order:1514,group:1,subgroup:25,version:4,gender:1,tone:3,shortCodes:["man_wearing_turban_tone3"]},{label:"man wearing turban: medium-dark skin tone",hexcode:"1F473-1F3FE-200D-2642-FE0F",emoji:"👳🏾♂️",text:"",type:1,order:1516,group:1,subgroup:25,version:4,gender:1,tone:4,shortCodes:["man_wearing_turban_tone4"]},{label:"man wearing turban: dark skin tone",hexcode:"1F473-1F3FF-200D-2642-FE0F",emoji:"👳🏿♂️",text:"",type:1,order:1518,group:1,subgroup:25,version:4,gender:1,tone:5,shortCodes:["man_wearing_turban_tone5"]}],shortCodes:["man_wearing_turban"]},{label:"woman wearing turban",hexcode:"1F473-200D-2640-FE0F",tags:["turban","wearing","woman"],emoji:"👳♀️",text:"",type:1,order:1520,group:1,subgroup:25,version:4,gender:0,skins:[{label:"woman wearing turban: light skin tone",hexcode:"1F473-1F3FB-200D-2640-FE0F",emoji:"👳🏻♀️",text:"",type:1,order:1522,group:1,subgroup:25,version:4,gender:0,tone:1,shortCodes:["woman_wearing_turban_tone1"]},{label:"woman wearing turban: medium-light skin tone",hexcode:"1F473-1F3FC-200D-2640-FE0F",emoji:"👳🏼♀️",text:"",type:1,order:1524,group:1,subgroup:25,version:4,gender:0,tone:2,shortCodes:["woman_wearing_turban_tone2"]},{label:"woman wearing turban: medium skin tone",hexcode:"1F473-1F3FD-200D-2640-FE0F",emoji:"👳🏽♀️",text:"",type:1,order:1526,group:1,subgroup:25,version:4,gender:0,tone:3,shortCodes:["woman_wearing_turban_tone3"]},{label:"woman wearing turban: medium-dark skin tone",hexcode:"1F473-1F3FE-200D-2640-FE0F",emoji:"👳🏾♀️",text:"",type:1,order:1528,group:1,subgroup:25,version:4,gender:0,tone:4,shortCodes:["woman_wearing_turban_tone4"]},{label:"woman wearing turban: dark skin tone",hexcode:"1F473-1F3FF-200D-2640-FE0F",emoji:"👳🏿♀️",text:"",type:1,order:1530,group:1,subgroup:25,version:4,gender:0,tone:5,shortCodes:["woman_wearing_turban_tone5"]}],shortCodes:["woman_wearing_turban"]},{label:"person with skullcap",hexcode:"1F472",tags:["cap","chinese","gua","guapi","hat","mao","person","pi","skullcap"],emoji:"👲",text:"",type:1,order:1532,group:1,subgroup:25,version:.6,skins:[{label:"person with skullcap: light skin tone",hexcode:"1F472-1F3FB",emoji:"👲🏻",text:"",type:1,order:1533,group:1,subgroup:25,version:1,tone:1,shortCodes:["person_with_skullcap_tone1"]},{label:"person with skullcap: medium-light skin tone",hexcode:"1F472-1F3FC",emoji:"👲🏼",text:"",type:1,order:1534,group:1,subgroup:25,version:1,tone:2,shortCodes:["person_with_skullcap_tone2"]},{label:"person with skullcap: medium skin tone",hexcode:"1F472-1F3FD",emoji:"👲🏽",text:"",type:1,order:1535,group:1,subgroup:25,version:1,tone:3,shortCodes:["person_with_skullcap_tone3"]},{label:"person with skullcap: medium-dark skin tone",hexcode:"1F472-1F3FE",emoji:"👲🏾",text:"",type:1,order:1536,group:1,subgroup:25,version:1,tone:4,shortCodes:["person_with_skullcap_tone4"]},{label:"person with skullcap: dark skin tone",hexcode:"1F472-1F3FF",emoji:"👲🏿",text:"",type:1,order:1537,group:1,subgroup:25,version:1,tone:5,shortCodes:["person_with_skullcap_tone5"]}],shortCodes:["person_with_skullcap"]},{label:"woman with headscarf",hexcode:"1F9D5",tags:["bandana","head","headscarf","hijab","kerchief","mantilla","tichel","woman"],emoji:"🧕",text:"",type:1,order:1538,group:1,subgroup:25,version:5,skins:[{label:"woman with headscarf: light skin tone",hexcode:"1F9D5-1F3FB",emoji:"🧕🏻",text:"",type:1,order:1539,group:1,subgroup:25,version:5,tone:1,shortCodes:["woman_with_headscarf_tone1"]},{label:"woman with headscarf: medium-light skin tone",hexcode:"1F9D5-1F3FC",emoji:"🧕🏼",text:"",type:1,order:1540,group:1,subgroup:25,version:5,tone:2,shortCodes:["woman_with_headscarf_tone2"]},{label:"woman with headscarf: medium skin tone",hexcode:"1F9D5-1F3FD",emoji:"🧕🏽",text:"",type:1,order:1541,group:1,subgroup:25,version:5,tone:3,shortCodes:["woman_with_headscarf_tone3"]},{label:"woman with headscarf: medium-dark skin tone",hexcode:"1F9D5-1F3FE",emoji:"🧕🏾",text:"",type:1,order:1542,group:1,subgroup:25,version:5,tone:4,shortCodes:["woman_with_headscarf_tone4"]},{label:"woman with headscarf: dark skin tone",hexcode:"1F9D5-1F3FF",emoji:"🧕🏿",text:"",type:1,order:1543,group:1,subgroup:25,version:5,tone:5,shortCodes:["woman_with_headscarf_tone5"]}],shortCodes:["woman_with_headscarf"]},{label:"person in tuxedo",hexcode:"1F935",tags:["formal","person","tuxedo","wedding"],emoji:"🤵",text:"",type:1,order:1544,group:1,subgroup:25,version:3,skins:[{label:"person in tuxedo: light skin tone",hexcode:"1F935-1F3FB",emoji:"🤵🏻",text:"",type:1,order:1545,group:1,subgroup:25,version:3,tone:1,shortCodes:["person_in_tuxedo_tone1"]},{label:"person in tuxedo: medium-light skin tone",hexcode:"1F935-1F3FC",emoji:"🤵🏼",text:"",type:1,order:1546,group:1,subgroup:25,version:3,tone:2,shortCodes:["person_in_tuxedo_tone2"]},{label:"person in tuxedo: medium skin tone",hexcode:"1F935-1F3FD",emoji:"🤵🏽",text:"",type:1,order:1547,group:1,subgroup:25,version:3,tone:3,shortCodes:["person_in_tuxedo_tone3"]},{label:"person in tuxedo: medium-dark skin tone",hexcode:"1F935-1F3FE",emoji:"🤵🏾",text:"",type:1,order:1548,group:1,subgroup:25,version:3,tone:4,shortCodes:["person_in_tuxedo_tone4"]},{label:"person in tuxedo: dark skin tone",hexcode:"1F935-1F3FF",emoji:"🤵🏿",text:"",type:1,order:1549,group:1,subgroup:25,version:3,tone:5,shortCodes:["person_in_tuxedo_tone5"]}],shortCodes:["person_in_tuxedo"]},{label:"man in tuxedo",hexcode:"1F935-200D-2642-FE0F",tags:["formal","groom","man","tuxedo","wedding"],emoji:"🤵♂️",text:"",type:1,order:1550,group:1,subgroup:25,version:13,gender:1,skins:[{label:"man in tuxedo: light skin tone",hexcode:"1F935-1F3FB-200D-2642-FE0F",emoji:"🤵🏻♂️",text:"",type:1,order:1552,group:1,subgroup:25,version:13,gender:1,tone:1,shortCodes:["man_in_tuxedo_tone1"]},{label:"man in tuxedo: medium-light skin tone",hexcode:"1F935-1F3FC-200D-2642-FE0F",emoji:"🤵🏼♂️",text:"",type:1,order:1554,group:1,subgroup:25,version:13,gender:1,tone:2,shortCodes:["man_in_tuxedo_tone2"]},{label:"man in tuxedo: medium skin tone",hexcode:"1F935-1F3FD-200D-2642-FE0F",emoji:"🤵🏽♂️",text:"",type:1,order:1556,group:1,subgroup:25,version:13,gender:1,tone:3,shortCodes:["man_in_tuxedo_tone3"]},{label:"man in tuxedo: medium-dark skin tone",hexcode:"1F935-1F3FE-200D-2642-FE0F",emoji:"🤵🏾♂️",text:"",type:1,order:1558,group:1,subgroup:25,version:13,gender:1,tone:4,shortCodes:["man_in_tuxedo_tone4"]},{label:"man in tuxedo: dark skin tone",hexcode:"1F935-1F3FF-200D-2642-FE0F",emoji:"🤵🏿♂️",text:"",type:1,order:1560,group:1,subgroup:25,version:13,gender:1,tone:5,shortCodes:["man_in_tuxedo_tone5"]}],shortCodes:["man_in_tuxedo"]},{label:"woman in tuxedo",hexcode:"1F935-200D-2640-FE0F",tags:["formal","tuxedo","wedding","woman"],emoji:"🤵♀️",text:"",type:1,order:1562,group:1,subgroup:25,version:13,gender:0,skins:[{label:"woman in tuxedo: light skin tone",hexcode:"1F935-1F3FB-200D-2640-FE0F",emoji:"🤵🏻♀️",text:"",type:1,order:1564,group:1,subgroup:25,version:13,gender:0,tone:1,shortCodes:["woman_in_tuxedo_tone1"]},{label:"woman in tuxedo: medium-light skin tone",hexcode:"1F935-1F3FC-200D-2640-FE0F",emoji:"🤵🏼♀️",text:"",type:1,order:1566,group:1,subgroup:25,version:13,gender:0,tone:2,shortCodes:["woman_in_tuxedo_tone2"]},{label:"woman in tuxedo: medium skin tone",hexcode:"1F935-1F3FD-200D-2640-FE0F",emoji:"🤵🏽♀️",text:"",type:1,order:1568,group:1,subgroup:25,version:13,gender:0,tone:3,shortCodes:["woman_in_tuxedo_tone3"]},{label:"woman in tuxedo: medium-dark skin tone",hexcode:"1F935-1F3FE-200D-2640-FE0F",emoji:"🤵🏾♀️",text:"",type:1,order:1570,group:1,subgroup:25,version:13,gender:0,tone:4,shortCodes:["woman_in_tuxedo_tone4"]},{label:"woman in tuxedo: dark skin tone",hexcode:"1F935-1F3FF-200D-2640-FE0F",emoji:"🤵🏿♀️",text:"",type:1,order:1572,group:1,subgroup:25,version:13,gender:0,tone:5,shortCodes:["woman_in_tuxedo_tone5"]}],shortCodes:["woman_in_tuxedo"]},{label:"person with veil",hexcode:"1F470",tags:["person","veil","wedding"],emoji:"👰",text:"",type:1,order:1574,group:1,subgroup:25,version:.6,skins:[{label:"person with veil: light skin tone",hexcode:"1F470-1F3FB",emoji:"👰🏻",text:"",type:1,order:1575,group:1,subgroup:25,version:1,tone:1,shortCodes:["person_with_veil_tone1"]},{label:"person with veil: medium-light skin tone",hexcode:"1F470-1F3FC",emoji:"👰🏼",text:"",type:1,order:1576,group:1,subgroup:25,version:1,tone:2,shortCodes:["person_with_veil_tone2"]},{label:"person with veil: medium skin tone",hexcode:"1F470-1F3FD",emoji:"👰🏽",text:"",type:1,order:1577,group:1,subgroup:25,version:1,tone:3,shortCodes:["person_with_veil_tone3"]},{label:"person with veil: medium-dark skin tone",hexcode:"1F470-1F3FE",emoji:"👰🏾",text:"",type:1,order:1578,group:1,subgroup:25,version:1,tone:4,shortCodes:["person_with_veil_tone4"]},{label:"person with veil: dark skin tone",hexcode:"1F470-1F3FF",emoji:"👰🏿",text:"",type:1,order:1579,group:1,subgroup:25,version:1,tone:5,shortCodes:["person_with_veil_tone5"]}],shortCodes:["person_with_veil"]},{label:"man with veil",hexcode:"1F470-200D-2642-FE0F",tags:["man","veil","wedding"],emoji:"👰♂️",text:"",type:1,order:1580,group:1,subgroup:25,version:13,gender:1,skins:[{label:"man with veil: light skin tone",hexcode:"1F470-1F3FB-200D-2642-FE0F",emoji:"👰🏻♂️",text:"",type:1,order:1582,group:1,subgroup:25,version:13,gender:1,tone:1,shortCodes:["man_with_veil_tone1"]},{label:"man with veil: medium-light skin tone",hexcode:"1F470-1F3FC-200D-2642-FE0F",emoji:"👰🏼♂️",text:"",type:1,order:1584,group:1,subgroup:25,version:13,gender:1,tone:2,shortCodes:["man_with_veil_tone2"]},{label:"man with veil: medium skin tone",hexcode:"1F470-1F3FD-200D-2642-FE0F",emoji:"👰🏽♂️",text:"",type:1,order:1586,group:1,subgroup:25,version:13,gender:1,tone:3,shortCodes:["man_with_veil_tone3"]},{label:"man with veil: medium-dark skin tone",hexcode:"1F470-1F3FE-200D-2642-FE0F",emoji:"👰🏾♂️",text:"",type:1,order:1588,group:1,subgroup:25,version:13,gender:1,tone:4,shortCodes:["man_with_veil_tone4"]},{label:"man with veil: dark skin tone",hexcode:"1F470-1F3FF-200D-2642-FE0F",emoji:"👰🏿♂️",text:"",type:1,order:1590,group:1,subgroup:25,version:13,gender:1,tone:5,shortCodes:["man_with_veil_tone5"]}],shortCodes:["man_with_veil"]},{label:"woman with veil",hexcode:"1F470-200D-2640-FE0F",tags:["bride","veil","wedding","woman"],emoji:"👰♀️",text:"",type:1,order:1592,group:1,subgroup:25,version:13,gender:0,skins:[{label:"woman with veil: light skin tone",hexcode:"1F470-1F3FB-200D-2640-FE0F",emoji:"👰🏻♀️",text:"",type:1,order:1594,group:1,subgroup:25,version:13,gender:0,tone:1,shortCodes:["woman_with_veil_tone1"]},{label:"woman with veil: medium-light skin tone",hexcode:"1F470-1F3FC-200D-2640-FE0F",emoji:"👰🏼♀️",text:"",type:1,order:1596,group:1,subgroup:25,version:13,gender:0,tone:2,shortCodes:["woman_with_veil_tone2"]},{label:"woman with veil: medium skin tone",hexcode:"1F470-1F3FD-200D-2640-FE0F",emoji:"👰🏽♀️",text:"",type:1,order:1598,group:1,subgroup:25,version:13,gender:0,tone:3,shortCodes:["woman_with_veil_tone3"]},{label:"woman with veil: medium-dark skin tone",hexcode:"1F470-1F3FE-200D-2640-FE0F",emoji:"👰🏾♀️",text:"",type:1,order:1600,group:1,subgroup:25,version:13,gender:0,tone:4,shortCodes:["woman_with_veil_tone4"]},{label:"woman with veil: dark skin tone",hexcode:"1F470-1F3FF-200D-2640-FE0F",emoji:"👰🏿♀️",text:"",type:1,order:1602,group:1,subgroup:25,version:13,gender:0,tone:5,shortCodes:["woman_with_veil_tone5"]}],shortCodes:["woman_with_veil"]},{label:"pregnant woman",hexcode:"1F930",tags:["pregnant","woman"],emoji:"🤰",text:"",type:1,order:1604,group:1,subgroup:25,version:3,skins:[{label:"pregnant woman: light skin tone",hexcode:"1F930-1F3FB",emoji:"🤰🏻",text:"",type:1,order:1605,group:1,subgroup:25,version:3,tone:1,shortCodes:["pregnant_woman_tone1"]},{label:"pregnant woman: medium-light skin tone",hexcode:"1F930-1F3FC",emoji:"🤰🏼",text:"",type:1,order:1606,group:1,subgroup:25,version:3,tone:2,shortCodes:["pregnant_woman_tone2"]},{label:"pregnant woman: medium skin tone",hexcode:"1F930-1F3FD",emoji:"🤰🏽",text:"",type:1,order:1607,group:1,subgroup:25,version:3,tone:3,shortCodes:["pregnant_woman_tone3"]},{label:"pregnant woman: medium-dark skin tone",hexcode:"1F930-1F3FE",emoji:"🤰🏾",text:"",type:1,order:1608,group:1,subgroup:25,version:3,tone:4,shortCodes:["pregnant_woman_tone4"]},{label:"pregnant woman: dark skin tone",hexcode:"1F930-1F3FF",emoji:"🤰🏿",text:"",type:1,order:1609,group:1,subgroup:25,version:3,tone:5,shortCodes:["pregnant_woman_tone5"]}],shortCodes:["pregnant_woman"]},{label:"pregnant man",hexcode:"1FAC3",tags:["belly","bloated","full","man","overeat","pregnant"],emoji:"🫃",text:"",type:1,order:1610,group:1,subgroup:25,version:14,skins:[{label:"pregnant man: light skin tone",hexcode:"1FAC3-1F3FB",emoji:"🫃🏻",text:"",type:1,order:1611,group:1,subgroup:25,version:14,tone:1,shortCodes:["pregnant_man_tone1"]},{label:"pregnant man: medium-light skin tone",hexcode:"1FAC3-1F3FC",emoji:"🫃🏼",text:"",type:1,order:1612,group:1,subgroup:25,version:14,tone:2,shortCodes:["pregnant_man_tone2"]},{label:"pregnant man: medium skin tone",hexcode:"1FAC3-1F3FD",emoji:"🫃🏽",text:"",type:1,order:1613,group:1,subgroup:25,version:14,tone:3,shortCodes:["pregnant_man_tone3"]},{label:"pregnant man: medium-dark skin tone",hexcode:"1FAC3-1F3FE",emoji:"🫃🏾",text:"",type:1,order:1614,group:1,subgroup:25,version:14,tone:4,shortCodes:["pregnant_man_tone4"]},{label:"pregnant man: dark skin tone",hexcode:"1FAC3-1F3FF",emoji:"🫃🏿",text:"",type:1,order:1615,group:1,subgroup:25,version:14,tone:5,shortCodes:["pregnant_man_tone5"]}],shortCodes:["pregnant_man"]},{label:"pregnant person",hexcode:"1FAC4",tags:["belly","bloated","full","overeat","person","pregnant","stuffed"],emoji:"🫄",text:"",type:1,order:1616,group:1,subgroup:25,version:14,skins:[{label:"pregnant person: light skin tone",hexcode:"1FAC4-1F3FB",emoji:"🫄🏻",text:"",type:1,order:1617,group:1,subgroup:25,version:14,tone:1,shortCodes:["pregnant_person_tone1"]},{label:"pregnant person: medium-light skin tone",hexcode:"1FAC4-1F3FC",emoji:"🫄🏼",text:"",type:1,order:1618,group:1,subgroup:25,version:14,tone:2,shortCodes:["pregnant_person_tone2"]},{label:"pregnant person: medium skin tone",hexcode:"1FAC4-1F3FD",emoji:"🫄🏽",text:"",type:1,order:1619,group:1,subgroup:25,version:14,tone:3,shortCodes:["pregnant_person_tone3"]},{label:"pregnant person: medium-dark skin tone",hexcode:"1FAC4-1F3FE",emoji:"🫄🏾",text:"",type:1,order:1620,group:1,subgroup:25,version:14,tone:4,shortCodes:["pregnant_person_tone4"]},{label:"pregnant person: dark skin tone",hexcode:"1FAC4-1F3FF",emoji:"🫄🏿",text:"",type:1,order:1621,group:1,subgroup:25,version:14,tone:5,shortCodes:["pregnant_person_tone5"]}],shortCodes:["pregnant_person"]},{label:"breast-feeding",hexcode:"1F931",tags:["baby","breast","feeding","mom","mother","nursing","woman"],emoji:"🤱",text:"",type:1,order:1622,group:1,subgroup:25,version:5,skins:[{label:"breast-feeding: light skin tone",hexcode:"1F931-1F3FB",emoji:"🤱🏻",text:"",type:1,order:1623,group:1,subgroup:25,version:5,tone:1,shortCodes:["breast_feeding_tone1"]},{label:"breast-feeding: medium-light skin tone",hexcode:"1F931-1F3FC",emoji:"🤱🏼",text:"",type:1,order:1624,group:1,subgroup:25,version:5,tone:2,shortCodes:["breast_feeding_tone2"]},{label:"breast-feeding: medium skin tone",hexcode:"1F931-1F3FD",emoji:"🤱🏽",text:"",type:1,order:1625,group:1,subgroup:25,version:5,tone:3,shortCodes:["breast_feeding_tone3"]},{label:"breast-feeding: medium-dark skin tone",hexcode:"1F931-1F3FE",emoji:"🤱🏾",text:"",type:1,order:1626,group:1,subgroup:25,version:5,tone:4,shortCodes:["breast_feeding_tone4"]},{label:"breast-feeding: dark skin tone",hexcode:"1F931-1F3FF",emoji:"🤱🏿",text:"",type:1,order:1627,group:1,subgroup:25,version:5,tone:5,shortCodes:["breast_feeding_tone5"]}],shortCodes:["breast_feeding"]},{label:"woman feeding baby",hexcode:"1F469-200D-1F37C",tags:["baby","feed","feeding","mom","mother","nanny","newborn","nursing","woman"],emoji:"👩🍼",text:"",type:1,order:1628,group:1,subgroup:25,version:13,skins:[{label:"woman feeding baby: light skin tone",hexcode:"1F469-1F3FB-200D-1F37C",emoji:"👩🏻🍼",text:"",type:1,order:1629,group:1,subgroup:25,version:13,tone:1,shortCodes:["woman_feeding_baby_tone1"]},{label:"woman feeding baby: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F37C",emoji:"👩🏼🍼",text:"",type:1,order:1630,group:1,subgroup:25,version:13,tone:2,shortCodes:["woman_feeding_baby_tone2"]},{label:"woman feeding baby: medium skin tone",hexcode:"1F469-1F3FD-200D-1F37C",emoji:"👩🏽🍼",text:"",type:1,order:1631,group:1,subgroup:25,version:13,tone:3,shortCodes:["woman_feeding_baby_tone3"]},{label:"woman feeding baby: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F37C",emoji:"👩🏾🍼",text:"",type:1,order:1632,group:1,subgroup:25,version:13,tone:4,shortCodes:["woman_feeding_baby_tone4"]},{label:"woman feeding baby: dark skin tone",hexcode:"1F469-1F3FF-200D-1F37C",emoji:"👩🏿🍼",text:"",type:1,order:1633,group:1,subgroup:25,version:13,tone:5,shortCodes:["woman_feeding_baby_tone5"]}],shortCodes:["woman_feeding_baby"]},{label:"man feeding baby",hexcode:"1F468-200D-1F37C",tags:["baby","dad","father","feed","feeding","man","nanny","newborn","nursing"],emoji:"👨🍼",text:"",type:1,order:1634,group:1,subgroup:25,version:13,skins:[{label:"man feeding baby: light skin tone",hexcode:"1F468-1F3FB-200D-1F37C",emoji:"👨🏻🍼",text:"",type:1,order:1635,group:1,subgroup:25,version:13,tone:1,shortCodes:["man_feeding_baby_tone1"]},{label:"man feeding baby: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F37C",emoji:"👨🏼🍼",text:"",type:1,order:1636,group:1,subgroup:25,version:13,tone:2,shortCodes:["man_feeding_baby_tone2"]},{label:"man feeding baby: medium skin tone",hexcode:"1F468-1F3FD-200D-1F37C",emoji:"👨🏽🍼",text:"",type:1,order:1637,group:1,subgroup:25,version:13,tone:3,shortCodes:["man_feeding_baby_tone3"]},{label:"man feeding baby: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F37C",emoji:"👨🏾🍼",text:"",type:1,order:1638,group:1,subgroup:25,version:13,tone:4,shortCodes:["man_feeding_baby_tone4"]},{label:"man feeding baby: dark skin tone",hexcode:"1F468-1F3FF-200D-1F37C",emoji:"👨🏿🍼",text:"",type:1,order:1639,group:1,subgroup:25,version:13,tone:5,shortCodes:["man_feeding_baby_tone5"]}],shortCodes:["man_feeding_baby"]},{label:"person feeding baby",hexcode:"1F9D1-200D-1F37C",tags:["baby","feed","feeding","nanny","newborn","nursing","parent"],emoji:"🧑🍼",text:"",type:1,order:1640,group:1,subgroup:25,version:13,skins:[{label:"person feeding baby: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F37C",emoji:"🧑🏻🍼",text:"",type:1,order:1641,group:1,subgroup:25,version:13,tone:1,shortCodes:["person_feeding_baby_tone1"]},{label:"person feeding baby: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F37C",emoji:"🧑🏼🍼",text:"",type:1,order:1642,group:1,subgroup:25,version:13,tone:2,shortCodes:["person_feeding_baby_tone2"]},{label:"person feeding baby: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F37C",emoji:"🧑🏽🍼",text:"",type:1,order:1643,group:1,subgroup:25,version:13,tone:3,shortCodes:["person_feeding_baby_tone3"]},{label:"person feeding baby: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F37C",emoji:"🧑🏾🍼",text:"",type:1,order:1644,group:1,subgroup:25,version:13,tone:4,shortCodes:["person_feeding_baby_tone4"]},{label:"person feeding baby: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F37C",emoji:"🧑🏿🍼",text:"",type:1,order:1645,group:1,subgroup:25,version:13,tone:5,shortCodes:["person_feeding_baby_tone5"]}],shortCodes:["person_feeding_baby"]},{label:"baby angel",hexcode:"1F47C",tags:["angel","baby","church","face","fairy","fairytale","fantasy","tale"],emoji:"👼",text:"",type:1,order:1646,group:1,subgroup:26,version:.6,skins:[{label:"baby angel: light skin tone",hexcode:"1F47C-1F3FB",emoji:"👼🏻",text:"",type:1,order:1647,group:1,subgroup:26,version:1,tone:1,shortCodes:["angel_tone1"]},{label:"baby angel: medium-light skin tone",hexcode:"1F47C-1F3FC",emoji:"👼🏼",text:"",type:1,order:1648,group:1,subgroup:26,version:1,tone:2,shortCodes:["angel_tone2"]},{label:"baby angel: medium skin tone",hexcode:"1F47C-1F3FD",emoji:"👼🏽",text:"",type:1,order:1649,group:1,subgroup:26,version:1,tone:3,shortCodes:["angel_tone3"]},{label:"baby angel: medium-dark skin tone",hexcode:"1F47C-1F3FE",emoji:"👼🏾",text:"",type:1,order:1650,group:1,subgroup:26,version:1,tone:4,shortCodes:["angel_tone4"]},{label:"baby angel: dark skin tone",hexcode:"1F47C-1F3FF",emoji:"👼🏿",text:"",type:1,order:1651,group:1,subgroup:26,version:1,tone:5,shortCodes:["angel_tone5"]}],shortCodes:["angel"]},{label:"Santa Claus",hexcode:"1F385",tags:["celebration","christmas","claus","fairy","fantasy","father","holiday","merry","santa","tale","xmas"],emoji:"🎅",text:"",type:1,order:1652,group:1,subgroup:26,version:.6,skins:[{label:"Santa Claus: light skin tone",hexcode:"1F385-1F3FB",emoji:"🎅🏻",text:"",type:1,order:1653,group:1,subgroup:26,version:1,tone:1,shortCodes:["santa_tone1"]},{label:"Santa Claus: medium-light skin tone",hexcode:"1F385-1F3FC",emoji:"🎅🏼",text:"",type:1,order:1654,group:1,subgroup:26,version:1,tone:2,shortCodes:["santa_tone2"]},{label:"Santa Claus: medium skin tone",hexcode:"1F385-1F3FD",emoji:"🎅🏽",text:"",type:1,order:1655,group:1,subgroup:26,version:1,tone:3,shortCodes:["santa_tone3"]},{label:"Santa Claus: medium-dark skin tone",hexcode:"1F385-1F3FE",emoji:"🎅🏾",text:"",type:1,order:1656,group:1,subgroup:26,version:1,tone:4,shortCodes:["santa_tone4"]},{label:"Santa Claus: dark skin tone",hexcode:"1F385-1F3FF",emoji:"🎅🏿",text:"",type:1,order:1657,group:1,subgroup:26,version:1,tone:5,shortCodes:["santa_tone5"]}],shortCodes:["santa"]},{label:"Mrs. Claus",hexcode:"1F936",tags:["celebration","christmas","claus","fairy","fantasy","holiday","merry","mother","mrs","santa","tale","xmas"],emoji:"🤶",text:"",type:1,order:1658,group:1,subgroup:26,version:3,skins:[{label:"Mrs. Claus: light skin tone",hexcode:"1F936-1F3FB",emoji:"🤶🏻",text:"",type:1,order:1659,group:1,subgroup:26,version:3,tone:1,shortCodes:["mrs_claus_tone1"]},{label:"Mrs. Claus: medium-light skin tone",hexcode:"1F936-1F3FC",emoji:"🤶🏼",text:"",type:1,order:1660,group:1,subgroup:26,version:3,tone:2,shortCodes:["mrs_claus_tone2"]},{label:"Mrs. Claus: medium skin tone",hexcode:"1F936-1F3FD",emoji:"🤶🏽",text:"",type:1,order:1661,group:1,subgroup:26,version:3,tone:3,shortCodes:["mrs_claus_tone3"]},{label:"Mrs. Claus: medium-dark skin tone",hexcode:"1F936-1F3FE",emoji:"🤶🏾",text:"",type:1,order:1662,group:1,subgroup:26,version:3,tone:4,shortCodes:["mrs_claus_tone4"]},{label:"Mrs. Claus: dark skin tone",hexcode:"1F936-1F3FF",emoji:"🤶🏿",text:"",type:1,order:1663,group:1,subgroup:26,version:3,tone:5,shortCodes:["mrs_claus_tone5"]}],shortCodes:["mrs_claus"]},{label:"Mx Claus",hexcode:"1F9D1-200D-1F384",tags:["celebration","christmas","claus","fairy","fantasy","holiday","merry","mx","santa","tale","xmas"],emoji:"🧑🎄",text:"",type:1,order:1664,group:1,subgroup:26,version:13,skins:[{label:"Mx Claus: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F384",emoji:"🧑🏻🎄",text:"",type:1,order:1665,group:1,subgroup:26,version:13,tone:1,shortCodes:["mx_claus_tone1"]},{label:"Mx Claus: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F384",emoji:"🧑🏼🎄",text:"",type:1,order:1666,group:1,subgroup:26,version:13,tone:2,shortCodes:["mx_claus_tone2"]},{label:"Mx Claus: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F384",emoji:"🧑🏽🎄",text:"",type:1,order:1667,group:1,subgroup:26,version:13,tone:3,shortCodes:["mx_claus_tone3"]},{label:"Mx Claus: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F384",emoji:"🧑🏾🎄",text:"",type:1,order:1668,group:1,subgroup:26,version:13,tone:4,shortCodes:["mx_claus_tone4"]},{label:"Mx Claus: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F384",emoji:"🧑🏿🎄",text:"",type:1,order:1669,group:1,subgroup:26,version:13,tone:5,shortCodes:["mx_claus_tone5"]}],shortCodes:["mx_claus"]},{label:"superhero",hexcode:"1F9B8",tags:["good","hero","superpower"],emoji:"🦸",text:"",type:1,order:1670,group:1,subgroup:26,version:11,skins:[{label:"superhero: light skin tone",hexcode:"1F9B8-1F3FB",emoji:"🦸🏻",text:"",type:1,order:1671,group:1,subgroup:26,version:11,tone:1,shortCodes:["superhero_tone1"]},{label:"superhero: medium-light skin tone",hexcode:"1F9B8-1F3FC",emoji:"🦸🏼",text:"",type:1,order:1672,group:1,subgroup:26,version:11,tone:2,shortCodes:["superhero_tone2"]},{label:"superhero: medium skin tone",hexcode:"1F9B8-1F3FD",emoji:"🦸🏽",text:"",type:1,order:1673,group:1,subgroup:26,version:11,tone:3,shortCodes:["superhero_tone3"]},{label:"superhero: medium-dark skin tone",hexcode:"1F9B8-1F3FE",emoji:"🦸🏾",text:"",type:1,order:1674,group:1,subgroup:26,version:11,tone:4,shortCodes:["superhero_tone4"]},{label:"superhero: dark skin tone",hexcode:"1F9B8-1F3FF",emoji:"🦸🏿",text:"",type:1,order:1675,group:1,subgroup:26,version:11,tone:5,shortCodes:["superhero_tone5"]}],shortCodes:["superhero"]},{label:"man superhero",hexcode:"1F9B8-200D-2642-FE0F",tags:["good","hero","man","superhero","superpower"],emoji:"🦸♂️",text:"",type:1,order:1676,group:1,subgroup:26,version:11,gender:1,skins:[{label:"man superhero: light skin tone",hexcode:"1F9B8-1F3FB-200D-2642-FE0F",emoji:"🦸🏻♂️",text:"",type:1,order:1678,group:1,subgroup:26,version:11,gender:1,tone:1,shortCodes:["man_superhero_tone1"]},{label:"man superhero: medium-light skin tone",hexcode:"1F9B8-1F3FC-200D-2642-FE0F",emoji:"🦸🏼♂️",text:"",type:1,order:1680,group:1,subgroup:26,version:11,gender:1,tone:2,shortCodes:["man_superhero_tone2"]},{label:"man superhero: medium skin tone",hexcode:"1F9B8-1F3FD-200D-2642-FE0F",emoji:"🦸🏽♂️",text:"",type:1,order:1682,group:1,subgroup:26,version:11,gender:1,tone:3,shortCodes:["man_superhero_tone3"]},{label:"man superhero: medium-dark skin tone",hexcode:"1F9B8-1F3FE-200D-2642-FE0F",emoji:"🦸🏾♂️",text:"",type:1,order:1684,group:1,subgroup:26,version:11,gender:1,tone:4,shortCodes:["man_superhero_tone4"]},{label:"man superhero: dark skin tone",hexcode:"1F9B8-1F3FF-200D-2642-FE0F",emoji:"🦸🏿♂️",text:"",type:1,order:1686,group:1,subgroup:26,version:11,gender:1,tone:5,shortCodes:["man_superhero_tone5"]}],shortCodes:["man_superhero"]},{label:"woman superhero",hexcode:"1F9B8-200D-2640-FE0F",tags:["good","hero","heroine","superhero","superpower","woman"],emoji:"🦸♀️",text:"",type:1,order:1688,group:1,subgroup:26,version:11,gender:0,skins:[{label:"woman superhero: light skin tone",hexcode:"1F9B8-1F3FB-200D-2640-FE0F",emoji:"🦸🏻♀️",text:"",type:1,order:1690,group:1,subgroup:26,version:11,gender:0,tone:1,shortCodes:["woman_superhero_tone1"]},{label:"woman superhero: medium-light skin tone",hexcode:"1F9B8-1F3FC-200D-2640-FE0F",emoji:"🦸🏼♀️",text:"",type:1,order:1692,group:1,subgroup:26,version:11,gender:0,tone:2,shortCodes:["woman_superhero_tone2"]},{label:"woman superhero: medium skin tone",hexcode:"1F9B8-1F3FD-200D-2640-FE0F",emoji:"🦸🏽♀️",text:"",type:1,order:1694,group:1,subgroup:26,version:11,gender:0,tone:3,shortCodes:["woman_superhero_tone3"]},{label:"woman superhero: medium-dark skin tone",hexcode:"1F9B8-1F3FE-200D-2640-FE0F",emoji:"🦸🏾♀️",text:"",type:1,order:1696,group:1,subgroup:26,version:11,gender:0,tone:4,shortCodes:["woman_superhero_tone4"]},{label:"woman superhero: dark skin tone",hexcode:"1F9B8-1F3FF-200D-2640-FE0F",emoji:"🦸🏿♀️",text:"",type:1,order:1698,group:1,subgroup:26,version:11,gender:0,tone:5,shortCodes:["woman_superhero_tone5"]}],shortCodes:["woman_superhero"]},{label:"supervillain",hexcode:"1F9B9",tags:["bad","criminal","evil","superpower","villain"],emoji:"🦹",text:"",type:1,order:1700,group:1,subgroup:26,version:11,skins:[{label:"supervillain: light skin tone",hexcode:"1F9B9-1F3FB",emoji:"🦹🏻",text:"",type:1,order:1701,group:1,subgroup:26,version:11,tone:1,shortCodes:["supervillain_tone1"]},{label:"supervillain: medium-light skin tone",hexcode:"1F9B9-1F3FC",emoji:"🦹🏼",text:"",type:1,order:1702,group:1,subgroup:26,version:11,tone:2,shortCodes:["supervillain_tone2"]},{label:"supervillain: medium skin tone",hexcode:"1F9B9-1F3FD",emoji:"🦹🏽",text:"",type:1,order:1703,group:1,subgroup:26,version:11,tone:3,shortCodes:["supervillain_tone3"]},{label:"supervillain: medium-dark skin tone",hexcode:"1F9B9-1F3FE",emoji:"🦹🏾",text:"",type:1,order:1704,group:1,subgroup:26,version:11,tone:4,shortCodes:["supervillain_tone4"]},{label:"supervillain: dark skin tone",hexcode:"1F9B9-1F3FF",emoji:"🦹🏿",text:"",type:1,order:1705,group:1,subgroup:26,version:11,tone:5,shortCodes:["supervillain_tone5"]}],shortCodes:["supervillain"]},{label:"man supervillain",hexcode:"1F9B9-200D-2642-FE0F",tags:["bad","criminal","evil","man","superpower","supervillain","villain"],emoji:"🦹♂️",text:"",type:1,order:1706,group:1,subgroup:26,version:11,gender:1,skins:[{label:"man supervillain: light skin tone",hexcode:"1F9B9-1F3FB-200D-2642-FE0F",emoji:"🦹🏻♂️",text:"",type:1,order:1708,group:1,subgroup:26,version:11,gender:1,tone:1,shortCodes:["man_supervillain_tone1"]},{label:"man supervillain: medium-light skin tone",hexcode:"1F9B9-1F3FC-200D-2642-FE0F",emoji:"🦹🏼♂️",text:"",type:1,order:1710,group:1,subgroup:26,version:11,gender:1,tone:2,shortCodes:["man_supervillain_tone2"]},{label:"man supervillain: medium skin tone",hexcode:"1F9B9-1F3FD-200D-2642-FE0F",emoji:"🦹🏽♂️",text:"",type:1,order:1712,group:1,subgroup:26,version:11,gender:1,tone:3,shortCodes:["man_supervillain_tone3"]},{label:"man supervillain: medium-dark skin tone",hexcode:"1F9B9-1F3FE-200D-2642-FE0F",emoji:"🦹🏾♂️",text:"",type:1,order:1714,group:1,subgroup:26,version:11,gender:1,tone:4,shortCodes:["man_supervillain_tone4"]},{label:"man supervillain: dark skin tone",hexcode:"1F9B9-1F3FF-200D-2642-FE0F",emoji:"🦹🏿♂️",text:"",type:1,order:1716,group:1,subgroup:26,version:11,gender:1,tone:5,shortCodes:["man_supervillain_tone5"]}],shortCodes:["man_supervillain"]},{label:"woman supervillain",hexcode:"1F9B9-200D-2640-FE0F",tags:["bad","criminal","evil","superpower","supervillain","villain","woman"],emoji:"🦹♀️",text:"",type:1,order:1718,group:1,subgroup:26,version:11,gender:0,skins:[{label:"woman supervillain: light skin tone",hexcode:"1F9B9-1F3FB-200D-2640-FE0F",emoji:"🦹🏻♀️",text:"",type:1,order:1720,group:1,subgroup:26,version:11,gender:0,tone:1,shortCodes:["woman_supervillain_tone1"]},{label:"woman supervillain: medium-light skin tone",hexcode:"1F9B9-1F3FC-200D-2640-FE0F",emoji:"🦹🏼♀️",text:"",type:1,order:1722,group:1,subgroup:26,version:11,gender:0,tone:2,shortCodes:["woman_supervillain_tone2"]},{label:"woman supervillain: medium skin tone",hexcode:"1F9B9-1F3FD-200D-2640-FE0F",emoji:"🦹🏽♀️",text:"",type:1,order:1724,group:1,subgroup:26,version:11,gender:0,tone:3,shortCodes:["woman_supervillain_tone3"]},{label:"woman supervillain: medium-dark skin tone",hexcode:"1F9B9-1F3FE-200D-2640-FE0F",emoji:"🦹🏾♀️",text:"",type:1,order:1726,group:1,subgroup:26,version:11,gender:0,tone:4,shortCodes:["woman_supervillain_tone4"]},{label:"woman supervillain: dark skin tone",hexcode:"1F9B9-1F3FF-200D-2640-FE0F",emoji:"🦹🏿♀️",text:"",type:1,order:1728,group:1,subgroup:26,version:11,gender:0,tone:5,shortCodes:["woman_supervillain_tone5"]}],shortCodes:["woman_supervillain"]},{label:"mage",hexcode:"1F9D9",tags:["fantasy","magic","play","sorcerer","sorceress","sorcery","spell","summon","witch","wizard"],emoji:"🧙",text:"",type:1,order:1730,group:1,subgroup:26,version:5,skins:[{label:"mage: light skin tone",hexcode:"1F9D9-1F3FB",emoji:"🧙🏻",text:"",type:1,order:1731,group:1,subgroup:26,version:5,tone:1,shortCodes:["mage_tone1"]},{label:"mage: medium-light skin tone",hexcode:"1F9D9-1F3FC",emoji:"🧙🏼",text:"",type:1,order:1732,group:1,subgroup:26,version:5,tone:2,shortCodes:["mage_tone2"]},{label:"mage: medium skin tone",hexcode:"1F9D9-1F3FD",emoji:"🧙🏽",text:"",type:1,order:1733,group:1,subgroup:26,version:5,tone:3,shortCodes:["mage_tone3"]},{label:"mage: medium-dark skin tone",hexcode:"1F9D9-1F3FE",emoji:"🧙🏾",text:"",type:1,order:1734,group:1,subgroup:26,version:5,tone:4,shortCodes:["mage_tone4"]},{label:"mage: dark skin tone",hexcode:"1F9D9-1F3FF",emoji:"🧙🏿",text:"",type:1,order:1735,group:1,subgroup:26,version:5,tone:5,shortCodes:["mage_tone5"]}],shortCodes:["mage"]},{label:"man mage",hexcode:"1F9D9-200D-2642-FE0F",tags:["fantasy","mage","magic","man","play","sorcerer","sorceress","sorcery","spell","summon","witch","wizard"],emoji:"🧙♂️",text:"",type:1,order:1736,group:1,subgroup:26,version:5,gender:1,emoticon:[":{>"],skins:[{label:"man mage: light skin tone",hexcode:"1F9D9-1F3FB-200D-2642-FE0F",emoji:"🧙🏻♂️",text:"",type:1,order:1738,group:1,subgroup:26,version:5,gender:1,tone:1,shortCodes:["man_mage_tone1"]},{label:"man mage: medium-light skin tone",hexcode:"1F9D9-1F3FC-200D-2642-FE0F",emoji:"🧙🏼♂️",text:"",type:1,order:1740,group:1,subgroup:26,version:5,gender:1,tone:2,shortCodes:["man_mage_tone2"]},{label:"man mage: medium skin tone",hexcode:"1F9D9-1F3FD-200D-2642-FE0F",emoji:"🧙🏽♂️",text:"",type:1,order:1742,group:1,subgroup:26,version:5,gender:1,tone:3,shortCodes:["man_mage_tone3"]},{label:"man mage: medium-dark skin tone",hexcode:"1F9D9-1F3FE-200D-2642-FE0F",emoji:"🧙🏾♂️",text:"",type:1,order:1744,group:1,subgroup:26,version:5,gender:1,tone:4,shortCodes:["man_mage_tone4"]},{label:"man mage: dark skin tone",hexcode:"1F9D9-1F3FF-200D-2642-FE0F",emoji:"🧙🏿♂️",text:"",type:1,order:1746,group:1,subgroup:26,version:5,gender:1,tone:5,shortCodes:["man_mage_tone5"]}],shortCodes:["man_mage"]},{label:"woman mage",hexcode:"1F9D9-200D-2640-FE0F",tags:["fantasy","mage","magic","play","sorcerer","sorceress","sorcery","spell","summon","witch","wizard","woman"],emoji:"🧙♀️",text:"",type:1,order:1748,group:1,subgroup:26,version:5,gender:0,skins:[{label:"woman mage: light skin tone",hexcode:"1F9D9-1F3FB-200D-2640-FE0F",emoji:"🧙🏻♀️",text:"",type:1,order:1750,group:1,subgroup:26,version:5,gender:0,tone:1,shortCodes:["woman_mage_tone1"]},{label:"woman mage: medium-light skin tone",hexcode:"1F9D9-1F3FC-200D-2640-FE0F",emoji:"🧙🏼♀️",text:"",type:1,order:1752,group:1,subgroup:26,version:5,gender:0,tone:2,shortCodes:["woman_mage_tone2"]},{label:"woman mage: medium skin tone",hexcode:"1F9D9-1F3FD-200D-2640-FE0F",emoji:"🧙🏽♀️",text:"",type:1,order:1754,group:1,subgroup:26,version:5,gender:0,tone:3,shortCodes:["woman_mage_tone3"]},{label:"woman mage: medium-dark skin tone",hexcode:"1F9D9-1F3FE-200D-2640-FE0F",emoji:"🧙🏾♀️",text:"",type:1,order:1756,group:1,subgroup:26,version:5,gender:0,tone:4,shortCodes:["woman_mage_tone4"]},{label:"woman mage: dark skin tone",hexcode:"1F9D9-1F3FF-200D-2640-FE0F",emoji:"🧙🏿♀️",text:"",type:1,order:1758,group:1,subgroup:26,version:5,gender:0,tone:5,shortCodes:["woman_mage_tone5"]}],shortCodes:["woman_mage"]},{label:"fairy",hexcode:"1F9DA",tags:["fairytale","fantasy","myth","person","pixie","tale","wings"],emoji:"🧚",text:"",type:1,order:1760,group:1,subgroup:26,version:5,skins:[{label:"fairy: light skin tone",hexcode:"1F9DA-1F3FB",emoji:"🧚🏻",text:"",type:1,order:1761,group:1,subgroup:26,version:5,tone:1,shortCodes:["fairy_tone1"]},{label:"fairy: medium-light skin tone",hexcode:"1F9DA-1F3FC",emoji:"🧚🏼",text:"",type:1,order:1762,group:1,subgroup:26,version:5,tone:2,shortCodes:["fairy_tone2"]},{label:"fairy: medium skin tone",hexcode:"1F9DA-1F3FD",emoji:"🧚🏽",text:"",type:1,order:1763,group:1,subgroup:26,version:5,tone:3,shortCodes:["fairy_tone3"]},{label:"fairy: medium-dark skin tone",hexcode:"1F9DA-1F3FE",emoji:"🧚🏾",text:"",type:1,order:1764,group:1,subgroup:26,version:5,tone:4,shortCodes:["fairy_tone4"]},{label:"fairy: dark skin tone",hexcode:"1F9DA-1F3FF",emoji:"🧚🏿",text:"",type:1,order:1765,group:1,subgroup:26,version:5,tone:5,shortCodes:["fairy_tone5"]}],shortCodes:["fairy"]},{label:"man fairy",hexcode:"1F9DA-200D-2642-FE0F",tags:["fairy","fairytale","fantasy","man","myth","oberon","person","pixie","puck","tale","wings"],emoji:"🧚♂️",text:"",type:1,order:1766,group:1,subgroup:26,version:5,gender:1,skins:[{label:"man fairy: light skin tone",hexcode:"1F9DA-1F3FB-200D-2642-FE0F",emoji:"🧚🏻♂️",text:"",type:1,order:1768,group:1,subgroup:26,version:5,gender:1,tone:1,shortCodes:["man_fairy_tone1"]},{label:"man fairy: medium-light skin tone",hexcode:"1F9DA-1F3FC-200D-2642-FE0F",emoji:"🧚🏼♂️",text:"",type:1,order:1770,group:1,subgroup:26,version:5,gender:1,tone:2,shortCodes:["man_fairy_tone2"]},{label:"man fairy: medium skin tone",hexcode:"1F9DA-1F3FD-200D-2642-FE0F",emoji:"🧚🏽♂️",text:"",type:1,order:1772,group:1,subgroup:26,version:5,gender:1,tone:3,shortCodes:["man_fairy_tone3"]},{label:"man fairy: medium-dark skin tone",hexcode:"1F9DA-1F3FE-200D-2642-FE0F",emoji:"🧚🏾♂️",text:"",type:1,order:1774,group:1,subgroup:26,version:5,gender:1,tone:4,shortCodes:["man_fairy_tone4"]},{label:"man fairy: dark skin tone",hexcode:"1F9DA-1F3FF-200D-2642-FE0F",emoji:"🧚🏿♂️",text:"",type:1,order:1776,group:1,subgroup:26,version:5,gender:1,tone:5,shortCodes:["man_fairy_tone5"]}],shortCodes:["man_fairy"]},{label:"woman fairy",hexcode:"1F9DA-200D-2640-FE0F",tags:["fairy","fairytale","fantasy","myth","person","pixie","tale","titania","wings","woman"],emoji:"🧚♀️",text:"",type:1,order:1778,group:1,subgroup:26,version:5,gender:0,skins:[{label:"woman fairy: light skin tone",hexcode:"1F9DA-1F3FB-200D-2640-FE0F",emoji:"🧚🏻♀️",text:"",type:1,order:1780,group:1,subgroup:26,version:5,gender:0,tone:1,shortCodes:["woman_fairy_tone1"]},{label:"woman fairy: medium-light skin tone",hexcode:"1F9DA-1F3FC-200D-2640-FE0F",emoji:"🧚🏼♀️",text:"",type:1,order:1782,group:1,subgroup:26,version:5,gender:0,tone:2,shortCodes:["woman_fairy_tone2"]},{label:"woman fairy: medium skin tone",hexcode:"1F9DA-1F3FD-200D-2640-FE0F",emoji:"🧚🏽♀️",text:"",type:1,order:1784,group:1,subgroup:26,version:5,gender:0,tone:3,shortCodes:["woman_fairy_tone3"]},{label:"woman fairy: medium-dark skin tone",hexcode:"1F9DA-1F3FE-200D-2640-FE0F",emoji:"🧚🏾♀️",text:"",type:1,order:1786,group:1,subgroup:26,version:5,gender:0,tone:4,shortCodes:["woman_fairy_tone4"]},{label:"woman fairy: dark skin tone",hexcode:"1F9DA-1F3FF-200D-2640-FE0F",emoji:"🧚🏿♀️",text:"",type:1,order:1788,group:1,subgroup:26,version:5,gender:0,tone:5,shortCodes:["woman_fairy_tone5"]}],shortCodes:["woman_fairy"]},{label:"vampire",hexcode:"1F9DB",tags:["blood","dracula","fangs","halloween","scary","supernatural","teeth","undead"],emoji:"🧛",text:"",type:1,order:1790,group:1,subgroup:26,version:5,emoticon:[":E"],skins:[{label:"vampire: light skin tone",hexcode:"1F9DB-1F3FB",emoji:"🧛🏻",text:"",type:1,order:1791,group:1,subgroup:26,version:5,tone:1,shortCodes:["vampire_tone1"]},{label:"vampire: medium-light skin tone",hexcode:"1F9DB-1F3FC",emoji:"🧛🏼",text:"",type:1,order:1792,group:1,subgroup:26,version:5,tone:2,shortCodes:["vampire_tone2"]},{label:"vampire: medium skin tone",hexcode:"1F9DB-1F3FD",emoji:"🧛🏽",text:"",type:1,order:1793,group:1,subgroup:26,version:5,tone:3,shortCodes:["vampire_tone3"]},{label:"vampire: medium-dark skin tone",hexcode:"1F9DB-1F3FE",emoji:"🧛🏾",text:"",type:1,order:1794,group:1,subgroup:26,version:5,tone:4,shortCodes:["vampire_tone4"]},{label:"vampire: dark skin tone",hexcode:"1F9DB-1F3FF",emoji:"🧛🏿",text:"",type:1,order:1795,group:1,subgroup:26,version:5,tone:5,shortCodes:["vampire_tone5"]}],shortCodes:["vampire"]},{label:"man vampire",hexcode:"1F9DB-200D-2642-FE0F",tags:["blood","fangs","halloween","man","scary","supernatural","teeth","undead","vampire"],emoji:"🧛♂️",text:"",type:1,order:1796,group:1,subgroup:26,version:5,gender:1,skins:[{label:"man vampire: light skin tone",hexcode:"1F9DB-1F3FB-200D-2642-FE0F",emoji:"🧛🏻♂️",text:"",type:1,order:1798,group:1,subgroup:26,version:5,gender:1,tone:1,shortCodes:["man_vampire_tone1"]},{label:"man vampire: medium-light skin tone",hexcode:"1F9DB-1F3FC-200D-2642-FE0F",emoji:"🧛🏼♂️",text:"",type:1,order:1800,group:1,subgroup:26,version:5,gender:1,tone:2,shortCodes:["man_vampire_tone2"]},{label:"man vampire: medium skin tone",hexcode:"1F9DB-1F3FD-200D-2642-FE0F",emoji:"🧛🏽♂️",text:"",type:1,order:1802,group:1,subgroup:26,version:5,gender:1,tone:3,shortCodes:["man_vampire_tone3"]},{label:"man vampire: medium-dark skin tone",hexcode:"1F9DB-1F3FE-200D-2642-FE0F",emoji:"🧛🏾♂️",text:"",type:1,order:1804,group:1,subgroup:26,version:5,gender:1,tone:4,shortCodes:["man_vampire_tone4"]},{label:"man vampire: dark skin tone",hexcode:"1F9DB-1F3FF-200D-2642-FE0F",emoji:"🧛🏿♂️",text:"",type:1,order:1806,group:1,subgroup:26,version:5,gender:1,tone:5,shortCodes:["man_vampire_tone5"]}],shortCodes:["man_vampire"]},{label:"woman vampire",hexcode:"1F9DB-200D-2640-FE0F",tags:["blood","fangs","halloween","scary","supernatural","teeth","undead","vampire","woman"],emoji:"🧛♀️",text:"",type:1,order:1808,group:1,subgroup:26,version:5,gender:0,skins:[{label:"woman vampire: light skin tone",hexcode:"1F9DB-1F3FB-200D-2640-FE0F",emoji:"🧛🏻♀️",text:"",type:1,order:1810,group:1,subgroup:26,version:5,gender:0,tone:1,shortCodes:["woman_vampire_tone1"]},{label:"woman vampire: medium-light skin tone",hexcode:"1F9DB-1F3FC-200D-2640-FE0F",emoji:"🧛🏼♀️",text:"",type:1,order:1812,group:1,subgroup:26,version:5,gender:0,tone:2,shortCodes:["woman_vampire_tone2"]},{label:"woman vampire: medium skin tone",hexcode:"1F9DB-1F3FD-200D-2640-FE0F",emoji:"🧛🏽♀️",text:"",type:1,order:1814,group:1,subgroup:26,version:5,gender:0,tone:3,shortCodes:["woman_vampire_tone3"]},{label:"woman vampire: medium-dark skin tone",hexcode:"1F9DB-1F3FE-200D-2640-FE0F",emoji:"🧛🏾♀️",text:"",type:1,order:1816,group:1,subgroup:26,version:5,gender:0,tone:4,shortCodes:["woman_vampire_tone4"]},{label:"woman vampire: dark skin tone",hexcode:"1F9DB-1F3FF-200D-2640-FE0F",emoji:"🧛🏿♀️",text:"",type:1,order:1818,group:1,subgroup:26,version:5,gender:0,tone:5,shortCodes:["woman_vampire_tone5"]}],shortCodes:["woman_vampire"]},{label:"merperson",hexcode:"1F9DC",tags:["creature","fairytale","folklore","ocean","sea","siren","trident"],emoji:"🧜",text:"",type:1,order:1820,group:1,subgroup:26,version:5,skins:[{label:"merperson: light skin tone",hexcode:"1F9DC-1F3FB",emoji:"🧜🏻",text:"",type:1,order:1821,group:1,subgroup:26,version:5,tone:1,shortCodes:["merperson_tone1"]},{label:"merperson: medium-light skin tone",hexcode:"1F9DC-1F3FC",emoji:"🧜🏼",text:"",type:1,order:1822,group:1,subgroup:26,version:5,tone:2,shortCodes:["merperson_tone2"]},{label:"merperson: medium skin tone",hexcode:"1F9DC-1F3FD",emoji:"🧜🏽",text:"",type:1,order:1823,group:1,subgroup:26,version:5,tone:3,shortCodes:["merperson_tone3"]},{label:"merperson: medium-dark skin tone",hexcode:"1F9DC-1F3FE",emoji:"🧜🏾",text:"",type:1,order:1824,group:1,subgroup:26,version:5,tone:4,shortCodes:["merperson_tone4"]},{label:"merperson: dark skin tone",hexcode:"1F9DC-1F3FF",emoji:"🧜🏿",text:"",type:1,order:1825,group:1,subgroup:26,version:5,tone:5,shortCodes:["merperson_tone5"]}],shortCodes:["merperson"]},{label:"merman",hexcode:"1F9DC-200D-2642-FE0F",tags:["creature","fairytale","folklore","neptune","ocean","poseidon","sea","siren","trident","triton"],emoji:"🧜♂️",text:"",type:1,order:1826,group:1,subgroup:26,version:5,gender:1,skins:[{label:"merman: light skin tone",hexcode:"1F9DC-1F3FB-200D-2642-FE0F",emoji:"🧜🏻♂️",text:"",type:1,order:1828,group:1,subgroup:26,version:5,gender:1,tone:1,shortCodes:["merman_tone1"]},{label:"merman: medium-light skin tone",hexcode:"1F9DC-1F3FC-200D-2642-FE0F",emoji:"🧜🏼♂️",text:"",type:1,order:1830,group:1,subgroup:26,version:5,gender:1,tone:2,shortCodes:["merman_tone2"]},{label:"merman: medium skin tone",hexcode:"1F9DC-1F3FD-200D-2642-FE0F",emoji:"🧜🏽♂️",text:"",type:1,order:1832,group:1,subgroup:26,version:5,gender:1,tone:3,shortCodes:["merman_tone3"]},{label:"merman: medium-dark skin tone",hexcode:"1F9DC-1F3FE-200D-2642-FE0F",emoji:"🧜🏾♂️",text:"",type:1,order:1834,group:1,subgroup:26,version:5,gender:1,tone:4,shortCodes:["merman_tone4"]},{label:"merman: dark skin tone",hexcode:"1F9DC-1F3FF-200D-2642-FE0F",emoji:"🧜🏿♂️",text:"",type:1,order:1836,group:1,subgroup:26,version:5,gender:1,tone:5,shortCodes:["merman_tone5"]}],shortCodes:["merman"]},{label:"mermaid",hexcode:"1F9DC-200D-2640-FE0F",tags:["creature","fairytale","folklore","merwoman","ocean","sea","siren","trident"],emoji:"🧜♀️",text:"",type:1,order:1838,group:1,subgroup:26,version:5,gender:0,skins:[{label:"mermaid: light skin tone",hexcode:"1F9DC-1F3FB-200D-2640-FE0F",emoji:"🧜🏻♀️",text:"",type:1,order:1840,group:1,subgroup:26,version:5,gender:0,tone:1,shortCodes:["mermaid_tone1"]},{label:"mermaid: medium-light skin tone",hexcode:"1F9DC-1F3FC-200D-2640-FE0F",emoji:"🧜🏼♀️",text:"",type:1,order:1842,group:1,subgroup:26,version:5,gender:0,tone:2,shortCodes:["mermaid_tone2"]},{label:"mermaid: medium skin tone",hexcode:"1F9DC-1F3FD-200D-2640-FE0F",emoji:"🧜🏽♀️",text:"",type:1,order:1844,group:1,subgroup:26,version:5,gender:0,tone:3,shortCodes:["mermaid_tone3"]},{label:"mermaid: medium-dark skin tone",hexcode:"1F9DC-1F3FE-200D-2640-FE0F",emoji:"🧜🏾♀️",text:"",type:1,order:1846,group:1,subgroup:26,version:5,gender:0,tone:4,shortCodes:["mermaid_tone4"]},{label:"mermaid: dark skin tone",hexcode:"1F9DC-1F3FF-200D-2640-FE0F",emoji:"🧜🏿♀️",text:"",type:1,order:1848,group:1,subgroup:26,version:5,gender:0,tone:5,shortCodes:["mermaid_tone5"]}],shortCodes:["mermaid"]},{label:"elf",hexcode:"1F9DD",tags:["elves","enchantment","fantasy","folklore","magic","magical","myth"],emoji:"🧝",text:"",type:1,order:1850,group:1,subgroup:26,version:5,skins:[{label:"elf: light skin tone",hexcode:"1F9DD-1F3FB",emoji:"🧝🏻",text:"",type:1,order:1851,group:1,subgroup:26,version:5,tone:1,shortCodes:["elf_tone1"]},{label:"elf: medium-light skin tone",hexcode:"1F9DD-1F3FC",emoji:"🧝🏼",text:"",type:1,order:1852,group:1,subgroup:26,version:5,tone:2,shortCodes:["elf_tone2"]},{label:"elf: medium skin tone",hexcode:"1F9DD-1F3FD",emoji:"🧝🏽",text:"",type:1,order:1853,group:1,subgroup:26,version:5,tone:3,shortCodes:["elf_tone3"]},{label:"elf: medium-dark skin tone",hexcode:"1F9DD-1F3FE",emoji:"🧝🏾",text:"",type:1,order:1854,group:1,subgroup:26,version:5,tone:4,shortCodes:["elf_tone4"]},{label:"elf: dark skin tone",hexcode:"1F9DD-1F3FF",emoji:"🧝🏿",text:"",type:1,order:1855,group:1,subgroup:26,version:5,tone:5,shortCodes:["elf_tone5"]}],shortCodes:["elf"]},{label:"man elf",hexcode:"1F9DD-200D-2642-FE0F",tags:["elf","elves","enchantment","fantasy","folklore","magic","magical","man","myth"],emoji:"🧝♂️",text:"",type:1,order:1856,group:1,subgroup:26,version:5,gender:1,skins:[{label:"man elf: light skin tone",hexcode:"1F9DD-1F3FB-200D-2642-FE0F",emoji:"🧝🏻♂️",text:"",type:1,order:1858,group:1,subgroup:26,version:5,gender:1,tone:1,shortCodes:["man_elf_tone1"]},{label:"man elf: medium-light skin tone",hexcode:"1F9DD-1F3FC-200D-2642-FE0F",emoji:"🧝🏼♂️",text:"",type:1,order:1860,group:1,subgroup:26,version:5,gender:1,tone:2,shortCodes:["man_elf_tone2"]},{label:"man elf: medium skin tone",hexcode:"1F9DD-1F3FD-200D-2642-FE0F",emoji:"🧝🏽♂️",text:"",type:1,order:1862,group:1,subgroup:26,version:5,gender:1,tone:3,shortCodes:["man_elf_tone3"]},{label:"man elf: medium-dark skin tone",hexcode:"1F9DD-1F3FE-200D-2642-FE0F",emoji:"🧝🏾♂️",text:"",type:1,order:1864,group:1,subgroup:26,version:5,gender:1,tone:4,shortCodes:["man_elf_tone4"]},{label:"man elf: dark skin tone",hexcode:"1F9DD-1F3FF-200D-2642-FE0F",emoji:"🧝🏿♂️",text:"",type:1,order:1866,group:1,subgroup:26,version:5,gender:1,tone:5,shortCodes:["man_elf_tone5"]}],shortCodes:["man_elf"]},{label:"woman elf",hexcode:"1F9DD-200D-2640-FE0F",tags:["elf","elves","enchantment","fantasy","folklore","magic","magical","myth","woman"],emoji:"🧝♀️",text:"",type:1,order:1868,group:1,subgroup:26,version:5,gender:0,skins:[{label:"woman elf: light skin tone",hexcode:"1F9DD-1F3FB-200D-2640-FE0F",emoji:"🧝🏻♀️",text:"",type:1,order:1870,group:1,subgroup:26,version:5,gender:0,tone:1,shortCodes:["woman_elf_tone1"]},{label:"woman elf: medium-light skin tone",hexcode:"1F9DD-1F3FC-200D-2640-FE0F",emoji:"🧝🏼♀️",text:"",type:1,order:1872,group:1,subgroup:26,version:5,gender:0,tone:2,shortCodes:["woman_elf_tone2"]},{label:"woman elf: medium skin tone",hexcode:"1F9DD-1F3FD-200D-2640-FE0F",emoji:"🧝🏽♀️",text:"",type:1,order:1874,group:1,subgroup:26,version:5,gender:0,tone:3,shortCodes:["woman_elf_tone3"]},{label:"woman elf: medium-dark skin tone",hexcode:"1F9DD-1F3FE-200D-2640-FE0F",emoji:"🧝🏾♀️",text:"",type:1,order:1876,group:1,subgroup:26,version:5,gender:0,tone:4,shortCodes:["woman_elf_tone4"]},{label:"woman elf: dark skin tone",hexcode:"1F9DD-1F3FF-200D-2640-FE0F",emoji:"🧝🏿♀️",text:"",type:1,order:1878,group:1,subgroup:26,version:5,gender:0,tone:5,shortCodes:["woman_elf_tone5"]}],shortCodes:["woman_elf"]},{label:"genie",hexcode:"1F9DE",tags:["djinn","fantasy","jinn","lamp","myth","rub","wishes"],emoji:"🧞",text:"",type:1,order:1880,group:1,subgroup:26,version:5,shortCodes:["genie"]},{label:"man genie",hexcode:"1F9DE-200D-2642-FE0F",tags:["djinn","fantasy","genie","jinn","lamp","man","myth","rub","wishes"],emoji:"🧞♂️",text:"",type:1,order:1881,group:1,subgroup:26,version:5,gender:1,shortCodes:["man_genie"]},{label:"woman genie",hexcode:"1F9DE-200D-2640-FE0F",tags:["djinn","fantasy","genie","jinn","lamp","myth","rub","wishes","woman"],emoji:"🧞♀️",text:"",type:1,order:1883,group:1,subgroup:26,version:5,gender:0,shortCodes:["woman_genie"]},{label:"zombie",hexcode:"1F9DF",tags:["apocalypse","dead","halloween","horror","scary","undead","walking"],emoji:"🧟",text:"",type:1,order:1885,group:1,subgroup:26,version:5,emoticon:["8#"],shortCodes:["zombie"]},{label:"man zombie",hexcode:"1F9DF-200D-2642-FE0F",tags:["apocalypse","dead","halloween","horror","man","scary","undead","walking","zombie"],emoji:"🧟♂️",text:"",type:1,order:1886,group:1,subgroup:26,version:5,gender:1,shortCodes:["man_zombie"]},{label:"woman zombie",hexcode:"1F9DF-200D-2640-FE0F",tags:["apocalypse","dead","halloween","horror","scary","undead","walking","woman","zombie"],emoji:"🧟♀️",text:"",type:1,order:1888,group:1,subgroup:26,version:5,gender:0,shortCodes:["woman_zombie"]},{label:"troll",hexcode:"1F9CC",tags:["fairy","fantasy","monster","tale","trolling"],emoji:"🧌",text:"",type:1,order:1890,group:1,subgroup:26,version:14,shortCodes:["troll"]},{label:"person getting massage",hexcode:"1F486",tags:["face","getting","headache","massage","person","relax","relaxing","salon","soothe","spa","tension","therapy","treatment"],emoji:"💆",text:"",type:1,order:1892,group:1,subgroup:27,version:.6,skins:[{label:"person getting massage: light skin tone",hexcode:"1F486-1F3FB",emoji:"💆🏻",text:"",type:1,order:1893,group:1,subgroup:27,version:1,tone:1,shortCodes:["massage_tone1","person_getting_massage_tone1"]},{label:"person getting massage: medium-light skin tone",hexcode:"1F486-1F3FC",emoji:"💆🏼",text:"",type:1,order:1894,group:1,subgroup:27,version:1,tone:2,shortCodes:["massage_tone2","person_getting_massage_tone2"]},{label:"person getting massage: medium skin tone",hexcode:"1F486-1F3FD",emoji:"💆🏽",text:"",type:1,order:1895,group:1,subgroup:27,version:1,tone:3,shortCodes:["massage_tone3","person_getting_massage_tone3"]},{label:"person getting massage: medium-dark skin tone",hexcode:"1F486-1F3FE",emoji:"💆🏾",text:"",type:1,order:1896,group:1,subgroup:27,version:1,tone:4,shortCodes:["massage_tone4","person_getting_massage_tone4"]},{label:"person getting massage: dark skin tone",hexcode:"1F486-1F3FF",emoji:"💆🏿",text:"",type:1,order:1897,group:1,subgroup:27,version:1,tone:5,shortCodes:["massage_tone5","person_getting_massage_tone5"]}],shortCodes:["massage","person_getting_massage"]},{label:"man getting massage",hexcode:"1F486-200D-2642-FE0F",tags:["face","getting","headache","man","massage","relax","relaxing","salon","soothe","spa","tension","therapy","treatment"],emoji:"💆♂️",text:"",type:1,order:1898,group:1,subgroup:27,version:4,gender:1,skins:[{label:"man getting massage: light skin tone",hexcode:"1F486-1F3FB-200D-2642-FE0F",emoji:"💆🏻♂️",text:"",type:1,order:1900,group:1,subgroup:27,version:4,gender:1,tone:1,shortCodes:["man_getting_massage_tone1"]},{label:"man getting massage: medium-light skin tone",hexcode:"1F486-1F3FC-200D-2642-FE0F",emoji:"💆🏼♂️",text:"",type:1,order:1902,group:1,subgroup:27,version:4,gender:1,tone:2,shortCodes:["man_getting_massage_tone2"]},{label:"man getting massage: medium skin tone",hexcode:"1F486-1F3FD-200D-2642-FE0F",emoji:"💆🏽♂️",text:"",type:1,order:1904,group:1,subgroup:27,version:4,gender:1,tone:3,shortCodes:["man_getting_massage_tone3"]},{label:"man getting massage: medium-dark skin tone",hexcode:"1F486-1F3FE-200D-2642-FE0F",emoji:"💆🏾♂️",text:"",type:1,order:1906,group:1,subgroup:27,version:4,gender:1,tone:4,shortCodes:["man_getting_massage_tone4"]},{label:"man getting massage: dark skin tone",hexcode:"1F486-1F3FF-200D-2642-FE0F",emoji:"💆🏿♂️",text:"",type:1,order:1908,group:1,subgroup:27,version:4,gender:1,tone:5,shortCodes:["man_getting_massage_tone5"]}],shortCodes:["man_getting_massage"]},{label:"woman getting massage",hexcode:"1F486-200D-2640-FE0F",tags:["face","getting","headache","massage","relax","relaxing","salon","soothe","spa","tension","therapy","treatment","woman"],emoji:"💆♀️",text:"",type:1,order:1910,group:1,subgroup:27,version:4,gender:0,skins:[{label:"woman getting massage: light skin tone",hexcode:"1F486-1F3FB-200D-2640-FE0F",emoji:"💆🏻♀️",text:"",type:1,order:1912,group:1,subgroup:27,version:4,gender:0,tone:1,shortCodes:["woman_getting_massage_tone1"]},{label:"woman getting massage: medium-light skin tone",hexcode:"1F486-1F3FC-200D-2640-FE0F",emoji:"💆🏼♀️",text:"",type:1,order:1914,group:1,subgroup:27,version:4,gender:0,tone:2,shortCodes:["woman_getting_massage_tone2"]},{label:"woman getting massage: medium skin tone",hexcode:"1F486-1F3FD-200D-2640-FE0F",emoji:"💆🏽♀️",text:"",type:1,order:1916,group:1,subgroup:27,version:4,gender:0,tone:3,shortCodes:["woman_getting_massage_tone3"]},{label:"woman getting massage: medium-dark skin tone",hexcode:"1F486-1F3FE-200D-2640-FE0F",emoji:"💆🏾♀️",text:"",type:1,order:1918,group:1,subgroup:27,version:4,gender:0,tone:4,shortCodes:["woman_getting_massage_tone4"]},{label:"woman getting massage: dark skin tone",hexcode:"1F486-1F3FF-200D-2640-FE0F",emoji:"💆🏿♀️",text:"",type:1,order:1920,group:1,subgroup:27,version:4,gender:0,tone:5,shortCodes:["woman_getting_massage_tone5"]}],shortCodes:["woman_getting_massage"]},{label:"person getting haircut",hexcode:"1F487",tags:["barber","beauty","chop","cosmetology","cut","groom","hair","haircut","parlor","person","shears","style"],emoji:"💇",text:"",type:1,order:1922,group:1,subgroup:27,version:.6,skins:[{label:"person getting haircut: light skin tone",hexcode:"1F487-1F3FB",emoji:"💇🏻",text:"",type:1,order:1923,group:1,subgroup:27,version:1,tone:1,shortCodes:["haircut_tone1","person_getting_haircut_tone1"]},{label:"person getting haircut: medium-light skin tone",hexcode:"1F487-1F3FC",emoji:"💇🏼",text:"",type:1,order:1924,group:1,subgroup:27,version:1,tone:2,shortCodes:["haircut_tone2","person_getting_haircut_tone2"]},{label:"person getting haircut: medium skin tone",hexcode:"1F487-1F3FD",emoji:"💇🏽",text:"",type:1,order:1925,group:1,subgroup:27,version:1,tone:3,shortCodes:["haircut_tone3","person_getting_haircut_tone3"]},{label:"person getting haircut: medium-dark skin tone",hexcode:"1F487-1F3FE",emoji:"💇🏾",text:"",type:1,order:1926,group:1,subgroup:27,version:1,tone:4,shortCodes:["haircut_tone4","person_getting_haircut_tone4"]},{label:"person getting haircut: dark skin tone",hexcode:"1F487-1F3FF",emoji:"💇🏿",text:"",type:1,order:1927,group:1,subgroup:27,version:1,tone:5,shortCodes:["haircut_tone5","person_getting_haircut_tone5"]}],shortCodes:["haircut","person_getting_haircut"]},{label:"man getting haircut",hexcode:"1F487-200D-2642-FE0F",tags:["barber","beauty","chop","cosmetology","cut","groom","hair","haircut","man","parlor","person","shears","style"],emoji:"💇♂️",text:"",type:1,order:1928,group:1,subgroup:27,version:4,gender:1,skins:[{label:"man getting haircut: light skin tone",hexcode:"1F487-1F3FB-200D-2642-FE0F",emoji:"💇🏻♂️",text:"",type:1,order:1930,group:1,subgroup:27,version:4,gender:1,tone:1,shortCodes:["man_getting_haircut_tone1"]},{label:"man getting haircut: medium-light skin tone",hexcode:"1F487-1F3FC-200D-2642-FE0F",emoji:"💇🏼♂️",text:"",type:1,order:1932,group:1,subgroup:27,version:4,gender:1,tone:2,shortCodes:["man_getting_haircut_tone2"]},{label:"man getting haircut: medium skin tone",hexcode:"1F487-1F3FD-200D-2642-FE0F",emoji:"💇🏽♂️",text:"",type:1,order:1934,group:1,subgroup:27,version:4,gender:1,tone:3,shortCodes:["man_getting_haircut_tone3"]},{label:"man getting haircut: medium-dark skin tone",hexcode:"1F487-1F3FE-200D-2642-FE0F",emoji:"💇🏾♂️",text:"",type:1,order:1936,group:1,subgroup:27,version:4,gender:1,tone:4,shortCodes:["man_getting_haircut_tone4"]},{label:"man getting haircut: dark skin tone",hexcode:"1F487-1F3FF-200D-2642-FE0F",emoji:"💇🏿♂️",text:"",type:1,order:1938,group:1,subgroup:27,version:4,gender:1,tone:5,shortCodes:["man_getting_haircut_tone5"]}],shortCodes:["man_getting_haircut"]},{label:"woman getting haircut",hexcode:"1F487-200D-2640-FE0F",tags:["barber","beauty","chop","cosmetology","cut","groom","hair","haircut","parlor","person","shears","style","woman"],emoji:"💇♀️",text:"",type:1,order:1940,group:1,subgroup:27,version:4,gender:0,skins:[{label:"woman getting haircut: light skin tone",hexcode:"1F487-1F3FB-200D-2640-FE0F",emoji:"💇🏻♀️",text:"",type:1,order:1942,group:1,subgroup:27,version:4,gender:0,tone:1,shortCodes:["woman_getting_haircut_tone1"]},{label:"woman getting haircut: medium-light skin tone",hexcode:"1F487-1F3FC-200D-2640-FE0F",emoji:"💇🏼♀️",text:"",type:1,order:1944,group:1,subgroup:27,version:4,gender:0,tone:2,shortCodes:["woman_getting_haircut_tone2"]},{label:"woman getting haircut: medium skin tone",hexcode:"1F487-1F3FD-200D-2640-FE0F",emoji:"💇🏽♀️",text:"",type:1,order:1946,group:1,subgroup:27,version:4,gender:0,tone:3,shortCodes:["woman_getting_haircut_tone3"]},{label:"woman getting haircut: medium-dark skin tone",hexcode:"1F487-1F3FE-200D-2640-FE0F",emoji:"💇🏾♀️",text:"",type:1,order:1948,group:1,subgroup:27,version:4,gender:0,tone:4,shortCodes:["woman_getting_haircut_tone4"]},{label:"woman getting haircut: dark skin tone",hexcode:"1F487-1F3FF-200D-2640-FE0F",emoji:"💇🏿♀️",text:"",type:1,order:1950,group:1,subgroup:27,version:4,gender:0,tone:5,shortCodes:["woman_getting_haircut_tone5"]}],shortCodes:["woman_getting_haircut"]},{label:"person walking",hexcode:"1F6B6",tags:["amble","gait","hike","man","pace","pedestrian","person","stride","stroll","walk","walking"],emoji:"🚶",text:"",type:1,order:1952,group:1,subgroup:27,version:.6,skins:[{label:"person walking: light skin tone",hexcode:"1F6B6-1F3FB",emoji:"🚶🏻",text:"",type:1,order:1953,group:1,subgroup:27,version:1,tone:1,shortCodes:["person_walking_tone1","walking_tone1"]},{label:"person walking: medium-light skin tone",hexcode:"1F6B6-1F3FC",emoji:"🚶🏼",text:"",type:1,order:1954,group:1,subgroup:27,version:1,tone:2,shortCodes:["person_walking_tone2","walking_tone2"]},{label:"person walking: medium skin tone",hexcode:"1F6B6-1F3FD",emoji:"🚶🏽",text:"",type:1,order:1955,group:1,subgroup:27,version:1,tone:3,shortCodes:["person_walking_tone3","walking_tone3"]},{label:"person walking: medium-dark skin tone",hexcode:"1F6B6-1F3FE",emoji:"🚶🏾",text:"",type:1,order:1956,group:1,subgroup:27,version:1,tone:4,shortCodes:["person_walking_tone4","walking_tone4"]},{label:"person walking: dark skin tone",hexcode:"1F6B6-1F3FF",emoji:"🚶🏿",text:"",type:1,order:1957,group:1,subgroup:27,version:1,tone:5,shortCodes:["person_walking_tone5","walking_tone5"]}],shortCodes:["person_walking","walking"]},{label:"man walking",hexcode:"1F6B6-200D-2642-FE0F",tags:["amble","gait","hike","man","pace","pedestrian","stride","stroll","walk","walking"],emoji:"🚶♂️",text:"",type:1,order:1958,group:1,subgroup:27,version:4,gender:1,skins:[{label:"man walking: light skin tone",hexcode:"1F6B6-1F3FB-200D-2642-FE0F",emoji:"🚶🏻♂️",text:"",type:1,order:1960,group:1,subgroup:27,version:4,gender:1,tone:1,shortCodes:["man_walking_tone1"]},{label:"man walking: medium-light skin tone",hexcode:"1F6B6-1F3FC-200D-2642-FE0F",emoji:"🚶🏼♂️",text:"",type:1,order:1962,group:1,subgroup:27,version:4,gender:1,tone:2,shortCodes:["man_walking_tone2"]},{label:"man walking: medium skin tone",hexcode:"1F6B6-1F3FD-200D-2642-FE0F",emoji:"🚶🏽♂️",text:"",type:1,order:1964,group:1,subgroup:27,version:4,gender:1,tone:3,shortCodes:["man_walking_tone3"]},{label:"man walking: medium-dark skin tone",hexcode:"1F6B6-1F3FE-200D-2642-FE0F",emoji:"🚶🏾♂️",text:"",type:1,order:1966,group:1,subgroup:27,version:4,gender:1,tone:4,shortCodes:["man_walking_tone4"]},{label:"man walking: dark skin tone",hexcode:"1F6B6-1F3FF-200D-2642-FE0F",emoji:"🚶🏿♂️",text:"",type:1,order:1968,group:1,subgroup:27,version:4,gender:1,tone:5,shortCodes:["man_walking_tone5"]}],shortCodes:["man_walking"]},{label:"woman walking",hexcode:"1F6B6-200D-2640-FE0F",tags:["amble","gait","hike","man","pace","pedestrian","stride","stroll","walk","walking","woman"],emoji:"🚶♀️",text:"",type:1,order:1970,group:1,subgroup:27,version:4,gender:0,skins:[{label:"woman walking: light skin tone",hexcode:"1F6B6-1F3FB-200D-2640-FE0F",emoji:"🚶🏻♀️",text:"",type:1,order:1972,group:1,subgroup:27,version:4,gender:0,tone:1,shortCodes:["woman_walking_tone1"]},{label:"woman walking: medium-light skin tone",hexcode:"1F6B6-1F3FC-200D-2640-FE0F",emoji:"🚶🏼♀️",text:"",type:1,order:1974,group:1,subgroup:27,version:4,gender:0,tone:2,shortCodes:["woman_walking_tone2"]},{label:"woman walking: medium skin tone",hexcode:"1F6B6-1F3FD-200D-2640-FE0F",emoji:"🚶🏽♀️",text:"",type:1,order:1976,group:1,subgroup:27,version:4,gender:0,tone:3,shortCodes:["woman_walking_tone3"]},{label:"woman walking: medium-dark skin tone",hexcode:"1F6B6-1F3FE-200D-2640-FE0F",emoji:"🚶🏾♀️",text:"",type:1,order:1978,group:1,subgroup:27,version:4,gender:0,tone:4,shortCodes:["woman_walking_tone4"]},{label:"woman walking: dark skin tone",hexcode:"1F6B6-1F3FF-200D-2640-FE0F",emoji:"🚶🏿♀️",text:"",type:1,order:1980,group:1,subgroup:27,version:4,gender:0,tone:5,shortCodes:["woman_walking_tone5"]}],shortCodes:["woman_walking"]},{label:"person walking: facing right",hexcode:"1F6B6-200D-27A1-FE0F",tags:["amble","facing","gait","hike","man","pace","pedestrian","person","right","stride","stroll","walk","walking"],emoji:"🚶➡️",text:"",type:1,order:1982,group:1,subgroup:27,version:15.1,skins:[{label:"person walking: light skin tone, facing right",hexcode:"1F6B6-1F3FB-200D-27A1-FE0F",emoji:"🚶🏻➡️",text:"",type:1,order:1984,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["person_walking_right_tone1"]},{label:"person walking: medium-light skin tone, facing right",hexcode:"1F6B6-1F3FC-200D-27A1-FE0F",emoji:"🚶🏼➡️",text:"",type:1,order:1986,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["person_walking_right_tone2"]},{label:"person walking: medium skin tone, facing right",hexcode:"1F6B6-1F3FD-200D-27A1-FE0F",emoji:"🚶🏽➡️",text:"",type:1,order:1988,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["person_walking_right_tone3"]},{label:"person walking: medium-dark skin tone, facing right",hexcode:"1F6B6-1F3FE-200D-27A1-FE0F",emoji:"🚶🏾➡️",text:"",type:1,order:1990,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["person_walking_right_tone4"]},{label:"person walking: dark skin tone, facing right",hexcode:"1F6B6-1F3FF-200D-27A1-FE0F",emoji:"🚶🏿➡️",text:"",type:1,order:1992,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["person_walking_right_tone5"]}],shortCodes:["person_walking_right"]},{label:"woman walking: facing right",hexcode:"1F6B6-200D-2640-FE0F-200D-27A1-FE0F",tags:["amble","facing","gait","hike","man","pace","pedestrian","right","stride","stroll","walk","walking","woman"],emoji:"🚶♀️➡️",text:"",type:1,order:1994,group:1,subgroup:27,version:15.1,gender:0,skins:[{label:"woman walking: light skin tone, facing right",hexcode:"1F6B6-1F3FB-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🚶🏻♀️➡️",text:"",type:1,order:1998,group:1,subgroup:27,version:15.1,gender:0,tone:1,shortCodes:["woman_walking_right_tone1"]},{label:"woman walking: medium-light skin tone, facing right",hexcode:"1F6B6-1F3FC-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🚶🏼♀️➡️",text:"",type:1,order:2002,group:1,subgroup:27,version:15.1,gender:0,tone:2,shortCodes:["woman_walking_right_tone2"]},{label:"woman walking: medium skin tone, facing right",hexcode:"1F6B6-1F3FD-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🚶🏽♀️➡️",text:"",type:1,order:2006,group:1,subgroup:27,version:15.1,gender:0,tone:3,shortCodes:["woman_walking_right_tone3"]},{label:"woman walking: medium-dark skin tone, facing right",hexcode:"1F6B6-1F3FE-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🚶🏾♀️➡️",text:"",type:1,order:2010,group:1,subgroup:27,version:15.1,gender:0,tone:4,shortCodes:["woman_walking_right_tone4"]},{label:"woman walking: dark skin tone, facing right",hexcode:"1F6B6-1F3FF-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🚶🏿♀️➡️",text:"",type:1,order:2014,group:1,subgroup:27,version:15.1,gender:0,tone:5,shortCodes:["woman_walking_right_tone5"]}],shortCodes:["woman_walking_right"]},{label:"man walking: facing right",hexcode:"1F6B6-200D-2642-FE0F-200D-27A1-FE0F",tags:["amble","facing","gait","hike","man","pace","pedestrian","right","stride","stroll","walk","walking"],emoji:"🚶♂️➡️",text:"",type:1,order:2018,group:1,subgroup:27,version:15.1,gender:1,skins:[{label:"man walking: light skin tone, facing right",hexcode:"1F6B6-1F3FB-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🚶🏻♂️➡️",text:"",type:1,order:2022,group:1,subgroup:27,version:15.1,gender:1,tone:1,shortCodes:["man_walking_right_tone1"]},{label:"man walking: medium-light skin tone, facing right",hexcode:"1F6B6-1F3FC-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🚶🏼♂️➡️",text:"",type:1,order:2026,group:1,subgroup:27,version:15.1,gender:1,tone:2,shortCodes:["man_walking_right_tone2"]},{label:"man walking: medium skin tone, facing right",hexcode:"1F6B6-1F3FD-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🚶🏽♂️➡️",text:"",type:1,order:2030,group:1,subgroup:27,version:15.1,gender:1,tone:3,shortCodes:["man_walking_right_tone3"]},{label:"man walking: medium-dark skin tone, facing right",hexcode:"1F6B6-1F3FE-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🚶🏾♂️➡️",text:"",type:1,order:2034,group:1,subgroup:27,version:15.1,gender:1,tone:4,shortCodes:["man_walking_right_tone4"]},{label:"man walking: dark skin tone, facing right",hexcode:"1F6B6-1F3FF-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🚶🏿♂️➡️",text:"",type:1,order:2038,group:1,subgroup:27,version:15.1,gender:1,tone:5,shortCodes:["man_walking_right_tone5"]}],shortCodes:["man_walking_right"]},{label:"person standing",hexcode:"1F9CD",tags:["person","stand","standing"],emoji:"🧍",text:"",type:1,order:2042,group:1,subgroup:27,version:12,skins:[{label:"person standing: light skin tone",hexcode:"1F9CD-1F3FB",emoji:"🧍🏻",text:"",type:1,order:2043,group:1,subgroup:27,version:12,tone:1,shortCodes:["person_standing_tone1","standing_tone1"]},{label:"person standing: medium-light skin tone",hexcode:"1F9CD-1F3FC",emoji:"🧍🏼",text:"",type:1,order:2044,group:1,subgroup:27,version:12,tone:2,shortCodes:["person_standing_tone2","standing_tone2"]},{label:"person standing: medium skin tone",hexcode:"1F9CD-1F3FD",emoji:"🧍🏽",text:"",type:1,order:2045,group:1,subgroup:27,version:12,tone:3,shortCodes:["person_standing_tone3","standing_tone3"]},{label:"person standing: medium-dark skin tone",hexcode:"1F9CD-1F3FE",emoji:"🧍🏾",text:"",type:1,order:2046,group:1,subgroup:27,version:12,tone:4,shortCodes:["person_standing_tone4","standing_tone4"]},{label:"person standing: dark skin tone",hexcode:"1F9CD-1F3FF",emoji:"🧍🏿",text:"",type:1,order:2047,group:1,subgroup:27,version:12,tone:5,shortCodes:["person_standing_tone5","standing_tone5"]}],shortCodes:["person_standing","standing"]},{label:"man standing",hexcode:"1F9CD-200D-2642-FE0F",tags:["man","stand","standing"],emoji:"🧍♂️",text:"",type:1,order:2048,group:1,subgroup:27,version:12,gender:1,skins:[{label:"man standing: light skin tone",hexcode:"1F9CD-1F3FB-200D-2642-FE0F",emoji:"🧍🏻♂️",text:"",type:1,order:2050,group:1,subgroup:27,version:12,gender:1,tone:1,shortCodes:["man_standing_tone1"]},{label:"man standing: medium-light skin tone",hexcode:"1F9CD-1F3FC-200D-2642-FE0F",emoji:"🧍🏼♂️",text:"",type:1,order:2052,group:1,subgroup:27,version:12,gender:1,tone:2,shortCodes:["man_standing_tone2"]},{label:"man standing: medium skin tone",hexcode:"1F9CD-1F3FD-200D-2642-FE0F",emoji:"🧍🏽♂️",text:"",type:1,order:2054,group:1,subgroup:27,version:12,gender:1,tone:3,shortCodes:["man_standing_tone3"]},{label:"man standing: medium-dark skin tone",hexcode:"1F9CD-1F3FE-200D-2642-FE0F",emoji:"🧍🏾♂️",text:"",type:1,order:2056,group:1,subgroup:27,version:12,gender:1,tone:4,shortCodes:["man_standing_tone4"]},{label:"man standing: dark skin tone",hexcode:"1F9CD-1F3FF-200D-2642-FE0F",emoji:"🧍🏿♂️",text:"",type:1,order:2058,group:1,subgroup:27,version:12,gender:1,tone:5,shortCodes:["man_standing_tone5"]}],shortCodes:["man_standing"]},{label:"woman standing",hexcode:"1F9CD-200D-2640-FE0F",tags:["stand","standing","woman"],emoji:"🧍♀️",text:"",type:1,order:2060,group:1,subgroup:27,version:12,gender:0,skins:[{label:"woman standing: light skin tone",hexcode:"1F9CD-1F3FB-200D-2640-FE0F",emoji:"🧍🏻♀️",text:"",type:1,order:2062,group:1,subgroup:27,version:12,gender:0,tone:1,shortCodes:["woman_standing_tone1"]},{label:"woman standing: medium-light skin tone",hexcode:"1F9CD-1F3FC-200D-2640-FE0F",emoji:"🧍🏼♀️",text:"",type:1,order:2064,group:1,subgroup:27,version:12,gender:0,tone:2,shortCodes:["woman_standing_tone2"]},{label:"woman standing: medium skin tone",hexcode:"1F9CD-1F3FD-200D-2640-FE0F",emoji:"🧍🏽♀️",text:"",type:1,order:2066,group:1,subgroup:27,version:12,gender:0,tone:3,shortCodes:["woman_standing_tone3"]},{label:"woman standing: medium-dark skin tone",hexcode:"1F9CD-1F3FE-200D-2640-FE0F",emoji:"🧍🏾♀️",text:"",type:1,order:2068,group:1,subgroup:27,version:12,gender:0,tone:4,shortCodes:["woman_standing_tone4"]},{label:"woman standing: dark skin tone",hexcode:"1F9CD-1F3FF-200D-2640-FE0F",emoji:"🧍🏿♀️",text:"",type:1,order:2070,group:1,subgroup:27,version:12,gender:0,tone:5,shortCodes:["woman_standing_tone5"]}],shortCodes:["woman_standing"]},{label:"person kneeling",hexcode:"1F9CE",tags:["kneel","kneeling","knees","person"],emoji:"🧎",text:"",type:1,order:2072,group:1,subgroup:27,version:12,skins:[{label:"person kneeling: light skin tone",hexcode:"1F9CE-1F3FB",emoji:"🧎🏻",text:"",type:1,order:2073,group:1,subgroup:27,version:12,tone:1,shortCodes:["kneeling_tone1","person_kneeling_tone1"]},{label:"person kneeling: medium-light skin tone",hexcode:"1F9CE-1F3FC",emoji:"🧎🏼",text:"",type:1,order:2074,group:1,subgroup:27,version:12,tone:2,shortCodes:["kneeling_tone2","person_kneeling_tone2"]},{label:"person kneeling: medium skin tone",hexcode:"1F9CE-1F3FD",emoji:"🧎🏽",text:"",type:1,order:2075,group:1,subgroup:27,version:12,tone:3,shortCodes:["kneeling_tone3","person_kneeling_tone3"]},{label:"person kneeling: medium-dark skin tone",hexcode:"1F9CE-1F3FE",emoji:"🧎🏾",text:"",type:1,order:2076,group:1,subgroup:27,version:12,tone:4,shortCodes:["kneeling_tone4","person_kneeling_tone4"]},{label:"person kneeling: dark skin tone",hexcode:"1F9CE-1F3FF",emoji:"🧎🏿",text:"",type:1,order:2077,group:1,subgroup:27,version:12,tone:5,shortCodes:["kneeling_tone5","person_kneeling_tone5"]}],shortCodes:["kneeling","person_kneeling"]},{label:"man kneeling",hexcode:"1F9CE-200D-2642-FE0F",tags:["kneel","kneeling","knees","man"],emoji:"🧎♂️",text:"",type:1,order:2078,group:1,subgroup:27,version:12,gender:1,skins:[{label:"man kneeling: light skin tone",hexcode:"1F9CE-1F3FB-200D-2642-FE0F",emoji:"🧎🏻♂️",text:"",type:1,order:2080,group:1,subgroup:27,version:12,gender:1,tone:1,shortCodes:["man_kneeling_tone1"]},{label:"man kneeling: medium-light skin tone",hexcode:"1F9CE-1F3FC-200D-2642-FE0F",emoji:"🧎🏼♂️",text:"",type:1,order:2082,group:1,subgroup:27,version:12,gender:1,tone:2,shortCodes:["man_kneeling_tone2"]},{label:"man kneeling: medium skin tone",hexcode:"1F9CE-1F3FD-200D-2642-FE0F",emoji:"🧎🏽♂️",text:"",type:1,order:2084,group:1,subgroup:27,version:12,gender:1,tone:3,shortCodes:["man_kneeling_tone3"]},{label:"man kneeling: medium-dark skin tone",hexcode:"1F9CE-1F3FE-200D-2642-FE0F",emoji:"🧎🏾♂️",text:"",type:1,order:2086,group:1,subgroup:27,version:12,gender:1,tone:4,shortCodes:["man_kneeling_tone4"]},{label:"man kneeling: dark skin tone",hexcode:"1F9CE-1F3FF-200D-2642-FE0F",emoji:"🧎🏿♂️",text:"",type:1,order:2088,group:1,subgroup:27,version:12,gender:1,tone:5,shortCodes:["man_kneeling_tone5"]}],shortCodes:["man_kneeling"]},{label:"woman kneeling",hexcode:"1F9CE-200D-2640-FE0F",tags:["kneel","kneeling","knees","woman"],emoji:"🧎♀️",text:"",type:1,order:2090,group:1,subgroup:27,version:12,gender:0,skins:[{label:"woman kneeling: light skin tone",hexcode:"1F9CE-1F3FB-200D-2640-FE0F",emoji:"🧎🏻♀️",text:"",type:1,order:2092,group:1,subgroup:27,version:12,gender:0,tone:1,shortCodes:["woman_kneeling_tone1"]},{label:"woman kneeling: medium-light skin tone",hexcode:"1F9CE-1F3FC-200D-2640-FE0F",emoji:"🧎🏼♀️",text:"",type:1,order:2094,group:1,subgroup:27,version:12,gender:0,tone:2,shortCodes:["woman_kneeling_tone2"]},{label:"woman kneeling: medium skin tone",hexcode:"1F9CE-1F3FD-200D-2640-FE0F",emoji:"🧎🏽♀️",text:"",type:1,order:2096,group:1,subgroup:27,version:12,gender:0,tone:3,shortCodes:["woman_kneeling_tone3"]},{label:"woman kneeling: medium-dark skin tone",hexcode:"1F9CE-1F3FE-200D-2640-FE0F",emoji:"🧎🏾♀️",text:"",type:1,order:2098,group:1,subgroup:27,version:12,gender:0,tone:4,shortCodes:["woman_kneeling_tone4"]},{label:"woman kneeling: dark skin tone",hexcode:"1F9CE-1F3FF-200D-2640-FE0F",emoji:"🧎🏿♀️",text:"",type:1,order:2100,group:1,subgroup:27,version:12,gender:0,tone:5,shortCodes:["woman_kneeling_tone5"]}],shortCodes:["woman_kneeling"]},{label:"person kneeling: facing right",hexcode:"1F9CE-200D-27A1-FE0F",tags:["facing","kneel","kneeling","knees","person","right"],emoji:"🧎➡️",text:"",type:1,order:2102,group:1,subgroup:27,version:15.1,skins:[{label:"person kneeling: light skin tone, facing right",hexcode:"1F9CE-1F3FB-200D-27A1-FE0F",emoji:"🧎🏻➡️",text:"",type:1,order:2104,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["person_kneeling_right_tone1"]},{label:"person kneeling: medium-light skin tone, facing right",hexcode:"1F9CE-1F3FC-200D-27A1-FE0F",emoji:"🧎🏼➡️",text:"",type:1,order:2106,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["person_kneeling_right_tone2"]},{label:"person kneeling: medium skin tone, facing right",hexcode:"1F9CE-1F3FD-200D-27A1-FE0F",emoji:"🧎🏽➡️",text:"",type:1,order:2108,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["person_kneeling_right_tone3"]},{label:"person kneeling: medium-dark skin tone, facing right",hexcode:"1F9CE-1F3FE-200D-27A1-FE0F",emoji:"🧎🏾➡️",text:"",type:1,order:2110,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["person_kneeling_right_tone4"]},{label:"person kneeling: dark skin tone, facing right",hexcode:"1F9CE-1F3FF-200D-27A1-FE0F",emoji:"🧎🏿➡️",text:"",type:1,order:2112,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["person_kneeling_right_tone5"]}],shortCodes:["person_kneeling_right"]},{label:"woman kneeling: facing right",hexcode:"1F9CE-200D-2640-FE0F-200D-27A1-FE0F",tags:["facing","kneel","kneeling","knees","right","woman"],emoji:"🧎♀️➡️",text:"",type:1,order:2114,group:1,subgroup:27,version:15.1,gender:0,skins:[{label:"woman kneeling: light skin tone, facing right",hexcode:"1F9CE-1F3FB-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🧎🏻♀️➡️",text:"",type:1,order:2118,group:1,subgroup:27,version:15.1,gender:0,tone:1,shortCodes:["woman_kneeling_right_tone1"]},{label:"woman kneeling: medium-light skin tone, facing right",hexcode:"1F9CE-1F3FC-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🧎🏼♀️➡️",text:"",type:1,order:2122,group:1,subgroup:27,version:15.1,gender:0,tone:2,shortCodes:["woman_kneeling_right_tone2"]},{label:"woman kneeling: medium skin tone, facing right",hexcode:"1F9CE-1F3FD-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🧎🏽♀️➡️",text:"",type:1,order:2126,group:1,subgroup:27,version:15.1,gender:0,tone:3,shortCodes:["woman_kneeling_right_tone3"]},{label:"woman kneeling: medium-dark skin tone, facing right",hexcode:"1F9CE-1F3FE-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🧎🏾♀️➡️",text:"",type:1,order:2130,group:1,subgroup:27,version:15.1,gender:0,tone:4,shortCodes:["woman_kneeling_right_tone4"]},{label:"woman kneeling: dark skin tone, facing right",hexcode:"1F9CE-1F3FF-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🧎🏿♀️➡️",text:"",type:1,order:2134,group:1,subgroup:27,version:15.1,gender:0,tone:5,shortCodes:["woman_kneeling_right_tone5"]}],shortCodes:["woman_kneeling_right"]},{label:"man kneeling: facing right",hexcode:"1F9CE-200D-2642-FE0F-200D-27A1-FE0F",tags:["facing","kneel","kneeling","knees","man","right"],emoji:"🧎♂️➡️",text:"",type:1,order:2138,group:1,subgroup:27,version:15.1,gender:1,skins:[{label:"man kneeling: light skin tone, facing right",hexcode:"1F9CE-1F3FB-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🧎🏻♂️➡️",text:"",type:1,order:2142,group:1,subgroup:27,version:15.1,gender:1,tone:1,shortCodes:["man_kneeling_right_tone1"]},{label:"man kneeling: medium-light skin tone, facing right",hexcode:"1F9CE-1F3FC-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🧎🏼♂️➡️",text:"",type:1,order:2146,group:1,subgroup:27,version:15.1,gender:1,tone:2,shortCodes:["man_kneeling_right_tone2"]},{label:"man kneeling: medium skin tone, facing right",hexcode:"1F9CE-1F3FD-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🧎🏽♂️➡️",text:"",type:1,order:2150,group:1,subgroup:27,version:15.1,gender:1,tone:3,shortCodes:["man_kneeling_right_tone3"]},{label:"man kneeling: medium-dark skin tone, facing right",hexcode:"1F9CE-1F3FE-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🧎🏾♂️➡️",text:"",type:1,order:2154,group:1,subgroup:27,version:15.1,gender:1,tone:4,shortCodes:["man_kneeling_right_tone4"]},{label:"man kneeling: dark skin tone, facing right",hexcode:"1F9CE-1F3FF-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🧎🏿♂️➡️",text:"",type:1,order:2158,group:1,subgroup:27,version:15.1,gender:1,tone:5,shortCodes:["man_kneeling_right_tone5"]}],shortCodes:["man_kneeling_right"]},{label:"person with white cane",hexcode:"1F9D1-200D-1F9AF",tags:["accessibility","blind","cane","person","probing","white"],emoji:"🧑🦯",text:"",type:1,order:2162,group:1,subgroup:27,version:12.1,skins:[{label:"person with white cane: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F9AF",emoji:"🧑🏻🦯",text:"",type:1,order:2163,group:1,subgroup:27,version:12.1,tone:1,shortCodes:["person_with_probing_cane_tone1","person_with_white_cane_tone1"]},{label:"person with white cane: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F9AF",emoji:"🧑🏼🦯",text:"",type:1,order:2164,group:1,subgroup:27,version:12.1,tone:2,shortCodes:["person_with_probing_cane_tone2","person_with_white_cane_tone2"]},{label:"person with white cane: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F9AF",emoji:"🧑🏽🦯",text:"",type:1,order:2165,group:1,subgroup:27,version:12.1,tone:3,shortCodes:["person_with_probing_cane_tone3","person_with_white_cane_tone3"]},{label:"person with white cane: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F9AF",emoji:"🧑🏾🦯",text:"",type:1,order:2166,group:1,subgroup:27,version:12.1,tone:4,shortCodes:["person_with_probing_cane_tone4","person_with_white_cane_tone4"]},{label:"person with white cane: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F9AF",emoji:"🧑🏿🦯",text:"",type:1,order:2167,group:1,subgroup:27,version:12.1,tone:5,shortCodes:["person_with_probing_cane_tone5","person_with_white_cane_tone5"]}],shortCodes:["person_with_probing_cane","person_with_white_cane"]},{label:"person with white cane: facing right",hexcode:"1F9D1-200D-1F9AF-200D-27A1-FE0F",tags:["accessibility","blind","cane","facing","person","probing","right","white"],emoji:"🧑🦯➡️",text:"",type:1,order:2168,group:1,subgroup:27,version:15.1,skins:[{label:"person with white cane: light skin tone, facing right",hexcode:"1F9D1-1F3FB-200D-1F9AF-200D-27A1-FE0F",emoji:"🧑🏻🦯➡️",text:"",type:1,order:2170,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["person_with_white_cane_right_tone1"]},{label:"person with white cane: medium-light skin tone, facing right",hexcode:"1F9D1-1F3FC-200D-1F9AF-200D-27A1-FE0F",emoji:"🧑🏼🦯➡️",text:"",type:1,order:2172,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["person_with_white_cane_right_tone2"]},{label:"person with white cane: medium skin tone, facing right",hexcode:"1F9D1-1F3FD-200D-1F9AF-200D-27A1-FE0F",emoji:"🧑🏽🦯➡️",text:"",type:1,order:2174,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["person_with_white_cane_right_tone3"]},{label:"person with white cane: medium-dark skin tone, facing right",hexcode:"1F9D1-1F3FE-200D-1F9AF-200D-27A1-FE0F",emoji:"🧑🏾🦯➡️",text:"",type:1,order:2176,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["person_with_white_cane_right_tone4"]},{label:"person with white cane: dark skin tone, facing right",hexcode:"1F9D1-1F3FF-200D-1F9AF-200D-27A1-FE0F",emoji:"🧑🏿🦯➡️",text:"",type:1,order:2178,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["person_with_white_cane_right_tone5"]}],shortCodes:["person_with_white_cane_right"]},{label:"man with white cane",hexcode:"1F468-200D-1F9AF",tags:["accessibility","blind","cane","man","probing","white"],emoji:"👨🦯",text:"",type:1,order:2180,group:1,subgroup:27,version:12,skins:[{label:"man with white cane: light skin tone",hexcode:"1F468-1F3FB-200D-1F9AF",emoji:"👨🏻🦯",text:"",type:1,order:2181,group:1,subgroup:27,version:12,tone:1,shortCodes:["man_with_probing_cane_tone1","man_with_white_cane_tone1"]},{label:"man with white cane: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F9AF",emoji:"👨🏼🦯",text:"",type:1,order:2182,group:1,subgroup:27,version:12,tone:2,shortCodes:["man_with_probing_cane_tone2","man_with_white_cane_tone2"]},{label:"man with white cane: medium skin tone",hexcode:"1F468-1F3FD-200D-1F9AF",emoji:"👨🏽🦯",text:"",type:1,order:2183,group:1,subgroup:27,version:12,tone:3,shortCodes:["man_with_probing_cane_tone3","man_with_white_cane_tone3"]},{label:"man with white cane: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F9AF",emoji:"👨🏾🦯",text:"",type:1,order:2184,group:1,subgroup:27,version:12,tone:4,shortCodes:["man_with_probing_cane_tone4","man_with_white_cane_tone4"]},{label:"man with white cane: dark skin tone",hexcode:"1F468-1F3FF-200D-1F9AF",emoji:"👨🏿🦯",text:"",type:1,order:2185,group:1,subgroup:27,version:12,tone:5,shortCodes:["man_with_probing_cane_tone5","man_with_white_cane_tone5"]}],shortCodes:["man_with_probing_cane","man_with_white_cane"]},{label:"man with white cane: facing right",hexcode:"1F468-200D-1F9AF-200D-27A1-FE0F",tags:["accessibility","blind","cane","facing","man","probing","right","white"],emoji:"👨🦯➡️",text:"",type:1,order:2186,group:1,subgroup:27,version:15.1,skins:[{label:"man with white cane: light skin tone, facing right",hexcode:"1F468-1F3FB-200D-1F9AF-200D-27A1-FE0F",emoji:"👨🏻🦯➡️",text:"",type:1,order:2188,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["man_with_white_cane_right_tone1"]},{label:"man with white cane: medium-light skin tone, facing right",hexcode:"1F468-1F3FC-200D-1F9AF-200D-27A1-FE0F",emoji:"👨🏼🦯➡️",text:"",type:1,order:2190,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["man_with_white_cane_right_tone2"]},{label:"man with white cane: medium skin tone, facing right",hexcode:"1F468-1F3FD-200D-1F9AF-200D-27A1-FE0F",emoji:"👨🏽🦯➡️",text:"",type:1,order:2192,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["man_with_white_cane_right_tone3"]},{label:"man with white cane: medium-dark skin tone, facing right",hexcode:"1F468-1F3FE-200D-1F9AF-200D-27A1-FE0F",emoji:"👨🏾🦯➡️",text:"",type:1,order:2194,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["man_with_white_cane_right_tone4"]},{label:"man with white cane: dark skin tone, facing right",hexcode:"1F468-1F3FF-200D-1F9AF-200D-27A1-FE0F",emoji:"👨🏿🦯➡️",text:"",type:1,order:2196,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["man_with_white_cane_right_tone5"]}],shortCodes:["man_with_white_cane_right"]},{label:"woman with white cane",hexcode:"1F469-200D-1F9AF",tags:["accessibility","blind","cane","probing","white","woman"],emoji:"👩🦯",text:"",type:1,order:2198,group:1,subgroup:27,version:12,skins:[{label:"woman with white cane: light skin tone",hexcode:"1F469-1F3FB-200D-1F9AF",emoji:"👩🏻🦯",text:"",type:1,order:2199,group:1,subgroup:27,version:12,tone:1,shortCodes:["woman_with_probing_cane_tone1","woman_with_white_cane_tone1"]},{label:"woman with white cane: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F9AF",emoji:"👩🏼🦯",text:"",type:1,order:2200,group:1,subgroup:27,version:12,tone:2,shortCodes:["woman_with_probing_cane_tone2","woman_with_white_cane_tone2"]},{label:"woman with white cane: medium skin tone",hexcode:"1F469-1F3FD-200D-1F9AF",emoji:"👩🏽🦯",text:"",type:1,order:2201,group:1,subgroup:27,version:12,tone:3,shortCodes:["woman_with_probing_cane_tone3","woman_with_white_cane_tone3"]},{label:"woman with white cane: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F9AF",emoji:"👩🏾🦯",text:"",type:1,order:2202,group:1,subgroup:27,version:12,tone:4,shortCodes:["woman_with_probing_cane_tone4","woman_with_white_cane_tone4"]},{label:"woman with white cane: dark skin tone",hexcode:"1F469-1F3FF-200D-1F9AF",emoji:"👩🏿🦯",text:"",type:1,order:2203,group:1,subgroup:27,version:12,tone:5,shortCodes:["woman_with_probing_cane_tone5","woman_with_white_cane_tone5"]}],shortCodes:["woman_with_probing_cane","woman_with_white_cane"]},{label:"woman with white cane: facing right",hexcode:"1F469-200D-1F9AF-200D-27A1-FE0F",tags:["accessibility","blind","cane","facing","probing","right","white","woman"],emoji:"👩🦯➡️",text:"",type:1,order:2204,group:1,subgroup:27,version:15.1,skins:[{label:"woman with white cane: light skin tone, facing right",hexcode:"1F469-1F3FB-200D-1F9AF-200D-27A1-FE0F",emoji:"👩🏻🦯➡️",text:"",type:1,order:2206,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["woman_with_white_cane_right_tone1"]},{label:"woman with white cane: medium-light skin tone, facing right",hexcode:"1F469-1F3FC-200D-1F9AF-200D-27A1-FE0F",emoji:"👩🏼🦯➡️",text:"",type:1,order:2208,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["woman_with_white_cane_right_tone2"]},{label:"woman with white cane: medium skin tone, facing right",hexcode:"1F469-1F3FD-200D-1F9AF-200D-27A1-FE0F",emoji:"👩🏽🦯➡️",text:"",type:1,order:2210,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["woman_with_white_cane_right_tone3"]},{label:"woman with white cane: medium-dark skin tone, facing right",hexcode:"1F469-1F3FE-200D-1F9AF-200D-27A1-FE0F",emoji:"👩🏾🦯➡️",text:"",type:1,order:2212,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["woman_with_white_cane_right_tone4"]},{label:"woman with white cane: dark skin tone, facing right",hexcode:"1F469-1F3FF-200D-1F9AF-200D-27A1-FE0F",emoji:"👩🏿🦯➡️",text:"",type:1,order:2214,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["woman_with_white_cane_right_tone5"]}],shortCodes:["woman_with_white_cane_right"]},{label:"person in motorized wheelchair",hexcode:"1F9D1-200D-1F9BC",tags:["accessibility","motorized","person","wheelchair"],emoji:"🧑🦼",text:"",type:1,order:2216,group:1,subgroup:27,version:12.1,skins:[{label:"person in motorized wheelchair: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F9BC",emoji:"🧑🏻🦼",text:"",type:1,order:2217,group:1,subgroup:27,version:12.1,tone:1,shortCodes:["person_in_motorized_wheelchair_tone1"]},{label:"person in motorized wheelchair: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F9BC",emoji:"🧑🏼🦼",text:"",type:1,order:2218,group:1,subgroup:27,version:12.1,tone:2,shortCodes:["person_in_motorized_wheelchair_tone2"]},{label:"person in motorized wheelchair: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F9BC",emoji:"🧑🏽🦼",text:"",type:1,order:2219,group:1,subgroup:27,version:12.1,tone:3,shortCodes:["person_in_motorized_wheelchair_tone3"]},{label:"person in motorized wheelchair: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F9BC",emoji:"🧑🏾🦼",text:"",type:1,order:2220,group:1,subgroup:27,version:12.1,tone:4,shortCodes:["person_in_motorized_wheelchair_tone4"]},{label:"person in motorized wheelchair: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F9BC",emoji:"🧑🏿🦼",text:"",type:1,order:2221,group:1,subgroup:27,version:12.1,tone:5,shortCodes:["person_in_motorized_wheelchair_tone5"]}],shortCodes:["person_in_motorized_wheelchair"]},{label:"person in motorized wheelchair: facing right",hexcode:"1F9D1-200D-1F9BC-200D-27A1-FE0F",tags:["accessibility","facing","motorized","person","right","wheelchair"],emoji:"🧑🦼➡️",text:"",type:1,order:2222,group:1,subgroup:27,version:15.1,skins:[{label:"person in motorized wheelchair: light skin tone, facing right",hexcode:"1F9D1-1F3FB-200D-1F9BC-200D-27A1-FE0F",emoji:"🧑🏻🦼➡️",text:"",type:1,order:2224,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["person_in_motorized_wheelchair_right_tone1"]},{label:"person in motorized wheelchair: medium-light skin tone, facing right",hexcode:"1F9D1-1F3FC-200D-1F9BC-200D-27A1-FE0F",emoji:"🧑🏼🦼➡️",text:"",type:1,order:2226,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["person_in_motorized_wheelchair_right_tone2"]},{label:"person in motorized wheelchair: medium skin tone, facing right",hexcode:"1F9D1-1F3FD-200D-1F9BC-200D-27A1-FE0F",emoji:"🧑🏽🦼➡️",text:"",type:1,order:2228,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["person_in_motorized_wheelchair_right_tone3"]},{label:"person in motorized wheelchair: medium-dark skin tone, facing right",hexcode:"1F9D1-1F3FE-200D-1F9BC-200D-27A1-FE0F",emoji:"🧑🏾🦼➡️",text:"",type:1,order:2230,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["person_in_motorized_wheelchair_right_tone4"]},{label:"person in motorized wheelchair: dark skin tone, facing right",hexcode:"1F9D1-1F3FF-200D-1F9BC-200D-27A1-FE0F",emoji:"🧑🏿🦼➡️",text:"",type:1,order:2232,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["person_in_motorized_wheelchair_right_tone5"]}],shortCodes:["person_in_motorized_wheelchair_right"]},{label:"man in motorized wheelchair",hexcode:"1F468-200D-1F9BC",tags:["accessibility","man","motorized","wheelchair"],emoji:"👨🦼",text:"",type:1,order:2234,group:1,subgroup:27,version:12,skins:[{label:"man in motorized wheelchair: light skin tone",hexcode:"1F468-1F3FB-200D-1F9BC",emoji:"👨🏻🦼",text:"",type:1,order:2235,group:1,subgroup:27,version:12,tone:1,shortCodes:["man_in_motorized_wheelchair_tone1"]},{label:"man in motorized wheelchair: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F9BC",emoji:"👨🏼🦼",text:"",type:1,order:2236,group:1,subgroup:27,version:12,tone:2,shortCodes:["man_in_motorized_wheelchair_tone2"]},{label:"man in motorized wheelchair: medium skin tone",hexcode:"1F468-1F3FD-200D-1F9BC",emoji:"👨🏽🦼",text:"",type:1,order:2237,group:1,subgroup:27,version:12,tone:3,shortCodes:["man_in_motorized_wheelchair_tone3"]},{label:"man in motorized wheelchair: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F9BC",emoji:"👨🏾🦼",text:"",type:1,order:2238,group:1,subgroup:27,version:12,tone:4,shortCodes:["man_in_motorized_wheelchair_tone4"]},{label:"man in motorized wheelchair: dark skin tone",hexcode:"1F468-1F3FF-200D-1F9BC",emoji:"👨🏿🦼",text:"",type:1,order:2239,group:1,subgroup:27,version:12,tone:5,shortCodes:["man_in_motorized_wheelchair_tone5"]}],shortCodes:["man_in_motorized_wheelchair"]},{label:"man in motorized wheelchair: facing right",hexcode:"1F468-200D-1F9BC-200D-27A1-FE0F",tags:["accessibility","facing","man","motorized","right","wheelchair"],emoji:"👨🦼➡️",text:"",type:1,order:2240,group:1,subgroup:27,version:15.1,skins:[{label:"man in motorized wheelchair: light skin tone, facing right",hexcode:"1F468-1F3FB-200D-1F9BC-200D-27A1-FE0F",emoji:"👨🏻🦼➡️",text:"",type:1,order:2242,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["man_in_motorized_wheelchair_right_tone1"]},{label:"man in motorized wheelchair: medium-light skin tone, facing right",hexcode:"1F468-1F3FC-200D-1F9BC-200D-27A1-FE0F",emoji:"👨🏼🦼➡️",text:"",type:1,order:2244,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["man_in_motorized_wheelchair_right_tone2"]},{label:"man in motorized wheelchair: medium skin tone, facing right",hexcode:"1F468-1F3FD-200D-1F9BC-200D-27A1-FE0F",emoji:"👨🏽🦼➡️",text:"",type:1,order:2246,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["man_in_motorized_wheelchair_right_tone3"]},{label:"man in motorized wheelchair: medium-dark skin tone, facing right",hexcode:"1F468-1F3FE-200D-1F9BC-200D-27A1-FE0F",emoji:"👨🏾🦼➡️",text:"",type:1,order:2248,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["man_in_motorized_wheelchair_right_tone4"]},{label:"man in motorized wheelchair: dark skin tone, facing right",hexcode:"1F468-1F3FF-200D-1F9BC-200D-27A1-FE0F",emoji:"👨🏿🦼➡️",text:"",type:1,order:2250,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["man_in_motorized_wheelchair_right_tone5"]}],shortCodes:["man_in_motorized_wheelchair_right"]},{label:"woman in motorized wheelchair",hexcode:"1F469-200D-1F9BC",tags:["accessibility","motorized","wheelchair","woman"],emoji:"👩🦼",text:"",type:1,order:2252,group:1,subgroup:27,version:12,skins:[{label:"woman in motorized wheelchair: light skin tone",hexcode:"1F469-1F3FB-200D-1F9BC",emoji:"👩🏻🦼",text:"",type:1,order:2253,group:1,subgroup:27,version:12,tone:1,shortCodes:["woman_in_motorized_wheelchair_tone1"]},{label:"woman in motorized wheelchair: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F9BC",emoji:"👩🏼🦼",text:"",type:1,order:2254,group:1,subgroup:27,version:12,tone:2,shortCodes:["woman_in_motorized_wheelchair_tone2"]},{label:"woman in motorized wheelchair: medium skin tone",hexcode:"1F469-1F3FD-200D-1F9BC",emoji:"👩🏽🦼",text:"",type:1,order:2255,group:1,subgroup:27,version:12,tone:3,shortCodes:["woman_in_motorized_wheelchair_tone3"]},{label:"woman in motorized wheelchair: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F9BC",emoji:"👩🏾🦼",text:"",type:1,order:2256,group:1,subgroup:27,version:12,tone:4,shortCodes:["woman_in_motorized_wheelchair_tone4"]},{label:"woman in motorized wheelchair: dark skin tone",hexcode:"1F469-1F3FF-200D-1F9BC",emoji:"👩🏿🦼",text:"",type:1,order:2257,group:1,subgroup:27,version:12,tone:5,shortCodes:["woman_in_motorized_wheelchair_tone5"]}],shortCodes:["woman_in_motorized_wheelchair"]},{label:"woman in motorized wheelchair: facing right",hexcode:"1F469-200D-1F9BC-200D-27A1-FE0F",tags:["accessibility","facing","motorized","right","wheelchair","woman"],emoji:"👩🦼➡️",text:"",type:1,order:2258,group:1,subgroup:27,version:15.1,skins:[{label:"woman in motorized wheelchair: light skin tone, facing right",hexcode:"1F469-1F3FB-200D-1F9BC-200D-27A1-FE0F",emoji:"👩🏻🦼➡️",text:"",type:1,order:2260,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["woman_in_motorized_wheelchair_right_tone1"]},{label:"woman in motorized wheelchair: medium-light skin tone, facing right",hexcode:"1F469-1F3FC-200D-1F9BC-200D-27A1-FE0F",emoji:"👩🏼🦼➡️",text:"",type:1,order:2262,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["woman_in_motorized_wheelchair_right_tone2"]},{label:"woman in motorized wheelchair: medium skin tone, facing right",hexcode:"1F469-1F3FD-200D-1F9BC-200D-27A1-FE0F",emoji:"👩🏽🦼➡️",text:"",type:1,order:2264,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["woman_in_motorized_wheelchair_right_tone3"]},{label:"woman in motorized wheelchair: medium-dark skin tone, facing right",hexcode:"1F469-1F3FE-200D-1F9BC-200D-27A1-FE0F",emoji:"👩🏾🦼➡️",text:"",type:1,order:2266,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["woman_in_motorized_wheelchair_right_tone4"]},{label:"woman in motorized wheelchair: dark skin tone, facing right",hexcode:"1F469-1F3FF-200D-1F9BC-200D-27A1-FE0F",emoji:"👩🏿🦼➡️",text:"",type:1,order:2268,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["woman_in_motorized_wheelchair_right_tone5"]}],shortCodes:["woman_in_motorized_wheelchair_right"]},{label:"person in manual wheelchair",hexcode:"1F9D1-200D-1F9BD",tags:["accessibility","manual","person","wheelchair"],emoji:"🧑🦽",text:"",type:1,order:2270,group:1,subgroup:27,version:12.1,skins:[{label:"person in manual wheelchair: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F9BD",emoji:"🧑🏻🦽",text:"",type:1,order:2271,group:1,subgroup:27,version:12.1,tone:1,shortCodes:["person_in_manual_wheelchair_tone1"]},{label:"person in manual wheelchair: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F9BD",emoji:"🧑🏼🦽",text:"",type:1,order:2272,group:1,subgroup:27,version:12.1,tone:2,shortCodes:["person_in_manual_wheelchair_tone2"]},{label:"person in manual wheelchair: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F9BD",emoji:"🧑🏽🦽",text:"",type:1,order:2273,group:1,subgroup:27,version:12.1,tone:3,shortCodes:["person_in_manual_wheelchair_tone3"]},{label:"person in manual wheelchair: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F9BD",emoji:"🧑🏾🦽",text:"",type:1,order:2274,group:1,subgroup:27,version:12.1,tone:4,shortCodes:["person_in_manual_wheelchair_tone4"]},{label:"person in manual wheelchair: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F9BD",emoji:"🧑🏿🦽",text:"",type:1,order:2275,group:1,subgroup:27,version:12.1,tone:5,shortCodes:["person_in_manual_wheelchair_tone5"]}],shortCodes:["person_in_manual_wheelchair"]},{label:"person in manual wheelchair: facing right",hexcode:"1F9D1-200D-1F9BD-200D-27A1-FE0F",tags:["accessibility","facing","manual","person","right","wheelchair"],emoji:"🧑🦽➡️",text:"",type:1,order:2276,group:1,subgroup:27,version:15.1,skins:[{label:"person in manual wheelchair: light skin tone, facing right",hexcode:"1F9D1-1F3FB-200D-1F9BD-200D-27A1-FE0F",emoji:"🧑🏻🦽➡️",text:"",type:1,order:2278,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["person_in_manual_wheelchair_right_tone1"]},{label:"person in manual wheelchair: medium-light skin tone, facing right",hexcode:"1F9D1-1F3FC-200D-1F9BD-200D-27A1-FE0F",emoji:"🧑🏼🦽➡️",text:"",type:1,order:2280,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["person_in_manual_wheelchair_right_tone2"]},{label:"person in manual wheelchair: medium skin tone, facing right",hexcode:"1F9D1-1F3FD-200D-1F9BD-200D-27A1-FE0F",emoji:"🧑🏽🦽➡️",text:"",type:1,order:2282,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["person_in_manual_wheelchair_right_tone3"]},{label:"person in manual wheelchair: medium-dark skin tone, facing right",hexcode:"1F9D1-1F3FE-200D-1F9BD-200D-27A1-FE0F",emoji:"🧑🏾🦽➡️",text:"",type:1,order:2284,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["person_in_manual_wheelchair_right_tone4"]},{label:"person in manual wheelchair: dark skin tone, facing right",hexcode:"1F9D1-1F3FF-200D-1F9BD-200D-27A1-FE0F",emoji:"🧑🏿🦽➡️",text:"",type:1,order:2286,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["person_in_manual_wheelchair_right_tone5"]}],shortCodes:["person_in_manual_wheelchair_right"]},{label:"man in manual wheelchair",hexcode:"1F468-200D-1F9BD",tags:["accessibility","man","manual","wheelchair"],emoji:"👨🦽",text:"",type:1,order:2288,group:1,subgroup:27,version:12,skins:[{label:"man in manual wheelchair: light skin tone",hexcode:"1F468-1F3FB-200D-1F9BD",emoji:"👨🏻🦽",text:"",type:1,order:2289,group:1,subgroup:27,version:12,tone:1,shortCodes:["man_in_manual_wheelchair_tone1"]},{label:"man in manual wheelchair: medium-light skin tone",hexcode:"1F468-1F3FC-200D-1F9BD",emoji:"👨🏼🦽",text:"",type:1,order:2290,group:1,subgroup:27,version:12,tone:2,shortCodes:["man_in_manual_wheelchair_tone2"]},{label:"man in manual wheelchair: medium skin tone",hexcode:"1F468-1F3FD-200D-1F9BD",emoji:"👨🏽🦽",text:"",type:1,order:2291,group:1,subgroup:27,version:12,tone:3,shortCodes:["man_in_manual_wheelchair_tone3"]},{label:"man in manual wheelchair: medium-dark skin tone",hexcode:"1F468-1F3FE-200D-1F9BD",emoji:"👨🏾🦽",text:"",type:1,order:2292,group:1,subgroup:27,version:12,tone:4,shortCodes:["man_in_manual_wheelchair_tone4"]},{label:"man in manual wheelchair: dark skin tone",hexcode:"1F468-1F3FF-200D-1F9BD",emoji:"👨🏿🦽",text:"",type:1,order:2293,group:1,subgroup:27,version:12,tone:5,shortCodes:["man_in_manual_wheelchair_tone5"]}],shortCodes:["man_in_manual_wheelchair"]},{label:"man in manual wheelchair: facing right",hexcode:"1F468-200D-1F9BD-200D-27A1-FE0F",tags:["accessibility","facing","man","manual","right","wheelchair"],emoji:"👨🦽➡️",text:"",type:1,order:2294,group:1,subgroup:27,version:15.1,skins:[{label:"man in manual wheelchair: light skin tone, facing right",hexcode:"1F468-1F3FB-200D-1F9BD-200D-27A1-FE0F",emoji:"👨🏻🦽➡️",text:"",type:1,order:2296,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["man_in_manual_wheelchair_right_tone1"]},{label:"man in manual wheelchair: medium-light skin tone, facing right",hexcode:"1F468-1F3FC-200D-1F9BD-200D-27A1-FE0F",emoji:"👨🏼🦽➡️",text:"",type:1,order:2298,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["man_in_manual_wheelchair_right_tone2"]},{label:"man in manual wheelchair: medium skin tone, facing right",hexcode:"1F468-1F3FD-200D-1F9BD-200D-27A1-FE0F",emoji:"👨🏽🦽➡️",text:"",type:1,order:2300,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["man_in_manual_wheelchair_right_tone3"]},{label:"man in manual wheelchair: medium-dark skin tone, facing right",hexcode:"1F468-1F3FE-200D-1F9BD-200D-27A1-FE0F",emoji:"👨🏾🦽➡️",text:"",type:1,order:2302,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["man_in_manual_wheelchair_right_tone4"]},{label:"man in manual wheelchair: dark skin tone, facing right",hexcode:"1F468-1F3FF-200D-1F9BD-200D-27A1-FE0F",emoji:"👨🏿🦽➡️",text:"",type:1,order:2304,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["man_in_manual_wheelchair_right_tone5"]}],shortCodes:["man_in_manual_wheelchair_right"]},{label:"woman in manual wheelchair",hexcode:"1F469-200D-1F9BD",tags:["accessibility","manual","wheelchair","woman"],emoji:"👩🦽",text:"",type:1,order:2306,group:1,subgroup:27,version:12,skins:[{label:"woman in manual wheelchair: light skin tone",hexcode:"1F469-1F3FB-200D-1F9BD",emoji:"👩🏻🦽",text:"",type:1,order:2307,group:1,subgroup:27,version:12,tone:1,shortCodes:["woman_in_manual_wheelchair_tone1"]},{label:"woman in manual wheelchair: medium-light skin tone",hexcode:"1F469-1F3FC-200D-1F9BD",emoji:"👩🏼🦽",text:"",type:1,order:2308,group:1,subgroup:27,version:12,tone:2,shortCodes:["woman_in_manual_wheelchair_tone2"]},{label:"woman in manual wheelchair: medium skin tone",hexcode:"1F469-1F3FD-200D-1F9BD",emoji:"👩🏽🦽",text:"",type:1,order:2309,group:1,subgroup:27,version:12,tone:3,shortCodes:["woman_in_manual_wheelchair_tone3"]},{label:"woman in manual wheelchair: medium-dark skin tone",hexcode:"1F469-1F3FE-200D-1F9BD",emoji:"👩🏾🦽",text:"",type:1,order:2310,group:1,subgroup:27,version:12,tone:4,shortCodes:["woman_in_manual_wheelchair_tone4"]},{label:"woman in manual wheelchair: dark skin tone",hexcode:"1F469-1F3FF-200D-1F9BD",emoji:"👩🏿🦽",text:"",type:1,order:2311,group:1,subgroup:27,version:12,tone:5,shortCodes:["woman_in_manual_wheelchair_tone5"]}],shortCodes:["woman_in_manual_wheelchair"]},{label:"woman in manual wheelchair: facing right",hexcode:"1F469-200D-1F9BD-200D-27A1-FE0F",tags:["accessibility","facing","manual","right","wheelchair","woman"],emoji:"👩🦽➡️",text:"",type:1,order:2312,group:1,subgroup:27,version:15.1,skins:[{label:"woman in manual wheelchair: light skin tone, facing right",hexcode:"1F469-1F3FB-200D-1F9BD-200D-27A1-FE0F",emoji:"👩🏻🦽➡️",text:"",type:1,order:2314,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["woman_in_manual_wheelchair_right_tone1"]},{label:"woman in manual wheelchair: medium-light skin tone, facing right",hexcode:"1F469-1F3FC-200D-1F9BD-200D-27A1-FE0F",emoji:"👩🏼🦽➡️",text:"",type:1,order:2316,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["woman_in_manual_wheelchair_right_tone2"]},{label:"woman in manual wheelchair: medium skin tone, facing right",hexcode:"1F469-1F3FD-200D-1F9BD-200D-27A1-FE0F",emoji:"👩🏽🦽➡️",text:"",type:1,order:2318,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["woman_in_manual_wheelchair_right_tone3"]},{label:"woman in manual wheelchair: medium-dark skin tone, facing right",hexcode:"1F469-1F3FE-200D-1F9BD-200D-27A1-FE0F",emoji:"👩🏾🦽➡️",text:"",type:1,order:2320,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["woman_in_manual_wheelchair_right_tone4"]},{label:"woman in manual wheelchair: dark skin tone, facing right",hexcode:"1F469-1F3FF-200D-1F9BD-200D-27A1-FE0F",emoji:"👩🏿🦽➡️",text:"",type:1,order:2322,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["woman_in_manual_wheelchair_right_tone5"]}],shortCodes:["woman_in_manual_wheelchair_right"]},{label:"person running",hexcode:"1F3C3",tags:["fast","hurry","marathon","move","person","quick","race","racing","run","rush","speed"],emoji:"🏃",text:"",type:1,order:2324,group:1,subgroup:27,version:.6,skins:[{label:"person running: light skin tone",hexcode:"1F3C3-1F3FB",emoji:"🏃🏻",text:"",type:1,order:2325,group:1,subgroup:27,version:1,tone:1,shortCodes:["person_running_tone1","running_tone1"]},{label:"person running: medium-light skin tone",hexcode:"1F3C3-1F3FC",emoji:"🏃🏼",text:"",type:1,order:2326,group:1,subgroup:27,version:1,tone:2,shortCodes:["person_running_tone2","running_tone2"]},{label:"person running: medium skin tone",hexcode:"1F3C3-1F3FD",emoji:"🏃🏽",text:"",type:1,order:2327,group:1,subgroup:27,version:1,tone:3,shortCodes:["person_running_tone3","running_tone3"]},{label:"person running: medium-dark skin tone",hexcode:"1F3C3-1F3FE",emoji:"🏃🏾",text:"",type:1,order:2328,group:1,subgroup:27,version:1,tone:4,shortCodes:["person_running_tone4","running_tone4"]},{label:"person running: dark skin tone",hexcode:"1F3C3-1F3FF",emoji:"🏃🏿",text:"",type:1,order:2329,group:1,subgroup:27,version:1,tone:5,shortCodes:["person_running_tone5","running_tone5"]}],shortCodes:["person_running","running"]},{label:"man running",hexcode:"1F3C3-200D-2642-FE0F",tags:["fast","hurry","man","marathon","move","quick","race","racing","run","rush","speed"],emoji:"🏃♂️",text:"",type:1,order:2330,group:1,subgroup:27,version:4,gender:1,skins:[{label:"man running: light skin tone",hexcode:"1F3C3-1F3FB-200D-2642-FE0F",emoji:"🏃🏻♂️",text:"",type:1,order:2332,group:1,subgroup:27,version:4,gender:1,tone:1,shortCodes:["man_running_tone1"]},{label:"man running: medium-light skin tone",hexcode:"1F3C3-1F3FC-200D-2642-FE0F",emoji:"🏃🏼♂️",text:"",type:1,order:2334,group:1,subgroup:27,version:4,gender:1,tone:2,shortCodes:["man_running_tone2"]},{label:"man running: medium skin tone",hexcode:"1F3C3-1F3FD-200D-2642-FE0F",emoji:"🏃🏽♂️",text:"",type:1,order:2336,group:1,subgroup:27,version:4,gender:1,tone:3,shortCodes:["man_running_tone3"]},{label:"man running: medium-dark skin tone",hexcode:"1F3C3-1F3FE-200D-2642-FE0F",emoji:"🏃🏾♂️",text:"",type:1,order:2338,group:1,subgroup:27,version:4,gender:1,tone:4,shortCodes:["man_running_tone4"]},{label:"man running: dark skin tone",hexcode:"1F3C3-1F3FF-200D-2642-FE0F",emoji:"🏃🏿♂️",text:"",type:1,order:2340,group:1,subgroup:27,version:4,gender:1,tone:5,shortCodes:["man_running_tone5"]}],shortCodes:["man_running"]},{label:"woman running",hexcode:"1F3C3-200D-2640-FE0F",tags:["fast","hurry","marathon","move","quick","race","racing","run","rush","speed","woman"],emoji:"🏃♀️",text:"",type:1,order:2342,group:1,subgroup:27,version:4,gender:0,skins:[{label:"woman running: light skin tone",hexcode:"1F3C3-1F3FB-200D-2640-FE0F",emoji:"🏃🏻♀️",text:"",type:1,order:2344,group:1,subgroup:27,version:4,gender:0,tone:1,shortCodes:["woman_running_tone1"]},{label:"woman running: medium-light skin tone",hexcode:"1F3C3-1F3FC-200D-2640-FE0F",emoji:"🏃🏼♀️",text:"",type:1,order:2346,group:1,subgroup:27,version:4,gender:0,tone:2,shortCodes:["woman_running_tone2"]},{label:"woman running: medium skin tone",hexcode:"1F3C3-1F3FD-200D-2640-FE0F",emoji:"🏃🏽♀️",text:"",type:1,order:2348,group:1,subgroup:27,version:4,gender:0,tone:3,shortCodes:["woman_running_tone3"]},{label:"woman running: medium-dark skin tone",hexcode:"1F3C3-1F3FE-200D-2640-FE0F",emoji:"🏃🏾♀️",text:"",type:1,order:2350,group:1,subgroup:27,version:4,gender:0,tone:4,shortCodes:["woman_running_tone4"]},{label:"woman running: dark skin tone",hexcode:"1F3C3-1F3FF-200D-2640-FE0F",emoji:"🏃🏿♀️",text:"",type:1,order:2352,group:1,subgroup:27,version:4,gender:0,tone:5,shortCodes:["woman_running_tone5"]}],shortCodes:["woman_running"]},{label:"person running: facing right",hexcode:"1F3C3-200D-27A1-FE0F",tags:["facing","fast","hurry","marathon","move","person","quick","race","racing","right","run","rush","speed"],emoji:"🏃➡️",text:"",type:1,order:2354,group:1,subgroup:27,version:15.1,skins:[{label:"person running: light skin tone, facing right",hexcode:"1F3C3-1F3FB-200D-27A1-FE0F",emoji:"🏃🏻➡️",text:"",type:1,order:2356,group:1,subgroup:27,version:15.1,tone:1,shortCodes:["person_running_right_tone1"]},{label:"person running: medium-light skin tone, facing right",hexcode:"1F3C3-1F3FC-200D-27A1-FE0F",emoji:"🏃🏼➡️",text:"",type:1,order:2358,group:1,subgroup:27,version:15.1,tone:2,shortCodes:["person_running_right_tone2"]},{label:"person running: medium skin tone, facing right",hexcode:"1F3C3-1F3FD-200D-27A1-FE0F",emoji:"🏃🏽➡️",text:"",type:1,order:2360,group:1,subgroup:27,version:15.1,tone:3,shortCodes:["person_running_right_tone3"]},{label:"person running: medium-dark skin tone, facing right",hexcode:"1F3C3-1F3FE-200D-27A1-FE0F",emoji:"🏃🏾➡️",text:"",type:1,order:2362,group:1,subgroup:27,version:15.1,tone:4,shortCodes:["person_running_right_tone4"]},{label:"person running: dark skin tone, facing right",hexcode:"1F3C3-1F3FF-200D-27A1-FE0F",emoji:"🏃🏿➡️",text:"",type:1,order:2364,group:1,subgroup:27,version:15.1,tone:5,shortCodes:["person_running_right_tone5"]}],shortCodes:["person_running_right"]},{label:"woman running: facing right",hexcode:"1F3C3-200D-2640-FE0F-200D-27A1-FE0F",tags:["facing","fast","hurry","marathon","move","quick","race","racing","right","run","rush","speed","woman"],emoji:"🏃♀️➡️",text:"",type:1,order:2366,group:1,subgroup:27,version:15.1,gender:0,skins:[{label:"woman running: light skin tone, facing right",hexcode:"1F3C3-1F3FB-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🏃🏻♀️➡️",text:"",type:1,order:2370,group:1,subgroup:27,version:15.1,gender:0,tone:1,shortCodes:["woman_running_right_tone1"]},{label:"woman running: medium-light skin tone, facing right",hexcode:"1F3C3-1F3FC-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🏃🏼♀️➡️",text:"",type:1,order:2374,group:1,subgroup:27,version:15.1,gender:0,tone:2,shortCodes:["woman_running_right_tone2"]},{label:"woman running: medium skin tone, facing right",hexcode:"1F3C3-1F3FD-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🏃🏽♀️➡️",text:"",type:1,order:2378,group:1,subgroup:27,version:15.1,gender:0,tone:3,shortCodes:["woman_running_right_tone3"]},{label:"woman running: medium-dark skin tone, facing right",hexcode:"1F3C3-1F3FE-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🏃🏾♀️➡️",text:"",type:1,order:2382,group:1,subgroup:27,version:15.1,gender:0,tone:4,shortCodes:["woman_running_right_tone4"]},{label:"woman running: dark skin tone, facing right",hexcode:"1F3C3-1F3FF-200D-2640-FE0F-200D-27A1-FE0F",emoji:"🏃🏿♀️➡️",text:"",type:1,order:2386,group:1,subgroup:27,version:15.1,gender:0,tone:5,shortCodes:["woman_running_right_tone5"]}],shortCodes:["woman_running_right"]},{label:"man running: facing right",hexcode:"1F3C3-200D-2642-FE0F-200D-27A1-FE0F",tags:["facing","fast","hurry","man","marathon","move","quick","race","racing","right","run","rush","speed"],emoji:"🏃♂️➡️",text:"",type:1,order:2390,group:1,subgroup:27,version:15.1,gender:1,skins:[{label:"man running: light skin tone, facing right",hexcode:"1F3C3-1F3FB-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🏃🏻♂️➡️",text:"",type:1,order:2394,group:1,subgroup:27,version:15.1,gender:1,tone:1,shortCodes:["man_running_right_tone1"]},{label:"man running: medium-light skin tone, facing right",hexcode:"1F3C3-1F3FC-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🏃🏼♂️➡️",text:"",type:1,order:2398,group:1,subgroup:27,version:15.1,gender:1,tone:2,shortCodes:["man_running_right_tone2"]},{label:"man running: medium skin tone, facing right",hexcode:"1F3C3-1F3FD-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🏃🏽♂️➡️",text:"",type:1,order:2402,group:1,subgroup:27,version:15.1,gender:1,tone:3,shortCodes:["man_running_right_tone3"]},{label:"man running: medium-dark skin tone, facing right",hexcode:"1F3C3-1F3FE-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🏃🏾♂️➡️",text:"",type:1,order:2406,group:1,subgroup:27,version:15.1,gender:1,tone:4,shortCodes:["man_running_right_tone4"]},{label:"man running: dark skin tone, facing right",hexcode:"1F3C3-1F3FF-200D-2642-FE0F-200D-27A1-FE0F",emoji:"🏃🏿♂️➡️",text:"",type:1,order:2410,group:1,subgroup:27,version:15.1,gender:1,tone:5,shortCodes:["man_running_right_tone5"]}],shortCodes:["man_running_right"]},{label:"ballet dancer",hexcode:"1F9D1-200D-1FA70",tags:["ballet","dancer"],emoji:"🧑🩰",text:"",type:1,order:2414,group:1,subgroup:27,version:17,skins:[{label:"ballet dancer: light skin tone",hexcode:"1F9D1-1F3FB-200D-1FA70",emoji:"🧑🏻🩰",text:"",type:1,order:2415,group:1,subgroup:27,version:17,tone:1,shortCodes:["ballet_dancer_tone1"]},{label:"ballet dancer: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1FA70",emoji:"🧑🏼🩰",text:"",type:1,order:2416,group:1,subgroup:27,version:17,tone:2,shortCodes:["ballet_dancer_tone2"]},{label:"ballet dancer: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1FA70",emoji:"🧑🏽🩰",text:"",type:1,order:2417,group:1,subgroup:27,version:17,tone:3,shortCodes:["ballet_dancer_tone3"]},{label:"ballet dancer: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1FA70",emoji:"🧑🏾🩰",text:"",type:1,order:2418,group:1,subgroup:27,version:17,tone:4,shortCodes:["ballet_dancer_tone4"]},{label:"ballet dancer: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1FA70",emoji:"🧑🏿🩰",text:"",type:1,order:2419,group:1,subgroup:27,version:17,tone:5,shortCodes:["ballet_dancer_tone5"]}],shortCodes:["ballet_dancer"]},{label:"woman dancing",hexcode:"1F483",tags:["dance","dancer","dancing","elegant","festive","flair","flamenco","groove","let’s","salsa","tango","woman"],emoji:"💃",text:"",type:1,order:2420,group:1,subgroup:27,version:.6,skins:[{label:"woman dancing: light skin tone",hexcode:"1F483-1F3FB",emoji:"💃🏻",text:"",type:1,order:2421,group:1,subgroup:27,version:1,tone:1,shortCodes:["dancer_tone1","woman_dancing_tone1"]},{label:"woman dancing: medium-light skin tone",hexcode:"1F483-1F3FC",emoji:"💃🏼",text:"",type:1,order:2422,group:1,subgroup:27,version:1,tone:2,shortCodes:["dancer_tone2","woman_dancing_tone2"]},{label:"woman dancing: medium skin tone",hexcode:"1F483-1F3FD",emoji:"💃🏽",text:"",type:1,order:2423,group:1,subgroup:27,version:1,tone:3,shortCodes:["dancer_tone3","woman_dancing_tone3"]},{label:"woman dancing: medium-dark skin tone",hexcode:"1F483-1F3FE",emoji:"💃🏾",text:"",type:1,order:2424,group:1,subgroup:27,version:1,tone:4,shortCodes:["dancer_tone4","woman_dancing_tone4"]},{label:"woman dancing: dark skin tone",hexcode:"1F483-1F3FF",emoji:"💃🏿",text:"",type:1,order:2425,group:1,subgroup:27,version:1,tone:5,shortCodes:["dancer_tone5","woman_dancing_tone5"]}],shortCodes:["dancer","woman_dancing"]},{label:"man dancing",hexcode:"1F57A",tags:["dance","dancer","dancing","elegant","festive","flair","flamenco","groove","let’s","man","salsa","tango"],emoji:"🕺",text:"",type:1,order:2426,group:1,subgroup:27,version:3,skins:[{label:"man dancing: light skin tone",hexcode:"1F57A-1F3FB",emoji:"🕺🏻",text:"",type:1,order:2427,group:1,subgroup:27,version:3,tone:1,shortCodes:["man_dancing_tone1"]},{label:"man dancing: medium-light skin tone",hexcode:"1F57A-1F3FC",emoji:"🕺🏼",text:"",type:1,order:2428,group:1,subgroup:27,version:3,tone:2,shortCodes:["man_dancing_tone2"]},{label:"man dancing: medium skin tone",hexcode:"1F57A-1F3FD",emoji:"🕺🏽",text:"",type:1,order:2429,group:1,subgroup:27,version:3,tone:3,shortCodes:["man_dancing_tone3"]},{label:"man dancing: medium-dark skin tone",hexcode:"1F57A-1F3FE",emoji:"🕺🏾",text:"",type:1,order:2430,group:1,subgroup:27,version:3,tone:4,shortCodes:["man_dancing_tone4"]},{label:"man dancing: dark skin tone",hexcode:"1F57A-1F3FF",emoji:"🕺🏿",text:"",type:1,order:2431,group:1,subgroup:27,version:3,tone:5,shortCodes:["man_dancing_tone5"]}],shortCodes:["man_dancing"]},{label:"person in suit levitating",hexcode:"1F574",tags:["business","levitating","person","suit"],emoji:"🕴️",text:"🕴︎",type:0,order:2433,group:1,subgroup:27,version:.7,skins:[{label:"person in suit levitating: light skin tone",hexcode:"1F574-1F3FB",emoji:"🕴🏻",text:"",type:1,order:2434,group:1,subgroup:27,version:4,tone:1,shortCodes:["levitate_tone1","levitating_tone1","person_in_suit_levitating_tone1"]},{label:"person in suit levitating: medium-light skin tone",hexcode:"1F574-1F3FC",emoji:"🕴🏼",text:"",type:1,order:2435,group:1,subgroup:27,version:4,tone:2,shortCodes:["levitate_tone2","levitating_tone2","person_in_suit_levitating_tone2"]},{label:"person in suit levitating: medium skin tone",hexcode:"1F574-1F3FD",emoji:"🕴🏽",text:"",type:1,order:2436,group:1,subgroup:27,version:4,tone:3,shortCodes:["levitate_tone3","levitating_tone3","person_in_suit_levitating_tone3"]},{label:"person in suit levitating: medium-dark skin tone",hexcode:"1F574-1F3FE",emoji:"🕴🏾",text:"",type:1,order:2437,group:1,subgroup:27,version:4,tone:4,shortCodes:["levitate_tone4","levitating_tone4","person_in_suit_levitating_tone4"]},{label:"person in suit levitating: dark skin tone",hexcode:"1F574-1F3FF",emoji:"🕴🏿",text:"",type:1,order:2438,group:1,subgroup:27,version:4,tone:5,shortCodes:["levitate_tone5","levitating_tone5","person_in_suit_levitating_tone5"]}],shortCodes:["levitate","levitating","person_in_suit_levitating"]},{label:"people with bunny ears",hexcode:"1F46F",tags:["bestie","bff","bunny","counterpart","dancer","double","ear","identical","pair","party","partying","people","soulmate","twin","twinsies"],emoji:"👯",text:"",type:1,order:2439,group:1,subgroup:27,version:.6,skins:[{label:"people with bunny ears: light skin tone",hexcode:"1F46F-1F3FB",emoji:"👯🏻",text:"",type:1,order:2440,group:1,subgroup:27,version:17,tone:1,shortCodes:["dancers_tone1","people_with_bunny_ears_partying_tone1"]},{label:"people with bunny ears: medium-light skin tone",hexcode:"1F46F-1F3FC",emoji:"👯🏼",text:"",type:1,order:2441,group:1,subgroup:27,version:17,tone:2,shortCodes:["dancers_tone2","people_with_bunny_ears_partying_tone2"]},{label:"people with bunny ears: medium skin tone",hexcode:"1F46F-1F3FD",emoji:"👯🏽",text:"",type:1,order:2442,group:1,subgroup:27,version:17,tone:3,shortCodes:["dancers_tone3","people_with_bunny_ears_partying_tone3"]},{label:"people with bunny ears: medium-dark skin tone",hexcode:"1F46F-1F3FE",emoji:"👯🏾",text:"",type:1,order:2443,group:1,subgroup:27,version:17,tone:4,shortCodes:["dancers_tone4","people_with_bunny_ears_partying_tone4"]},{label:"people with bunny ears: dark skin tone",hexcode:"1F46F-1F3FF",emoji:"👯🏿",text:"",type:1,order:2444,group:1,subgroup:27,version:17,tone:5,shortCodes:["dancers_tone5","people_with_bunny_ears_partying_tone5"]},{label:"people with bunny ears: light skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FB-200D-1F430-200D-1F9D1-1F3FC",emoji:"🧑🏻🐰🧑🏼",text:"",type:1,order:2469,group:1,subgroup:27,version:17,tone:[1,2],shortCodes:["dancers_tone1-2","people_with_bunny_ears_partying_tone1-2"]},{label:"people with bunny ears: light skin tone, medium skin tone",hexcode:"1F9D1-1F3FB-200D-1F430-200D-1F9D1-1F3FD",emoji:"🧑🏻🐰🧑🏽",text:"",type:1,order:2470,group:1,subgroup:27,version:17,tone:[1,3],shortCodes:["dancers_tone1-3","people_with_bunny_ears_partying_tone1-3"]},{label:"people with bunny ears: light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FB-200D-1F430-200D-1F9D1-1F3FE",emoji:"🧑🏻🐰🧑🏾",text:"",type:1,order:2471,group:1,subgroup:27,version:17,tone:[1,4],shortCodes:["dancers_tone1-4","people_with_bunny_ears_partying_tone1-4"]},{label:"people with bunny ears: light skin tone, dark skin tone",hexcode:"1F9D1-1F3FB-200D-1F430-200D-1F9D1-1F3FF",emoji:"🧑🏻🐰🧑🏿",text:"",type:1,order:2472,group:1,subgroup:27,version:17,tone:[1,5],shortCodes:["dancers_tone1-5","people_with_bunny_ears_partying_tone1-5"]},{label:"people with bunny ears: medium-light skin tone, light skin tone",hexcode:"1F9D1-1F3FC-200D-1F430-200D-1F9D1-1F3FB",emoji:"🧑🏼🐰🧑🏻",text:"",type:1,order:2473,group:1,subgroup:27,version:17,tone:[2,1],shortCodes:["dancers_tone2-1","people_with_bunny_ears_partying_tone2-1"]},{label:"people with bunny ears: medium-light skin tone, medium skin tone",hexcode:"1F9D1-1F3FC-200D-1F430-200D-1F9D1-1F3FD",emoji:"🧑🏼🐰🧑🏽",text:"",type:1,order:2474,group:1,subgroup:27,version:17,tone:[2,3],shortCodes:["dancers_tone2-3","people_with_bunny_ears_partying_tone2-3"]},{label:"people with bunny ears: medium-light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FC-200D-1F430-200D-1F9D1-1F3FE",emoji:"🧑🏼🐰🧑🏾",text:"",type:1,order:2475,group:1,subgroup:27,version:17,tone:[2,4],shortCodes:["dancers_tone2-4","people_with_bunny_ears_partying_tone2-4"]},{label:"people with bunny ears: medium-light skin tone, dark skin tone",hexcode:"1F9D1-1F3FC-200D-1F430-200D-1F9D1-1F3FF",emoji:"🧑🏼🐰🧑🏿",text:"",type:1,order:2476,group:1,subgroup:27,version:17,tone:[2,5],shortCodes:["dancers_tone2-5","people_with_bunny_ears_partying_tone2-5"]},{label:"people with bunny ears: medium skin tone, light skin tone",hexcode:"1F9D1-1F3FD-200D-1F430-200D-1F9D1-1F3FB",emoji:"🧑🏽🐰🧑🏻",text:"",type:1,order:2477,group:1,subgroup:27,version:17,tone:[3,1],shortCodes:["dancers_tone3-1","people_with_bunny_ears_partying_tone3-1"]},{label:"people with bunny ears: medium skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FD-200D-1F430-200D-1F9D1-1F3FC",emoji:"🧑🏽🐰🧑🏼",text:"",type:1,order:2478,group:1,subgroup:27,version:17,tone:[3,2],shortCodes:["dancers_tone3-2","people_with_bunny_ears_partying_tone3-2"]},{label:"people with bunny ears: medium skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FD-200D-1F430-200D-1F9D1-1F3FE",emoji:"🧑🏽🐰🧑🏾",text:"",type:1,order:2479,group:1,subgroup:27,version:17,tone:[3,4],shortCodes:["dancers_tone3-4","people_with_bunny_ears_partying_tone3-4"]},{label:"people with bunny ears: medium skin tone, dark skin tone",hexcode:"1F9D1-1F3FD-200D-1F430-200D-1F9D1-1F3FF",emoji:"🧑🏽🐰🧑🏿",text:"",type:1,order:2480,group:1,subgroup:27,version:17,tone:[3,5],shortCodes:["dancers_tone3-5","people_with_bunny_ears_partying_tone3-5"]},{label:"people with bunny ears: medium-dark skin tone, light skin tone",hexcode:"1F9D1-1F3FE-200D-1F430-200D-1F9D1-1F3FB",emoji:"🧑🏾🐰🧑🏻",text:"",type:1,order:2481,group:1,subgroup:27,version:17,tone:[4,1],shortCodes:["dancers_tone4-1","people_with_bunny_ears_partying_tone4-1"]},{label:"people with bunny ears: medium-dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FE-200D-1F430-200D-1F9D1-1F3FC",emoji:"🧑🏾🐰🧑🏼",text:"",type:1,order:2482,group:1,subgroup:27,version:17,tone:[4,2],shortCodes:["dancers_tone4-2","people_with_bunny_ears_partying_tone4-2"]},{label:"people with bunny ears: medium-dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FE-200D-1F430-200D-1F9D1-1F3FD",emoji:"🧑🏾🐰🧑🏽",text:"",type:1,order:2483,group:1,subgroup:27,version:17,tone:[4,3],shortCodes:["dancers_tone4-3","people_with_bunny_ears_partying_tone4-3"]},{label:"people with bunny ears: medium-dark skin tone, dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F430-200D-1F9D1-1F3FF",emoji:"🧑🏾🐰🧑🏿",text:"",type:1,order:2484,group:1,subgroup:27,version:17,tone:[4,5],shortCodes:["dancers_tone4-5","people_with_bunny_ears_partying_tone4-5"]},{label:"people with bunny ears: dark skin tone, light skin tone",hexcode:"1F9D1-1F3FF-200D-1F430-200D-1F9D1-1F3FB",emoji:"🧑🏿🐰🧑🏻",text:"",type:1,order:2485,group:1,subgroup:27,version:17,tone:[5,1],shortCodes:["dancers_tone5-1","people_with_bunny_ears_partying_tone5-1"]},{label:"people with bunny ears: dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FF-200D-1F430-200D-1F9D1-1F3FC",emoji:"🧑🏿🐰🧑🏼",text:"",type:1,order:2486,group:1,subgroup:27,version:17,tone:[5,2],shortCodes:["dancers_tone5-2","people_with_bunny_ears_partying_tone5-2"]},{label:"people with bunny ears: dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FF-200D-1F430-200D-1F9D1-1F3FD",emoji:"🧑🏿🐰🧑🏽",text:"",type:1,order:2487,group:1,subgroup:27,version:17,tone:[5,3],shortCodes:["dancers_tone5-3","people_with_bunny_ears_partying_tone5-3"]},{label:"people with bunny ears: dark skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F430-200D-1F9D1-1F3FE",emoji:"🧑🏿🐰🧑🏾",text:"",type:1,order:2488,group:1,subgroup:27,version:17,tone:[5,4],shortCodes:["dancers_tone5-4","people_with_bunny_ears_partying_tone5-4"]}],shortCodes:["dancers","people_with_bunny_ears_partying"]},{label:"men with bunny ears",hexcode:"1F46F-200D-2642-FE0F",tags:["bestie","bff","bunny","counterpart","dancer","double","ear","identical","men","pair","party","partying","people","soulmate","twin","twinsies"],emoji:"👯♂️",text:"",type:1,order:2445,group:1,subgroup:27,version:4,gender:1,skins:[{label:"men with bunny ears: light skin tone, medium-light skin tone",hexcode:"1F468-1F3FB-200D-1F430-200D-1F468-1F3FC",emoji:"👨🏻🐰👨🏼",text:"",type:1,order:2489,group:1,subgroup:27,version:17,tone:[1,2],shortCodes:["men_with_bunny_ears_partying_tone1-2"]},{label:"men with bunny ears: light skin tone, medium skin tone",hexcode:"1F468-1F3FB-200D-1F430-200D-1F468-1F3FD",emoji:"👨🏻🐰👨🏽",text:"",type:1,order:2490,group:1,subgroup:27,version:17,tone:[1,3],shortCodes:["men_with_bunny_ears_partying_tone1-3"]},{label:"men with bunny ears: light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FB-200D-1F430-200D-1F468-1F3FE",emoji:"👨🏻🐰👨🏾",text:"",type:1,order:2491,group:1,subgroup:27,version:17,tone:[1,4],shortCodes:["men_with_bunny_ears_partying_tone1-4"]},{label:"men with bunny ears: light skin tone, dark skin tone",hexcode:"1F468-1F3FB-200D-1F430-200D-1F468-1F3FF",emoji:"👨🏻🐰👨🏿",text:"",type:1,order:2492,group:1,subgroup:27,version:17,tone:[1,5],shortCodes:["men_with_bunny_ears_partying_tone1-5"]},{label:"men with bunny ears: medium-light skin tone, light skin tone",hexcode:"1F468-1F3FC-200D-1F430-200D-1F468-1F3FB",emoji:"👨🏼🐰👨🏻",text:"",type:1,order:2493,group:1,subgroup:27,version:17,tone:[2,1],shortCodes:["men_with_bunny_ears_partying_tone2-1"]},{label:"men with bunny ears: medium-light skin tone, medium skin tone",hexcode:"1F468-1F3FC-200D-1F430-200D-1F468-1F3FD",emoji:"👨🏼🐰👨🏽",text:"",type:1,order:2494,group:1,subgroup:27,version:17,tone:[2,3],shortCodes:["men_with_bunny_ears_partying_tone2-3"]},{label:"men with bunny ears: medium-light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FC-200D-1F430-200D-1F468-1F3FE",emoji:"👨🏼🐰👨🏾",text:"",type:1,order:2495,group:1,subgroup:27,version:17,tone:[2,4],shortCodes:["men_with_bunny_ears_partying_tone2-4"]},{label:"men with bunny ears: medium-light skin tone, dark skin tone",hexcode:"1F468-1F3FC-200D-1F430-200D-1F468-1F3FF",emoji:"👨🏼🐰👨🏿",text:"",type:1,order:2496,group:1,subgroup:27,version:17,tone:[2,5],shortCodes:["men_with_bunny_ears_partying_tone2-5"]},{label:"men with bunny ears: medium skin tone, light skin tone",hexcode:"1F468-1F3FD-200D-1F430-200D-1F468-1F3FB",emoji:"👨🏽🐰👨🏻",text:"",type:1,order:2497,group:1,subgroup:27,version:17,tone:[3,1],shortCodes:["men_with_bunny_ears_partying_tone3-1"]},{label:"men with bunny ears: medium skin tone, medium-light skin tone",hexcode:"1F468-1F3FD-200D-1F430-200D-1F468-1F3FC",emoji:"👨🏽🐰👨🏼",text:"",type:1,order:2498,group:1,subgroup:27,version:17,tone:[3,2],shortCodes:["men_with_bunny_ears_partying_tone3-2"]},{label:"men with bunny ears: medium skin tone, medium-dark skin tone",hexcode:"1F468-1F3FD-200D-1F430-200D-1F468-1F3FE",emoji:"👨🏽🐰👨🏾",text:"",type:1,order:2499,group:1,subgroup:27,version:17,tone:[3,4],shortCodes:["men_with_bunny_ears_partying_tone3-4"]},{label:"men with bunny ears: medium skin tone, dark skin tone",hexcode:"1F468-1F3FD-200D-1F430-200D-1F468-1F3FF",emoji:"👨🏽🐰👨🏿",text:"",type:1,order:2500,group:1,subgroup:27,version:17,tone:[3,5],shortCodes:["men_with_bunny_ears_partying_tone3-5"]},{label:"men with bunny ears: medium-dark skin tone, light skin tone",hexcode:"1F468-1F3FE-200D-1F430-200D-1F468-1F3FB",emoji:"👨🏾🐰👨🏻",text:"",type:1,order:2501,group:1,subgroup:27,version:17,tone:[4,1],shortCodes:["men_with_bunny_ears_partying_tone4-1"]},{label:"men with bunny ears: medium-dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FE-200D-1F430-200D-1F468-1F3FC",emoji:"👨🏾🐰👨🏼",text:"",type:1,order:2502,group:1,subgroup:27,version:17,tone:[4,2],shortCodes:["men_with_bunny_ears_partying_tone4-2"]},{label:"men with bunny ears: medium-dark skin tone, medium skin tone",hexcode:"1F468-1F3FE-200D-1F430-200D-1F468-1F3FD",emoji:"👨🏾🐰👨🏽",text:"",type:1,order:2503,group:1,subgroup:27,version:17,tone:[4,3],shortCodes:["men_with_bunny_ears_partying_tone4-3"]},{label:"men with bunny ears: medium-dark skin tone, dark skin tone",hexcode:"1F468-1F3FE-200D-1F430-200D-1F468-1F3FF",emoji:"👨🏾🐰👨🏿",text:"",type:1,order:2504,group:1,subgroup:27,version:17,tone:[4,5],shortCodes:["men_with_bunny_ears_partying_tone4-5"]},{label:"men with bunny ears: dark skin tone, light skin tone",hexcode:"1F468-1F3FF-200D-1F430-200D-1F468-1F3FB",emoji:"👨🏿🐰👨🏻",text:"",type:1,order:2505,group:1,subgroup:27,version:17,tone:[5,1],shortCodes:["men_with_bunny_ears_partying_tone5-1"]},{label:"men with bunny ears: dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FF-200D-1F430-200D-1F468-1F3FC",emoji:"👨🏿🐰👨🏼",text:"",type:1,order:2506,group:1,subgroup:27,version:17,tone:[5,2],shortCodes:["men_with_bunny_ears_partying_tone5-2"]},{label:"men with bunny ears: dark skin tone, medium skin tone",hexcode:"1F468-1F3FF-200D-1F430-200D-1F468-1F3FD",emoji:"👨🏿🐰👨🏽",text:"",type:1,order:2507,group:1,subgroup:27,version:17,tone:[5,3],shortCodes:["men_with_bunny_ears_partying_tone5-3"]},{label:"men with bunny ears: dark skin tone, medium-dark skin tone",hexcode:"1F468-1F3FF-200D-1F430-200D-1F468-1F3FE",emoji:"👨🏿🐰👨🏾",text:"",type:1,order:2508,group:1,subgroup:27,version:17,tone:[5,4],shortCodes:["men_with_bunny_ears_partying_tone5-4"]},{label:"men with bunny ears: light skin tone",hexcode:"1F46F-1F3FB-200D-2642-FE0F",emoji:"👯🏻♂️",text:"",type:1,order:2447,group:1,subgroup:27,version:17,gender:1,tone:1,shortCodes:["men_with_bunny_ears_partying_tone1"]},{label:"men with bunny ears: medium-light skin tone",hexcode:"1F46F-1F3FC-200D-2642-FE0F",emoji:"👯🏼♂️",text:"",type:1,order:2449,group:1,subgroup:27,version:17,gender:1,tone:2,shortCodes:["men_with_bunny_ears_partying_tone2"]},{label:"men with bunny ears: medium skin tone",hexcode:"1F46F-1F3FD-200D-2642-FE0F",emoji:"👯🏽♂️",text:"",type:1,order:2451,group:1,subgroup:27,version:17,gender:1,tone:3,shortCodes:["men_with_bunny_ears_partying_tone3"]},{label:"men with bunny ears: medium-dark skin tone",hexcode:"1F46F-1F3FE-200D-2642-FE0F",emoji:"👯🏾♂️",text:"",type:1,order:2453,group:1,subgroup:27,version:17,gender:1,tone:4,shortCodes:["men_with_bunny_ears_partying_tone4"]},{label:"men with bunny ears: dark skin tone",hexcode:"1F46F-1F3FF-200D-2642-FE0F",emoji:"👯🏿♂️",text:"",type:1,order:2455,group:1,subgroup:27,version:17,gender:1,tone:5,shortCodes:["men_with_bunny_ears_partying_tone5"]}],shortCodes:["men_with_bunny_ears_partying"]},{label:"women with bunny ears",hexcode:"1F46F-200D-2640-FE0F",tags:["bestie","bff","bunny","counterpart","dancer","double","ear","identical","pair","party","partying","people","soulmate","twin","twinsies","women"],emoji:"👯♀️",text:"",type:1,order:2457,group:1,subgroup:27,version:4,gender:0,skins:[{label:"women with bunny ears: light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-1F430-200D-1F469-1F3FC",emoji:"👩🏻🐰👩🏼",text:"",type:1,order:2509,group:1,subgroup:27,version:17,tone:[1,2],shortCodes:["women_with_bunny_ears_partying_tone1-2"]},{label:"women with bunny ears: light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-1F430-200D-1F469-1F3FD",emoji:"👩🏻🐰👩🏽",text:"",type:1,order:2510,group:1,subgroup:27,version:17,tone:[1,3],shortCodes:["women_with_bunny_ears_partying_tone1-3"]},{label:"women with bunny ears: light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-1F430-200D-1F469-1F3FE",emoji:"👩🏻🐰👩🏾",text:"",type:1,order:2511,group:1,subgroup:27,version:17,tone:[1,4],shortCodes:["women_with_bunny_ears_partying_tone1-4"]},{label:"women with bunny ears: light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-1F430-200D-1F469-1F3FF",emoji:"👩🏻🐰👩🏿",text:"",type:1,order:2512,group:1,subgroup:27,version:17,tone:[1,5],shortCodes:["women_with_bunny_ears_partying_tone1-5"]},{label:"women with bunny ears: medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-1F430-200D-1F469-1F3FB",emoji:"👩🏼🐰👩🏻",text:"",type:1,order:2513,group:1,subgroup:27,version:17,tone:[2,1],shortCodes:["women_with_bunny_ears_partying_tone2-1"]},{label:"women with bunny ears: medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-1F430-200D-1F469-1F3FD",emoji:"👩🏼🐰👩🏽",text:"",type:1,order:2514,group:1,subgroup:27,version:17,tone:[2,3],shortCodes:["women_with_bunny_ears_partying_tone2-3"]},{label:"women with bunny ears: medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-1F430-200D-1F469-1F3FE",emoji:"👩🏼🐰👩🏾",text:"",type:1,order:2515,group:1,subgroup:27,version:17,tone:[2,4],shortCodes:["women_with_bunny_ears_partying_tone2-4"]},{label:"women with bunny ears: medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-1F430-200D-1F469-1F3FF",emoji:"👩🏼🐰👩🏿",text:"",type:1,order:2516,group:1,subgroup:27,version:17,tone:[2,5],shortCodes:["women_with_bunny_ears_partying_tone2-5"]},{label:"women with bunny ears: medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-1F430-200D-1F469-1F3FB",emoji:"👩🏽🐰👩🏻",text:"",type:1,order:2517,group:1,subgroup:27,version:17,tone:[3,1],shortCodes:["women_with_bunny_ears_partying_tone3-1"]},{label:"women with bunny ears: medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-1F430-200D-1F469-1F3FC",emoji:"👩🏽🐰👩🏼",text:"",type:1,order:2518,group:1,subgroup:27,version:17,tone:[3,2],shortCodes:["women_with_bunny_ears_partying_tone3-2"]},{label:"women with bunny ears: medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-1F430-200D-1F469-1F3FE",emoji:"👩🏽🐰👩🏾",text:"",type:1,order:2519,group:1,subgroup:27,version:17,tone:[3,4],shortCodes:["women_with_bunny_ears_partying_tone3-4"]},{label:"women with bunny ears: medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-1F430-200D-1F469-1F3FF",emoji:"👩🏽🐰👩🏿",text:"",type:1,order:2520,group:1,subgroup:27,version:17,tone:[3,5],shortCodes:["women_with_bunny_ears_partying_tone3-5"]},{label:"women with bunny ears: medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-1F430-200D-1F469-1F3FB",emoji:"👩🏾🐰👩🏻",text:"",type:1,order:2521,group:1,subgroup:27,version:17,tone:[4,1],shortCodes:["women_with_bunny_ears_partying_tone4-1"]},{label:"women with bunny ears: medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-1F430-200D-1F469-1F3FC",emoji:"👩🏾🐰👩🏼",text:"",type:1,order:2522,group:1,subgroup:27,version:17,tone:[4,2],shortCodes:["women_with_bunny_ears_partying_tone4-2"]},{label:"women with bunny ears: medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-1F430-200D-1F469-1F3FD",emoji:"👩🏾🐰👩🏽",text:"",type:1,order:2523,group:1,subgroup:27,version:17,tone:[4,3],shortCodes:["women_with_bunny_ears_partying_tone4-3"]},{label:"women with bunny ears: medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-1F430-200D-1F469-1F3FF",emoji:"👩🏾🐰👩🏿",text:"",type:1,order:2524,group:1,subgroup:27,version:17,tone:[4,5],shortCodes:["women_with_bunny_ears_partying_tone4-5"]},{label:"women with bunny ears: dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-1F430-200D-1F469-1F3FB",emoji:"👩🏿🐰👩🏻",text:"",type:1,order:2525,group:1,subgroup:27,version:17,tone:[5,1],shortCodes:["women_with_bunny_ears_partying_tone5-1"]},{label:"women with bunny ears: dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-1F430-200D-1F469-1F3FC",emoji:"👩🏿🐰👩🏼",text:"",type:1,order:2526,group:1,subgroup:27,version:17,tone:[5,2],shortCodes:["women_with_bunny_ears_partying_tone5-2"]},{label:"women with bunny ears: dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-1F430-200D-1F469-1F3FD",emoji:"👩🏿🐰👩🏽",text:"",type:1,order:2527,group:1,subgroup:27,version:17,tone:[5,3],shortCodes:["women_with_bunny_ears_partying_tone5-3"]},{label:"women with bunny ears: dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-1F430-200D-1F469-1F3FE",emoji:"👩🏿🐰👩🏾",text:"",type:1,order:2528,group:1,subgroup:27,version:17,tone:[5,4],shortCodes:["women_with_bunny_ears_partying_tone5-4"]},{label:"women with bunny ears: light skin tone",hexcode:"1F46F-1F3FB-200D-2640-FE0F",emoji:"👯🏻♀️",text:"",type:1,order:2459,group:1,subgroup:27,version:17,gender:0,tone:1,shortCodes:["women_with_bunny_ears_partying_tone1"]},{label:"women with bunny ears: medium-light skin tone",hexcode:"1F46F-1F3FC-200D-2640-FE0F",emoji:"👯🏼♀️",text:"",type:1,order:2461,group:1,subgroup:27,version:17,gender:0,tone:2,shortCodes:["women_with_bunny_ears_partying_tone2"]},{label:"women with bunny ears: medium skin tone",hexcode:"1F46F-1F3FD-200D-2640-FE0F",emoji:"👯🏽♀️",text:"",type:1,order:2463,group:1,subgroup:27,version:17,gender:0,tone:3,shortCodes:["women_with_bunny_ears_partying_tone3"]},{label:"women with bunny ears: medium-dark skin tone",hexcode:"1F46F-1F3FE-200D-2640-FE0F",emoji:"👯🏾♀️",text:"",type:1,order:2465,group:1,subgroup:27,version:17,gender:0,tone:4,shortCodes:["women_with_bunny_ears_partying_tone4"]},{label:"women with bunny ears: dark skin tone",hexcode:"1F46F-1F3FF-200D-2640-FE0F",emoji:"👯🏿♀️",text:"",type:1,order:2467,group:1,subgroup:27,version:17,gender:0,tone:5,shortCodes:["women_with_bunny_ears_partying_tone5"]}],shortCodes:["women_with_bunny_ears_partying"]},{label:"person in steamy room",hexcode:"1F9D6",tags:["day","luxurious","pamper","person","relax","room","sauna","spa","steam","steambath","unwind"],emoji:"🧖",text:"",type:1,order:2529,group:1,subgroup:27,version:5,skins:[{label:"person in steamy room: light skin tone",hexcode:"1F9D6-1F3FB",emoji:"🧖🏻",text:"",type:1,order:2530,group:1,subgroup:27,version:5,tone:1,shortCodes:["person_in_steamy_room_tone1"]},{label:"person in steamy room: medium-light skin tone",hexcode:"1F9D6-1F3FC",emoji:"🧖🏼",text:"",type:1,order:2531,group:1,subgroup:27,version:5,tone:2,shortCodes:["person_in_steamy_room_tone2"]},{label:"person in steamy room: medium skin tone",hexcode:"1F9D6-1F3FD",emoji:"🧖🏽",text:"",type:1,order:2532,group:1,subgroup:27,version:5,tone:3,shortCodes:["person_in_steamy_room_tone3"]},{label:"person in steamy room: medium-dark skin tone",hexcode:"1F9D6-1F3FE",emoji:"🧖🏾",text:"",type:1,order:2533,group:1,subgroup:27,version:5,tone:4,shortCodes:["person_in_steamy_room_tone4"]},{label:"person in steamy room: dark skin tone",hexcode:"1F9D6-1F3FF",emoji:"🧖🏿",text:"",type:1,order:2534,group:1,subgroup:27,version:5,tone:5,shortCodes:["person_in_steamy_room_tone5"]}],shortCodes:["person_in_steamy_room"]},{label:"man in steamy room",hexcode:"1F9D6-200D-2642-FE0F",tags:["day","luxurious","man","pamper","relax","room","sauna","spa","steam","steambath","unwind"],emoji:"🧖♂️",text:"",type:1,order:2535,group:1,subgroup:27,version:5,gender:1,skins:[{label:"man in steamy room: light skin tone",hexcode:"1F9D6-1F3FB-200D-2642-FE0F",emoji:"🧖🏻♂️",text:"",type:1,order:2537,group:1,subgroup:27,version:5,gender:1,tone:1,shortCodes:["man_in_steamy_room_tone1"]},{label:"man in steamy room: medium-light skin tone",hexcode:"1F9D6-1F3FC-200D-2642-FE0F",emoji:"🧖🏼♂️",text:"",type:1,order:2539,group:1,subgroup:27,version:5,gender:1,tone:2,shortCodes:["man_in_steamy_room_tone2"]},{label:"man in steamy room: medium skin tone",hexcode:"1F9D6-1F3FD-200D-2642-FE0F",emoji:"🧖🏽♂️",text:"",type:1,order:2541,group:1,subgroup:27,version:5,gender:1,tone:3,shortCodes:["man_in_steamy_room_tone3"]},{label:"man in steamy room: medium-dark skin tone",hexcode:"1F9D6-1F3FE-200D-2642-FE0F",emoji:"🧖🏾♂️",text:"",type:1,order:2543,group:1,subgroup:27,version:5,gender:1,tone:4,shortCodes:["man_in_steamy_room_tone4"]},{label:"man in steamy room: dark skin tone",hexcode:"1F9D6-1F3FF-200D-2642-FE0F",emoji:"🧖🏿♂️",text:"",type:1,order:2545,group:1,subgroup:27,version:5,gender:1,tone:5,shortCodes:["man_in_steamy_room_tone5"]}],shortCodes:["man_in_steamy_room"]},{label:"woman in steamy room",hexcode:"1F9D6-200D-2640-FE0F",tags:["day","luxurious","pamper","relax","room","sauna","spa","steam","steambath","unwind","woman"],emoji:"🧖♀️",text:"",type:1,order:2547,group:1,subgroup:27,version:5,gender:0,skins:[{label:"woman in steamy room: light skin tone",hexcode:"1F9D6-1F3FB-200D-2640-FE0F",emoji:"🧖🏻♀️",text:"",type:1,order:2549,group:1,subgroup:27,version:5,gender:0,tone:1,shortCodes:["woman_in_steamy_room_tone1"]},{label:"woman in steamy room: medium-light skin tone",hexcode:"1F9D6-1F3FC-200D-2640-FE0F",emoji:"🧖🏼♀️",text:"",type:1,order:2551,group:1,subgroup:27,version:5,gender:0,tone:2,shortCodes:["woman_in_steamy_room_tone2"]},{label:"woman in steamy room: medium skin tone",hexcode:"1F9D6-1F3FD-200D-2640-FE0F",emoji:"🧖🏽♀️",text:"",type:1,order:2553,group:1,subgroup:27,version:5,gender:0,tone:3,shortCodes:["woman_in_steamy_room_tone3"]},{label:"woman in steamy room: medium-dark skin tone",hexcode:"1F9D6-1F3FE-200D-2640-FE0F",emoji:"🧖🏾♀️",text:"",type:1,order:2555,group:1,subgroup:27,version:5,gender:0,tone:4,shortCodes:["woman_in_steamy_room_tone4"]},{label:"woman in steamy room: dark skin tone",hexcode:"1F9D6-1F3FF-200D-2640-FE0F",emoji:"🧖🏿♀️",text:"",type:1,order:2557,group:1,subgroup:27,version:5,gender:0,tone:5,shortCodes:["woman_in_steamy_room_tone5"]}],shortCodes:["woman_in_steamy_room"]},{label:"person climbing",hexcode:"1F9D7",tags:["climb","climber","climbing","mountain","person","rock","scale","up"],emoji:"🧗",text:"",type:1,order:2559,group:1,subgroup:27,version:5,skins:[{label:"person climbing: light skin tone",hexcode:"1F9D7-1F3FB",emoji:"🧗🏻",text:"",type:1,order:2560,group:1,subgroup:27,version:5,tone:1,shortCodes:["climbing_tone1","person_climbing_tone1"]},{label:"person climbing: medium-light skin tone",hexcode:"1F9D7-1F3FC",emoji:"🧗🏼",text:"",type:1,order:2561,group:1,subgroup:27,version:5,tone:2,shortCodes:["climbing_tone2","person_climbing_tone2"]},{label:"person climbing: medium skin tone",hexcode:"1F9D7-1F3FD",emoji:"🧗🏽",text:"",type:1,order:2562,group:1,subgroup:27,version:5,tone:3,shortCodes:["climbing_tone3","person_climbing_tone3"]},{label:"person climbing: medium-dark skin tone",hexcode:"1F9D7-1F3FE",emoji:"🧗🏾",text:"",type:1,order:2563,group:1,subgroup:27,version:5,tone:4,shortCodes:["climbing_tone4","person_climbing_tone4"]},{label:"person climbing: dark skin tone",hexcode:"1F9D7-1F3FF",emoji:"🧗🏿",text:"",type:1,order:2564,group:1,subgroup:27,version:5,tone:5,shortCodes:["climbing_tone5","person_climbing_tone5"]}],shortCodes:["climbing","person_climbing"]},{label:"man climbing",hexcode:"1F9D7-200D-2642-FE0F",tags:["climb","climber","climbing","man","mountain","rock","scale","up"],emoji:"🧗♂️",text:"",type:1,order:2565,group:1,subgroup:27,version:5,gender:1,skins:[{label:"man climbing: light skin tone",hexcode:"1F9D7-1F3FB-200D-2642-FE0F",emoji:"🧗🏻♂️",text:"",type:1,order:2567,group:1,subgroup:27,version:5,gender:1,tone:1,shortCodes:["man_climbing_tone1"]},{label:"man climbing: medium-light skin tone",hexcode:"1F9D7-1F3FC-200D-2642-FE0F",emoji:"🧗🏼♂️",text:"",type:1,order:2569,group:1,subgroup:27,version:5,gender:1,tone:2,shortCodes:["man_climbing_tone2"]},{label:"man climbing: medium skin tone",hexcode:"1F9D7-1F3FD-200D-2642-FE0F",emoji:"🧗🏽♂️",text:"",type:1,order:2571,group:1,subgroup:27,version:5,gender:1,tone:3,shortCodes:["man_climbing_tone3"]},{label:"man climbing: medium-dark skin tone",hexcode:"1F9D7-1F3FE-200D-2642-FE0F",emoji:"🧗🏾♂️",text:"",type:1,order:2573,group:1,subgroup:27,version:5,gender:1,tone:4,shortCodes:["man_climbing_tone4"]},{label:"man climbing: dark skin tone",hexcode:"1F9D7-1F3FF-200D-2642-FE0F",emoji:"🧗🏿♂️",text:"",type:1,order:2575,group:1,subgroup:27,version:5,gender:1,tone:5,shortCodes:["man_climbing_tone5"]}],shortCodes:["man_climbing"]},{label:"woman climbing",hexcode:"1F9D7-200D-2640-FE0F",tags:["climb","climber","climbing","mountain","rock","scale","up","woman"],emoji:"🧗♀️",text:"",type:1,order:2577,group:1,subgroup:27,version:5,gender:0,skins:[{label:"woman climbing: light skin tone",hexcode:"1F9D7-1F3FB-200D-2640-FE0F",emoji:"🧗🏻♀️",text:"",type:1,order:2579,group:1,subgroup:27,version:5,gender:0,tone:1,shortCodes:["woman_climbing_tone1"]},{label:"woman climbing: medium-light skin tone",hexcode:"1F9D7-1F3FC-200D-2640-FE0F",emoji:"🧗🏼♀️",text:"",type:1,order:2581,group:1,subgroup:27,version:5,gender:0,tone:2,shortCodes:["woman_climbing_tone2"]},{label:"woman climbing: medium skin tone",hexcode:"1F9D7-1F3FD-200D-2640-FE0F",emoji:"🧗🏽♀️",text:"",type:1,order:2583,group:1,subgroup:27,version:5,gender:0,tone:3,shortCodes:["woman_climbing_tone3"]},{label:"woman climbing: medium-dark skin tone",hexcode:"1F9D7-1F3FE-200D-2640-FE0F",emoji:"🧗🏾♀️",text:"",type:1,order:2585,group:1,subgroup:27,version:5,gender:0,tone:4,shortCodes:["woman_climbing_tone4"]},{label:"woman climbing: dark skin tone",hexcode:"1F9D7-1F3FF-200D-2640-FE0F",emoji:"🧗🏿♀️",text:"",type:1,order:2587,group:1,subgroup:27,version:5,gender:0,tone:5,shortCodes:["woman_climbing_tone5"]}],shortCodes:["woman_climbing"]},{label:"person fencing",hexcode:"1F93A",tags:["fencer","fencing","person","sword"],emoji:"🤺",text:"",type:1,order:2589,group:1,subgroup:28,version:3,shortCodes:["fencer","fencing","person_fencing"]},{label:"horse racing",hexcode:"1F3C7",tags:["horse","jockey","racehorse","racing","riding","sport"],emoji:"🏇",text:"",type:1,order:2590,group:1,subgroup:28,version:1,skins:[{label:"horse racing: light skin tone",hexcode:"1F3C7-1F3FB",emoji:"🏇🏻",text:"",type:1,order:2591,group:1,subgroup:28,version:1,tone:1,shortCodes:["horse_racing_tone1"]},{label:"horse racing: medium-light skin tone",hexcode:"1F3C7-1F3FC",emoji:"🏇🏼",text:"",type:1,order:2592,group:1,subgroup:28,version:1,tone:2,shortCodes:["horse_racing_tone2"]},{label:"horse racing: medium skin tone",hexcode:"1F3C7-1F3FD",emoji:"🏇🏽",text:"",type:1,order:2593,group:1,subgroup:28,version:1,tone:3,shortCodes:["horse_racing_tone3"]},{label:"horse racing: medium-dark skin tone",hexcode:"1F3C7-1F3FE",emoji:"🏇🏾",text:"",type:1,order:2594,group:1,subgroup:28,version:1,tone:4,shortCodes:["horse_racing_tone4"]},{label:"horse racing: dark skin tone",hexcode:"1F3C7-1F3FF",emoji:"🏇🏿",text:"",type:1,order:2595,group:1,subgroup:28,version:1,tone:5,shortCodes:["horse_racing_tone5"]}],shortCodes:["horse_racing"]},{label:"skier",hexcode:"26F7",tags:["ski","snow"],emoji:"⛷️",text:"⛷︎",type:0,order:2597,group:1,subgroup:28,version:.7,shortCodes:["person_skiing","skier","skiing"]},{label:"snowboarder",hexcode:"1F3C2",tags:["ski","snow","snowboard","sport"],emoji:"🏂️",text:"🏂︎",type:1,order:2598,group:1,subgroup:28,version:.6,skins:[{label:"snowboarder: light skin tone",hexcode:"1F3C2-1F3FB",emoji:"🏂🏻",text:"",type:1,order:2599,group:1,subgroup:28,version:1,tone:1,shortCodes:["person_snowboarding_tone1","snowboarder_tone1","snowboarding_tone1"]},{label:"snowboarder: medium-light skin tone",hexcode:"1F3C2-1F3FC",emoji:"🏂🏼",text:"",type:1,order:2600,group:1,subgroup:28,version:1,tone:2,shortCodes:["person_snowboarding_tone2","snowboarder_tone2","snowboarding_tone2"]},{label:"snowboarder: medium skin tone",hexcode:"1F3C2-1F3FD",emoji:"🏂🏽",text:"",type:1,order:2601,group:1,subgroup:28,version:1,tone:3,shortCodes:["person_snowboarding_tone3","snowboarder_tone3","snowboarding_tone3"]},{label:"snowboarder: medium-dark skin tone",hexcode:"1F3C2-1F3FE",emoji:"🏂🏾",text:"",type:1,order:2602,group:1,subgroup:28,version:1,tone:4,shortCodes:["person_snowboarding_tone4","snowboarder_tone4","snowboarding_tone4"]},{label:"snowboarder: dark skin tone",hexcode:"1F3C2-1F3FF",emoji:"🏂🏿",text:"",type:1,order:2603,group:1,subgroup:28,version:1,tone:5,shortCodes:["person_snowboarding_tone5","snowboarder_tone5","snowboarding_tone5"]}],shortCodes:["person_snowboarding","snowboarder","snowboarding"]},{label:"person golfing",hexcode:"1F3CC",tags:["ball","birdie","caddy","driving","golf","golfing","green","person","pga","putt","range","tee"],emoji:"🏌️",text:"🏌︎",type:0,order:2605,group:1,subgroup:28,version:.7,skins:[{label:"person golfing: light skin tone",hexcode:"1F3CC-1F3FB",emoji:"🏌🏻",text:"",type:1,order:2606,group:1,subgroup:28,version:4,tone:1,shortCodes:["golfer_tone1","golfing_tone1","person_golfing_tone1"]},{label:"person golfing: medium-light skin tone",hexcode:"1F3CC-1F3FC",emoji:"🏌🏼",text:"",type:1,order:2607,group:1,subgroup:28,version:4,tone:2,shortCodes:["golfer_tone2","golfing_tone2","person_golfing_tone2"]},{label:"person golfing: medium skin tone",hexcode:"1F3CC-1F3FD",emoji:"🏌🏽",text:"",type:1,order:2608,group:1,subgroup:28,version:4,tone:3,shortCodes:["golfer_tone3","golfing_tone3","person_golfing_tone3"]},{label:"person golfing: medium-dark skin tone",hexcode:"1F3CC-1F3FE",emoji:"🏌🏾",text:"",type:1,order:2609,group:1,subgroup:28,version:4,tone:4,shortCodes:["golfer_tone4","golfing_tone4","person_golfing_tone4"]},{label:"person golfing: dark skin tone",hexcode:"1F3CC-1F3FF",emoji:"🏌🏿",text:"",type:1,order:2610,group:1,subgroup:28,version:4,tone:5,shortCodes:["golfer_tone5","golfing_tone5","person_golfing_tone5"]}],shortCodes:["golfer","golfing","person_golfing"]},{label:"man golfing",hexcode:"1F3CC-FE0F-200D-2642-FE0F",tags:["ball","birdie","caddy","driving","golf","golfing","green","man","pga","putt","range","tee"],emoji:"🏌️♂️",text:"",type:1,order:2611,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man golfing: light skin tone",hexcode:"1F3CC-1F3FB-200D-2642-FE0F",emoji:"🏌🏻♂️",text:"",type:1,order:2615,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_golfing_tone1"]},{label:"man golfing: medium-light skin tone",hexcode:"1F3CC-1F3FC-200D-2642-FE0F",emoji:"🏌🏼♂️",text:"",type:1,order:2617,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_golfing_tone2"]},{label:"man golfing: medium skin tone",hexcode:"1F3CC-1F3FD-200D-2642-FE0F",emoji:"🏌🏽♂️",text:"",type:1,order:2619,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_golfing_tone3"]},{label:"man golfing: medium-dark skin tone",hexcode:"1F3CC-1F3FE-200D-2642-FE0F",emoji:"🏌🏾♂️",text:"",type:1,order:2621,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_golfing_tone4"]},{label:"man golfing: dark skin tone",hexcode:"1F3CC-1F3FF-200D-2642-FE0F",emoji:"🏌🏿♂️",text:"",type:1,order:2623,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_golfing_tone5"]}],shortCodes:["man_golfing"]},{label:"woman golfing",hexcode:"1F3CC-FE0F-200D-2640-FE0F",tags:["ball","birdie","caddy","driving","golf","golfing","green","pga","putt","range","tee","woman"],emoji:"🏌️♀️",text:"",type:1,order:2625,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman golfing: light skin tone",hexcode:"1F3CC-1F3FB-200D-2640-FE0F",emoji:"🏌🏻♀️",text:"",type:1,order:2629,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_golfing_tone1"]},{label:"woman golfing: medium-light skin tone",hexcode:"1F3CC-1F3FC-200D-2640-FE0F",emoji:"🏌🏼♀️",text:"",type:1,order:2631,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_golfing_tone2"]},{label:"woman golfing: medium skin tone",hexcode:"1F3CC-1F3FD-200D-2640-FE0F",emoji:"🏌🏽♀️",text:"",type:1,order:2633,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_golfing_tone3"]},{label:"woman golfing: medium-dark skin tone",hexcode:"1F3CC-1F3FE-200D-2640-FE0F",emoji:"🏌🏾♀️",text:"",type:1,order:2635,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_golfing_tone4"]},{label:"woman golfing: dark skin tone",hexcode:"1F3CC-1F3FF-200D-2640-FE0F",emoji:"🏌🏿♀️",text:"",type:1,order:2637,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_golfing_tone5"]}],shortCodes:["woman_golfing"]},{label:"person surfing",hexcode:"1F3C4",tags:["beach","ocean","person","sport","surf","surfer","surfing","swell","waves"],emoji:"🏄️",text:"🏄︎",type:1,order:2639,group:1,subgroup:28,version:.6,skins:[{label:"person surfing: light skin tone",hexcode:"1F3C4-1F3FB",emoji:"🏄🏻",text:"",type:1,order:2640,group:1,subgroup:28,version:1,tone:1,shortCodes:["person_surfing_tone1","surfer_tone1","surfing_tone1"]},{label:"person surfing: medium-light skin tone",hexcode:"1F3C4-1F3FC",emoji:"🏄🏼",text:"",type:1,order:2641,group:1,subgroup:28,version:1,tone:2,shortCodes:["person_surfing_tone2","surfer_tone2","surfing_tone2"]},{label:"person surfing: medium skin tone",hexcode:"1F3C4-1F3FD",emoji:"🏄🏽",text:"",type:1,order:2642,group:1,subgroup:28,version:1,tone:3,shortCodes:["person_surfing_tone3","surfer_tone3","surfing_tone3"]},{label:"person surfing: medium-dark skin tone",hexcode:"1F3C4-1F3FE",emoji:"🏄🏾",text:"",type:1,order:2643,group:1,subgroup:28,version:1,tone:4,shortCodes:["person_surfing_tone4","surfer_tone4","surfing_tone4"]},{label:"person surfing: dark skin tone",hexcode:"1F3C4-1F3FF",emoji:"🏄🏿",text:"",type:1,order:2644,group:1,subgroup:28,version:1,tone:5,shortCodes:["person_surfing_tone5","surfer_tone5","surfing_tone5"]}],shortCodes:["person_surfing","surfer","surfing"]},{label:"man surfing",hexcode:"1F3C4-200D-2642-FE0F",tags:["beach","man","ocean","sport","surf","surfer","surfing","swell","waves"],emoji:"🏄♂️",text:"",type:1,order:2645,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man surfing: light skin tone",hexcode:"1F3C4-1F3FB-200D-2642-FE0F",emoji:"🏄🏻♂️",text:"",type:1,order:2647,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_surfing_tone1"]},{label:"man surfing: medium-light skin tone",hexcode:"1F3C4-1F3FC-200D-2642-FE0F",emoji:"🏄🏼♂️",text:"",type:1,order:2649,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_surfing_tone2"]},{label:"man surfing: medium skin tone",hexcode:"1F3C4-1F3FD-200D-2642-FE0F",emoji:"🏄🏽♂️",text:"",type:1,order:2651,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_surfing_tone3"]},{label:"man surfing: medium-dark skin tone",hexcode:"1F3C4-1F3FE-200D-2642-FE0F",emoji:"🏄🏾♂️",text:"",type:1,order:2653,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_surfing_tone4"]},{label:"man surfing: dark skin tone",hexcode:"1F3C4-1F3FF-200D-2642-FE0F",emoji:"🏄🏿♂️",text:"",type:1,order:2655,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_surfing_tone5"]}],shortCodes:["man_surfing"]},{label:"woman surfing",hexcode:"1F3C4-200D-2640-FE0F",tags:["beach","ocean","person","sport","surf","surfer","surfing","swell","waves"],emoji:"🏄♀️",text:"",type:1,order:2657,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman surfing: light skin tone",hexcode:"1F3C4-1F3FB-200D-2640-FE0F",emoji:"🏄🏻♀️",text:"",type:1,order:2659,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_surfing_tone1"]},{label:"woman surfing: medium-light skin tone",hexcode:"1F3C4-1F3FC-200D-2640-FE0F",emoji:"🏄🏼♀️",text:"",type:1,order:2661,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_surfing_tone2"]},{label:"woman surfing: medium skin tone",hexcode:"1F3C4-1F3FD-200D-2640-FE0F",emoji:"🏄🏽♀️",text:"",type:1,order:2663,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_surfing_tone3"]},{label:"woman surfing: medium-dark skin tone",hexcode:"1F3C4-1F3FE-200D-2640-FE0F",emoji:"🏄🏾♀️",text:"",type:1,order:2665,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_surfing_tone4"]},{label:"woman surfing: dark skin tone",hexcode:"1F3C4-1F3FF-200D-2640-FE0F",emoji:"🏄🏿♀️",text:"",type:1,order:2667,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_surfing_tone5"]}],shortCodes:["woman_surfing"]},{label:"person rowing boat",hexcode:"1F6A3",tags:["boat","canoe","cruise","fishing","lake","oar","paddle","person","raft","river","row","rowboat","rowing"],emoji:"🚣",text:"",type:1,order:2669,group:1,subgroup:28,version:1,skins:[{label:"person rowing boat: light skin tone",hexcode:"1F6A3-1F3FB",emoji:"🚣🏻",text:"",type:1,order:2670,group:1,subgroup:28,version:1,tone:1,shortCodes:["person_rowing_boat_tone1","rowboat_tone1"]},{label:"person rowing boat: medium-light skin tone",hexcode:"1F6A3-1F3FC",emoji:"🚣🏼",text:"",type:1,order:2671,group:1,subgroup:28,version:1,tone:2,shortCodes:["person_rowing_boat_tone2","rowboat_tone2"]},{label:"person rowing boat: medium skin tone",hexcode:"1F6A3-1F3FD",emoji:"🚣🏽",text:"",type:1,order:2672,group:1,subgroup:28,version:1,tone:3,shortCodes:["person_rowing_boat_tone3","rowboat_tone3"]},{label:"person rowing boat: medium-dark skin tone",hexcode:"1F6A3-1F3FE",emoji:"🚣🏾",text:"",type:1,order:2673,group:1,subgroup:28,version:1,tone:4,shortCodes:["person_rowing_boat_tone4","rowboat_tone4"]},{label:"person rowing boat: dark skin tone",hexcode:"1F6A3-1F3FF",emoji:"🚣🏿",text:"",type:1,order:2674,group:1,subgroup:28,version:1,tone:5,shortCodes:["person_rowing_boat_tone5","rowboat_tone5"]}],shortCodes:["person_rowing_boat","rowboat"]},{label:"man rowing boat",hexcode:"1F6A3-200D-2642-FE0F",tags:["boat","canoe","cruise","fishing","lake","man","oar","paddle","raft","river","row","rowboat","rowing"],emoji:"🚣♂️",text:"",type:1,order:2675,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man rowing boat: light skin tone",hexcode:"1F6A3-1F3FB-200D-2642-FE0F",emoji:"🚣🏻♂️",text:"",type:1,order:2677,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_rowing_boat_tone1"]},{label:"man rowing boat: medium-light skin tone",hexcode:"1F6A3-1F3FC-200D-2642-FE0F",emoji:"🚣🏼♂️",text:"",type:1,order:2679,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_rowing_boat_tone2"]},{label:"man rowing boat: medium skin tone",hexcode:"1F6A3-1F3FD-200D-2642-FE0F",emoji:"🚣🏽♂️",text:"",type:1,order:2681,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_rowing_boat_tone3"]},{label:"man rowing boat: medium-dark skin tone",hexcode:"1F6A3-1F3FE-200D-2642-FE0F",emoji:"🚣🏾♂️",text:"",type:1,order:2683,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_rowing_boat_tone4"]},{label:"man rowing boat: dark skin tone",hexcode:"1F6A3-1F3FF-200D-2642-FE0F",emoji:"🚣🏿♂️",text:"",type:1,order:2685,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_rowing_boat_tone5"]}],shortCodes:["man_rowing_boat"]},{label:"woman rowing boat",hexcode:"1F6A3-200D-2640-FE0F",tags:["boat","canoe","cruise","fishing","lake","oar","paddle","raft","river","row","rowboat","rowing","woman"],emoji:"🚣♀️",text:"",type:1,order:2687,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman rowing boat: light skin tone",hexcode:"1F6A3-1F3FB-200D-2640-FE0F",emoji:"🚣🏻♀️",text:"",type:1,order:2689,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_rowing_boat_tone1"]},{label:"woman rowing boat: medium-light skin tone",hexcode:"1F6A3-1F3FC-200D-2640-FE0F",emoji:"🚣🏼♀️",text:"",type:1,order:2691,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_rowing_boat_tone2"]},{label:"woman rowing boat: medium skin tone",hexcode:"1F6A3-1F3FD-200D-2640-FE0F",emoji:"🚣🏽♀️",text:"",type:1,order:2693,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_rowing_boat_tone3"]},{label:"woman rowing boat: medium-dark skin tone",hexcode:"1F6A3-1F3FE-200D-2640-FE0F",emoji:"🚣🏾♀️",text:"",type:1,order:2695,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_rowing_boat_tone4"]},{label:"woman rowing boat: dark skin tone",hexcode:"1F6A3-1F3FF-200D-2640-FE0F",emoji:"🚣🏿♀️",text:"",type:1,order:2697,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_rowing_boat_tone5"]}],shortCodes:["woman_rowing_boat"]},{label:"person swimming",hexcode:"1F3CA",tags:["freestyle","person","sport","swim","swimmer","swimming","triathlon"],emoji:"🏊️",text:"🏊︎",type:1,order:2699,group:1,subgroup:28,version:.6,skins:[{label:"person swimming: light skin tone",hexcode:"1F3CA-1F3FB",emoji:"🏊🏻",text:"",type:1,order:2700,group:1,subgroup:28,version:1,tone:1,shortCodes:["person_swimming_tone1","swimmer_tone1","swimming_tone1"]},{label:"person swimming: medium-light skin tone",hexcode:"1F3CA-1F3FC",emoji:"🏊🏼",text:"",type:1,order:2701,group:1,subgroup:28,version:1,tone:2,shortCodes:["person_swimming_tone2","swimmer_tone2","swimming_tone2"]},{label:"person swimming: medium skin tone",hexcode:"1F3CA-1F3FD",emoji:"🏊🏽",text:"",type:1,order:2702,group:1,subgroup:28,version:1,tone:3,shortCodes:["person_swimming_tone3","swimmer_tone3","swimming_tone3"]},{label:"person swimming: medium-dark skin tone",hexcode:"1F3CA-1F3FE",emoji:"🏊🏾",text:"",type:1,order:2703,group:1,subgroup:28,version:1,tone:4,shortCodes:["person_swimming_tone4","swimmer_tone4","swimming_tone4"]},{label:"person swimming: dark skin tone",hexcode:"1F3CA-1F3FF",emoji:"🏊🏿",text:"",type:1,order:2704,group:1,subgroup:28,version:1,tone:5,shortCodes:["person_swimming_tone5","swimmer_tone5","swimming_tone5"]}],shortCodes:["person_swimming","swimmer","swimming"]},{label:"man swimming",hexcode:"1F3CA-200D-2642-FE0F",tags:["freestyle","man","sport","swim","swimmer","swimming","triathlon"],emoji:"🏊♂️",text:"",type:1,order:2705,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man swimming: light skin tone",hexcode:"1F3CA-1F3FB-200D-2642-FE0F",emoji:"🏊🏻♂️",text:"",type:1,order:2707,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_swimming_tone1"]},{label:"man swimming: medium-light skin tone",hexcode:"1F3CA-1F3FC-200D-2642-FE0F",emoji:"🏊🏼♂️",text:"",type:1,order:2709,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_swimming_tone2"]},{label:"man swimming: medium skin tone",hexcode:"1F3CA-1F3FD-200D-2642-FE0F",emoji:"🏊🏽♂️",text:"",type:1,order:2711,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_swimming_tone3"]},{label:"man swimming: medium-dark skin tone",hexcode:"1F3CA-1F3FE-200D-2642-FE0F",emoji:"🏊🏾♂️",text:"",type:1,order:2713,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_swimming_tone4"]},{label:"man swimming: dark skin tone",hexcode:"1F3CA-1F3FF-200D-2642-FE0F",emoji:"🏊🏿♂️",text:"",type:1,order:2715,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_swimming_tone5"]}],shortCodes:["man_swimming"]},{label:"woman swimming",hexcode:"1F3CA-200D-2640-FE0F",tags:["freestyle","man","sport","swim","swimmer","swimming","triathlon"],emoji:"🏊♀️",text:"",type:1,order:2717,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman swimming: light skin tone",hexcode:"1F3CA-1F3FB-200D-2640-FE0F",emoji:"🏊🏻♀️",text:"",type:1,order:2719,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_swimming_tone1"]},{label:"woman swimming: medium-light skin tone",hexcode:"1F3CA-1F3FC-200D-2640-FE0F",emoji:"🏊🏼♀️",text:"",type:1,order:2721,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_swimming_tone2"]},{label:"woman swimming: medium skin tone",hexcode:"1F3CA-1F3FD-200D-2640-FE0F",emoji:"🏊🏽♀️",text:"",type:1,order:2723,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_swimming_tone3"]},{label:"woman swimming: medium-dark skin tone",hexcode:"1F3CA-1F3FE-200D-2640-FE0F",emoji:"🏊🏾♀️",text:"",type:1,order:2725,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_swimming_tone4"]},{label:"woman swimming: dark skin tone",hexcode:"1F3CA-1F3FF-200D-2640-FE0F",emoji:"🏊🏿♀️",text:"",type:1,order:2727,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_swimming_tone5"]}],shortCodes:["woman_swimming"]},{label:"person bouncing ball",hexcode:"26F9",tags:["athletic","ball","basketball","bouncing","championship","dribble","net","person","player","throw"],emoji:"⛹️",text:"⛹︎",type:0,order:2730,group:1,subgroup:28,version:.7,skins:[{label:"person bouncing ball: light skin tone",hexcode:"26F9-1F3FB",emoji:"⛹🏻",text:"",type:1,order:2731,group:1,subgroup:28,version:2,tone:1,shortCodes:["person_bouncing_ball_tone1"]},{label:"person bouncing ball: medium-light skin tone",hexcode:"26F9-1F3FC",emoji:"⛹🏼",text:"",type:1,order:2732,group:1,subgroup:28,version:2,tone:2,shortCodes:["person_bouncing_ball_tone2"]},{label:"person bouncing ball: medium skin tone",hexcode:"26F9-1F3FD",emoji:"⛹🏽",text:"",type:1,order:2733,group:1,subgroup:28,version:2,tone:3,shortCodes:["person_bouncing_ball_tone3"]},{label:"person bouncing ball: medium-dark skin tone",hexcode:"26F9-1F3FE",emoji:"⛹🏾",text:"",type:1,order:2734,group:1,subgroup:28,version:2,tone:4,shortCodes:["person_bouncing_ball_tone4"]},{label:"person bouncing ball: dark skin tone",hexcode:"26F9-1F3FF",emoji:"⛹🏿",text:"",type:1,order:2735,group:1,subgroup:28,version:2,tone:5,shortCodes:["person_bouncing_ball_tone5"]}],shortCodes:["person_bouncing_ball"]},{label:"man bouncing ball",hexcode:"26F9-FE0F-200D-2642-FE0F",tags:["athletic","ball","basketball","bouncing","championship","dribble","man","net","player","throw"],emoji:"⛹️♂️",text:"",type:1,order:2736,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man bouncing ball: light skin tone",hexcode:"26F9-1F3FB-200D-2642-FE0F",emoji:"⛹🏻♂️",text:"",type:1,order:2740,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_bouncing_ball_tone1"]},{label:"man bouncing ball: medium-light skin tone",hexcode:"26F9-1F3FC-200D-2642-FE0F",emoji:"⛹🏼♂️",text:"",type:1,order:2742,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_bouncing_ball_tone2"]},{label:"man bouncing ball: medium skin tone",hexcode:"26F9-1F3FD-200D-2642-FE0F",emoji:"⛹🏽♂️",text:"",type:1,order:2744,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_bouncing_ball_tone3"]},{label:"man bouncing ball: medium-dark skin tone",hexcode:"26F9-1F3FE-200D-2642-FE0F",emoji:"⛹🏾♂️",text:"",type:1,order:2746,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_bouncing_ball_tone4"]},{label:"man bouncing ball: dark skin tone",hexcode:"26F9-1F3FF-200D-2642-FE0F",emoji:"⛹🏿♂️",text:"",type:1,order:2748,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_bouncing_ball_tone5"]}],shortCodes:["man_bouncing_ball"]},{label:"woman bouncing ball",hexcode:"26F9-FE0F-200D-2640-FE0F",tags:["athletic","ball","basketball","bouncing","championship","dribble","net","player","throw","woman"],emoji:"⛹️♀️",text:"",type:1,order:2750,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman bouncing ball: light skin tone",hexcode:"26F9-1F3FB-200D-2640-FE0F",emoji:"⛹🏻♀️",text:"",type:1,order:2754,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_bouncing_ball_tone1"]},{label:"woman bouncing ball: medium-light skin tone",hexcode:"26F9-1F3FC-200D-2640-FE0F",emoji:"⛹🏼♀️",text:"",type:1,order:2756,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_bouncing_ball_tone2"]},{label:"woman bouncing ball: medium skin tone",hexcode:"26F9-1F3FD-200D-2640-FE0F",emoji:"⛹🏽♀️",text:"",type:1,order:2758,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_bouncing_ball_tone3"]},{label:"woman bouncing ball: medium-dark skin tone",hexcode:"26F9-1F3FE-200D-2640-FE0F",emoji:"⛹🏾♀️",text:"",type:1,order:2760,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_bouncing_ball_tone4"]},{label:"woman bouncing ball: dark skin tone",hexcode:"26F9-1F3FF-200D-2640-FE0F",emoji:"⛹🏿♀️",text:"",type:1,order:2762,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_bouncing_ball_tone5"]}],shortCodes:["woman_bouncing_ball"]},{label:"person lifting weights",hexcode:"1F3CB",tags:["barbell","bodybuilder","deadlift","lifter","lifting","person","powerlifting","weight","weightlifter","weights","workout"],emoji:"🏋️",text:"🏋︎",type:0,order:2765,group:1,subgroup:28,version:.7,skins:[{label:"person lifting weights: light skin tone",hexcode:"1F3CB-1F3FB",emoji:"🏋🏻",text:"",type:1,order:2766,group:1,subgroup:28,version:2,tone:1,shortCodes:["person_lifting_weights_tone1","weight_lifter_tone1","weight_lifting_tone1"]},{label:"person lifting weights: medium-light skin tone",hexcode:"1F3CB-1F3FC",emoji:"🏋🏼",text:"",type:1,order:2767,group:1,subgroup:28,version:2,tone:2,shortCodes:["person_lifting_weights_tone2","weight_lifter_tone2","weight_lifting_tone2"]},{label:"person lifting weights: medium skin tone",hexcode:"1F3CB-1F3FD",emoji:"🏋🏽",text:"",type:1,order:2768,group:1,subgroup:28,version:2,tone:3,shortCodes:["person_lifting_weights_tone3","weight_lifter_tone3","weight_lifting_tone3"]},{label:"person lifting weights: medium-dark skin tone",hexcode:"1F3CB-1F3FE",emoji:"🏋🏾",text:"",type:1,order:2769,group:1,subgroup:28,version:2,tone:4,shortCodes:["person_lifting_weights_tone4","weight_lifter_tone4","weight_lifting_tone4"]},{label:"person lifting weights: dark skin tone",hexcode:"1F3CB-1F3FF",emoji:"🏋🏿",text:"",type:1,order:2770,group:1,subgroup:28,version:2,tone:5,shortCodes:["person_lifting_weights_tone5","weight_lifter_tone5","weight_lifting_tone5"]}],shortCodes:["person_lifting_weights","weight_lifter","weight_lifting"]},{label:"man lifting weights",hexcode:"1F3CB-FE0F-200D-2642-FE0F",tags:["barbell","bodybuilder","deadlift","lifter","lifting","man","powerlifting","weight","weightlifter","weights","workout"],emoji:"🏋️♂️",text:"",type:1,order:2771,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man lifting weights: light skin tone",hexcode:"1F3CB-1F3FB-200D-2642-FE0F",emoji:"🏋🏻♂️",text:"",type:1,order:2775,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_lifting_weights_tone1"]},{label:"man lifting weights: medium-light skin tone",hexcode:"1F3CB-1F3FC-200D-2642-FE0F",emoji:"🏋🏼♂️",text:"",type:1,order:2777,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_lifting_weights_tone2"]},{label:"man lifting weights: medium skin tone",hexcode:"1F3CB-1F3FD-200D-2642-FE0F",emoji:"🏋🏽♂️",text:"",type:1,order:2779,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_lifting_weights_tone3"]},{label:"man lifting weights: medium-dark skin tone",hexcode:"1F3CB-1F3FE-200D-2642-FE0F",emoji:"🏋🏾♂️",text:"",type:1,order:2781,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_lifting_weights_tone4"]},{label:"man lifting weights: dark skin tone",hexcode:"1F3CB-1F3FF-200D-2642-FE0F",emoji:"🏋🏿♂️",text:"",type:1,order:2783,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_lifting_weights_tone5"]}],shortCodes:["man_lifting_weights"]},{label:"woman lifting weights",hexcode:"1F3CB-FE0F-200D-2640-FE0F",tags:["barbell","bodybuilder","deadlift","lifter","lifting","powerlifting","weight","weightlifter","weights","woman","workout"],emoji:"🏋️♀️",text:"",type:1,order:2785,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman lifting weights: light skin tone",hexcode:"1F3CB-1F3FB-200D-2640-FE0F",emoji:"🏋🏻♀️",text:"",type:1,order:2789,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_lifting_weights_tone1"]},{label:"woman lifting weights: medium-light skin tone",hexcode:"1F3CB-1F3FC-200D-2640-FE0F",emoji:"🏋🏼♀️",text:"",type:1,order:2791,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_lifting_weights_tone2"]},{label:"woman lifting weights: medium skin tone",hexcode:"1F3CB-1F3FD-200D-2640-FE0F",emoji:"🏋🏽♀️",text:"",type:1,order:2793,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_lifting_weights_tone3"]},{label:"woman lifting weights: medium-dark skin tone",hexcode:"1F3CB-1F3FE-200D-2640-FE0F",emoji:"🏋🏾♀️",text:"",type:1,order:2795,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_lifting_weights_tone4"]},{label:"woman lifting weights: dark skin tone",hexcode:"1F3CB-1F3FF-200D-2640-FE0F",emoji:"🏋🏿♀️",text:"",type:1,order:2797,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_lifting_weights_tone5"]}],shortCodes:["woman_lifting_weights"]},{label:"person biking",hexcode:"1F6B4",tags:["bicycle","bicyclist","bike","biking","cycle","cyclist","person","riding","sport"],emoji:"🚴",text:"",type:1,order:2799,group:1,subgroup:28,version:1,skins:[{label:"person biking: light skin tone",hexcode:"1F6B4-1F3FB",emoji:"🚴🏻",text:"",type:1,order:2800,group:1,subgroup:28,version:1,tone:1,shortCodes:["bicyclist_tone1","biking_tone1","person_biking_tone1"]},{label:"person biking: medium-light skin tone",hexcode:"1F6B4-1F3FC",emoji:"🚴🏼",text:"",type:1,order:2801,group:1,subgroup:28,version:1,tone:2,shortCodes:["bicyclist_tone2","biking_tone2","person_biking_tone2"]},{label:"person biking: medium skin tone",hexcode:"1F6B4-1F3FD",emoji:"🚴🏽",text:"",type:1,order:2802,group:1,subgroup:28,version:1,tone:3,shortCodes:["bicyclist_tone3","biking_tone3","person_biking_tone3"]},{label:"person biking: medium-dark skin tone",hexcode:"1F6B4-1F3FE",emoji:"🚴🏾",text:"",type:1,order:2803,group:1,subgroup:28,version:1,tone:4,shortCodes:["bicyclist_tone4","biking_tone4","person_biking_tone4"]},{label:"person biking: dark skin tone",hexcode:"1F6B4-1F3FF",emoji:"🚴🏿",text:"",type:1,order:2804,group:1,subgroup:28,version:1,tone:5,shortCodes:["bicyclist_tone5","biking_tone5","person_biking_tone5"]}],shortCodes:["bicyclist","biking","person_biking"]},{label:"man biking",hexcode:"1F6B4-200D-2642-FE0F",tags:["bicycle","bicyclist","bike","biking","cycle","cyclist","man","riding","sport"],emoji:"🚴♂️",text:"",type:1,order:2805,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man biking: light skin tone",hexcode:"1F6B4-1F3FB-200D-2642-FE0F",emoji:"🚴🏻♂️",text:"",type:1,order:2807,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_biking_tone1"]},{label:"man biking: medium-light skin tone",hexcode:"1F6B4-1F3FC-200D-2642-FE0F",emoji:"🚴🏼♂️",text:"",type:1,order:2809,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_biking_tone2"]},{label:"man biking: medium skin tone",hexcode:"1F6B4-1F3FD-200D-2642-FE0F",emoji:"🚴🏽♂️",text:"",type:1,order:2811,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_biking_tone3"]},{label:"man biking: medium-dark skin tone",hexcode:"1F6B4-1F3FE-200D-2642-FE0F",emoji:"🚴🏾♂️",text:"",type:1,order:2813,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_biking_tone4"]},{label:"man biking: dark skin tone",hexcode:"1F6B4-1F3FF-200D-2642-FE0F",emoji:"🚴🏿♂️",text:"",type:1,order:2815,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_biking_tone5"]}],shortCodes:["man_biking"]},{label:"woman biking",hexcode:"1F6B4-200D-2640-FE0F",tags:["bicycle","bicyclist","bike","biking","cycle","cyclist","riding","sport","woman"],emoji:"🚴♀️",text:"",type:1,order:2817,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman biking: light skin tone",hexcode:"1F6B4-1F3FB-200D-2640-FE0F",emoji:"🚴🏻♀️",text:"",type:1,order:2819,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_biking_tone1"]},{label:"woman biking: medium-light skin tone",hexcode:"1F6B4-1F3FC-200D-2640-FE0F",emoji:"🚴🏼♀️",text:"",type:1,order:2821,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_biking_tone2"]},{label:"woman biking: medium skin tone",hexcode:"1F6B4-1F3FD-200D-2640-FE0F",emoji:"🚴🏽♀️",text:"",type:1,order:2823,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_biking_tone3"]},{label:"woman biking: medium-dark skin tone",hexcode:"1F6B4-1F3FE-200D-2640-FE0F",emoji:"🚴🏾♀️",text:"",type:1,order:2825,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_biking_tone4"]},{label:"woman biking: dark skin tone",hexcode:"1F6B4-1F3FF-200D-2640-FE0F",emoji:"🚴🏿♀️",text:"",type:1,order:2827,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_biking_tone5"]}],shortCodes:["woman_biking"]},{label:"person mountain biking",hexcode:"1F6B5",tags:["bicycle","bicyclist","bike","biking","cycle","cyclist","mountain","person","riding","sport"],emoji:"🚵",text:"",type:1,order:2829,group:1,subgroup:28,version:1,skins:[{label:"person mountain biking: light skin tone",hexcode:"1F6B5-1F3FB",emoji:"🚵🏻",text:"",type:1,order:2830,group:1,subgroup:28,version:1,tone:1,shortCodes:["mountain_bicyclist_tone1","mountain_biking_tone1","person_mountain_biking_tone1"]},{label:"person mountain biking: medium-light skin tone",hexcode:"1F6B5-1F3FC",emoji:"🚵🏼",text:"",type:1,order:2831,group:1,subgroup:28,version:1,tone:2,shortCodes:["mountain_bicyclist_tone2","mountain_biking_tone2","person_mountain_biking_tone2"]},{label:"person mountain biking: medium skin tone",hexcode:"1F6B5-1F3FD",emoji:"🚵🏽",text:"",type:1,order:2832,group:1,subgroup:28,version:1,tone:3,shortCodes:["mountain_bicyclist_tone3","mountain_biking_tone3","person_mountain_biking_tone3"]},{label:"person mountain biking: medium-dark skin tone",hexcode:"1F6B5-1F3FE",emoji:"🚵🏾",text:"",type:1,order:2833,group:1,subgroup:28,version:1,tone:4,shortCodes:["mountain_bicyclist_tone4","mountain_biking_tone4","person_mountain_biking_tone4"]},{label:"person mountain biking: dark skin tone",hexcode:"1F6B5-1F3FF",emoji:"🚵🏿",text:"",type:1,order:2834,group:1,subgroup:28,version:1,tone:5,shortCodes:["mountain_bicyclist_tone5","mountain_biking_tone5","person_mountain_biking_tone5"]}],shortCodes:["mountain_bicyclist","mountain_biking","person_mountain_biking"]},{label:"man mountain biking",hexcode:"1F6B5-200D-2642-FE0F",tags:["bicycle","bicyclist","bike","biking","cycle","cyclist","man","mountain","riding","sport"],emoji:"🚵♂️",text:"",type:1,order:2835,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man mountain biking: light skin tone",hexcode:"1F6B5-1F3FB-200D-2642-FE0F",emoji:"🚵🏻♂️",text:"",type:1,order:2837,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_mountain_biking_tone1"]},{label:"man mountain biking: medium-light skin tone",hexcode:"1F6B5-1F3FC-200D-2642-FE0F",emoji:"🚵🏼♂️",text:"",type:1,order:2839,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_mountain_biking_tone2"]},{label:"man mountain biking: medium skin tone",hexcode:"1F6B5-1F3FD-200D-2642-FE0F",emoji:"🚵🏽♂️",text:"",type:1,order:2841,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_mountain_biking_tone3"]},{label:"man mountain biking: medium-dark skin tone",hexcode:"1F6B5-1F3FE-200D-2642-FE0F",emoji:"🚵🏾♂️",text:"",type:1,order:2843,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_mountain_biking_tone4"]},{label:"man mountain biking: dark skin tone",hexcode:"1F6B5-1F3FF-200D-2642-FE0F",emoji:"🚵🏿♂️",text:"",type:1,order:2845,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_mountain_biking_tone5"]}],shortCodes:["man_mountain_biking"]},{label:"woman mountain biking",hexcode:"1F6B5-200D-2640-FE0F",tags:["bicycle","bicyclist","bike","biking","cycle","cyclist","mountain","riding","sport","woman"],emoji:"🚵♀️",text:"",type:1,order:2847,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman mountain biking: light skin tone",hexcode:"1F6B5-1F3FB-200D-2640-FE0F",emoji:"🚵🏻♀️",text:"",type:1,order:2849,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_mountain_biking_tone1"]},{label:"woman mountain biking: medium-light skin tone",hexcode:"1F6B5-1F3FC-200D-2640-FE0F",emoji:"🚵🏼♀️",text:"",type:1,order:2851,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_mountain_biking_tone2"]},{label:"woman mountain biking: medium skin tone",hexcode:"1F6B5-1F3FD-200D-2640-FE0F",emoji:"🚵🏽♀️",text:"",type:1,order:2853,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_mountain_biking_tone3"]},{label:"woman mountain biking: medium-dark skin tone",hexcode:"1F6B5-1F3FE-200D-2640-FE0F",emoji:"🚵🏾♀️",text:"",type:1,order:2855,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_mountain_biking_tone4"]},{label:"woman mountain biking: dark skin tone",hexcode:"1F6B5-1F3FF-200D-2640-FE0F",emoji:"🚵🏿♀️",text:"",type:1,order:2857,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_mountain_biking_tone5"]}],shortCodes:["woman_mountain_biking"]},{label:"person cartwheeling",hexcode:"1F938",tags:["active","cartwheel","cartwheeling","excited","flip","gymnastics","happy","person","somersault"],emoji:"🤸",text:"",type:1,order:2859,group:1,subgroup:28,version:3,skins:[{label:"person cartwheeling: light skin tone",hexcode:"1F938-1F3FB",emoji:"🤸🏻",text:"",type:1,order:2860,group:1,subgroup:28,version:3,tone:1,shortCodes:["cartwheeling_tone1","person_cartwheel_tone1"]},{label:"person cartwheeling: medium-light skin tone",hexcode:"1F938-1F3FC",emoji:"🤸🏼",text:"",type:1,order:2861,group:1,subgroup:28,version:3,tone:2,shortCodes:["cartwheeling_tone2","person_cartwheel_tone2"]},{label:"person cartwheeling: medium skin tone",hexcode:"1F938-1F3FD",emoji:"🤸🏽",text:"",type:1,order:2862,group:1,subgroup:28,version:3,tone:3,shortCodes:["cartwheeling_tone3","person_cartwheel_tone3"]},{label:"person cartwheeling: medium-dark skin tone",hexcode:"1F938-1F3FE",emoji:"🤸🏾",text:"",type:1,order:2863,group:1,subgroup:28,version:3,tone:4,shortCodes:["cartwheeling_tone4","person_cartwheel_tone4"]},{label:"person cartwheeling: dark skin tone",hexcode:"1F938-1F3FF",emoji:"🤸🏿",text:"",type:1,order:2864,group:1,subgroup:28,version:3,tone:5,shortCodes:["cartwheeling_tone5","person_cartwheel_tone5"]}],shortCodes:["cartwheeling","person_cartwheel"]},{label:"man cartwheeling",hexcode:"1F938-200D-2642-FE0F",tags:["active","cartwheel","cartwheeling","excited","flip","gymnastics","happy","man","somersault"],emoji:"🤸♂️",text:"",type:1,order:2865,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man cartwheeling: light skin tone",hexcode:"1F938-1F3FB-200D-2642-FE0F",emoji:"🤸🏻♂️",text:"",type:1,order:2867,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_cartwheeling_tone1"]},{label:"man cartwheeling: medium-light skin tone",hexcode:"1F938-1F3FC-200D-2642-FE0F",emoji:"🤸🏼♂️",text:"",type:1,order:2869,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_cartwheeling_tone2"]},{label:"man cartwheeling: medium skin tone",hexcode:"1F938-1F3FD-200D-2642-FE0F",emoji:"🤸🏽♂️",text:"",type:1,order:2871,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_cartwheeling_tone3"]},{label:"man cartwheeling: medium-dark skin tone",hexcode:"1F938-1F3FE-200D-2642-FE0F",emoji:"🤸🏾♂️",text:"",type:1,order:2873,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_cartwheeling_tone4"]},{label:"man cartwheeling: dark skin tone",hexcode:"1F938-1F3FF-200D-2642-FE0F",emoji:"🤸🏿♂️",text:"",type:1,order:2875,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_cartwheeling_tone5"]}],shortCodes:["man_cartwheeling"]},{label:"woman cartwheeling",hexcode:"1F938-200D-2640-FE0F",tags:["active","cartwheel","cartwheeling","excited","flip","gymnastics","happy","somersault","woman"],emoji:"🤸♀️",text:"",type:1,order:2877,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman cartwheeling: light skin tone",hexcode:"1F938-1F3FB-200D-2640-FE0F",emoji:"🤸🏻♀️",text:"",type:1,order:2879,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_cartwheeling_tone1"]},{label:"woman cartwheeling: medium-light skin tone",hexcode:"1F938-1F3FC-200D-2640-FE0F",emoji:"🤸🏼♀️",text:"",type:1,order:2881,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_cartwheeling_tone2"]},{label:"woman cartwheeling: medium skin tone",hexcode:"1F938-1F3FD-200D-2640-FE0F",emoji:"🤸🏽♀️",text:"",type:1,order:2883,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_cartwheeling_tone3"]},{label:"woman cartwheeling: medium-dark skin tone",hexcode:"1F938-1F3FE-200D-2640-FE0F",emoji:"🤸🏾♀️",text:"",type:1,order:2885,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_cartwheeling_tone4"]},{label:"woman cartwheeling: dark skin tone",hexcode:"1F938-1F3FF-200D-2640-FE0F",emoji:"🤸🏿♀️",text:"",type:1,order:2887,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_cartwheeling_tone5"]}],shortCodes:["woman_cartwheeling"]},{label:"people wrestling",hexcode:"1F93C",tags:["combat","duel","grapple","people","ring","tournament","wrestle","wrestling"],emoji:"🤼",text:"",type:1,order:2889,group:1,subgroup:28,version:3,skins:[{label:"people wrestling: light skin tone",hexcode:"1F93C-1F3FB",emoji:"🤼🏻",text:"",type:1,order:2890,group:1,subgroup:28,version:17,tone:1,shortCodes:["people_wrestling_tone1","wrestlers_tone1","wrestling_tone1"]},{label:"people wrestling: medium-light skin tone",hexcode:"1F93C-1F3FC",emoji:"🤼🏼",text:"",type:1,order:2891,group:1,subgroup:28,version:17,tone:2,shortCodes:["people_wrestling_tone2","wrestlers_tone2","wrestling_tone2"]},{label:"people wrestling: medium skin tone",hexcode:"1F93C-1F3FD",emoji:"🤼🏽",text:"",type:1,order:2892,group:1,subgroup:28,version:17,tone:3,shortCodes:["people_wrestling_tone3","wrestlers_tone3","wrestling_tone3"]},{label:"people wrestling: medium-dark skin tone",hexcode:"1F93C-1F3FE",emoji:"🤼🏾",text:"",type:1,order:2893,group:1,subgroup:28,version:17,tone:4,shortCodes:["people_wrestling_tone4","wrestlers_tone4","wrestling_tone4"]},{label:"people wrestling: dark skin tone",hexcode:"1F93C-1F3FF",emoji:"🤼🏿",text:"",type:1,order:2894,group:1,subgroup:28,version:17,tone:5,shortCodes:["people_wrestling_tone5","wrestlers_tone5","wrestling_tone5"]},{label:"people wrestling: light skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FB-200D-1FAEF-200D-1F9D1-1F3FC",emoji:"🧑🏻🧑🏼",text:"",type:1,order:2919,group:1,subgroup:28,version:17,tone:[1,2],shortCodes:["people_wrestling_tone1-2","wrestlers_tone1-2","wrestling_tone1-2"]},{label:"people wrestling: light skin tone, medium skin tone",hexcode:"1F9D1-1F3FB-200D-1FAEF-200D-1F9D1-1F3FD",emoji:"🧑🏻🧑🏽",text:"",type:1,order:2920,group:1,subgroup:28,version:17,tone:[1,3],shortCodes:["people_wrestling_tone1-3","wrestlers_tone1-3","wrestling_tone1-3"]},{label:"people wrestling: light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FB-200D-1FAEF-200D-1F9D1-1F3FE",emoji:"🧑🏻🧑🏾",text:"",type:1,order:2921,group:1,subgroup:28,version:17,tone:[1,4],shortCodes:["people_wrestling_tone1-4","wrestlers_tone1-4","wrestling_tone1-4"]},{label:"people wrestling: light skin tone, dark skin tone",hexcode:"1F9D1-1F3FB-200D-1FAEF-200D-1F9D1-1F3FF",emoji:"🧑🏻🧑🏿",text:"",type:1,order:2922,group:1,subgroup:28,version:17,tone:[1,5],shortCodes:["people_wrestling_tone1-5","wrestlers_tone1-5","wrestling_tone1-5"]},{label:"people wrestling: medium-light skin tone, light skin tone",hexcode:"1F9D1-1F3FC-200D-1FAEF-200D-1F9D1-1F3FB",emoji:"🧑🏼🧑🏻",text:"",type:1,order:2923,group:1,subgroup:28,version:17,tone:[2,1],shortCodes:["people_wrestling_tone2-1","wrestlers_tone2-1","wrestling_tone2-1"]},{label:"people wrestling: medium-light skin tone, medium skin tone",hexcode:"1F9D1-1F3FC-200D-1FAEF-200D-1F9D1-1F3FD",emoji:"🧑🏼🧑🏽",text:"",type:1,order:2924,group:1,subgroup:28,version:17,tone:[2,3],shortCodes:["people_wrestling_tone2-3","wrestlers_tone2-3","wrestling_tone2-3"]},{label:"people wrestling: medium-light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FC-200D-1FAEF-200D-1F9D1-1F3FE",emoji:"🧑🏼🧑🏾",text:"",type:1,order:2925,group:1,subgroup:28,version:17,tone:[2,4],shortCodes:["people_wrestling_tone2-4","wrestlers_tone2-4","wrestling_tone2-4"]},{label:"people wrestling: medium-light skin tone, dark skin tone",hexcode:"1F9D1-1F3FC-200D-1FAEF-200D-1F9D1-1F3FF",emoji:"🧑🏼🧑🏿",text:"",type:1,order:2926,group:1,subgroup:28,version:17,tone:[2,5],shortCodes:["people_wrestling_tone2-5","wrestlers_tone2-5","wrestling_tone2-5"]},{label:"people wrestling: medium skin tone, light skin tone",hexcode:"1F9D1-1F3FD-200D-1FAEF-200D-1F9D1-1F3FB",emoji:"🧑🏽🧑🏻",text:"",type:1,order:2927,group:1,subgroup:28,version:17,tone:[3,1],shortCodes:["people_wrestling_tone3-1","wrestlers_tone3-1","wrestling_tone3-1"]},{label:"people wrestling: medium skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FD-200D-1FAEF-200D-1F9D1-1F3FC",emoji:"🧑🏽🧑🏼",text:"",type:1,order:2928,group:1,subgroup:28,version:17,tone:[3,2],shortCodes:["people_wrestling_tone3-2","wrestlers_tone3-2","wrestling_tone3-2"]},{label:"people wrestling: medium skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FD-200D-1FAEF-200D-1F9D1-1F3FE",emoji:"🧑🏽🧑🏾",text:"",type:1,order:2929,group:1,subgroup:28,version:17,tone:[3,4],shortCodes:["people_wrestling_tone3-4","wrestlers_tone3-4","wrestling_tone3-4"]},{label:"people wrestling: medium skin tone, dark skin tone",hexcode:"1F9D1-1F3FD-200D-1FAEF-200D-1F9D1-1F3FF",emoji:"🧑🏽🧑🏿",text:"",type:1,order:2930,group:1,subgroup:28,version:17,tone:[3,5],shortCodes:["people_wrestling_tone3-5","wrestlers_tone3-5","wrestling_tone3-5"]},{label:"people wrestling: medium-dark skin tone, light skin tone",hexcode:"1F9D1-1F3FE-200D-1FAEF-200D-1F9D1-1F3FB",emoji:"🧑🏾🧑🏻",text:"",type:1,order:2931,group:1,subgroup:28,version:17,tone:[4,1],shortCodes:["people_wrestling_tone4-1","wrestlers_tone4-1","wrestling_tone4-1"]},{label:"people wrestling: medium-dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FE-200D-1FAEF-200D-1F9D1-1F3FC",emoji:"🧑🏾🧑🏼",text:"",type:1,order:2932,group:1,subgroup:28,version:17,tone:[4,2],shortCodes:["people_wrestling_tone4-2","wrestlers_tone4-2","wrestling_tone4-2"]},{label:"people wrestling: medium-dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FE-200D-1FAEF-200D-1F9D1-1F3FD",emoji:"🧑🏾🧑🏽",text:"",type:1,order:2933,group:1,subgroup:28,version:17,tone:[4,3],shortCodes:["people_wrestling_tone4-3","wrestlers_tone4-3","wrestling_tone4-3"]},{label:"people wrestling: medium-dark skin tone, dark skin tone",hexcode:"1F9D1-1F3FE-200D-1FAEF-200D-1F9D1-1F3FF",emoji:"🧑🏾🧑🏿",text:"",type:1,order:2934,group:1,subgroup:28,version:17,tone:[4,5],shortCodes:["people_wrestling_tone4-5","wrestlers_tone4-5","wrestling_tone4-5"]},{label:"people wrestling: dark skin tone, light skin tone",hexcode:"1F9D1-1F3FF-200D-1FAEF-200D-1F9D1-1F3FB",emoji:"🧑🏿🧑🏻",text:"",type:1,order:2935,group:1,subgroup:28,version:17,tone:[5,1],shortCodes:["people_wrestling_tone5-1","wrestlers_tone5-1","wrestling_tone5-1"]},{label:"people wrestling: dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FF-200D-1FAEF-200D-1F9D1-1F3FC",emoji:"🧑🏿🧑🏼",text:"",type:1,order:2936,group:1,subgroup:28,version:17,tone:[5,2],shortCodes:["people_wrestling_tone5-2","wrestlers_tone5-2","wrestling_tone5-2"]},{label:"people wrestling: dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FF-200D-1FAEF-200D-1F9D1-1F3FD",emoji:"🧑🏿🧑🏽",text:"",type:1,order:2937,group:1,subgroup:28,version:17,tone:[5,3],shortCodes:["people_wrestling_tone5-3","wrestlers_tone5-3","wrestling_tone5-3"]},{label:"people wrestling: dark skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FF-200D-1FAEF-200D-1F9D1-1F3FE",emoji:"🧑🏿🧑🏾",text:"",type:1,order:2938,group:1,subgroup:28,version:17,tone:[5,4],shortCodes:["people_wrestling_tone5-4","wrestlers_tone5-4","wrestling_tone5-4"]}],shortCodes:["people_wrestling","wrestlers","wrestling"]},{label:"men wrestling",hexcode:"1F93C-200D-2642-FE0F",tags:["combat","duel","grapple","men","ring","tournament","wrestle","wrestling"],emoji:"🤼♂️",text:"",type:1,order:2895,group:1,subgroup:28,version:4,gender:1,skins:[{label:"men wrestling: light skin tone, medium-light skin tone",hexcode:"1F468-1F3FB-200D-1FAEF-200D-1F468-1F3FC",emoji:"👨🏻👨🏼",text:"",type:1,order:2939,group:1,subgroup:28,version:17,tone:[1,2],shortCodes:["men_wrestling_tone1-2"]},{label:"men wrestling: light skin tone, medium skin tone",hexcode:"1F468-1F3FB-200D-1FAEF-200D-1F468-1F3FD",emoji:"👨🏻👨🏽",text:"",type:1,order:2940,group:1,subgroup:28,version:17,tone:[1,3],shortCodes:["men_wrestling_tone1-3"]},{label:"men wrestling: light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FB-200D-1FAEF-200D-1F468-1F3FE",emoji:"👨🏻👨🏾",text:"",type:1,order:2941,group:1,subgroup:28,version:17,tone:[1,4],shortCodes:["men_wrestling_tone1-4"]},{label:"men wrestling: light skin tone, dark skin tone",hexcode:"1F468-1F3FB-200D-1FAEF-200D-1F468-1F3FF",emoji:"👨🏻👨🏿",text:"",type:1,order:2942,group:1,subgroup:28,version:17,tone:[1,5],shortCodes:["men_wrestling_tone1-5"]},{label:"men wrestling: medium-light skin tone, light skin tone",hexcode:"1F468-1F3FC-200D-1FAEF-200D-1F468-1F3FB",emoji:"👨🏼👨🏻",text:"",type:1,order:2943,group:1,subgroup:28,version:17,tone:[2,1],shortCodes:["men_wrestling_tone2-1"]},{label:"men wrestling: medium-light skin tone, medium skin tone",hexcode:"1F468-1F3FC-200D-1FAEF-200D-1F468-1F3FD",emoji:"👨🏼👨🏽",text:"",type:1,order:2944,group:1,subgroup:28,version:17,tone:[2,3],shortCodes:["men_wrestling_tone2-3"]},{label:"men wrestling: medium-light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FC-200D-1FAEF-200D-1F468-1F3FE",emoji:"👨🏼👨🏾",text:"",type:1,order:2945,group:1,subgroup:28,version:17,tone:[2,4],shortCodes:["men_wrestling_tone2-4"]},{label:"men wrestling: medium-light skin tone, dark skin tone",hexcode:"1F468-1F3FC-200D-1FAEF-200D-1F468-1F3FF",emoji:"👨🏼👨🏿",text:"",type:1,order:2946,group:1,subgroup:28,version:17,tone:[2,5],shortCodes:["men_wrestling_tone2-5"]},{label:"men wrestling: medium skin tone, light skin tone",hexcode:"1F468-1F3FD-200D-1FAEF-200D-1F468-1F3FB",emoji:"👨🏽👨🏻",text:"",type:1,order:2947,group:1,subgroup:28,version:17,tone:[3,1],shortCodes:["men_wrestling_tone3-1"]},{label:"men wrestling: medium skin tone, medium-light skin tone",hexcode:"1F468-1F3FD-200D-1FAEF-200D-1F468-1F3FC",emoji:"👨🏽👨🏼",text:"",type:1,order:2948,group:1,subgroup:28,version:17,tone:[3,2],shortCodes:["men_wrestling_tone3-2"]},{label:"men wrestling: medium skin tone, medium-dark skin tone",hexcode:"1F468-1F3FD-200D-1FAEF-200D-1F468-1F3FE",emoji:"👨🏽👨🏾",text:"",type:1,order:2949,group:1,subgroup:28,version:17,tone:[3,4],shortCodes:["men_wrestling_tone3-4"]},{label:"men wrestling: medium skin tone, dark skin tone",hexcode:"1F468-1F3FD-200D-1FAEF-200D-1F468-1F3FF",emoji:"👨🏽👨🏿",text:"",type:1,order:2950,group:1,subgroup:28,version:17,tone:[3,5],shortCodes:["men_wrestling_tone3-5"]},{label:"men wrestling: medium-dark skin tone, light skin tone",hexcode:"1F468-1F3FE-200D-1FAEF-200D-1F468-1F3FB",emoji:"👨🏾👨🏻",text:"",type:1,order:2951,group:1,subgroup:28,version:17,tone:[4,1],shortCodes:["men_wrestling_tone4-1"]},{label:"men wrestling: medium-dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FE-200D-1FAEF-200D-1F468-1F3FC",emoji:"👨🏾👨🏼",text:"",type:1,order:2952,group:1,subgroup:28,version:17,tone:[4,2],shortCodes:["men_wrestling_tone4-2"]},{label:"men wrestling: medium-dark skin tone, medium skin tone",hexcode:"1F468-1F3FE-200D-1FAEF-200D-1F468-1F3FD",emoji:"👨🏾👨🏽",text:"",type:1,order:2953,group:1,subgroup:28,version:17,tone:[4,3],shortCodes:["men_wrestling_tone4-3"]},{label:"men wrestling: medium-dark skin tone, dark skin tone",hexcode:"1F468-1F3FE-200D-1FAEF-200D-1F468-1F3FF",emoji:"👨🏾👨🏿",text:"",type:1,order:2954,group:1,subgroup:28,version:17,tone:[4,5],shortCodes:["men_wrestling_tone4-5"]},{label:"men wrestling: dark skin tone, light skin tone",hexcode:"1F468-1F3FF-200D-1FAEF-200D-1F468-1F3FB",emoji:"👨🏿👨🏻",text:"",type:1,order:2955,group:1,subgroup:28,version:17,tone:[5,1],shortCodes:["men_wrestling_tone5-1"]},{label:"men wrestling: dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FF-200D-1FAEF-200D-1F468-1F3FC",emoji:"👨🏿👨🏼",text:"",type:1,order:2956,group:1,subgroup:28,version:17,tone:[5,2],shortCodes:["men_wrestling_tone5-2"]},{label:"men wrestling: dark skin tone, medium skin tone",hexcode:"1F468-1F3FF-200D-1FAEF-200D-1F468-1F3FD",emoji:"👨🏿👨🏽",text:"",type:1,order:2957,group:1,subgroup:28,version:17,tone:[5,3],shortCodes:["men_wrestling_tone5-3"]},{label:"men wrestling: dark skin tone, medium-dark skin tone",hexcode:"1F468-1F3FF-200D-1FAEF-200D-1F468-1F3FE",emoji:"👨🏿👨🏾",text:"",type:1,order:2958,group:1,subgroup:28,version:17,tone:[5,4],shortCodes:["men_wrestling_tone5-4"]},{label:"men wrestling: light skin tone",hexcode:"1F93C-1F3FB-200D-2642-FE0F",emoji:"🤼🏻♂️",text:"",type:1,order:2897,group:1,subgroup:28,version:17,gender:1,tone:1,shortCodes:["men_wrestling_tone1"]},{label:"men wrestling: medium-light skin tone",hexcode:"1F93C-1F3FC-200D-2642-FE0F",emoji:"🤼🏼♂️",text:"",type:1,order:2899,group:1,subgroup:28,version:17,gender:1,tone:2,shortCodes:["men_wrestling_tone2"]},{label:"men wrestling: medium skin tone",hexcode:"1F93C-1F3FD-200D-2642-FE0F",emoji:"🤼🏽♂️",text:"",type:1,order:2901,group:1,subgroup:28,version:17,gender:1,tone:3,shortCodes:["men_wrestling_tone3"]},{label:"men wrestling: medium-dark skin tone",hexcode:"1F93C-1F3FE-200D-2642-FE0F",emoji:"🤼🏾♂️",text:"",type:1,order:2903,group:1,subgroup:28,version:17,gender:1,tone:4,shortCodes:["men_wrestling_tone4"]},{label:"men wrestling: dark skin tone",hexcode:"1F93C-1F3FF-200D-2642-FE0F",emoji:"🤼🏿♂️",text:"",type:1,order:2905,group:1,subgroup:28,version:17,gender:1,tone:5,shortCodes:["men_wrestling_tone5"]}],shortCodes:["men_wrestling"]},{label:"women wrestling",hexcode:"1F93C-200D-2640-FE0F",tags:["combat","duel","grapple","ring","tournament","women","wrestle","wrestling"],emoji:"🤼♀️",text:"",type:1,order:2907,group:1,subgroup:28,version:4,gender:0,skins:[{label:"women wrestling: light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-1FAEF-200D-1F469-1F3FC",emoji:"👩🏻👩🏼",text:"",type:1,order:2959,group:1,subgroup:28,version:17,tone:[1,2],shortCodes:["women_wrestling_tone1-2"]},{label:"women wrestling: light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-1FAEF-200D-1F469-1F3FD",emoji:"👩🏻👩🏽",text:"",type:1,order:2960,group:1,subgroup:28,version:17,tone:[1,3],shortCodes:["women_wrestling_tone1-3"]},{label:"women wrestling: light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-1FAEF-200D-1F469-1F3FE",emoji:"👩🏻👩🏾",text:"",type:1,order:2961,group:1,subgroup:28,version:17,tone:[1,4],shortCodes:["women_wrestling_tone1-4"]},{label:"women wrestling: light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-1FAEF-200D-1F469-1F3FF",emoji:"👩🏻👩🏿",text:"",type:1,order:2962,group:1,subgroup:28,version:17,tone:[1,5],shortCodes:["women_wrestling_tone1-5"]},{label:"women wrestling: medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-1FAEF-200D-1F469-1F3FB",emoji:"👩🏼👩🏻",text:"",type:1,order:2963,group:1,subgroup:28,version:17,tone:[2,1],shortCodes:["women_wrestling_tone2-1"]},{label:"women wrestling: medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-1FAEF-200D-1F469-1F3FD",emoji:"👩🏼👩🏽",text:"",type:1,order:2964,group:1,subgroup:28,version:17,tone:[2,3],shortCodes:["women_wrestling_tone2-3"]},{label:"women wrestling: medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-1FAEF-200D-1F469-1F3FE",emoji:"👩🏼👩🏾",text:"",type:1,order:2965,group:1,subgroup:28,version:17,tone:[2,4],shortCodes:["women_wrestling_tone2-4"]},{label:"women wrestling: medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-1FAEF-200D-1F469-1F3FF",emoji:"👩🏼👩🏿",text:"",type:1,order:2966,group:1,subgroup:28,version:17,tone:[2,5],shortCodes:["women_wrestling_tone2-5"]},{label:"women wrestling: medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-1FAEF-200D-1F469-1F3FB",emoji:"👩🏽👩🏻",text:"",type:1,order:2967,group:1,subgroup:28,version:17,tone:[3,1],shortCodes:["women_wrestling_tone3-1"]},{label:"women wrestling: medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-1FAEF-200D-1F469-1F3FC",emoji:"👩🏽👩🏼",text:"",type:1,order:2968,group:1,subgroup:28,version:17,tone:[3,2],shortCodes:["women_wrestling_tone3-2"]},{label:"women wrestling: medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-1FAEF-200D-1F469-1F3FE",emoji:"👩🏽👩🏾",text:"",type:1,order:2969,group:1,subgroup:28,version:17,tone:[3,4],shortCodes:["women_wrestling_tone3-4"]},{label:"women wrestling: medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-1FAEF-200D-1F469-1F3FF",emoji:"👩🏽👩🏿",text:"",type:1,order:2970,group:1,subgroup:28,version:17,tone:[3,5],shortCodes:["women_wrestling_tone3-5"]},{label:"women wrestling: medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-1FAEF-200D-1F469-1F3FB",emoji:"👩🏾👩🏻",text:"",type:1,order:2971,group:1,subgroup:28,version:17,tone:[4,1],shortCodes:["women_wrestling_tone4-1"]},{label:"women wrestling: medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-1FAEF-200D-1F469-1F3FC",emoji:"👩🏾👩🏼",text:"",type:1,order:2972,group:1,subgroup:28,version:17,tone:[4,2],shortCodes:["women_wrestling_tone4-2"]},{label:"women wrestling: medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-1FAEF-200D-1F469-1F3FD",emoji:"👩🏾👩🏽",text:"",type:1,order:2973,group:1,subgroup:28,version:17,tone:[4,3],shortCodes:["women_wrestling_tone4-3"]},{label:"women wrestling: medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-1FAEF-200D-1F469-1F3FF",emoji:"👩🏾👩🏿",text:"",type:1,order:2974,group:1,subgroup:28,version:17,tone:[4,5],shortCodes:["women_wrestling_tone4-5"]},{label:"women wrestling: dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-1FAEF-200D-1F469-1F3FB",emoji:"👩🏿👩🏻",text:"",type:1,order:2975,group:1,subgroup:28,version:17,tone:[5,1],shortCodes:["women_wrestling_tone5-1"]},{label:"women wrestling: dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-1FAEF-200D-1F469-1F3FC",emoji:"👩🏿👩🏼",text:"",type:1,order:2976,group:1,subgroup:28,version:17,tone:[5,2],shortCodes:["women_wrestling_tone5-2"]},{label:"women wrestling: dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-1FAEF-200D-1F469-1F3FD",emoji:"👩🏿👩🏽",text:"",type:1,order:2977,group:1,subgroup:28,version:17,tone:[5,3],shortCodes:["women_wrestling_tone5-3"]},{label:"women wrestling: dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-1FAEF-200D-1F469-1F3FE",emoji:"👩🏿👩🏾",text:"",type:1,order:2978,group:1,subgroup:28,version:17,tone:[5,4],shortCodes:["women_wrestling_tone5-4"]},{label:"women wrestling: light skin tone",hexcode:"1F93C-1F3FB-200D-2640-FE0F",emoji:"🤼🏻♀️",text:"",type:1,order:2909,group:1,subgroup:28,version:17,gender:0,tone:1,shortCodes:["women_wrestling_tone1"]},{label:"women wrestling: medium-light skin tone",hexcode:"1F93C-1F3FC-200D-2640-FE0F",emoji:"🤼🏼♀️",text:"",type:1,order:2911,group:1,subgroup:28,version:17,gender:0,tone:2,shortCodes:["women_wrestling_tone2"]},{label:"women wrestling: medium skin tone",hexcode:"1F93C-1F3FD-200D-2640-FE0F",emoji:"🤼🏽♀️",text:"",type:1,order:2913,group:1,subgroup:28,version:17,gender:0,tone:3,shortCodes:["women_wrestling_tone3"]},{label:"women wrestling: medium-dark skin tone",hexcode:"1F93C-1F3FE-200D-2640-FE0F",emoji:"🤼🏾♀️",text:"",type:1,order:2915,group:1,subgroup:28,version:17,gender:0,tone:4,shortCodes:["women_wrestling_tone4"]},{label:"women wrestling: dark skin tone",hexcode:"1F93C-1F3FF-200D-2640-FE0F",emoji:"🤼🏿♀️",text:"",type:1,order:2917,group:1,subgroup:28,version:17,gender:0,tone:5,shortCodes:["women_wrestling_tone5"]}],shortCodes:["women_wrestling"]},{label:"person playing water polo",hexcode:"1F93D",tags:["person","playing","polo","sport","swimming","water","waterpolo"],emoji:"🤽",text:"",type:1,order:2979,group:1,subgroup:28,version:3,skins:[{label:"person playing water polo: light skin tone",hexcode:"1F93D-1F3FB",emoji:"🤽🏻",text:"",type:1,order:2980,group:1,subgroup:28,version:3,tone:1,shortCodes:["person_playing_water_polo_tone1","water_polo_tone1"]},{label:"person playing water polo: medium-light skin tone",hexcode:"1F93D-1F3FC",emoji:"🤽🏼",text:"",type:1,order:2981,group:1,subgroup:28,version:3,tone:2,shortCodes:["person_playing_water_polo_tone2","water_polo_tone2"]},{label:"person playing water polo: medium skin tone",hexcode:"1F93D-1F3FD",emoji:"🤽🏽",text:"",type:1,order:2982,group:1,subgroup:28,version:3,tone:3,shortCodes:["person_playing_water_polo_tone3","water_polo_tone3"]},{label:"person playing water polo: medium-dark skin tone",hexcode:"1F93D-1F3FE",emoji:"🤽🏾",text:"",type:1,order:2983,group:1,subgroup:28,version:3,tone:4,shortCodes:["person_playing_water_polo_tone4","water_polo_tone4"]},{label:"person playing water polo: dark skin tone",hexcode:"1F93D-1F3FF",emoji:"🤽🏿",text:"",type:1,order:2984,group:1,subgroup:28,version:3,tone:5,shortCodes:["person_playing_water_polo_tone5","water_polo_tone5"]}],shortCodes:["person_playing_water_polo","water_polo"]},{label:"man playing water polo",hexcode:"1F93D-200D-2642-FE0F",tags:["man","playing","polo","sport","swimming","water","waterpolo"],emoji:"🤽♂️",text:"",type:1,order:2985,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man playing water polo: light skin tone",hexcode:"1F93D-1F3FB-200D-2642-FE0F",emoji:"🤽🏻♂️",text:"",type:1,order:2987,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_playing_water_polo_tone1"]},{label:"man playing water polo: medium-light skin tone",hexcode:"1F93D-1F3FC-200D-2642-FE0F",emoji:"🤽🏼♂️",text:"",type:1,order:2989,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_playing_water_polo_tone2"]},{label:"man playing water polo: medium skin tone",hexcode:"1F93D-1F3FD-200D-2642-FE0F",emoji:"🤽🏽♂️",text:"",type:1,order:2991,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_playing_water_polo_tone3"]},{label:"man playing water polo: medium-dark skin tone",hexcode:"1F93D-1F3FE-200D-2642-FE0F",emoji:"🤽🏾♂️",text:"",type:1,order:2993,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_playing_water_polo_tone4"]},{label:"man playing water polo: dark skin tone",hexcode:"1F93D-1F3FF-200D-2642-FE0F",emoji:"🤽🏿♂️",text:"",type:1,order:2995,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_playing_water_polo_tone5"]}],shortCodes:["man_playing_water_polo"]},{label:"woman playing water polo",hexcode:"1F93D-200D-2640-FE0F",tags:["playing","polo","sport","swimming","water","waterpolo","woman"],emoji:"🤽♀️",text:"",type:1,order:2997,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman playing water polo: light skin tone",hexcode:"1F93D-1F3FB-200D-2640-FE0F",emoji:"🤽🏻♀️",text:"",type:1,order:2999,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_playing_water_polo_tone1"]},{label:"woman playing water polo: medium-light skin tone",hexcode:"1F93D-1F3FC-200D-2640-FE0F",emoji:"🤽🏼♀️",text:"",type:1,order:3001,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_playing_water_polo_tone2"]},{label:"woman playing water polo: medium skin tone",hexcode:"1F93D-1F3FD-200D-2640-FE0F",emoji:"🤽🏽♀️",text:"",type:1,order:3003,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_playing_water_polo_tone3"]},{label:"woman playing water polo: medium-dark skin tone",hexcode:"1F93D-1F3FE-200D-2640-FE0F",emoji:"🤽🏾♀️",text:"",type:1,order:3005,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_playing_water_polo_tone4"]},{label:"woman playing water polo: dark skin tone",hexcode:"1F93D-1F3FF-200D-2640-FE0F",emoji:"🤽🏿♀️",text:"",type:1,order:3007,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_playing_water_polo_tone5"]}],shortCodes:["woman_playing_water_polo"]},{label:"person playing handball",hexcode:"1F93E",tags:["athletics","ball","catch","chuck","handball","hurl","lob","person","pitch","playing","sport","throw","toss"],emoji:"🤾",text:"",type:1,order:3009,group:1,subgroup:28,version:3,skins:[{label:"person playing handball: light skin tone",hexcode:"1F93E-1F3FB",emoji:"🤾🏻",text:"",type:1,order:3010,group:1,subgroup:28,version:3,tone:1,shortCodes:["handball_tone1","person_playing_handball_tone1"]},{label:"person playing handball: medium-light skin tone",hexcode:"1F93E-1F3FC",emoji:"🤾🏼",text:"",type:1,order:3011,group:1,subgroup:28,version:3,tone:2,shortCodes:["handball_tone2","person_playing_handball_tone2"]},{label:"person playing handball: medium skin tone",hexcode:"1F93E-1F3FD",emoji:"🤾🏽",text:"",type:1,order:3012,group:1,subgroup:28,version:3,tone:3,shortCodes:["handball_tone3","person_playing_handball_tone3"]},{label:"person playing handball: medium-dark skin tone",hexcode:"1F93E-1F3FE",emoji:"🤾🏾",text:"",type:1,order:3013,group:1,subgroup:28,version:3,tone:4,shortCodes:["handball_tone4","person_playing_handball_tone4"]},{label:"person playing handball: dark skin tone",hexcode:"1F93E-1F3FF",emoji:"🤾🏿",text:"",type:1,order:3014,group:1,subgroup:28,version:3,tone:5,shortCodes:["handball_tone5","person_playing_handball_tone5"]}],shortCodes:["handball","person_playing_handball"]},{label:"man playing handball",hexcode:"1F93E-200D-2642-FE0F",tags:["athletics","ball","catch","chuck","handball","hurl","lob","man","pitch","playing","sport","throw","toss"],emoji:"🤾♂️",text:"",type:1,order:3015,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man playing handball: light skin tone",hexcode:"1F93E-1F3FB-200D-2642-FE0F",emoji:"🤾🏻♂️",text:"",type:1,order:3017,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_playing_handball_tone1"]},{label:"man playing handball: medium-light skin tone",hexcode:"1F93E-1F3FC-200D-2642-FE0F",emoji:"🤾🏼♂️",text:"",type:1,order:3019,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_playing_handball_tone2"]},{label:"man playing handball: medium skin tone",hexcode:"1F93E-1F3FD-200D-2642-FE0F",emoji:"🤾🏽♂️",text:"",type:1,order:3021,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_playing_handball_tone3"]},{label:"man playing handball: medium-dark skin tone",hexcode:"1F93E-1F3FE-200D-2642-FE0F",emoji:"🤾🏾♂️",text:"",type:1,order:3023,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_playing_handball_tone4"]},{label:"man playing handball: dark skin tone",hexcode:"1F93E-1F3FF-200D-2642-FE0F",emoji:"🤾🏿♂️",text:"",type:1,order:3025,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_playing_handball_tone5"]}],shortCodes:["man_playing_handball"]},{label:"woman playing handball",hexcode:"1F93E-200D-2640-FE0F",tags:["athletics","ball","catch","chuck","handball","hurl","lob","pitch","playing","sport","throw","toss","woman"],emoji:"🤾♀️",text:"",type:1,order:3027,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman playing handball: light skin tone",hexcode:"1F93E-1F3FB-200D-2640-FE0F",emoji:"🤾🏻♀️",text:"",type:1,order:3029,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_playing_handball_tone1"]},{label:"woman playing handball: medium-light skin tone",hexcode:"1F93E-1F3FC-200D-2640-FE0F",emoji:"🤾🏼♀️",text:"",type:1,order:3031,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_playing_handball_tone2"]},{label:"woman playing handball: medium skin tone",hexcode:"1F93E-1F3FD-200D-2640-FE0F",emoji:"🤾🏽♀️",text:"",type:1,order:3033,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_playing_handball_tone3"]},{label:"woman playing handball: medium-dark skin tone",hexcode:"1F93E-1F3FE-200D-2640-FE0F",emoji:"🤾🏾♀️",text:"",type:1,order:3035,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_playing_handball_tone4"]},{label:"woman playing handball: dark skin tone",hexcode:"1F93E-1F3FF-200D-2640-FE0F",emoji:"🤾🏿♀️",text:"",type:1,order:3037,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_playing_handball_tone5"]}],shortCodes:["woman_playing_handball"]},{label:"person juggling",hexcode:"1F939",tags:["act","balance","balancing","handle","juggle","juggling","manage","multitask","person","skill"],emoji:"🤹",text:"",type:1,order:3039,group:1,subgroup:28,version:3,skins:[{label:"person juggling: light skin tone",hexcode:"1F939-1F3FB",emoji:"🤹🏻",text:"",type:1,order:3040,group:1,subgroup:28,version:3,tone:1,shortCodes:["juggler_tone1","juggling_tone1","person_juggling_tone1"]},{label:"person juggling: medium-light skin tone",hexcode:"1F939-1F3FC",emoji:"🤹🏼",text:"",type:1,order:3041,group:1,subgroup:28,version:3,tone:2,shortCodes:["juggler_tone2","juggling_tone2","person_juggling_tone2"]},{label:"person juggling: medium skin tone",hexcode:"1F939-1F3FD",emoji:"🤹🏽",text:"",type:1,order:3042,group:1,subgroup:28,version:3,tone:3,shortCodes:["juggler_tone3","juggling_tone3","person_juggling_tone3"]},{label:"person juggling: medium-dark skin tone",hexcode:"1F939-1F3FE",emoji:"🤹🏾",text:"",type:1,order:3043,group:1,subgroup:28,version:3,tone:4,shortCodes:["juggler_tone4","juggling_tone4","person_juggling_tone4"]},{label:"person juggling: dark skin tone",hexcode:"1F939-1F3FF",emoji:"🤹🏿",text:"",type:1,order:3044,group:1,subgroup:28,version:3,tone:5,shortCodes:["juggler_tone5","juggling_tone5","person_juggling_tone5"]}],shortCodes:["juggler","juggling","person_juggling"]},{label:"man juggling",hexcode:"1F939-200D-2642-FE0F",tags:["act","balance","balancing","handle","juggle","juggling","man","manage","multitask","skill"],emoji:"🤹♂️",text:"",type:1,order:3045,group:1,subgroup:28,version:4,gender:1,skins:[{label:"man juggling: light skin tone",hexcode:"1F939-1F3FB-200D-2642-FE0F",emoji:"🤹🏻♂️",text:"",type:1,order:3047,group:1,subgroup:28,version:4,gender:1,tone:1,shortCodes:["man_juggling_tone1"]},{label:"man juggling: medium-light skin tone",hexcode:"1F939-1F3FC-200D-2642-FE0F",emoji:"🤹🏼♂️",text:"",type:1,order:3049,group:1,subgroup:28,version:4,gender:1,tone:2,shortCodes:["man_juggling_tone2"]},{label:"man juggling: medium skin tone",hexcode:"1F939-1F3FD-200D-2642-FE0F",emoji:"🤹🏽♂️",text:"",type:1,order:3051,group:1,subgroup:28,version:4,gender:1,tone:3,shortCodes:["man_juggling_tone3"]},{label:"man juggling: medium-dark skin tone",hexcode:"1F939-1F3FE-200D-2642-FE0F",emoji:"🤹🏾♂️",text:"",type:1,order:3053,group:1,subgroup:28,version:4,gender:1,tone:4,shortCodes:["man_juggling_tone4"]},{label:"man juggling: dark skin tone",hexcode:"1F939-1F3FF-200D-2642-FE0F",emoji:"🤹🏿♂️",text:"",type:1,order:3055,group:1,subgroup:28,version:4,gender:1,tone:5,shortCodes:["man_juggling_tone5"]}],shortCodes:["man_juggling"]},{label:"woman juggling",hexcode:"1F939-200D-2640-FE0F",tags:["act","balance","balancing","handle","juggle","juggling","manage","multitask","skill","woman"],emoji:"🤹♀️",text:"",type:1,order:3057,group:1,subgroup:28,version:4,gender:0,skins:[{label:"woman juggling: light skin tone",hexcode:"1F939-1F3FB-200D-2640-FE0F",emoji:"🤹🏻♀️",text:"",type:1,order:3059,group:1,subgroup:28,version:4,gender:0,tone:1,shortCodes:["woman_juggling_tone1"]},{label:"woman juggling: medium-light skin tone",hexcode:"1F939-1F3FC-200D-2640-FE0F",emoji:"🤹🏼♀️",text:"",type:1,order:3061,group:1,subgroup:28,version:4,gender:0,tone:2,shortCodes:["woman_juggling_tone2"]},{label:"woman juggling: medium skin tone",hexcode:"1F939-1F3FD-200D-2640-FE0F",emoji:"🤹🏽♀️",text:"",type:1,order:3063,group:1,subgroup:28,version:4,gender:0,tone:3,shortCodes:["woman_juggling_tone3"]},{label:"woman juggling: medium-dark skin tone",hexcode:"1F939-1F3FE-200D-2640-FE0F",emoji:"🤹🏾♀️",text:"",type:1,order:3065,group:1,subgroup:28,version:4,gender:0,tone:4,shortCodes:["woman_juggling_tone4"]},{label:"woman juggling: dark skin tone",hexcode:"1F939-1F3FF-200D-2640-FE0F",emoji:"🤹🏿♀️",text:"",type:1,order:3067,group:1,subgroup:28,version:4,gender:0,tone:5,shortCodes:["woman_juggling_tone5"]}],shortCodes:["woman_juggling"]},{label:"person in lotus position",hexcode:"1F9D8",tags:["cross","legged","legs","lotus","meditation","peace","person","position","relax","serenity","yoga","yogi","zen"],emoji:"🧘",text:"",type:1,order:3069,group:1,subgroup:29,version:5,skins:[{label:"person in lotus position: light skin tone",hexcode:"1F9D8-1F3FB",emoji:"🧘🏻",text:"",type:1,order:3070,group:1,subgroup:29,version:5,tone:1,shortCodes:["person_in_lotus_position_tone1"]},{label:"person in lotus position: medium-light skin tone",hexcode:"1F9D8-1F3FC",emoji:"🧘🏼",text:"",type:1,order:3071,group:1,subgroup:29,version:5,tone:2,shortCodes:["person_in_lotus_position_tone2"]},{label:"person in lotus position: medium skin tone",hexcode:"1F9D8-1F3FD",emoji:"🧘🏽",text:"",type:1,order:3072,group:1,subgroup:29,version:5,tone:3,shortCodes:["person_in_lotus_position_tone3"]},{label:"person in lotus position: medium-dark skin tone",hexcode:"1F9D8-1F3FE",emoji:"🧘🏾",text:"",type:1,order:3073,group:1,subgroup:29,version:5,tone:4,shortCodes:["person_in_lotus_position_tone4"]},{label:"person in lotus position: dark skin tone",hexcode:"1F9D8-1F3FF",emoji:"🧘🏿",text:"",type:1,order:3074,group:1,subgroup:29,version:5,tone:5,shortCodes:["person_in_lotus_position_tone5"]}],shortCodes:["person_in_lotus_position"]},{label:"man in lotus position",hexcode:"1F9D8-200D-2642-FE0F",tags:["cross","legged","legs","lotus","man","meditation","peace","position","relax","serenity","yoga","yogi","zen"],emoji:"🧘♂️",text:"",type:1,order:3075,group:1,subgroup:29,version:5,gender:1,skins:[{label:"man in lotus position: light skin tone",hexcode:"1F9D8-1F3FB-200D-2642-FE0F",emoji:"🧘🏻♂️",text:"",type:1,order:3077,group:1,subgroup:29,version:5,gender:1,tone:1,shortCodes:["man_in_lotus_position_tone1"]},{label:"man in lotus position: medium-light skin tone",hexcode:"1F9D8-1F3FC-200D-2642-FE0F",emoji:"🧘🏼♂️",text:"",type:1,order:3079,group:1,subgroup:29,version:5,gender:1,tone:2,shortCodes:["man_in_lotus_position_tone2"]},{label:"man in lotus position: medium skin tone",hexcode:"1F9D8-1F3FD-200D-2642-FE0F",emoji:"🧘🏽♂️",text:"",type:1,order:3081,group:1,subgroup:29,version:5,gender:1,tone:3,shortCodes:["man_in_lotus_position_tone3"]},{label:"man in lotus position: medium-dark skin tone",hexcode:"1F9D8-1F3FE-200D-2642-FE0F",emoji:"🧘🏾♂️",text:"",type:1,order:3083,group:1,subgroup:29,version:5,gender:1,tone:4,shortCodes:["man_in_lotus_position_tone4"]},{label:"man in lotus position: dark skin tone",hexcode:"1F9D8-1F3FF-200D-2642-FE0F",emoji:"🧘🏿♂️",text:"",type:1,order:3085,group:1,subgroup:29,version:5,gender:1,tone:5,shortCodes:["man_in_lotus_position_tone5"]}],shortCodes:["man_in_lotus_position"]},{label:"woman in lotus position",hexcode:"1F9D8-200D-2640-FE0F",tags:["cross","legged","legs","lotus","meditation","peace","position","relax","serenity","woman","yoga","yogi","zen"],emoji:"🧘♀️",text:"",type:1,order:3087,group:1,subgroup:29,version:5,gender:0,skins:[{label:"woman in lotus position: light skin tone",hexcode:"1F9D8-1F3FB-200D-2640-FE0F",emoji:"🧘🏻♀️",text:"",type:1,order:3089,group:1,subgroup:29,version:5,gender:0,tone:1,shortCodes:["woman_in_lotus_position_tone1"]},{label:"woman in lotus position: medium-light skin tone",hexcode:"1F9D8-1F3FC-200D-2640-FE0F",emoji:"🧘🏼♀️",text:"",type:1,order:3091,group:1,subgroup:29,version:5,gender:0,tone:2,shortCodes:["woman_in_lotus_position_tone2"]},{label:"woman in lotus position: medium skin tone",hexcode:"1F9D8-1F3FD-200D-2640-FE0F",emoji:"🧘🏽♀️",text:"",type:1,order:3093,group:1,subgroup:29,version:5,gender:0,tone:3,shortCodes:["woman_in_lotus_position_tone3"]},{label:"woman in lotus position: medium-dark skin tone",hexcode:"1F9D8-1F3FE-200D-2640-FE0F",emoji:"🧘🏾♀️",text:"",type:1,order:3095,group:1,subgroup:29,version:5,gender:0,tone:4,shortCodes:["woman_in_lotus_position_tone4"]},{label:"woman in lotus position: dark skin tone",hexcode:"1F9D8-1F3FF-200D-2640-FE0F",emoji:"🧘🏿♀️",text:"",type:1,order:3097,group:1,subgroup:29,version:5,gender:0,tone:5,shortCodes:["woman_in_lotus_position_tone5"]}],shortCodes:["woman_in_lotus_position"]},{label:"person taking bath",hexcode:"1F6C0",tags:["bath","bathtub","person","taking","tub"],emoji:"🛀",text:"",type:1,order:3099,group:1,subgroup:29,version:.6,skins:[{label:"person taking bath: light skin tone",hexcode:"1F6C0-1F3FB",emoji:"🛀🏻",text:"",type:1,order:3100,group:1,subgroup:29,version:1,tone:1,shortCodes:["bath_tone1","person_taking_bath_tone1"]},{label:"person taking bath: medium-light skin tone",hexcode:"1F6C0-1F3FC",emoji:"🛀🏼",text:"",type:1,order:3101,group:1,subgroup:29,version:1,tone:2,shortCodes:["bath_tone2","person_taking_bath_tone2"]},{label:"person taking bath: medium skin tone",hexcode:"1F6C0-1F3FD",emoji:"🛀🏽",text:"",type:1,order:3102,group:1,subgroup:29,version:1,tone:3,shortCodes:["bath_tone3","person_taking_bath_tone3"]},{label:"person taking bath: medium-dark skin tone",hexcode:"1F6C0-1F3FE",emoji:"🛀🏾",text:"",type:1,order:3103,group:1,subgroup:29,version:1,tone:4,shortCodes:["bath_tone4","person_taking_bath_tone4"]},{label:"person taking bath: dark skin tone",hexcode:"1F6C0-1F3FF",emoji:"🛀🏿",text:"",type:1,order:3104,group:1,subgroup:29,version:1,tone:5,shortCodes:["bath_tone5","person_taking_bath_tone5"]}],shortCodes:["bath","person_taking_bath"]},{label:"person in bed",hexcode:"1F6CC",tags:["bed","bedtime","good","goodnight","hotel","nap","night","person","sleep","tired","zzz"],emoji:"🛌",text:"",type:1,order:3105,group:1,subgroup:29,version:1,skins:[{label:"person in bed: light skin tone",hexcode:"1F6CC-1F3FB",emoji:"🛌🏻",text:"",type:1,order:3106,group:1,subgroup:29,version:4,tone:1,shortCodes:["person_in_bed_tone1","sleeping_accommodation_tone1"]},{label:"person in bed: medium-light skin tone",hexcode:"1F6CC-1F3FC",emoji:"🛌🏼",text:"",type:1,order:3107,group:1,subgroup:29,version:4,tone:2,shortCodes:["person_in_bed_tone2","sleeping_accommodation_tone2"]},{label:"person in bed: medium skin tone",hexcode:"1F6CC-1F3FD",emoji:"🛌🏽",text:"",type:1,order:3108,group:1,subgroup:29,version:4,tone:3,shortCodes:["person_in_bed_tone3","sleeping_accommodation_tone3"]},{label:"person in bed: medium-dark skin tone",hexcode:"1F6CC-1F3FE",emoji:"🛌🏾",text:"",type:1,order:3109,group:1,subgroup:29,version:4,tone:4,shortCodes:["person_in_bed_tone4","sleeping_accommodation_tone4"]},{label:"person in bed: dark skin tone",hexcode:"1F6CC-1F3FF",emoji:"🛌🏿",text:"",type:1,order:3110,group:1,subgroup:29,version:4,tone:5,shortCodes:["person_in_bed_tone5","sleeping_accommodation_tone5"]}],shortCodes:["person_in_bed","sleeping_accommodation"]},{label:"people holding hands",hexcode:"1F9D1-200D-1F91D-200D-1F9D1",tags:["bae","bestie","bff","couple","dating","flirt","friends","hand","hold","people","twins"],emoji:"🧑🤝🧑",text:"",type:1,order:3111,group:1,subgroup:30,version:12,skins:[{label:"people holding hands: light skin tone",hexcode:"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FB",emoji:"🧑🏻🤝🧑🏻",text:"",type:1,order:3112,group:1,subgroup:30,version:12,tone:1,shortCodes:["people_holding_hands_tone1"]},{label:"people holding hands: light skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FC",emoji:"🧑🏻🤝🧑🏼",text:"",type:1,order:3113,group:1,subgroup:30,version:12.1,tone:[1,2],shortCodes:["people_holding_hands_tone1-2"]},{label:"people holding hands: light skin tone, medium skin tone",hexcode:"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FD",emoji:"🧑🏻🤝🧑🏽",text:"",type:1,order:3114,group:1,subgroup:30,version:12.1,tone:[1,3],shortCodes:["people_holding_hands_tone1-3"]},{label:"people holding hands: light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FE",emoji:"🧑🏻🤝🧑🏾",text:"",type:1,order:3115,group:1,subgroup:30,version:12.1,tone:[1,4],shortCodes:["people_holding_hands_tone1-4"]},{label:"people holding hands: light skin tone, dark skin tone",hexcode:"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FF",emoji:"🧑🏻🤝🧑🏿",text:"",type:1,order:3116,group:1,subgroup:30,version:12.1,tone:[1,5],shortCodes:["people_holding_hands_tone1-5"]},{label:"people holding hands: medium-light skin tone, light skin tone",hexcode:"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FB",emoji:"🧑🏼🤝🧑🏻",text:"",type:1,order:3117,group:1,subgroup:30,version:12,tone:[2,1],shortCodes:["people_holding_hands_tone2-1"]},{label:"people holding hands: medium-light skin tone",hexcode:"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FC",emoji:"🧑🏼🤝🧑🏼",text:"",type:1,order:3118,group:1,subgroup:30,version:12,tone:2,shortCodes:["people_holding_hands_tone2"]},{label:"people holding hands: medium-light skin tone, medium skin tone",hexcode:"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FD",emoji:"🧑🏼🤝🧑🏽",text:"",type:1,order:3119,group:1,subgroup:30,version:12.1,tone:[2,3],shortCodes:["people_holding_hands_tone2-3"]},{label:"people holding hands: medium-light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FE",emoji:"🧑🏼🤝🧑🏾",text:"",type:1,order:3120,group:1,subgroup:30,version:12.1,tone:[2,4],shortCodes:["people_holding_hands_tone2-4"]},{label:"people holding hands: medium-light skin tone, dark skin tone",hexcode:"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FF",emoji:"🧑🏼🤝🧑🏿",text:"",type:1,order:3121,group:1,subgroup:30,version:12.1,tone:[2,5],shortCodes:["people_holding_hands_tone2-5"]},{label:"people holding hands: medium skin tone, light skin tone",hexcode:"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FB",emoji:"🧑🏽🤝🧑🏻",text:"",type:1,order:3122,group:1,subgroup:30,version:12,tone:[3,1],shortCodes:["people_holding_hands_tone3-1"]},{label:"people holding hands: medium skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FC",emoji:"🧑🏽🤝🧑🏼",text:"",type:1,order:3123,group:1,subgroup:30,version:12,tone:[3,2],shortCodes:["people_holding_hands_tone3-2"]},{label:"people holding hands: medium skin tone",hexcode:"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FD",emoji:"🧑🏽🤝🧑🏽",text:"",type:1,order:3124,group:1,subgroup:30,version:12,tone:3,shortCodes:["people_holding_hands_tone3"]},{label:"people holding hands: medium skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FE",emoji:"🧑🏽🤝🧑🏾",text:"",type:1,order:3125,group:1,subgroup:30,version:12.1,tone:[3,4],shortCodes:["people_holding_hands_tone3-4"]},{label:"people holding hands: medium skin tone, dark skin tone",hexcode:"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FF",emoji:"🧑🏽🤝🧑🏿",text:"",type:1,order:3126,group:1,subgroup:30,version:12.1,tone:[3,5],shortCodes:["people_holding_hands_tone3-5"]},{label:"people holding hands: medium-dark skin tone, light skin tone",hexcode:"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FB",emoji:"🧑🏾🤝🧑🏻",text:"",type:1,order:3127,group:1,subgroup:30,version:12,tone:[4,1],shortCodes:["people_holding_hands_tone4-1"]},{label:"people holding hands: medium-dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FC",emoji:"🧑🏾🤝🧑🏼",text:"",type:1,order:3128,group:1,subgroup:30,version:12,tone:[4,2],shortCodes:["people_holding_hands_tone4-2"]},{label:"people holding hands: medium-dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FD",emoji:"🧑🏾🤝🧑🏽",text:"",type:1,order:3129,group:1,subgroup:30,version:12,tone:[4,3],shortCodes:["people_holding_hands_tone4-3"]},{label:"people holding hands: medium-dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FE",emoji:"🧑🏾🤝🧑🏾",text:"",type:1,order:3130,group:1,subgroup:30,version:12,tone:4,shortCodes:["people_holding_hands_tone4"]},{label:"people holding hands: medium-dark skin tone, dark skin tone",hexcode:"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FF",emoji:"🧑🏾🤝🧑🏿",text:"",type:1,order:3131,group:1,subgroup:30,version:12.1,tone:[4,5],shortCodes:["people_holding_hands_tone4-5"]},{label:"people holding hands: dark skin tone, light skin tone",hexcode:"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FB",emoji:"🧑🏿🤝🧑🏻",text:"",type:1,order:3132,group:1,subgroup:30,version:12,tone:[5,1],shortCodes:["people_holding_hands_tone5-1"]},{label:"people holding hands: dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FC",emoji:"🧑🏿🤝🧑🏼",text:"",type:1,order:3133,group:1,subgroup:30,version:12,tone:[5,2],shortCodes:["people_holding_hands_tone5-2"]},{label:"people holding hands: dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FD",emoji:"🧑🏿🤝🧑🏽",text:"",type:1,order:3134,group:1,subgroup:30,version:12,tone:[5,3],shortCodes:["people_holding_hands_tone5-3"]},{label:"people holding hands: dark skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FE",emoji:"🧑🏿🤝🧑🏾",text:"",type:1,order:3135,group:1,subgroup:30,version:12,tone:[5,4],shortCodes:["people_holding_hands_tone5-4"]},{label:"people holding hands: dark skin tone",hexcode:"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FF",emoji:"🧑🏿🤝🧑🏿",text:"",type:1,order:3136,group:1,subgroup:30,version:12,tone:5,shortCodes:["people_holding_hands_tone5"]}],shortCodes:["people_holding_hands"]},{label:"women holding hands",hexcode:"1F46D",tags:["bae","bestie","bff","couple","dating","flirt","friends","girls","hand","hold","sisters","twins","women"],emoji:"👭",text:"",type:1,order:3137,group:1,subgroup:30,version:1,skins:[{label:"women holding hands: light skin tone",hexcode:"1F46D-1F3FB",emoji:"👭🏻",text:"",type:1,order:3138,group:1,subgroup:30,version:12,tone:1,shortCodes:["two_women_holding_hands_tone1"]},{label:"women holding hands: medium-light skin tone",hexcode:"1F46D-1F3FC",emoji:"👭🏼",text:"",type:1,order:3144,group:1,subgroup:30,version:12,tone:2,shortCodes:["two_women_holding_hands_tone2"]},{label:"women holding hands: medium skin tone",hexcode:"1F46D-1F3FD",emoji:"👭🏽",text:"",type:1,order:3150,group:1,subgroup:30,version:12,tone:3,shortCodes:["two_women_holding_hands_tone3"]},{label:"women holding hands: medium-dark skin tone",hexcode:"1F46D-1F3FE",emoji:"👭🏾",text:"",type:1,order:3156,group:1,subgroup:30,version:12,tone:4,shortCodes:["two_women_holding_hands_tone4"]},{label:"women holding hands: dark skin tone",hexcode:"1F46D-1F3FF",emoji:"👭🏿",text:"",type:1,order:3162,group:1,subgroup:30,version:12,tone:5,shortCodes:["two_women_holding_hands_tone5"]},{label:"women holding hands: light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FC",emoji:"👩🏻🤝👩🏼",text:"",type:1,order:3139,group:1,subgroup:30,version:12.1,tone:[1,2],shortCodes:["two_women_holding_hands_tone1-2"]},{label:"women holding hands: light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FD",emoji:"👩🏻🤝👩🏽",text:"",type:1,order:3140,group:1,subgroup:30,version:12.1,tone:[1,3],shortCodes:["two_women_holding_hands_tone1-3"]},{label:"women holding hands: light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FE",emoji:"👩🏻🤝👩🏾",text:"",type:1,order:3141,group:1,subgroup:30,version:12.1,tone:[1,4],shortCodes:["two_women_holding_hands_tone1-4"]},{label:"women holding hands: light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FF",emoji:"👩🏻🤝👩🏿",text:"",type:1,order:3142,group:1,subgroup:30,version:12.1,tone:[1,5],shortCodes:["two_women_holding_hands_tone1-5"]},{label:"women holding hands: medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FB",emoji:"👩🏼🤝👩🏻",text:"",type:1,order:3143,group:1,subgroup:30,version:12,tone:[2,1],shortCodes:["two_women_holding_hands_tone2-1"]},{label:"women holding hands: medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FD",emoji:"👩🏼🤝👩🏽",text:"",type:1,order:3145,group:1,subgroup:30,version:12.1,tone:[2,3],shortCodes:["two_women_holding_hands_tone2-3"]},{label:"women holding hands: medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FE",emoji:"👩🏼🤝👩🏾",text:"",type:1,order:3146,group:1,subgroup:30,version:12.1,tone:[2,4],shortCodes:["two_women_holding_hands_tone2-4"]},{label:"women holding hands: medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FF",emoji:"👩🏼🤝👩🏿",text:"",type:1,order:3147,group:1,subgroup:30,version:12.1,tone:[2,5],shortCodes:["two_women_holding_hands_tone2-5"]},{label:"women holding hands: medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FB",emoji:"👩🏽🤝👩🏻",text:"",type:1,order:3148,group:1,subgroup:30,version:12,tone:[3,1],shortCodes:["two_women_holding_hands_tone3-1"]},{label:"women holding hands: medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FC",emoji:"👩🏽🤝👩🏼",text:"",type:1,order:3149,group:1,subgroup:30,version:12,tone:[3,2],shortCodes:["two_women_holding_hands_tone3-2"]},{label:"women holding hands: medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FE",emoji:"👩🏽🤝👩🏾",text:"",type:1,order:3151,group:1,subgroup:30,version:12.1,tone:[3,4],shortCodes:["two_women_holding_hands_tone3-4"]},{label:"women holding hands: medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FF",emoji:"👩🏽🤝👩🏿",text:"",type:1,order:3152,group:1,subgroup:30,version:12.1,tone:[3,5],shortCodes:["two_women_holding_hands_tone3-5"]},{label:"women holding hands: medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FB",emoji:"👩🏾🤝👩🏻",text:"",type:1,order:3153,group:1,subgroup:30,version:12,tone:[4,1],shortCodes:["two_women_holding_hands_tone4-1"]},{label:"women holding hands: medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FC",emoji:"👩🏾🤝👩🏼",text:"",type:1,order:3154,group:1,subgroup:30,version:12,tone:[4,2],shortCodes:["two_women_holding_hands_tone4-2"]},{label:"women holding hands: medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FD",emoji:"👩🏾🤝👩🏽",text:"",type:1,order:3155,group:1,subgroup:30,version:12,tone:[4,3],shortCodes:["two_women_holding_hands_tone4-3"]},{label:"women holding hands: medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FF",emoji:"👩🏾🤝👩🏿",text:"",type:1,order:3157,group:1,subgroup:30,version:12.1,tone:[4,5],shortCodes:["two_women_holding_hands_tone4-5"]},{label:"women holding hands: dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FB",emoji:"👩🏿🤝👩🏻",text:"",type:1,order:3158,group:1,subgroup:30,version:12,tone:[5,1],shortCodes:["two_women_holding_hands_tone5-1"]},{label:"women holding hands: dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FC",emoji:"👩🏿🤝👩🏼",text:"",type:1,order:3159,group:1,subgroup:30,version:12,tone:[5,2],shortCodes:["two_women_holding_hands_tone5-2"]},{label:"women holding hands: dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FD",emoji:"👩🏿🤝👩🏽",text:"",type:1,order:3160,group:1,subgroup:30,version:12,tone:[5,3],shortCodes:["two_women_holding_hands_tone5-3"]},{label:"women holding hands: dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FE",emoji:"👩🏿🤝👩🏾",text:"",type:1,order:3161,group:1,subgroup:30,version:12,tone:[5,4],shortCodes:["two_women_holding_hands_tone5-4"]}],shortCodes:["two_women_holding_hands"]},{label:"woman and man holding hands",hexcode:"1F46B",tags:["bae","bestie","bff","couple","dating","flirt","friends","hand","hold","man","twins","woman"],emoji:"👫",text:"",type:1,order:3163,group:1,subgroup:30,version:.6,skins:[{label:"woman and man holding hands: light skin tone",hexcode:"1F46B-1F3FB",emoji:"👫🏻",text:"",type:1,order:3164,group:1,subgroup:30,version:12,tone:1,shortCodes:["couple_tone1"]},{label:"woman and man holding hands: medium-light skin tone",hexcode:"1F46B-1F3FC",emoji:"👫🏼",text:"",type:1,order:3170,group:1,subgroup:30,version:12,tone:2,shortCodes:["couple_tone2"]},{label:"woman and man holding hands: medium skin tone",hexcode:"1F46B-1F3FD",emoji:"👫🏽",text:"",type:1,order:3176,group:1,subgroup:30,version:12,tone:3,shortCodes:["couple_tone3"]},{label:"woman and man holding hands: medium-dark skin tone",hexcode:"1F46B-1F3FE",emoji:"👫🏾",text:"",type:1,order:3182,group:1,subgroup:30,version:12,tone:4,shortCodes:["couple_tone4"]},{label:"woman and man holding hands: dark skin tone",hexcode:"1F46B-1F3FF",emoji:"👫🏿",text:"",type:1,order:3188,group:1,subgroup:30,version:12,tone:5,shortCodes:["couple_tone5"]},{label:"woman and man holding hands: light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FC",emoji:"👩🏻🤝👨🏼",text:"",type:1,order:3165,group:1,subgroup:30,version:12,tone:[1,2],shortCodes:["couple_tone1-2"]},{label:"woman and man holding hands: light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FD",emoji:"👩🏻🤝👨🏽",text:"",type:1,order:3166,group:1,subgroup:30,version:12,tone:[1,3],shortCodes:["couple_tone1-3"]},{label:"woman and man holding hands: light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FE",emoji:"👩🏻🤝👨🏾",text:"",type:1,order:3167,group:1,subgroup:30,version:12,tone:[1,4],shortCodes:["couple_tone1-4"]},{label:"woman and man holding hands: light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FF",emoji:"👩🏻🤝👨🏿",text:"",type:1,order:3168,group:1,subgroup:30,version:12,tone:[1,5],shortCodes:["couple_tone1-5"]},{label:"woman and man holding hands: medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FB",emoji:"👩🏼🤝👨🏻",text:"",type:1,order:3169,group:1,subgroup:30,version:12,tone:[2,1],shortCodes:["couple_tone2-1"]},{label:"woman and man holding hands: medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FD",emoji:"👩🏼🤝👨🏽",text:"",type:1,order:3171,group:1,subgroup:30,version:12,tone:[2,3],shortCodes:["couple_tone2-3"]},{label:"woman and man holding hands: medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FE",emoji:"👩🏼🤝👨🏾",text:"",type:1,order:3172,group:1,subgroup:30,version:12,tone:[2,4],shortCodes:["couple_tone2-4"]},{label:"woman and man holding hands: medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FF",emoji:"👩🏼🤝👨🏿",text:"",type:1,order:3173,group:1,subgroup:30,version:12,tone:[2,5],shortCodes:["couple_tone2-5"]},{label:"woman and man holding hands: medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FB",emoji:"👩🏽🤝👨🏻",text:"",type:1,order:3174,group:1,subgroup:30,version:12,tone:[3,1],shortCodes:["couple_tone3-1"]},{label:"woman and man holding hands: medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FC",emoji:"👩🏽🤝👨🏼",text:"",type:1,order:3175,group:1,subgroup:30,version:12,tone:[3,2],shortCodes:["couple_tone3-2"]},{label:"woman and man holding hands: medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FE",emoji:"👩🏽🤝👨🏾",text:"",type:1,order:3177,group:1,subgroup:30,version:12,tone:[3,4],shortCodes:["couple_tone3-4"]},{label:"woman and man holding hands: medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FF",emoji:"👩🏽🤝👨🏿",text:"",type:1,order:3178,group:1,subgroup:30,version:12,tone:[3,5],shortCodes:["couple_tone3-5"]},{label:"woman and man holding hands: medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FB",emoji:"👩🏾🤝👨🏻",text:"",type:1,order:3179,group:1,subgroup:30,version:12,tone:[4,1],shortCodes:["couple_tone4-1"]},{label:"woman and man holding hands: medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FC",emoji:"👩🏾🤝👨🏼",text:"",type:1,order:3180,group:1,subgroup:30,version:12,tone:[4,2],shortCodes:["couple_tone4-2"]},{label:"woman and man holding hands: medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FD",emoji:"👩🏾🤝👨🏽",text:"",type:1,order:3181,group:1,subgroup:30,version:12,tone:[4,3],shortCodes:["couple_tone4-3"]},{label:"woman and man holding hands: medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FF",emoji:"👩🏾🤝👨🏿",text:"",type:1,order:3183,group:1,subgroup:30,version:12,tone:[4,5],shortCodes:["couple_tone4-5"]},{label:"woman and man holding hands: dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FB",emoji:"👩🏿🤝👨🏻",text:"",type:1,order:3184,group:1,subgroup:30,version:12,tone:[5,1],shortCodes:["couple_tone5-1"]},{label:"woman and man holding hands: dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FC",emoji:"👩🏿🤝👨🏼",text:"",type:1,order:3185,group:1,subgroup:30,version:12,tone:[5,2],shortCodes:["couple_tone5-2"]},{label:"woman and man holding hands: dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FD",emoji:"👩🏿🤝👨🏽",text:"",type:1,order:3186,group:1,subgroup:30,version:12,tone:[5,3],shortCodes:["couple_tone5-3"]},{label:"woman and man holding hands: dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FE",emoji:"👩🏿🤝👨🏾",text:"",type:1,order:3187,group:1,subgroup:30,version:12,tone:[5,4],shortCodes:["couple_tone5-4"]}],shortCodes:["couple"]},{label:"men holding hands",hexcode:"1F46C",tags:["bae","bestie","bff","boys","brothers","couple","dating","flirt","friends","hand","hold","men","twins"],emoji:"👬",text:"",type:1,order:3189,group:1,subgroup:30,version:1,skins:[{label:"men holding hands: light skin tone",hexcode:"1F46C-1F3FB",emoji:"👬🏻",text:"",type:1,order:3190,group:1,subgroup:30,version:12,tone:1,shortCodes:["two_men_holding_hands_tone1"]},{label:"men holding hands: medium-light skin tone",hexcode:"1F46C-1F3FC",emoji:"👬🏼",text:"",type:1,order:3196,group:1,subgroup:30,version:12,tone:2,shortCodes:["two_men_holding_hands_tone2"]},{label:"men holding hands: medium skin tone",hexcode:"1F46C-1F3FD",emoji:"👬🏽",text:"",type:1,order:3202,group:1,subgroup:30,version:12,tone:3,shortCodes:["two_men_holding_hands_tone3"]},{label:"men holding hands: medium-dark skin tone",hexcode:"1F46C-1F3FE",emoji:"👬🏾",text:"",type:1,order:3208,group:1,subgroup:30,version:12,tone:4,shortCodes:["two_men_holding_hands_tone4"]},{label:"men holding hands: dark skin tone",hexcode:"1F46C-1F3FF",emoji:"👬🏿",text:"",type:1,order:3214,group:1,subgroup:30,version:12,tone:5,shortCodes:["two_men_holding_hands_tone5"]},{label:"men holding hands: light skin tone, medium-light skin tone",hexcode:"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FC",emoji:"👨🏻🤝👨🏼",text:"",type:1,order:3191,group:1,subgroup:30,version:12.1,tone:[1,2],shortCodes:["two_men_holding_hands_tone1-2"]},{label:"men holding hands: light skin tone, medium skin tone",hexcode:"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FD",emoji:"👨🏻🤝👨🏽",text:"",type:1,order:3192,group:1,subgroup:30,version:12.1,tone:[1,3],shortCodes:["two_men_holding_hands_tone1-3"]},{label:"men holding hands: light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FE",emoji:"👨🏻🤝👨🏾",text:"",type:1,order:3193,group:1,subgroup:30,version:12.1,tone:[1,4],shortCodes:["two_men_holding_hands_tone1-4"]},{label:"men holding hands: light skin tone, dark skin tone",hexcode:"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FF",emoji:"👨🏻🤝👨🏿",text:"",type:1,order:3194,group:1,subgroup:30,version:12.1,tone:[1,5],shortCodes:["two_men_holding_hands_tone1-5"]},{label:"men holding hands: medium-light skin tone, light skin tone",hexcode:"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FB",emoji:"👨🏼🤝👨🏻",text:"",type:1,order:3195,group:1,subgroup:30,version:12,tone:[2,1],shortCodes:["two_men_holding_hands_tone2-1"]},{label:"men holding hands: medium-light skin tone, medium skin tone",hexcode:"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FD",emoji:"👨🏼🤝👨🏽",text:"",type:1,order:3197,group:1,subgroup:30,version:12.1,tone:[2,3],shortCodes:["two_men_holding_hands_tone2-3"]},{label:"men holding hands: medium-light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FE",emoji:"👨🏼🤝👨🏾",text:"",type:1,order:3198,group:1,subgroup:30,version:12.1,tone:[2,4],shortCodes:["two_men_holding_hands_tone2-4"]},{label:"men holding hands: medium-light skin tone, dark skin tone",hexcode:"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FF",emoji:"👨🏼🤝👨🏿",text:"",type:1,order:3199,group:1,subgroup:30,version:12.1,tone:[2,5],shortCodes:["two_men_holding_hands_tone2-5"]},{label:"men holding hands: medium skin tone, light skin tone",hexcode:"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FB",emoji:"👨🏽🤝👨🏻",text:"",type:1,order:3200,group:1,subgroup:30,version:12,tone:[3,1],shortCodes:["two_men_holding_hands_tone3-1"]},{label:"men holding hands: medium skin tone, medium-light skin tone",hexcode:"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FC",emoji:"👨🏽🤝👨🏼",text:"",type:1,order:3201,group:1,subgroup:30,version:12,tone:[3,2],shortCodes:["two_men_holding_hands_tone3-2"]},{label:"men holding hands: medium skin tone, medium-dark skin tone",hexcode:"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FE",emoji:"👨🏽🤝👨🏾",text:"",type:1,order:3203,group:1,subgroup:30,version:12.1,tone:[3,4],shortCodes:["two_men_holding_hands_tone3-4"]},{label:"men holding hands: medium skin tone, dark skin tone",hexcode:"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FF",emoji:"👨🏽🤝👨🏿",text:"",type:1,order:3204,group:1,subgroup:30,version:12.1,tone:[3,5],shortCodes:["two_men_holding_hands_tone3-5"]},{label:"men holding hands: medium-dark skin tone, light skin tone",hexcode:"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FB",emoji:"👨🏾🤝👨🏻",text:"",type:1,order:3205,group:1,subgroup:30,version:12,tone:[4,1],shortCodes:["two_men_holding_hands_tone4-1"]},{label:"men holding hands: medium-dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FC",emoji:"👨🏾🤝👨🏼",text:"",type:1,order:3206,group:1,subgroup:30,version:12,tone:[4,2],shortCodes:["two_men_holding_hands_tone4-2"]},{label:"men holding hands: medium-dark skin tone, medium skin tone",hexcode:"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FD",emoji:"👨🏾🤝👨🏽",text:"",type:1,order:3207,group:1,subgroup:30,version:12,tone:[4,3],shortCodes:["two_men_holding_hands_tone4-3"]},{label:"men holding hands: medium-dark skin tone, dark skin tone",hexcode:"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FF",emoji:"👨🏾🤝👨🏿",text:"",type:1,order:3209,group:1,subgroup:30,version:12.1,tone:[4,5],shortCodes:["two_men_holding_hands_tone4-5"]},{label:"men holding hands: dark skin tone, light skin tone",hexcode:"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FB",emoji:"👨🏿🤝👨🏻",text:"",type:1,order:3210,group:1,subgroup:30,version:12,tone:[5,1],shortCodes:["two_men_holding_hands_tone5-1"]},{label:"men holding hands: dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FC",emoji:"👨🏿🤝👨🏼",text:"",type:1,order:3211,group:1,subgroup:30,version:12,tone:[5,2],shortCodes:["two_men_holding_hands_tone5-2"]},{label:"men holding hands: dark skin tone, medium skin tone",hexcode:"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FD",emoji:"👨🏿🤝👨🏽",text:"",type:1,order:3212,group:1,subgroup:30,version:12,tone:[5,3],shortCodes:["two_men_holding_hands_tone5-3"]},{label:"men holding hands: dark skin tone, medium-dark skin tone",hexcode:"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FE",emoji:"👨🏿🤝👨🏾",text:"",type:1,order:3213,group:1,subgroup:30,version:12,tone:[5,4],shortCodes:["two_men_holding_hands_tone5-4"]}],shortCodes:["two_men_holding_hands"]},{label:"kiss",hexcode:"1F48F",tags:["anniversary","babe","bae","couple","date","dating","heart","love","mwah","person","romance","together","xoxo"],emoji:"💏",text:"",type:1,order:3215,group:1,subgroup:30,version:.6,skins:[{label:"kiss: light skin tone",hexcode:"1F48F-1F3FB",emoji:"💏🏻",text:"",type:1,order:3216,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["couple_kiss_tone1","couplekiss_tone1"]},{label:"kiss: medium-light skin tone",hexcode:"1F48F-1F3FC",emoji:"💏🏼",text:"",type:1,order:3217,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["couple_kiss_tone2","couplekiss_tone2"]},{label:"kiss: medium skin tone",hexcode:"1F48F-1F3FD",emoji:"💏🏽",text:"",type:1,order:3218,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["couple_kiss_tone3","couplekiss_tone3"]},{label:"kiss: medium-dark skin tone",hexcode:"1F48F-1F3FE",emoji:"💏🏾",text:"",type:1,order:3219,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["couple_kiss_tone4","couplekiss_tone4"]},{label:"kiss: dark skin tone",hexcode:"1F48F-1F3FF",emoji:"💏🏿",text:"",type:1,order:3220,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["couple_kiss_tone5","couplekiss_tone5"]},{label:"kiss: person, person, light skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC",emoji:"🧑🏻❤️💋🧑🏼",text:"",type:1,order:3221,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["couple_kiss_tone1-2","couplekiss_tone1-2"]},{label:"kiss: person, person, light skin tone, medium skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD",emoji:"🧑🏻❤️💋🧑🏽",text:"",type:1,order:3223,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["couple_kiss_tone1-3","couplekiss_tone1-3"]},{label:"kiss: person, person, light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE",emoji:"🧑🏻❤️💋🧑🏾",text:"",type:1,order:3225,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["couple_kiss_tone1-4","couplekiss_tone1-4"]},{label:"kiss: person, person, light skin tone, dark skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF",emoji:"🧑🏻❤️💋🧑🏿",text:"",type:1,order:3227,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["couple_kiss_tone1-5","couplekiss_tone1-5"]},{label:"kiss: person, person, medium-light skin tone, light skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB",emoji:"🧑🏼❤️💋🧑🏻",text:"",type:1,order:3229,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["couple_kiss_tone2-1","couplekiss_tone2-1"]},{label:"kiss: person, person, medium-light skin tone, medium skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD",emoji:"🧑🏼❤️💋🧑🏽",text:"",type:1,order:3231,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["couple_kiss_tone2-3","couplekiss_tone2-3"]},{label:"kiss: person, person, medium-light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE",emoji:"🧑🏼❤️💋🧑🏾",text:"",type:1,order:3233,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["couple_kiss_tone2-4","couplekiss_tone2-4"]},{label:"kiss: person, person, medium-light skin tone, dark skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF",emoji:"🧑🏼❤️💋🧑🏿",text:"",type:1,order:3235,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["couple_kiss_tone2-5","couplekiss_tone2-5"]},{label:"kiss: person, person, medium skin tone, light skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB",emoji:"🧑🏽❤️💋🧑🏻",text:"",type:1,order:3237,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["couple_kiss_tone3-1","couplekiss_tone3-1"]},{label:"kiss: person, person, medium skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC",emoji:"🧑🏽❤️💋🧑🏼",text:"",type:1,order:3239,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["couple_kiss_tone3-2","couplekiss_tone3-2"]},{label:"kiss: person, person, medium skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE",emoji:"🧑🏽❤️💋🧑🏾",text:"",type:1,order:3241,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["couple_kiss_tone3-4","couplekiss_tone3-4"]},{label:"kiss: person, person, medium skin tone, dark skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF",emoji:"🧑🏽❤️💋🧑🏿",text:"",type:1,order:3243,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["couple_kiss_tone3-5","couplekiss_tone3-5"]},{label:"kiss: person, person, medium-dark skin tone, light skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB",emoji:"🧑🏾❤️💋🧑🏻",text:"",type:1,order:3245,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["couple_kiss_tone4-1","couplekiss_tone4-1"]},{label:"kiss: person, person, medium-dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC",emoji:"🧑🏾❤️💋🧑🏼",text:"",type:1,order:3247,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["couple_kiss_tone4-2","couplekiss_tone4-2"]},{label:"kiss: person, person, medium-dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD",emoji:"🧑🏾❤️💋🧑🏽",text:"",type:1,order:3249,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["couple_kiss_tone4-3","couplekiss_tone4-3"]},{label:"kiss: person, person, medium-dark skin tone, dark skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FF",emoji:"🧑🏾❤️💋🧑🏿",text:"",type:1,order:3251,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["couple_kiss_tone4-5","couplekiss_tone4-5"]},{label:"kiss: person, person, dark skin tone, light skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FB",emoji:"🧑🏿❤️💋🧑🏻",text:"",type:1,order:3253,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["couple_kiss_tone5-1","couplekiss_tone5-1"]},{label:"kiss: person, person, dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FC",emoji:"🧑🏿❤️💋🧑🏼",text:"",type:1,order:3255,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["couple_kiss_tone5-2","couplekiss_tone5-2"]},{label:"kiss: person, person, dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FD",emoji:"🧑🏿❤️💋🧑🏽",text:"",type:1,order:3257,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["couple_kiss_tone5-3","couplekiss_tone5-3"]},{label:"kiss: person, person, dark skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F9D1-1F3FE",emoji:"🧑🏿❤️💋🧑🏾",text:"",type:1,order:3259,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["couple_kiss_tone5-4","couplekiss_tone5-4"]}],shortCodes:["couple_kiss","couplekiss"]},{label:"kiss: woman, man",hexcode:"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468",tags:["anniversary","babe","bae","couple","date","dating","heart","kiss","love","man","mwah","person","romance","together","woman","xoxo"],emoji:"👩❤️💋👨",text:"",type:1,order:3261,group:1,subgroup:30,version:2,skins:[{label:"kiss: woman, man, light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👩🏻❤️💋👨🏻",text:"",type:1,order:3263,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["kiss_mw_tone1","kiss_wm_tone1"]},{label:"kiss: woman, man, light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👩🏻❤️💋👨🏼",text:"",type:1,order:3265,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["kiss_mw_tone1-2","kiss_wm_tone1-2"]},{label:"kiss: woman, man, light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👩🏻❤️💋👨🏽",text:"",type:1,order:3267,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["kiss_mw_tone1-3","kiss_wm_tone1-3"]},{label:"kiss: woman, man, light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👩🏻❤️💋👨🏾",text:"",type:1,order:3269,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["kiss_mw_tone1-4","kiss_wm_tone1-4"]},{label:"kiss: woman, man, light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👩🏻❤️💋👨🏿",text:"",type:1,order:3271,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["kiss_mw_tone1-5","kiss_wm_tone1-5"]},{label:"kiss: woman, man, medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👩🏼❤️💋👨🏻",text:"",type:1,order:3273,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["kiss_mw_tone2-1","kiss_wm_tone2-1"]},{label:"kiss: woman, man, medium-light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👩🏼❤️💋👨🏼",text:"",type:1,order:3275,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["kiss_mw_tone2","kiss_wm_tone2"]},{label:"kiss: woman, man, medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👩🏼❤️💋👨🏽",text:"",type:1,order:3277,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["kiss_mw_tone2-3","kiss_wm_tone2-3"]},{label:"kiss: woman, man, medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👩🏼❤️💋👨🏾",text:"",type:1,order:3279,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["kiss_mw_tone2-4","kiss_wm_tone2-4"]},{label:"kiss: woman, man, medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👩🏼❤️💋👨🏿",text:"",type:1,order:3281,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["kiss_mw_tone2-5","kiss_wm_tone2-5"]},{label:"kiss: woman, man, medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👩🏽❤️💋👨🏻",text:"",type:1,order:3283,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["kiss_mw_tone3-1","kiss_wm_tone3-1"]},{label:"kiss: woman, man, medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👩🏽❤️💋👨🏼",text:"",type:1,order:3285,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["kiss_mw_tone3-2","kiss_wm_tone3-2"]},{label:"kiss: woman, man, medium skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👩🏽❤️💋👨🏽",text:"",type:1,order:3287,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["kiss_mw_tone3","kiss_wm_tone3"]},{label:"kiss: woman, man, medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👩🏽❤️💋👨🏾",text:"",type:1,order:3289,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["kiss_mw_tone3-4","kiss_wm_tone3-4"]},{label:"kiss: woman, man, medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👩🏽❤️💋👨🏿",text:"",type:1,order:3291,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["kiss_mw_tone3-5","kiss_wm_tone3-5"]},{label:"kiss: woman, man, medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👩🏾❤️💋👨🏻",text:"",type:1,order:3293,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["kiss_mw_tone4-1","kiss_wm_tone4-1"]},{label:"kiss: woman, man, medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👩🏾❤️💋👨🏼",text:"",type:1,order:3295,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["kiss_mw_tone4-2","kiss_wm_tone4-2"]},{label:"kiss: woman, man, medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👩🏾❤️💋👨🏽",text:"",type:1,order:3297,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["kiss_mw_tone4-3","kiss_wm_tone4-3"]},{label:"kiss: woman, man, medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👩🏾❤️💋👨🏾",text:"",type:1,order:3299,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["kiss_mw_tone4","kiss_wm_tone4"]},{label:"kiss: woman, man, medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👩🏾❤️💋👨🏿",text:"",type:1,order:3301,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["kiss_mw_tone4-5","kiss_wm_tone4-5"]},{label:"kiss: woman, man, dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👩🏿❤️💋👨🏻",text:"",type:1,order:3303,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["kiss_mw_tone5-1","kiss_wm_tone5-1"]},{label:"kiss: woman, man, dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👩🏿❤️💋👨🏼",text:"",type:1,order:3305,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["kiss_mw_tone5-2","kiss_wm_tone5-2"]},{label:"kiss: woman, man, dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👩🏿❤️💋👨🏽",text:"",type:1,order:3307,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["kiss_mw_tone5-3","kiss_wm_tone5-3"]},{label:"kiss: woman, man, dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👩🏿❤️💋👨🏾",text:"",type:1,order:3309,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["kiss_mw_tone5-4","kiss_wm_tone5-4"]},{label:"kiss: woman, man, dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👩🏿❤️💋👨🏿",text:"",type:1,order:3311,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["kiss_mw_tone5","kiss_wm_tone5"]}],shortCodes:["kiss_mw","kiss_wm"]},{label:"kiss: man, man",hexcode:"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468",tags:["anniversary","babe","bae","couple","date","dating","heart","kiss","love","man","mwah","person","romance","together","xoxo"],emoji:"👨❤️💋👨",text:"",type:1,order:3313,group:1,subgroup:30,version:2,skins:[{label:"kiss: man, man, light skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👨🏻❤️💋👨🏻",text:"",type:1,order:3315,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["kiss_mm_tone1"]},{label:"kiss: man, man, light skin tone, medium-light skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👨🏻❤️💋👨🏼",text:"",type:1,order:3317,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["kiss_mm_tone1-2"]},{label:"kiss: man, man, light skin tone, medium skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👨🏻❤️💋👨🏽",text:"",type:1,order:3319,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["kiss_mm_tone1-3"]},{label:"kiss: man, man, light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👨🏻❤️💋👨🏾",text:"",type:1,order:3321,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["kiss_mm_tone1-4"]},{label:"kiss: man, man, light skin tone, dark skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👨🏻❤️💋👨🏿",text:"",type:1,order:3323,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["kiss_mm_tone1-5"]},{label:"kiss: man, man, medium-light skin tone, light skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👨🏼❤️💋👨🏻",text:"",type:1,order:3325,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["kiss_mm_tone2-1"]},{label:"kiss: man, man, medium-light skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👨🏼❤️💋👨🏼",text:"",type:1,order:3327,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["kiss_mm_tone2"]},{label:"kiss: man, man, medium-light skin tone, medium skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👨🏼❤️💋👨🏽",text:"",type:1,order:3329,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["kiss_mm_tone2-3"]},{label:"kiss: man, man, medium-light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👨🏼❤️💋👨🏾",text:"",type:1,order:3331,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["kiss_mm_tone2-4"]},{label:"kiss: man, man, medium-light skin tone, dark skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👨🏼❤️💋👨🏿",text:"",type:1,order:3333,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["kiss_mm_tone2-5"]},{label:"kiss: man, man, medium skin tone, light skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👨🏽❤️💋👨🏻",text:"",type:1,order:3335,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["kiss_mm_tone3-1"]},{label:"kiss: man, man, medium skin tone, medium-light skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👨🏽❤️💋👨🏼",text:"",type:1,order:3337,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["kiss_mm_tone3-2"]},{label:"kiss: man, man, medium skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👨🏽❤️💋👨🏽",text:"",type:1,order:3339,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["kiss_mm_tone3"]},{label:"kiss: man, man, medium skin tone, medium-dark skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👨🏽❤️💋👨🏾",text:"",type:1,order:3341,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["kiss_mm_tone3-4"]},{label:"kiss: man, man, medium skin tone, dark skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👨🏽❤️💋👨🏿",text:"",type:1,order:3343,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["kiss_mm_tone3-5"]},{label:"kiss: man, man, medium-dark skin tone, light skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👨🏾❤️💋👨🏻",text:"",type:1,order:3345,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["kiss_mm_tone4-1"]},{label:"kiss: man, man, medium-dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👨🏾❤️💋👨🏼",text:"",type:1,order:3347,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["kiss_mm_tone4-2"]},{label:"kiss: man, man, medium-dark skin tone, medium skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👨🏾❤️💋👨🏽",text:"",type:1,order:3349,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["kiss_mm_tone4-3"]},{label:"kiss: man, man, medium-dark skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👨🏾❤️💋👨🏾",text:"",type:1,order:3351,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["kiss_mm_tone4"]},{label:"kiss: man, man, medium-dark skin tone, dark skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👨🏾❤️💋👨🏿",text:"",type:1,order:3353,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["kiss_mm_tone4-5"]},{label:"kiss: man, man, dark skin tone, light skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FB",emoji:"👨🏿❤️💋👨🏻",text:"",type:1,order:3355,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["kiss_mm_tone5-1"]},{label:"kiss: man, man, dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FC",emoji:"👨🏿❤️💋👨🏼",text:"",type:1,order:3357,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["kiss_mm_tone5-2"]},{label:"kiss: man, man, dark skin tone, medium skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FD",emoji:"👨🏿❤️💋👨🏽",text:"",type:1,order:3359,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["kiss_mm_tone5-3"]},{label:"kiss: man, man, dark skin tone, medium-dark skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FE",emoji:"👨🏿❤️💋👨🏾",text:"",type:1,order:3361,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["kiss_mm_tone5-4"]},{label:"kiss: man, man, dark skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F468-1F3FF",emoji:"👨🏿❤️💋👨🏿",text:"",type:1,order:3363,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["kiss_mm_tone5"]}],shortCodes:["kiss_mm"]},{label:"kiss: woman, woman",hexcode:"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469",tags:["anniversary","babe","bae","couple","date","dating","heart","kiss","love","mwah","person","romance","together","woman","xoxo"],emoji:"👩❤️💋👩",text:"",type:1,order:3365,group:1,subgroup:30,version:2,skins:[{label:"kiss: woman, woman, light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB",emoji:"👩🏻❤️💋👩🏻",text:"",type:1,order:3367,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["kiss_ww_tone1"]},{label:"kiss: woman, woman, light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC",emoji:"👩🏻❤️💋👩🏼",text:"",type:1,order:3369,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["kiss_ww_tone1-2"]},{label:"kiss: woman, woman, light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD",emoji:"👩🏻❤️💋👩🏽",text:"",type:1,order:3371,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["kiss_ww_tone1-3"]},{label:"kiss: woman, woman, light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE",emoji:"👩🏻❤️💋👩🏾",text:"",type:1,order:3373,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["kiss_ww_tone1-4"]},{label:"kiss: woman, woman, light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF",emoji:"👩🏻❤️💋👩🏿",text:"",type:1,order:3375,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["kiss_ww_tone1-5"]},{label:"kiss: woman, woman, medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB",emoji:"👩🏼❤️💋👩🏻",text:"",type:1,order:3377,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["kiss_ww_tone2-1"]},{label:"kiss: woman, woman, medium-light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC",emoji:"👩🏼❤️💋👩🏼",text:"",type:1,order:3379,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["kiss_ww_tone2"]},{label:"kiss: woman, woman, medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD",emoji:"👩🏼❤️💋👩🏽",text:"",type:1,order:3381,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["kiss_ww_tone2-3"]},{label:"kiss: woman, woman, medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE",emoji:"👩🏼❤️💋👩🏾",text:"",type:1,order:3383,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["kiss_ww_tone2-4"]},{label:"kiss: woman, woman, medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF",emoji:"👩🏼❤️💋👩🏿",text:"",type:1,order:3385,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["kiss_ww_tone2-5"]},{label:"kiss: woman, woman, medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB",emoji:"👩🏽❤️💋👩🏻",text:"",type:1,order:3387,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["kiss_ww_tone3-1"]},{label:"kiss: woman, woman, medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC",emoji:"👩🏽❤️💋👩🏼",text:"",type:1,order:3389,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["kiss_ww_tone3-2"]},{label:"kiss: woman, woman, medium skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD",emoji:"👩🏽❤️💋👩🏽",text:"",type:1,order:3391,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["kiss_ww_tone3"]},{label:"kiss: woman, woman, medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE",emoji:"👩🏽❤️💋👩🏾",text:"",type:1,order:3393,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["kiss_ww_tone3-4"]},{label:"kiss: woman, woman, medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF",emoji:"👩🏽❤️💋👩🏿",text:"",type:1,order:3395,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["kiss_ww_tone3-5"]},{label:"kiss: woman, woman, medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB",emoji:"👩🏾❤️💋👩🏻",text:"",type:1,order:3397,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["kiss_ww_tone4-1"]},{label:"kiss: woman, woman, medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC",emoji:"👩🏾❤️💋👩🏼",text:"",type:1,order:3399,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["kiss_ww_tone4-2"]},{label:"kiss: woman, woman, medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD",emoji:"👩🏾❤️💋👩🏽",text:"",type:1,order:3401,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["kiss_ww_tone4-3"]},{label:"kiss: woman, woman, medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE",emoji:"👩🏾❤️💋👩🏾",text:"",type:1,order:3403,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["kiss_ww_tone4"]},{label:"kiss: woman, woman, medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF",emoji:"👩🏾❤️💋👩🏿",text:"",type:1,order:3405,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["kiss_ww_tone4-5"]},{label:"kiss: woman, woman, dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FB",emoji:"👩🏿❤️💋👩🏻",text:"",type:1,order:3407,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["kiss_ww_tone5-1"]},{label:"kiss: woman, woman, dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FC",emoji:"👩🏿❤️💋👩🏼",text:"",type:1,order:3409,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["kiss_ww_tone5-2"]},{label:"kiss: woman, woman, dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FD",emoji:"👩🏿❤️💋👩🏽",text:"",type:1,order:3411,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["kiss_ww_tone5-3"]},{label:"kiss: woman, woman, dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FE",emoji:"👩🏿❤️💋👩🏾",text:"",type:1,order:3413,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["kiss_ww_tone5-4"]},{label:"kiss: woman, woman, dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F48B-200D-1F469-1F3FF",emoji:"👩🏿❤️💋👩🏿",text:"",type:1,order:3415,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["kiss_ww_tone5"]}],shortCodes:["kiss_ww"]},{label:"couple with heart",hexcode:"1F491",tags:["anniversary","babe","bae","couple","dating","heart","kiss","love","person","relationship","romance","together","you"],emoji:"💑",text:"",type:1,order:3417,group:1,subgroup:30,version:.6,skins:[{label:"couple with heart: light skin tone",hexcode:"1F491-1F3FB",emoji:"💑🏻",text:"",type:1,order:3418,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["couple_with_heart_tone1"]},{label:"couple with heart: medium-light skin tone",hexcode:"1F491-1F3FC",emoji:"💑🏼",text:"",type:1,order:3419,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["couple_with_heart_tone2"]},{label:"couple with heart: medium skin tone",hexcode:"1F491-1F3FD",emoji:"💑🏽",text:"",type:1,order:3420,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["couple_with_heart_tone3"]},{label:"couple with heart: medium-dark skin tone",hexcode:"1F491-1F3FE",emoji:"💑🏾",text:"",type:1,order:3421,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["couple_with_heart_tone4"]},{label:"couple with heart: dark skin tone",hexcode:"1F491-1F3FF",emoji:"💑🏿",text:"",type:1,order:3422,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["couple_with_heart_tone5"]},{label:"couple with heart: person, person, light skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FC",emoji:"🧑🏻❤️🧑🏼",text:"",type:1,order:3423,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["couple_with_heart_tone1-2"]},{label:"couple with heart: person, person, light skin tone, medium skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FD",emoji:"🧑🏻❤️🧑🏽",text:"",type:1,order:3425,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["couple_with_heart_tone1-3"]},{label:"couple with heart: person, person, light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FE",emoji:"🧑🏻❤️🧑🏾",text:"",type:1,order:3427,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["couple_with_heart_tone1-4"]},{label:"couple with heart: person, person, light skin tone, dark skin tone",hexcode:"1F9D1-1F3FB-200D-2764-FE0F-200D-1F9D1-1F3FF",emoji:"🧑🏻❤️🧑🏿",text:"",type:1,order:3429,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["couple_with_heart_tone1-5"]},{label:"couple with heart: person, person, medium-light skin tone, light skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FB",emoji:"🧑🏼❤️🧑🏻",text:"",type:1,order:3431,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["couple_with_heart_tone2-1"]},{label:"couple with heart: person, person, medium-light skin tone, medium skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FD",emoji:"🧑🏼❤️🧑🏽",text:"",type:1,order:3433,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["couple_with_heart_tone2-3"]},{label:"couple with heart: person, person, medium-light skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FE",emoji:"🧑🏼❤️🧑🏾",text:"",type:1,order:3435,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["couple_with_heart_tone2-4"]},{label:"couple with heart: person, person, medium-light skin tone, dark skin tone",hexcode:"1F9D1-1F3FC-200D-2764-FE0F-200D-1F9D1-1F3FF",emoji:"🧑🏼❤️🧑🏿",text:"",type:1,order:3437,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["couple_with_heart_tone2-5"]},{label:"couple with heart: person, person, medium skin tone, light skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FB",emoji:"🧑🏽❤️🧑🏻",text:"",type:1,order:3439,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["couple_with_heart_tone3-1"]},{label:"couple with heart: person, person, medium skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FC",emoji:"🧑🏽❤️🧑🏼",text:"",type:1,order:3441,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["couple_with_heart_tone3-2"]},{label:"couple with heart: person, person, medium skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FE",emoji:"🧑🏽❤️🧑🏾",text:"",type:1,order:3443,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["couple_with_heart_tone3-4"]},{label:"couple with heart: person, person, medium skin tone, dark skin tone",hexcode:"1F9D1-1F3FD-200D-2764-FE0F-200D-1F9D1-1F3FF",emoji:"🧑🏽❤️🧑🏿",text:"",type:1,order:3445,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["couple_with_heart_tone3-5"]},{label:"couple with heart: person, person, medium-dark skin tone, light skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FB",emoji:"🧑🏾❤️🧑🏻",text:"",type:1,order:3447,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["couple_with_heart_tone4-1"]},{label:"couple with heart: person, person, medium-dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FC",emoji:"🧑🏾❤️🧑🏼",text:"",type:1,order:3449,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["couple_with_heart_tone4-2"]},{label:"couple with heart: person, person, medium-dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FD",emoji:"🧑🏾❤️🧑🏽",text:"",type:1,order:3451,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["couple_with_heart_tone4-3"]},{label:"couple with heart: person, person, medium-dark skin tone, dark skin tone",hexcode:"1F9D1-1F3FE-200D-2764-FE0F-200D-1F9D1-1F3FF",emoji:"🧑🏾❤️🧑🏿",text:"",type:1,order:3453,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["couple_with_heart_tone4-5"]},{label:"couple with heart: person, person, dark skin tone, light skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FB",emoji:"🧑🏿❤️🧑🏻",text:"",type:1,order:3455,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["couple_with_heart_tone5-1"]},{label:"couple with heart: person, person, dark skin tone, medium-light skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FC",emoji:"🧑🏿❤️🧑🏼",text:"",type:1,order:3457,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["couple_with_heart_tone5-2"]},{label:"couple with heart: person, person, dark skin tone, medium skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FD",emoji:"🧑🏿❤️🧑🏽",text:"",type:1,order:3459,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["couple_with_heart_tone5-3"]},{label:"couple with heart: person, person, dark skin tone, medium-dark skin tone",hexcode:"1F9D1-1F3FF-200D-2764-FE0F-200D-1F9D1-1F3FE",emoji:"🧑🏿❤️🧑🏾",text:"",type:1,order:3461,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["couple_with_heart_tone5-4"]}],shortCodes:["couple_with_heart"]},{label:"couple with heart: woman, man",hexcode:"1F469-200D-2764-FE0F-200D-1F468",tags:["anniversary","babe","bae","couple","dating","heart","kiss","love","man","person","relationship","romance","together","woman","you"],emoji:"👩❤️👨",text:"",type:1,order:3463,group:1,subgroup:30,version:2,skins:[{label:"couple with heart: woman, man, light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👩🏻❤️👨🏻",text:"",type:1,order:3465,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["couple_with_heart_mw_tone1","couple_with_heart_wm_tone1"]},{label:"couple with heart: woman, man, light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👩🏻❤️👨🏼",text:"",type:1,order:3467,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["couple_with_heart_mw_tone1-2","couple_with_heart_wm_tone1-2"]},{label:"couple with heart: woman, man, light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👩🏻❤️👨🏽",text:"",type:1,order:3469,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["couple_with_heart_mw_tone1-3","couple_with_heart_wm_tone1-3"]},{label:"couple with heart: woman, man, light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👩🏻❤️👨🏾",text:"",type:1,order:3471,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["couple_with_heart_mw_tone1-4","couple_with_heart_wm_tone1-4"]},{label:"couple with heart: woman, man, light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👩🏻❤️👨🏿",text:"",type:1,order:3473,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["couple_with_heart_mw_tone1-5","couple_with_heart_wm_tone1-5"]},{label:"couple with heart: woman, man, medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👩🏼❤️👨🏻",text:"",type:1,order:3475,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["couple_with_heart_mw_tone2-1","couple_with_heart_wm_tone2-1"]},{label:"couple with heart: woman, man, medium-light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👩🏼❤️👨🏼",text:"",type:1,order:3477,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["couple_with_heart_mw_tone2","couple_with_heart_wm_tone2"]},{label:"couple with heart: woman, man, medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👩🏼❤️👨🏽",text:"",type:1,order:3479,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["couple_with_heart_mw_tone2-3","couple_with_heart_wm_tone2-3"]},{label:"couple with heart: woman, man, medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👩🏼❤️👨🏾",text:"",type:1,order:3481,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["couple_with_heart_mw_tone2-4","couple_with_heart_wm_tone2-4"]},{label:"couple with heart: woman, man, medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👩🏼❤️👨🏿",text:"",type:1,order:3483,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["couple_with_heart_mw_tone2-5","couple_with_heart_wm_tone2-5"]},{label:"couple with heart: woman, man, medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👩🏽❤️👨🏻",text:"",type:1,order:3485,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["couple_with_heart_mw_tone3-1","couple_with_heart_wm_tone3-1"]},{label:"couple with heart: woman, man, medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👩🏽❤️👨🏼",text:"",type:1,order:3487,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["couple_with_heart_mw_tone3-2","couple_with_heart_wm_tone3-2"]},{label:"couple with heart: woman, man, medium skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👩🏽❤️👨🏽",text:"",type:1,order:3489,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["couple_with_heart_mw_tone3","couple_with_heart_wm_tone3"]},{label:"couple with heart: woman, man, medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👩🏽❤️👨🏾",text:"",type:1,order:3491,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["couple_with_heart_mw_tone3-4","couple_with_heart_wm_tone3-4"]},{label:"couple with heart: woman, man, medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👩🏽❤️👨🏿",text:"",type:1,order:3493,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["couple_with_heart_mw_tone3-5","couple_with_heart_wm_tone3-5"]},{label:"couple with heart: woman, man, medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👩🏾❤️👨🏻",text:"",type:1,order:3495,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["couple_with_heart_mw_tone4-1","couple_with_heart_wm_tone4-1"]},{label:"couple with heart: woman, man, medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👩🏾❤️👨🏼",text:"",type:1,order:3497,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["couple_with_heart_mw_tone4-2","couple_with_heart_wm_tone4-2"]},{label:"couple with heart: woman, man, medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👩🏾❤️👨🏽",text:"",type:1,order:3499,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["couple_with_heart_mw_tone4-3","couple_with_heart_wm_tone4-3"]},{label:"couple with heart: woman, man, medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👩🏾❤️👨🏾",text:"",type:1,order:3501,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["couple_with_heart_mw_tone4","couple_with_heart_wm_tone4"]},{label:"couple with heart: woman, man, medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👩🏾❤️👨🏿",text:"",type:1,order:3503,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["couple_with_heart_mw_tone4-5","couple_with_heart_wm_tone4-5"]},{label:"couple with heart: woman, man, dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👩🏿❤️👨🏻",text:"",type:1,order:3505,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["couple_with_heart_mw_tone5-1","couple_with_heart_wm_tone5-1"]},{label:"couple with heart: woman, man, dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👩🏿❤️👨🏼",text:"",type:1,order:3507,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["couple_with_heart_mw_tone5-2","couple_with_heart_wm_tone5-2"]},{label:"couple with heart: woman, man, dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👩🏿❤️👨🏽",text:"",type:1,order:3509,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["couple_with_heart_mw_tone5-3","couple_with_heart_wm_tone5-3"]},{label:"couple with heart: woman, man, dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👩🏿❤️👨🏾",text:"",type:1,order:3511,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["couple_with_heart_mw_tone5-4","couple_with_heart_wm_tone5-4"]},{label:"couple with heart: woman, man, dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👩🏿❤️👨🏿",text:"",type:1,order:3513,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["couple_with_heart_mw_tone5","couple_with_heart_wm_tone5"]}],shortCodes:["couple_with_heart_mw","couple_with_heart_wm"]},{label:"couple with heart: man, man",hexcode:"1F468-200D-2764-FE0F-200D-1F468",tags:["anniversary","babe","bae","couple","dating","heart","kiss","love","man","person","relationship","romance","together","you"],emoji:"👨❤️👨",text:"",type:1,order:3515,group:1,subgroup:30,version:2,skins:[{label:"couple with heart: man, man, light skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👨🏻❤️👨🏻",text:"",type:1,order:3517,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["couple_with_heart_mm_tone1"]},{label:"couple with heart: man, man, light skin tone, medium-light skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👨🏻❤️👨🏼",text:"",type:1,order:3519,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["couple_with_heart_mm_tone1-2"]},{label:"couple with heart: man, man, light skin tone, medium skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👨🏻❤️👨🏽",text:"",type:1,order:3521,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["couple_with_heart_mm_tone1-3"]},{label:"couple with heart: man, man, light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👨🏻❤️👨🏾",text:"",type:1,order:3523,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["couple_with_heart_mm_tone1-4"]},{label:"couple with heart: man, man, light skin tone, dark skin tone",hexcode:"1F468-1F3FB-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👨🏻❤️👨🏿",text:"",type:1,order:3525,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["couple_with_heart_mm_tone1-5"]},{label:"couple with heart: man, man, medium-light skin tone, light skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👨🏼❤️👨🏻",text:"",type:1,order:3527,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["couple_with_heart_mm_tone2-1"]},{label:"couple with heart: man, man, medium-light skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👨🏼❤️👨🏼",text:"",type:1,order:3529,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["couple_with_heart_mm_tone2"]},{label:"couple with heart: man, man, medium-light skin tone, medium skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👨🏼❤️👨🏽",text:"",type:1,order:3531,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["couple_with_heart_mm_tone2-3"]},{label:"couple with heart: man, man, medium-light skin tone, medium-dark skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👨🏼❤️👨🏾",text:"",type:1,order:3533,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["couple_with_heart_mm_tone2-4"]},{label:"couple with heart: man, man, medium-light skin tone, dark skin tone",hexcode:"1F468-1F3FC-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👨🏼❤️👨🏿",text:"",type:1,order:3535,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["couple_with_heart_mm_tone2-5"]},{label:"couple with heart: man, man, medium skin tone, light skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👨🏽❤️👨🏻",text:"",type:1,order:3537,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["couple_with_heart_mm_tone3-1"]},{label:"couple with heart: man, man, medium skin tone, medium-light skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👨🏽❤️👨🏼",text:"",type:1,order:3539,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["couple_with_heart_mm_tone3-2"]},{label:"couple with heart: man, man, medium skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👨🏽❤️👨🏽",text:"",type:1,order:3541,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["couple_with_heart_mm_tone3"]},{label:"couple with heart: man, man, medium skin tone, medium-dark skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👨🏽❤️👨🏾",text:"",type:1,order:3543,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["couple_with_heart_mm_tone3-4"]},{label:"couple with heart: man, man, medium skin tone, dark skin tone",hexcode:"1F468-1F3FD-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👨🏽❤️👨🏿",text:"",type:1,order:3545,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["couple_with_heart_mm_tone3-5"]},{label:"couple with heart: man, man, medium-dark skin tone, light skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👨🏾❤️👨🏻",text:"",type:1,order:3547,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["couple_with_heart_mm_tone4-1"]},{label:"couple with heart: man, man, medium-dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👨🏾❤️👨🏼",text:"",type:1,order:3549,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["couple_with_heart_mm_tone4-2"]},{label:"couple with heart: man, man, medium-dark skin tone, medium skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👨🏾❤️👨🏽",text:"",type:1,order:3551,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["couple_with_heart_mm_tone4-3"]},{label:"couple with heart: man, man, medium-dark skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👨🏾❤️👨🏾",text:"",type:1,order:3553,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["couple_with_heart_mm_tone4"]},{label:"couple with heart: man, man, medium-dark skin tone, dark skin tone",hexcode:"1F468-1F3FE-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👨🏾❤️👨🏿",text:"",type:1,order:3555,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["couple_with_heart_mm_tone4-5"]},{label:"couple with heart: man, man, dark skin tone, light skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FB",emoji:"👨🏿❤️👨🏻",text:"",type:1,order:3557,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["couple_with_heart_mm_tone5-1"]},{label:"couple with heart: man, man, dark skin tone, medium-light skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FC",emoji:"👨🏿❤️👨🏼",text:"",type:1,order:3559,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["couple_with_heart_mm_tone5-2"]},{label:"couple with heart: man, man, dark skin tone, medium skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FD",emoji:"👨🏿❤️👨🏽",text:"",type:1,order:3561,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["couple_with_heart_mm_tone5-3"]},{label:"couple with heart: man, man, dark skin tone, medium-dark skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FE",emoji:"👨🏿❤️👨🏾",text:"",type:1,order:3563,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["couple_with_heart_mm_tone5-4"]},{label:"couple with heart: man, man, dark skin tone",hexcode:"1F468-1F3FF-200D-2764-FE0F-200D-1F468-1F3FF",emoji:"👨🏿❤️👨🏿",text:"",type:1,order:3565,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["couple_with_heart_mm_tone5"]}],shortCodes:["couple_with_heart_mm"]},{label:"couple with heart: woman, woman",hexcode:"1F469-200D-2764-FE0F-200D-1F469",tags:["anniversary","babe","bae","couple","dating","heart","kiss","love","person","relationship","romance","together","woman","you"],emoji:"👩❤️👩",text:"",type:1,order:3567,group:1,subgroup:30,version:2,skins:[{label:"couple with heart: woman, woman, light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FB",emoji:"👩🏻❤️👩🏻",text:"",type:1,order:3569,group:1,subgroup:30,version:13.1,tone:1,shortCodes:["couple_with_heart_ww_tone1"]},{label:"couple with heart: woman, woman, light skin tone, medium-light skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FC",emoji:"👩🏻❤️👩🏼",text:"",type:1,order:3571,group:1,subgroup:30,version:13.1,tone:[1,2],shortCodes:["couple_with_heart_ww_tone1-2"]},{label:"couple with heart: woman, woman, light skin tone, medium skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FD",emoji:"👩🏻❤️👩🏽",text:"",type:1,order:3573,group:1,subgroup:30,version:13.1,tone:[1,3],shortCodes:["couple_with_heart_ww_tone1-3"]},{label:"couple with heart: woman, woman, light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FE",emoji:"👩🏻❤️👩🏾",text:"",type:1,order:3575,group:1,subgroup:30,version:13.1,tone:[1,4],shortCodes:["couple_with_heart_ww_tone1-4"]},{label:"couple with heart: woman, woman, light skin tone, dark skin tone",hexcode:"1F469-1F3FB-200D-2764-FE0F-200D-1F469-1F3FF",emoji:"👩🏻❤️👩🏿",text:"",type:1,order:3577,group:1,subgroup:30,version:13.1,tone:[1,5],shortCodes:["couple_with_heart_ww_tone1-5"]},{label:"couple with heart: woman, woman, medium-light skin tone, light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FB",emoji:"👩🏼❤️👩🏻",text:"",type:1,order:3579,group:1,subgroup:30,version:13.1,tone:[2,1],shortCodes:["couple_with_heart_ww_tone2-1"]},{label:"couple with heart: woman, woman, medium-light skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FC",emoji:"👩🏼❤️👩🏼",text:"",type:1,order:3581,group:1,subgroup:30,version:13.1,tone:2,shortCodes:["couple_with_heart_ww_tone2"]},{label:"couple with heart: woman, woman, medium-light skin tone, medium skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FD",emoji:"👩🏼❤️👩🏽",text:"",type:1,order:3583,group:1,subgroup:30,version:13.1,tone:[2,3],shortCodes:["couple_with_heart_ww_tone2-3"]},{label:"couple with heart: woman, woman, medium-light skin tone, medium-dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FE",emoji:"👩🏼❤️👩🏾",text:"",type:1,order:3585,group:1,subgroup:30,version:13.1,tone:[2,4],shortCodes:["couple_with_heart_ww_tone2-4"]},{label:"couple with heart: woman, woman, medium-light skin tone, dark skin tone",hexcode:"1F469-1F3FC-200D-2764-FE0F-200D-1F469-1F3FF",emoji:"👩🏼❤️👩🏿",text:"",type:1,order:3587,group:1,subgroup:30,version:13.1,tone:[2,5],shortCodes:["couple_with_heart_ww_tone2-5"]},{label:"couple with heart: woman, woman, medium skin tone, light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FB",emoji:"👩🏽❤️👩🏻",text:"",type:1,order:3589,group:1,subgroup:30,version:13.1,tone:[3,1],shortCodes:["couple_with_heart_ww_tone3-1"]},{label:"couple with heart: woman, woman, medium skin tone, medium-light skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FC",emoji:"👩🏽❤️👩🏼",text:"",type:1,order:3591,group:1,subgroup:30,version:13.1,tone:[3,2],shortCodes:["couple_with_heart_ww_tone3-2"]},{label:"couple with heart: woman, woman, medium skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FD",emoji:"👩🏽❤️👩🏽",text:"",type:1,order:3593,group:1,subgroup:30,version:13.1,tone:3,shortCodes:["couple_with_heart_ww_tone3"]},{label:"couple with heart: woman, woman, medium skin tone, medium-dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FE",emoji:"👩🏽❤️👩🏾",text:"",type:1,order:3595,group:1,subgroup:30,version:13.1,tone:[3,4],shortCodes:["couple_with_heart_ww_tone3-4"]},{label:"couple with heart: woman, woman, medium skin tone, dark skin tone",hexcode:"1F469-1F3FD-200D-2764-FE0F-200D-1F469-1F3FF",emoji:"👩🏽❤️👩🏿",text:"",type:1,order:3597,group:1,subgroup:30,version:13.1,tone:[3,5],shortCodes:["couple_with_heart_ww_tone3-5"]},{label:"couple with heart: woman, woman, medium-dark skin tone, light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FB",emoji:"👩🏾❤️👩🏻",text:"",type:1,order:3599,group:1,subgroup:30,version:13.1,tone:[4,1],shortCodes:["couple_with_heart_ww_tone4-1"]},{label:"couple with heart: woman, woman, medium-dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FC",emoji:"👩🏾❤️👩🏼",text:"",type:1,order:3601,group:1,subgroup:30,version:13.1,tone:[4,2],shortCodes:["couple_with_heart_ww_tone4-2"]},{label:"couple with heart: woman, woman, medium-dark skin tone, medium skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FD",emoji:"👩🏾❤️👩🏽",text:"",type:1,order:3603,group:1,subgroup:30,version:13.1,tone:[4,3],shortCodes:["couple_with_heart_ww_tone4-3"]},{label:"couple with heart: woman, woman, medium-dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FE",emoji:"👩🏾❤️👩🏾",text:"",type:1,order:3605,group:1,subgroup:30,version:13.1,tone:4,shortCodes:["couple_with_heart_ww_tone4"]},{label:"couple with heart: woman, woman, medium-dark skin tone, dark skin tone",hexcode:"1F469-1F3FE-200D-2764-FE0F-200D-1F469-1F3FF",emoji:"👩🏾❤️👩🏿",text:"",type:1,order:3607,group:1,subgroup:30,version:13.1,tone:[4,5],shortCodes:["couple_with_heart_ww_tone4-5"]},{label:"couple with heart: woman, woman, dark skin tone, light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FB",emoji:"👩🏿❤️👩🏻",text:"",type:1,order:3609,group:1,subgroup:30,version:13.1,tone:[5,1],shortCodes:["couple_with_heart_ww_tone5-1"]},{label:"couple with heart: woman, woman, dark skin tone, medium-light skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FC",emoji:"👩🏿❤️👩🏼",text:"",type:1,order:3611,group:1,subgroup:30,version:13.1,tone:[5,2],shortCodes:["couple_with_heart_ww_tone5-2"]},{label:"couple with heart: woman, woman, dark skin tone, medium skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FD",emoji:"👩🏿❤️👩🏽",text:"",type:1,order:3613,group:1,subgroup:30,version:13.1,tone:[5,3],shortCodes:["couple_with_heart_ww_tone5-3"]},{label:"couple with heart: woman, woman, dark skin tone, medium-dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FE",emoji:"👩🏿❤️👩🏾",text:"",type:1,order:3615,group:1,subgroup:30,version:13.1,tone:[5,4],shortCodes:["couple_with_heart_ww_tone5-4"]},{label:"couple with heart: woman, woman, dark skin tone",hexcode:"1F469-1F3FF-200D-2764-FE0F-200D-1F469-1F3FF",emoji:"👩🏿❤️👩🏿",text:"",type:1,order:3617,group:1,subgroup:30,version:13.1,tone:5,shortCodes:["couple_with_heart_ww_tone5"]}],shortCodes:["couple_with_heart_ww"]},{label:"family: man, woman, boy",hexcode:"1F468-200D-1F469-200D-1F466",tags:["boy","child","family","man","woman"],emoji:"👨👩👦",text:"",type:1,order:3619,group:1,subgroup:30,version:2,shortCodes:["family_mwb"]},{label:"family: man, woman, girl",hexcode:"1F468-200D-1F469-200D-1F467",tags:["child","family","girl","man","woman"],emoji:"👨👩👧",text:"",type:1,order:3620,group:1,subgroup:30,version:2,shortCodes:["family_mwg"]},{label:"family: man, woman, girl, boy",hexcode:"1F468-200D-1F469-200D-1F467-200D-1F466",tags:["boy","child","family","girl","man","woman"],emoji:"👨👩👧👦",text:"",type:1,order:3621,group:1,subgroup:30,version:2,shortCodes:["family_mwgb"]},{label:"family: man, woman, boy, boy",hexcode:"1F468-200D-1F469-200D-1F466-200D-1F466",tags:["boy","child","family","man","woman"],emoji:"👨👩👦👦",text:"",type:1,order:3622,group:1,subgroup:30,version:2,shortCodes:["family_mwbb"]},{label:"family: man, woman, girl, girl",hexcode:"1F468-200D-1F469-200D-1F467-200D-1F467",tags:["child","family","girl","man","woman"],emoji:"👨👩👧👧",text:"",type:1,order:3623,group:1,subgroup:30,version:2,shortCodes:["family_mwgg"]},{label:"family: man, man, boy",hexcode:"1F468-200D-1F468-200D-1F466",tags:["boy","child","family","man"],emoji:"👨👨👦",text:"",type:1,order:3624,group:1,subgroup:30,version:2,shortCodes:["family_mmb"]},{label:"family: man, man, girl",hexcode:"1F468-200D-1F468-200D-1F467",tags:["child","family","girl","man"],emoji:"👨👨👧",text:"",type:1,order:3625,group:1,subgroup:30,version:2,shortCodes:["family_mmg"]},{label:"family: man, man, girl, boy",hexcode:"1F468-200D-1F468-200D-1F467-200D-1F466",tags:["boy","child","family","girl","man"],emoji:"👨👨👧👦",text:"",type:1,order:3626,group:1,subgroup:30,version:2,shortCodes:["family_mmgb"]},{label:"family: man, man, boy, boy",hexcode:"1F468-200D-1F468-200D-1F466-200D-1F466",tags:["boy","child","family","man"],emoji:"👨👨👦👦",text:"",type:1,order:3627,group:1,subgroup:30,version:2,shortCodes:["family_mmbb"]},{label:"family: man, man, girl, girl",hexcode:"1F468-200D-1F468-200D-1F467-200D-1F467",tags:["child","family","girl","man"],emoji:"👨👨👧👧",text:"",type:1,order:3628,group:1,subgroup:30,version:2,shortCodes:["family_mmgg"]},{label:"family: woman, woman, boy",hexcode:"1F469-200D-1F469-200D-1F466",tags:["boy","child","family","woman"],emoji:"👩👩👦",text:"",type:1,order:3629,group:1,subgroup:30,version:2,shortCodes:["family_wwb"]},{label:"family: woman, woman, girl",hexcode:"1F469-200D-1F469-200D-1F467",tags:["child","family","girl","woman"],emoji:"👩👩👧",text:"",type:1,order:3630,group:1,subgroup:30,version:2,shortCodes:["family_wwg"]},{label:"family: woman, woman, girl, boy",hexcode:"1F469-200D-1F469-200D-1F467-200D-1F466",tags:["boy","child","family","girl","woman"],emoji:"👩👩👧👦",text:"",type:1,order:3631,group:1,subgroup:30,version:2,shortCodes:["family_wwgb"]},{label:"family: woman, woman, boy, boy",hexcode:"1F469-200D-1F469-200D-1F466-200D-1F466",tags:["boy","child","family","woman"],emoji:"👩👩👦👦",text:"",type:1,order:3632,group:1,subgroup:30,version:2,shortCodes:["family_wwbb"]},{label:"family: woman, woman, girl, girl",hexcode:"1F469-200D-1F469-200D-1F467-200D-1F467",tags:["child","family","girl","woman"],emoji:"👩👩👧👧",text:"",type:1,order:3633,group:1,subgroup:30,version:2,shortCodes:["family_wwgg"]},{label:"family: man, boy",hexcode:"1F468-200D-1F466",tags:["boy","child","family","man"],emoji:"👨👦",text:"",type:1,order:3634,group:1,subgroup:30,version:4,shortCodes:["family_mb"]},{label:"family: man, boy, boy",hexcode:"1F468-200D-1F466-200D-1F466",tags:["boy","child","family","man"],emoji:"👨👦👦",text:"",type:1,order:3635,group:1,subgroup:30,version:4,shortCodes:["family_mbb"]},{label:"family: man, girl",hexcode:"1F468-200D-1F467",tags:["child","family","girl","man"],emoji:"👨👧",text:"",type:1,order:3636,group:1,subgroup:30,version:4,shortCodes:["family_mg"]},{label:"family: man, girl, boy",hexcode:"1F468-200D-1F467-200D-1F466",tags:["boy","child","family","girl","man"],emoji:"👨👧👦",text:"",type:1,order:3637,group:1,subgroup:30,version:4,shortCodes:["family_mgb"]},{label:"family: man, girl, girl",hexcode:"1F468-200D-1F467-200D-1F467",tags:["child","family","girl","man"],emoji:"👨👧👧",text:"",type:1,order:3638,group:1,subgroup:30,version:4,shortCodes:["family_mgg"]},{label:"family: woman, boy",hexcode:"1F469-200D-1F466",tags:["boy","child","family","woman"],emoji:"👩👦",text:"",type:1,order:3639,group:1,subgroup:30,version:4,shortCodes:["family_wb"]},{label:"family: woman, boy, boy",hexcode:"1F469-200D-1F466-200D-1F466",tags:["boy","child","family","woman"],emoji:"👩👦👦",text:"",type:1,order:3640,group:1,subgroup:30,version:4,shortCodes:["family_wbb"]},{label:"family: woman, girl",hexcode:"1F469-200D-1F467",tags:["child","family","girl","woman"],emoji:"👩👧",text:"",type:1,order:3641,group:1,subgroup:30,version:4,shortCodes:["family_wg"]},{label:"family: woman, girl, boy",hexcode:"1F469-200D-1F467-200D-1F466",tags:["boy","child","family","girl","woman"],emoji:"👩👧👦",text:"",type:1,order:3642,group:1,subgroup:30,version:4,shortCodes:["family_wgb"]},{label:"family: woman, girl, girl",hexcode:"1F469-200D-1F467-200D-1F467",tags:["child","family","girl","woman"],emoji:"👩👧👧",text:"",type:1,order:3643,group:1,subgroup:30,version:4,shortCodes:["family_wgg"]},{label:"speaking head",hexcode:"1F5E3",tags:["face","head","silhouette","speak","speaking"],emoji:"🗣️",text:"🗣︎",type:0,order:3645,group:1,subgroup:31,version:.7,shortCodes:["speaking_head"]},{label:"bust in silhouette",hexcode:"1F464",tags:["bust","mysterious","shadow","silhouette"],emoji:"👤",text:"",type:1,order:3646,group:1,subgroup:31,version:.6,shortCodes:["bust_in_silhouette"]},{label:"busts in silhouette",hexcode:"1F465",tags:["bff","bust","busts","everyone","friend","friends","people","silhouette"],emoji:"👥",text:"",type:1,order:3647,group:1,subgroup:31,version:1,shortCodes:["busts_in_silhouette"]},{label:"people hugging",hexcode:"1FAC2",tags:["comfort","embrace","farewell","friendship","goodbye","hello","hug","hugging","love","people","thanks"],emoji:"🫂",text:"",type:1,order:3648,group:1,subgroup:31,version:13,shortCodes:["people_hugging"]},{label:"family",hexcode:"1F46A",tags:["child"],emoji:"👪️",text:"👪︎",type:1,order:3649,group:1,subgroup:31,version:.6,shortCodes:["family"]},{label:"family: adult, adult, child",hexcode:"1F9D1-200D-1F9D1-200D-1F9D2",tags:["adult","child","family"],emoji:"🧑🧑🧒",text:"",type:1,order:3650,group:1,subgroup:31,version:15.1,shortCodes:["family_aac"]},{label:"family: adult, adult, child, child",hexcode:"1F9D1-200D-1F9D1-200D-1F9D2-200D-1F9D2",tags:["adult","child","family"],emoji:"🧑🧑🧒🧒",text:"",type:1,order:3651,group:1,subgroup:31,version:15.1,shortCodes:["family_aacc"]},{label:"family: adult, child",hexcode:"1F9D1-200D-1F9D2",tags:["adult","child","family"],emoji:"🧑🧒",text:"",type:1,order:3652,group:1,subgroup:31,version:15.1,shortCodes:["family_aa","family_ac"]},{label:"family: adult, child, child",hexcode:"1F9D1-200D-1F9D2-200D-1F9D2",tags:["adult","child","family"],emoji:"🧑🧒🧒",text:"",type:1,order:3653,group:1,subgroup:31,version:15.1,shortCodes:["family_acc"]},{label:"footprints",hexcode:"1F463",tags:["barefoot","clothing","footprint","omw","print","walk"],emoji:"👣",text:"",type:1,order:3654,group:1,subgroup:31,version:.6,shortCodes:["footprints"]},{label:"fingerprint",hexcode:"1FAC6",tags:["clue","crime","detective","forensics","identity","mystery","print","safety","trace"],emoji:"",text:"",type:1,order:3655,group:1,subgroup:31,version:16,shortCodes:["fingerprint"]},{label:"light skin tone",hexcode:"1F3FB",tags:["1–2","light","skin","tone","type"],emoji:"🏻",text:"",type:1,order:3656,group:2,subgroup:32,version:1,shortCodes:["tone1","tone_light"]},{label:"medium-light skin tone",hexcode:"1F3FC",tags:["3","medium-light","skin","tone","type"],emoji:"🏼",text:"",type:1,order:3657,group:2,subgroup:32,version:1,shortCodes:["tone2","tone_medium_light"]},{label:"medium skin tone",hexcode:"1F3FD",tags:["4","medium","skin","tone","type"],emoji:"🏽",text:"",type:1,order:3658,group:2,subgroup:32,version:1,shortCodes:["tone3","tone_medium"]},{label:"medium-dark skin tone",hexcode:"1F3FE",tags:["5","medium-dark","skin","tone","type"],emoji:"🏾",text:"",type:1,order:3659,group:2,subgroup:32,version:1,shortCodes:["tone4","tone_medium_dark"]},{label:"dark skin tone",hexcode:"1F3FF",tags:["6","dark","skin","tone","type"],emoji:"🏿",text:"",type:1,order:3660,group:2,subgroup:32,version:1,shortCodes:["tone5","tone_dark"]},{label:"red hair",hexcode:"1F9B0",tags:["ginger","hair","red","redhead"],emoji:"🦰",text:"",type:1,order:3661,group:2,subgroup:33,version:11,shortCodes:["red_hair"]},{label:"curly hair",hexcode:"1F9B1",tags:["afro","curly","hair","ringlets"],emoji:"🦱",text:"",type:1,order:3662,group:2,subgroup:33,version:11,shortCodes:["curly_hair"]},{label:"white hair",hexcode:"1F9B3",tags:["gray","hair","old","white"],emoji:"🦳",text:"",type:1,order:3663,group:2,subgroup:33,version:11,shortCodes:["white_hair"]},{label:"bald",hexcode:"1F9B2",tags:["chemotherapy","hair","hairless","no","shaven"],emoji:"🦲",text:"",type:1,order:3664,group:2,subgroup:33,version:11,shortCodes:["no_hair"]},{label:"monkey face",hexcode:"1F435",tags:["animal","banana","face","monkey"],emoji:"🐵",text:"",type:1,order:3665,group:3,subgroup:34,version:.6,shortCodes:["monkey_face"]},{label:"monkey",hexcode:"1F412",tags:["animal","banana"],emoji:"🐒",text:"",type:1,order:3666,group:3,subgroup:34,version:.6,shortCodes:["monkey"]},{label:"gorilla",hexcode:"1F98D",tags:["animal"],emoji:"🦍",text:"",type:1,order:3667,group:3,subgroup:34,version:3,shortCodes:["gorilla"]},{label:"orangutan",hexcode:"1F9A7",tags:["animal","ape","monkey"],emoji:"🦧",text:"",type:1,order:3668,group:3,subgroup:34,version:12,shortCodes:["orangutan"]},{label:"dog face",hexcode:"1F436",tags:["adorbs","animal","dog","face","pet","puppies","puppy"],emoji:"🐶",text:"",type:1,order:3669,group:3,subgroup:34,version:.6,shortCodes:["dog_face"]},{label:"dog",hexcode:"1F415",tags:["animal","animals","dogs","pet"],emoji:"🐕️",text:"🐕︎",type:1,order:3670,group:3,subgroup:34,version:.7,shortCodes:["dog"]},{label:"guide dog",hexcode:"1F9AE",tags:["accessibility","animal","blind","dog","guide"],emoji:"🦮",text:"",type:1,order:3671,group:3,subgroup:34,version:12,shortCodes:["guide_dog"]},{label:"service dog",hexcode:"1F415-200D-1F9BA",tags:["accessibility","animal","assistance","dog","service"],emoji:"🐕🦺",text:"",type:1,order:3672,group:3,subgroup:34,version:12,shortCodes:["service_dog"]},{label:"poodle",hexcode:"1F429",tags:["animal","dog","fluffy"],emoji:"🐩",text:"",type:1,order:3673,group:3,subgroup:34,version:.6,shortCodes:["poodle"]},{label:"wolf",hexcode:"1F43A",tags:["animal","face"],emoji:"🐺",text:"",type:1,order:3674,group:3,subgroup:34,version:.6,shortCodes:["wolf","wolf_face"]},{label:"fox",hexcode:"1F98A",tags:["animal","face"],emoji:"🦊",text:"",type:1,order:3675,group:3,subgroup:34,version:3,shortCodes:["fox","fox_face"]},{label:"raccoon",hexcode:"1F99D",tags:["animal","curious","sly"],emoji:"🦝",text:"",type:1,order:3676,group:3,subgroup:34,version:11,shortCodes:["raccoon"]},{label:"cat face",hexcode:"1F431",tags:["animal","cat","face","kitten","kitty","pet"],emoji:"🐱",text:"",type:1,order:3677,group:3,subgroup:34,version:.6,shortCodes:["cat_face"]},{label:"cat",hexcode:"1F408",tags:["animal","animals","cats","kitten","pet"],emoji:"🐈️",text:"🐈︎",type:1,order:3678,group:3,subgroup:34,version:.7,shortCodes:["cat"]},{label:"black cat",hexcode:"1F408-200D-2B1B",tags:["animal","black","cat","feline","halloween","meow","unlucky"],emoji:"🐈⬛",text:"",type:1,order:3679,group:3,subgroup:34,version:13,shortCodes:["black_cat"]},{label:"lion",hexcode:"1F981",tags:["alpha","animal","face","leo","mane","order","rawr","roar","safari","strong","zodiac"],emoji:"🦁",text:"",type:1,order:3680,group:3,subgroup:34,version:1,shortCodes:["lion","lion_face"]},{label:"tiger face",hexcode:"1F42F",tags:["animal","big","cat","face","predator","tiger"],emoji:"🐯",text:"",type:1,order:3681,group:3,subgroup:34,version:.6,shortCodes:["tiger_face"]},{label:"tiger",hexcode:"1F405",tags:["animal","big","cat","predator","zoo"],emoji:"🐅",text:"",type:1,order:3682,group:3,subgroup:34,version:1,shortCodes:["tiger"]},{label:"leopard",hexcode:"1F406",tags:["animal","big","cat","predator","zoo"],emoji:"🐆",text:"",type:1,order:3683,group:3,subgroup:34,version:1,shortCodes:["leopard"]},{label:"horse face",hexcode:"1F434",tags:["animal","dressage","equine","face","farm","horse","horses"],emoji:"🐴",text:"",type:1,order:3684,group:3,subgroup:34,version:.6,shortCodes:["horse_face"]},{label:"moose",hexcode:"1FACE",tags:["alces","animal","antlers","elk","mammal"],emoji:"🫎",text:"",type:1,order:3685,group:3,subgroup:34,version:15,shortCodes:["moose"]},{label:"donkey",hexcode:"1FACF",tags:["animal","ass","burro","hinny","mammal","mule","stubborn"],emoji:"🫏",text:"",type:1,order:3686,group:3,subgroup:34,version:15,shortCodes:["donkey"]},{label:"horse",hexcode:"1F40E",tags:["animal","equestrian","farm","racehorse","racing"],emoji:"🐎",text:"",type:1,order:3687,group:3,subgroup:34,version:.6,shortCodes:["horse","racehorse"]},{label:"unicorn",hexcode:"1F984",tags:["face"],emoji:"🦄",text:"",type:1,order:3688,group:3,subgroup:34,version:1,shortCodes:["unicorn","unicorn_face"]},{label:"zebra",hexcode:"1F993",tags:["animal","stripe"],emoji:"🦓",text:"",type:1,order:3689,group:3,subgroup:34,version:5,shortCodes:["zebra"]},{label:"deer",hexcode:"1F98C",tags:["animal"],emoji:"🦌",text:"",type:1,order:3690,group:3,subgroup:34,version:3,shortCodes:["deer"]},{label:"bison",hexcode:"1F9AC",tags:["animal","buffalo","herd","wisent"],emoji:"🦬",text:"",type:1,order:3691,group:3,subgroup:34,version:13,shortCodes:["bison"]},{label:"cow face",hexcode:"1F42E",tags:["animal","cow","face","farm","milk","moo"],emoji:"🐮",text:"",type:1,order:3692,group:3,subgroup:34,version:.6,shortCodes:["cow_face"]},{label:"ox",hexcode:"1F402",tags:["animal","animals","bull","farm","taurus","zodiac"],emoji:"🐂",text:"",type:1,order:3693,group:3,subgroup:34,version:1,shortCodes:["ox"]},{label:"water buffalo",hexcode:"1F403",tags:["animal","buffalo","water","zoo"],emoji:"🐃",text:"",type:1,order:3694,group:3,subgroup:34,version:1,shortCodes:["water_buffalo"]},{label:"cow",hexcode:"1F404",tags:["animal","animals","farm","milk","moo"],emoji:"🐄",text:"",type:1,order:3695,group:3,subgroup:34,version:1,shortCodes:["cow"]},{label:"pig face",hexcode:"1F437",tags:["animal","bacon","face","farm","pig","pork"],emoji:"🐷",text:"",type:1,order:3696,group:3,subgroup:34,version:.6,shortCodes:["pig_face"]},{label:"pig",hexcode:"1F416",tags:["animal","bacon","farm","pork","sow"],emoji:"🐖",text:"",type:1,order:3697,group:3,subgroup:34,version:1,shortCodes:["pig"]},{label:"boar",hexcode:"1F417",tags:["animal","pig"],emoji:"🐗",text:"",type:1,order:3698,group:3,subgroup:34,version:.6,shortCodes:["boar"]},{label:"pig nose",hexcode:"1F43D",tags:["animal","face","farm","nose","pig","smell","snout"],emoji:"🐽",text:"",type:1,order:3699,group:3,subgroup:34,version:.6,shortCodes:["pig_nose"]},{label:"ram",hexcode:"1F40F",tags:["animal","aries","horns","male","sheep","zodiac","zoo"],emoji:"🐏",text:"",type:1,order:3700,group:3,subgroup:34,version:1,shortCodes:["ram"]},{label:"ewe",hexcode:"1F411",tags:["animal","baa","farm","female","fluffy","lamb","sheep","wool"],emoji:"🐑",text:"",type:1,order:3701,group:3,subgroup:34,version:.6,shortCodes:["ewe","sheep"]},{label:"goat",hexcode:"1F410",tags:["animal","capricorn","farm","milk","zodiac"],emoji:"🐐",text:"",type:1,order:3702,group:3,subgroup:34,version:1,shortCodes:["goat"]},{label:"camel",hexcode:"1F42A",tags:["animal","desert","dromedary","hump","one"],emoji:"🐪",text:"",type:1,order:3703,group:3,subgroup:34,version:1,shortCodes:["dromedary_camel"]},{label:"two-hump camel",hexcode:"1F42B",tags:["animal","bactrian","camel","desert","hump","two","two-hump"],emoji:"🐫",text:"",type:1,order:3704,group:3,subgroup:34,version:.6,shortCodes:["camel"]},{label:"llama",hexcode:"1F999",tags:["alpaca","animal","guanaco","vicuña","wool"],emoji:"🦙",text:"",type:1,order:3705,group:3,subgroup:34,version:11,shortCodes:["llama"]},{label:"giraffe",hexcode:"1F992",tags:["animal","spots"],emoji:"🦒",text:"",type:1,order:3706,group:3,subgroup:34,version:5,shortCodes:["giraffe"]},{label:"elephant",hexcode:"1F418",tags:["animal"],emoji:"🐘",text:"",type:1,order:3707,group:3,subgroup:34,version:.6,shortCodes:["elephant"]},{label:"mammoth",hexcode:"1F9A3",tags:["animal","extinction","large","tusk","wooly"],emoji:"🦣",text:"",type:1,order:3708,group:3,subgroup:34,version:13,shortCodes:["mammoth"]},{label:"rhinoceros",hexcode:"1F98F",tags:["animal"],emoji:"🦏",text:"",type:1,order:3709,group:3,subgroup:34,version:3,shortCodes:["rhino","rhinoceros"]},{label:"hippopotamus",hexcode:"1F99B",tags:["animal","hippo"],emoji:"🦛",text:"",type:1,order:3710,group:3,subgroup:34,version:11,shortCodes:["hippo"]},{label:"mouse face",hexcode:"1F42D",tags:["animal","face","mouse"],emoji:"🐭",text:"",type:1,order:3711,group:3,subgroup:34,version:.6,shortCodes:["mouse_face"]},{label:"mouse",hexcode:"1F401",tags:["animal","animals"],emoji:"🐁",text:"",type:1,order:3712,group:3,subgroup:34,version:1,shortCodes:["mouse"]},{label:"rat",hexcode:"1F400",tags:["animal"],emoji:"🐀",text:"",type:1,order:3713,group:3,subgroup:34,version:1,shortCodes:["rat"]},{label:"hamster",hexcode:"1F439",tags:["animal","face","pet"],emoji:"🐹",text:"",type:1,order:3714,group:3,subgroup:34,version:.6,shortCodes:["hamster","hamster_face"]},{label:"rabbit face",hexcode:"1F430",tags:["animal","bunny","face","pet","rabbit"],emoji:"🐰",text:"",type:1,order:3715,group:3,subgroup:34,version:.6,shortCodes:["rabbit_face"]},{label:"rabbit",hexcode:"1F407",tags:["animal","bunny","pet"],emoji:"🐇",text:"",type:1,order:3716,group:3,subgroup:34,version:1,shortCodes:["rabbit"]},{label:"chipmunk",hexcode:"1F43F",tags:["animal","squirrel"],emoji:"🐿️",text:"🐿︎",type:0,order:3718,group:3,subgroup:34,version:.7,shortCodes:["chipmunk"]},{label:"beaver",hexcode:"1F9AB",tags:["animal","dam","teeth"],emoji:"🦫",text:"",type:1,order:3719,group:3,subgroup:34,version:13,shortCodes:["beaver"]},{label:"hedgehog",hexcode:"1F994",tags:["animal","spiny"],emoji:"🦔",text:"",type:1,order:3720,group:3,subgroup:34,version:5,shortCodes:["hedgehog"]},{label:"bat",hexcode:"1F987",tags:["animal","vampire"],emoji:"🦇",text:"",type:1,order:3721,group:3,subgroup:34,version:3,shortCodes:["bat"]},{label:"bear",hexcode:"1F43B",tags:["animal","face","grizzly","growl","honey"],emoji:"🐻",text:"",type:1,order:3722,group:3,subgroup:34,version:.6,shortCodes:["bear","bear_face"]},{label:"polar bear",hexcode:"1F43B-200D-2744-FE0F",tags:["animal","arctic","bear","polar","white"],emoji:"🐻❄️",text:"",type:1,order:3723,group:3,subgroup:34,version:13,shortCodes:["polar_bear","polar_bear_face"]},{label:"koala",hexcode:"1F428",tags:["animal","australia","bear","down","face","marsupial","under"],emoji:"🐨",text:"",type:1,order:3725,group:3,subgroup:34,version:.6,shortCodes:["koala","koala_face"]},{label:"panda",hexcode:"1F43C",tags:["animal","bamboo","face"],emoji:"🐼",text:"",type:1,order:3726,group:3,subgroup:34,version:.6,shortCodes:["panda","panda_face"]},{label:"sloth",hexcode:"1F9A5",tags:["lazy","slow"],emoji:"🦥",text:"",type:1,order:3727,group:3,subgroup:34,version:12,shortCodes:["sloth"]},{label:"otter",hexcode:"1F9A6",tags:["animal","fishing","playful"],emoji:"🦦",text:"",type:1,order:3728,group:3,subgroup:34,version:12,shortCodes:["otter"]},{label:"skunk",hexcode:"1F9A8",tags:["animal","stink"],emoji:"🦨",text:"",type:1,order:3729,group:3,subgroup:34,version:12,shortCodes:["skunk"]},{label:"kangaroo",hexcode:"1F998",tags:["animal","joey","jump","marsupial"],emoji:"🦘",text:"",type:1,order:3730,group:3,subgroup:34,version:11,shortCodes:["kangaroo"]},{label:"badger",hexcode:"1F9A1",tags:["animal","honey","pester"],emoji:"🦡",text:"",type:1,order:3731,group:3,subgroup:34,version:11,shortCodes:["badger"]},{label:"paw prints",hexcode:"1F43E",tags:["feet","paw","paws","print","prints"],emoji:"🐾",text:"",type:1,order:3732,group:3,subgroup:34,version:.6,shortCodes:["paw_prints"]},{label:"turkey",hexcode:"1F983",tags:["bird","gobble","thanksgiving"],emoji:"🦃",text:"",type:1,order:3733,group:3,subgroup:35,version:1,shortCodes:["turkey"]},{label:"chicken",hexcode:"1F414",tags:["animal","bird","ornithology"],emoji:"🐔",text:"",type:1,order:3734,group:3,subgroup:35,version:.6,shortCodes:["chicken","chicken_face"]},{label:"rooster",hexcode:"1F413",tags:["animal","bird","ornithology"],emoji:"🐓",text:"",type:1,order:3735,group:3,subgroup:35,version:1,shortCodes:["rooster"]},{label:"hatching chick",hexcode:"1F423",tags:["animal","baby","bird","chick","egg","hatching"],emoji:"🐣",text:"",type:1,order:3736,group:3,subgroup:35,version:.6,shortCodes:["hatching_chick"]},{label:"baby chick",hexcode:"1F424",tags:["animal","baby","bird","chick","ornithology"],emoji:"🐤",text:"",type:1,order:3737,group:3,subgroup:35,version:.6,shortCodes:["baby_chick"]},{label:"front-facing baby chick",hexcode:"1F425",tags:["animal","baby","bird","chick","front-facing","newborn","ornithology"],emoji:"🐥",text:"",type:1,order:3738,group:3,subgroup:35,version:.6,shortCodes:["hatched_chick"]},{label:"bird",hexcode:"1F426",tags:["animal","ornithology"],emoji:"🐦️",text:"🐦︎",type:1,order:3739,group:3,subgroup:35,version:.6,shortCodes:["bird","bird_face"]},{label:"penguin",hexcode:"1F427",tags:["animal","antarctica","bird","ornithology"],emoji:"🐧",text:"",type:1,order:3740,group:3,subgroup:35,version:.6,shortCodes:["penguin","penguin_face"]},{label:"dove",hexcode:"1F54A",tags:["bird","fly","ornithology","peace"],emoji:"🕊️",text:"🕊︎",type:0,order:3742,group:3,subgroup:35,version:.7,shortCodes:["dove"]},{label:"eagle",hexcode:"1F985",tags:["animal","bird","ornithology"],emoji:"🦅",text:"",type:1,order:3743,group:3,subgroup:35,version:3,shortCodes:["eagle"]},{label:"duck",hexcode:"1F986",tags:["animal","bird","ornithology"],emoji:"🦆",text:"",type:1,order:3744,group:3,subgroup:35,version:3,shortCodes:["duck"]},{label:"swan",hexcode:"1F9A2",tags:["animal","bird","cygnet","duckling","ornithology","ugly"],emoji:"🦢",text:"",type:1,order:3745,group:3,subgroup:35,version:11,shortCodes:["swan"]},{label:"owl",hexcode:"1F989",tags:["animal","bird","ornithology","wise"],emoji:"🦉",text:"",type:1,order:3746,group:3,subgroup:35,version:3,shortCodes:["owl"]},{label:"dodo",hexcode:"1F9A4",tags:["animal","bird","extinction","large","ornithology"],emoji:"🦤",text:"",type:1,order:3747,group:3,subgroup:35,version:13,shortCodes:["dodo"]},{label:"feather",hexcode:"1FAB6",tags:["bird","flight","light","plumage"],emoji:"🪶",text:"",type:1,order:3748,group:3,subgroup:35,version:13,shortCodes:["feather"]},{label:"flamingo",hexcode:"1F9A9",tags:["animal","bird","flamboyant","ornithology","tropical"],emoji:"🦩",text:"",type:1,order:3749,group:3,subgroup:35,version:12,shortCodes:["flamingo"]},{label:"peacock",hexcode:"1F99A",tags:["animal","bird","colorful","ornithology","ostentatious","peahen","pretty","proud"],emoji:"🦚",text:"",type:1,order:3750,group:3,subgroup:35,version:11,shortCodes:["peacock"]},{label:"parrot",hexcode:"1F99C",tags:["animal","bird","ornithology","pirate","talk"],emoji:"🦜",text:"",type:1,order:3751,group:3,subgroup:35,version:11,shortCodes:["parrot"]},{label:"wing",hexcode:"1FABD",tags:["angelic","ascend","aviation","bird","fly","flying","heavenly","mythology","soar"],emoji:"🪽",text:"",type:1,order:3752,group:3,subgroup:35,version:15,shortCodes:["wing"]},{label:"black bird",hexcode:"1F426-200D-2B1B",tags:["animal","beak","bird","black","caw","corvid","crow","ornithology","raven","rook"],emoji:"🐦⬛",text:"",type:1,order:3753,group:3,subgroup:35,version:15,shortCodes:["black_bird"]},{label:"goose",hexcode:"1FABF",tags:["animal","bird","duck","flock","fowl","gaggle","gander","geese","honk","ornithology","silly"],emoji:"🪿",text:"",type:1,order:3754,group:3,subgroup:35,version:15,shortCodes:["goose"]},{label:"phoenix",hexcode:"1F426-200D-1F525",tags:["ascend","ascension","emerge","fantasy","firebird","glory","immortal","rebirth","reincarnation","reinvent","renewal","revival","revive","rise","transform"],emoji:"🐦🔥",text:"",type:1,order:3755,group:3,subgroup:35,version:15.1,shortCodes:["phoenix"]},{label:"frog",hexcode:"1F438",tags:["animal","face"],emoji:"🐸",text:"",type:1,order:3756,group:3,subgroup:36,version:.6,shortCodes:["frog","frog_face"]},{label:"crocodile",hexcode:"1F40A",tags:["animal","zoo"],emoji:"🐊",text:"",type:1,order:3757,group:3,subgroup:37,version:1,shortCodes:["crocodile"]},{label:"turtle",hexcode:"1F422",tags:["animal","terrapin","tortoise"],emoji:"🐢",text:"",type:1,order:3758,group:3,subgroup:37,version:.6,shortCodes:["turtle"]},{label:"lizard",hexcode:"1F98E",tags:["animal","reptile"],emoji:"🦎",text:"",type:1,order:3759,group:3,subgroup:37,version:3,shortCodes:["lizard"]},{label:"snake",hexcode:"1F40D",tags:["animal","bearer","ophiuchus","serpent","zodiac"],emoji:"🐍",text:"",type:1,order:3760,group:3,subgroup:37,version:.6,shortCodes:["snake"]},{label:"dragon face",hexcode:"1F432",tags:["animal","dragon","face","fairy","fairytale","tale"],emoji:"🐲",text:"",type:1,order:3761,group:3,subgroup:37,version:.6,shortCodes:["dragon_face"]},{label:"dragon",hexcode:"1F409",tags:["animal","fairy","fairytale","knights","tale"],emoji:"🐉",text:"",type:1,order:3762,group:3,subgroup:37,version:1,shortCodes:["dragon"]},{label:"sauropod",hexcode:"1F995",tags:["brachiosaurus","brontosaurus","dinosaur","diplodocus"],emoji:"🦕",text:"",type:1,order:3763,group:3,subgroup:37,version:5,shortCodes:["sauropod"]},{label:"T-Rex",hexcode:"1F996",tags:["dinosaur","rex","t","t-rex","tyrannosaurus"],emoji:"🦖",text:"",type:1,order:3764,group:3,subgroup:37,version:5,shortCodes:["t-rex","trex"]},{label:"spouting whale",hexcode:"1F433",tags:["animal","beach","face","ocean","spouting","whale"],emoji:"🐳",text:"",type:1,order:3765,group:3,subgroup:38,version:.6,shortCodes:["spouting_whale"]},{label:"whale",hexcode:"1F40B",tags:["animal","beach","ocean"],emoji:"🐋",text:"",type:1,order:3766,group:3,subgroup:38,version:1,shortCodes:["whale"]},{label:"dolphin",hexcode:"1F42C",tags:["animal","beach","flipper","ocean"],emoji:"🐬",text:"",type:1,order:3767,group:3,subgroup:38,version:.6,shortCodes:["dolphin"]},{label:"seal",hexcode:"1F9AD",tags:["animal","lion","ocean","sea"],emoji:"🦭",text:"",type:1,order:3769,group:3,subgroup:38,version:13,shortCodes:["seal"]},{label:"fish",hexcode:"1F41F",tags:["animal","dinner","fishes","fishing","pisces","zodiac"],emoji:"🐟️",text:"🐟︎",type:1,order:3770,group:3,subgroup:38,version:.6,shortCodes:["fish"]},{label:"tropical fish",hexcode:"1F420",tags:["animal","fish","fishes","tropical"],emoji:"🐠",text:"",type:1,order:3771,group:3,subgroup:38,version:.6,shortCodes:["tropical_fish"]},{label:"blowfish",hexcode:"1F421",tags:["animal","fish"],emoji:"🐡",text:"",type:1,order:3772,group:3,subgroup:38,version:.6,shortCodes:["blowfish"]},{label:"shark",hexcode:"1F988",tags:["animal","fish"],emoji:"🦈",text:"",type:1,order:3773,group:3,subgroup:38,version:3,shortCodes:["shark"]},{label:"octopus",hexcode:"1F419",tags:["animal","creature","ocean"],emoji:"🐙",text:"",type:1,order:3774,group:3,subgroup:38,version:.6,shortCodes:["octopus"]},{label:"spiral shell",hexcode:"1F41A",tags:["animal","beach","conch","sea","shell","spiral"],emoji:"🐚",text:"",type:1,order:3775,group:3,subgroup:38,version:.6,shortCodes:["shell"]},{label:"coral",hexcode:"1FAB8",tags:["change","climate","ocean","reef","sea"],emoji:"🪸",text:"",type:1,order:3776,group:3,subgroup:38,version:14,shortCodes:["coral"]},{label:"jellyfish",hexcode:"1FABC",tags:["animal","aquarium","burn","invertebrate","jelly","life","marine","ocean","ouch","plankton","sea","sting","stinger","tentacles"],emoji:"🪼",text:"",type:1,order:3777,group:3,subgroup:38,version:15,shortCodes:["jellyfish"]},{label:"crab",hexcode:"1F980",tags:["cancer","zodiac"],emoji:"🦀",text:"",type:1,order:3778,group:3,subgroup:38,version:1,shortCodes:["crab"]},{label:"lobster",hexcode:"1F99E",tags:["animal","bisque","claws","seafood"],emoji:"🦞",text:"",type:1,order:3779,group:3,subgroup:38,version:11,shortCodes:["lobster"]},{label:"shrimp",hexcode:"1F990",tags:["food","shellfish","small"],emoji:"🦐",text:"",type:1,order:3780,group:3,subgroup:38,version:3,shortCodes:["shrimp"]},{label:"squid",hexcode:"1F991",tags:["animal","food","mollusk"],emoji:"🦑",text:"",type:1,order:3781,group:3,subgroup:38,version:3,shortCodes:["squid"]},{label:"oyster",hexcode:"1F9AA",tags:["diving","pearl"],emoji:"🦪",text:"",type:1,order:3782,group:3,subgroup:38,version:12,shortCodes:["oyster"]},{label:"snail",hexcode:"1F40C",tags:["animal","escargot","garden","nature","slug"],emoji:"🐌",text:"",type:1,order:3783,group:3,subgroup:39,version:.6,shortCodes:["snail"]},{label:"butterfly",hexcode:"1F98B",tags:["insect","pretty"],emoji:"🦋",text:"",type:1,order:3784,group:3,subgroup:39,version:3,shortCodes:["butterfly"]},{label:"bug",hexcode:"1F41B",tags:["animal","garden","insect"],emoji:"🐛",text:"",type:1,order:3785,group:3,subgroup:39,version:.6,shortCodes:["bug"]},{label:"ant",hexcode:"1F41C",tags:["animal","garden","insect"],emoji:"🐜",text:"",type:1,order:3786,group:3,subgroup:39,version:.6,shortCodes:["ant"]},{label:"honeybee",hexcode:"1F41D",tags:["animal","bee","bumblebee","honey","insect","nature","spring"],emoji:"🐝",text:"",type:1,order:3787,group:3,subgroup:39,version:.6,shortCodes:["bee"]},{label:"beetle",hexcode:"1FAB2",tags:["animal","bug","insect"],emoji:"🪲",text:"",type:1,order:3788,group:3,subgroup:39,version:13,shortCodes:["beetle"]},{label:"lady beetle",hexcode:"1F41E",tags:["animal","beetle","garden","insect","lady","ladybird","ladybug","nature"],emoji:"🐞",text:"",type:1,order:3789,group:3,subgroup:39,version:.6,shortCodes:["lady_beetle"]},{label:"cricket",hexcode:"1F997",tags:["animal","bug","grasshopper","insect","orthoptera"],emoji:"🦗",text:"",type:1,order:3790,group:3,subgroup:39,version:5,shortCodes:["cricket"]},{label:"cockroach",hexcode:"1FAB3",tags:["animal","insect","pest","roach"],emoji:"🪳",text:"",type:1,order:3791,group:3,subgroup:39,version:13,shortCodes:["cockroach"]},{label:"spider",hexcode:"1F577",tags:["animal","insect"],emoji:"🕷️",text:"🕷︎",type:0,order:3793,group:3,subgroup:39,version:.7,shortCodes:["spider"]},{label:"spider web",hexcode:"1F578",tags:["spider","web"],emoji:"🕸️",text:"🕸︎",type:0,order:3795,group:3,subgroup:39,version:.7,shortCodes:["spider_web"]},{label:"scorpion",hexcode:"1F982",tags:["scorpio","scorpius","zodiac"],emoji:"🦂",text:"",type:1,order:3796,group:3,subgroup:39,version:1,shortCodes:["scorpion"]},{label:"mosquito",hexcode:"1F99F",tags:["bite","disease","fever","insect","malaria","pest","virus"],emoji:"🦟",text:"",type:1,order:3797,group:3,subgroup:39,version:11,shortCodes:["mosquito"]},{label:"fly",hexcode:"1FAB0",tags:["animal","disease","insect","maggot","pest","rotting"],emoji:"🪰",text:"",type:1,order:3798,group:3,subgroup:39,version:13,shortCodes:["fly"]},{label:"worm",hexcode:"1FAB1",tags:["animal","annelid","earthworm","parasite"],emoji:"🪱",text:"",type:1,order:3799,group:3,subgroup:39,version:13,shortCodes:["worm"]},{label:"microbe",hexcode:"1F9A0",tags:["amoeba","bacteria","science","virus"],emoji:"🦠",text:"",type:1,order:3800,group:3,subgroup:39,version:11,shortCodes:["microbe"]},{label:"bouquet",hexcode:"1F490",tags:["anniversary","birthday","date","flower","love","plant","romance"],emoji:"💐",text:"",type:1,order:3801,group:3,subgroup:40,version:.6,shortCodes:["bouquet"]},{label:"cherry blossom",hexcode:"1F338",tags:["blossom","cherry","flower","plant","spring","springtime"],emoji:"🌸",text:"",type:1,order:3802,group:3,subgroup:40,version:.6,shortCodes:["cherry_blossom"]},{label:"white flower",hexcode:"1F4AE",tags:["flower","white"],emoji:"💮",text:"",type:1,order:3803,group:3,subgroup:40,version:.6,shortCodes:["white_flower"]},{label:"lotus",hexcode:"1FAB7",tags:["beauty","buddhism","calm","flower","hinduism","peace","purity","serenity"],emoji:"🪷",text:"",type:1,order:3804,group:3,subgroup:40,version:14,shortCodes:["lotus"]},{label:"rosette",hexcode:"1F3F5",tags:["plant"],emoji:"🏵️",text:"🏵︎",type:0,order:3806,group:3,subgroup:40,version:.7,shortCodes:["rosette"]},{label:"rose",hexcode:"1F339",tags:["beauty","elegant","flower","love","plant","red","valentine"],emoji:"🌹",text:"",type:1,order:3807,group:3,subgroup:40,version:.6,shortCodes:["rose"]},{label:"wilted flower",hexcode:"1F940",tags:["dying","flower","wilted"],emoji:"🥀",text:"",type:1,order:3808,group:3,subgroup:40,version:3,shortCodes:["wilted_flower"]},{label:"hibiscus",hexcode:"1F33A",tags:["flower","plant"],emoji:"🌺",text:"",type:1,order:3809,group:3,subgroup:40,version:.6,shortCodes:["hibiscus"]},{label:"sunflower",hexcode:"1F33B",tags:["flower","outdoors","plant","sun"],emoji:"🌻",text:"",type:1,order:3810,group:3,subgroup:40,version:.6,shortCodes:["sunflower"]},{label:"blossom",hexcode:"1F33C",tags:["buttercup","dandelion","flower","plant"],emoji:"🌼",text:"",type:1,order:3811,group:3,subgroup:40,version:.6,shortCodes:["blossom"]},{label:"tulip",hexcode:"1F337",tags:["blossom","flower","growth","plant"],emoji:"🌷",text:"",type:1,order:3812,group:3,subgroup:40,version:.6,shortCodes:["tulip"]},{label:"hyacinth",hexcode:"1FABB",tags:["bloom","bluebonnet","flower","indigo","lavender","lilac","lupine","plant","purple","shrub","snapdragon","spring","violet"],emoji:"🪻",text:"",type:1,order:3813,group:3,subgroup:40,version:15,shortCodes:["hyacinth"]},{label:"seedling",hexcode:"1F331",tags:["plant","sapling","sprout","young"],emoji:"🌱",text:"",type:1,order:3814,group:3,subgroup:41,version:.6,shortCodes:["seedling"]},{label:"potted plant",hexcode:"1FAB4",tags:["decor","grow","house","nurturing","plant","pot","potted"],emoji:"🪴",text:"",type:1,order:3815,group:3,subgroup:41,version:13,shortCodes:["potted_plant"]},{label:"evergreen tree",hexcode:"1F332",tags:["christmas","evergreen","forest","pine","tree"],emoji:"🌲",text:"",type:1,order:3816,group:3,subgroup:41,version:1,shortCodes:["evergreen_tree"]},{label:"deciduous tree",hexcode:"1F333",tags:["deciduous","forest","green","habitat","shedding","tree"],emoji:"🌳",text:"",type:1,order:3817,group:3,subgroup:41,version:1,shortCodes:["deciduous_tree"]},{label:"palm tree",hexcode:"1F334",tags:["beach","palm","plant","tree","tropical"],emoji:"🌴",text:"",type:1,order:3818,group:3,subgroup:41,version:.6,shortCodes:["palm_tree"]},{label:"cactus",hexcode:"1F335",tags:["desert","drought","nature","plant"],emoji:"🌵",text:"",type:1,order:3819,group:3,subgroup:41,version:.6,shortCodes:["cactus"]},{label:"sheaf of rice",hexcode:"1F33E",tags:["ear","grain","grains","plant","rice","sheaf"],emoji:"🌾",text:"",type:1,order:3820,group:3,subgroup:41,version:.6,shortCodes:["ear_of_rice","sheaf_of_rice"]},{label:"herb",hexcode:"1F33F",tags:["leaf","plant"],emoji:"🌿",text:"",type:1,order:3821,group:3,subgroup:41,version:.6,shortCodes:["herb"]},{label:"shamrock",hexcode:"2618",tags:["irish","plant"],emoji:"☘️",text:"☘︎",type:0,order:3823,group:3,subgroup:41,version:1,shortCodes:["shamrock"]},{label:"four leaf clover",hexcode:"1F340",tags:["4","clover","four","four-leaf","irish","leaf","lucky","plant"],emoji:"🍀",text:"",type:1,order:3824,group:3,subgroup:41,version:.6,shortCodes:["four_leaf_clover"]},{label:"maple leaf",hexcode:"1F341",tags:["falling","leaf","maple"],emoji:"🍁",text:"",type:1,order:3825,group:3,subgroup:41,version:.6,shortCodes:["maple_leaf"]},{label:"fallen leaf",hexcode:"1F342",tags:["autumn","fall","fallen","falling","leaf"],emoji:"🍂",text:"",type:1,order:3826,group:3,subgroup:41,version:.6,shortCodes:["fallen_leaf"]},{label:"leaf fluttering in wind",hexcode:"1F343",tags:["blow","flutter","fluttering","leaf","wind"],emoji:"🍃",text:"",type:1,order:3827,group:3,subgroup:41,version:.6,shortCodes:["leaves"]},{label:"empty nest",hexcode:"1FAB9",tags:["branch","empty","home","nest","nesting"],emoji:"🪹",text:"",type:1,order:3828,group:3,subgroup:41,version:14,shortCodes:["empty_nest","nest"]},{label:"nest with eggs",hexcode:"1FABA",tags:["bird","branch","egg","eggs","nest","nesting"],emoji:"🪺",text:"",type:1,order:3829,group:3,subgroup:41,version:14,shortCodes:["nest_with_eggs"]},{label:"mushroom",hexcode:"1F344",tags:["fungus","toadstool"],emoji:"🍄",text:"",type:1,order:3830,group:3,subgroup:41,version:.6,shortCodes:["mushroom"]},{label:"leafless tree",hexcode:"1FABE",tags:["bare","barren","branches","dead","drought","leafless","tree","trunk","winter","wood"],emoji:"",text:"",type:1,order:3831,group:3,subgroup:41,version:16,shortCodes:["leafless_tree"]},{label:"grapes",hexcode:"1F347",tags:["dionysus","fruit","grape"],emoji:"🍇",text:"",type:1,order:3832,group:4,subgroup:42,version:.6,shortCodes:["grapes"]},{label:"melon",hexcode:"1F348",tags:["cantaloupe","fruit"],emoji:"🍈",text:"",type:1,order:3833,group:4,subgroup:42,version:.6,shortCodes:["melon"]},{label:"watermelon",hexcode:"1F349",tags:["fruit"],emoji:"🍉",text:"",type:1,order:3834,group:4,subgroup:42,version:.6,shortCodes:["watermelon"]},{label:"tangerine",hexcode:"1F34A",tags:["c","citrus","fruit","nectarine","orange","vitamin"],emoji:"🍊",text:"",type:1,order:3835,group:4,subgroup:42,version:.6,shortCodes:["orange","tangerine"]},{label:"lemon",hexcode:"1F34B",tags:["citrus","fruit","sour"],emoji:"🍋",text:"",type:1,order:3836,group:4,subgroup:42,version:1,shortCodes:["lemon"]},{label:"lime",hexcode:"1F34B-200D-1F7E9",tags:["acidity","citrus","cocktail","fruit","garnish","key","margarita","mojito","refreshing","salsa","sour","tangy","tequila","tropical","zest"],emoji:"🍋🟩",text:"",type:1,order:3837,group:4,subgroup:42,version:15.1,shortCodes:["lime"]},{label:"banana",hexcode:"1F34C",tags:["fruit","potassium"],emoji:"🍌",text:"",type:1,order:3838,group:4,subgroup:42,version:.6,shortCodes:["banana"]},{label:"pineapple",hexcode:"1F34D",tags:["colada","fruit","pina","tropical"],emoji:"🍍",text:"",type:1,order:3839,group:4,subgroup:42,version:.6,shortCodes:["pineapple"]},{label:"mango",hexcode:"1F96D",tags:["food","fruit","tropical"],emoji:"🥭",text:"",type:1,order:3840,group:4,subgroup:42,version:11,shortCodes:["mango"]},{label:"red apple",hexcode:"1F34E",tags:["apple","diet","food","fruit","health","red","ripe"],emoji:"🍎",text:"",type:1,order:3841,group:4,subgroup:42,version:.6,shortCodes:["apple","red_apple"]},{label:"green apple",hexcode:"1F34F",tags:["apple","fruit","green"],emoji:"🍏",text:"",type:1,order:3842,group:4,subgroup:42,version:.6,shortCodes:["green_apple"]},{label:"pear",hexcode:"1F350",tags:["fruit"],emoji:"🍐",text:"",type:1,order:3843,group:4,subgroup:42,version:1,shortCodes:["pear"]},{label:"peach",hexcode:"1F351",tags:["fruit"],emoji:"🍑",text:"",type:1,order:3844,group:4,subgroup:42,version:.6,shortCodes:["peach"]},{label:"cherries",hexcode:"1F352",tags:["berries","cherry","fruit","red"],emoji:"🍒",text:"",type:1,order:3845,group:4,subgroup:42,version:.6,shortCodes:["cherries"]},{label:"strawberry",hexcode:"1F353",tags:["berry","fruit"],emoji:"🍓",text:"",type:1,order:3846,group:4,subgroup:42,version:.6,shortCodes:["strawberry"]},{label:"blueberries",hexcode:"1FAD0",tags:["berries","berry","bilberry","blue","blueberry","food","fruit"],emoji:"🫐",text:"",type:1,order:3847,group:4,subgroup:42,version:13,shortCodes:["blueberries"]},{label:"kiwi fruit",hexcode:"1F95D",tags:["food","fruit","kiwi"],emoji:"🥝",text:"",type:1,order:3848,group:4,subgroup:42,version:3,shortCodes:["kiwi"]},{label:"tomato",hexcode:"1F345",tags:["food","fruit","vegetable"],emoji:"🍅",text:"",type:1,order:3849,group:4,subgroup:42,version:.6,shortCodes:["tomato"]},{label:"olive",hexcode:"1FAD2",tags:["food"],emoji:"🫒",text:"",type:1,order:3850,group:4,subgroup:42,version:13,shortCodes:["olive"]},{label:"coconut",hexcode:"1F965",tags:["colada","palm","piña"],emoji:"🥥",text:"",type:1,order:3851,group:4,subgroup:42,version:5,shortCodes:["coconut"]},{label:"avocado",hexcode:"1F951",tags:["food","fruit"],emoji:"🥑",text:"",type:1,order:3852,group:4,subgroup:43,version:3,shortCodes:["avocado"]},{label:"eggplant",hexcode:"1F346",tags:["aubergine","vegetable"],emoji:"🍆",text:"",type:1,order:3853,group:4,subgroup:43,version:.6,shortCodes:["eggplant"]},{label:"potato",hexcode:"1F954",tags:["food","vegetable"],emoji:"🥔",text:"",type:1,order:3854,group:4,subgroup:43,version:3,shortCodes:["potato"]},{label:"carrot",hexcode:"1F955",tags:["food","vegetable"],emoji:"🥕",text:"",type:1,order:3855,group:4,subgroup:43,version:3,shortCodes:["carrot"]},{label:"ear of corn",hexcode:"1F33D",tags:["corn","crops","ear","farm","maize","maze"],emoji:"🌽",text:"",type:1,order:3856,group:4,subgroup:43,version:.6,shortCodes:["corn","ear_of_corn"]},{label:"hot pepper",hexcode:"1F336",tags:["hot","pepper"],emoji:"🌶️",text:"🌶︎",type:0,order:3858,group:4,subgroup:43,version:.7,shortCodes:["hot_pepper"]},{label:"bell pepper",hexcode:"1FAD1",tags:["bell","capsicum","food","pepper","vegetable"],emoji:"🫑",text:"",type:1,order:3859,group:4,subgroup:43,version:13,shortCodes:["bell_pepper"]},{label:"cucumber",hexcode:"1F952",tags:["food","pickle","vegetable"],emoji:"🥒",text:"",type:1,order:3860,group:4,subgroup:43,version:3,shortCodes:["cucumber"]},{label:"leafy green",hexcode:"1F96C",tags:["bok","burgers","cabbage","choy","green","kale","leafy","lettuce","salad"],emoji:"🥬",text:"",type:1,order:3861,group:4,subgroup:43,version:11,shortCodes:["leafy_green"]},{label:"broccoli",hexcode:"1F966",tags:["cabbage","wild"],emoji:"🥦",text:"",type:1,order:3862,group:4,subgroup:43,version:5,shortCodes:["broccoli"]},{label:"garlic",hexcode:"1F9C4",tags:["flavoring"],emoji:"🧄",text:"",type:1,order:3863,group:4,subgroup:43,version:12,shortCodes:["garlic"]},{label:"onion",hexcode:"1F9C5",tags:["flavoring"],emoji:"🧅",text:"",type:1,order:3864,group:4,subgroup:43,version:12,shortCodes:["onion"]},{label:"peanuts",hexcode:"1F95C",tags:["food","nut","peanut","vegetable"],emoji:"🥜",text:"",type:1,order:3865,group:4,subgroup:43,version:3,shortCodes:["peanuts"]},{label:"beans",hexcode:"1FAD8",tags:["food","kidney","legume","small"],emoji:"🫘",text:"",type:1,order:3866,group:4,subgroup:43,version:14,shortCodes:["beans"]},{label:"chestnut",hexcode:"1F330",tags:["almond","plant"],emoji:"🌰",text:"",type:1,order:3867,group:4,subgroup:43,version:.6,shortCodes:["chestnut"]},{label:"ginger root",hexcode:"1FADA",tags:["beer","ginger","health","herb","natural","root","spice"],emoji:"🫚",text:"",type:1,order:3868,group:4,subgroup:43,version:15,shortCodes:["ginger"]},{label:"pea pod",hexcode:"1FADB",tags:["beans","beanstalk","edamame","legume","pea","pod","soybean","vegetable","veggie"],emoji:"🫛",text:"",type:1,order:3869,group:4,subgroup:43,version:15,shortCodes:["pea"]},{label:"brown mushroom",hexcode:"1F344-200D-1F7EB",tags:["food","fungi","fungus","mushroom","nature","pizza","portobello","shiitake","shroom","spore","sprout","toppings","truffle","vegetable","vegetarian","veggie"],emoji:"🍄🟫",text:"",type:1,order:3870,group:4,subgroup:43,version:15.1,shortCodes:["brown_mushroom"]},{label:"root vegetable",hexcode:"1FADC",tags:["beet","food","garden","radish","root","salad","turnip","vegetable","vegetarian"],emoji:"",text:"",type:1,order:3871,group:4,subgroup:43,version:16,shortCodes:["root_vegetable"]},{label:"bread",hexcode:"1F35E",tags:["carbs","food","grain","loaf","restaurant","toast","wheat"],emoji:"🍞",text:"",type:1,order:3872,group:4,subgroup:44,version:.6,shortCodes:["bread"]},{label:"croissant",hexcode:"1F950",tags:["bread","breakfast","crescent","food","french","roll"],emoji:"🥐",text:"",type:1,order:3873,group:4,subgroup:44,version:3,shortCodes:["croissant"]},{label:"baguette bread",hexcode:"1F956",tags:["baguette","bread","food","french"],emoji:"🥖",text:"",type:1,order:3874,group:4,subgroup:44,version:3,shortCodes:["baguette_bread"]},{label:"flatbread",hexcode:"1FAD3",tags:["arepa","bread","food","gordita","lavash","naan","pita"],emoji:"🫓",text:"",type:1,order:3875,group:4,subgroup:44,version:13,shortCodes:["flatbread"]},{label:"pretzel",hexcode:"1F968",tags:["convoluted","twisted"],emoji:"🥨",text:"",type:1,order:3876,group:4,subgroup:44,version:5,shortCodes:["pretzel"]},{label:"bagel",hexcode:"1F96F",tags:["bakery","bread","breakfast","schmear"],emoji:"🥯",text:"",type:1,order:3877,group:4,subgroup:44,version:11,shortCodes:["bagel"]},{label:"pancakes",hexcode:"1F95E",tags:["breakfast","crêpe","food","hotcake","pancake"],emoji:"🥞",text:"",type:1,order:3878,group:4,subgroup:44,version:3,shortCodes:["pancakes"]},{label:"waffle",hexcode:"1F9C7",tags:["breakfast","indecisive","iron"],emoji:"🧇",text:"",type:1,order:3879,group:4,subgroup:44,version:12,shortCodes:["waffle"]},{label:"cheese wedge",hexcode:"1F9C0",tags:["cheese","wedge"],emoji:"🧀",text:"",type:1,order:3880,group:4,subgroup:44,version:1,shortCodes:["cheese"]},{label:"meat on bone",hexcode:"1F356",tags:["bone","meat"],emoji:"🍖",text:"",type:1,order:3881,group:4,subgroup:44,version:.6,shortCodes:["meat_on_bone"]},{label:"poultry leg",hexcode:"1F357",tags:["bone","chicken","drumstick","hungry","leg","poultry","turkey"],emoji:"🍗",text:"",type:1,order:3882,group:4,subgroup:44,version:.6,shortCodes:["poultry_leg"]},{label:"cut of meat",hexcode:"1F969",tags:["chop","cut","lambchop","meat","porkchop","red","steak"],emoji:"🥩",text:"",type:1,order:3883,group:4,subgroup:44,version:5,shortCodes:["cut_of_meat"]},{label:"bacon",hexcode:"1F953",tags:["breakfast","food","meat"],emoji:"🥓",text:"",type:1,order:3884,group:4,subgroup:44,version:3,shortCodes:["bacon"]},{label:"hamburger",hexcode:"1F354",tags:["burger","eat","fast","food","hungry"],emoji:"🍔",text:"",type:1,order:3885,group:4,subgroup:44,version:.6,shortCodes:["hamburger"]},{label:"french fries",hexcode:"1F35F",tags:["fast","food","french","fries"],emoji:"🍟",text:"",type:1,order:3886,group:4,subgroup:44,version:.6,shortCodes:["french_fries","fries"]},{label:"pizza",hexcode:"1F355",tags:["cheese","food","hungry","pepperoni","slice"],emoji:"🍕",text:"",type:1,order:3887,group:4,subgroup:44,version:.6,shortCodes:["pizza"]},{label:"hot dog",hexcode:"1F32D",tags:["dog","frankfurter","hot","hotdog","sausage"],emoji:"🌭",text:"",type:1,order:3888,group:4,subgroup:44,version:1,shortCodes:["hotdog"]},{label:"sandwich",hexcode:"1F96A",tags:["bread"],emoji:"🥪",text:"",type:1,order:3889,group:4,subgroup:44,version:5,shortCodes:["sandwich"]},{label:"taco",hexcode:"1F32E",tags:["mexican"],emoji:"🌮",text:"",type:1,order:3890,group:4,subgroup:44,version:1,shortCodes:["taco"]},{label:"burrito",hexcode:"1F32F",tags:["mexican","wrap"],emoji:"🌯",text:"",type:1,order:3891,group:4,subgroup:44,version:1,shortCodes:["burrito"]},{label:"tamale",hexcode:"1FAD4",tags:["food","mexican","pamonha","wrapped"],emoji:"🫔",text:"",type:1,order:3892,group:4,subgroup:44,version:13,shortCodes:["tamale"]},{label:"stuffed flatbread",hexcode:"1F959",tags:["falafel","flatbread","food","gyro","kebab","stuffed"],emoji:"🥙",text:"",type:1,order:3893,group:4,subgroup:44,version:3,shortCodes:["stuffed_flatbread"]},{label:"falafel",hexcode:"1F9C6",tags:["chickpea","meatball"],emoji:"🧆",text:"",type:1,order:3894,group:4,subgroup:44,version:12,shortCodes:["falafel"]},{label:"egg",hexcode:"1F95A",tags:["breakfast","food"],emoji:"🥚",text:"",type:1,order:3895,group:4,subgroup:44,version:3,shortCodes:["egg"]},{label:"cooking",hexcode:"1F373",tags:["breakfast","easy","egg","fry","frying","over","pan","restaurant","side","sunny","up"],emoji:"🍳",text:"",type:1,order:3896,group:4,subgroup:44,version:.6,shortCodes:["cooking","fried_egg"]},{label:"shallow pan of food",hexcode:"1F958",tags:["casserole","food","paella","pan","shallow"],emoji:"🥘",text:"",type:1,order:3897,group:4,subgroup:44,version:3,shortCodes:["shallow_pan_of_food"]},{label:"pot of food",hexcode:"1F372",tags:["food","pot","soup","stew"],emoji:"🍲",text:"",type:1,order:3898,group:4,subgroup:44,version:.6,shortCodes:["pot_of_food","stew"]},{label:"fondue",hexcode:"1FAD5",tags:["cheese","chocolate","food","melted","pot","ski"],emoji:"🫕",text:"",type:1,order:3899,group:4,subgroup:44,version:13,shortCodes:["fondue"]},{label:"bowl with spoon",hexcode:"1F963",tags:["bowl","breakfast","cereal","congee","oatmeal","porridge","spoon"],emoji:"🥣",text:"",type:1,order:3900,group:4,subgroup:44,version:5,shortCodes:["bowl_with_spoon"]},{label:"green salad",hexcode:"1F957",tags:["food","green","salad"],emoji:"🥗",text:"",type:1,order:3901,group:4,subgroup:44,version:3,shortCodes:["green_salad","salad"]},{label:"popcorn",hexcode:"1F37F",tags:["corn","movie","pop"],emoji:"🍿",text:"",type:1,order:3902,group:4,subgroup:44,version:1,shortCodes:["popcorn"]},{label:"butter",hexcode:"1F9C8",tags:["dairy"],emoji:"🧈",text:"",type:1,order:3903,group:4,subgroup:44,version:12,shortCodes:["butter"]},{label:"salt",hexcode:"1F9C2",tags:["condiment","flavor","mad","salty","shaker","taste","upset"],emoji:"🧂",text:"",type:1,order:3904,group:4,subgroup:44,version:11,shortCodes:["salt"]},{label:"canned food",hexcode:"1F96B",tags:["can","canned","food"],emoji:"🥫",text:"",type:1,order:3905,group:4,subgroup:44,version:5,shortCodes:["canned_food"]},{label:"bento box",hexcode:"1F371",tags:["bento","box","food"],emoji:"🍱",text:"",type:1,order:3906,group:4,subgroup:45,version:.6,shortCodes:["bento","bento_box"]},{label:"rice cracker",hexcode:"1F358",tags:["cracker","food","rice"],emoji:"🍘",text:"",type:1,order:3907,group:4,subgroup:45,version:.6,shortCodes:["rice_cracker"]},{label:"rice ball",hexcode:"1F359",tags:["ball","food","japanese","rice"],emoji:"🍙",text:"",type:1,order:3908,group:4,subgroup:45,version:.6,shortCodes:["rice_ball"]},{label:"cooked rice",hexcode:"1F35A",tags:["cooked","food","rice"],emoji:"🍚",text:"",type:1,order:3909,group:4,subgroup:45,version:.6,shortCodes:["cooked_rice","rice"]},{label:"curry rice",hexcode:"1F35B",tags:["curry","food","rice"],emoji:"🍛",text:"",type:1,order:3910,group:4,subgroup:45,version:.6,shortCodes:["curry","curry_rice"]},{label:"steaming bowl",hexcode:"1F35C",tags:["bowl","chopsticks","food","noodle","pho","ramen","soup","steaming"],emoji:"🍜",text:"",type:1,order:3911,group:4,subgroup:45,version:.6,shortCodes:["ramen","steaming_bowl"]},{label:"spaghetti",hexcode:"1F35D",tags:["food","meatballs","pasta","restaurant"],emoji:"🍝",text:"",type:1,order:3912,group:4,subgroup:45,version:.6,shortCodes:["spaghetti"]},{label:"roasted sweet potato",hexcode:"1F360",tags:["food","potato","roasted","sweet"],emoji:"🍠",text:"",type:1,order:3913,group:4,subgroup:45,version:.6,shortCodes:["sweet_potato"]},{label:"oden",hexcode:"1F362",tags:["food","kebab","restaurant","seafood","skewer","stick"],emoji:"🍢",text:"",type:1,order:3914,group:4,subgroup:45,version:.6,shortCodes:["oden"]},{label:"sushi",hexcode:"1F363",tags:["food"],emoji:"🍣",text:"",type:1,order:3915,group:4,subgroup:45,version:.6,shortCodes:["sushi"]},{label:"fried shrimp",hexcode:"1F364",tags:["fried","prawn","shrimp","tempura"],emoji:"🍤",text:"",type:1,order:3916,group:4,subgroup:45,version:.6,shortCodes:["fried_shrimp"]},{label:"fish cake with swirl",hexcode:"1F365",tags:["cake","fish","food","pastry","restaurant","swirl"],emoji:"🍥",text:"",type:1,order:3917,group:4,subgroup:45,version:.6,shortCodes:["fish_cake"]},{label:"moon cake",hexcode:"1F96E",tags:["autumn","cake","festival","moon","yuèbǐng"],emoji:"🥮",text:"",type:1,order:3918,group:4,subgroup:45,version:11,shortCodes:["moon_cake"]},{label:"dango",hexcode:"1F361",tags:["dessert","japanese","skewer","stick","sweet"],emoji:"🍡",text:"",type:1,order:3919,group:4,subgroup:45,version:.6,shortCodes:["dango"]},{label:"dumpling",hexcode:"1F95F",tags:["empanada","gyōza","jiaozi","pierogi","potsticker"],emoji:"🥟",text:"",type:1,order:3920,group:4,subgroup:45,version:5,shortCodes:["dumpling"]},{label:"fortune cookie",hexcode:"1F960",tags:["cookie","fortune","prophecy"],emoji:"🥠",text:"",type:1,order:3921,group:4,subgroup:45,version:5,shortCodes:["fortune_cookie"]},{label:"takeout box",hexcode:"1F961",tags:["box","chopsticks","delivery","food","oyster","pail","takeout"],emoji:"🥡",text:"",type:1,order:3922,group:4,subgroup:45,version:5,shortCodes:["takeout_box"]},{label:"soft ice cream",hexcode:"1F366",tags:["cream","dessert","food","ice","icecream","restaurant","serve","soft","sweet"],emoji:"🍦",text:"",type:1,order:3923,group:4,subgroup:46,version:.6,shortCodes:["icecream","soft_serve"]},{label:"shaved ice",hexcode:"1F367",tags:["dessert","ice","restaurant","shaved","sweet"],emoji:"🍧",text:"",type:1,order:3924,group:4,subgroup:46,version:.6,shortCodes:["shaved_ice"]},{label:"ice cream",hexcode:"1F368",tags:["cream","dessert","food","ice","restaurant","sweet"],emoji:"🍨",text:"",type:1,order:3925,group:4,subgroup:46,version:.6,shortCodes:["ice_cream"]},{label:"doughnut",hexcode:"1F369",tags:["breakfast","dessert","donut","food","sweet"],emoji:"🍩",text:"",type:1,order:3926,group:4,subgroup:46,version:.6,shortCodes:["doughnut"]},{label:"cookie",hexcode:"1F36A",tags:["chip","chocolate","dessert","sweet"],emoji:"🍪",text:"",type:1,order:3927,group:4,subgroup:46,version:.6,shortCodes:["cookie"]},{label:"birthday cake",hexcode:"1F382",tags:["bday","birthday","cake","celebration","dessert","happy","pastry","sweet"],emoji:"🎂",text:"",type:1,order:3928,group:4,subgroup:46,version:.6,shortCodes:["birthday","birthday_cake"]},{label:"shortcake",hexcode:"1F370",tags:["cake","dessert","pastry","slice","sweet"],emoji:"🍰",text:"",type:1,order:3929,group:4,subgroup:46,version:.6,shortCodes:["cake","shortcake"]},{label:"cupcake",hexcode:"1F9C1",tags:["bakery","dessert","sprinkles","sugar","sweet","treat"],emoji:"🧁",text:"",type:1,order:3930,group:4,subgroup:46,version:11,shortCodes:["cupcake"]},{label:"pie",hexcode:"1F967",tags:["apple","filling","fruit","meat","pastry","pumpkin","slice"],emoji:"🥧",text:"",type:1,order:3931,group:4,subgroup:46,version:5,shortCodes:["pie"]},{label:"chocolate bar",hexcode:"1F36B",tags:["bar","candy","chocolate","dessert","halloween","sweet","tooth"],emoji:"🍫",text:"",type:1,order:3932,group:4,subgroup:46,version:.6,shortCodes:["chocolate_bar"]},{label:"candy",hexcode:"1F36C",tags:["cavities","dessert","halloween","restaurant","sweet","tooth","wrapper"],emoji:"🍬",text:"",type:1,order:3933,group:4,subgroup:46,version:.6,shortCodes:["candy"]},{label:"lollipop",hexcode:"1F36D",tags:["candy","dessert","food","restaurant","sweet"],emoji:"🍭",text:"",type:1,order:3934,group:4,subgroup:46,version:.6,shortCodes:["lollipop"]},{label:"custard",hexcode:"1F36E",tags:["dessert","pudding","sweet"],emoji:"🍮",text:"",type:1,order:3935,group:4,subgroup:46,version:.6,shortCodes:["custard"]},{label:"honey pot",hexcode:"1F36F",tags:["barrel","bear","food","honey","honeypot","jar","pot","sweet"],emoji:"🍯",text:"",type:1,order:3936,group:4,subgroup:46,version:.6,shortCodes:["honey_pot"]},{label:"baby bottle",hexcode:"1F37C",tags:["babies","baby","birth","born","bottle","drink","infant","milk","newborn"],emoji:"🍼",text:"",type:1,order:3937,group:4,subgroup:47,version:1,shortCodes:["baby_bottle"]},{label:"glass of milk",hexcode:"1F95B",tags:["drink","glass","milk"],emoji:"🥛",text:"",type:1,order:3938,group:4,subgroup:47,version:3,shortCodes:["glass_of_milk","milk"]},{label:"hot beverage",hexcode:"2615",tags:["beverage","cafe","caffeine","chai","coffee","drink","hot","morning","steaming","tea"],emoji:"☕️",text:"☕︎",type:1,order:3939,group:4,subgroup:47,version:.6,shortCodes:["coffee"]},{label:"teapot",hexcode:"1FAD6",tags:["brew","drink","food","pot","tea"],emoji:"🫖",text:"",type:1,order:3940,group:4,subgroup:47,version:13,shortCodes:["teapot"]},{label:"teacup without handle",hexcode:"1F375",tags:["beverage","cup","drink","handle","oolong","tea","teacup"],emoji:"🍵",text:"",type:1,order:3941,group:4,subgroup:47,version:.6,shortCodes:["tea"]},{label:"sake",hexcode:"1F376",tags:["bar","beverage","bottle","cup","drink","restaurant"],emoji:"🍶",text:"",type:1,order:3942,group:4,subgroup:47,version:.6,shortCodes:["sake"]},{label:"bottle with popping cork",hexcode:"1F37E",tags:["bar","bottle","cork","drink","popping"],emoji:"🍾",text:"",type:1,order:3943,group:4,subgroup:47,version:1,shortCodes:["champagne"]},{label:"wine glass",hexcode:"1F377",tags:["alcohol","bar","beverage","booze","club","drink","drinking","drinks","glass","restaurant","wine"],emoji:"🍷",text:"",type:1,order:3944,group:4,subgroup:47,version:.6,shortCodes:["wine_glass"]},{label:"cocktail glass",hexcode:"1F378",tags:["alcohol","bar","booze","club","cocktail","drink","drinking","drinks","glass","mad","martini","men"],emoji:"🍸️",text:"🍸︎",type:1,order:3945,group:4,subgroup:47,version:.6,shortCodes:["cocktail"]},{label:"tropical drink",hexcode:"1F379",tags:["alcohol","bar","booze","club","cocktail","drink","drinking","drinks","drunk","mai","party","tai","tropical","tropics"],emoji:"🍹",text:"",type:1,order:3946,group:4,subgroup:47,version:.6,shortCodes:["tropical_drink"]},{label:"beer mug",hexcode:"1F37A",tags:["alcohol","ale","bar","beer","booze","drink","drinking","drinks","mug","octoberfest","oktoberfest","pint","stein","summer"],emoji:"🍺",text:"",type:1,order:3947,group:4,subgroup:47,version:.6,shortCodes:["beer"]},{label:"clinking beer mugs",hexcode:"1F37B",tags:["alcohol","bar","beer","booze","bottoms","cheers","clink","clinking","drinking","drinks","mugs"],emoji:"🍻",text:"",type:1,order:3948,group:4,subgroup:47,version:.6,shortCodes:["beers"]},{label:"clinking glasses",hexcode:"1F942",tags:["celebrate","clink","clinking","drink","glass","glasses"],emoji:"🥂",text:"",type:1,order:3949,group:4,subgroup:47,version:3,shortCodes:["clinking_glasses"]},{label:"tumbler glass",hexcode:"1F943",tags:["glass","liquor","scotch","shot","tumbler","whiskey","whisky"],emoji:"🥃",text:"",type:1,order:3950,group:4,subgroup:47,version:3,shortCodes:["tumbler_glass","whisky"]},{label:"pouring liquid",hexcode:"1FAD7",tags:["accident","drink","empty","glass","liquid","oops","pour","pouring","spill","water"],emoji:"🫗",text:"",type:1,order:3951,group:4,subgroup:47,version:14,shortCodes:["pour","pouring_liquid"]},{label:"cup with straw",hexcode:"1F964",tags:["cup","drink","juice","malt","soda","soft","straw","water"],emoji:"🥤",text:"",type:1,order:3952,group:4,subgroup:47,version:5,shortCodes:["cup_with_straw"]},{label:"bubble tea",hexcode:"1F9CB",tags:["boba","bubble","food","milk","pearl","tea"],emoji:"🧋",text:"",type:1,order:3953,group:4,subgroup:47,version:13,shortCodes:["boba_drink","bubble_tea"]},{label:"beverage box",hexcode:"1F9C3",tags:["beverage","box","juice","straw","sweet"],emoji:"🧃",text:"",type:1,order:3954,group:4,subgroup:47,version:12,shortCodes:["beverage_box","juice_box"]},{label:"mate",hexcode:"1F9C9",tags:["drink"],emoji:"🧉",text:"",type:1,order:3955,group:4,subgroup:47,version:12,shortCodes:["mate"]},{label:"ice",hexcode:"1F9CA",tags:["cold","cube","iceberg"],emoji:"🧊",text:"",type:1,order:3956,group:4,subgroup:47,version:12,shortCodes:["ice","ice_cube"]},{label:"chopsticks",hexcode:"1F962",tags:["hashi","jeotgarak","kuaizi"],emoji:"🥢",text:"",type:1,order:3957,group:4,subgroup:48,version:5,shortCodes:["chopsticks"]},{label:"fork and knife with plate",hexcode:"1F37D",tags:["cooking","dinner","eat","fork","knife","plate"],emoji:"🍽️",text:"🍽︎",type:0,order:3959,group:4,subgroup:48,version:.7,shortCodes:["fork_knife_plate"]},{label:"fork and knife",hexcode:"1F374",tags:["breakfast","breaky","cooking","cutlery","delicious","dinner","eat","feed","food","fork","hungry","knife","lunch","restaurant","yum","yummy"],emoji:"🍴",text:"",type:1,order:3960,group:4,subgroup:48,version:.6,shortCodes:["fork_and_knife"]},{label:"spoon",hexcode:"1F944",tags:["eat","tableware"],emoji:"🥄",text:"",type:1,order:3961,group:4,subgroup:48,version:3,shortCodes:["spoon"]},{label:"kitchen knife",hexcode:"1F52A",tags:["chef","cooking","hocho","kitchen","knife","tool","weapon"],emoji:"🔪",text:"",type:1,order:3962,group:4,subgroup:48,version:.6,shortCodes:["knife"]},{label:"jar",hexcode:"1FAD9",tags:["condiment","container","empty","nothing","sauce","store"],emoji:"🫙",text:"",type:1,order:3963,group:4,subgroup:48,version:14,shortCodes:["jar"]},{label:"amphora",hexcode:"1F3FA",tags:["aquarius","cooking","drink","jug","tool","weapon","zodiac"],emoji:"🏺",text:"",type:1,order:3964,group:4,subgroup:48,version:1,shortCodes:["amphora"]},{label:"globe showing Europe-Africa",hexcode:"1F30D",tags:["africa","earth","europe","europe-africa","globe","showing","world"],emoji:"🌍️",text:"🌍︎",type:1,order:3965,group:5,subgroup:49,version:.7,shortCodes:["earth_africa","earth_europe"]},{label:"globe showing Americas",hexcode:"1F30E",tags:["americas","earth","globe","showing","world"],emoji:"🌎️",text:"🌎︎",type:1,order:3966,group:5,subgroup:49,version:.7,shortCodes:["earth_americas"]},{label:"globe showing Asia-Australia",hexcode:"1F30F",tags:["asia","asia-australia","australia","earth","globe","showing","world"],emoji:"🌏️",text:"🌏︎",type:1,order:3967,group:5,subgroup:49,version:.6,shortCodes:["earth_asia"]},{label:"globe with meridians",hexcode:"1F310",tags:["earth","globe","internet","meridians","web","world","worldwide"],emoji:"🌐",text:"",type:1,order:3968,group:5,subgroup:49,version:1,shortCodes:["globe_with_meridians"]},{label:"world map",hexcode:"1F5FA",tags:["map","world"],emoji:"🗺️",text:"🗺︎",type:0,order:3970,group:5,subgroup:49,version:.7,shortCodes:["world_map"]},{label:"map of Japan",hexcode:"1F5FE",tags:["japan","map"],emoji:"🗾",text:"",type:1,order:3971,group:5,subgroup:49,version:.6,shortCodes:["japan_map"]},{label:"compass",hexcode:"1F9ED",tags:["direction","magnetic","navigation","orienteering"],emoji:"🧭",text:"",type:1,order:3972,group:5,subgroup:49,version:11,shortCodes:["compass"]},{label:"snow-capped mountain",hexcode:"1F3D4",tags:["cold","mountain","snow","snow-capped"],emoji:"🏔️",text:"🏔︎",type:0,order:3974,group:5,subgroup:50,version:.7,shortCodes:["mountain_snow"]},{label:"mountain",hexcode:"26F0",tags:["mountain"],emoji:"⛰️",text:"⛰︎",type:0,order:3976,group:5,subgroup:50,version:.7,shortCodes:["mountain"]},{label:"volcano",hexcode:"1F30B",tags:["eruption","mountain","nature"],emoji:"🌋",text:"",type:1,order:3978,group:5,subgroup:50,version:.6,shortCodes:["volcano"]},{label:"mount fuji",hexcode:"1F5FB",tags:["fuji","mount","mountain","nature"],emoji:"🗻",text:"",type:1,order:3979,group:5,subgroup:50,version:.6,shortCodes:["mount_fuji"]},{label:"camping",hexcode:"1F3D5",tags:["camping"],emoji:"🏕️",text:"🏕︎",type:0,order:3981,group:5,subgroup:50,version:.7,shortCodes:["camping"]},{label:"beach with umbrella",hexcode:"1F3D6",tags:["beach","umbrella"],emoji:"🏖️",text:"🏖︎",type:0,order:3983,group:5,subgroup:50,version:.7,shortCodes:["beach","beach_with_umbrella"]},{label:"desert",hexcode:"1F3DC",tags:["desert"],emoji:"🏜️",text:"🏜︎",type:0,order:3985,group:5,subgroup:50,version:.7,shortCodes:["desert"]},{label:"desert island",hexcode:"1F3DD",tags:["desert","island"],emoji:"🏝️",text:"🏝︎",type:0,order:3987,group:5,subgroup:50,version:.7,shortCodes:["desert_island","island"]},{label:"national park",hexcode:"1F3DE",tags:["national","park"],emoji:"🏞️",text:"🏞︎",type:0,order:3989,group:5,subgroup:50,version:.7,shortCodes:["national_park"]},{label:"stadium",hexcode:"1F3DF",tags:["stadium"],emoji:"🏟️",text:"🏟︎",type:0,order:3991,group:5,subgroup:51,version:.7,shortCodes:["stadium"]},{label:"classical building",hexcode:"1F3DB",tags:["building","classical"],emoji:"🏛️",text:"🏛︎",type:0,order:3993,group:5,subgroup:51,version:.7,shortCodes:["classical_building"]},{label:"building construction",hexcode:"1F3D7",tags:["building","construction","crane"],emoji:"🏗️",text:"🏗︎",type:0,order:3995,group:5,subgroup:51,version:.7,shortCodes:["building_construction","construction_site"]},{label:"brick",hexcode:"1F9F1",tags:["bricks","clay","mortar","wall"],emoji:"🧱",text:"",type:1,order:3996,group:5,subgroup:51,version:11,shortCodes:["bricks"]},{label:"rock",hexcode:"1FAA8",tags:["boulder","heavy","solid","stone","tough"],emoji:"🪨",text:"",type:1,order:3997,group:5,subgroup:51,version:13,shortCodes:["rock"]},{label:"wood",hexcode:"1FAB5",tags:["log","lumber","timber"],emoji:"🪵",text:"",type:1,order:3998,group:5,subgroup:51,version:13,shortCodes:["wood"]},{label:"hut",hexcode:"1F6D6",tags:["home","house","roundhouse","shelter","yurt"],emoji:"🛖",text:"",type:1,order:3999,group:5,subgroup:51,version:13,shortCodes:["hut"]},{label:"houses",hexcode:"1F3D8",tags:["house"],emoji:"🏘️",text:"🏘︎",type:0,order:4001,group:5,subgroup:51,version:.7,shortCodes:["homes","houses"]},{label:"derelict house",hexcode:"1F3DA",tags:["derelict","home","house"],emoji:"🏚️",text:"🏚︎",type:0,order:4003,group:5,subgroup:51,version:.7,shortCodes:["derelict_house","house_abandoned"]},{label:"house",hexcode:"1F3E0",tags:["building","country","heart","home","ranch","settle","simple","suburban","suburbia","where"],emoji:"🏠️",text:"🏠︎",type:1,order:4004,group:5,subgroup:51,version:.6,shortCodes:["house"]},{label:"house with garden",hexcode:"1F3E1",tags:["building","country","garden","heart","home","house","ranch","settle","simple","suburban","suburbia","where"],emoji:"🏡",text:"",type:1,order:4005,group:5,subgroup:51,version:.6,shortCodes:["house_with_garden"]},{label:"office building",hexcode:"1F3E2",tags:["building","city","cubical","job","office"],emoji:"🏢",text:"",type:1,order:4006,group:5,subgroup:51,version:.6,shortCodes:["office"]},{label:"Japanese post office",hexcode:"1F3E3",tags:["building","japanese","office","post"],emoji:"🏣",text:"",type:1,order:4007,group:5,subgroup:51,version:.6,shortCodes:["post_office"]},{label:"post office",hexcode:"1F3E4",tags:["building","european","office","post"],emoji:"🏤",text:"",type:1,order:4008,group:5,subgroup:51,version:1,shortCodes:["european_post_office"]},{label:"hospital",hexcode:"1F3E5",tags:["building","doctor","medicine"],emoji:"🏥",text:"",type:1,order:4009,group:5,subgroup:51,version:.6,shortCodes:["hospital"]},{label:"bank",hexcode:"1F3E6",tags:["building"],emoji:"🏦",text:"",type:1,order:4010,group:5,subgroup:51,version:.6,shortCodes:["bank"]},{label:"hotel",hexcode:"1F3E8",tags:["building"],emoji:"🏨",text:"",type:1,order:4011,group:5,subgroup:51,version:.6,shortCodes:["hotel"]},{label:"love hotel",hexcode:"1F3E9",tags:["building","hotel","love"],emoji:"🏩",text:"",type:1,order:4012,group:5,subgroup:51,version:.6,shortCodes:["love_hotel"]},{label:"convenience store",hexcode:"1F3EA",tags:["24","building","convenience","hours","store"],emoji:"🏪",text:"",type:1,order:4013,group:5,subgroup:51,version:.6,shortCodes:["convenience_store"]},{label:"school",hexcode:"1F3EB",tags:["building"],emoji:"🏫",text:"",type:1,order:4014,group:5,subgroup:51,version:.6,shortCodes:["school"]},{label:"department store",hexcode:"1F3EC",tags:["building","department","store"],emoji:"🏬",text:"",type:1,order:4015,group:5,subgroup:51,version:.6,shortCodes:["department_store"]},{label:"factory",hexcode:"1F3ED",tags:["building"],emoji:"🏭️",text:"🏭︎",type:1,order:4016,group:5,subgroup:51,version:.6,shortCodes:["factory"]},{label:"Japanese castle",hexcode:"1F3EF",tags:["building","castle","japanese"],emoji:"🏯",text:"",type:1,order:4017,group:5,subgroup:51,version:.6,shortCodes:["japanese_castle"]},{label:"castle",hexcode:"1F3F0",tags:["building","european"],emoji:"🏰",text:"",type:1,order:4018,group:5,subgroup:51,version:.6,shortCodes:["castle","european_castle"]},{label:"wedding",hexcode:"1F492",tags:["chapel","hitched","nuptials","romance"],emoji:"💒",text:"",type:1,order:4019,group:5,subgroup:51,version:.6,shortCodes:["wedding"]},{label:"Tokyo tower",hexcode:"1F5FC",tags:["tokyo","tower"],emoji:"🗼",text:"",type:1,order:4020,group:5,subgroup:51,version:.6,shortCodes:["tokyo_tower"]},{label:"Statue of Liberty",hexcode:"1F5FD",tags:["liberty","new","ny","nyc","statue","york"],emoji:"🗽",text:"",type:1,order:4021,group:5,subgroup:51,version:.6,shortCodes:["statue_of_liberty"]},{label:"church",hexcode:"26EA",tags:["bless","chapel","christian","cross","religion"],emoji:"⛪️",text:"⛪︎",type:1,order:4022,group:5,subgroup:52,version:.6,shortCodes:["church"]},{label:"mosque",hexcode:"1F54C",tags:["islam","masjid","muslim","religion"],emoji:"🕌",text:"",type:1,order:4023,group:5,subgroup:52,version:1,shortCodes:["mosque"]},{label:"hindu temple",hexcode:"1F6D5",tags:["hindu","temple"],emoji:"🛕",text:"",type:1,order:4024,group:5,subgroup:52,version:12,shortCodes:["hindu_temple"]},{label:"synagogue",hexcode:"1F54D",tags:["jew","jewish","judaism","religion","temple"],emoji:"🕍",text:"",type:1,order:4025,group:5,subgroup:52,version:1,shortCodes:["synagogue"]},{label:"shinto shrine",hexcode:"26E9",tags:["religion","shinto","shrine"],emoji:"⛩️",text:"⛩︎",type:0,order:4027,group:5,subgroup:52,version:.7,shortCodes:["shinto_shrine"]},{label:"kaaba",hexcode:"1F54B",tags:["hajj","islam","muslim","religion","umrah"],emoji:"🕋",text:"",type:1,order:4028,group:5,subgroup:52,version:1,shortCodes:["kaaba"]},{label:"fountain",hexcode:"26F2",tags:["fountain"],emoji:"⛲️",text:"⛲︎",type:1,order:4029,group:5,subgroup:53,version:.6,shortCodes:["fountain"]},{label:"tent",hexcode:"26FA",tags:["camping"],emoji:"⛺️",text:"⛺︎",type:1,order:4030,group:5,subgroup:53,version:.6,shortCodes:["tent"]},{label:"foggy",hexcode:"1F301",tags:["fog"],emoji:"🌁",text:"",type:1,order:4031,group:5,subgroup:53,version:.6,shortCodes:["foggy"]},{label:"night with stars",hexcode:"1F303",tags:["night","star","stars"],emoji:"🌃",text:"",type:1,order:4032,group:5,subgroup:53,version:.6,shortCodes:["night_with_stars"]},{label:"cityscape",hexcode:"1F3D9",tags:["city"],emoji:"🏙️",text:"🏙︎",type:0,order:4034,group:5,subgroup:53,version:.7,shortCodes:["cityscape"]},{label:"sunrise over mountains",hexcode:"1F304",tags:["morning","mountains","over","sun","sunrise"],emoji:"🌄",text:"",type:1,order:4035,group:5,subgroup:53,version:.6,shortCodes:["sunrise_over_mountains"]},{label:"sunrise",hexcode:"1F305",tags:["morning","nature","sun"],emoji:"🌅",text:"",type:1,order:4036,group:5,subgroup:53,version:.6,shortCodes:["sunrise"]},{label:"cityscape at dusk",hexcode:"1F306",tags:["at","building","city","cityscape","dusk","evening","landscape","sun","sunset"],emoji:"🌆",text:"",type:1,order:4037,group:5,subgroup:53,version:.6,shortCodes:["city_dusk"]},{label:"sunset",hexcode:"1F307",tags:["building","dusk","sun"],emoji:"🌇",text:"",type:1,order:4038,group:5,subgroup:53,version:.6,shortCodes:["city_sunrise","city_sunset"]},{label:"bridge at night",hexcode:"1F309",tags:["at","bridge","night"],emoji:"🌉",text:"",type:1,order:4039,group:5,subgroup:53,version:.6,shortCodes:["bridge_at_night"]},{label:"hot springs",hexcode:"2668",tags:["hot","hotsprings","springs","steaming"],emoji:"♨️",text:"♨︎",type:0,order:4041,group:5,subgroup:53,version:.6,shortCodes:["hotsprings"]},{label:"carousel horse",hexcode:"1F3A0",tags:["carousel","entertainment","horse"],emoji:"🎠",text:"",type:1,order:4042,group:5,subgroup:53,version:.6,shortCodes:["carousel_horse"]},{label:"playground slide",hexcode:"1F6DD",tags:["amusement","park","play","playground","playing","slide","sliding","theme"],emoji:"🛝",text:"",type:1,order:4043,group:5,subgroup:53,version:14,shortCodes:["playground_slide","slide"]},{label:"ferris wheel",hexcode:"1F3A1",tags:["amusement","ferris","park","theme","wheel"],emoji:"🎡",text:"",type:1,order:4044,group:5,subgroup:53,version:.6,shortCodes:["ferris_wheel"]},{label:"roller coaster",hexcode:"1F3A2",tags:["amusement","coaster","park","roller","theme"],emoji:"🎢",text:"",type:1,order:4045,group:5,subgroup:53,version:.6,shortCodes:["roller_coaster"]},{label:"barber pole",hexcode:"1F488",tags:["barber","cut","fresh","haircut","pole","shave"],emoji:"💈",text:"",type:1,order:4046,group:5,subgroup:53,version:.6,shortCodes:["barber","barber_pole"]},{label:"circus tent",hexcode:"1F3AA",tags:["circus","tent"],emoji:"🎪",text:"",type:1,order:4047,group:5,subgroup:53,version:.6,shortCodes:["circus_tent"]},{label:"locomotive",hexcode:"1F682",tags:["caboose","engine","railway","steam","train","trains","travel"],emoji:"🚂",text:"",type:1,order:4048,group:5,subgroup:54,version:1,shortCodes:["steam_locomotive"]},{label:"railway car",hexcode:"1F683",tags:["car","electric","railway","train","tram","travel","trolleybus"],emoji:"🚃",text:"",type:1,order:4049,group:5,subgroup:54,version:.6,shortCodes:["railway_car"]},{label:"high-speed train",hexcode:"1F684",tags:["high-speed","railway","shinkansen","speed","train"],emoji:"🚄",text:"",type:1,order:4050,group:5,subgroup:54,version:.6,shortCodes:["bullettrain_side"]},{label:"bullet train",hexcode:"1F685",tags:["bullet","high-speed","nose","railway","shinkansen","speed","train","travel"],emoji:"🚅",text:"",type:1,order:4051,group:5,subgroup:54,version:.6,shortCodes:["bullettrain_front"]},{label:"train",hexcode:"1F686",tags:["arrived","choo","railway"],emoji:"🚆",text:"",type:1,order:4052,group:5,subgroup:54,version:1,shortCodes:["train"]},{label:"metro",hexcode:"1F687",tags:["subway","travel"],emoji:"🚇️",text:"🚇︎",type:1,order:4053,group:5,subgroup:54,version:.6,shortCodes:["metro"]},{label:"light rail",hexcode:"1F688",tags:["arrived","light","monorail","rail","railway"],emoji:"🚈",text:"",type:1,order:4054,group:5,subgroup:54,version:1,shortCodes:["light_rail"]},{label:"station",hexcode:"1F689",tags:["railway","train"],emoji:"🚉",text:"",type:1,order:4055,group:5,subgroup:54,version:.6,shortCodes:["station"]},{label:"tram",hexcode:"1F68A",tags:["trolleybus"],emoji:"🚊",text:"",type:1,order:4056,group:5,subgroup:54,version:1,shortCodes:["tram"]},{label:"monorail",hexcode:"1F69D",tags:["vehicle"],emoji:"🚝",text:"",type:1,order:4057,group:5,subgroup:54,version:1,shortCodes:["monorail"]},{label:"mountain railway",hexcode:"1F69E",tags:["car","mountain","railway","trip"],emoji:"🚞",text:"",type:1,order:4058,group:5,subgroup:54,version:1,shortCodes:["mountain_railway"]},{label:"tram car",hexcode:"1F68B",tags:["bus","car","tram","trolley","trolleybus"],emoji:"🚋",text:"",type:1,order:4059,group:5,subgroup:54,version:1,shortCodes:["tram_car"]},{label:"bus",hexcode:"1F68C",tags:["school","vehicle"],emoji:"🚌",text:"",type:1,order:4060,group:5,subgroup:54,version:.6,shortCodes:["bus"]},{label:"oncoming bus",hexcode:"1F68D",tags:["bus","cars","oncoming"],emoji:"🚍️",text:"🚍︎",type:1,order:4061,group:5,subgroup:54,version:.7,shortCodes:["oncoming_bus"]},{label:"trolleybus",hexcode:"1F68E",tags:["bus","tram","trolley"],emoji:"🚎",text:"",type:1,order:4062,group:5,subgroup:54,version:1,shortCodes:["trolleybus"]},{label:"minibus",hexcode:"1F690",tags:["bus","drive","van","vehicle"],emoji:"🚐",text:"",type:1,order:4063,group:5,subgroup:54,version:1,shortCodes:["minibus"]},{label:"ambulance",hexcode:"1F691",tags:["emergency","vehicle"],emoji:"🚑️",text:"🚑︎",type:1,order:4064,group:5,subgroup:54,version:.6,shortCodes:["ambulance"]},{label:"fire engine",hexcode:"1F692",tags:["engine","fire","truck"],emoji:"🚒",text:"",type:1,order:4065,group:5,subgroup:54,version:.6,shortCodes:["fire_engine"]},{label:"police car",hexcode:"1F693",tags:["5–0","car","cops","patrol","police"],emoji:"🚓",text:"",type:1,order:4066,group:5,subgroup:54,version:.6,shortCodes:["police_car"]},{label:"oncoming police car",hexcode:"1F694",tags:["car","oncoming","police"],emoji:"🚔️",text:"🚔︎",type:1,order:4067,group:5,subgroup:54,version:.7,shortCodes:["oncoming_police_car"]},{label:"taxi",hexcode:"1F695",tags:["cab","cabbie","car","drive","vehicle","yellow"],emoji:"🚕",text:"",type:1,order:4068,group:5,subgroup:54,version:.6,shortCodes:["taxi"]},{label:"oncoming taxi",hexcode:"1F696",tags:["cab","cabbie","cars","drove","hail","oncoming","taxi","yellow"],emoji:"🚖",text:"",type:1,order:4069,group:5,subgroup:54,version:1,shortCodes:["oncoming_taxi"]},{label:"automobile",hexcode:"1F697",tags:["car","driving","vehicle"],emoji:"🚗",text:"",type:1,order:4070,group:5,subgroup:54,version:.6,shortCodes:["car","red_car"]},{label:"oncoming automobile",hexcode:"1F698",tags:["automobile","car","cars","drove","oncoming","vehicle"],emoji:"🚘️",text:"🚘︎",type:1,order:4071,group:5,subgroup:54,version:.7,shortCodes:["oncoming_automobile"]},{label:"sport utility vehicle",hexcode:"1F699",tags:["car","drive","recreational","sport","sportutility","utility","vehicle"],emoji:"🚙",text:"",type:1,order:4072,group:5,subgroup:54,version:.6,shortCodes:["blue_car","suv"]},{label:"pickup truck",hexcode:"1F6FB",tags:["automobile","car","flatbed","pick-up","pickup","transportation","truck"],emoji:"🛻",text:"",type:1,order:4073,group:5,subgroup:54,version:13,shortCodes:["pickup_truck"]},{label:"delivery truck",hexcode:"1F69A",tags:["car","delivery","drive","truck","vehicle"],emoji:"🚚",text:"",type:1,order:4074,group:5,subgroup:54,version:.6,shortCodes:["delivery_truck","truck"]},{label:"articulated lorry",hexcode:"1F69B",tags:["articulated","car","drive","lorry","move","semi","truck","vehicle"],emoji:"🚛",text:"",type:1,order:4075,group:5,subgroup:54,version:1,shortCodes:["articulated_lorry"]},{label:"tractor",hexcode:"1F69C",tags:["vehicle"],emoji:"🚜",text:"",type:1,order:4076,group:5,subgroup:54,version:1,shortCodes:["tractor"]},{label:"racing car",hexcode:"1F3CE",tags:["car","racing","zoom"],emoji:"🏎️",text:"🏎︎",type:0,order:4078,group:5,subgroup:54,version:.7,shortCodes:["racing_car"]},{label:"motorcycle",hexcode:"1F3CD",tags:["racing"],emoji:"🏍️",text:"🏍︎",type:0,order:4080,group:5,subgroup:54,version:.7,shortCodes:["motorcycle"]},{label:"motor scooter",hexcode:"1F6F5",tags:["motor","scooter"],emoji:"🛵",text:"",type:1,order:4081,group:5,subgroup:54,version:3,shortCodes:["motor_scooter"]},{label:"manual wheelchair",hexcode:"1F9BD",tags:["accessibility","manual","wheelchair"],emoji:"🦽",text:"",type:1,order:4082,group:5,subgroup:54,version:12,shortCodes:["manual_wheelchair"]},{label:"motorized wheelchair",hexcode:"1F9BC",tags:["accessibility","motorized","wheelchair"],emoji:"🦼",text:"",type:1,order:4083,group:5,subgroup:54,version:12,shortCodes:["motorized_wheelchair"]},{label:"auto rickshaw",hexcode:"1F6FA",tags:["auto","rickshaw","tuk"],emoji:"🛺",text:"",type:1,order:4084,group:5,subgroup:54,version:12,shortCodes:["auto_rickshaw"]},{label:"bicycle",hexcode:"1F6B2",tags:["bike","class","cycle","cycling","cyclist","gang","ride","spin","spinning"],emoji:"🚲️",text:"🚲︎",type:1,order:4085,group:5,subgroup:54,version:.6,shortCodes:["bicycle","bike"]},{label:"kick scooter",hexcode:"1F6F4",tags:["kick","scooter"],emoji:"🛴",text:"",type:1,order:4086,group:5,subgroup:54,version:3,shortCodes:["scooter"]},{label:"skateboard",hexcode:"1F6F9",tags:["board","skate","skater","wheels"],emoji:"🛹",text:"",type:1,order:4087,group:5,subgroup:54,version:11,shortCodes:["skateboard"]},{label:"roller skate",hexcode:"1F6FC",tags:["blades","roller","skate","skates","sport"],emoji:"🛼",text:"",type:1,order:4088,group:5,subgroup:54,version:13,shortCodes:["roller_skate"]},{label:"bus stop",hexcode:"1F68F",tags:["bus","busstop","stop"],emoji:"🚏",text:"",type:1,order:4089,group:5,subgroup:54,version:.6,shortCodes:["busstop"]},{label:"motorway",hexcode:"1F6E3",tags:["highway","road"],emoji:"🛣️",text:"🛣︎",type:0,order:4091,group:5,subgroup:54,version:.7,shortCodes:["motorway"]},{label:"railway track",hexcode:"1F6E4",tags:["railway","track","train"],emoji:"🛤️",text:"🛤︎",type:0,order:4093,group:5,subgroup:54,version:.7,shortCodes:["railway_track"]},{label:"oil drum",hexcode:"1F6E2",tags:["drum","oil"],emoji:"🛢️",text:"🛢︎",type:0,order:4095,group:5,subgroup:54,version:.7,shortCodes:["oil_drum"]},{label:"fuel pump",hexcode:"26FD",tags:["diesel","fuel","fuelpump","gas","gasoline","pump","station"],emoji:"⛽️",text:"⛽︎",type:1,order:4096,group:5,subgroup:54,version:.6,shortCodes:["fuelpump"]},{label:"wheel",hexcode:"1F6DE",tags:["car","circle","tire","turn","vehicle"],emoji:"🛞",text:"",type:1,order:4097,group:5,subgroup:54,version:14,shortCodes:["wheel"]},{label:"police car light",hexcode:"1F6A8",tags:["alarm","alert","beacon","car","emergency","light","police","revolving","siren"],emoji:"🚨",text:"",type:1,order:4098,group:5,subgroup:54,version:.6,shortCodes:["rotating_light"]},{label:"horizontal traffic light",hexcode:"1F6A5",tags:["horizontal","intersection","light","signal","stop","stoplight","traffic"],emoji:"🚥",text:"",type:1,order:4099,group:5,subgroup:54,version:.6,shortCodes:["traffic_light"]},{label:"vertical traffic light",hexcode:"1F6A6",tags:["drove","intersection","light","signal","stop","stoplight","traffic","vertical"],emoji:"🚦",text:"",type:1,order:4100,group:5,subgroup:54,version:1,shortCodes:["vertical_traffic_light"]},{label:"stop sign",hexcode:"1F6D1",tags:["octagonal","sign","stop"],emoji:"🛑",text:"",type:1,order:4101,group:5,subgroup:54,version:3,shortCodes:["octagonal_sign","stop_sign"]},{label:"construction",hexcode:"1F6A7",tags:["barrier"],emoji:"🚧",text:"",type:1,order:4102,group:5,subgroup:54,version:.6,shortCodes:["construction"]},{label:"anchor",hexcode:"2693",tags:["ship","tool"],emoji:"⚓️",text:"⚓︎",type:1,order:4103,group:5,subgroup:55,version:.6,shortCodes:["anchor"]},{label:"ring buoy",hexcode:"1F6DF",tags:["buoy","float","life","lifesaver","preserver","rescue","ring","safety","save","saver","swim"],emoji:"🛟",text:"",type:1,order:4104,group:5,subgroup:55,version:14,shortCodes:["lifebuoy","ring_buoy"]},{label:"sailboat",hexcode:"26F5",tags:["boat","resort","sailing","sea","yacht"],emoji:"⛵️",text:"⛵︎",type:1,order:4105,group:5,subgroup:55,version:.6,shortCodes:["sailboat"]},{label:"canoe",hexcode:"1F6F6",tags:["boat"],emoji:"🛶",text:"",type:1,order:4106,group:5,subgroup:55,version:3,shortCodes:["canoe"]},{label:"speedboat",hexcode:"1F6A4",tags:["billionaire","boat","lake","luxury","millionaire","summer","travel"],emoji:"🚤",text:"",type:1,order:4107,group:5,subgroup:55,version:.6,shortCodes:["speedboat"]},{label:"passenger ship",hexcode:"1F6F3",tags:["passenger","ship"],emoji:"🛳️",text:"🛳︎",type:0,order:4109,group:5,subgroup:55,version:.7,shortCodes:["cruise_ship","passenger_ship"]},{label:"ferry",hexcode:"26F4",tags:["boat","passenger"],emoji:"⛴️",text:"⛴︎",type:0,order:4111,group:5,subgroup:55,version:.7,shortCodes:["ferry"]},{label:"motor boat",hexcode:"1F6E5",tags:["boat","motor","motorboat"],emoji:"🛥️",text:"🛥︎",type:0,order:4113,group:5,subgroup:55,version:.7,shortCodes:["motorboat"]},{label:"ship",hexcode:"1F6A2",tags:["boat","passenger","travel"],emoji:"🚢",text:"",type:1,order:4114,group:5,subgroup:55,version:.6,shortCodes:["ship"]},{label:"airplane",hexcode:"2708",tags:["aeroplane","fly","flying","jet","plane","travel"],emoji:"✈️",text:"✈︎",type:0,order:4116,group:5,subgroup:56,version:.6,shortCodes:["airplane"]},{label:"small airplane",hexcode:"1F6E9",tags:["aeroplane","airplane","plane","small"],emoji:"🛩️",text:"🛩︎",type:0,order:4118,group:5,subgroup:56,version:.7,shortCodes:["small_airplane"]},{label:"airplane departure",hexcode:"1F6EB",tags:["aeroplane","airplane","check-in","departure","departures","plane"],emoji:"🛫",text:"",type:1,order:4119,group:5,subgroup:56,version:1,shortCodes:["airplane_departure"]},{label:"airplane arrival",hexcode:"1F6EC",tags:["aeroplane","airplane","arrival","arrivals","arriving","landing","plane"],emoji:"🛬",text:"",type:1,order:4120,group:5,subgroup:56,version:1,shortCodes:["airplane_arriving"]},{label:"parachute",hexcode:"1FA82",tags:["hang-glide","parasail","skydive"],emoji:"🪂",text:"",type:1,order:4121,group:5,subgroup:56,version:12,shortCodes:["parachute"]},{label:"seat",hexcode:"1F4BA",tags:["chair"],emoji:"💺",text:"",type:1,order:4122,group:5,subgroup:56,version:.6,shortCodes:["seat"]},{label:"helicopter",hexcode:"1F681",tags:["copter","roflcopter","travel","vehicle"],emoji:"🚁",text:"",type:1,order:4123,group:5,subgroup:56,version:1,shortCodes:["helicopter"]},{label:"suspension railway",hexcode:"1F69F",tags:["railway","suspension"],emoji:"🚟",text:"",type:1,order:4124,group:5,subgroup:56,version:1,shortCodes:["suspension_railway"]},{label:"mountain cableway",hexcode:"1F6A0",tags:["cable","cableway","gondola","lift","mountain","ski"],emoji:"🚠",text:"",type:1,order:4125,group:5,subgroup:56,version:1,shortCodes:["mountain_cableway"]},{label:"aerial tramway",hexcode:"1F6A1",tags:["aerial","cable","car","gondola","ropeway","tramway"],emoji:"🚡",text:"",type:1,order:4126,group:5,subgroup:56,version:1,shortCodes:["aerial_tramway"]},{label:"satellite",hexcode:"1F6F0",tags:["space"],emoji:"🛰️",text:"🛰︎",type:0,order:4128,group:5,subgroup:56,version:.7,shortCodes:["satellite"]},{label:"rocket",hexcode:"1F680",tags:["launch","rockets","space","travel"],emoji:"🚀",text:"",type:1,order:4129,group:5,subgroup:56,version:.6,shortCodes:["rocket"]},{label:"flying saucer",hexcode:"1F6F8",tags:["aliens","extra","flying","saucer","terrestrial","ufo"],emoji:"🛸",text:"",type:1,order:4130,group:5,subgroup:56,version:5,shortCodes:["flying_saucer"]},{label:"bellhop bell",hexcode:"1F6CE",tags:["bell","bellhop","hotel"],emoji:"🛎️",text:"🛎︎",type:0,order:4132,group:5,subgroup:57,version:.7,shortCodes:["bellhop"]},{label:"luggage",hexcode:"1F9F3",tags:["bag","packing","roller","suitcase","travel"],emoji:"🧳",text:"",type:1,order:4133,group:5,subgroup:57,version:11,shortCodes:["luggage"]},{label:"hourglass done",hexcode:"231B",tags:["done","hourglass","sand","time","timer"],emoji:"⌛️",text:"⌛︎",type:1,order:4134,group:5,subgroup:58,version:.6,shortCodes:["hourglass"]},{label:"hourglass not done",hexcode:"23F3",tags:["done","flowing","hourglass","hours","not","sand","timer","waiting","yolo"],emoji:"⏳️",text:"⏳︎",type:1,order:4135,group:5,subgroup:58,version:.6,shortCodes:["hourglass_flowing_sand"]},{label:"watch",hexcode:"231A",tags:["clock","time"],emoji:"⌚️",text:"⌚︎",type:1,order:4136,group:5,subgroup:58,version:.6,shortCodes:["watch"]},{label:"alarm clock",hexcode:"23F0",tags:["alarm","clock","hours","hrs","late","time","waiting"],emoji:"⏰️",text:"⏰︎",type:1,order:4137,group:5,subgroup:58,version:.6,shortCodes:["alarm_clock"]},{label:"stopwatch",hexcode:"23F1",tags:["clock","time"],emoji:"⏱️",text:"⏱︎",type:0,order:4139,group:5,subgroup:58,version:1,shortCodes:["stopwatch"]},{label:"timer clock",hexcode:"23F2",tags:["clock","timer"],emoji:"⏲️",text:"⏲︎",type:0,order:4141,group:5,subgroup:58,version:1,shortCodes:["timer_clock"]},{label:"mantelpiece clock",hexcode:"1F570",tags:["clock","mantelpiece","time"],emoji:"🕰️",text:"🕰︎",type:0,order:4143,group:5,subgroup:58,version:.7,shortCodes:["clock"]},{label:"twelve o’clock",hexcode:"1F55B",tags:["12","12:00","clock","o’clock","time","twelve"],emoji:"🕛️",text:"🕛︎",type:1,order:4144,group:5,subgroup:58,version:.6,shortCodes:["clock12"]},{label:"twelve-thirty",hexcode:"1F567",tags:["12","12:30","30","clock","thirty","time","twelve"],emoji:"🕧️",text:"🕧︎",type:1,order:4145,group:5,subgroup:58,version:.7,shortCodes:["clock1230"]},{label:"one o’clock",hexcode:"1F550",tags:["1","1:00","clock","one","o’clock","time"],emoji:"🕐️",text:"🕐︎",type:1,order:4146,group:5,subgroup:58,version:.6,shortCodes:["clock1"]},{label:"one-thirty",hexcode:"1F55C",tags:["1","1:30","30","clock","one","thirty","time"],emoji:"🕜️",text:"🕜︎",type:1,order:4147,group:5,subgroup:58,version:.7,shortCodes:["clock130"]},{label:"two o’clock",hexcode:"1F551",tags:["2","2:00","clock","o’clock","time","two"],emoji:"🕑️",text:"🕑︎",type:1,order:4148,group:5,subgroup:58,version:.6,shortCodes:["clock2"]},{label:"two-thirty",hexcode:"1F55D",tags:["2","2:30","30","clock","thirty","time","two"],emoji:"🕝️",text:"🕝︎",type:1,order:4149,group:5,subgroup:58,version:.7,shortCodes:["clock230"]},{label:"three o’clock",hexcode:"1F552",tags:["3","3:00","clock","o’clock","three","time"],emoji:"🕒️",text:"🕒︎",type:1,order:4150,group:5,subgroup:58,version:.6,shortCodes:["clock3"]},{label:"three-thirty",hexcode:"1F55E",tags:["3","30","3:30","clock","thirty","three","time"],emoji:"🕞️",text:"🕞︎",type:1,order:4151,group:5,subgroup:58,version:.7,shortCodes:["clock330"]},{label:"four o’clock",hexcode:"1F553",tags:["4","4:00","clock","four","o’clock","time"],emoji:"🕓️",text:"🕓︎",type:1,order:4152,group:5,subgroup:58,version:.6,shortCodes:["clock4"]},{label:"four-thirty",hexcode:"1F55F",tags:["30","4","4:30","clock","four","thirty","time"],emoji:"🕟️",text:"🕟︎",type:1,order:4153,group:5,subgroup:58,version:.7,shortCodes:["clock430"]},{label:"five o’clock",hexcode:"1F554",tags:["5","5:00","clock","five","o’clock","time"],emoji:"🕔️",text:"🕔︎",type:1,order:4154,group:5,subgroup:58,version:.6,shortCodes:["clock5"]},{label:"five-thirty",hexcode:"1F560",tags:["30","5","5:30","clock","five","thirty","time"],emoji:"🕠️",text:"🕠︎",type:1,order:4155,group:5,subgroup:58,version:.7,shortCodes:["clock530"]},{label:"six o’clock",hexcode:"1F555",tags:["6","6:00","clock","o’clock","six","time"],emoji:"🕕️",text:"🕕︎",type:1,order:4156,group:5,subgroup:58,version:.6,shortCodes:["clock6"]},{label:"six-thirty",hexcode:"1F561",tags:["30","6","6:30","clock","six","thirty"],emoji:"🕡️",text:"🕡︎",type:1,order:4157,group:5,subgroup:58,version:.7,shortCodes:["clock630"]},{label:"seven o’clock",hexcode:"1F556",tags:["0","7","7:00","clock","o’clock","seven"],emoji:"🕖️",text:"🕖︎",type:1,order:4158,group:5,subgroup:58,version:.6,shortCodes:["clock7"]},{label:"seven-thirty",hexcode:"1F562",tags:["30","7","7:30","clock","seven","thirty"],emoji:"🕢️",text:"🕢︎",type:1,order:4159,group:5,subgroup:58,version:.7,shortCodes:["clock730"]},{label:"eight o’clock",hexcode:"1F557",tags:["8","8:00","clock","eight","o’clock","time"],emoji:"🕗️",text:"🕗︎",type:1,order:4160,group:5,subgroup:58,version:.6,shortCodes:["clock8"]},{label:"eight-thirty",hexcode:"1F563",tags:["30","8","8:30","clock","eight","thirty","time"],emoji:"🕣️",text:"🕣︎",type:1,order:4161,group:5,subgroup:58,version:.7,shortCodes:["clock830"]},{label:"nine o’clock",hexcode:"1F558",tags:["9","9:00","clock","nine","o’clock","time"],emoji:"🕘️",text:"🕘︎",type:1,order:4162,group:5,subgroup:58,version:.6,shortCodes:["clock9"]},{label:"nine-thirty",hexcode:"1F564",tags:["30","9","9:30","clock","nine","thirty","time"],emoji:"🕤️",text:"🕤︎",type:1,order:4163,group:5,subgroup:58,version:.7,shortCodes:["clock930"]},{label:"ten o’clock",hexcode:"1F559",tags:["0","10","10:00","clock","o’clock","ten"],emoji:"🕙️",text:"🕙︎",type:1,order:4164,group:5,subgroup:58,version:.6,shortCodes:["clock10"]},{label:"ten-thirty",hexcode:"1F565",tags:["10","10:30","30","clock","ten","thirty","time"],emoji:"🕥️",text:"🕥︎",type:1,order:4165,group:5,subgroup:58,version:.7,shortCodes:["clock1030"]},{label:"eleven o’clock",hexcode:"1F55A",tags:["11","11:00","clock","eleven","o’clock","time"],emoji:"🕚️",text:"🕚︎",type:1,order:4166,group:5,subgroup:58,version:.6,shortCodes:["clock11"]},{label:"eleven-thirty",hexcode:"1F566",tags:["11","11:30","30","clock","eleven","thirty","time"],emoji:"🕦️",text:"🕦︎",type:1,order:4167,group:5,subgroup:58,version:.7,shortCodes:["clock1130"]},{label:"new moon",hexcode:"1F311",tags:["dark","moon","new","space"],emoji:"🌑",text:"",type:1,order:4168,group:5,subgroup:59,version:.6,shortCodes:["new_moon"]},{label:"waxing crescent moon",hexcode:"1F312",tags:["crescent","dreams","moon","space","waxing"],emoji:"🌒",text:"",type:1,order:4169,group:5,subgroup:59,version:1,shortCodes:["waxing_crescent_moon"]},{label:"first quarter moon",hexcode:"1F313",tags:["first","moon","quarter","space"],emoji:"🌓",text:"",type:1,order:4170,group:5,subgroup:59,version:.6,shortCodes:["first_quarter_moon"]},{label:"waxing gibbous moon",hexcode:"1F314",tags:["gibbous","moon","space","waxing"],emoji:"🌔",text:"",type:1,order:4171,group:5,subgroup:59,version:.6,shortCodes:["waxing_gibbous_moon"]},{label:"full moon",hexcode:"1F315",tags:["full","moon","space"],emoji:"🌕️",text:"🌕︎",type:1,order:4172,group:5,subgroup:59,version:.6,shortCodes:["full_moon"]},{label:"waning gibbous moon",hexcode:"1F316",tags:["gibbous","moon","space","waning"],emoji:"🌖",text:"",type:1,order:4173,group:5,subgroup:59,version:1,shortCodes:["waning_gibbous_moon"]},{label:"last quarter moon",hexcode:"1F317",tags:["last","moon","quarter","space"],emoji:"🌗",text:"",type:1,order:4174,group:5,subgroup:59,version:1,shortCodes:["last_quarter_moon"]},{label:"waning crescent moon",hexcode:"1F318",tags:["crescent","moon","space","waning"],emoji:"🌘",text:"",type:1,order:4175,group:5,subgroup:59,version:1,shortCodes:["waning_crescent_moon"]},{label:"crescent moon",hexcode:"1F319",tags:["crescent","moon","ramadan","space"],emoji:"🌙",text:"",type:1,order:4176,group:5,subgroup:59,version:.6,shortCodes:["crescent_moon"]},{label:"new moon face",hexcode:"1F31A",tags:["face","moon","new","space"],emoji:"🌚",text:"",type:1,order:4177,group:5,subgroup:59,version:1,shortCodes:["new_moon_with_face"]},{label:"first quarter moon face",hexcode:"1F31B",tags:["face","first","moon","quarter","space"],emoji:"🌛",text:"",type:1,order:4178,group:5,subgroup:59,version:.6,shortCodes:["first_quarter_moon_with_face"]},{label:"last quarter moon face",hexcode:"1F31C",tags:["dreams","face","last","moon","quarter"],emoji:"🌜️",text:"🌜︎",type:1,order:4179,group:5,subgroup:59,version:.7,shortCodes:["last_quarter_moon_with_face"]},{label:"thermometer",hexcode:"1F321",tags:["weather"],emoji:"🌡️",text:"🌡︎",type:0,order:4181,group:5,subgroup:59,version:.7,shortCodes:["thermometer"]},{label:"sun",hexcode:"2600",tags:["bright","rays","space","sunny","weather"],emoji:"☀️",text:"☀︎",type:0,order:4183,group:5,subgroup:59,version:.6,shortCodes:["sun"]},{label:"full moon face",hexcode:"1F31D",tags:["bright","face","full","moon"],emoji:"🌝",text:"",type:1,order:4184,group:5,subgroup:59,version:1,shortCodes:["full_moon_with_face"]},{label:"sun with face",hexcode:"1F31E",tags:["beach","bright","day","face","heat","shine","sun","sunny","sunshine","weather"],emoji:"🌞",text:"",type:1,order:4185,group:5,subgroup:59,version:1,shortCodes:["sun_with_face"]},{label:"ringed planet",hexcode:"1FA90",tags:["planet","ringed","saturn","saturnine"],emoji:"🪐",text:"",type:1,order:4186,group:5,subgroup:59,version:12,shortCodes:["ringed_planet","saturn"]},{label:"star",hexcode:"2B50",tags:["astronomy","medium","stars","white"],emoji:"⭐️",text:"⭐︎",type:1,order:4187,group:5,subgroup:59,version:.6,shortCodes:["star"]},{label:"glowing star",hexcode:"1F31F",tags:["glittery","glow","glowing","night","shining","sparkle","star","win"],emoji:"🌟",text:"",type:1,order:4188,group:5,subgroup:59,version:.6,shortCodes:["glowing_star","star2"]},{label:"shooting star",hexcode:"1F320",tags:["falling","night","shooting","space","star"],emoji:"🌠",text:"",type:1,order:4189,group:5,subgroup:59,version:.6,shortCodes:["shooting_star","stars"]},{label:"milky way",hexcode:"1F30C",tags:["milky","space","way"],emoji:"🌌",text:"",type:1,order:4190,group:5,subgroup:59,version:.6,shortCodes:["milky_way"]},{label:"cloud",hexcode:"2601",tags:["weather"],emoji:"☁️",text:"☁︎",type:0,order:4192,group:5,subgroup:59,version:.6,shortCodes:["cloud"]},{label:"sun behind cloud",hexcode:"26C5",tags:["behind","cloud","cloudy","sun","weather"],emoji:"⛅️",text:"⛅︎",type:1,order:4193,group:5,subgroup:59,version:.6,shortCodes:["partly_sunny","sun_behind_cloud"]},{label:"cloud with lightning and rain",hexcode:"26C8",tags:["cloud","lightning","rain","thunder","thunderstorm"],emoji:"⛈️",text:"⛈︎",type:0,order:4195,group:5,subgroup:59,version:.7,shortCodes:["stormy","thunder_cloud_and_rain"]},{label:"sun behind small cloud",hexcode:"1F324",tags:["behind","cloud","sun","weather"],emoji:"🌤️",text:"🌤︎",type:0,order:4197,group:5,subgroup:59,version:.7,shortCodes:["sun_behind_small_cloud","sunny"]},{label:"sun behind large cloud",hexcode:"1F325",tags:["behind","cloud","sun","weather"],emoji:"🌥️",text:"🌥︎",type:0,order:4199,group:5,subgroup:59,version:.7,shortCodes:["cloudy","sun_behind_large_cloud"]},{label:"sun behind rain cloud",hexcode:"1F326",tags:["behind","cloud","rain","sun","weather"],emoji:"🌦️",text:"🌦︎",type:0,order:4201,group:5,subgroup:59,version:.7,shortCodes:["sun_and_rain","sun_behind_rain_cloud"]},{label:"cloud with rain",hexcode:"1F327",tags:["cloud","rain","weather"],emoji:"🌧️",text:"🌧︎",type:0,order:4203,group:5,subgroup:59,version:.7,shortCodes:["cloud_with_rain","rainy"]},{label:"cloud with snow",hexcode:"1F328",tags:["cloud","cold","snow","weather"],emoji:"🌨️",text:"🌨︎",type:0,order:4205,group:5,subgroup:59,version:.7,shortCodes:["cloud_with_snow","snowy"]},{label:"cloud with lightning",hexcode:"1F329",tags:["cloud","lightning","weather"],emoji:"🌩️",text:"🌩︎",type:0,order:4207,group:5,subgroup:59,version:.7,shortCodes:["cloud_with_lightning","lightning"]},{label:"tornado",hexcode:"1F32A",tags:["cloud","weather","whirlwind"],emoji:"🌪️",text:"🌪︎",type:0,order:4209,group:5,subgroup:59,version:.7,shortCodes:["tornado"]},{label:"fog",hexcode:"1F32B",tags:["cloud","weather"],emoji:"🌫️",text:"🌫︎",type:0,order:4211,group:5,subgroup:59,version:.7,shortCodes:["fog"]},{label:"wind face",hexcode:"1F32C",tags:["blow","cloud","face","wind"],emoji:"🌬️",text:"🌬︎",type:0,order:4213,group:5,subgroup:59,version:.7,shortCodes:["wind_blowing_face"]},{label:"cyclone",hexcode:"1F300",tags:["dizzy","hurricane","twister","typhoon","weather"],emoji:"🌀",text:"",type:1,order:4214,group:5,subgroup:59,version:.6,shortCodes:["cyclone"]},{label:"rainbow",hexcode:"1F308",tags:["gay","genderqueer","glbt","glbtq","lesbian","lgbt","lgbtq","lgbtqia","nature","pride","queer","rain","trans","transgender","weather"],emoji:"🌈",text:"",type:1,order:4215,group:5,subgroup:59,version:.6,shortCodes:["rainbow"]},{label:"closed umbrella",hexcode:"1F302",tags:["closed","clothing","rain","umbrella"],emoji:"🌂",text:"",type:1,order:4216,group:5,subgroup:59,version:.6,shortCodes:["closed_umbrella"]},{label:"umbrella",hexcode:"2602",tags:["clothing","rain"],emoji:"☂️",text:"☂︎",type:0,order:4218,group:5,subgroup:59,version:.7,shortCodes:["umbrella"]},{label:"umbrella with rain drops",hexcode:"2614",tags:["clothing","drop","drops","rain","umbrella","weather"],emoji:"☔️",text:"☔︎",type:1,order:4219,group:5,subgroup:59,version:.6,shortCodes:["umbrella_with_rain"]},{label:"umbrella on ground",hexcode:"26F1",tags:["ground","rain","sun","umbrella"],emoji:"⛱️",text:"⛱︎",type:0,order:4221,group:5,subgroup:59,version:.7,shortCodes:["beach_umbrella","umbrella_on_ground"]},{label:"high voltage",hexcode:"26A1",tags:["danger","electric","electricity","high","lightning","nature","thunder","thunderbolt","voltage","zap"],emoji:"⚡️",text:"⚡︎",type:1,order:4222,group:5,subgroup:59,version:.6,shortCodes:["high_voltage","zap"]},{label:"snowflake",hexcode:"2744",tags:["cold","snow","weather"],emoji:"❄️",text:"❄︎",type:0,order:4224,group:5,subgroup:59,version:.6,shortCodes:["snowflake"]},{label:"snowman",hexcode:"2603",tags:["cold","man","snow"],emoji:"☃️",text:"☃︎",type:0,order:4226,group:5,subgroup:59,version:.7,shortCodes:["snowman2"]},{label:"snowman without snow",hexcode:"26C4",tags:["cold","man","snow","snowman"],emoji:"⛄️",text:"⛄︎",type:1,order:4227,group:5,subgroup:59,version:.6,shortCodes:["snowman"]},{label:"comet",hexcode:"2604",tags:["space"],emoji:"☄️",text:"☄︎",type:0,order:4229,group:5,subgroup:59,version:1,shortCodes:["comet"]},{label:"fire",hexcode:"1F525",tags:["af","burn","flame","hot","lit","litaf","tool"],emoji:"🔥",text:"",type:1,order:4230,group:5,subgroup:59,version:.6,shortCodes:["fire"]},{label:"droplet",hexcode:"1F4A7",tags:["cold","comic","drop","nature","sad","sweat","tear","water","weather"],emoji:"💧",text:"",type:1,order:4231,group:5,subgroup:59,version:.6,shortCodes:["droplet"]},{label:"water wave",hexcode:"1F30A",tags:["nature","ocean","surf","surfer","surfing","water","wave"],emoji:"🌊",text:"",type:1,order:4232,group:5,subgroup:59,version:.6,shortCodes:["ocean","water_wave"]},{label:"jack-o-lantern",hexcode:"1F383",tags:["celebration","halloween","jack","lantern","pumpkin"],emoji:"🎃",text:"",type:1,order:4233,group:6,subgroup:60,version:.6,shortCodes:["jack_o_lantern"]},{label:"Christmas tree",hexcode:"1F384",tags:["celebration","christmas","tree"],emoji:"🎄",text:"",type:1,order:4234,group:6,subgroup:60,version:.6,shortCodes:["christmas_tree"]},{label:"fireworks",hexcode:"1F386",tags:["boom","celebration","entertainment","yolo"],emoji:"🎆",text:"",type:1,order:4235,group:6,subgroup:60,version:.6,shortCodes:["fireworks"]},{label:"sparkler",hexcode:"1F387",tags:["boom","celebration","fireworks","sparkle"],emoji:"🎇",text:"",type:1,order:4236,group:6,subgroup:60,version:.6,shortCodes:["sparkler"]},{label:"firecracker",hexcode:"1F9E8",tags:["dynamite","explosive","fire","fireworks","light","pop","popping","spark"],emoji:"🧨",text:"",type:1,order:4237,group:6,subgroup:60,version:11,shortCodes:["firecracker"]},{label:"sparkles",hexcode:"2728",tags:["*","magic","sparkle","star"],emoji:"✨️",text:"✨︎",type:1,order:4238,group:6,subgroup:60,version:.6,shortCodes:["sparkles"]},{label:"balloon",hexcode:"1F388",tags:["birthday","celebrate","celebration"],emoji:"🎈",text:"",type:1,order:4239,group:6,subgroup:60,version:.6,shortCodes:["balloon"]},{label:"party popper",hexcode:"1F389",tags:["awesome","birthday","celebrate","celebration","excited","hooray","party","popper","tada","woohoo"],emoji:"🎉",text:"",type:1,order:4240,group:6,subgroup:60,version:.6,shortCodes:["party","party_popper","tada"]},{label:"confetti ball",hexcode:"1F38A",tags:["ball","celebrate","celebration","confetti","party","woohoo"],emoji:"🎊",text:"",type:1,order:4241,group:6,subgroup:60,version:.6,shortCodes:["confetti_ball"]},{label:"tanabata tree",hexcode:"1F38B",tags:["banner","celebration","japanese","tanabata","tree"],emoji:"🎋",text:"",type:1,order:4242,group:6,subgroup:60,version:.6,shortCodes:["tanabata_tree"]},{label:"pine decoration",hexcode:"1F38D",tags:["bamboo","celebration","decoration","japanese","pine","plant"],emoji:"🎍",text:"",type:1,order:4243,group:6,subgroup:60,version:.6,shortCodes:["bamboo"]},{label:"Japanese dolls",hexcode:"1F38E",tags:["celebration","doll","dolls","festival","japanese"],emoji:"🎎",text:"",type:1,order:4244,group:6,subgroup:60,version:.6,shortCodes:["dolls"]},{label:"carp streamer",hexcode:"1F38F",tags:["carp","celebration","streamer"],emoji:"🎏",text:"",type:1,order:4245,group:6,subgroup:60,version:.6,shortCodes:["carp_streamer","flags"]},{label:"wind chime",hexcode:"1F390",tags:["bell","celebration","chime","wind"],emoji:"🎐",text:"",type:1,order:4246,group:6,subgroup:60,version:.6,shortCodes:["wind_chime"]},{label:"moon viewing ceremony",hexcode:"1F391",tags:["celebration","ceremony","moon","viewing"],emoji:"🎑",text:"",type:1,order:4247,group:6,subgroup:60,version:.6,shortCodes:["moon_ceremony","rice_scene"]},{label:"red envelope",hexcode:"1F9E7",tags:["envelope","gift","good","hóngbāo","lai","luck","money","red","see"],emoji:"🧧",text:"",type:1,order:4248,group:6,subgroup:60,version:11,shortCodes:["red_envelope"]},{label:"ribbon",hexcode:"1F380",tags:["celebration"],emoji:"🎀",text:"",type:1,order:4249,group:6,subgroup:60,version:.6,shortCodes:["ribbon"]},{label:"wrapped gift",hexcode:"1F381",tags:["birthday","bow","box","celebration","christmas","gift","present","surprise","wrapped"],emoji:"🎁",text:"",type:1,order:4250,group:6,subgroup:60,version:.6,shortCodes:["gift"]},{label:"reminder ribbon",hexcode:"1F397",tags:["celebration","reminder","ribbon"],emoji:"🎗️",text:"🎗︎",type:0,order:4252,group:6,subgroup:60,version:.7,shortCodes:["reminder_ribbon"]},{label:"admission tickets",hexcode:"1F39F",tags:["admission","ticket","tickets"],emoji:"🎟️",text:"🎟︎",type:0,order:4254,group:6,subgroup:60,version:.7,shortCodes:["admission_tickets","tickets"]},{label:"ticket",hexcode:"1F3AB",tags:["admission","stub"],emoji:"🎫",text:"",type:1,order:4255,group:6,subgroup:60,version:.6,shortCodes:["ticket"]},{label:"military medal",hexcode:"1F396",tags:["award","celebration","medal","military"],emoji:"🎖️",text:"🎖︎",type:0,order:4257,group:6,subgroup:61,version:.7,shortCodes:["military_medal"]},{label:"trophy",hexcode:"1F3C6",tags:["champion","champs","prize","slay","sport","victory","win","winning"],emoji:"🏆️",text:"🏆︎",type:1,order:4258,group:6,subgroup:61,version:.6,shortCodes:["trophy"]},{label:"sports medal",hexcode:"1F3C5",tags:["award","gold","medal","sports","winner"],emoji:"🏅",text:"",type:1,order:4259,group:6,subgroup:61,version:1,shortCodes:["sports_medal"]},{label:"1st place medal",hexcode:"1F947",tags:["1st","first","gold","medal","place"],emoji:"🥇",text:"",type:1,order:4260,group:6,subgroup:61,version:3,shortCodes:["1st","first_place_medal"]},{label:"2nd place medal",hexcode:"1F948",tags:["2nd","medal","place","second","silver"],emoji:"🥈",text:"",type:1,order:4261,group:6,subgroup:61,version:3,shortCodes:["2nd","second_place_medal"]},{label:"3rd place medal",hexcode:"1F949",tags:["3rd","bronze","medal","place","third"],emoji:"🥉",text:"",type:1,order:4262,group:6,subgroup:61,version:3,shortCodes:["3rd","third_place_medal"]},{label:"soccer ball",hexcode:"26BD",tags:["ball","football","futbol","soccer","sport"],emoji:"⚽️",text:"⚽︎",type:1,order:4263,group:6,subgroup:62,version:.6,shortCodes:["soccer"]},{label:"baseball",hexcode:"26BE",tags:["ball","sport"],emoji:"⚾️",text:"⚾︎",type:1,order:4264,group:6,subgroup:62,version:.6,shortCodes:["baseball"]},{label:"softball",hexcode:"1F94E",tags:["ball","glove","sports","underarm"],emoji:"🥎",text:"",type:1,order:4265,group:6,subgroup:62,version:11,shortCodes:["softball"]},{label:"basketball",hexcode:"1F3C0",tags:["ball","hoop","sport"],emoji:"🏀",text:"",type:1,order:4266,group:6,subgroup:62,version:.6,shortCodes:["basketball"]},{label:"volleyball",hexcode:"1F3D0",tags:["ball","game"],emoji:"🏐",text:"",type:1,order:4267,group:6,subgroup:62,version:1,shortCodes:["volleyball"]},{label:"american football",hexcode:"1F3C8",tags:["american","ball","bowl","football","sport","super"],emoji:"🏈",text:"",type:1,order:4268,group:6,subgroup:62,version:.6,shortCodes:["football"]},{label:"rugby football",hexcode:"1F3C9",tags:["ball","football","rugby","sport"],emoji:"🏉",text:"",type:1,order:4269,group:6,subgroup:62,version:1,shortCodes:["rugby_football"]},{label:"tennis",hexcode:"1F3BE",tags:["ball","racquet","sport"],emoji:"🎾",text:"",type:1,order:4270,group:6,subgroup:62,version:.6,shortCodes:["tennis"]},{label:"flying disc",hexcode:"1F94F",tags:["disc","flying","ultimate"],emoji:"🥏",text:"",type:1,order:4271,group:6,subgroup:62,version:11,shortCodes:["flying_disc"]},{label:"bowling",hexcode:"1F3B3",tags:["ball","game","sport","strike"],emoji:"🎳",text:"",type:1,order:4272,group:6,subgroup:62,version:.6,shortCodes:["bowling"]},{label:"cricket game",hexcode:"1F3CF",tags:["ball","bat","cricket","game"],emoji:"🏏",text:"",type:1,order:4273,group:6,subgroup:62,version:1,shortCodes:["cricket_game"]},{label:"field hockey",hexcode:"1F3D1",tags:["ball","field","game","hockey","stick"],emoji:"🏑",text:"",type:1,order:4274,group:6,subgroup:62,version:1,shortCodes:["field_hockey"]},{label:"ice hockey",hexcode:"1F3D2",tags:["game","hockey","ice","puck","stick"],emoji:"🏒",text:"",type:1,order:4275,group:6,subgroup:62,version:1,shortCodes:["hockey"]},{label:"lacrosse",hexcode:"1F94D",tags:["ball","goal","sports","stick"],emoji:"🥍",text:"",type:1,order:4276,group:6,subgroup:62,version:11,shortCodes:["lacrosse"]},{label:"ping pong",hexcode:"1F3D3",tags:["ball","bat","game","paddle","ping","pingpong","pong","table","tennis"],emoji:"🏓",text:"",type:1,order:4277,group:6,subgroup:62,version:1,shortCodes:["ping_pong"]},{label:"badminton",hexcode:"1F3F8",tags:["birdie","game","racquet","shuttlecock"],emoji:"🏸",text:"",type:1,order:4278,group:6,subgroup:62,version:1,shortCodes:["badminton"]},{label:"boxing glove",hexcode:"1F94A",tags:["boxing","glove"],emoji:"🥊",text:"",type:1,order:4279,group:6,subgroup:62,version:3,shortCodes:["boxing_glove"]},{label:"martial arts uniform",hexcode:"1F94B",tags:["arts","judo","karate","martial","taekwondo","uniform"],emoji:"🥋",text:"",type:1,order:4280,group:6,subgroup:62,version:3,shortCodes:["martial_arts_uniform"]},{label:"goal net",hexcode:"1F945",tags:["goal","net"],emoji:"🥅",text:"",type:1,order:4281,group:6,subgroup:62,version:3,shortCodes:["goal_net"]},{label:"flag in hole",hexcode:"26F3",tags:["flag","golf","hole","sport"],emoji:"⛳️",text:"⛳︎",type:1,order:4282,group:6,subgroup:62,version:.6,shortCodes:["golf"]},{label:"ice skate",hexcode:"26F8",tags:["ice","skate","skating"],emoji:"⛸️",text:"⛸︎",type:0,order:4284,group:6,subgroup:62,version:.7,shortCodes:["ice_skate"]},{label:"fishing pole",hexcode:"1F3A3",tags:["entertainment","fish","fishing","pole","sport"],emoji:"🎣",text:"",type:1,order:4285,group:6,subgroup:62,version:.6,shortCodes:["fishing_pole","fishing_pole_and_fish"]},{label:"diving mask",hexcode:"1F93F",tags:["diving","mask","scuba","snorkeling"],emoji:"🤿",text:"",type:1,order:4286,group:6,subgroup:62,version:12,shortCodes:["diving_mask"]},{label:"running shirt",hexcode:"1F3BD",tags:["athletics","running","sash","shirt"],emoji:"🎽",text:"",type:1,order:4287,group:6,subgroup:62,version:.6,shortCodes:["running_shirt","running_shirt_with_sash"]},{label:"skis",hexcode:"1F3BF",tags:["ski","snow","sport"],emoji:"🎿",text:"",type:1,order:4288,group:6,subgroup:62,version:.6,shortCodes:["ski"]},{label:"sled",hexcode:"1F6F7",tags:["luge","sledge","sleigh","snow","toboggan"],emoji:"🛷",text:"",type:1,order:4289,group:6,subgroup:62,version:5,shortCodes:["sled"]},{label:"curling stone",hexcode:"1F94C",tags:["curling","game","rock","stone"],emoji:"🥌",text:"",type:1,order:4290,group:6,subgroup:62,version:5,shortCodes:["curling_stone"]},{label:"bullseye",hexcode:"1F3AF",tags:["bull","dart","direct","entertainment","game","hit","target"],emoji:"🎯",text:"",type:1,order:4291,group:6,subgroup:63,version:.6,shortCodes:["bullseye","dart","direct_hit"]},{label:"yo-yo",hexcode:"1FA80",tags:["fluctuate","toy"],emoji:"🪀",text:"",type:1,order:4292,group:6,subgroup:63,version:12,shortCodes:["yo_yo"]},{label:"kite",hexcode:"1FA81",tags:["fly","soar"],emoji:"🪁",text:"",type:1,order:4293,group:6,subgroup:63,version:12,shortCodes:["kite"]},{label:"water pistol",hexcode:"1F52B",tags:["gun","handgun","pistol","revolver","tool","water","weapon"],emoji:"🔫",text:"",type:1,order:4294,group:6,subgroup:63,version:.6,shortCodes:["gun","pistol"]},{label:"pool 8 ball",hexcode:"1F3B1",tags:["8","8ball","ball","billiard","eight","game","pool"],emoji:"🎱",text:"",type:1,order:4295,group:6,subgroup:63,version:.6,shortCodes:["8ball","billiards"]},{label:"crystal ball",hexcode:"1F52E",tags:["ball","crystal","fairy","fairytale","fantasy","fortune","future","magic","tale","tool"],emoji:"🔮",text:"",type:1,order:4296,group:6,subgroup:63,version:.6,shortCodes:["crystal_ball"]},{label:"magic wand",hexcode:"1FA84",tags:["magic","magician","wand","witch","wizard"],emoji:"🪄",text:"",type:1,order:4297,group:6,subgroup:63,version:13,shortCodes:["magic_wand"]},{label:"video game",hexcode:"1F3AE",tags:["controller","entertainment","game","video"],emoji:"🎮️",text:"🎮︎",type:1,order:4298,group:6,subgroup:63,version:.6,shortCodes:["controller","video_game"]},{label:"joystick",hexcode:"1F579",tags:["game","video","videogame"],emoji:"🕹️",text:"🕹︎",type:0,order:4300,group:6,subgroup:63,version:.7,shortCodes:["joystick"]},{label:"slot machine",hexcode:"1F3B0",tags:["casino","gamble","gambling","game","machine","slot","slots"],emoji:"🎰",text:"",type:1,order:4301,group:6,subgroup:63,version:.6,shortCodes:["slot_machine"]},{label:"game die",hexcode:"1F3B2",tags:["dice","die","entertainment","game"],emoji:"🎲",text:"",type:1,order:4302,group:6,subgroup:63,version:.6,shortCodes:["game_die"]},{label:"puzzle piece",hexcode:"1F9E9",tags:["clue","interlocking","jigsaw","piece","puzzle"],emoji:"🧩",text:"",type:1,order:4303,group:6,subgroup:63,version:11,shortCodes:["jigsaw","puzzle_piece"]},{label:"teddy bear",hexcode:"1F9F8",tags:["bear","plaything","plush","stuffed","teddy","toy"],emoji:"🧸",text:"",type:1,order:4304,group:6,subgroup:63,version:11,shortCodes:["teddy_bear"]},{label:"piñata",hexcode:"1FA85",tags:["candy","celebrate","celebration","cinco","de","festive","mayo","party","pinada","pinata"],emoji:"🪅",text:"",type:1,order:4305,group:6,subgroup:63,version:13,shortCodes:["pinata"]},{label:"mirror ball",hexcode:"1FAA9",tags:["ball","dance","disco","glitter","mirror","party"],emoji:"🪩",text:"",type:1,order:4306,group:6,subgroup:63,version:14,shortCodes:["disco","disco_ball","mirror_ball"]},{label:"nesting dolls",hexcode:"1FA86",tags:["babooshka","baboushka","babushka","doll","dolls","matryoshka","nesting","russia"],emoji:"🪆",text:"",type:1,order:4307,group:6,subgroup:63,version:13,shortCodes:["nesting_dolls"]},{label:"spade suit",hexcode:"2660",tags:["card","game","spade","suit"],emoji:"♠️",text:"♠︎",type:0,order:4309,group:6,subgroup:63,version:.6,shortCodes:["spades"]},{label:"heart suit",hexcode:"2665",tags:["card","emotion","game","heart","hearts","suit"],emoji:"♥️",text:"♥︎",type:0,order:4311,group:6,subgroup:63,version:.6,shortCodes:["hearts"]},{label:"diamond suit",hexcode:"2666",tags:["card","diamond","game","suit"],emoji:"♦️",text:"♦︎",type:0,order:4313,group:6,subgroup:63,version:.6,shortCodes:["diamonds"]},{label:"club suit",hexcode:"2663",tags:["card","club","clubs","game","suit"],emoji:"♣️",text:"♣︎",type:0,order:4315,group:6,subgroup:63,version:.6,shortCodes:["clubs"]},{label:"chess pawn",hexcode:"265F",tags:["chess","dupe","expendable","pawn"],emoji:"♟️",text:"♟︎",type:0,order:4317,group:6,subgroup:63,version:11,shortCodes:["chess_pawn"]},{label:"joker",hexcode:"1F0CF",tags:["card","game","wildcard"],emoji:"🃏",text:"",type:1,order:4318,group:6,subgroup:63,version:.6,shortCodes:["black_joker"]},{label:"mahjong red dragon",hexcode:"1F004",tags:["dragon","game","mahjong","red"],emoji:"🀄️",text:"🀄︎",type:1,order:4319,group:6,subgroup:63,version:.6,shortCodes:["mahjong"]},{label:"flower playing cards",hexcode:"1F3B4",tags:["card","cards","flower","game","japanese","playing"],emoji:"🎴",text:"",type:1,order:4320,group:6,subgroup:63,version:.6,shortCodes:["flower_playing_cards"]},{label:"performing arts",hexcode:"1F3AD",tags:["actor","actress","art","arts","entertainment","mask","performing","theater","theatre","thespian"],emoji:"🎭️",text:"🎭︎",type:1,order:4321,group:6,subgroup:64,version:.6,shortCodes:["performing_arts"]},{label:"framed picture",hexcode:"1F5BC",tags:["art","frame","framed","museum","painting","picture"],emoji:"🖼️",text:"🖼︎",type:0,order:4323,group:6,subgroup:64,version:.7,shortCodes:["frame_with_picture","framed_picture"]},{label:"artist palette",hexcode:"1F3A8",tags:["art","artist","artsy","arty","colorful","creative","entertainment","museum","painter","painting","palette"],emoji:"🎨",text:"",type:1,order:4324,group:6,subgroup:64,version:.6,shortCodes:["art","palette"]},{label:"thread",hexcode:"1F9F5",tags:["needle","sewing","spool","string"],emoji:"🧵",text:"",type:1,order:4325,group:6,subgroup:64,version:11,shortCodes:["thread"]},{label:"sewing needle",hexcode:"1FAA1",tags:["embroidery","needle","sew","sewing","stitches","sutures","tailoring","thread"],emoji:"🪡",text:"",type:1,order:4326,group:6,subgroup:64,version:13,shortCodes:["sewing_needle"]},{label:"yarn",hexcode:"1F9F6",tags:["ball","crochet","knit"],emoji:"🧶",text:"",type:1,order:4327,group:6,subgroup:64,version:11,shortCodes:["yarn"]},{label:"knot",hexcode:"1FAA2",tags:["cord","rope","tangled","tie","twine","twist"],emoji:"🪢",text:"",type:1,order:4328,group:6,subgroup:64,version:13,shortCodes:["knot"]},{label:"glasses",hexcode:"1F453",tags:["clothing","eye","eyeglasses","eyewear"],emoji:"👓️",text:"👓︎",type:1,order:4329,group:7,subgroup:65,version:.6,shortCodes:["eyeglasses","glasses"]},{label:"sunglasses",hexcode:"1F576",tags:["dark","eye","eyewear","glasses"],emoji:"🕶️",text:"🕶︎",type:0,order:4331,group:7,subgroup:65,version:.7,shortCodes:["sunglasses"]},{label:"goggles",hexcode:"1F97D",tags:["dive","eye","protection","scuba","swimming","welding"],emoji:"🥽",text:"",type:1,order:4332,group:7,subgroup:65,version:11,shortCodes:["goggles"]},{label:"lab coat",hexcode:"1F97C",tags:["clothes","coat","doctor","dr","experiment","jacket","lab","scientist","white"],emoji:"🥼",text:"",type:1,order:4333,group:7,subgroup:65,version:11,shortCodes:["lab_coat"]},{label:"safety vest",hexcode:"1F9BA",tags:["emergency","safety","vest"],emoji:"🦺",text:"",type:1,order:4334,group:7,subgroup:65,version:12,shortCodes:["safety_vest"]},{label:"necktie",hexcode:"1F454",tags:["clothing","employed","serious","shirt","tie"],emoji:"👔",text:"",type:1,order:4335,group:7,subgroup:65,version:.6,shortCodes:["necktie"]},{label:"t-shirt",hexcode:"1F455",tags:["blue","casual","clothes","clothing","collar","dressed","shirt","shopping","tshirt","weekend"],emoji:"👕",text:"",type:1,order:4336,group:7,subgroup:65,version:.6,shortCodes:["shirt"]},{label:"jeans",hexcode:"1F456",tags:["blue","casual","clothes","clothing","denim","dressed","pants","shopping","trousers","weekend"],emoji:"👖",text:"",type:1,order:4337,group:7,subgroup:65,version:.6,shortCodes:["jeans"]},{label:"scarf",hexcode:"1F9E3",tags:["bundle","cold","neck","up"],emoji:"🧣",text:"",type:1,order:4338,group:7,subgroup:65,version:5,shortCodes:["scarf"]},{label:"gloves",hexcode:"1F9E4",tags:["hand"],emoji:"🧤",text:"",type:1,order:4339,group:7,subgroup:65,version:5,shortCodes:["gloves"]},{label:"coat",hexcode:"1F9E5",tags:["brr","bundle","cold","jacket","up"],emoji:"🧥",text:"",type:1,order:4340,group:7,subgroup:65,version:5,shortCodes:["coat"]},{label:"socks",hexcode:"1F9E6",tags:["stocking"],emoji:"🧦",text:"",type:1,order:4341,group:7,subgroup:65,version:5,shortCodes:["socks"]},{label:"dress",hexcode:"1F457",tags:["clothes","clothing","dressed","fancy","shopping"],emoji:"👗",text:"",type:1,order:4342,group:7,subgroup:65,version:.6,shortCodes:["dress"]},{label:"kimono",hexcode:"1F458",tags:["clothing","comfortable"],emoji:"👘",text:"",type:1,order:4343,group:7,subgroup:65,version:.6,shortCodes:["kimono"]},{label:"sari",hexcode:"1F97B",tags:["clothing","dress"],emoji:"🥻",text:"",type:1,order:4344,group:7,subgroup:65,version:12,shortCodes:["sari"]},{label:"one-piece swimsuit",hexcode:"1FA71",tags:["bathing","one-piece","suit","swimsuit"],emoji:"🩱",text:"",type:1,order:4345,group:7,subgroup:65,version:12,shortCodes:["one_piece_swimsuit"]},{label:"briefs",hexcode:"1FA72",tags:["bathing","one-piece","suit","swimsuit","underwear"],emoji:"🩲",text:"",type:1,order:4346,group:7,subgroup:65,version:12,shortCodes:["briefs"]},{label:"shorts",hexcode:"1FA73",tags:["bathing","pants","suit","swimsuit","underwear"],emoji:"🩳",text:"",type:1,order:4347,group:7,subgroup:65,version:12,shortCodes:["shorts"]},{label:"bikini",hexcode:"1F459",tags:["bathing","beach","clothing","pool","suit","swim"],emoji:"👙",text:"",type:1,order:4348,group:7,subgroup:65,version:.6,shortCodes:["bikini"]},{label:"woman’s clothes",hexcode:"1F45A",tags:["blouse","clothes","clothing","collar","dress","dressed","lady","shirt","shopping","woman","woman’s"],emoji:"👚",text:"",type:1,order:4349,group:7,subgroup:65,version:.6,shortCodes:["womans_clothes"]},{label:"folding hand fan",hexcode:"1FAAD",tags:["clack","clap","cool","cooling","dance","fan","flirt","flutter","folding","hand","hot","shy"],emoji:"🪭",text:"",type:1,order:4350,group:7,subgroup:65,version:15,shortCodes:["folding_fan"]},{label:"purse",hexcode:"1F45B",tags:["clothes","clothing","coin","dress","fancy","handbag","shopping"],emoji:"👛",text:"",type:1,order:4351,group:7,subgroup:65,version:.6,shortCodes:["purse"]},{label:"handbag",hexcode:"1F45C",tags:["bag","clothes","clothing","dress","lady","purse","shopping"],emoji:"👜",text:"",type:1,order:4352,group:7,subgroup:65,version:.6,shortCodes:["handbag"]},{label:"clutch bag",hexcode:"1F45D",tags:["bag","clothes","clothing","clutch","dress","handbag","pouch","purse"],emoji:"👝",text:"",type:1,order:4353,group:7,subgroup:65,version:.6,shortCodes:["clutch_bag","pouch"]},{label:"shopping bags",hexcode:"1F6CD",tags:["bag","bags","hotel","shopping"],emoji:"🛍️",text:"🛍︎",type:0,order:4355,group:7,subgroup:65,version:.7,shortCodes:["shopping_bags"]},{label:"backpack",hexcode:"1F392",tags:["backpacking","bag","bookbag","education","rucksack","satchel","school"],emoji:"🎒",text:"",type:1,order:4356,group:7,subgroup:65,version:.6,shortCodes:["backpack","school_satchel"]},{label:"thong sandal",hexcode:"1FA74",tags:["beach","flip","flop","sandal","sandals","shoe","thong","thongs","zōri"],emoji:"🩴",text:"",type:1,order:4357,group:7,subgroup:65,version:13,shortCodes:["thong_sandal"]},{label:"man’s shoe",hexcode:"1F45E",tags:["brown","clothes","clothing","feet","foot","kick","man","man’s","shoe","shoes","shopping"],emoji:"👞",text:"",type:1,order:4358,group:7,subgroup:65,version:.6,shortCodes:["mans_shoe"]},{label:"running shoe",hexcode:"1F45F",tags:["athletic","clothes","clothing","fast","kick","running","shoe","shoes","shopping","sneaker","tennis"],emoji:"👟",text:"",type:1,order:4359,group:7,subgroup:65,version:.6,shortCodes:["athletic_shoe","sneaker"]},{label:"hiking boot",hexcode:"1F97E",tags:["backpacking","boot","brown","camping","hiking","outdoors","shoe"],emoji:"🥾",text:"",type:1,order:4360,group:7,subgroup:65,version:11,shortCodes:["hiking_boot"]},{label:"flat shoe",hexcode:"1F97F",tags:["ballet","comfy","flat","flats","shoe","slip-on","slipper"],emoji:"🥿",text:"",type:1,order:4361,group:7,subgroup:65,version:11,shortCodes:["flat_shoe","womans_flat_shoe"]},{label:"high-heeled shoe",hexcode:"1F460",tags:["clothes","clothing","dress","fashion","heel","heels","high-heeled","shoe","shoes","shopping","stiletto","woman"],emoji:"👠",text:"",type:1,order:4362,group:7,subgroup:65,version:.6,shortCodes:["high_heel"]},{label:"woman’s sandal",hexcode:"1F461",tags:["clothing","sandal","shoe","woman","woman’s"],emoji:"👡",text:"",type:1,order:4363,group:7,subgroup:65,version:.6,shortCodes:["sandal"]},{label:"ballet shoes",hexcode:"1FA70",tags:["ballet","dance","shoes"],emoji:"🩰",text:"",type:1,order:4364,group:7,subgroup:65,version:12,shortCodes:["ballet_shoes"]},{label:"woman’s boot",hexcode:"1F462",tags:["boot","clothes","clothing","dress","shoe","shoes","shopping","woman","woman’s"],emoji:"👢",text:"",type:1,order:4365,group:7,subgroup:65,version:.6,shortCodes:["boot"]},{label:"hair pick",hexcode:"1FAAE",tags:["afro","comb","groom","hair","pick"],emoji:"🪮",text:"",type:1,order:4366,group:7,subgroup:65,version:15,shortCodes:["hair_pick"]},{label:"crown",hexcode:"1F451",tags:["clothing","family","king","medieval","queen","royal","royalty","win"],emoji:"👑",text:"",type:1,order:4367,group:7,subgroup:65,version:.6,shortCodes:["crown"]},{label:"woman’s hat",hexcode:"1F452",tags:["clothes","clothing","garden","hat","hats","party","woman","woman’s"],emoji:"👒",text:"",type:1,order:4368,group:7,subgroup:65,version:.6,shortCodes:["womans_hat"]},{label:"top hat",hexcode:"1F3A9",tags:["clothes","clothing","fancy","formal","hat","magic","top","tophat"],emoji:"🎩",text:"",type:1,order:4369,group:7,subgroup:65,version:.6,shortCodes:["top_hat","tophat"]},{label:"graduation cap",hexcode:"1F393",tags:["cap","celebration","clothing","education","graduation","hat","scholar"],emoji:"🎓️",text:"🎓︎",type:1,order:4370,group:7,subgroup:65,version:.6,shortCodes:["graduation_cap","mortar_board"]},{label:"billed cap",hexcode:"1F9E2",tags:["baseball","bent","billed","cap","dad","hat"],emoji:"🧢",text:"",type:1,order:4371,group:7,subgroup:65,version:5,shortCodes:["billed_cap"]},{label:"military helmet",hexcode:"1FA96",tags:["army","helmet","military","soldier","war","warrior"],emoji:"🪖",text:"",type:1,order:4372,group:7,subgroup:65,version:13,shortCodes:["military_helmet"]},{label:"rescue worker’s helmet",hexcode:"26D1",tags:["aid","cross","face","hat","helmet","rescue","worker’s"],emoji:"⛑️",text:"⛑︎",type:0,order:4374,group:7,subgroup:65,version:.7,shortCodes:["helmet_with_cross","rescue_worker_helmet"]},{label:"prayer beads",hexcode:"1F4FF",tags:["beads","clothing","necklace","prayer","religion"],emoji:"📿",text:"",type:1,order:4375,group:7,subgroup:65,version:1,shortCodes:["prayer_beads"]},{label:"lipstick",hexcode:"1F484",tags:["cosmetics","date","makeup"],emoji:"💄",text:"",type:1,order:4376,group:7,subgroup:65,version:.6,shortCodes:["lipstick"]},{label:"ring",hexcode:"1F48D",tags:["diamond","engaged","engagement","married","romance","shiny","sparkling","wedding"],emoji:"💍",text:"",type:1,order:4377,group:7,subgroup:65,version:.6,shortCodes:["ring"]},{label:"gem stone",hexcode:"1F48E",tags:["diamond","engagement","gem","jewel","money","romance","stone","wedding"],emoji:"💎",text:"",type:1,order:4378,group:7,subgroup:65,version:.6,shortCodes:["gem"]},{label:"muted speaker",hexcode:"1F507",tags:["mute","muted","quiet","silent","sound","speaker"],emoji:"🔇",text:"",type:1,order:4379,group:7,subgroup:66,version:1,shortCodes:["mute","no_sound"]},{label:"speaker low volume",hexcode:"1F508",tags:["low","soft","sound","speaker","volume"],emoji:"🔈️",text:"🔈︎",type:1,order:4380,group:7,subgroup:66,version:.7,shortCodes:["low_volume","quiet_sound","speaker"]},{label:"speaker medium volume",hexcode:"1F509",tags:["medium","sound","speaker","volume"],emoji:"🔉",text:"",type:1,order:4381,group:7,subgroup:66,version:1,shortCodes:["medium_volumne","sound"]},{label:"speaker high volume",hexcode:"1F50A",tags:["high","loud","music","sound","speaker","volume"],emoji:"🔊",text:"",type:1,order:4382,group:7,subgroup:66,version:.6,shortCodes:["high_volume","loud_sound"]},{label:"loudspeaker",hexcode:"1F4E2",tags:["address","communication","loud","public","sound"],emoji:"📢",text:"",type:1,order:4383,group:7,subgroup:66,version:.6,shortCodes:["loudspeaker"]},{label:"megaphone",hexcode:"1F4E3",tags:["cheering","sound"],emoji:"📣",text:"",type:1,order:4384,group:7,subgroup:66,version:.6,shortCodes:["mega","megaphone"]},{label:"postal horn",hexcode:"1F4EF",tags:["horn","post","postal"],emoji:"📯",text:"",type:1,order:4385,group:7,subgroup:66,version:1,shortCodes:["postal_horn"]},{label:"bell",hexcode:"1F514",tags:["break","church","sound"],emoji:"🔔",text:"",type:1,order:4386,group:7,subgroup:66,version:.6,shortCodes:["bell"]},{label:"bell with slash",hexcode:"1F515",tags:["bell","forbidden","mute","no","not","prohibited","quiet","silent","slash","sound"],emoji:"🔕",text:"",type:1,order:4387,group:7,subgroup:66,version:1,shortCodes:["no_bell"]},{label:"musical score",hexcode:"1F3BC",tags:["music","musical","note","score"],emoji:"🎼",text:"",type:1,order:4388,group:7,subgroup:67,version:.6,shortCodes:["musical_score"]},{label:"musical note",hexcode:"1F3B5",tags:["music","musical","note","sound"],emoji:"🎵",text:"",type:1,order:4389,group:7,subgroup:67,version:.6,shortCodes:["musical_note"]},{label:"musical notes",hexcode:"1F3B6",tags:["music","musical","note","notes","sound"],emoji:"🎶",text:"",type:1,order:4390,group:7,subgroup:67,version:.6,shortCodes:["musical_notes","notes"]},{label:"studio microphone",hexcode:"1F399",tags:["mic","microphone","music","studio"],emoji:"🎙️",text:"🎙︎",type:0,order:4392,group:7,subgroup:67,version:.7,shortCodes:["studio_microphone"]},{label:"level slider",hexcode:"1F39A",tags:["level","music","slider"],emoji:"🎚️",text:"🎚︎",type:0,order:4394,group:7,subgroup:67,version:.7,shortCodes:["level_slider"]},{label:"control knobs",hexcode:"1F39B",tags:["control","knobs","music"],emoji:"🎛️",text:"🎛︎",type:0,order:4396,group:7,subgroup:67,version:.7,shortCodes:["control_knobs"]},{label:"microphone",hexcode:"1F3A4",tags:["karaoke","mic","music","sing","sound"],emoji:"🎤",text:"",type:1,order:4397,group:7,subgroup:67,version:.6,shortCodes:["microphone"]},{label:"headphone",hexcode:"1F3A7",tags:["earbud","sound"],emoji:"🎧️",text:"🎧︎",type:1,order:4398,group:7,subgroup:67,version:.6,shortCodes:["headphones"]},{label:"radio",hexcode:"1F4FB",tags:["entertainment","tbt","video"],emoji:"📻️",text:"📻︎",type:1,order:4399,group:7,subgroup:67,version:.6,shortCodes:["radio"]},{label:"saxophone",hexcode:"1F3B7",tags:["instrument","music","sax"],emoji:"🎷",text:"",type:1,order:4400,group:7,subgroup:68,version:.6,shortCodes:["saxophone"]},{label:"trumpet",hexcode:"1F3BA",tags:["instrument","music"],emoji:"🎺",text:"",type:1,order:4401,group:7,subgroup:68,version:.6,shortCodes:["trumpet"]},{label:"accordion",hexcode:"1FA97",tags:["box","concertina","instrument","music","squeeze","squeezebox"],emoji:"🪗",text:"",type:1,order:4403,group:7,subgroup:68,version:13,shortCodes:["accordion"]},{label:"guitar",hexcode:"1F3B8",tags:["instrument","music","strat"],emoji:"🎸",text:"",type:1,order:4404,group:7,subgroup:68,version:.6,shortCodes:["guitar"]},{label:"musical keyboard",hexcode:"1F3B9",tags:["instrument","keyboard","music","musical","piano"],emoji:"🎹",text:"",type:1,order:4405,group:7,subgroup:68,version:.6,shortCodes:["musical_keyboard"]},{label:"violin",hexcode:"1F3BB",tags:["instrument","music"],emoji:"🎻",text:"",type:1,order:4406,group:7,subgroup:68,version:.6,shortCodes:["violin"]},{label:"banjo",hexcode:"1FA95",tags:["music","stringed"],emoji:"🪕",text:"",type:1,order:4407,group:7,subgroup:68,version:12,shortCodes:["banjo"]},{label:"drum",hexcode:"1F941",tags:["drumsticks","music"],emoji:"🥁",text:"",type:1,order:4408,group:7,subgroup:68,version:3,shortCodes:["drum"]},{label:"long drum",hexcode:"1FA98",tags:["beat","conga","drum","instrument","long","rhythm"],emoji:"🪘",text:"",type:1,order:4409,group:7,subgroup:68,version:13,shortCodes:["long_drum"]},{label:"maracas",hexcode:"1FA87",tags:["cha","dance","instrument","music","party","percussion","rattle","shake","shaker"],emoji:"🪇",text:"",type:1,order:4410,group:7,subgroup:68,version:15,shortCodes:["maracas"]},{label:"flute",hexcode:"1FA88",tags:["band","fife","flautist","instrument","marching","music","orchestra","piccolo","pipe","recorder","woodwind"],emoji:"🪈",text:"",type:1,order:4411,group:7,subgroup:68,version:15,shortCodes:["flute"]},{label:"harp",hexcode:"1FA89",tags:["cupid","instrument","love","music","orchestra"],emoji:"",text:"",type:1,order:4412,group:7,subgroup:68,version:16,shortCodes:["harp"]},{label:"mobile phone",hexcode:"1F4F1",tags:["cell","communication","mobile","phone","telephone"],emoji:"📱",text:"",type:1,order:4413,group:7,subgroup:69,version:.6,shortCodes:["android","iphone","mobile_phone"]},{label:"mobile phone with arrow",hexcode:"1F4F2",tags:["arrow","build","call","cell","communication","mobile","phone","receive","telephone"],emoji:"📲",text:"",type:1,order:4414,group:7,subgroup:69,version:.6,shortCodes:["calling","mobile_phone_arrow"]},{label:"telephone",hexcode:"260E",tags:["phone"],emoji:"☎️",text:"☎︎",type:0,order:4416,group:7,subgroup:69,version:.6,shortCodes:["telephone"]},{label:"telephone receiver",hexcode:"1F4DE",tags:["communication","phone","receiver","telephone","voip"],emoji:"📞",text:"",type:1,order:4417,group:7,subgroup:69,version:.6,shortCodes:["telephone_receiver"]},{label:"pager",hexcode:"1F4DF",tags:["communication"],emoji:"📟️",text:"📟︎",type:1,order:4418,group:7,subgroup:69,version:.6,shortCodes:["pager"]},{label:"fax machine",hexcode:"1F4E0",tags:["communication","fax","machine"],emoji:"📠",text:"",type:1,order:4419,group:7,subgroup:69,version:.6,shortCodes:["fax","fax_machine"]},{label:"battery",hexcode:"1F50B",tags:["battery"],emoji:"🔋",text:"",type:1,order:4420,group:7,subgroup:70,version:.6,shortCodes:["battery"]},{label:"low battery",hexcode:"1FAAB",tags:["battery","drained","electronic","energy","low","power"],emoji:"🪫",text:"",type:1,order:4421,group:7,subgroup:70,version:14,shortCodes:["low_battery"]},{label:"electric plug",hexcode:"1F50C",tags:["electric","electricity","plug"],emoji:"🔌",text:"",type:1,order:4422,group:7,subgroup:70,version:.6,shortCodes:["electric_plug"]},{label:"laptop",hexcode:"1F4BB",tags:["computer","office","pc","personal"],emoji:"💻️",text:"💻︎",type:1,order:4423,group:7,subgroup:70,version:.6,shortCodes:["laptop"]},{label:"desktop computer",hexcode:"1F5A5",tags:["computer","desktop","monitor"],emoji:"🖥️",text:"🖥︎",type:0,order:4425,group:7,subgroup:70,version:.7,shortCodes:["computer","desktop_computer"]},{label:"printer",hexcode:"1F5A8",tags:["computer"],emoji:"🖨️",text:"🖨︎",type:0,order:4427,group:7,subgroup:70,version:.7,shortCodes:["printer"]},{label:"keyboard",hexcode:"2328",tags:["computer"],emoji:"⌨️",text:"⌨︎",type:0,order:4429,group:7,subgroup:70,version:1,shortCodes:["keyboard"]},{label:"computer mouse",hexcode:"1F5B1",tags:["computer","mouse"],emoji:"🖱️",text:"🖱︎",type:0,order:4431,group:7,subgroup:70,version:.7,shortCodes:["computer_mouse"]},{label:"trackball",hexcode:"1F5B2",tags:["computer"],emoji:"🖲️",text:"🖲︎",type:0,order:4433,group:7,subgroup:70,version:.7,shortCodes:["trackball"]},{label:"computer disk",hexcode:"1F4BD",tags:["computer","disk","minidisk","optical"],emoji:"💽",text:"",type:1,order:4434,group:7,subgroup:70,version:.6,shortCodes:["computer_disk","minidisc"]},{label:"floppy disk",hexcode:"1F4BE",tags:["computer","disk","floppy"],emoji:"💾",text:"",type:1,order:4435,group:7,subgroup:70,version:.6,shortCodes:["floppy_disk"]},{label:"optical disk",hexcode:"1F4BF",tags:["blu-ray","cd","computer","disk","dvd","optical"],emoji:"💿️",text:"💿︎",type:1,order:4436,group:7,subgroup:70,version:.6,shortCodes:["cd","optical_disk"]},{label:"dvd",hexcode:"1F4C0",tags:["blu-ray","cd","computer","disk","optical"],emoji:"📀",text:"",type:1,order:4437,group:7,subgroup:70,version:.6,shortCodes:["dvd"]},{label:"abacus",hexcode:"1F9EE",tags:["calculation","calculator"],emoji:"🧮",text:"",type:1,order:4438,group:7,subgroup:70,version:11,shortCodes:["abacus"]},{label:"movie camera",hexcode:"1F3A5",tags:["bollywood","camera","cinema","film","hollywood","movie","record"],emoji:"🎥",text:"",type:1,order:4439,group:7,subgroup:71,version:.6,shortCodes:["movie_camera"]},{label:"film frames",hexcode:"1F39E",tags:["cinema","film","frames","movie"],emoji:"🎞️",text:"🎞︎",type:0,order:4441,group:7,subgroup:71,version:.7,shortCodes:["film_frames"]},{label:"film projector",hexcode:"1F4FD",tags:["cinema","film","movie","projector","video"],emoji:"📽️",text:"📽︎",type:0,order:4443,group:7,subgroup:71,version:.7,shortCodes:["film_projector"]},{label:"clapper board",hexcode:"1F3AC",tags:["action","board","clapper","movie"],emoji:"🎬️",text:"🎬︎",type:1,order:4444,group:7,subgroup:71,version:.6,shortCodes:["clapper"]},{label:"television",hexcode:"1F4FA",tags:["tv","video"],emoji:"📺️",text:"📺︎",type:1,order:4445,group:7,subgroup:71,version:.6,shortCodes:["tv"]},{label:"camera",hexcode:"1F4F7",tags:["photo","selfie","snap","tbt","trip","video"],emoji:"📷️",text:"📷︎",type:1,order:4446,group:7,subgroup:71,version:.6,shortCodes:["camera"]},{label:"camera with flash",hexcode:"1F4F8",tags:["camera","flash","video"],emoji:"📸",text:"",type:1,order:4447,group:7,subgroup:71,version:1,shortCodes:["camera_with_flash"]},{label:"video camera",hexcode:"1F4F9",tags:["camcorder","camera","tbt","video"],emoji:"📹️",text:"📹︎",type:1,order:4448,group:7,subgroup:71,version:.6,shortCodes:["video_camera"]},{label:"videocassette",hexcode:"1F4FC",tags:["old","school","tape","vcr","vhs","video"],emoji:"📼",text:"",type:1,order:4449,group:7,subgroup:71,version:.6,shortCodes:["vhs","videocassette"]},{label:"magnifying glass tilted left",hexcode:"1F50D",tags:["glass","lab","left","left-pointing","magnifying","science","search","tilted","tool"],emoji:"🔍️",text:"🔍︎",type:1,order:4450,group:7,subgroup:71,version:.6,shortCodes:["mag"]},{label:"magnifying glass tilted right",hexcode:"1F50E",tags:["contact","glass","lab","magnifying","right","right-pointing","science","search","tilted","tool"],emoji:"🔎",text:"",type:1,order:4451,group:7,subgroup:71,version:.6,shortCodes:["mag_right"]},{label:"candle",hexcode:"1F56F",tags:["light"],emoji:"🕯️",text:"🕯︎",type:0,order:4453,group:7,subgroup:71,version:.7,shortCodes:["candle"]},{label:"light bulb",hexcode:"1F4A1",tags:["bulb","comic","electric","idea","light"],emoji:"💡",text:"",type:1,order:4454,group:7,subgroup:71,version:.6,shortCodes:["bulb","light_bulb"]},{label:"flashlight",hexcode:"1F526",tags:["electric","light","tool","torch"],emoji:"🔦",text:"",type:1,order:4455,group:7,subgroup:71,version:.6,shortCodes:["flashlight"]},{label:"red paper lantern",hexcode:"1F3EE",tags:["bar","lantern","light","paper","red","restaurant"],emoji:"🏮",text:"",type:1,order:4456,group:7,subgroup:71,version:.6,shortCodes:["izakaya_lantern","red_paper_lantern"]},{label:"diya lamp",hexcode:"1FA94",tags:["diya","lamp","light","oil"],emoji:"🪔",text:"",type:1,order:4457,group:7,subgroup:71,version:12,shortCodes:["diya_lamp"]},{label:"notebook with decorative cover",hexcode:"1F4D4",tags:["book","cover","decorated","decorative","education","notebook","school","writing"],emoji:"📔",text:"",type:1,order:4458,group:7,subgroup:72,version:.6,shortCodes:["notebook_with_decorative_cover"]},{label:"closed book",hexcode:"1F4D5",tags:["book","closed","education"],emoji:"📕",text:"",type:1,order:4459,group:7,subgroup:72,version:.6,shortCodes:["closed_book"]},{label:"open book",hexcode:"1F4D6",tags:["book","education","fantasy","knowledge","library","novels","open","reading"],emoji:"📖",text:"",type:1,order:4460,group:7,subgroup:72,version:.6,shortCodes:["book","open_book"]},{label:"green book",hexcode:"1F4D7",tags:["book","education","fantasy","green","library","reading"],emoji:"📗",text:"",type:1,order:4461,group:7,subgroup:72,version:.6,shortCodes:["green_book"]},{label:"blue book",hexcode:"1F4D8",tags:["blue","book","education","fantasy","library","reading"],emoji:"📘",text:"",type:1,order:4462,group:7,subgroup:72,version:.6,shortCodes:["blue_book"]},{label:"orange book",hexcode:"1F4D9",tags:["book","education","fantasy","library","orange","reading"],emoji:"📙",text:"",type:1,order:4463,group:7,subgroup:72,version:.6,shortCodes:["orange_book"]},{label:"books",hexcode:"1F4DA",tags:["book","education","fantasy","knowledge","library","novels","reading","school","study"],emoji:"📚️",text:"📚︎",type:1,order:4464,group:7,subgroup:72,version:.6,shortCodes:["books"]},{label:"notebook",hexcode:"1F4D3",tags:["notebook"],emoji:"📓",text:"",type:1,order:4465,group:7,subgroup:72,version:.6,shortCodes:["notebook"]},{label:"ledger",hexcode:"1F4D2",tags:["notebook"],emoji:"📒",text:"",type:1,order:4466,group:7,subgroup:72,version:.6,shortCodes:["ledger"]},{label:"page with curl",hexcode:"1F4C3",tags:["curl","document","page","paper"],emoji:"📃",text:"",type:1,order:4467,group:7,subgroup:72,version:.6,shortCodes:["page_with_curl"]},{label:"scroll",hexcode:"1F4DC",tags:["paper"],emoji:"📜",text:"",type:1,order:4468,group:7,subgroup:72,version:.6,shortCodes:["scroll"]},{label:"page facing up",hexcode:"1F4C4",tags:["document","facing","page","paper","up"],emoji:"📄",text:"",type:1,order:4469,group:7,subgroup:72,version:.6,shortCodes:["page_facing_up"]},{label:"newspaper",hexcode:"1F4F0",tags:["communication","news","paper"],emoji:"📰",text:"",type:1,order:4470,group:7,subgroup:72,version:.6,shortCodes:["newspaper"]},{label:"rolled-up newspaper",hexcode:"1F5DE",tags:["news","newspaper","paper","rolled","rolled-up"],emoji:"🗞️",text:"🗞︎",type:0,order:4472,group:7,subgroup:72,version:.7,shortCodes:["rolled_up_newspaper"]},{label:"bookmark tabs",hexcode:"1F4D1",tags:["bookmark","mark","marker","tabs"],emoji:"📑",text:"",type:1,order:4473,group:7,subgroup:72,version:.6,shortCodes:["bookmark_tabs"]},{label:"bookmark",hexcode:"1F516",tags:["mark"],emoji:"🔖",text:"",type:1,order:4474,group:7,subgroup:72,version:.6,shortCodes:["bookmark"]},{label:"label",hexcode:"1F3F7",tags:["tag"],emoji:"🏷️",text:"🏷︎",type:0,order:4476,group:7,subgroup:72,version:.7,shortCodes:["label"]},{label:"coin",hexcode:"1FA99",tags:["dollar","euro","gold","metal","money","rich","silver","treasure"],emoji:"🪙",text:"",type:1,order:4477,group:7,subgroup:73,version:13,shortCodes:["coin"]},{label:"money bag",hexcode:"1F4B0",tags:["bag","bank","bet","billion","cash","cost","dollar","gold","million","money","moneybag","paid","paying","pot","rich","win"],emoji:"💰️",text:"💰︎",type:1,order:4478,group:7,subgroup:73,version:.6,shortCodes:["moneybag"]},{label:"yen banknote",hexcode:"1F4B4",tags:["bank","banknote","bill","currency","money","note","yen"],emoji:"💴",text:"",type:1,order:4480,group:7,subgroup:73,version:.6,shortCodes:["yen"]},{label:"dollar banknote",hexcode:"1F4B5",tags:["bank","banknote","bill","currency","dollar","money","note"],emoji:"💵",text:"",type:1,order:4481,group:7,subgroup:73,version:.6,shortCodes:["dollar"]},{label:"euro banknote",hexcode:"1F4B6",tags:["100","bank","banknote","bill","currency","euro","money","note","rich"],emoji:"💶",text:"",type:1,order:4482,group:7,subgroup:73,version:1,shortCodes:["euro"]},{label:"pound banknote",hexcode:"1F4B7",tags:["bank","banknote","bill","billion","cash","currency","money","note","pound","pounds"],emoji:"💷",text:"",type:1,order:4483,group:7,subgroup:73,version:1,shortCodes:["pound"]},{label:"money with wings",hexcode:"1F4B8",tags:["bank","banknote","bill","billion","cash","dollar","fly","million","money","note","pay","wings"],emoji:"💸",text:"",type:1,order:4484,group:7,subgroup:73,version:.6,shortCodes:["money_with_wings"]},{label:"credit card",hexcode:"1F4B3",tags:["bank","card","cash","charge","credit","money","pay"],emoji:"💳️",text:"💳︎",type:1,order:4485,group:7,subgroup:73,version:.6,shortCodes:["credit_card"]},{label:"receipt",hexcode:"1F9FE",tags:["accounting","bookkeeping","evidence","invoice","proof"],emoji:"🧾",text:"",type:1,order:4486,group:7,subgroup:73,version:11,shortCodes:["receipt"]},{label:"chart increasing with yen",hexcode:"1F4B9",tags:["bank","chart","currency","graph","growth","increasing","market","money","rise","trend","upward","yen"],emoji:"💹",text:"",type:1,order:4487,group:7,subgroup:73,version:.6,shortCodes:["chart"]},{label:"envelope",hexcode:"2709",tags:["e-mail","email","letter"],emoji:"✉️",text:"✉︎",type:0,order:4489,group:7,subgroup:74,version:.6,shortCodes:["envelope"]},{label:"e-mail",hexcode:"1F4E7",tags:["email","letter","mail"],emoji:"📧",text:"",type:1,order:4490,group:7,subgroup:74,version:.6,shortCodes:["e-mail","email"]},{label:"incoming envelope",hexcode:"1F4E8",tags:["delivering","e-mail","email","envelope","incoming","letter","mail","receive","sent"],emoji:"📨",text:"",type:1,order:4491,group:7,subgroup:74,version:.6,shortCodes:["incoming_envelope"]},{label:"envelope with arrow",hexcode:"1F4E9",tags:["arrow","communication","down","e-mail","email","envelope","letter","mail","outgoing","send","sent"],emoji:"📩",text:"",type:1,order:4492,group:7,subgroup:74,version:.6,shortCodes:["envelope_with_arrow"]},{label:"outbox tray",hexcode:"1F4E4",tags:["box","email","letter","mail","outbox","sent","tray"],emoji:"📤️",text:"📤︎",type:1,order:4493,group:7,subgroup:74,version:.6,shortCodes:["outbox_tray"]},{label:"inbox tray",hexcode:"1F4E5",tags:["box","email","inbox","letter","mail","receive","tray","zero"],emoji:"📥️",text:"📥︎",type:1,order:4494,group:7,subgroup:74,version:.6,shortCodes:["inbox_tray"]},{label:"package",hexcode:"1F4E6",tags:["box","communication","delivery","parcel","shipping"],emoji:"📦️",text:"📦︎",type:1,order:4495,group:7,subgroup:74,version:.6,shortCodes:["package"]},{label:"closed mailbox with raised flag",hexcode:"1F4EB",tags:["closed","communication","flag","mail","mailbox","postbox","raised"],emoji:"📫️",text:"📫︎",type:1,order:4496,group:7,subgroup:74,version:.6,shortCodes:["mailbox"]},{label:"closed mailbox with lowered flag",hexcode:"1F4EA",tags:["closed","flag","lowered","mail","mailbox","postbox"],emoji:"📪️",text:"📪︎",type:1,order:4497,group:7,subgroup:74,version:.6,shortCodes:["mailbox_closed"]},{label:"open mailbox with raised flag",hexcode:"1F4EC",tags:["flag","mail","mailbox","open","postbox","raised"],emoji:"📬️",text:"📬︎",type:1,order:4498,group:7,subgroup:74,version:.7,shortCodes:["mailbox_with_mail"]},{label:"open mailbox with lowered flag",hexcode:"1F4ED",tags:["flag","lowered","mail","mailbox","open","postbox"],emoji:"📭️",text:"📭︎",type:1,order:4499,group:7,subgroup:74,version:.7,shortCodes:["mailbox_with_no_mail"]},{label:"postbox",hexcode:"1F4EE",tags:["mail","mailbox"],emoji:"📮",text:"",type:1,order:4500,group:7,subgroup:74,version:.6,shortCodes:["postbox"]},{label:"ballot box with ballot",hexcode:"1F5F3",tags:["ballot","box"],emoji:"🗳️",text:"🗳︎",type:0,order:4502,group:7,subgroup:74,version:.7,shortCodes:["ballot_box"]},{label:"pencil",hexcode:"270F",tags:["pencil"],emoji:"✏️",text:"✏︎",type:0,order:4504,group:7,subgroup:75,version:.6,shortCodes:["pencil"]},{label:"black nib",hexcode:"2712",tags:["black","nib","pen"],emoji:"✒️",text:"✒︎",type:0,order:4506,group:7,subgroup:75,version:.6,shortCodes:["black_nib"]},{label:"fountain pen",hexcode:"1F58B",tags:["fountain","pen"],emoji:"🖋️",text:"🖋︎",type:0,order:4508,group:7,subgroup:75,version:.7,shortCodes:["fountain_pen"]},{label:"pen",hexcode:"1F58A",tags:["ballpoint"],emoji:"🖊️",text:"🖊︎",type:0,order:4510,group:7,subgroup:75,version:.7,shortCodes:["pen"]},{label:"paintbrush",hexcode:"1F58C",tags:["painting"],emoji:"🖌️",text:"🖌︎",type:0,order:4512,group:7,subgroup:75,version:.7,shortCodes:["paintbrush"]},{label:"crayon",hexcode:"1F58D",tags:["crayon"],emoji:"🖍️",text:"🖍︎",type:0,order:4514,group:7,subgroup:75,version:.7,shortCodes:["crayon"]},{label:"memo",hexcode:"1F4DD",tags:["communication","media","notes","pencil"],emoji:"📝",text:"",type:1,order:4515,group:7,subgroup:75,version:.6,shortCodes:["memo"]},{label:"briefcase",hexcode:"1F4BC",tags:["office"],emoji:"💼",text:"",type:1,order:4516,group:7,subgroup:76,version:.6,shortCodes:["briefcase"]},{label:"file folder",hexcode:"1F4C1",tags:["file","folder"],emoji:"📁",text:"",type:1,order:4517,group:7,subgroup:76,version:.6,shortCodes:["file_folder"]},{label:"open file folder",hexcode:"1F4C2",tags:["file","folder","open"],emoji:"📂",text:"",type:1,order:4518,group:7,subgroup:76,version:.6,shortCodes:["open_file_folder"]},{label:"card index dividers",hexcode:"1F5C2",tags:["card","dividers","index"],emoji:"🗂️",text:"🗂︎",type:0,order:4520,group:7,subgroup:76,version:.7,shortCodes:["card_index_dividers"]},{label:"calendar",hexcode:"1F4C5",tags:["date"],emoji:"📅",text:"",type:1,order:4521,group:7,subgroup:76,version:.6,shortCodes:["date"]},{label:"tear-off calendar",hexcode:"1F4C6",tags:["calendar","tear-off"],emoji:"📆",text:"",type:1,order:4522,group:7,subgroup:76,version:.6,shortCodes:["calendar"]},{label:"spiral notepad",hexcode:"1F5D2",tags:["note","notepad","pad","spiral"],emoji:"🗒️",text:"🗒︎",type:0,order:4524,group:7,subgroup:76,version:.7,shortCodes:["notepad_spiral"]},{label:"spiral calendar",hexcode:"1F5D3",tags:["calendar","pad","spiral"],emoji:"🗓️",text:"🗓︎",type:0,order:4526,group:7,subgroup:76,version:.7,shortCodes:["calendar_spiral"]},{label:"card index",hexcode:"1F4C7",tags:["card","index","old","rolodex","school"],emoji:"📇",text:"",type:1,order:4527,group:7,subgroup:76,version:.6,shortCodes:["card_index"]},{label:"chart increasing",hexcode:"1F4C8",tags:["chart","data","graph","growth","increasing","right","trend","up","upward"],emoji:"📈",text:"",type:1,order:4528,group:7,subgroup:76,version:.6,shortCodes:["chart_increasing","chart_with_upwards_trend"]},{label:"chart decreasing",hexcode:"1F4C9",tags:["chart","data","decreasing","down","downward","graph","negative","trend"],emoji:"📉",text:"",type:1,order:4529,group:7,subgroup:76,version:.6,shortCodes:["chart_decreasing","chart_with_downwards_trend"]},{label:"bar chart",hexcode:"1F4CA",tags:["bar","chart","data","graph"],emoji:"📊",text:"",type:1,order:4530,group:7,subgroup:76,version:.6,shortCodes:["bar_chart"]},{label:"clipboard",hexcode:"1F4CB",tags:["do","list","notes"],emoji:"📋️",text:"📋︎",type:1,order:4531,group:7,subgroup:76,version:.6,shortCodes:["clipboard"]},{label:"pushpin",hexcode:"1F4CC",tags:["collage","pin"],emoji:"📌",text:"",type:1,order:4532,group:7,subgroup:76,version:.6,shortCodes:["pushpin"]},{label:"round pushpin",hexcode:"1F4CD",tags:["location","map","pin","pushpin","round"],emoji:"📍",text:"",type:1,order:4533,group:7,subgroup:76,version:.6,shortCodes:["round_pushpin"]},{label:"paperclip",hexcode:"1F4CE",tags:["paperclip"],emoji:"📎",text:"",type:1,order:4534,group:7,subgroup:76,version:.6,shortCodes:["paperclip"]},{label:"linked paperclips",hexcode:"1F587",tags:["link","linked","paperclip","paperclips"],emoji:"🖇️",text:"🖇︎",type:0,order:4536,group:7,subgroup:76,version:.7,shortCodes:["paperclips"]},{label:"straight ruler",hexcode:"1F4CF",tags:["angle","edge","math","ruler","straight","straightedge"],emoji:"📏",text:"",type:1,order:4537,group:7,subgroup:76,version:.6,shortCodes:["straight_ruler"]},{label:"triangular ruler",hexcode:"1F4D0",tags:["angle","math","rule","ruler","set","slide","triangle","triangular"],emoji:"📐",text:"",type:1,order:4538,group:7,subgroup:76,version:.6,shortCodes:["triangular_ruler"]},{label:"scissors",hexcode:"2702",tags:["cut","cutting","paper","tool"],emoji:"✂️",text:"✂︎",type:0,order:4540,group:7,subgroup:76,version:.6,shortCodes:["scissors"]},{label:"card file box",hexcode:"1F5C3",tags:["box","card","file"],emoji:"🗃️",text:"🗃︎",type:0,order:4542,group:7,subgroup:76,version:.7,shortCodes:["card_file_box"]},{label:"file cabinet",hexcode:"1F5C4",tags:["cabinet","file","filing","paper"],emoji:"🗄️",text:"🗄︎",type:0,order:4544,group:7,subgroup:76,version:.7,shortCodes:["file_cabinet"]},{label:"wastebasket",hexcode:"1F5D1",tags:["can","garbage","trash","waste"],emoji:"🗑️",text:"🗑︎",type:0,order:4546,group:7,subgroup:76,version:.7,shortCodes:["trashcan","wastebasket"]},{label:"locked",hexcode:"1F512",tags:["closed","lock","private"],emoji:"🔒️",text:"🔒︎",type:1,order:4547,group:7,subgroup:77,version:.6,shortCodes:["lock","locked"]},{label:"unlocked",hexcode:"1F513",tags:["cracked","lock","open","unlock"],emoji:"🔓️",text:"🔓︎",type:1,order:4548,group:7,subgroup:77,version:.6,shortCodes:["unlock","unlocked"]},{label:"locked with pen",hexcode:"1F50F",tags:["ink","lock","locked","nib","pen","privacy"],emoji:"🔏",text:"",type:1,order:4549,group:7,subgroup:77,version:.6,shortCodes:["lock_with_ink_pen","locked_with_pen"]},{label:"locked with key",hexcode:"1F510",tags:["bike","closed","key","lock","locked","secure"],emoji:"🔐",text:"",type:1,order:4550,group:7,subgroup:77,version:.6,shortCodes:["closed_lock_with_key","locked_with_key"]},{label:"key",hexcode:"1F511",tags:["keys","lock","major","password","unlock"],emoji:"🔑",text:"",type:1,order:4551,group:7,subgroup:77,version:.6,shortCodes:["key"]},{label:"old key",hexcode:"1F5DD",tags:["clue","key","lock","old"],emoji:"🗝️",text:"🗝︎",type:0,order:4553,group:7,subgroup:77,version:.7,shortCodes:["old_key"]},{label:"hammer",hexcode:"1F528",tags:["home","improvement","repairs","tool"],emoji:"🔨",text:"",type:1,order:4554,group:7,subgroup:78,version:.6,shortCodes:["hammer"]},{label:"axe",hexcode:"1FA93",tags:["ax","chop","hatchet","split","wood"],emoji:"🪓",text:"",type:1,order:4555,group:7,subgroup:78,version:12,shortCodes:["axe"]},{label:"pick",hexcode:"26CF",tags:["hammer","mining","tool"],emoji:"⛏️",text:"⛏︎",type:0,order:4557,group:7,subgroup:78,version:.7,shortCodes:["pick"]},{label:"hammer and pick",hexcode:"2692",tags:["hammer","pick","tool"],emoji:"⚒️",text:"⚒︎",type:0,order:4559,group:7,subgroup:78,version:1,shortCodes:["hammer_and_pick"]},{label:"hammer and wrench",hexcode:"1F6E0",tags:["hammer","spanner","tool","wrench"],emoji:"🛠️",text:"🛠︎",type:0,order:4561,group:7,subgroup:78,version:.7,shortCodes:["hammer_and_wrench"]},{label:"dagger",hexcode:"1F5E1",tags:["knife","weapon"],emoji:"🗡️",text:"🗡︎",type:0,order:4563,group:7,subgroup:78,version:.7,shortCodes:["dagger"]},{label:"crossed swords",hexcode:"2694",tags:["crossed","swords","weapon"],emoji:"⚔️",text:"⚔︎",type:0,order:4565,group:7,subgroup:78,version:1,shortCodes:["crossed_swords"]},{label:"bomb",hexcode:"1F4A3",tags:["boom","comic","dangerous","explosion","hot"],emoji:"💣️",text:"💣︎",type:1,order:4566,group:7,subgroup:78,version:.6,shortCodes:["bomb"]},{label:"boomerang",hexcode:"1FA83",tags:["rebound","repercussion","weapon"],emoji:"🪃",text:"",type:1,order:4567,group:7,subgroup:78,version:13,shortCodes:["boomerang"]},{label:"bow and arrow",hexcode:"1F3F9",tags:["archer","archery","arrow","bow","sagittarius","tool","weapon","zodiac"],emoji:"🏹",text:"",type:1,order:4568,group:7,subgroup:78,version:1,shortCodes:["bow_and_arrow"]},{label:"shield",hexcode:"1F6E1",tags:["weapon"],emoji:"🛡️",text:"🛡︎",type:0,order:4570,group:7,subgroup:78,version:.7,shortCodes:["shield"]},{label:"carpentry saw",hexcode:"1FA9A",tags:["carpenter","carpentry","cut","lumber","saw","tool","trim"],emoji:"🪚",text:"",type:1,order:4571,group:7,subgroup:78,version:13,shortCodes:["carpentry_saw"]},{label:"wrench",hexcode:"1F527",tags:["home","improvement","spanner","tool"],emoji:"🔧",text:"",type:1,order:4572,group:7,subgroup:78,version:.6,shortCodes:["wrench"]},{label:"screwdriver",hexcode:"1FA9B",tags:["flathead","handy","screw","tool"],emoji:"🪛",text:"",type:1,order:4573,group:7,subgroup:78,version:13,shortCodes:["screwdriver"]},{label:"nut and bolt",hexcode:"1F529",tags:["bolt","home","improvement","nut","tool"],emoji:"🔩",text:"",type:1,order:4574,group:7,subgroup:78,version:.6,shortCodes:["nut_and_bolt"]},{label:"gear",hexcode:"2699",tags:["cog","cogwheel","tool"],emoji:"⚙️",text:"⚙︎",type:0,order:4576,group:7,subgroup:78,version:1,shortCodes:["gear"]},{label:"clamp",hexcode:"1F5DC",tags:["compress","tool","vice"],emoji:"🗜️",text:"🗜︎",type:0,order:4578,group:7,subgroup:78,version:.7,shortCodes:["clamp","compression"]},{label:"balance scale",hexcode:"2696",tags:["balance","justice","libra","scale","scales","tool","weight","zodiac"],emoji:"⚖️",text:"⚖︎",type:0,order:4580,group:7,subgroup:78,version:1,shortCodes:["scales"]},{label:"white cane",hexcode:"1F9AF",tags:["accessibility","blind","cane","probing","white"],emoji:"🦯",text:"",type:1,order:4581,group:7,subgroup:78,version:12,shortCodes:["probing_cane","white_cane"]},{label:"link",hexcode:"1F517",tags:["links"],emoji:"🔗",text:"",type:1,order:4582,group:7,subgroup:78,version:.6,shortCodes:["link"]},{label:"broken chain",hexcode:"26D3-FE0F-200D-1F4A5",tags:["break","breaking","broken","chain","cuffs","freedom"],emoji:"⛓️💥",text:"",type:1,order:4583,group:7,subgroup:78,version:15.1,shortCodes:["broken_chain"]},{label:"chains",hexcode:"26D3",tags:["chain"],emoji:"⛓️",text:"⛓︎",type:0,order:4586,group:7,subgroup:78,version:.7,shortCodes:["chains"]},{label:"hook",hexcode:"1FA9D",tags:["catch","crook","curve","ensnare","point","selling"],emoji:"🪝",text:"",type:1,order:4587,group:7,subgroup:78,version:13,shortCodes:["hook"]},{label:"toolbox",hexcode:"1F9F0",tags:["box","chest","mechanic","red","tool"],emoji:"🧰",text:"",type:1,order:4588,group:7,subgroup:78,version:11,shortCodes:["toolbox"]},{label:"magnet",hexcode:"1F9F2",tags:["attraction","horseshoe","magnetic","negative","positive","shape","u"],emoji:"🧲",text:"",type:1,order:4589,group:7,subgroup:78,version:11,shortCodes:["magnet"]},{label:"ladder",hexcode:"1FA9C",tags:["climb","rung","step"],emoji:"🪜",text:"",type:1,order:4590,group:7,subgroup:78,version:13,shortCodes:["ladder"]},{label:"shovel",hexcode:"1FA8F",tags:["bury","dig","garden","hole","plant","scoop","snow","spade"],emoji:"",text:"",type:1,order:4591,group:7,subgroup:78,version:16,shortCodes:["shovel"]},{label:"alembic",hexcode:"2697",tags:["chemistry","tool"],emoji:"⚗️",text:"⚗︎",type:0,order:4593,group:7,subgroup:79,version:1,shortCodes:["alembic"]},{label:"test tube",hexcode:"1F9EA",tags:["chemist","chemistry","experiment","lab","science","test","tube"],emoji:"🧪",text:"",type:1,order:4594,group:7,subgroup:79,version:11,shortCodes:["test_tube"]},{label:"petri dish",hexcode:"1F9EB",tags:["bacteria","biologist","biology","culture","dish","lab","petri"],emoji:"🧫",text:"",type:1,order:4595,group:7,subgroup:79,version:11,shortCodes:["petri_dish"]},{label:"dna",hexcode:"1F9EC",tags:["biologist","evolution","gene","genetics","life"],emoji:"🧬",text:"",type:1,order:4596,group:7,subgroup:79,version:11,shortCodes:["dna","double_helix"]},{label:"microscope",hexcode:"1F52C",tags:["experiment","lab","science","tool"],emoji:"🔬",text:"",type:1,order:4597,group:7,subgroup:79,version:1,shortCodes:["microscope"]},{label:"telescope",hexcode:"1F52D",tags:["contact","extraterrestrial","science","tool"],emoji:"🔭",text:"",type:1,order:4598,group:7,subgroup:79,version:1,shortCodes:["telescope"]},{label:"satellite antenna",hexcode:"1F4E1",tags:["aliens","antenna","contact","dish","satellite","science"],emoji:"📡",text:"",type:1,order:4599,group:7,subgroup:79,version:.6,shortCodes:["satellite_antenna"]},{label:"syringe",hexcode:"1F489",tags:["doctor","flu","medicine","needle","shot","sick","tool","vaccination"],emoji:"💉",text:"",type:1,order:4600,group:7,subgroup:80,version:.6,shortCodes:["syringe"]},{label:"drop of blood",hexcode:"1FA78",tags:["bleed","blood","donation","drop","injury","medicine","menstruation"],emoji:"🩸",text:"",type:1,order:4601,group:7,subgroup:80,version:12,shortCodes:["drop_of_blood"]},{label:"pill",hexcode:"1F48A",tags:["doctor","drugs","medicated","medicine","pills","sick","vitamin"],emoji:"💊",text:"",type:1,order:4602,group:7,subgroup:80,version:.6,shortCodes:["pill"]},{label:"adhesive bandage",hexcode:"1FA79",tags:["adhesive","bandage"],emoji:"🩹",text:"",type:1,order:4603,group:7,subgroup:80,version:12,shortCodes:["adhesive_bandage","bandaid"]},{label:"crutch",hexcode:"1FA7C",tags:["aid","cane","disability","help","hurt","injured","mobility","stick"],emoji:"🩼",text:"",type:1,order:4604,group:7,subgroup:80,version:14,shortCodes:["crutch"]},{label:"stethoscope",hexcode:"1FA7A",tags:["doctor","heart","medicine"],emoji:"🩺",text:"",type:1,order:4605,group:7,subgroup:80,version:12,shortCodes:["stethoscope"]},{label:"x-ray",hexcode:"1FA7B",tags:["bones","doctor","medical","skeleton","skull","xray"],emoji:"🩻",text:"",type:1,order:4606,group:7,subgroup:80,version:14,shortCodes:["x-ray","xray"]},{label:"door",hexcode:"1F6AA",tags:["back","closet","front"],emoji:"🚪",text:"",type:1,order:4607,group:7,subgroup:81,version:.6,shortCodes:["door"]},{label:"elevator",hexcode:"1F6D7",tags:["accessibility","hoist","lift"],emoji:"🛗",text:"",type:1,order:4608,group:7,subgroup:81,version:13,shortCodes:["elevator"]},{label:"mirror",hexcode:"1FA9E",tags:["makeup","reflection","reflector","speculum"],emoji:"🪞",text:"",type:1,order:4609,group:7,subgroup:81,version:13,shortCodes:["mirror"]},{label:"window",hexcode:"1FA9F",tags:["air","frame","fresh","opening","transparent","view"],emoji:"🪟",text:"",type:1,order:4610,group:7,subgroup:81,version:13,shortCodes:["window"]},{label:"bed",hexcode:"1F6CF",tags:["hotel","sleep"],emoji:"🛏️",text:"🛏︎",type:0,order:4612,group:7,subgroup:81,version:.7,shortCodes:["bed"]},{label:"couch and lamp",hexcode:"1F6CB",tags:["couch","hotel","lamp"],emoji:"🛋️",text:"🛋︎",type:0,order:4614,group:7,subgroup:81,version:.7,shortCodes:["couch_and_lamp"]},{label:"chair",hexcode:"1FA91",tags:["seat","sit"],emoji:"🪑",text:"",type:1,order:4615,group:7,subgroup:81,version:12,shortCodes:["chair"]},{label:"toilet",hexcode:"1F6BD",tags:["bathroom"],emoji:"🚽",text:"",type:1,order:4616,group:7,subgroup:81,version:.6,shortCodes:["toilet"]},{label:"plunger",hexcode:"1FAA0",tags:["cup","force","plumber","poop","suction","toilet"],emoji:"🪠",text:"",type:1,order:4617,group:7,subgroup:81,version:13,shortCodes:["plunger"]},{label:"shower",hexcode:"1F6BF",tags:["water"],emoji:"🚿",text:"",type:1,order:4618,group:7,subgroup:81,version:1,shortCodes:["shower"]},{label:"bathtub",hexcode:"1F6C1",tags:["bath"],emoji:"🛁",text:"",type:1,order:4619,group:7,subgroup:81,version:1,shortCodes:["bathtub"]},{label:"mouse trap",hexcode:"1FAA4",tags:["bait","cheese","lure","mouse","mousetrap","snare","trap"],emoji:"🪤",text:"",type:1,order:4620,group:7,subgroup:81,version:13,shortCodes:["mouse_trap"]},{label:"razor",hexcode:"1FA92",tags:["sharp","shave"],emoji:"🪒",text:"",type:1,order:4621,group:7,subgroup:81,version:12,shortCodes:["razor"]},{label:"lotion bottle",hexcode:"1F9F4",tags:["bottle","lotion","moisturizer","shampoo","sunscreen"],emoji:"🧴",text:"",type:1,order:4622,group:7,subgroup:81,version:11,shortCodes:["lotion_bottle"]},{label:"safety pin",hexcode:"1F9F7",tags:["diaper","pin","punk","rock","safety"],emoji:"🧷",text:"",type:1,order:4623,group:7,subgroup:81,version:11,shortCodes:["safety_pin"]},{label:"broom",hexcode:"1F9F9",tags:["cleaning","sweeping","witch"],emoji:"🧹",text:"",type:1,order:4624,group:7,subgroup:81,version:11,shortCodes:["broom"]},{label:"basket",hexcode:"1F9FA",tags:["farming","laundry","picnic"],emoji:"🧺",text:"",type:1,order:4625,group:7,subgroup:81,version:11,shortCodes:["basket"]},{label:"roll of paper",hexcode:"1F9FB",tags:["paper","roll","toilet","towels"],emoji:"🧻",text:"",type:1,order:4626,group:7,subgroup:81,version:11,shortCodes:["roll_of_paper","toilet_paper"]},{label:"bucket",hexcode:"1FAA3",tags:["cask","pail","vat"],emoji:"🪣",text:"",type:1,order:4627,group:7,subgroup:81,version:13,shortCodes:["bucket"]},{label:"soap",hexcode:"1F9FC",tags:["bar","bathing","clean","cleaning","lather","soapdish"],emoji:"🧼",text:"",type:1,order:4628,group:7,subgroup:81,version:11,shortCodes:["soap"]},{label:"bubbles",hexcode:"1FAE7",tags:["bubble","burp","clean","floating","pearl","soap","underwater"],emoji:"🫧",text:"",type:1,order:4629,group:7,subgroup:81,version:14,shortCodes:["bubbles"]},{label:"toothbrush",hexcode:"1FAA5",tags:["bathroom","brush","clean","dental","hygiene","teeth","toiletry"],emoji:"🪥",text:"",type:1,order:4630,group:7,subgroup:81,version:13,shortCodes:["toothbrush"]},{label:"sponge",hexcode:"1F9FD",tags:["absorbing","cleaning","porous","soak"],emoji:"🧽",text:"",type:1,order:4631,group:7,subgroup:81,version:11,shortCodes:["sponge"]},{label:"fire extinguisher",hexcode:"1F9EF",tags:["extinguish","extinguisher","fire","quench"],emoji:"🧯",text:"",type:1,order:4632,group:7,subgroup:81,version:11,shortCodes:["fire_extinguisher"]},{label:"shopping cart",hexcode:"1F6D2",tags:["cart","shopping","trolley"],emoji:"🛒",text:"",type:1,order:4633,group:7,subgroup:81,version:3,shortCodes:["shopping_cart"]},{label:"cigarette",hexcode:"1F6AC",tags:["smoking"],emoji:"🚬",text:"",type:1,order:4634,group:7,subgroup:82,version:.6,shortCodes:["cigarette","smoking"]},{label:"coffin",hexcode:"26B0",tags:["dead","death","vampire"],emoji:"⚰️",text:"⚰︎",type:0,order:4636,group:7,subgroup:82,version:1,shortCodes:["coffin"]},{label:"headstone",hexcode:"1FAA6",tags:["cemetery","dead","grave","graveyard","memorial","rip","tomb","tombstone"],emoji:"🪦",text:"",type:1,order:4637,group:7,subgroup:82,version:13,shortCodes:["headstone"]},{label:"funeral urn",hexcode:"26B1",tags:["ashes","death","funeral","urn"],emoji:"⚱️",text:"⚱︎",type:0,order:4639,group:7,subgroup:82,version:1,shortCodes:["funeral_urn"]},{label:"nazar amulet",hexcode:"1F9FF",tags:["amulet","bead","blue","charm","evil-eye","nazar","talisman"],emoji:"🧿",text:"",type:1,order:4640,group:7,subgroup:82,version:11,shortCodes:["nazar_amulet"]},{label:"hamsa",hexcode:"1FAAC",tags:["amulet","fatima","fortune","guide","hand","mary","miriam","palm","protect","protection"],emoji:"🪬",text:"",type:1,order:4641,group:7,subgroup:82,version:14,shortCodes:["hamsa"]},{label:"moai",hexcode:"1F5FF",tags:["face","moyai","statue","stoneface","travel"],emoji:"🗿",text:"",type:1,order:4642,group:7,subgroup:82,version:.6,shortCodes:["moai","moyai"]},{label:"placard",hexcode:"1FAA7",tags:["card","demonstration","notice","picket","plaque","protest","sign"],emoji:"🪧",text:"",type:1,order:4643,group:7,subgroup:82,version:13,shortCodes:["placard"]},{label:"identification card",hexcode:"1FAAA",tags:["card","credentials","document","id","identification","license","security"],emoji:"🪪",text:"",type:1,order:4644,group:7,subgroup:82,version:14,shortCodes:["id_card"]},{label:"ATM sign",hexcode:"1F3E7",tags:["atm","automated","bank","cash","money","sign","teller"],emoji:"🏧",text:"",type:1,order:4645,group:8,subgroup:83,version:.6,shortCodes:["atm"]},{label:"litter in bin sign",hexcode:"1F6AE",tags:["bin","litter","litterbin","sign"],emoji:"🚮",text:"",type:1,order:4646,group:8,subgroup:83,version:1,shortCodes:["litter_bin","put_litter_in_its_place"]},{label:"potable water",hexcode:"1F6B0",tags:["drinking","potable","water"],emoji:"🚰",text:"",type:1,order:4647,group:8,subgroup:83,version:1,shortCodes:["potable_water"]},{label:"wheelchair symbol",hexcode:"267F",tags:["access","handicap","symbol","wheelchair"],emoji:"♿️",text:"♿︎",type:1,order:4648,group:8,subgroup:83,version:.6,shortCodes:["handicapped","wheelchair"]},{label:"men’s room",hexcode:"1F6B9",tags:["bathroom","lavatory","man","men’s","restroom","room","toilet","wc"],emoji:"🚹️",text:"🚹︎",type:1,order:4649,group:8,subgroup:83,version:.6,shortCodes:["mens"]},{label:"women’s room",hexcode:"1F6BA",tags:["bathroom","lavatory","restroom","room","toilet","wc","woman","women’s"],emoji:"🚺️",text:"🚺︎",type:1,order:4650,group:8,subgroup:83,version:.6,shortCodes:["womens"]},{label:"restroom",hexcode:"1F6BB",tags:["bathroom","lavatory","toilet","wc"],emoji:"🚻",text:"",type:1,order:4651,group:8,subgroup:83,version:.6,shortCodes:["bathroom","restroom"]},{label:"baby symbol",hexcode:"1F6BC",tags:["baby","changing","symbol"],emoji:"🚼️",text:"🚼︎",type:1,order:4652,group:8,subgroup:83,version:.6,shortCodes:["baby_symbol"]},{label:"water closet",hexcode:"1F6BE",tags:["bathroom","closet","lavatory","restroom","toilet","water","wc"],emoji:"🚾",text:"",type:1,order:4653,group:8,subgroup:83,version:.6,shortCodes:["water_closet","wc"]},{label:"passport control",hexcode:"1F6C2",tags:["control","passport"],emoji:"🛂",text:"",type:1,order:4654,group:8,subgroup:83,version:1,shortCodes:["passport_control"]},{label:"customs",hexcode:"1F6C3",tags:["packing"],emoji:"🛃",text:"",type:1,order:4655,group:8,subgroup:83,version:1,shortCodes:["customs"]},{label:"baggage claim",hexcode:"1F6C4",tags:["arrived","baggage","bags","case","checked","claim","journey","packing","plane","ready","travel","trip"],emoji:"🛄",text:"",type:1,order:4656,group:8,subgroup:83,version:1,shortCodes:["baggage_claim"]},{label:"left luggage",hexcode:"1F6C5",tags:["baggage","case","left","locker","luggage"],emoji:"🛅",text:"",type:1,order:4657,group:8,subgroup:83,version:1,shortCodes:["left_luggage"]},{label:"warning",hexcode:"26A0",tags:["caution"],emoji:"⚠️",text:"⚠︎",type:0,order:4659,group:8,subgroup:84,version:.6,shortCodes:["warning"]},{label:"children crossing",hexcode:"1F6B8",tags:["child","children","crossing","pedestrian","traffic"],emoji:"🚸",text:"",type:1,order:4660,group:8,subgroup:84,version:1,shortCodes:["children_crossing"]},{label:"no entry",hexcode:"26D4",tags:["do","entry","fail","forbidden","no","not","pass","prohibited","traffic"],emoji:"⛔️",text:"⛔︎",type:1,order:4661,group:8,subgroup:84,version:.6,shortCodes:["no_entry"]},{label:"prohibited",hexcode:"1F6AB",tags:["entry","forbidden","no","not","smoke"],emoji:"🚫",text:"",type:1,order:4662,group:8,subgroup:84,version:.6,shortCodes:["no_entry_sign"]},{label:"no bicycles",hexcode:"1F6B3",tags:["bicycle","bicycles","bike","forbidden","no","not","prohibited"],emoji:"🚳",text:"",type:1,order:4663,group:8,subgroup:84,version:1,shortCodes:["no_bicycles"]},{label:"no smoking",hexcode:"1F6AD",tags:["forbidden","no","not","prohibited","smoke","smoking"],emoji:"🚭️",text:"🚭︎",type:1,order:4664,group:8,subgroup:84,version:.6,shortCodes:["no_smoking"]},{label:"no littering",hexcode:"1F6AF",tags:["forbidden","litter","littering","no","not","prohibited"],emoji:"🚯",text:"",type:1,order:4665,group:8,subgroup:84,version:1,shortCodes:["do_not_litter","no_littering"]},{label:"non-potable water",hexcode:"1F6B1",tags:["dry","non-drinking","non-potable","prohibited","water"],emoji:"🚱",text:"",type:1,order:4666,group:8,subgroup:84,version:1,shortCodes:["non-potable_water"]},{label:"no pedestrians",hexcode:"1F6B7",tags:["forbidden","no","not","pedestrian","pedestrians","prohibited"],emoji:"🚷",text:"",type:1,order:4667,group:8,subgroup:84,version:1,shortCodes:["no_pedestrians"]},{label:"no mobile phones",hexcode:"1F4F5",tags:["cell","forbidden","mobile","no","not","phone","phones","prohibited","telephone"],emoji:"📵",text:"",type:1,order:4668,group:8,subgroup:84,version:1,shortCodes:["no_mobile_phones"]},{label:"no one under eighteen",hexcode:"1F51E",tags:["18","age","eighteen","forbidden","no","not","one","prohibited","restriction","underage"],emoji:"🔞",text:"",type:1,order:4669,group:8,subgroup:84,version:.6,shortCodes:["no_one_under_18","underage"]},{label:"radioactive",hexcode:"2622",tags:["sign"],emoji:"☢️",text:"☢︎",type:0,order:4671,group:8,subgroup:84,version:1,shortCodes:["radioactive"]},{label:"biohazard",hexcode:"2623",tags:["sign"],emoji:"☣️",text:"☣︎",type:0,order:4673,group:8,subgroup:84,version:1,shortCodes:["biohazard"]},{label:"up arrow",hexcode:"2B06",tags:["arrow","cardinal","direction","north","up"],emoji:"⬆️",text:"⬆︎",type:0,order:4675,group:8,subgroup:85,version:.6,shortCodes:["arrow_up"]},{label:"up-right arrow",hexcode:"2197",tags:["arrow","direction","intercardinal","northeast","up-right"],emoji:"↗️",text:"↗︎",type:0,order:4677,group:8,subgroup:85,version:.6,shortCodes:["arrow_upper_right"]},{label:"right arrow",hexcode:"27A1",tags:["arrow","cardinal","direction","east","right"],emoji:"➡️",text:"➡︎",type:0,order:4679,group:8,subgroup:85,version:.6,shortCodes:["arrow_right"]},{label:"down-right arrow",hexcode:"2198",tags:["arrow","direction","down-right","intercardinal","southeast"],emoji:"↘️",text:"↘︎",type:0,order:4681,group:8,subgroup:85,version:.6,shortCodes:["arrow_lower_right"]},{label:"down arrow",hexcode:"2B07",tags:["arrow","cardinal","direction","down","south"],emoji:"⬇️",text:"⬇︎",type:0,order:4683,group:8,subgroup:85,version:.6,shortCodes:["arrow_down"]},{label:"down-left arrow",hexcode:"2199",tags:["arrow","direction","down-left","intercardinal","southwest"],emoji:"↙️",text:"↙︎",type:0,order:4685,group:8,subgroup:85,version:.6,shortCodes:["arrow_lower_left"]},{label:"left arrow",hexcode:"2B05",tags:["arrow","cardinal","direction","left","west"],emoji:"⬅️",text:"⬅︎",type:0,order:4687,group:8,subgroup:85,version:.6,shortCodes:["arrow_left"]},{label:"up-left arrow",hexcode:"2196",tags:["arrow","direction","intercardinal","northwest","up-left"],emoji:"↖️",text:"↖︎",type:0,order:4689,group:8,subgroup:85,version:.6,shortCodes:["arrow_upper_left"]},{label:"up-down arrow",hexcode:"2195",tags:["arrow","up-down"],emoji:"↕️",text:"↕︎",type:0,order:4691,group:8,subgroup:85,version:.6,shortCodes:["arrow_up_down"]},{label:"left-right arrow",hexcode:"2194",tags:["arrow","left-right"],emoji:"↔️",text:"↔︎",type:0,order:4693,group:8,subgroup:85,version:.6,shortCodes:["left_right_arrow"]},{label:"right arrow curving left",hexcode:"21A9",tags:["arrow","curving","left","right"],emoji:"↩️",text:"↩︎",type:0,order:4695,group:8,subgroup:85,version:.6,shortCodes:["arrow_left_hook","leftwards_arrow_with_hook"]},{label:"left arrow curving right",hexcode:"21AA",tags:["arrow","curving","left","right"],emoji:"↪️",text:"↪︎",type:0,order:4697,group:8,subgroup:85,version:.6,shortCodes:["arrow_right_hook","rightwards_arrow_with_hook"]},{label:"right arrow curving up",hexcode:"2934",tags:["arrow","curving","right","up"],emoji:"⤴️",text:"⤴︎",type:0,order:4699,group:8,subgroup:85,version:.6,shortCodes:["arrow_heading_up"]},{label:"right arrow curving down",hexcode:"2935",tags:["arrow","curving","down","right"],emoji:"⤵️",text:"⤵︎",type:0,order:4701,group:8,subgroup:85,version:.6,shortCodes:["arrow_heading_down"]},{label:"clockwise vertical arrows",hexcode:"1F503",tags:["arrow","arrows","clockwise","refresh","reload","vertical"],emoji:"🔃",text:"",type:1,order:4702,group:8,subgroup:85,version:.6,shortCodes:["arrows_clockwise","clockwise"]},{label:"counterclockwise arrows button",hexcode:"1F504",tags:["again","anticlockwise","arrow","arrows","button","counterclockwise","deja","refresh","rewindershins","vu"],emoji:"🔄",text:"",type:1,order:4703,group:8,subgroup:85,version:1,shortCodes:["arrows_counterclockwise","counterclockwise"]},{label:"BACK arrow",hexcode:"1F519",tags:["arrow","back"],emoji:"🔙",text:"",type:1,order:4704,group:8,subgroup:85,version:.6,shortCodes:["back"]},{label:"END arrow",hexcode:"1F51A",tags:["arrow","end"],emoji:"🔚",text:"",type:1,order:4705,group:8,subgroup:85,version:.6,shortCodes:["end"]},{label:"ON! arrow",hexcode:"1F51B",tags:["arrow","mark","on!"],emoji:"🔛",text:"",type:1,order:4706,group:8,subgroup:85,version:.6,shortCodes:["on"]},{label:"SOON arrow",hexcode:"1F51C",tags:["arrow","brb","omw","soon"],emoji:"🔜",text:"",type:1,order:4707,group:8,subgroup:85,version:.6,shortCodes:["soon"]},{label:"TOP arrow",hexcode:"1F51D",tags:["arrow","homie","top","up"],emoji:"🔝",text:"",type:1,order:4708,group:8,subgroup:85,version:.6,shortCodes:["top"]},{label:"place of worship",hexcode:"1F6D0",tags:["place","pray","religion","worship"],emoji:"🛐",text:"",type:1,order:4709,group:8,subgroup:86,version:1,shortCodes:["place_of_worship"]},{label:"atom symbol",hexcode:"269B",tags:["atheist","atom","symbol"],emoji:"⚛️",text:"⚛︎",type:0,order:4711,group:8,subgroup:86,version:1,shortCodes:["atom","atom_symbol"]},{label:"om",hexcode:"1F549",tags:["hindu","religion"],emoji:"🕉️",text:"🕉︎",type:0,order:4713,group:8,subgroup:86,version:.7,shortCodes:["om"]},{label:"star of David",hexcode:"2721",tags:["david","jew","jewish","judaism","religion","star"],emoji:"✡️",text:"✡︎",type:0,order:4715,group:8,subgroup:86,version:.7,shortCodes:["star_of_david"]},{label:"wheel of dharma",hexcode:"2638",tags:["buddhist","dharma","religion","wheel"],emoji:"☸️",text:"☸︎",type:0,order:4717,group:8,subgroup:86,version:.7,shortCodes:["wheel_of_dharma"]},{label:"yin yang",hexcode:"262F",tags:["difficult","lives","religion","tao","taoist","total","yang","yin","yinyang"],emoji:"☯️",text:"☯︎",type:0,order:4719,group:8,subgroup:86,version:.7,shortCodes:["yin_yang"]},{label:"latin cross",hexcode:"271D",tags:["christ","christian","cross","latin","religion"],emoji:"✝️",text:"✝︎",type:0,order:4721,group:8,subgroup:86,version:.7,shortCodes:["latin_cross"]},{label:"orthodox cross",hexcode:"2626",tags:["christian","cross","orthodox","religion"],emoji:"☦️",text:"☦︎",type:0,order:4723,group:8,subgroup:86,version:1,shortCodes:["orthodox_cross"]},{label:"star and crescent",hexcode:"262A",tags:["crescent","islam","muslim","ramadan","religion","star"],emoji:"☪️",text:"☪︎",type:0,order:4725,group:8,subgroup:86,version:.7,shortCodes:["star_and_crescent"]},{label:"peace symbol",hexcode:"262E",tags:["healing","peace","peaceful","symbol"],emoji:"☮️",text:"☮︎",type:0,order:4727,group:8,subgroup:86,version:1,shortCodes:["peace","peace_symbol"]},{label:"menorah",hexcode:"1F54E",tags:["candelabrum","candlestick","hanukkah","jewish","judaism","religion"],emoji:"🕎",text:"",type:1,order:4728,group:8,subgroup:86,version:1,shortCodes:["menorah"]},{label:"dotted six-pointed star",hexcode:"1F52F",tags:["dotted","fortune","jewish","judaism","six-pointed","star"],emoji:"🔯",text:"",type:1,order:4729,group:8,subgroup:86,version:.6,shortCodes:["six_pointed_star"]},{label:"khanda",hexcode:"1FAAF",tags:["deg","fateh","khalsa","religion","sikh","sikhism","tegh"],emoji:"🪯",text:"",type:1,order:4730,group:8,subgroup:86,version:15,shortCodes:["khanda"]},{label:"Aries",hexcode:"2648",tags:["aries","horoscope","ram","zodiac"],emoji:"♈️",text:"♈︎",type:1,order:4731,group:8,subgroup:87,version:.6,shortCodes:["aries"]},{label:"Taurus",hexcode:"2649",tags:["bull","horoscope","ox","taurus","zodiac"],emoji:"♉️",text:"♉︎",type:1,order:4732,group:8,subgroup:87,version:.6,shortCodes:["taurus"]},{label:"Gemini",hexcode:"264A",tags:["gemini","horoscope","twins","zodiac"],emoji:"♊️",text:"♊︎",type:1,order:4733,group:8,subgroup:87,version:.6,shortCodes:["gemini"]},{label:"Cancer",hexcode:"264B",tags:["cancer","crab","horoscope","zodiac"],emoji:"♋️",text:"♋︎",type:1,order:4734,group:8,subgroup:87,version:.6,shortCodes:["cancer"]},{label:"Leo",hexcode:"264C",tags:["horoscope","leo","lion","zodiac"],emoji:"♌️",text:"♌︎",type:1,order:4735,group:8,subgroup:87,version:.6,shortCodes:["leo"]},{label:"Virgo",hexcode:"264D",tags:["horoscope","virgo","zodiac"],emoji:"♍️",text:"♍︎",type:1,order:4736,group:8,subgroup:87,version:.6,shortCodes:["virgo"]},{label:"Libra",hexcode:"264E",tags:["balance","horoscope","justice","libra","scales","zodiac"],emoji:"♎️",text:"♎︎",type:1,order:4737,group:8,subgroup:87,version:.6,shortCodes:["libra"]},{label:"Scorpio",hexcode:"264F",tags:["horoscope","scorpio","scorpion","scorpius","zodiac"],emoji:"♏️",text:"♏︎",type:1,order:4738,group:8,subgroup:87,version:.6,shortCodes:["scorpius"]},{label:"Sagittarius",hexcode:"2650",tags:["archer","horoscope","sagittarius","zodiac"],emoji:"♐️",text:"♐︎",type:1,order:4739,group:8,subgroup:87,version:.6,shortCodes:["sagittarius"]},{label:"Capricorn",hexcode:"2651",tags:["capricorn","goat","horoscope","zodiac"],emoji:"♑️",text:"♑︎",type:1,order:4740,group:8,subgroup:87,version:.6,shortCodes:["capricorn"]},{label:"Aquarius",hexcode:"2652",tags:["aquarius","bearer","horoscope","water","zodiac"],emoji:"♒️",text:"♒︎",type:1,order:4741,group:8,subgroup:87,version:.6,shortCodes:["aquarius"]},{label:"Pisces",hexcode:"2653",tags:["fish","horoscope","pisces","zodiac"],emoji:"♓️",text:"♓︎",type:1,order:4742,group:8,subgroup:87,version:.6,shortCodes:["pisces"]},{label:"Ophiuchus",hexcode:"26CE",tags:["bearer","ophiuchus","serpent","snake","zodiac"],emoji:"⛎️",text:"⛎︎",type:1,order:4743,group:8,subgroup:87,version:.6,shortCodes:["ophiuchus"]},{label:"shuffle tracks button",hexcode:"1F500",tags:["arrow","button","crossed","shuffle","tracks"],emoji:"🔀",text:"",type:1,order:4744,group:8,subgroup:88,version:1,shortCodes:["shuffle","twisted_rightwards_arrows"]},{label:"repeat button",hexcode:"1F501",tags:["arrow","button","clockwise","repeat"],emoji:"🔁",text:"",type:1,order:4745,group:8,subgroup:88,version:1,shortCodes:["repeat"]},{label:"repeat single button",hexcode:"1F502",tags:["arrow","button","clockwise","once","repeat","single"],emoji:"🔂",text:"",type:1,order:4746,group:8,subgroup:88,version:1,shortCodes:["repeat_one"]},{label:"play button",hexcode:"25B6",tags:["arrow","button","play","right","triangle"],emoji:"▶️",text:"▶︎",type:0,order:4748,group:8,subgroup:88,version:.6,shortCodes:["arrow_forward","play"]},{label:"fast-forward button",hexcode:"23E9",tags:["arrow","button","double","fast","fast-forward","forward"],emoji:"⏩️",text:"⏩︎",type:1,order:4749,group:8,subgroup:88,version:.6,shortCodes:["fast_forward"]},{label:"next track button",hexcode:"23ED",tags:["arrow","button","next","scene","track","triangle"],emoji:"⏭️",text:"⏭︎",type:0,order:4751,group:8,subgroup:88,version:.7,shortCodes:["next_track"]},{label:"play or pause button",hexcode:"23EF",tags:["arrow","button","pause","play","right","triangle"],emoji:"⏯️",text:"⏯︎",type:0,order:4753,group:8,subgroup:88,version:1,shortCodes:["play_pause"]},{label:"reverse button",hexcode:"25C0",tags:["arrow","button","left","reverse","triangle"],emoji:"◀️",text:"◀︎",type:0,order:4755,group:8,subgroup:88,version:.6,shortCodes:["arrow_backward","reverse"]},{label:"fast reverse button",hexcode:"23EA",tags:["arrow","button","double","fast","reverse","rewind"],emoji:"⏪️",text:"⏪︎",type:1,order:4756,group:8,subgroup:88,version:.6,shortCodes:["fast_reverse","rewind"]},{label:"last track button",hexcode:"23EE",tags:["arrow","button","last","previous","scene","track","triangle"],emoji:"⏮️",text:"⏮︎",type:0,order:4758,group:8,subgroup:88,version:.7,shortCodes:["previous_track"]},{label:"upwards button",hexcode:"1F53C",tags:["arrow","button","red","up","upwards"],emoji:"🔼",text:"",type:1,order:4759,group:8,subgroup:88,version:.6,shortCodes:["arrow_up_small","up"]},{label:"fast up button",hexcode:"23EB",tags:["arrow","button","double","fast","up"],emoji:"⏫️",text:"⏫︎",type:1,order:4760,group:8,subgroup:88,version:.6,shortCodes:["arrow_double_up","fast_up"]},{label:"downwards button",hexcode:"1F53D",tags:["arrow","button","down","downwards","red"],emoji:"🔽",text:"",type:1,order:4761,group:8,subgroup:88,version:.6,shortCodes:["arrow_down_small","down"]},{label:"fast down button",hexcode:"23EC",tags:["arrow","button","double","down","fast"],emoji:"⏬️",text:"⏬︎",type:1,order:4762,group:8,subgroup:88,version:.6,shortCodes:["arrow_double_down","fast_down"]},{label:"pause button",hexcode:"23F8",tags:["bar","button","double","pause","vertical"],emoji:"⏸️",text:"⏸︎",type:0,order:4764,group:8,subgroup:88,version:.7,shortCodes:["pause"]},{label:"stop button",hexcode:"23F9",tags:["button","square","stop"],emoji:"⏹️",text:"⏹︎",type:0,order:4766,group:8,subgroup:88,version:.7,shortCodes:["stop"]},{label:"record button",hexcode:"23FA",tags:["button","circle","record"],emoji:"⏺️",text:"⏺︎",type:0,order:4768,group:8,subgroup:88,version:.7,shortCodes:["record"]},{label:"eject button",hexcode:"23CF",tags:["button","eject"],emoji:"⏏️",text:"⏏︎",type:0,order:4770,group:8,subgroup:88,version:1,shortCodes:["eject"]},{label:"cinema",hexcode:"1F3A6",tags:["camera","film","movie"],emoji:"🎦",text:"",type:1,order:4771,group:8,subgroup:88,version:.6,shortCodes:["cinema"]},{label:"dim button",hexcode:"1F505",tags:["brightness","button","dim","low"],emoji:"🔅",text:"",type:1,order:4772,group:8,subgroup:88,version:1,shortCodes:["dim_button","low_brightness"]},{label:"bright button",hexcode:"1F506",tags:["bright","brightness","button","light"],emoji:"🔆",text:"",type:1,order:4773,group:8,subgroup:88,version:1,shortCodes:["bright_button","high_brightness"]},{label:"antenna bars",hexcode:"1F4F6",tags:["antenna","bar","bars","cell","communication","mobile","phone","signal","telephone"],emoji:"📶",text:"",type:1,order:4774,group:8,subgroup:88,version:.6,shortCodes:["antenna_bars","signal_strength"]},{label:"wireless",hexcode:"1F6DC",tags:["broadband","computer","connectivity","hotspot","internet","network","router","smartphone","wi-fi","wifi","wlan"],emoji:"🛜",text:"",type:1,order:4775,group:8,subgroup:88,version:15,shortCodes:["wireless"]},{label:"vibration mode",hexcode:"1F4F3",tags:["cell","communication","mobile","mode","phone","telephone","vibration"],emoji:"📳",text:"",type:1,order:4776,group:8,subgroup:88,version:.6,shortCodes:["vibration_mode"]},{label:"mobile phone off",hexcode:"1F4F4",tags:["cell","mobile","off","phone","telephone"],emoji:"📴",text:"",type:1,order:4777,group:8,subgroup:88,version:.6,shortCodes:["mobile_phone_off"]},{label:"female sign",hexcode:"2640",tags:["female","sign","woman"],emoji:"♀️",text:"♀︎",type:0,order:4779,group:8,subgroup:89,version:4,shortCodes:["female","female_sign"]},{label:"male sign",hexcode:"2642",tags:["male","man","sign"],emoji:"♂️",text:"♂︎",type:0,order:4781,group:8,subgroup:89,version:4,shortCodes:["male","male_sign"]},{label:"transgender symbol",hexcode:"26A7",tags:["symbol","transgender"],emoji:"⚧️",text:"⚧︎",type:0,order:4783,group:8,subgroup:89,version:13,shortCodes:["transgender_symbol"]},{label:"multiply",hexcode:"2716",tags:["cancel","multiplication","sign","x","×"],emoji:"✖️",text:"✖︎",type:0,order:4785,group:8,subgroup:90,version:.6,shortCodes:["multiplication","multiply"]},{label:"plus",hexcode:"2795",tags:["+"],emoji:"➕️",text:"➕︎",type:1,order:4786,group:8,subgroup:90,version:.6,shortCodes:["plus"]},{label:"minus",hexcode:"2796",tags:["-","heavy","math","sign","−"],emoji:"➖️",text:"➖︎",type:1,order:4787,group:8,subgroup:90,version:.6,shortCodes:["minus"]},{label:"divide",hexcode:"2797",tags:["division","heavy","math","sign","÷"],emoji:"➗️",text:"➗︎",type:1,order:4788,group:8,subgroup:90,version:.6,shortCodes:["divide","division"]},{label:"heavy equals sign",hexcode:"1F7F0",tags:["answer","equal","equality","equals","heavy","math","sign"],emoji:"🟰",text:"",type:1,order:4789,group:8,subgroup:90,version:14,shortCodes:["heavy_equals_sign"]},{label:"infinity",hexcode:"267E",tags:["forever","unbounded","universal"],emoji:"♾️",text:"♾︎",type:0,order:4791,group:8,subgroup:90,version:11,shortCodes:["infinity"]},{label:"double exclamation mark",hexcode:"203C",tags:["!","!!","bangbang","double","exclamation","mark","punctuation"],emoji:"‼️",text:"‼︎",type:0,order:4793,group:8,subgroup:91,version:.6,shortCodes:["bangbang","double_exclamation"]},{label:"exclamation question mark",hexcode:"2049",tags:["!","!?","?","exclamation","interrobang","mark","punctuation","question"],emoji:"⁉️",text:"⁉︎",type:0,order:4795,group:8,subgroup:91,version:.6,shortCodes:["exclamation_question","interrobang"]},{label:"red question mark",hexcode:"2753",tags:["?","mark","punctuation","question","red"],emoji:"❓️",text:"❓︎",type:1,order:4796,group:8,subgroup:91,version:.6,shortCodes:["question"]},{label:"white question mark",hexcode:"2754",tags:["?","mark","outlined","punctuation","question","white"],emoji:"❔️",text:"❔︎",type:1,order:4797,group:8,subgroup:91,version:.6,shortCodes:["white_question"]},{label:"white exclamation mark",hexcode:"2755",tags:["!","exclamation","mark","outlined","punctuation","white"],emoji:"❕️",text:"❕︎",type:1,order:4798,group:8,subgroup:91,version:.6,shortCodes:["white_exclamation"]},{label:"red exclamation mark",hexcode:"2757",tags:["!","exclamation","mark","punctuation","red"],emoji:"❗️",text:"❗︎",type:1,order:4799,group:8,subgroup:91,version:.6,shortCodes:["exclamation"]},{label:"wavy dash",hexcode:"3030",tags:["dash","punctuation","wavy"],emoji:"〰️",text:"〰︎",type:0,order:4801,group:8,subgroup:91,version:.6,shortCodes:["wavy_dash"]},{label:"currency exchange",hexcode:"1F4B1",tags:["bank","currency","exchange","money"],emoji:"💱",text:"",type:1,order:4802,group:8,subgroup:92,version:.6,shortCodes:["currency_exchange"]},{label:"heavy dollar sign",hexcode:"1F4B2",tags:["billion","cash","charge","currency","dollar","heavy","million","money","pay","sign"],emoji:"💲",text:"",type:1,order:4803,group:8,subgroup:92,version:.6,shortCodes:["heavy_dollar_sign"]},{label:"medical symbol",hexcode:"2695",tags:["aesculapius","medical","medicine","staff","symbol"],emoji:"⚕️",text:"⚕︎",type:0,order:4805,group:8,subgroup:93,version:4,shortCodes:["medical","medical_symbol"]},{label:"recycling symbol",hexcode:"267B",tags:["recycle","recycling","symbol"],emoji:"♻️",text:"♻︎",type:0,order:4807,group:8,subgroup:93,version:.6,shortCodes:["recycle","recycling_symbol"]},{label:"fleur-de-lis",hexcode:"269C",tags:["knights"],emoji:"⚜️",text:"⚜︎",type:0,order:4809,group:8,subgroup:93,version:1,shortCodes:["fleur-de-lis"]},{label:"trident emblem",hexcode:"1F531",tags:["anchor","emblem","poseidon","ship","tool","trident"],emoji:"🔱",text:"",type:1,order:4810,group:8,subgroup:93,version:.6,shortCodes:["trident"]},{label:"name badge",hexcode:"1F4DB",tags:["badge","name"],emoji:"📛",text:"",type:1,order:4811,group:8,subgroup:93,version:.6,shortCodes:["name_badge"]},{label:"Japanese symbol for beginner",hexcode:"1F530",tags:["beginner","chevron","green","japanese","leaf","symbol","tool","yellow"],emoji:"🔰",text:"",type:1,order:4812,group:8,subgroup:93,version:.6,shortCodes:["beginner"]},{label:"hollow red circle",hexcode:"2B55",tags:["circle","heavy","hollow","large","o","red"],emoji:"⭕️",text:"⭕︎",type:1,order:4813,group:8,subgroup:93,version:.6,shortCodes:["hollow_red_circle","red_o"]},{label:"check mark button",hexcode:"2705",tags:["button","check","checked","checkmark","complete","completed","done","fixed","mark","tick","✓"],emoji:"✅️",text:"✅︎",type:1,order:4814,group:8,subgroup:93,version:.6,shortCodes:["check_mark_button","white_check_mark"]},{label:"check box with check",hexcode:"2611",tags:["ballot","box","check","checked","done","off","tick","✓"],emoji:"☑️",text:"☑︎",type:0,order:4816,group:8,subgroup:93,version:.6,shortCodes:["ballot_box_with_check"]},{label:"check mark",hexcode:"2714",tags:["check","checked","checkmark","done","heavy","mark","tick","✓"],emoji:"✔️",text:"✔︎",type:0,order:4818,group:8,subgroup:93,version:.6,shortCodes:["check_mark","heavy_check_mark"]},{label:"cross mark",hexcode:"274C",tags:["cancel","cross","mark","multiplication","multiply","x","×"],emoji:"❌️",text:"❌︎",type:1,order:4819,group:8,subgroup:93,version:.6,shortCodes:["cross_mark","x"]},{label:"cross mark button",hexcode:"274E",tags:["button","cross","mark","multiplication","multiply","square","x","×"],emoji:"❎️",text:"❎︎",type:1,order:4820,group:8,subgroup:93,version:.6,shortCodes:["cross_mark_button","negative_squared_cross_mark"]},{label:"curly loop",hexcode:"27B0",tags:["curl","curly","loop"],emoji:"➰️",text:"➰︎",type:1,order:4821,group:8,subgroup:93,version:.6,shortCodes:["curly_loop"]},{label:"double curly loop",hexcode:"27BF",tags:["curl","curly","double","loop"],emoji:"➿️",text:"➿︎",type:1,order:4822,group:8,subgroup:93,version:1,shortCodes:["double_curly_loop","loop"]},{label:"part alternation mark",hexcode:"303D",tags:["alternation","mark","part"],emoji:"〽️",text:"〽︎",type:0,order:4824,group:8,subgroup:93,version:.6,shortCodes:["part_alternation_mark"]},{label:"eight-spoked asterisk",hexcode:"2733",tags:["*","asterisk","eight-spoked"],emoji:"✳️",text:"✳︎",type:0,order:4826,group:8,subgroup:93,version:.6,shortCodes:["eight_spoked_asterisk"]},{label:"eight-pointed star",hexcode:"2734",tags:["*","eight-pointed","star"],emoji:"✴️",text:"✴︎",type:0,order:4828,group:8,subgroup:93,version:.6,shortCodes:["eight_pointed_black_star"]},{label:"sparkle",hexcode:"2747",tags:["*"],emoji:"❇️",text:"❇︎",type:0,order:4830,group:8,subgroup:93,version:.6,shortCodes:["sparkle"]},{label:"copyright",hexcode:"00A9",tags:["c"],emoji:"©️",text:"©︎",type:0,order:4832,group:8,subgroup:93,version:.6,shortCodes:["copyright"]},{label:"registered",hexcode:"00AE",tags:["r"],emoji:"®️",text:"®︎",type:0,order:4834,group:8,subgroup:93,version:.6,shortCodes:["registered"]},{label:"trade mark",hexcode:"2122",tags:["mark","tm","trade","trademark"],emoji:"™️",text:"™︎",type:0,order:4836,group:8,subgroup:93,version:.6,shortCodes:["tm","trade_mark"]},{label:"splatter",hexcode:"1FADF",tags:["drip","holi","ink","liquid","mess","paint","spill","stain"],emoji:"",text:"",type:1,order:4837,group:8,subgroup:93,version:16,shortCodes:["splatter"]},{label:"keycap: #",hexcode:"0023-FE0F-20E3",tags:["keycap"],emoji:"#️⃣",text:"",type:1,order:4838,group:8,subgroup:94,version:.6,shortCodes:["hash","number_sign"]},{label:"keycap: *",hexcode:"002A-FE0F-20E3",tags:["keycap"],emoji:"*️⃣",text:"",type:1,order:4840,group:8,subgroup:94,version:2,shortCodes:["asterisk"]},{label:"keycap: 0",hexcode:"0030-FE0F-20E3",tags:["0","keycap","zero"],emoji:"0️⃣",text:"",type:1,order:4842,group:8,subgroup:94,version:.6,shortCodes:["zero"]},{label:"keycap: 1",hexcode:"0031-FE0F-20E3",tags:["1","keycap","one"],emoji:"1️⃣",text:"",type:1,order:4844,group:8,subgroup:94,version:.6,shortCodes:["one"]},{label:"keycap: 2",hexcode:"0032-FE0F-20E3",tags:["2","keycap","two"],emoji:"2️⃣",text:"",type:1,order:4846,group:8,subgroup:94,version:.6,shortCodes:["two"]},{label:"keycap: 3",hexcode:"0033-FE0F-20E3",tags:["3","keycap","three"],emoji:"3️⃣",text:"",type:1,order:4848,group:8,subgroup:94,version:.6,shortCodes:["three"]},{label:"keycap: 4",hexcode:"0034-FE0F-20E3",tags:["4","four","keycap"],emoji:"4️⃣",text:"",type:1,order:4850,group:8,subgroup:94,version:.6,shortCodes:["four"]},{label:"keycap: 5",hexcode:"0035-FE0F-20E3",tags:["5","five","keycap"],emoji:"5️⃣",text:"",type:1,order:4852,group:8,subgroup:94,version:.6,shortCodes:["five"]},{label:"keycap: 6",hexcode:"0036-FE0F-20E3",tags:["6","keycap","six"],emoji:"6️⃣",text:"",type:1,order:4854,group:8,subgroup:94,version:.6,shortCodes:["six"]},{label:"keycap: 7",hexcode:"0037-FE0F-20E3",tags:["7","keycap","seven"],emoji:"7️⃣",text:"",type:1,order:4856,group:8,subgroup:94,version:.6,shortCodes:["seven"]},{label:"keycap: 8",hexcode:"0038-FE0F-20E3",tags:["8","eight","keycap"],emoji:"8️⃣",text:"",type:1,order:4858,group:8,subgroup:94,version:.6,shortCodes:["eight"]},{label:"keycap: 9",hexcode:"0039-FE0F-20E3",tags:["9","keycap","nine"],emoji:"9️⃣",text:"",type:1,order:4860,group:8,subgroup:94,version:.6,shortCodes:["nine"]},{label:"keycap: 10",hexcode:"1F51F",tags:["keycap"],emoji:"🔟",text:"",type:1,order:4862,group:8,subgroup:94,version:.6,shortCodes:["ten"]},{label:"input latin uppercase",hexcode:"1F520",tags:["abcd","input","latin","letters","uppercase"],emoji:"🔠",text:"",type:1,order:4863,group:8,subgroup:95,version:.6,shortCodes:["capital_abcd"]},{label:"input latin lowercase",hexcode:"1F521",tags:["abcd","input","latin","letters","lowercase"],emoji:"🔡",text:"",type:1,order:4864,group:8,subgroup:95,version:.6,shortCodes:["abcd"]},{label:"input numbers",hexcode:"1F522",tags:["1234","input","numbers"],emoji:"🔢",text:"",type:1,order:4865,group:8,subgroup:95,version:.6,shortCodes:["1234"]},{label:"input symbols",hexcode:"1F523",tags:["%","&","input","symbols","♪","〒"],emoji:"🔣",text:"",type:1,order:4866,group:8,subgroup:95,version:.6,shortCodes:["symbols"]},{label:"input latin letters",hexcode:"1F524",tags:["abc","alphabet","input","latin","letters"],emoji:"🔤",text:"",type:1,order:4867,group:8,subgroup:95,version:.6,shortCodes:["abc"]},{label:"A button (blood type)",hexcode:"1F170",tags:["blood","button","type"],emoji:"🅰️",text:"🅰︎",type:0,order:4869,group:8,subgroup:95,version:.6,shortCodes:["a","a_blood"]},{label:"AB button (blood type)",hexcode:"1F18E",tags:["ab","blood","button","type"],emoji:"🆎",text:"",type:1,order:4870,group:8,subgroup:95,version:.6,shortCodes:["ab","ab_blood"]},{label:"B button (blood type)",hexcode:"1F171",tags:["b","blood","button","type"],emoji:"🅱️",text:"🅱︎",type:0,order:4872,group:8,subgroup:95,version:.6,shortCodes:["b","b_blood"]},{label:"CL button",hexcode:"1F191",tags:["button","cl"],emoji:"🆑",text:"",type:1,order:4873,group:8,subgroup:95,version:.6,shortCodes:["cl"]},{label:"COOL button",hexcode:"1F192",tags:["button","cool"],emoji:"🆒",text:"",type:1,order:4874,group:8,subgroup:95,version:.6,shortCodes:["cool"]},{label:"FREE button",hexcode:"1F193",tags:["button","free"],emoji:"🆓",text:"",type:1,order:4875,group:8,subgroup:95,version:.6,shortCodes:["free"]},{label:"information",hexcode:"2139",tags:["i"],emoji:"ℹ️",text:"ℹ︎",type:0,order:4877,group:8,subgroup:95,version:.6,shortCodes:["info","information_source"]},{label:"ID button",hexcode:"1F194",tags:["button","id","identity"],emoji:"🆔",text:"",type:1,order:4878,group:8,subgroup:95,version:.6,shortCodes:["id"]},{label:"circled M",hexcode:"24C2",tags:["circle","circled","m"],emoji:"Ⓜ️",text:"Ⓜ︎",type:0,order:4880,group:8,subgroup:95,version:.6,shortCodes:["m"]},{label:"NEW button",hexcode:"1F195",tags:["button","new"],emoji:"🆕",text:"",type:1,order:4881,group:8,subgroup:95,version:.6,shortCodes:["new"]},{label:"NG button",hexcode:"1F196",tags:["button","ng"],emoji:"🆖",text:"",type:1,order:4882,group:8,subgroup:95,version:.6,shortCodes:["ng"]},{label:"O button (blood type)",hexcode:"1F17E",tags:["blood","button","o","type"],emoji:"🅾️",text:"🅾︎",type:0,order:4884,group:8,subgroup:95,version:.6,shortCodes:["o","o_blood"]},{label:"OK button",hexcode:"1F197",tags:["button","ok","okay"],emoji:"🆗",text:"",type:1,order:4885,group:8,subgroup:95,version:.6,shortCodes:["ok"]},{label:"P button",hexcode:"1F17F",tags:["button","p","parking"],emoji:"🅿️",text:"🅿︎",type:0,order:4887,group:8,subgroup:95,version:.6,shortCodes:["parking"]},{label:"SOS button",hexcode:"1F198",tags:["button","help","sos"],emoji:"🆘",text:"",type:1,order:4888,group:8,subgroup:95,version:.6,shortCodes:["sos"]},{label:"UP! button",hexcode:"1F199",tags:["button","mark","up","up!"],emoji:"🆙",text:"",type:1,order:4889,group:8,subgroup:95,version:.6,shortCodes:["up2"]},{label:"VS button",hexcode:"1F19A",tags:["button","versus","vs"],emoji:"🆚",text:"",type:1,order:4890,group:8,subgroup:95,version:.6,shortCodes:["vs"]},{label:"Japanese “here” button",hexcode:"1F201",tags:["button","here","japanese","katakana"],emoji:"🈁",text:"",type:1,order:4891,group:8,subgroup:95,version:.6,shortCodes:["ja_here","koko"]},{label:"Japanese “service charge” button",hexcode:"1F202",tags:["button","charge","japanese","katakana","service"],emoji:"🈂️",text:"🈂︎",type:0,order:4893,group:8,subgroup:95,version:.6,shortCodes:["ja_service_charge"]},{label:"Japanese “monthly amount” button",hexcode:"1F237",tags:["amount","button","ideograph","japanese","monthly"],emoji:"🈷️",text:"🈷︎",type:0,order:4895,group:8,subgroup:95,version:.6,shortCodes:["ja_monthly_amount"]},{label:"Japanese “not free of charge” button",hexcode:"1F236",tags:["button","charge","free","ideograph","japanese","not"],emoji:"🈶",text:"",type:1,order:4896,group:8,subgroup:95,version:.6,shortCodes:["ja_not_free_of_carge"]},{label:"Japanese “reserved” button",hexcode:"1F22F",tags:["button","ideograph","japanese","reserved"],emoji:"🈯️",text:"🈯︎",type:1,order:4897,group:8,subgroup:95,version:.6,shortCodes:["ja_reserved"]},{label:"Japanese “bargain” button",hexcode:"1F250",tags:["bargain","button","ideograph","japanese"],emoji:"🉐",text:"",type:1,order:4898,group:8,subgroup:95,version:.6,shortCodes:["ideograph_advantage","ja_bargain"]},{label:"Japanese “discount” button",hexcode:"1F239",tags:["button","discount","ideograph","japanese"],emoji:"🈹",text:"",type:1,order:4899,group:8,subgroup:95,version:.6,shortCodes:["ja_discount"]},{label:"Japanese “free of charge” button",hexcode:"1F21A",tags:["button","charge","free","ideograph","japanese"],emoji:"🈚️",text:"🈚︎",type:1,order:4900,group:8,subgroup:95,version:.6,shortCodes:["ja_free_of_charge"]},{label:"Japanese “prohibited” button",hexcode:"1F232",tags:["button","ideograph","japanese","prohibited"],emoji:"🈲",text:"",type:1,order:4901,group:8,subgroup:95,version:.6,shortCodes:["ja_prohibited"]},{label:"Japanese “acceptable” button",hexcode:"1F251",tags:["acceptable","button","ideograph","japanese"],emoji:"🉑",text:"",type:1,order:4902,group:8,subgroup:95,version:.6,shortCodes:["accept","ja_acceptable"]},{label:"Japanese “application” button",hexcode:"1F238",tags:["application","button","ideograph","japanese"],emoji:"🈸",text:"",type:1,order:4903,group:8,subgroup:95,version:.6,shortCodes:["ja_application"]},{label:"Japanese “passing grade” button",hexcode:"1F234",tags:["button","grade","ideograph","japanese","passing"],emoji:"🈴",text:"",type:1,order:4904,group:8,subgroup:95,version:.6,shortCodes:["ja_passing_grade"]},{label:"Japanese “vacancy” button",hexcode:"1F233",tags:["button","ideograph","japanese","vacancy"],emoji:"🈳",text:"",type:1,order:4905,group:8,subgroup:95,version:.6,shortCodes:["ja_vacancy"]},{label:"Japanese “congratulations” button",hexcode:"3297",tags:["button","congratulations","ideograph","japanese"],emoji:"㊗️",text:"㊗︎",type:0,order:4907,group:8,subgroup:95,version:.6,shortCodes:["congratulations","ja_congratulations"]},{label:"Japanese “secret” button",hexcode:"3299",tags:["button","ideograph","japanese","secret"],emoji:"㊙️",text:"㊙︎",type:0,order:4909,group:8,subgroup:95,version:.6,shortCodes:["ja_secret","secret"]},{label:"Japanese “open for business” button",hexcode:"1F23A",tags:["business","button","ideograph","japanese","open"],emoji:"🈺",text:"",type:1,order:4910,group:8,subgroup:95,version:.6,shortCodes:["ja_open_for_business"]},{label:"Japanese “no vacancy” button",hexcode:"1F235",tags:["button","ideograph","japanese","no","vacancy"],emoji:"🈵",text:"",type:1,order:4911,group:8,subgroup:95,version:.6,shortCodes:["ja_no_vacancy"]},{label:"red circle",hexcode:"1F534",tags:["circle","geometric","red"],emoji:"🔴",text:"",type:1,order:4912,group:8,subgroup:96,version:.6,shortCodes:["red_circle"]},{label:"orange circle",hexcode:"1F7E0",tags:["circle","orange"],emoji:"🟠",text:"",type:1,order:4913,group:8,subgroup:96,version:12,shortCodes:["orange_circle"]},{label:"yellow circle",hexcode:"1F7E1",tags:["circle","yellow"],emoji:"🟡",text:"",type:1,order:4914,group:8,subgroup:96,version:12,shortCodes:["yellow_circle"]},{label:"green circle",hexcode:"1F7E2",tags:["circle","green"],emoji:"🟢",text:"",type:1,order:4915,group:8,subgroup:96,version:12,shortCodes:["green_circle"]},{label:"blue circle",hexcode:"1F535",tags:["blue","circle","geometric"],emoji:"🔵",text:"",type:1,order:4916,group:8,subgroup:96,version:.6,shortCodes:["blue_circle"]},{label:"purple circle",hexcode:"1F7E3",tags:["circle","purple"],emoji:"🟣",text:"",type:1,order:4917,group:8,subgroup:96,version:12,shortCodes:["purple_circle"]},{label:"brown circle",hexcode:"1F7E4",tags:["brown","circle"],emoji:"🟤",text:"",type:1,order:4918,group:8,subgroup:96,version:12,shortCodes:["brown_circle"]},{label:"black circle",hexcode:"26AB",tags:["black","circle","geometric"],emoji:"⚫️",text:"⚫︎",type:1,order:4919,group:8,subgroup:96,version:.6,shortCodes:["black_circle"]},{label:"white circle",hexcode:"26AA",tags:["circle","geometric","white"],emoji:"⚪️",text:"⚪︎",type:1,order:4920,group:8,subgroup:96,version:.6,shortCodes:["white_circle"]},{label:"red square",hexcode:"1F7E5",tags:["card","penalty","red","square"],emoji:"🟥",text:"",type:1,order:4921,group:8,subgroup:96,version:12,shortCodes:["red_square"]},{label:"orange square",hexcode:"1F7E7",tags:["orange","square"],emoji:"🟧",text:"",type:1,order:4922,group:8,subgroup:96,version:12,shortCodes:["orange_square"]},{label:"yellow square",hexcode:"1F7E8",tags:["card","penalty","square","yellow"],emoji:"🟨",text:"",type:1,order:4923,group:8,subgroup:96,version:12,shortCodes:["yellow_square"]},{label:"green square",hexcode:"1F7E9",tags:["green","square"],emoji:"🟩",text:"",type:1,order:4924,group:8,subgroup:96,version:12,shortCodes:["green_square"]},{label:"blue square",hexcode:"1F7E6",tags:["blue","square"],emoji:"🟦",text:"",type:1,order:4925,group:8,subgroup:96,version:12,shortCodes:["blue_square"]},{label:"purple square",hexcode:"1F7EA",tags:["purple","square"],emoji:"🟪",text:"",type:1,order:4926,group:8,subgroup:96,version:12,shortCodes:["purple_square"]},{label:"brown square",hexcode:"1F7EB",tags:["brown","square"],emoji:"🟫",text:"",type:1,order:4927,group:8,subgroup:96,version:12,shortCodes:["brown_square"]},{label:"black large square",hexcode:"2B1B",tags:["black","geometric","large","square"],emoji:"⬛️",text:"⬛︎",type:1,order:4928,group:8,subgroup:96,version:.6,shortCodes:["black_large_square"]},{label:"white large square",hexcode:"2B1C",tags:["geometric","large","square","white"],emoji:"⬜️",text:"⬜︎",type:1,order:4929,group:8,subgroup:96,version:.6,shortCodes:["white_large_square"]},{label:"black medium square",hexcode:"25FC",tags:["black","geometric","medium","square"],emoji:"◼️",text:"◼︎",type:0,order:4931,group:8,subgroup:96,version:.6,shortCodes:["black_medium_square"]},{label:"white medium square",hexcode:"25FB",tags:["geometric","medium","square","white"],emoji:"◻️",text:"◻︎",type:0,order:4933,group:8,subgroup:96,version:.6,shortCodes:["white_medium_square"]},{label:"black medium-small square",hexcode:"25FE",tags:["black","geometric","medium-small","square"],emoji:"◾️",text:"◾︎",type:1,order:4934,group:8,subgroup:96,version:.6,shortCodes:["black_medium_small_square"]},{label:"white medium-small square",hexcode:"25FD",tags:["geometric","medium-small","square","white"],emoji:"◽️",text:"◽︎",type:1,order:4935,group:8,subgroup:96,version:.6,shortCodes:["white_medium_small_square"]},{label:"black small square",hexcode:"25AA",tags:["black","geometric","small","square"],emoji:"▪️",text:"▪︎",type:0,order:4937,group:8,subgroup:96,version:.6,shortCodes:["black_small_square"]},{label:"white small square",hexcode:"25AB",tags:["geometric","small","square","white"],emoji:"▫️",text:"▫︎",type:0,order:4939,group:8,subgroup:96,version:.6,shortCodes:["white_small_square"]},{label:"large orange diamond",hexcode:"1F536",tags:["diamond","geometric","large","orange"],emoji:"🔶",text:"",type:1,order:4940,group:8,subgroup:96,version:.6,shortCodes:["large_orange_diamond"]},{label:"large blue diamond",hexcode:"1F537",tags:["blue","diamond","geometric","large"],emoji:"🔷",text:"",type:1,order:4941,group:8,subgroup:96,version:.6,shortCodes:["large_blue_diamond"]},{label:"small orange diamond",hexcode:"1F538",tags:["diamond","geometric","orange","small"],emoji:"🔸",text:"",type:1,order:4942,group:8,subgroup:96,version:.6,shortCodes:["small_orange_diamond"]},{label:"small blue diamond",hexcode:"1F539",tags:["blue","diamond","geometric","small"],emoji:"🔹",text:"",type:1,order:4943,group:8,subgroup:96,version:.6,shortCodes:["small_blue_diamond"]},{label:"red triangle pointed up",hexcode:"1F53A",tags:["geometric","pointed","red","triangle","up"],emoji:"🔺",text:"",type:1,order:4944,group:8,subgroup:96,version:.6,shortCodes:["small_red_triangle"]},{label:"red triangle pointed down",hexcode:"1F53B",tags:["down","geometric","pointed","red","triangle"],emoji:"🔻",text:"",type:1,order:4945,group:8,subgroup:96,version:.6,shortCodes:["small_red_triangle_down"]},{label:"diamond with a dot",hexcode:"1F4A0",tags:["comic","diamond","dot","geometric"],emoji:"💠",text:"",type:1,order:4946,group:8,subgroup:96,version:.6,shortCodes:["diamond_shape_with_a_dot_inside","diamond_with_a_dot"]},{label:"radio button",hexcode:"1F518",tags:["button","geometric","radio"],emoji:"🔘",text:"",type:1,order:4947,group:8,subgroup:96,version:.6,shortCodes:["radio_button"]},{label:"white square button",hexcode:"1F533",tags:["button","geometric","outlined","square","white"],emoji:"🔳",text:"",type:1,order:4948,group:8,subgroup:96,version:.6,shortCodes:["white_square_button"]},{label:"black square button",hexcode:"1F532",tags:["black","button","geometric","square"],emoji:"🔲",text:"",type:1,order:4949,group:8,subgroup:96,version:.6,shortCodes:["black_square_button"]},{label:"chequered flag",hexcode:"1F3C1",tags:["checkered","chequered","finish","flag","flags","game","race","racing","sport","win"],emoji:"🏁",text:"",type:1,order:4950,group:9,subgroup:97,version:.6,shortCodes:["checkered_flag"]},{label:"triangular flag",hexcode:"1F6A9",tags:["construction","flag","golf","post","triangular"],emoji:"🚩",text:"",type:1,order:4951,group:9,subgroup:97,version:.6,shortCodes:["triangular_flag","triangular_flag_on_post"]},{label:"crossed flags",hexcode:"1F38C",tags:["celebration","cross","crossed","flags","japanese"],emoji:"🎌",text:"",type:1,order:4952,group:9,subgroup:97,version:.6,shortCodes:["crossed_flags"]},{label:"black flag",hexcode:"1F3F4",tags:["black","flag","waving"],emoji:"🏴",text:"",type:1,order:4953,group:9,subgroup:97,version:1,shortCodes:["black_flag"]},{label:"white flag",hexcode:"1F3F3",tags:["flag","waving","white"],emoji:"🏳️",text:"🏳︎",type:0,order:4955,group:9,subgroup:97,version:.7,shortCodes:["white_flag"]},{label:"rainbow flag",hexcode:"1F3F3-FE0F-200D-1F308",tags:["bisexual","flag","gay","genderqueer","glbt","glbtq","lesbian","lgbt","lgbtq","lgbtqia","pride","queer","rainbow","trans","transgender"],emoji:"🏳️🌈",text:"",type:1,order:4956,group:9,subgroup:97,version:4,shortCodes:["rainbow_flag"]},{label:"transgender flag",hexcode:"1F3F3-FE0F-200D-26A7-FE0F",tags:["blue","flag","light","pink","transgender","white"],emoji:"🏳️⚧️",text:"",type:1,order:4958,group:9,subgroup:97,version:13,shortCodes:["transgender_flag"]},{label:"pirate flag",hexcode:"1F3F4-200D-2620-FE0F",tags:["flag","jolly","pirate","plunder","roger","treasure"],emoji:"🏴☠️",text:"",type:1,order:4962,group:9,subgroup:97,version:11,shortCodes:["jolly_roger","pirate_flag"]},{label:"flag: Ascension Island",hexcode:"1F1E6-1F1E8",tags:["AC","flag"],emoji:"🇦🇨",text:"",type:1,order:4964,group:9,subgroup:98,version:2,shortCodes:["ascension_island","flag_ac"]},{label:"flag: Andorra",hexcode:"1F1E6-1F1E9",tags:["AD","flag"],emoji:"🇦🇩",text:"",type:1,order:4965,group:9,subgroup:98,version:2,shortCodes:["andorra","flag_ad"]},{label:"flag: United Arab Emirates",hexcode:"1F1E6-1F1EA",tags:["AE","flag"],emoji:"🇦🇪",text:"",type:1,order:4966,group:9,subgroup:98,version:2,shortCodes:["flag_ae","united_arab_emirates"]},{label:"flag: Afghanistan",hexcode:"1F1E6-1F1EB",tags:["AF","flag"],emoji:"🇦🇫",text:"",type:1,order:4967,group:9,subgroup:98,version:2,shortCodes:["afghanistan","flag_af"]},{label:"flag: Antigua & Barbuda",hexcode:"1F1E6-1F1EC",tags:["AG","flag"],emoji:"🇦🇬",text:"",type:1,order:4968,group:9,subgroup:98,version:2,shortCodes:["antigua_barbuda","flag_ag"]},{label:"flag: Anguilla",hexcode:"1F1E6-1F1EE",tags:["AI","flag"],emoji:"🇦🇮",text:"",type:1,order:4969,group:9,subgroup:98,version:2,shortCodes:["anguilla","flag_ai"]},{label:"flag: Albania",hexcode:"1F1E6-1F1F1",tags:["AL","flag"],emoji:"🇦🇱",text:"",type:1,order:4970,group:9,subgroup:98,version:2,shortCodes:["albania","flag_al"]},{label:"flag: Armenia",hexcode:"1F1E6-1F1F2",tags:["AM","flag"],emoji:"🇦🇲",text:"",type:1,order:4971,group:9,subgroup:98,version:2,shortCodes:["armenia","flag_am"]},{label:"flag: Angola",hexcode:"1F1E6-1F1F4",tags:["AO","flag"],emoji:"🇦🇴",text:"",type:1,order:4972,group:9,subgroup:98,version:2,shortCodes:["angola","flag_ao"]},{label:"flag: Antarctica",hexcode:"1F1E6-1F1F6",tags:["AQ","flag"],emoji:"🇦🇶",text:"",type:1,order:4973,group:9,subgroup:98,version:2,shortCodes:["antarctica","flag_aq"]},{label:"flag: Argentina",hexcode:"1F1E6-1F1F7",tags:["AR","flag"],emoji:"🇦🇷",text:"",type:1,order:4974,group:9,subgroup:98,version:2,shortCodes:["argentina","flag_ar"]},{label:"flag: American Samoa",hexcode:"1F1E6-1F1F8",tags:["AS","flag"],emoji:"🇦🇸",text:"",type:1,order:4975,group:9,subgroup:98,version:2,shortCodes:["american_samoa","flag_as"]},{label:"flag: Austria",hexcode:"1F1E6-1F1F9",tags:["AT","flag"],emoji:"🇦🇹",text:"",type:1,order:4976,group:9,subgroup:98,version:2,shortCodes:["austria","flag_at"]},{label:"flag: Australia",hexcode:"1F1E6-1F1FA",tags:["AU","flag"],emoji:"🇦🇺",text:"",type:1,order:4977,group:9,subgroup:98,version:2,shortCodes:["australia","flag_au"]},{label:"flag: Aruba",hexcode:"1F1E6-1F1FC",tags:["AW","flag"],emoji:"🇦🇼",text:"",type:1,order:4978,group:9,subgroup:98,version:2,shortCodes:["aruba","flag_aw"]},{label:"flag: Åland Islands",hexcode:"1F1E6-1F1FD",tags:["AX","flag"],emoji:"🇦🇽",text:"",type:1,order:4979,group:9,subgroup:98,version:2,shortCodes:["aland_islands","flag_ax"]},{label:"flag: Azerbaijan",hexcode:"1F1E6-1F1FF",tags:["AZ","flag"],emoji:"🇦🇿",text:"",type:1,order:4980,group:9,subgroup:98,version:2,shortCodes:["azerbaijan","flag_az"]},{label:"flag: Bosnia & Herzegovina",hexcode:"1F1E7-1F1E6",tags:["BA","flag"],emoji:"🇧🇦",text:"",type:1,order:4981,group:9,subgroup:98,version:2,shortCodes:["bosnia_herzegovina","flag_ba"]},{label:"flag: Barbados",hexcode:"1F1E7-1F1E7",tags:["BB","flag"],emoji:"🇧🇧",text:"",type:1,order:4982,group:9,subgroup:98,version:2,shortCodes:["barbados","flag_bb"]},{label:"flag: Bangladesh",hexcode:"1F1E7-1F1E9",tags:["BD","flag"],emoji:"🇧🇩",text:"",type:1,order:4983,group:9,subgroup:98,version:2,shortCodes:["bangladesh","flag_bd"]},{label:"flag: Belgium",hexcode:"1F1E7-1F1EA",tags:["BE","flag"],emoji:"🇧🇪",text:"",type:1,order:4984,group:9,subgroup:98,version:2,shortCodes:["belgium","flag_be"]},{label:"flag: Burkina Faso",hexcode:"1F1E7-1F1EB",tags:["BF","flag"],emoji:"🇧🇫",text:"",type:1,order:4985,group:9,subgroup:98,version:2,shortCodes:["burkina_faso","flag_bf"]},{label:"flag: Bulgaria",hexcode:"1F1E7-1F1EC",tags:["BG","flag"],emoji:"🇧🇬",text:"",type:1,order:4986,group:9,subgroup:98,version:2,shortCodes:["bulgaria","flag_bg"]},{label:"flag: Bahrain",hexcode:"1F1E7-1F1ED",tags:["BH","flag"],emoji:"🇧🇭",text:"",type:1,order:4987,group:9,subgroup:98,version:2,shortCodes:["bahrain","flag_bh"]},{label:"flag: Burundi",hexcode:"1F1E7-1F1EE",tags:["BI","flag"],emoji:"🇧🇮",text:"",type:1,order:4988,group:9,subgroup:98,version:2,shortCodes:["burundi","flag_bi"]},{label:"flag: Benin",hexcode:"1F1E7-1F1EF",tags:["BJ","flag"],emoji:"🇧🇯",text:"",type:1,order:4989,group:9,subgroup:98,version:2,shortCodes:["benin","flag_bj"]},{label:"flag: St. Barthélemy",hexcode:"1F1E7-1F1F1",tags:["BL","flag"],emoji:"🇧🇱",text:"",type:1,order:4990,group:9,subgroup:98,version:2,shortCodes:["flag_bl","st_barthelemy"]},{label:"flag: Bermuda",hexcode:"1F1E7-1F1F2",tags:["BM","flag"],emoji:"🇧🇲",text:"",type:1,order:4991,group:9,subgroup:98,version:2,shortCodes:["bermuda","flag_bm"]},{label:"flag: Brunei",hexcode:"1F1E7-1F1F3",tags:["BN","flag"],emoji:"🇧🇳",text:"",type:1,order:4992,group:9,subgroup:98,version:2,shortCodes:["brunei","flag_bn"]},{label:"flag: Bolivia",hexcode:"1F1E7-1F1F4",tags:["BO","flag"],emoji:"🇧🇴",text:"",type:1,order:4993,group:9,subgroup:98,version:2,shortCodes:["bolivia","flag_bo"]},{label:"flag: Caribbean Netherlands",hexcode:"1F1E7-1F1F6",tags:["BQ","flag"],emoji:"🇧🇶",text:"",type:1,order:4994,group:9,subgroup:98,version:2,shortCodes:["caribbean_netherlands","flag_bq"]},{label:"flag: Brazil",hexcode:"1F1E7-1F1F7",tags:["BR","flag"],emoji:"🇧🇷",text:"",type:1,order:4995,group:9,subgroup:98,version:2,shortCodes:["brazil","flag_br"]},{label:"flag: Bahamas",hexcode:"1F1E7-1F1F8",tags:["BS","flag"],emoji:"🇧🇸",text:"",type:1,order:4996,group:9,subgroup:98,version:2,shortCodes:["bahamas","flag_bs"]},{label:"flag: Bhutan",hexcode:"1F1E7-1F1F9",tags:["BT","flag"],emoji:"🇧🇹",text:"",type:1,order:4997,group:9,subgroup:98,version:2,shortCodes:["bhutan","flag_bt"]},{label:"flag: Bouvet Island",hexcode:"1F1E7-1F1FB",tags:["BV","flag"],emoji:"🇧🇻",text:"",type:1,order:4998,group:9,subgroup:98,version:2,shortCodes:["bouvet_island","flag_bv"]},{label:"flag: Botswana",hexcode:"1F1E7-1F1FC",tags:["BW","flag"],emoji:"🇧🇼",text:"",type:1,order:4999,group:9,subgroup:98,version:2,shortCodes:["botswana","flag_bw"]},{label:"flag: Belarus",hexcode:"1F1E7-1F1FE",tags:["BY","flag"],emoji:"🇧🇾",text:"",type:1,order:5e3,group:9,subgroup:98,version:2,shortCodes:["belarus","flag_by"]},{label:"flag: Belize",hexcode:"1F1E7-1F1FF",tags:["BZ","flag"],emoji:"🇧🇿",text:"",type:1,order:5001,group:9,subgroup:98,version:2,shortCodes:["belize","flag_bz"]},{label:"flag: Canada",hexcode:"1F1E8-1F1E6",tags:["CA","flag"],emoji:"🇨🇦",text:"",type:1,order:5002,group:9,subgroup:98,version:2,shortCodes:["canada","flag_ca"]},{label:"flag: Cocos (Keeling) Islands",hexcode:"1F1E8-1F1E8",tags:["CC","flag"],emoji:"🇨🇨",text:"",type:1,order:5003,group:9,subgroup:98,version:2,shortCodes:["cocos_islands","flag_cc"]},{label:"flag: Congo - Kinshasa",hexcode:"1F1E8-1F1E9",tags:["CD","flag"],emoji:"🇨🇩",text:"",type:1,order:5004,group:9,subgroup:98,version:2,shortCodes:["congo_kinshasa","flag_cd"]},{label:"flag: Central African Republic",hexcode:"1F1E8-1F1EB",tags:["CF","flag"],emoji:"🇨🇫",text:"",type:1,order:5005,group:9,subgroup:98,version:2,shortCodes:["central_african_republic","flag_cf"]},{label:"flag: Congo - Brazzaville",hexcode:"1F1E8-1F1EC",tags:["CG","flag"],emoji:"🇨🇬",text:"",type:1,order:5006,group:9,subgroup:98,version:2,shortCodes:["congo_brazzaville","flag_cg"]},{label:"flag: Switzerland",hexcode:"1F1E8-1F1ED",tags:["CH","flag"],emoji:"🇨🇭",text:"",type:1,order:5007,group:9,subgroup:98,version:2,shortCodes:["flag_ch","switzerland"]},{label:"flag: Côte d’Ivoire",hexcode:"1F1E8-1F1EE",tags:["CI","flag"],emoji:"🇨🇮",text:"",type:1,order:5008,group:9,subgroup:98,version:2,shortCodes:["cote_divoire","flag_ci"]},{label:"flag: Cook Islands",hexcode:"1F1E8-1F1F0",tags:["CK","flag"],emoji:"🇨🇰",text:"",type:1,order:5009,group:9,subgroup:98,version:2,shortCodes:["cook_islands","flag_ck"]},{label:"flag: Chile",hexcode:"1F1E8-1F1F1",tags:["CL","flag"],emoji:"🇨🇱",text:"",type:1,order:5010,group:9,subgroup:98,version:2,shortCodes:["chile","flag_cl"]},{label:"flag: Cameroon",hexcode:"1F1E8-1F1F2",tags:["CM","flag"],emoji:"🇨🇲",text:"",type:1,order:5011,group:9,subgroup:98,version:2,shortCodes:["cameroon","flag_cm"]},{label:"flag: China",hexcode:"1F1E8-1F1F3",tags:["CN","flag"],emoji:"🇨🇳",text:"",type:1,order:5012,group:9,subgroup:98,version:.6,shortCodes:["china","flag_cn"]},{label:"flag: Colombia",hexcode:"1F1E8-1F1F4",tags:["CO","flag"],emoji:"🇨🇴",text:"",type:1,order:5013,group:9,subgroup:98,version:2,shortCodes:["colombia","flag_co"]},{label:"flag: Clipperton Island",hexcode:"1F1E8-1F1F5",tags:["CP","flag"],emoji:"🇨🇵",text:"",type:1,order:5014,group:9,subgroup:98,version:2,shortCodes:["clipperton_island","flag_cp"]},{label:"flag: Sark",hexcode:"1F1E8-1F1F6",tags:["CQ","flag"],emoji:"🇨🇶",text:"",type:1,order:5015,group:9,subgroup:98,version:16,shortCodes:["flag_cq","sark"]},{label:"flag: Costa Rica",hexcode:"1F1E8-1F1F7",tags:["CR","flag"],emoji:"🇨🇷",text:"",type:1,order:5016,group:9,subgroup:98,version:2,shortCodes:["costa_rica","flag_cr"]},{label:"flag: Cuba",hexcode:"1F1E8-1F1FA",tags:["CU","flag"],emoji:"🇨🇺",text:"",type:1,order:5017,group:9,subgroup:98,version:2,shortCodes:["cuba","flag_cu"]},{label:"flag: Cape Verde",hexcode:"1F1E8-1F1FB",tags:["CV","flag"],emoji:"🇨🇻",text:"",type:1,order:5018,group:9,subgroup:98,version:2,shortCodes:["cape_verde","flag_cv"]},{label:"flag: Curaçao",hexcode:"1F1E8-1F1FC",tags:["CW","flag"],emoji:"🇨🇼",text:"",type:1,order:5019,group:9,subgroup:98,version:2,shortCodes:["curacao","flag_cw"]},{label:"flag: Christmas Island",hexcode:"1F1E8-1F1FD",tags:["CX","flag"],emoji:"🇨🇽",text:"",type:1,order:5020,group:9,subgroup:98,version:2,shortCodes:["christmas_island","flag_cx"]},{label:"flag: Cyprus",hexcode:"1F1E8-1F1FE",tags:["CY","flag"],emoji:"🇨🇾",text:"",type:1,order:5021,group:9,subgroup:98,version:2,shortCodes:["cyprus","flag_cy"]},{label:"flag: Czechia",hexcode:"1F1E8-1F1FF",tags:["CZ","flag"],emoji:"🇨🇿",text:"",type:1,order:5022,group:9,subgroup:98,version:2,shortCodes:["czech_republic","czechia","flag_cz"]},{label:"flag: Germany",hexcode:"1F1E9-1F1EA",tags:["DE","flag"],emoji:"🇩🇪",text:"",type:1,order:5023,group:9,subgroup:98,version:.6,shortCodes:["flag_de","germany"]},{label:"flag: Diego Garcia",hexcode:"1F1E9-1F1EC",tags:["DG","flag"],emoji:"🇩🇬",text:"",type:1,order:5024,group:9,subgroup:98,version:2,shortCodes:["diego_garcia","flag_dg"]},{label:"flag: Djibouti",hexcode:"1F1E9-1F1EF",tags:["DJ","flag"],emoji:"🇩🇯",text:"",type:1,order:5025,group:9,subgroup:98,version:2,shortCodes:["djibouti","flag_dj"]},{label:"flag: Denmark",hexcode:"1F1E9-1F1F0",tags:["DK","flag"],emoji:"🇩🇰",text:"",type:1,order:5026,group:9,subgroup:98,version:2,shortCodes:["denmark","flag_dk"]},{label:"flag: Dominica",hexcode:"1F1E9-1F1F2",tags:["DM","flag"],emoji:"🇩🇲",text:"",type:1,order:5027,group:9,subgroup:98,version:2,shortCodes:["dominica","flag_dm"]},{label:"flag: Dominican Republic",hexcode:"1F1E9-1F1F4",tags:["DO","flag"],emoji:"🇩🇴",text:"",type:1,order:5028,group:9,subgroup:98,version:2,shortCodes:["dominican_republic","flag_do"]},{label:"flag: Algeria",hexcode:"1F1E9-1F1FF",tags:["DZ","flag"],emoji:"🇩🇿",text:"",type:1,order:5029,group:9,subgroup:98,version:2,shortCodes:["algeria","flag_dz"]},{label:"flag: Ceuta & Melilla",hexcode:"1F1EA-1F1E6",tags:["EA","flag"],emoji:"🇪🇦",text:"",type:1,order:5030,group:9,subgroup:98,version:2,shortCodes:["ceuta_melilla","flag_ea"]},{label:"flag: Ecuador",hexcode:"1F1EA-1F1E8",tags:["EC","flag"],emoji:"🇪🇨",text:"",type:1,order:5031,group:9,subgroup:98,version:2,shortCodes:["ecuador","flag_ec"]},{label:"flag: Estonia",hexcode:"1F1EA-1F1EA",tags:["EE","flag"],emoji:"🇪🇪",text:"",type:1,order:5032,group:9,subgroup:98,version:2,shortCodes:["estonia","flag_ee"]},{label:"flag: Egypt",hexcode:"1F1EA-1F1EC",tags:["EG","flag"],emoji:"🇪🇬",text:"",type:1,order:5033,group:9,subgroup:98,version:2,shortCodes:["egypt","flag_eg"]},{label:"flag: Western Sahara",hexcode:"1F1EA-1F1ED",tags:["EH","flag"],emoji:"🇪🇭",text:"",type:1,order:5034,group:9,subgroup:98,version:2,shortCodes:["flag_eh","western_sahara"]},{label:"flag: Eritrea",hexcode:"1F1EA-1F1F7",tags:["ER","flag"],emoji:"🇪🇷",text:"",type:1,order:5035,group:9,subgroup:98,version:2,shortCodes:["eritrea","flag_er"]},{label:"flag: Spain",hexcode:"1F1EA-1F1F8",tags:["ES","flag"],emoji:"🇪🇸",text:"",type:1,order:5036,group:9,subgroup:98,version:.6,shortCodes:["flag_es","spain"]},{label:"flag: Ethiopia",hexcode:"1F1EA-1F1F9",tags:["ET","flag"],emoji:"🇪🇹",text:"",type:1,order:5037,group:9,subgroup:98,version:2,shortCodes:["ethiopia","flag_et"]},{label:"flag: European Union",hexcode:"1F1EA-1F1FA",tags:["EU","flag"],emoji:"🇪🇺",text:"",type:1,order:5038,group:9,subgroup:98,version:2,shortCodes:["european_union","flag_eu"]},{label:"flag: Finland",hexcode:"1F1EB-1F1EE",tags:["FI","flag"],emoji:"🇫🇮",text:"",type:1,order:5039,group:9,subgroup:98,version:2,shortCodes:["finland","flag_fi"]},{label:"flag: Fiji",hexcode:"1F1EB-1F1EF",tags:["FJ","flag"],emoji:"🇫🇯",text:"",type:1,order:5040,group:9,subgroup:98,version:2,shortCodes:["fiji","flag_fj"]},{label:"flag: Falkland Islands",hexcode:"1F1EB-1F1F0",tags:["FK","flag"],emoji:"🇫🇰",text:"",type:1,order:5041,group:9,subgroup:98,version:2,shortCodes:["falkland_islands","flag_fk"]},{label:"flag: Micronesia",hexcode:"1F1EB-1F1F2",tags:["FM","flag"],emoji:"🇫🇲",text:"",type:1,order:5042,group:9,subgroup:98,version:2,shortCodes:["flag_fm","micronesia"]},{label:"flag: Faroe Islands",hexcode:"1F1EB-1F1F4",tags:["FO","flag"],emoji:"🇫🇴",text:"",type:1,order:5043,group:9,subgroup:98,version:2,shortCodes:["faroe_islands","flag_fo"]},{label:"flag: France",hexcode:"1F1EB-1F1F7",tags:["FR","flag"],emoji:"🇫🇷",text:"",type:1,order:5044,group:9,subgroup:98,version:.6,shortCodes:["flag_fr","france"]},{label:"flag: Gabon",hexcode:"1F1EC-1F1E6",tags:["GA","flag"],emoji:"🇬🇦",text:"",type:1,order:5045,group:9,subgroup:98,version:2,shortCodes:["flag_ga","gabon"]},{label:"flag: United Kingdom",hexcode:"1F1EC-1F1E7",tags:["GB","flag"],emoji:"🇬🇧",text:"",type:1,order:5046,group:9,subgroup:98,version:.6,shortCodes:["flag_gb","uk","united_kingdom"]},{label:"flag: Grenada",hexcode:"1F1EC-1F1E9",tags:["GD","flag"],emoji:"🇬🇩",text:"",type:1,order:5047,group:9,subgroup:98,version:2,shortCodes:["flag_gd","grenada"]},{label:"flag: Georgia",hexcode:"1F1EC-1F1EA",tags:["GE","flag"],emoji:"🇬🇪",text:"",type:1,order:5048,group:9,subgroup:98,version:2,shortCodes:["flag_ge","georgia"]},{label:"flag: French Guiana",hexcode:"1F1EC-1F1EB",tags:["GF","flag"],emoji:"🇬🇫",text:"",type:1,order:5049,group:9,subgroup:98,version:2,shortCodes:["flag_gf","french_guiana"]},{label:"flag: Guernsey",hexcode:"1F1EC-1F1EC",tags:["GG","flag"],emoji:"🇬🇬",text:"",type:1,order:5050,group:9,subgroup:98,version:2,shortCodes:["flag_gg","guernsey"]},{label:"flag: Ghana",hexcode:"1F1EC-1F1ED",tags:["GH","flag"],emoji:"🇬🇭",text:"",type:1,order:5051,group:9,subgroup:98,version:2,shortCodes:["flag_gh","ghana"]},{label:"flag: Gibraltar",hexcode:"1F1EC-1F1EE",tags:["GI","flag"],emoji:"🇬🇮",text:"",type:1,order:5052,group:9,subgroup:98,version:2,shortCodes:["flag_gi","gibraltar"]},{label:"flag: Greenland",hexcode:"1F1EC-1F1F1",tags:["GL","flag"],emoji:"🇬🇱",text:"",type:1,order:5053,group:9,subgroup:98,version:2,shortCodes:["flag_gl","greenland"]},{label:"flag: Gambia",hexcode:"1F1EC-1F1F2",tags:["GM","flag"],emoji:"🇬🇲",text:"",type:1,order:5054,group:9,subgroup:98,version:2,shortCodes:["flag_gm","gambia"]},{label:"flag: Guinea",hexcode:"1F1EC-1F1F3",tags:["GN","flag"],emoji:"🇬🇳",text:"",type:1,order:5055,group:9,subgroup:98,version:2,shortCodes:["flag_gn","guinea"]},{label:"flag: Guadeloupe",hexcode:"1F1EC-1F1F5",tags:["GP","flag"],emoji:"🇬🇵",text:"",type:1,order:5056,group:9,subgroup:98,version:2,shortCodes:["flag_gp","guadeloupe"]},{label:"flag: Equatorial Guinea",hexcode:"1F1EC-1F1F6",tags:["GQ","flag"],emoji:"🇬🇶",text:"",type:1,order:5057,group:9,subgroup:98,version:2,shortCodes:["equatorial_guinea","flag_gq"]},{label:"flag: Greece",hexcode:"1F1EC-1F1F7",tags:["GR","flag"],emoji:"🇬🇷",text:"",type:1,order:5058,group:9,subgroup:98,version:2,shortCodes:["flag_gr","greece"]},{label:"flag: South Georgia & South Sandwich Islands",hexcode:"1F1EC-1F1F8",tags:["GS","flag"],emoji:"🇬🇸",text:"",type:1,order:5059,group:9,subgroup:98,version:2,shortCodes:["flag_gs","south_georgia_south_sandwich_islands"]},{label:"flag: Guatemala",hexcode:"1F1EC-1F1F9",tags:["GT","flag"],emoji:"🇬🇹",text:"",type:1,order:5060,group:9,subgroup:98,version:2,shortCodes:["flag_gt","guatemala"]},{label:"flag: Guam",hexcode:"1F1EC-1F1FA",tags:["GU","flag"],emoji:"🇬🇺",text:"",type:1,order:5061,group:9,subgroup:98,version:2,shortCodes:["flag_gu","guam"]},{label:"flag: Guinea-Bissau",hexcode:"1F1EC-1F1FC",tags:["GW","flag"],emoji:"🇬🇼",text:"",type:1,order:5062,group:9,subgroup:98,version:2,shortCodes:["flag_gw","guinea_bissau"]},{label:"flag: Guyana",hexcode:"1F1EC-1F1FE",tags:["GY","flag"],emoji:"🇬🇾",text:"",type:1,order:5063,group:9,subgroup:98,version:2,shortCodes:["flag_gy","guyana"]},{label:"flag: Hong Kong SAR China",hexcode:"1F1ED-1F1F0",tags:["HK","flag"],emoji:"🇭🇰",text:"",type:1,order:5064,group:9,subgroup:98,version:2,shortCodes:["flag_hk","hong_kong"]},{label:"flag: Heard & McDonald Islands",hexcode:"1F1ED-1F1F2",tags:["HM","flag"],emoji:"🇭🇲",text:"",type:1,order:5065,group:9,subgroup:98,version:2,shortCodes:["flag_hm","heard_mcdonald_islands"]},{label:"flag: Honduras",hexcode:"1F1ED-1F1F3",tags:["HN","flag"],emoji:"🇭🇳",text:"",type:1,order:5066,group:9,subgroup:98,version:2,shortCodes:["flag_hn","honduras"]},{label:"flag: Croatia",hexcode:"1F1ED-1F1F7",tags:["HR","flag"],emoji:"🇭🇷",text:"",type:1,order:5067,group:9,subgroup:98,version:2,shortCodes:["croatia","flag_hr"]},{label:"flag: Haiti",hexcode:"1F1ED-1F1F9",tags:["HT","flag"],emoji:"🇭🇹",text:"",type:1,order:5068,group:9,subgroup:98,version:2,shortCodes:["flag_ht","haiti"]},{label:"flag: Hungary",hexcode:"1F1ED-1F1FA",tags:["HU","flag"],emoji:"🇭🇺",text:"",type:1,order:5069,group:9,subgroup:98,version:2,shortCodes:["flag_hu","hungary"]},{label:"flag: Canary Islands",hexcode:"1F1EE-1F1E8",tags:["IC","flag"],emoji:"🇮🇨",text:"",type:1,order:5070,group:9,subgroup:98,version:2,shortCodes:["canary_islands","flag_ic"]},{label:"flag: Indonesia",hexcode:"1F1EE-1F1E9",tags:["ID","flag"],emoji:"🇮🇩",text:"",type:1,order:5071,group:9,subgroup:98,version:2,shortCodes:["flag_id","indonesia"]},{label:"flag: Ireland",hexcode:"1F1EE-1F1EA",tags:["IE","flag"],emoji:"🇮🇪",text:"",type:1,order:5072,group:9,subgroup:98,version:2,shortCodes:["flag_ie","ireland"]},{label:"flag: Israel",hexcode:"1F1EE-1F1F1",tags:["IL","flag"],emoji:"🇮🇱",text:"",type:1,order:5073,group:9,subgroup:98,version:2,shortCodes:["flag_il","israel"]},{label:"flag: Isle of Man",hexcode:"1F1EE-1F1F2",tags:["IM","flag"],emoji:"🇮🇲",text:"",type:1,order:5074,group:9,subgroup:98,version:2,shortCodes:["flag_im","isle_of_man"]},{label:"flag: India",hexcode:"1F1EE-1F1F3",tags:["IN","flag"],emoji:"🇮🇳",text:"",type:1,order:5075,group:9,subgroup:98,version:2,shortCodes:["flag_in","india"]},{label:"flag: British Indian Ocean Territory",hexcode:"1F1EE-1F1F4",tags:["IO","flag"],emoji:"🇮🇴",text:"",type:1,order:5076,group:9,subgroup:98,version:2,shortCodes:["british_indian_ocean_territory","flag_io"]},{label:"flag: Iraq",hexcode:"1F1EE-1F1F6",tags:["IQ","flag"],emoji:"🇮🇶",text:"",type:1,order:5077,group:9,subgroup:98,version:2,shortCodes:["flag_iq","iraq"]},{label:"flag: Iran",hexcode:"1F1EE-1F1F7",tags:["IR","flag"],emoji:"🇮🇷",text:"",type:1,order:5078,group:9,subgroup:98,version:2,shortCodes:["flag_ir","iran"]},{label:"flag: Iceland",hexcode:"1F1EE-1F1F8",tags:["IS","flag"],emoji:"🇮🇸",text:"",type:1,order:5079,group:9,subgroup:98,version:2,shortCodes:["flag_is","iceland"]},{label:"flag: Italy",hexcode:"1F1EE-1F1F9",tags:["IT","flag"],emoji:"🇮🇹",text:"",type:1,order:5080,group:9,subgroup:98,version:.6,shortCodes:["flag_it","italy"]},{label:"flag: Jersey",hexcode:"1F1EF-1F1EA",tags:["JE","flag"],emoji:"🇯🇪",text:"",type:1,order:5081,group:9,subgroup:98,version:2,shortCodes:["flag_je","jersey"]},{label:"flag: Jamaica",hexcode:"1F1EF-1F1F2",tags:["JM","flag"],emoji:"🇯🇲",text:"",type:1,order:5082,group:9,subgroup:98,version:2,shortCodes:["flag_jm","jamaica"]},{label:"flag: Jordan",hexcode:"1F1EF-1F1F4",tags:["JO","flag"],emoji:"🇯🇴",text:"",type:1,order:5083,group:9,subgroup:98,version:2,shortCodes:["flag_jo","jordan"]},{label:"flag: Japan",hexcode:"1F1EF-1F1F5",tags:["JP","flag"],emoji:"🇯🇵",text:"",type:1,order:5084,group:9,subgroup:98,version:.6,shortCodes:["flag_jp","japan"]},{label:"flag: Kenya",hexcode:"1F1F0-1F1EA",tags:["KE","flag"],emoji:"🇰🇪",text:"",type:1,order:5085,group:9,subgroup:98,version:2,shortCodes:["flag_ke","kenya"]},{label:"flag: Kyrgyzstan",hexcode:"1F1F0-1F1EC",tags:["KG","flag"],emoji:"🇰🇬",text:"",type:1,order:5086,group:9,subgroup:98,version:2,shortCodes:["flag_kg","kyrgyzstan"]},{label:"flag: Cambodia",hexcode:"1F1F0-1F1ED",tags:["KH","flag"],emoji:"🇰🇭",text:"",type:1,order:5087,group:9,subgroup:98,version:2,shortCodes:["cambodia","flag_kh"]},{label:"flag: Kiribati",hexcode:"1F1F0-1F1EE",tags:["KI","flag"],emoji:"🇰🇮",text:"",type:1,order:5088,group:9,subgroup:98,version:2,shortCodes:["flag_ki","kiribati"]},{label:"flag: Comoros",hexcode:"1F1F0-1F1F2",tags:["KM","flag"],emoji:"🇰🇲",text:"",type:1,order:5089,group:9,subgroup:98,version:2,shortCodes:["comoros","flag_km"]},{label:"flag: St. Kitts & Nevis",hexcode:"1F1F0-1F1F3",tags:["KN","flag"],emoji:"🇰🇳",text:"",type:1,order:5090,group:9,subgroup:98,version:2,shortCodes:["flag_kn","st_kitts_nevis"]},{label:"flag: North Korea",hexcode:"1F1F0-1F1F5",tags:["KP","flag"],emoji:"🇰🇵",text:"",type:1,order:5091,group:9,subgroup:98,version:2,shortCodes:["flag_kp","north_korea"]},{label:"flag: South Korea",hexcode:"1F1F0-1F1F7",tags:["KR","flag"],emoji:"🇰🇷",text:"",type:1,order:5092,group:9,subgroup:98,version:.6,shortCodes:["flag_kr","south_korea"]},{label:"flag: Kuwait",hexcode:"1F1F0-1F1FC",tags:["KW","flag"],emoji:"🇰🇼",text:"",type:1,order:5093,group:9,subgroup:98,version:2,shortCodes:["flag_kw","kuwait"]},{label:"flag: Cayman Islands",hexcode:"1F1F0-1F1FE",tags:["KY","flag"],emoji:"🇰🇾",text:"",type:1,order:5094,group:9,subgroup:98,version:2,shortCodes:["cayman_islands","flag_ky"]},{label:"flag: Kazakhstan",hexcode:"1F1F0-1F1FF",tags:["KZ","flag"],emoji:"🇰🇿",text:"",type:1,order:5095,group:9,subgroup:98,version:2,shortCodes:["flag_kz","kazakhstan"]},{label:"flag: Laos",hexcode:"1F1F1-1F1E6",tags:["LA","flag"],emoji:"🇱🇦",text:"",type:1,order:5096,group:9,subgroup:98,version:2,shortCodes:["flag_la","laos"]},{label:"flag: Lebanon",hexcode:"1F1F1-1F1E7",tags:["LB","flag"],emoji:"🇱🇧",text:"",type:1,order:5097,group:9,subgroup:98,version:2,shortCodes:["flag_lb","lebanon"]},{label:"flag: St. Lucia",hexcode:"1F1F1-1F1E8",tags:["LC","flag"],emoji:"🇱🇨",text:"",type:1,order:5098,group:9,subgroup:98,version:2,shortCodes:["flag_lc","st_lucia"]},{label:"flag: Liechtenstein",hexcode:"1F1F1-1F1EE",tags:["LI","flag"],emoji:"🇱🇮",text:"",type:1,order:5099,group:9,subgroup:98,version:2,shortCodes:["flag_li","liechtenstein"]},{label:"flag: Sri Lanka",hexcode:"1F1F1-1F1F0",tags:["LK","flag"],emoji:"🇱🇰",text:"",type:1,order:5100,group:9,subgroup:98,version:2,shortCodes:["flag_lk","sri_lanka"]},{label:"flag: Liberia",hexcode:"1F1F1-1F1F7",tags:["LR","flag"],emoji:"🇱🇷",text:"",type:1,order:5101,group:9,subgroup:98,version:2,shortCodes:["flag_lr","liberia"]},{label:"flag: Lesotho",hexcode:"1F1F1-1F1F8",tags:["LS","flag"],emoji:"🇱🇸",text:"",type:1,order:5102,group:9,subgroup:98,version:2,shortCodes:["flag_ls","lesotho"]},{label:"flag: Lithuania",hexcode:"1F1F1-1F1F9",tags:["LT","flag"],emoji:"🇱🇹",text:"",type:1,order:5103,group:9,subgroup:98,version:2,shortCodes:["flag_lt","lithuania"]},{label:"flag: Luxembourg",hexcode:"1F1F1-1F1FA",tags:["LU","flag"],emoji:"🇱🇺",text:"",type:1,order:5104,group:9,subgroup:98,version:2,shortCodes:["flag_lu","luxembourg"]},{label:"flag: Latvia",hexcode:"1F1F1-1F1FB",tags:["LV","flag"],emoji:"🇱🇻",text:"",type:1,order:5105,group:9,subgroup:98,version:2,shortCodes:["flag_lv","latvia"]},{label:"flag: Libya",hexcode:"1F1F1-1F1FE",tags:["LY","flag"],emoji:"🇱🇾",text:"",type:1,order:5106,group:9,subgroup:98,version:2,shortCodes:["flag_ly","libya"]},{label:"flag: Morocco",hexcode:"1F1F2-1F1E6",tags:["MA","flag"],emoji:"🇲🇦",text:"",type:1,order:5107,group:9,subgroup:98,version:2,shortCodes:["flag_ma","morocco"]},{label:"flag: Monaco",hexcode:"1F1F2-1F1E8",tags:["MC","flag"],emoji:"🇲🇨",text:"",type:1,order:5108,group:9,subgroup:98,version:2,shortCodes:["flag_mc","monaco"]},{label:"flag: Moldova",hexcode:"1F1F2-1F1E9",tags:["MD","flag"],emoji:"🇲🇩",text:"",type:1,order:5109,group:9,subgroup:98,version:2,shortCodes:["flag_md","moldova"]},{label:"flag: Montenegro",hexcode:"1F1F2-1F1EA",tags:["ME","flag"],emoji:"🇲🇪",text:"",type:1,order:5110,group:9,subgroup:98,version:2,shortCodes:["flag_me","montenegro"]},{label:"flag: St. Martin",hexcode:"1F1F2-1F1EB",tags:["MF","flag"],emoji:"🇲🇫",text:"",type:1,order:5111,group:9,subgroup:98,version:2,shortCodes:["flag_mf","st_martin"]},{label:"flag: Madagascar",hexcode:"1F1F2-1F1EC",tags:["MG","flag"],emoji:"🇲🇬",text:"",type:1,order:5112,group:9,subgroup:98,version:2,shortCodes:["flag_mg","madagascar"]},{label:"flag: Marshall Islands",hexcode:"1F1F2-1F1ED",tags:["MH","flag"],emoji:"🇲🇭",text:"",type:1,order:5113,group:9,subgroup:98,version:2,shortCodes:["flag_mh","marshall_islands"]},{label:"flag: North Macedonia",hexcode:"1F1F2-1F1F0",tags:["MK","flag"],emoji:"🇲🇰",text:"",type:1,order:5114,group:9,subgroup:98,version:2,shortCodes:["flag_mk","macedonia"]},{label:"flag: Mali",hexcode:"1F1F2-1F1F1",tags:["ML","flag"],emoji:"🇲🇱",text:"",type:1,order:5115,group:9,subgroup:98,version:2,shortCodes:["flag_ml","mali"]},{label:"flag: Myanmar (Burma)",hexcode:"1F1F2-1F1F2",tags:["MM","flag"],emoji:"🇲🇲",text:"",type:1,order:5116,group:9,subgroup:98,version:2,shortCodes:["burma","flag_mm","myanmar"]},{label:"flag: Mongolia",hexcode:"1F1F2-1F1F3",tags:["MN","flag"],emoji:"🇲🇳",text:"",type:1,order:5117,group:9,subgroup:98,version:2,shortCodes:["flag_mn","mongolia"]},{label:"flag: Macao SAR China",hexcode:"1F1F2-1F1F4",tags:["MO","flag"],emoji:"🇲🇴",text:"",type:1,order:5118,group:9,subgroup:98,version:2,shortCodes:["flag_mo","macao","macau"]},{label:"flag: Northern Mariana Islands",hexcode:"1F1F2-1F1F5",tags:["MP","flag"],emoji:"🇲🇵",text:"",type:1,order:5119,group:9,subgroup:98,version:2,shortCodes:["flag_mp","northern_mariana_islands"]},{label:"flag: Martinique",hexcode:"1F1F2-1F1F6",tags:["MQ","flag"],emoji:"🇲🇶",text:"",type:1,order:5120,group:9,subgroup:98,version:2,shortCodes:["flag_mq","martinique"]},{label:"flag: Mauritania",hexcode:"1F1F2-1F1F7",tags:["MR","flag"],emoji:"🇲🇷",text:"",type:1,order:5121,group:9,subgroup:98,version:2,shortCodes:["flag_mr","mauritania"]},{label:"flag: Montserrat",hexcode:"1F1F2-1F1F8",tags:["MS","flag"],emoji:"🇲🇸",text:"",type:1,order:5122,group:9,subgroup:98,version:2,shortCodes:["flag_ms","montserrat"]},{label:"flag: Malta",hexcode:"1F1F2-1F1F9",tags:["MT","flag"],emoji:"🇲🇹",text:"",type:1,order:5123,group:9,subgroup:98,version:2,shortCodes:["flag_mt","malta"]},{label:"flag: Mauritius",hexcode:"1F1F2-1F1FA",tags:["MU","flag"],emoji:"🇲🇺",text:"",type:1,order:5124,group:9,subgroup:98,version:2,shortCodes:["flag_mu","mauritius"]},{label:"flag: Maldives",hexcode:"1F1F2-1F1FB",tags:["MV","flag"],emoji:"🇲🇻",text:"",type:1,order:5125,group:9,subgroup:98,version:2,shortCodes:["flag_mv","maldives"]},{label:"flag: Malawi",hexcode:"1F1F2-1F1FC",tags:["MW","flag"],emoji:"🇲🇼",text:"",type:1,order:5126,group:9,subgroup:98,version:2,shortCodes:["flag_mw","malawi"]},{label:"flag: Mexico",hexcode:"1F1F2-1F1FD",tags:["MX","flag"],emoji:"🇲🇽",text:"",type:1,order:5127,group:9,subgroup:98,version:2,shortCodes:["flag_mx","mexico"]},{label:"flag: Malaysia",hexcode:"1F1F2-1F1FE",tags:["MY","flag"],emoji:"🇲🇾",text:"",type:1,order:5128,group:9,subgroup:98,version:2,shortCodes:["flag_my","malaysia"]},{label:"flag: Mozambique",hexcode:"1F1F2-1F1FF",tags:["MZ","flag"],emoji:"🇲🇿",text:"",type:1,order:5129,group:9,subgroup:98,version:2,shortCodes:["flag_mz","mozambique"]},{label:"flag: Namibia",hexcode:"1F1F3-1F1E6",tags:["NA","flag"],emoji:"🇳🇦",text:"",type:1,order:5130,group:9,subgroup:98,version:2,shortCodes:["flag_na","namibia"]},{label:"flag: New Caledonia",hexcode:"1F1F3-1F1E8",tags:["NC","flag"],emoji:"🇳🇨",text:"",type:1,order:5131,group:9,subgroup:98,version:2,shortCodes:["flag_nc","new_caledonia"]},{label:"flag: Niger",hexcode:"1F1F3-1F1EA",tags:["NE","flag"],emoji:"🇳🇪",text:"",type:1,order:5132,group:9,subgroup:98,version:2,shortCodes:["flag_ne","niger"]},{label:"flag: Norfolk Island",hexcode:"1F1F3-1F1EB",tags:["NF","flag"],emoji:"🇳🇫",text:"",type:1,order:5133,group:9,subgroup:98,version:2,shortCodes:["flag_nf","norfolk_island"]},{label:"flag: Nigeria",hexcode:"1F1F3-1F1EC",tags:["NG","flag"],emoji:"🇳🇬",text:"",type:1,order:5134,group:9,subgroup:98,version:2,shortCodes:["flag_ng","nigeria"]},{label:"flag: Nicaragua",hexcode:"1F1F3-1F1EE",tags:["NI","flag"],emoji:"🇳🇮",text:"",type:1,order:5135,group:9,subgroup:98,version:2,shortCodes:["flag_ni","nicaragua"]},{label:"flag: Netherlands",hexcode:"1F1F3-1F1F1",tags:["NL","flag"],emoji:"🇳🇱",text:"",type:1,order:5136,group:9,subgroup:98,version:2,shortCodes:["flag_nl","netherlands"]},{label:"flag: Norway",hexcode:"1F1F3-1F1F4",tags:["NO","flag"],emoji:"🇳🇴",text:"",type:1,order:5137,group:9,subgroup:98,version:2,shortCodes:["flag_no","norway"]},{label:"flag: Nepal",hexcode:"1F1F3-1F1F5",tags:["NP","flag"],emoji:"🇳🇵",text:"",type:1,order:5138,group:9,subgroup:98,version:2,shortCodes:["flag_np","nepal"]},{label:"flag: Nauru",hexcode:"1F1F3-1F1F7",tags:["NR","flag"],emoji:"🇳🇷",text:"",type:1,order:5139,group:9,subgroup:98,version:2,shortCodes:["flag_nr","nauru"]},{label:"flag: Niue",hexcode:"1F1F3-1F1FA",tags:["NU","flag"],emoji:"🇳🇺",text:"",type:1,order:5140,group:9,subgroup:98,version:2,shortCodes:["flag_nu","niue"]},{label:"flag: New Zealand",hexcode:"1F1F3-1F1FF",tags:["NZ","flag"],emoji:"🇳🇿",text:"",type:1,order:5141,group:9,subgroup:98,version:2,shortCodes:["flag_nz","new_zealand"]},{label:"flag: Oman",hexcode:"1F1F4-1F1F2",tags:["OM","flag"],emoji:"🇴🇲",text:"",type:1,order:5142,group:9,subgroup:98,version:2,shortCodes:["flag_om","oman"]},{label:"flag: Panama",hexcode:"1F1F5-1F1E6",tags:["PA","flag"],emoji:"🇵🇦",text:"",type:1,order:5143,group:9,subgroup:98,version:2,shortCodes:["flag_pa","panama"]},{label:"flag: Peru",hexcode:"1F1F5-1F1EA",tags:["PE","flag"],emoji:"🇵🇪",text:"",type:1,order:5144,group:9,subgroup:98,version:2,shortCodes:["flag_pe","peru"]},{label:"flag: French Polynesia",hexcode:"1F1F5-1F1EB",tags:["PF","flag"],emoji:"🇵🇫",text:"",type:1,order:5145,group:9,subgroup:98,version:2,shortCodes:["flag_pf","french_polynesia"]},{label:"flag: Papua New Guinea",hexcode:"1F1F5-1F1EC",tags:["PG","flag"],emoji:"🇵🇬",text:"",type:1,order:5146,group:9,subgroup:98,version:2,shortCodes:["flag_pg","papua_new_guinea"]},{label:"flag: Philippines",hexcode:"1F1F5-1F1ED",tags:["PH","flag"],emoji:"🇵🇭",text:"",type:1,order:5147,group:9,subgroup:98,version:2,shortCodes:["flag_ph","philippines"]},{label:"flag: Pakistan",hexcode:"1F1F5-1F1F0",tags:["PK","flag"],emoji:"🇵🇰",text:"",type:1,order:5148,group:9,subgroup:98,version:2,shortCodes:["flag_pk","pakistan"]},{label:"flag: Poland",hexcode:"1F1F5-1F1F1",tags:["PL","flag"],emoji:"🇵🇱",text:"",type:1,order:5149,group:9,subgroup:98,version:2,shortCodes:["flag_pl","poland"]},{label:"flag: St. Pierre & Miquelon",hexcode:"1F1F5-1F1F2",tags:["PM","flag"],emoji:"🇵🇲",text:"",type:1,order:5150,group:9,subgroup:98,version:2,shortCodes:["flag_pm","st_pierre_miquelon"]},{label:"flag: Pitcairn Islands",hexcode:"1F1F5-1F1F3",tags:["PN","flag"],emoji:"🇵🇳",text:"",type:1,order:5151,group:9,subgroup:98,version:2,shortCodes:["flag_pn","pitcairn_islands"]},{label:"flag: Puerto Rico",hexcode:"1F1F5-1F1F7",tags:["PR","flag"],emoji:"🇵🇷",text:"",type:1,order:5152,group:9,subgroup:98,version:2,shortCodes:["flag_pr","puerto_rico"]},{label:"flag: Palestinian Territories",hexcode:"1F1F5-1F1F8",tags:["PS","flag"],emoji:"🇵🇸",text:"",type:1,order:5153,group:9,subgroup:98,version:2,shortCodes:["flag_ps","palestinian_territories"]},{label:"flag: Portugal",hexcode:"1F1F5-1F1F9",tags:["PT","flag"],emoji:"🇵🇹",text:"",type:1,order:5154,group:9,subgroup:98,version:2,shortCodes:["flag_pt","portugal"]},{label:"flag: Palau",hexcode:"1F1F5-1F1FC",tags:["PW","flag"],emoji:"🇵🇼",text:"",type:1,order:5155,group:9,subgroup:98,version:2,shortCodes:["flag_pw","palau"]},{label:"flag: Paraguay",hexcode:"1F1F5-1F1FE",tags:["PY","flag"],emoji:"🇵🇾",text:"",type:1,order:5156,group:9,subgroup:98,version:2,shortCodes:["flag_py","paraguay"]},{label:"flag: Qatar",hexcode:"1F1F6-1F1E6",tags:["QA","flag"],emoji:"🇶🇦",text:"",type:1,order:5157,group:9,subgroup:98,version:2,shortCodes:["flag_qa","qatar"]},{label:"flag: Réunion",hexcode:"1F1F7-1F1EA",tags:["RE","flag"],emoji:"🇷🇪",text:"",type:1,order:5158,group:9,subgroup:98,version:2,shortCodes:["flag_re","reunion"]},{label:"flag: Romania",hexcode:"1F1F7-1F1F4",tags:["RO","flag"],emoji:"🇷🇴",text:"",type:1,order:5159,group:9,subgroup:98,version:2,shortCodes:["flag_ro","romania"]},{label:"flag: Serbia",hexcode:"1F1F7-1F1F8",tags:["RS","flag"],emoji:"🇷🇸",text:"",type:1,order:5160,group:9,subgroup:98,version:2,shortCodes:["flag_rs","serbia"]},{label:"flag: Russia",hexcode:"1F1F7-1F1FA",tags:["RU","flag"],emoji:"🇷🇺",text:"",type:1,order:5161,group:9,subgroup:98,version:.6,shortCodes:["flag_ru","russia"]},{label:"flag: Rwanda",hexcode:"1F1F7-1F1FC",tags:["RW","flag"],emoji:"🇷🇼",text:"",type:1,order:5162,group:9,subgroup:98,version:2,shortCodes:["flag_rw","rwanda"]},{label:"flag: Saudi Arabia",hexcode:"1F1F8-1F1E6",tags:["SA","flag"],emoji:"🇸🇦",text:"",type:1,order:5163,group:9,subgroup:98,version:2,shortCodes:["flag_sa","saudi_arabia"]},{label:"flag: Solomon Islands",hexcode:"1F1F8-1F1E7",tags:["SB","flag"],emoji:"🇸🇧",text:"",type:1,order:5164,group:9,subgroup:98,version:2,shortCodes:["flag_sb","solomon_islands"]},{label:"flag: Seychelles",hexcode:"1F1F8-1F1E8",tags:["SC","flag"],emoji:"🇸🇨",text:"",type:1,order:5165,group:9,subgroup:98,version:2,shortCodes:["flag_sc","seychelles"]},{label:"flag: Sudan",hexcode:"1F1F8-1F1E9",tags:["SD","flag"],emoji:"🇸🇩",text:"",type:1,order:5166,group:9,subgroup:98,version:2,shortCodes:["flag_sd","sudan"]},{label:"flag: Sweden",hexcode:"1F1F8-1F1EA",tags:["SE","flag"],emoji:"🇸🇪",text:"",type:1,order:5167,group:9,subgroup:98,version:2,shortCodes:["flag_se","sweden"]},{label:"flag: Singapore",hexcode:"1F1F8-1F1EC",tags:["SG","flag"],emoji:"🇸🇬",text:"",type:1,order:5168,group:9,subgroup:98,version:2,shortCodes:["flag_sg","singapore"]},{label:"flag: St. Helena",hexcode:"1F1F8-1F1ED",tags:["SH","flag"],emoji:"🇸🇭",text:"",type:1,order:5169,group:9,subgroup:98,version:2,shortCodes:["flag_sh","st_helena"]},{label:"flag: Slovenia",hexcode:"1F1F8-1F1EE",tags:["SI","flag"],emoji:"🇸🇮",text:"",type:1,order:5170,group:9,subgroup:98,version:2,shortCodes:["flag_si","slovenia"]},{label:"flag: Svalbard & Jan Mayen",hexcode:"1F1F8-1F1EF",tags:["SJ","flag"],emoji:"🇸🇯",text:"",type:1,order:5171,group:9,subgroup:98,version:2,shortCodes:["flag_sj","svalbard_jan_mayen"]},{label:"flag: Slovakia",hexcode:"1F1F8-1F1F0",tags:["SK","flag"],emoji:"🇸🇰",text:"",type:1,order:5172,group:9,subgroup:98,version:2,shortCodes:["flag_sk","slovakia"]},{label:"flag: Sierra Leone",hexcode:"1F1F8-1F1F1",tags:["SL","flag"],emoji:"🇸🇱",text:"",type:1,order:5173,group:9,subgroup:98,version:2,shortCodes:["flag_sl","sierra_leone"]},{label:"flag: San Marino",hexcode:"1F1F8-1F1F2",tags:["SM","flag"],emoji:"🇸🇲",text:"",type:1,order:5174,group:9,subgroup:98,version:2,shortCodes:["flag_sm","san_marino"]},{label:"flag: Senegal",hexcode:"1F1F8-1F1F3",tags:["SN","flag"],emoji:"🇸🇳",text:"",type:1,order:5175,group:9,subgroup:98,version:2,shortCodes:["flag_sn","senegal"]},{label:"flag: Somalia",hexcode:"1F1F8-1F1F4",tags:["SO","flag"],emoji:"🇸🇴",text:"",type:1,order:5176,group:9,subgroup:98,version:2,shortCodes:["flag_so","somalia"]},{label:"flag: Suriname",hexcode:"1F1F8-1F1F7",tags:["SR","flag"],emoji:"🇸🇷",text:"",type:1,order:5177,group:9,subgroup:98,version:2,shortCodes:["flag_sr","suriname"]},{label:"flag: South Sudan",hexcode:"1F1F8-1F1F8",tags:["SS","flag"],emoji:"🇸🇸",text:"",type:1,order:5178,group:9,subgroup:98,version:2,shortCodes:["flag_ss","south_sudan"]},{label:"flag: São Tomé & Príncipe",hexcode:"1F1F8-1F1F9",tags:["ST","flag"],emoji:"🇸🇹",text:"",type:1,order:5179,group:9,subgroup:98,version:2,shortCodes:["flag_st","sao_tome_principe"]},{label:"flag: El Salvador",hexcode:"1F1F8-1F1FB",tags:["SV","flag"],emoji:"🇸🇻",text:"",type:1,order:5180,group:9,subgroup:98,version:2,shortCodes:["el_salvador","flag_sv"]},{label:"flag: Sint Maarten",hexcode:"1F1F8-1F1FD",tags:["SX","flag"],emoji:"🇸🇽",text:"",type:1,order:5181,group:9,subgroup:98,version:2,shortCodes:["flag_sx","sint_maarten"]},{label:"flag: Syria",hexcode:"1F1F8-1F1FE",tags:["SY","flag"],emoji:"🇸🇾",text:"",type:1,order:5182,group:9,subgroup:98,version:2,shortCodes:["flag_sy","syria"]},{label:"flag: Eswatini",hexcode:"1F1F8-1F1FF",tags:["SZ","flag"],emoji:"🇸🇿",text:"",type:1,order:5183,group:9,subgroup:98,version:2,shortCodes:["eswatini","flag_sz","swaziland"]},{label:"flag: Tristan da Cunha",hexcode:"1F1F9-1F1E6",tags:["TA","flag"],emoji:"🇹🇦",text:"",type:1,order:5184,group:9,subgroup:98,version:2,shortCodes:["flag_ta","tristan_da_cunha"]},{label:"flag: Turks & Caicos Islands",hexcode:"1F1F9-1F1E8",tags:["TC","flag"],emoji:"🇹🇨",text:"",type:1,order:5185,group:9,subgroup:98,version:2,shortCodes:["flag_tc","turks_caicos_islands"]},{label:"flag: Chad",hexcode:"1F1F9-1F1E9",tags:["TD","flag"],emoji:"🇹🇩",text:"",type:1,order:5186,group:9,subgroup:98,version:2,shortCodes:["chad","flag_td"]},{label:"flag: French Southern Territories",hexcode:"1F1F9-1F1EB",tags:["TF","flag"],emoji:"🇹🇫",text:"",type:1,order:5187,group:9,subgroup:98,version:2,shortCodes:["flag_tf","french_southern_territories"]},{label:"flag: Togo",hexcode:"1F1F9-1F1EC",tags:["TG","flag"],emoji:"🇹🇬",text:"",type:1,order:5188,group:9,subgroup:98,version:2,shortCodes:["flag_tg","togo"]},{label:"flag: Thailand",hexcode:"1F1F9-1F1ED",tags:["TH","flag"],emoji:"🇹🇭",text:"",type:1,order:5189,group:9,subgroup:98,version:2,shortCodes:["flag_th","thailand"]},{label:"flag: Tajikistan",hexcode:"1F1F9-1F1EF",tags:["TJ","flag"],emoji:"🇹🇯",text:"",type:1,order:5190,group:9,subgroup:98,version:2,shortCodes:["flag_tj","tajikistan"]},{label:"flag: Tokelau",hexcode:"1F1F9-1F1F0",tags:["TK","flag"],emoji:"🇹🇰",text:"",type:1,order:5191,group:9,subgroup:98,version:2,shortCodes:["flag_tk","tokelau"]},{label:"flag: Timor-Leste",hexcode:"1F1F9-1F1F1",tags:["TL","flag"],emoji:"🇹🇱",text:"",type:1,order:5192,group:9,subgroup:98,version:2,shortCodes:["flag_tl","timor_leste"]},{label:"flag: Turkmenistan",hexcode:"1F1F9-1F1F2",tags:["TM","flag"],emoji:"🇹🇲",text:"",type:1,order:5193,group:9,subgroup:98,version:2,shortCodes:["flag_tm","turkmenistan"]},{label:"flag: Tunisia",hexcode:"1F1F9-1F1F3",tags:["TN","flag"],emoji:"🇹🇳",text:"",type:1,order:5194,group:9,subgroup:98,version:2,shortCodes:["flag_tn","tunisia"]},{label:"flag: Tonga",hexcode:"1F1F9-1F1F4",tags:["TO","flag"],emoji:"🇹🇴",text:"",type:1,order:5195,group:9,subgroup:98,version:2,shortCodes:["flag_to","tonga"]},{label:"flag: Türkiye",hexcode:"1F1F9-1F1F7",tags:["TR","flag"],emoji:"🇹🇷",text:"",type:1,order:5196,group:9,subgroup:98,version:2,shortCodes:["flag_tr","turkey_tr"]},{label:"flag: Trinidad & Tobago",hexcode:"1F1F9-1F1F9",tags:["TT","flag"],emoji:"🇹🇹",text:"",type:1,order:5197,group:9,subgroup:98,version:2,shortCodes:["flag_tt","trinidad_tobago"]},{label:"flag: Tuvalu",hexcode:"1F1F9-1F1FB",tags:["TV","flag"],emoji:"🇹🇻",text:"",type:1,order:5198,group:9,subgroup:98,version:2,shortCodes:["flag_tv","tuvalu"]},{label:"flag: Taiwan",hexcode:"1F1F9-1F1FC",tags:["TW","flag"],emoji:"🇹🇼",text:"",type:1,order:5199,group:9,subgroup:98,version:2,shortCodes:["flag_tw","taiwan"]},{label:"flag: Tanzania",hexcode:"1F1F9-1F1FF",tags:["TZ","flag"],emoji:"🇹🇿",text:"",type:1,order:5200,group:9,subgroup:98,version:2,shortCodes:["flag_tz","tanzania"]},{label:"flag: Ukraine",hexcode:"1F1FA-1F1E6",tags:["UA","flag"],emoji:"🇺🇦",text:"",type:1,order:5201,group:9,subgroup:98,version:2,shortCodes:["flag_ua","ukraine"]},{label:"flag: Uganda",hexcode:"1F1FA-1F1EC",tags:["UG","flag"],emoji:"🇺🇬",text:"",type:1,order:5202,group:9,subgroup:98,version:2,shortCodes:["flag_ug","uganda"]},{label:"flag: U.S. Outlying Islands",hexcode:"1F1FA-1F1F2",tags:["UM","flag"],emoji:"🇺🇲",text:"",type:1,order:5203,group:9,subgroup:98,version:2,shortCodes:["flag_um","us_outlying_islands"]},{label:"flag: United Nations",hexcode:"1F1FA-1F1F3",tags:["UN","flag"],emoji:"🇺🇳",text:"",type:1,order:5204,group:9,subgroup:98,version:4,shortCodes:["flag_un","un","united_nations"]},{label:"flag: United States",hexcode:"1F1FA-1F1F8",tags:["US","flag"],emoji:"🇺🇸",text:"",type:1,order:5205,group:9,subgroup:98,version:.6,shortCodes:["flag_us","united_states","usa"]},{label:"flag: Uruguay",hexcode:"1F1FA-1F1FE",tags:["UY","flag"],emoji:"🇺🇾",text:"",type:1,order:5206,group:9,subgroup:98,version:2,shortCodes:["flag_uy","uruguay"]},{label:"flag: Uzbekistan",hexcode:"1F1FA-1F1FF",tags:["UZ","flag"],emoji:"🇺🇿",text:"",type:1,order:5207,group:9,subgroup:98,version:2,shortCodes:["flag_uz","uzbekistan"]},{label:"flag: Vatican City",hexcode:"1F1FB-1F1E6",tags:["VA","flag"],emoji:"🇻🇦",text:"",type:1,order:5208,group:9,subgroup:98,version:2,shortCodes:["flag_va","vatican_city"]},{label:"flag: St. Vincent & Grenadines",hexcode:"1F1FB-1F1E8",tags:["VC","flag"],emoji:"🇻🇨",text:"",type:1,order:5209,group:9,subgroup:98,version:2,shortCodes:["flag_vc","st_vincent_grenadines"]},{label:"flag: Venezuela",hexcode:"1F1FB-1F1EA",tags:["VE","flag"],emoji:"🇻🇪",text:"",type:1,order:5210,group:9,subgroup:98,version:2,shortCodes:["flag_ve","venezuela"]},{label:"flag: British Virgin Islands",hexcode:"1F1FB-1F1EC",tags:["VG","flag"],emoji:"🇻🇬",text:"",type:1,order:5211,group:9,subgroup:98,version:2,shortCodes:["british_virgin_islands","flag_vg"]},{label:"flag: U.S. Virgin Islands",hexcode:"1F1FB-1F1EE",tags:["VI","flag"],emoji:"🇻🇮",text:"",type:1,order:5212,group:9,subgroup:98,version:2,shortCodes:["flag_vi","us_virgin_islands"]},{label:"flag: Vietnam",hexcode:"1F1FB-1F1F3",tags:["VN","flag"],emoji:"🇻🇳",text:"",type:1,order:5213,group:9,subgroup:98,version:2,shortCodes:["flag_vn","vietnam"]},{label:"flag: Vanuatu",hexcode:"1F1FB-1F1FA",tags:["VU","flag"],emoji:"🇻🇺",text:"",type:1,order:5214,group:9,subgroup:98,version:2,shortCodes:["flag_vu","vanuatu"]},{label:"flag: Wallis & Futuna",hexcode:"1F1FC-1F1EB",tags:["WF","flag"],emoji:"🇼🇫",text:"",type:1,order:5215,group:9,subgroup:98,version:2,shortCodes:["flag_wf","wallis_futuna"]},{label:"flag: Samoa",hexcode:"1F1FC-1F1F8",tags:["WS","flag"],emoji:"🇼🇸",text:"",type:1,order:5216,group:9,subgroup:98,version:2,shortCodes:["flag_ws","samoa"]},{label:"flag: Kosovo",hexcode:"1F1FD-1F1F0",tags:["XK","flag"],emoji:"🇽🇰",text:"",type:1,order:5217,group:9,subgroup:98,version:2,shortCodes:["flag_xk","kosovo"]},{label:"flag: Yemen",hexcode:"1F1FE-1F1EA",tags:["YE","flag"],emoji:"🇾🇪",text:"",type:1,order:5218,group:9,subgroup:98,version:2,shortCodes:["flag_ye","yemen"]},{label:"flag: Mayotte",hexcode:"1F1FE-1F1F9",tags:["YT","flag"],emoji:"🇾🇹",text:"",type:1,order:5219,group:9,subgroup:98,version:2,shortCodes:["flag_yt","mayotte"]},{label:"flag: South Africa",hexcode:"1F1FF-1F1E6",tags:["ZA","flag"],emoji:"🇿🇦",text:"",type:1,order:5220,group:9,subgroup:98,version:2,shortCodes:["flag_za","south_africa"]},{label:"flag: Zambia",hexcode:"1F1FF-1F1F2",tags:["ZM","flag"],emoji:"🇿🇲",text:"",type:1,order:5221,group:9,subgroup:98,version:2,shortCodes:["flag_zm","zambia"]},{label:"flag: Zimbabwe",hexcode:"1F1FF-1F1FC",tags:["ZW","flag"],emoji:"🇿🇼",text:"",type:1,order:5222,group:9,subgroup:98,version:2,shortCodes:["flag_zw","zimbabwe"]},{label:"flag: England",hexcode:"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F",tags:["flag","gbeng"],emoji:"🏴",text:"",type:1,order:5223,group:9,subgroup:99,version:5,shortCodes:["england","flag_gbeng"]},{label:"flag: Scotland",hexcode:"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F",tags:["flag","gbsct"],emoji:"🏴",text:"",type:1,order:5224,group:9,subgroup:99,version:5,shortCodes:["flag_gbsct","scotland"]},{label:"flag: Wales",hexcode:"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F",tags:["flag","gbwls"],emoji:"🏴",text:"",type:1,order:5225,group:9,subgroup:99,version:5,shortCodes:["flag_gbwls","wales"]},{label:"regional indicator A",hexcode:"1F1E6",emoji:"🇦",text:"",type:1,version:0,shortCodes:["regional_indicator_a"]},{label:"regional indicator B",hexcode:"1F1E7",emoji:"🇧",text:"",type:1,version:0,shortCodes:["regional_indicator_b"]},{label:"regional indicator C",hexcode:"1F1E8",emoji:"🇨",text:"",type:1,version:0,shortCodes:["regional_indicator_c"]},{label:"regional indicator D",hexcode:"1F1E9",emoji:"🇩",text:"",type:1,version:0,shortCodes:["regional_indicator_d"]},{label:"regional indicator E",hexcode:"1F1EA",emoji:"🇪",text:"",type:1,version:0,shortCodes:["regional_indicator_e"]},{label:"regional indicator F",hexcode:"1F1EB",emoji:"🇫",text:"",type:1,version:0,shortCodes:["regional_indicator_f"]},{label:"regional indicator G",hexcode:"1F1EC",emoji:"🇬",text:"",type:1,version:0,shortCodes:["regional_indicator_g"]},{label:"regional indicator H",hexcode:"1F1ED",emoji:"🇭",text:"",type:1,version:0,shortCodes:["regional_indicator_h"]},{label:"regional indicator I",hexcode:"1F1EE",emoji:"🇮",text:"",type:1,version:0,shortCodes:["regional_indicator_i"]},{label:"regional indicator J",hexcode:"1F1EF",emoji:"🇯",text:"",type:1,version:0,shortCodes:["regional_indicator_j"]},{label:"regional indicator K",hexcode:"1F1F0",emoji:"🇰",text:"",type:1,version:0,shortCodes:["regional_indicator_k"]},{label:"regional indicator L",hexcode:"1F1F1",emoji:"🇱",text:"",type:1,version:0,shortCodes:["regional_indicator_l"]},{label:"regional indicator M",hexcode:"1F1F2",emoji:"🇲",text:"",type:1,version:0,shortCodes:["regional_indicator_m"]},{label:"regional indicator N",hexcode:"1F1F3",emoji:"🇳",text:"",type:1,version:0,shortCodes:["regional_indicator_n"]},{label:"regional indicator O",hexcode:"1F1F4",emoji:"🇴",text:"",type:1,version:0,shortCodes:["regional_indicator_o"]},{label:"regional indicator P",hexcode:"1F1F5",emoji:"🇵",text:"",type:1,version:0,shortCodes:["regional_indicator_p"]},{label:"regional indicator Q",hexcode:"1F1F6",emoji:"🇶",text:"",type:1,version:0,shortCodes:["regional_indicator_q"]},{label:"regional indicator R",hexcode:"1F1F7",emoji:"🇷",text:"",type:1,version:0,shortCodes:["regional_indicator_r"]},{label:"regional indicator S",hexcode:"1F1F8",emoji:"🇸",text:"",type:1,version:0,shortCodes:["regional_indicator_s"]},{label:"regional indicator T",hexcode:"1F1F9",emoji:"🇹",text:"",type:1,version:0,shortCodes:["regional_indicator_t"]},{label:"regional indicator U",hexcode:"1F1FA",emoji:"🇺",text:"",type:1,version:0,shortCodes:["regional_indicator_u"]},{label:"regional indicator V",hexcode:"1F1FB",emoji:"🇻",text:"",type:1,version:0,shortCodes:["regional_indicator_v"]},{label:"regional indicator W",hexcode:"1F1FC",emoji:"🇼",text:"",type:1,version:0,shortCodes:["regional_indicator_w"]},{label:"regional indicator X",hexcode:"1F1FD",emoji:"🇽",text:"",type:1,version:0,shortCodes:["regional_indicator_x"]},{label:"regional indicator Y",hexcode:"1F1FE",emoji:"🇾",text:"",type:1,version:0,shortCodes:["regional_indicator_y"]},{label:"regional indicator Z",hexcode:"1F1FF",emoji:"🇿",text:"",type:1,version:0,shortCodes:["regional_indicator_z"]}]; |
| … | … | @@ -1 +0,0 @@ |
| 1 | export default[{label:"Keet Laughs",tags:["keet","laugh"],shortCodes:["keet_laughs"],emoji:"keet_laughs",path:"keet_laughs.png",pathRiv:"keet_laughs.riv"},{label:"Keet Party",tags:["keet","party"],shortCodes:["keet_party"],emoji:"keet_party",path:"keet_party.png",pathRiv:"keet_party.riv"},{label:"Keet Love",tags:["keet","love","heart"],shortCodes:["keet_love"],emoji:"keet_love",path:"keet_love.png",pathRiv:"keet_love.riv"},{label:"Keet Music",tags:["keet","music"],shortCodes:["keet_music"],emoji:"keet_music",path:"keet_music.png",pathRiv:"keet_music.riv"},{label:"Bitcoin",tags:["btc","bitcoin","crypto"],shortCodes:["bitcoin"],emoji:"bitcoin",path:"bitcoin.png",pathRiv:"bitcoin.riv"},{label:"Tether",tags:["tether","crypto","usdt"],shortCodes:["tether"],emoji:"tether",path:"tether.png",pathRiv:"tether.riv"},{label:"Pear",tags:["pear"],shortCodes:["keet_pear"],emoji:"keet_pear",path:"keet_pear.png",pathRiv:"keet_pear.riv"},{label:"Holepunch",tags:["holepunch"],shortCodes:["holepunch"],emoji:"holepunch",path:"holepunch.png",pathRiv:"holepunch.riv"},{label:"Bare",tags:["bare","bear"],shortCodes:["bare"],emoji:"bare",path:"bare.png"}]; |
| … | … | @@ -1 +0,0 @@ |
| 1 | export default{"1F642":{emoticon:[":)",":-)"]},2639:{emoticon:[":(",":-("]},"1F609":{emoticon:[";)",";-)"]},"1F604":{emoticon:[":D",":-D"]},"1F61B":{emoticon:[":p",":P",":-P"]},"1F61C":{emoticon:[";p",";P",";-P"]},"1F632":{emoticon:[":o",":O",":-o"]},"1F615":{emoticon:[":/",":-/"]},"1F610":{emoticon:[":|",":-|"]},"1F61A":{emoticon:[":*",":-*"]},"1F618":{emoticon:[":x",":X",":-X"]},"1F633":{emoticon:[":$",":-$"]},"1F60E":{emoticon:["8)","8-)"]}}; |
| … | … | @@ -1 +0,0 @@ |
| 1 | export default[{tone:0,emoji:"🤚"},{tone:1,emoji:"🤚🏻"},{tone:2,emoji:"🤚🏼"},{tone:3,emoji:"🤚🏽"},{tone:4,emoji:"🤚🏾"},{tone:5,emoji:"🤚🏿"}]; |
| … | … | @@ -1,88 +0,0 @@ |
| 1 | [ | |
| 2 | { | |
| 3 | "key": "recent", | |
| 4 | "message": "recentlyUsed", | |
| 5 | "emoji": "🕛", | |
| 6 | "icon": "clock-filled", | |
| 7 | "data": [] | |
| 8 | }, | |
| 9 | { | |
| 10 | "key": "keet-emoji", | |
| 11 | "message": "keetEmoji", | |
| 12 | "emoji": "🍐", | |
| 13 | "icon": "keet-single-color", | |
| 14 | "data": [] | |
| 15 | }, | |
| 16 | { | |
| 17 | "key": "smileys-emotion", | |
| 18 | "message": "smileyEmotion", | |
| 19 | "emoji": "🤪", | |
| 20 | "icon": "emoji-filled", | |
| 21 | "group": 0, | |
| 22 | "data": [] | |
| 23 | }, | |
| 24 | { | |
| 25 | "key": "people-body", | |
| 26 | "message": "peopleBody", | |
| 27 | "emoji": "💁♀", | |
| 28 | "icon": "users-two-filled", | |
| 29 | "group": 1, | |
| 30 | "data": [] | |
| 31 | }, | |
| 32 | { | |
| 33 | "key": "animals-nature", | |
| 34 | "message": "animalsNature", | |
| 35 | "emoji": "🦄", | |
| 36 | "icon": "leaf-filled", | |
| 37 | "group": 3, | |
| 38 | "data": [] | |
| 39 | }, | |
| 40 | { | |
| 41 | "key": "food-drink", | |
| 42 | "message": "foodDrink", | |
| 43 | "emoji": "🍔", | |
| 44 | "icon": "coffee-filled", | |
| 45 | "group": 4, | |
| 46 | "data": [] | |
| 47 | }, | |
| 48 | { | |
| 49 | "key": "travel-places", | |
| 50 | "message": "travelPlaces", | |
| 51 | "emoji": "✈️", | |
| 52 | "icon": "airplane-tilt-filled", | |
| 53 | "group": 5, | |
| 54 | "data": [] | |
| 55 | }, | |
| 56 | { | |
| 57 | "key": "activities", | |
| 58 | "message": "activities", | |
| 59 | "emoji": "⚾️", | |
| 60 | "icon": "game-controller-filled", | |
| 61 | "group": 6, | |
| 62 | "data": [] | |
| 63 | }, | |
| 64 | { | |
| 65 | "key": "objects", | |
| 66 | "message": "objects", | |
| 67 | "emoji": "💡", | |
| 68 | "icon": "light-bulb-filled", | |
| 69 | "group": 7, | |
| 70 | "data": [] | |
| 71 | }, | |
| 72 | { | |
| 73 | "key": "symbols", | |
| 74 | "message": "symbols", | |
| 75 | "emoji": "⁉", | |
| 76 | "icon": "symbols-filled", | |
| 77 | "group": 8, | |
| 78 | "data": [] | |
| 79 | }, | |
| 80 | { | |
| 81 | "key": "flags", | |
| 82 | "message": "flags", | |
| 83 | "emoji": "🏳️🌈", | |
| 84 | "icon": "flag-filled", | |
| 85 | "group": 9, | |
| 86 | "data": [] | |
| 87 | } | |
| 88 | ] |
| … | … | @@ -1 +0,0 @@ |
| 1 | import t from"lodash.toarray";import o from"./data/raw-emojis-base.js";import e from"./data/raw-emojis-custom.js";import r from"./data/raw-emojis-overwrite.js";import s from"./data/messages.js";import n from"./data/skin-tones.js";export{default as emoji_categories}from"./emoji_categories.json"with{type:"json"};export const EMOJI_CATEGORY={RECENTS:"recents",CUSTOM:"custom",COMPONENT:"component",SMILEYS_EMOTION:"smileys-emotion",PEOPLE_BODY:"people-body",ANIMALS_NATURE:"animals-nature",FOOD_DRINK:"food-drink",TRAVEL_PLACES:"travel-places",ACTIVITIES:"activities",OBJECTS:"objects",SYMBOLS:"symbols",FLAGS:"flags",OTHER:"other"};export const SKIN_TONE_EMPTY="";export const SKIN_TONE_LIST=["light","medium-light","medium","medium-dark","dark"];const i={light:0,"medium-light":1,medium:2,"medium-dark":3,dark:4},a=new Map,m=new Map,u=new Map,c=[],p=[],f={},h=[],g={},E=(t,{emojisPath:o})=>{const{label:e,tags:r,shortCodes:s,emoji:n,path:i}=t;return{custom:!0,label:e,tags:r,shortCodes:s,emoji:n,url:i?`${o}${i}`:""}};function d(t){for(const o of t.shortCodes)a.set(o,t);m.set(t.emoji,t),u.set(t.hexcode,t),t.skins?.forEach(d)}function j(t,o){const e=[];for(const r of t){for(const t of r)if(e.push(t),e.length>=o)break;if(e.length>=o)break}return e}export function initEmojis({emojisPath:t="/assets/emojis/"}){e.forEach(o=>{const e=E(o,{emojisPath:t});d(e),c.push(e),p.push(e)}),o.forEach(t=>{r[t.hexcode]&&(t={...t,...r[t.hexcode]}),d(t),p.push(t)}),h.push(EMOJI_CATEGORY.RECENTS),h.push(EMOJI_CATEGORY.CUSTOM),s.groups.forEach(({key:t,order:o})=>{h.push(t),g[o]=t})}export function getEmojiData(t){return u.get(t)||a.get(t)||m.get(t)}export const getEmojiBySkinTone=(t,o)=>{const{skins:e}=t;return e&&e[i[o]]||t};export const isValidSkinTone=t=>""===t||Number.isInteger(i[t]);export function getDataOfSkin(t){return t?(f[t]||(f[t]=p.map(o=>o.skins?.find(o=>o.tone===t)||o)),f[t]):p}export function emojify(t,o){return t.split(/:([a-zA-Z0-9_\-+]+):/g).map((t,e)=>{if(e%2==0)return t;if(!a.has(t))return`:${t}:`;const r=a.get(t),{emoji:s,alt:n}=r;return o?o(s,t,r):n||s}).join("")}export function unemojify(o){return t(o).map(t=>{if(m.has(t))return`:${m.get(t).shortCodes[0]}:`;const o=t.codePointAt(0).toString(16).toUpperCase();return u.has(o)?`:${u.get(o).shortCodes[0]}:`:t}).join("")}export function getAllEmojisData(){return p}export function getCustomEmojisData(){return c}export function getEmojiMessages(){return s}export function getCategories(){return h}export function getCategoryByGroup(){return g}export function getSkinTones(){return n}export function getSkinToneSelectorEmoji(){return getEmojiData("1F91A")}export const emojiSearch=(t,o,e=20)=>{if(!o)return t.slice(0,e);const r=o.toLowerCase(),s=`:${r}`,n=[[],[],[],[],[]];for(const o of t){const{shortCodes:t=[],emoticon:e=[],tags:i=[]}=o,a=Array.isArray(e)?e:[e];let m=-1;t.some(t=>t===r)||a.some(t=>t===s)?m=0:t.some(t=>t.startsWith(r))?m=1:t.some(t=>t.includes(r))?m=2:i.some(t=>t.startsWith(r))?m=3:i.some(t=>t.includes(r))&&(m=4),-1!==m&&n[m].push(o)}return j(n,e)}; |
| … | … | @@ -1,23 +0,0 @@ |
| 1 | { | |
| 2 | "name": "@holepunchto/emojis", | |
| 3 | "version": "2.4.0", | |
| 4 | "description": "HolePunch Emojis", | |
| 5 | "type": "module", | |
| 6 | "main": "index.js", | |
| 7 | "scripts": { | |
| 8 | "update": "node scripts/update-data.js", | |
| 9 | "lint": "standard", | |
| 10 | "test": "brittle test/index.js", | |
| 11 | "test:single": "brittle $1" | |
| 12 | }, | |
| 13 | "author": "", | |
| 14 | "license": "MIT", | |
| 15 | "devDependencies": { | |
| 16 | "brittle": "^3.1.1", | |
| 17 | "node-fetch": "^3.3.0", | |
| 18 | "standard": "^17.0.0" | |
| 19 | }, | |
| 20 | "dependencies": { | |
| 21 | "lodash.toarray": "^4.4.0" | |
| 22 | } | |
| 23 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-editor", |
| 3 | "version": "3.17.2", | |
| 3 | "version": "3.17.4", | |
| 4 | 4 | "main": "index.js", |
| 5 | 5 | "type": "module", |
| 6 | 6 | "description": "A rich text editor for Keet", |
| … | … | @@ -26,7 +26,6 @@ |
| 26 | 26 | "src" |
| 27 | 27 | ], |
| 28 | 28 | "dependencies": { |
| 29 | "@holepunchto/emojis": "^2.1.2", | |
| 30 | 29 | "@tiptap/core": "^2.6.6", |
| 31 | 30 | "@tiptap/extension-blockquote": "^2.6.6", |
| 32 | 31 | "@tiptap/extension-bold": "^2.6.6", |
| … | … | @@ -71,12 +71,7 @@ export const Submit = t.create({ |
| 71 | 71 | const s = t.getJSON(), |
| 72 | 72 | r = e.getLinkPreviews(), |
| 73 | 73 | n = e.getFiles() |
| 74 | return ( | |
| 75 | e.clearContent(!0), | |
| 76 | i(s, n, r), | |
| 77 | t.emit?.("submit", { doc: s, files: n, linkPreviews: r }), | |
| 78 | !0 | |
| 79 | ) | |
| 74 | return (i(s, n, r), t.emit?.("submit", { doc: s, files: n, linkPreviews: r }), !0) | |
| 80 | 75 | }, |
| 81 | 76 | } |
| 82 | 77 | }, |
| … | … | @@ -96,24 +91,24 @@ export const Submit = t.create({ |
| 96 | 91 | const s = i.state.doc, |
| 97 | 92 | n = r(s), |
| 98 | 93 | o = (s.content.content || []).filter((t) => t.attrs?.[e.ID]).length, |
| 99 | l = a(s), | |
| 100 | u = | |
| 94 | u = a(s), | |
| 95 | l = | |
| 101 | 96 | n <= t && |
| 102 | 97 | !(this.options?.isFileSharingDisabled?.() && o > 0) && |
| 103 | !(this.options?.isLinkSharingDisabled?.() && l), | |
| 98 | !(this.options?.isLinkSharingDisabled?.() && u), | |
| 104 | 99 | m = |
| 105 | 100 | (0 === n && !this.options.allowSubmitEmpty()) || |
| 106 | !u || | |
| 101 | !l || | |
| 107 | 102 | this.options.isSubmitDisabledInitial() |
| 108 | 103 | ;(this.storage.charNumber !== n || |
| 109 | this.storage.isValid !== u || | |
| 104 | this.storage.isValid !== l || | |
| 110 | 105 | this.storage.isSubmitDisabled !== m || |
| 111 | this.storage.hasLinks !== l) && | |
| 106 | this.storage.hasLinks !== u) && | |
| 112 | 107 | ((this.storage.charNumber = n), |
| 113 | (this.storage.isValid = u), | |
| 108 | (this.storage.isValid = l), | |
| 114 | 109 | (this.storage.isSubmitDisabled = m), |
| 115 | 110 | (this.storage.filesNumber = o), |
| 116 | (this.storage.hasLinks = l), | |
| 111 | (this.storage.hasLinks = u), | |
| 117 | 112 | i.dispatch(i.state.tr.setMeta("submit:update", Date.now()))) |
| 118 | 113 | }, |
| 119 | 114 | }), |
| … | … | @@ -134,8 +129,8 @@ export const Submit = t.create({ |
| 134 | 129 | return ((o += r), !0) |
| 135 | 130 | }), |
| 136 | 131 | null === a && (a = n.doc.content.size)) |
| 137 | const l = n.tr | |
| 138 | return (l.delete(a, n.doc.content.size), l.setMeta("truncate", !0), l) | |
| 132 | const u = n.tr | |
| 133 | return (u.delete(a, n.doc.content.size), u.setMeta("truncate", !0), u) | |
| 139 | 134 | }, |
| 140 | 135 | filterTransaction: (e, i) => |
| 141 | 136 | this.storage.charNumber < t || r(e.doc) <= this.storage.charNumber, |
| … | … | @@ -1,19 +1,18 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | { InternalSchema: t } = require("@holepunchto/keet-core-schemas"), | |
| 1 | const { InternalSchema: e } = require("@holepunchto/keet-core-schemas"), | |
| 3 | 2 | { |
| 4 | InternalOperation: i, | |
| 5 | UpgradeOperation: n, | |
| 6 | GenesisOperation: a, | |
| 7 | AddPluginOperation: s, | |
| 8 | } = t.Operations, | |
| 3 | InternalOperation: t, | |
| 4 | UpgradeOperation: i, | |
| 5 | GenesisOperation: n, | |
| 6 | AddPluginOperation: a, | |
| 7 | } = e.Operations, | |
| 9 | 8 | { |
| 10 | FEATURES: r, | |
| 11 | isFeatureSupported: o, | |
| 12 | CURRENT_ABI: l, | |
| 13 | MIN_ABIS: p, | |
| 9 | FEATURES: s, | |
| 10 | isFeatureSupported: r, | |
| 11 | CURRENT_ABI: o, | |
| 12 | MIN_ABIS: l, | |
| 14 | 13 | } = require("@holepunchto/keet-core-api") |
| 15 | 14 | module.exports = class { |
| 16 | static Operations = new Set([i.TYPE]) | |
| 15 | static Operations = new Set([t.TYPE]) | |
| 17 | 16 | constructor(e) { |
| 18 | 17 | ;((this.view = e), (this.members = null), (this.config = null), (this._bee = null)) |
| 19 | 18 | } |
| … | … | @@ -22,8 +21,8 @@ module.exports = class { |
| 22 | 21 | (this.config = this.view.config), |
| 23 | 22 | (this._bee = this.view.bee)) |
| 24 | 23 | } |
| 25 | async _getCodeVersion(e) { | |
| 26 | const i = await e.get(t.CodeVersionKey, t.UpgraderEncoding) | |
| 24 | async _getCodeVersion(t) { | |
| 25 | const i = await t.get(e.CodeVersionKey, e.UpgraderEncoding) | |
| 27 | 26 | return i ? i.value : 0 |
| 28 | 27 | } |
| 29 | 28 | async getCodeVersion(e = -1) { |
| … | … | @@ -35,38 +34,38 @@ module.exports = class { |
| 35 | 34 | await t.close() |
| 36 | 35 | } |
| 37 | 36 | } |
| 38 | updateCodeVersion(e) { | |
| 39 | return this._bee.put(t.CodeVersionKey, e, t.UpgraderEncoding) | |
| 37 | updateCodeVersion(t) { | |
| 38 | return this._bee.put(e.CodeVersionKey, t, e.UpgraderEncoding) | |
| 40 | 39 | } |
| 41 | 40 | setExperimentalMode() { |
| 42 | return this._bee.put(t.ExperimentalModeKey, 1, t.UpgraderEncoding) | |
| 41 | return this._bee.put(e.ExperimentalModeKey, 1, e.UpgraderEncoding) | |
| 43 | 42 | } |
| 44 | 43 | getExperimentalMode() { |
| 45 | return this._bee.get(t.ExperimentalModeKey, t.UpgraderEncoding) | |
| 44 | return this._bee.get(e.ExperimentalModeKey, e.UpgraderEncoding) | |
| 46 | 45 | } |
| 47 | 46 | async isExperimentalMode() { |
| 48 | 47 | const e = await this.getExperimentalMode() |
| 49 | 48 | return !!e && 1 === e.value |
| 50 | 49 | } |
| 51 | 50 | async listPlugins() { |
| 52 | const e = [] | |
| 53 | for await (const { value: i } of this._bee.createReadStream(t.PluginsEncoding)) e.push(i) | |
| 54 | return e | |
| 51 | const t = [] | |
| 52 | for await (const { value: i } of this._bee.createReadStream(e.PluginsEncoding)) t.push(i) | |
| 53 | return t | |
| 55 | 54 | } |
| 56 | async updatePlugin(e, { key: i, length: n, fork: a }) { | |
| 55 | async updatePlugin(t, { key: i, length: n, fork: a }) { | |
| 57 | 56 | const s = await this.listPlugins() |
| 58 | 57 | let r = -1 |
| 59 | for (let t = 0; t < s.length; t++) | |
| 60 | if (s[t].name === e) { | |
| 61 | r = t | |
| 58 | for (let e = 0; e < s.length; e++) | |
| 59 | if (s[e].name === t) { | |
| 60 | r = e | |
| 62 | 61 | break |
| 63 | 62 | } |
| 64 | 63 | if (-1 === r) { |
| 65 | const e = { ...t.PluginsEncoding.keyEncoding.encodeRange({}), reverse: !0 }, | |
| 66 | i = await this._bee.peek(e) | |
| 67 | r = i ? t.PluginsEncoding.keyEncoding.decode(i.key) + 1 : 0 | |
| 64 | const t = { ...e.PluginsEncoding.keyEncoding.encodeRange({}), reverse: !0 }, | |
| 65 | i = await this._bee.peek(t) | |
| 66 | r = i ? e.PluginsEncoding.keyEncoding.decode(i.key) + 1 : 0 | |
| 68 | 67 | } |
| 69 | await this._bee.put(r, { name: e, key: i, length: n, fork: a }, t.PluginsEncoding) | |
| 68 | await this._bee.put(r, { name: t, key: i, length: n, fork: a }, e.PluginsEncoding) | |
| 70 | 69 | } |
| 71 | 70 | async _applyGenesisOperation(e, { id: t }) { |
| 72 | 71 | if (this.view.core.length > 0) return |
| … | … | @@ -78,11 +77,11 @@ module.exports = class { |
| 78 | 77 | async _applyUpgradeOperation(e) { |
| 79 | 78 | const { version: t } = e.value.value, |
| 80 | 79 | i = await this.getCodeVersion() |
| 81 | t > ((await this.isExperimentalMode()) ? l.EXPERIMENTAL : l.STABLE) || | |
| 80 | t > ((await this.isExperimentalMode()) ? o.EXPERIMENTAL : o.STABLE) || | |
| 82 | 81 | (i && i >= t) || |
| 83 | (i < p[r.V2_CONFIG] && o(t, r.V2_CONFIG) && (await this.config.migrate()), | |
| 84 | i < p[r.V2_PRIVATE_PROFILE] && | |
| 85 | o(t, r.V2_PRIVATE_PROFILE) && | |
| 82 | (i < l[s.V2_CONFIG] && r(t, s.V2_CONFIG) && (await this.config.migrate()), | |
| 83 | i < l[s.V2_PRIVATE_PROFILE] && | |
| 84 | r(t, s.V2_PRIVATE_PROFILE) && | |
| 86 | 85 | (await this.view.privateProfile.migrate()), |
| 87 | 86 | await this.updateCodeVersion(t)) |
| 88 | 87 | } |
| … | … | @@ -93,11 +92,11 @@ module.exports = class { |
| 93 | 92 | } |
| 94 | 93 | async autobaseApply(e, t) { |
| 95 | 94 | switch (e.value.subtype) { |
| 96 | case a.SUBTYPE: | |
| 97 | return this._applyGenesisOperation(e, t) | |
| 98 | 95 | case n.SUBTYPE: |
| 96 | return this._applyGenesisOperation(e, t) | |
| 97 | case i.SUBTYPE: | |
| 99 | 98 | return this._applyUpgradeOperation(e, t) |
| 100 | case s.SUBTYPE: | |
| 99 | case a.SUBTYPE: | |
| 101 | 100 | return this._applyAddPluginOperation(e, t) |
| 102 | 101 | } |
| 103 | 102 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-indexing", |
| 3 | "version": "6.3.2", | |
| 3 | "version": "6.4.0", | |
| 4 | 4 | "description": "Indexing logic for Keet's Autobase DB", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "repository": { |
| … | … | @@ -14,12 +14,12 @@ |
| 14 | 14 | }, |
| 15 | 15 | "homepage": "https://github.com/holepunchto/keet-indexing#readme", |
| 16 | 16 | "dependencies": { |
| 17 | "blind-pairing-core": "^2.0.0", | |
| 18 | 17 | "@holepunchto/hyperindex": "^2.2.0", |
| 19 | 18 | "@holepunchto/keet-core-api": "^1.28.0", |
| 20 | 19 | "@holepunchto/keet-core-schemas": "^2.13.0", |
| 21 | 20 | "b4a": "^1.6.4", |
| 22 | "compact-encoding": "^2.12.0", | |
| 21 | "blind-pairing-core": "^2.0.0", | |
| 22 | "compact-encoding": "^3.0.1", | |
| 23 | 23 | "hyperbee": "^2.19.0", |
| 24 | 24 | "keet-identity-key": "^3.0.0", |
| 25 | 25 | "sub-encoder": "^2.1.3", |
| … | … | @@ -1 +0,0 @@ |
| 1 | * text=auto eol=lf |
| … | … | @@ -1,38 +0,0 @@ |
| 1 | # Keet package | |
| 2 | ||
| 3 | Bundle packing for Keet core files. It uses [bare-pack](https://github.com/holepunchto/bare-pack/) to produce the bundle and allows obfuscating the bundle optionally. | |
| 4 | ||
| 5 | ``` | |
| 6 | npm i [-g] @holepunchto/keet-package | |
| 7 | ``` | |
| 8 | ||
| 9 | ## Usage | |
| 10 | ||
| 11 | #### `keet-package <command> <flags>` | |
| 12 | ||
| 13 | ##### - 'bundle' | |
| 14 | ||
| 15 | Bundle the module graph located at `--in` and save at `--out` path | |
| 16 | ||
| 17 | Flags include: | |
| 18 | ||
| 19 | ```console | |
| 20 | --in <path>, | |
| 21 | --out <out>, | |
| 22 | --no-minify, | |
| 23 | --base <path> | |
| 24 | --defer <specifier> | |
| 25 | --linked | |
| 26 | --format|-f | |
| 27 | --encoding|-e | |
| 28 | --host,h <platform-arch>, | |
| 29 | --preset <name> | |
| 30 | ``` | |
| 31 | ||
| 32 | ##### - 'version' | |
| 33 | ||
| 34 | Check the [bare-pack](https://github.com/holepunchto/bare-pack/blob/main/README.md) README to know more on the flags. | |
| 35 | ||
| 36 | ## License | |
| 37 | ||
| 38 | UNLICENSED |
| … | … | @@ -1,53 +0,0 @@ |
| 1 | #!/usr/bin/env node | |
| 2 | const { summary: e, command: o, flag: n } = require("paparam"), | |
| 3 | { createBundle: i } = require("./index.js"), | |
| 4 | { version: a } = require("./package.json"), | |
| 5 | t = o( | |
| 6 | "bundle", | |
| 7 | e("Bundle a file"), | |
| 8 | n("--in|-i <path>", "Path to the file to bundle"), | |
| 9 | n("--out|-o <path>", "The output path of the bundle"), | |
| 10 | n("--no-minify", "disable minification of the bundle"), | |
| 11 | n("--minify-all", "minify all files, not just punch ones"), | |
| 12 | n("--base <path>", "The base path of the bundle"), | |
| 13 | n("--defer <specifier>", "A module specifier to defer resolution of").multiple(), | |
| 14 | n("--linked", "Resolve linked: addons instead of file: prebuilds"), | |
| 15 | n("--format|-f <name>", "The bundle format to use"), | |
| 16 | n("--encoding|-e <name>", "The encoding to use for text bundle formats"), | |
| 17 | n("--host <host>", "The host to bundle for").multiple(), | |
| 18 | n("--preset <name>", "Apply an option preset"), | |
| 19 | async (e) => { | |
| 20 | const { | |
| 21 | base: o, | |
| 22 | out: n, | |
| 23 | defer: t, | |
| 24 | linked: l, | |
| 25 | format: s, | |
| 26 | encoding: r, | |
| 27 | host: f, | |
| 28 | preset: d, | |
| 29 | minifyAll: u, | |
| 30 | } = e.flags, | |
| 31 | p = e.flags.in, | |
| 32 | h = { all: !!u, holepunch: !0 } | |
| 33 | if (!p || !n) throw new Error("Error: --in and --out are required") | |
| 34 | e.flags.version | |
| 35 | ? console.log(`v${a}`) | |
| 36 | : await i(p, n, { | |
| 37 | log: !0, | |
| 38 | base: o, | |
| 39 | defer: t, | |
| 40 | linked: l, | |
| 41 | format: s, | |
| 42 | encoding: r, | |
| 43 | hosts: f, | |
| 44 | preset: d, | |
| 45 | minify: !1 === e.flags.minify ? null : h, | |
| 46 | }) | |
| 47 | }, | |
| 48 | ), | |
| 49 | l = o("version", e("Version of package"), async () => { | |
| 50 | console.log(`v${a}`) | |
| 51 | }), | |
| 52 | s = o("keet-package", t, l) | |
| 53 | s.parse() |
| … | … | @@ -1,74 +0,0 @@ |
| 1 | const e = require("terser"), | |
| 2 | { pathToFileURL: n } = require("url"), | |
| 3 | r = require("path"), | |
| 4 | { resolve: t } = require("bare-module-traverse"), | |
| 5 | s = require("bare-bundle-id"), | |
| 6 | i = require("bare-pack"), | |
| 7 | { writeFile: o, makeDir: l, readModule: u, listPrefix: a } = require("bare-pack/fs") | |
| 8 | function d(e, { all: n = !1, holepunch: t = !0, log: s } = {}) { | |
| 9 | for (const [i, o] of e) { | |
| 10 | const l = r.extname(i) | |
| 11 | ;(".js" === l || ".cjs" === l || ".mjs" === l || ".ejs" === l) && | |
| 12 | ((!n && t && -1 === i.indexOf("@holepunchto")) || | |
| 13 | ((n || t) && (s && console.log("Minifying and mangling", i), e.write(i, c(o.toString()))))) | |
| 14 | } | |
| 15 | } | |
| 16 | function c(n) { | |
| 17 | return ( | |
| 18 | Buffer.isBuffer(n) && (n = n.toString()), | |
| 19 | e.minify_sync(n, { mangle: { toplevel: !0 }, compress: { passes: 2 } }).code | |
| 20 | ) | |
| 21 | } | |
| 22 | async function f( | |
| 23 | e, | |
| 24 | r, | |
| 25 | { | |
| 26 | base: c = ".", | |
| 27 | defer: f = [], | |
| 28 | linked: p = !1, | |
| 29 | hosts: m = [`${process.platform}-${process.arch}`], | |
| 30 | encoding: g = "utf-8", | |
| 31 | format: h = b(r), | |
| 32 | minify: j, | |
| 33 | log: y, | |
| 34 | preset: k, | |
| 35 | }, | |
| 36 | ) { | |
| 37 | let w = await i( | |
| 38 | n(e), | |
| 39 | { hosts: m, resolve: t.bare, builtins: [], imports: null, defer: f, linked: p, preset: k }, | |
| 40 | u, | |
| 41 | a, | |
| 42 | ) | |
| 43 | ;((w = w.unmount(n(c))), (w.id = s(w).toString("hex")), j && d(w, { ...j, log: y })) | |
| 44 | let S = w.toBuffer() | |
| 45 | switch (h) { | |
| 46 | case "bundle": | |
| 47 | break | |
| 48 | case "bundle.cjs": | |
| 49 | S = `module.exports = ${JSON.stringify(S.toString(g))}\n` | |
| 50 | break | |
| 51 | case "bundle.mjs": | |
| 52 | S = `export default ${JSON.stringify(S.toString(g))}\n` | |
| 53 | break | |
| 54 | case "bundle.json": | |
| 55 | S = JSON.stringify(S.toString(g)) + "\n" | |
| 56 | break | |
| 57 | default: | |
| 58 | throw new Error(`Unknown format '${h}'`) | |
| 59 | } | |
| 60 | const x = n(r) | |
| 61 | ;(await l(new URL(".", x)), await o(x, S)) | |
| 62 | } | |
| 63 | function b(e) { | |
| 64 | return "string" != typeof e | |
| 65 | ? "bundle" | |
| 66 | : e.endsWith(".bundle.js") || e.endsWith(".bundle.cjs") | |
| 67 | ? "bundle.cjs" | |
| 68 | : e.endsWith(".bundle.mjs") | |
| 69 | ? "bundle.mjs" | |
| 70 | : e.endsWith(".bundle.json") | |
| 71 | ? "bundle.json" | |
| 72 | : "bundle" | |
| 73 | } | |
| 74 | ;((exports.minifySource = c), (exports.minifyBundle = d), (exports.createBundle = f)) |
| … | … | @@ -1,44 +0,0 @@ |
| 1 | { | |
| 2 | "name": "@holepunchto/keet-package", | |
| 3 | "version": "3.0.3", | |
| 4 | "description": "Automatically obfuscated private Holepunch repositories and produce a bundle", | |
| 5 | "license": "UNLICENSED", | |
| 6 | "author": "HOLEPUNCH INC", | |
| 7 | "type": "commonjs", | |
| 8 | "main": "index.js", | |
| 9 | "scripts": { | |
| 10 | "format": "prettier . --write", | |
| 11 | "lint": "lunte && prettier . --check" | |
| 12 | }, | |
| 13 | "exports": { | |
| 14 | "./package": "./package.json", | |
| 15 | ".": "./index.js" | |
| 16 | }, | |
| 17 | "bin": { | |
| 18 | "keet-package": "./bin.js" | |
| 19 | }, | |
| 20 | "imports": { | |
| 21 | "url": { | |
| 22 | "bare": "bare-url", | |
| 23 | "default": "url" | |
| 24 | }, | |
| 25 | "path": { | |
| 26 | "bare": "bare-path", | |
| 27 | "default": "path" | |
| 28 | } | |
| 29 | }, | |
| 30 | "dependencies": { | |
| 31 | "bare-bundle-id": "^1.0.2", | |
| 32 | "bare-module-traverse": "^2.0.0", | |
| 33 | "bare-pack": "^2.0.0", | |
| 34 | "bare-path": "^3.0.0", | |
| 35 | "bare-url": "^2.4.0", | |
| 36 | "paparam": "^1.10.0", | |
| 37 | "terser": "^5.46.1" | |
| 38 | }, | |
| 39 | "devDependencies": { | |
| 40 | "lunte": "^1.6.0", | |
| 41 | "prettier": "^3.7.4", | |
| 42 | "prettier-config-holepunch": "^2.0.0" | |
| 43 | } | |
| 44 | } |
| … | … | @@ -1,37 +1,42 @@ |
| 1 | 1 | const e = require("compact-encoding"), |
| 2 | 2 | o = "io.keet.app", |
| 3 | r = (global.Pear ? global.Pear.config.appId : null) || o, | |
| 4 | d = { | |
| 5 | preencode(d, n) { | |
| 6 | ;(e.uint.preencode(d, n.version), | |
| 7 | e.fixed32.preencode(d, n.roomDiscoveryKey), | |
| 8 | e.buffer.preencode(d, n.payload), | |
| 9 | r !== o && e.string.preencode(d, r)) | |
| 3 | d = (global.Pear ? global.Pear.config.appId : null) || o, | |
| 4 | n = { | |
| 5 | preencode(n, r) { | |
| 6 | ;(e.uint.preencode(n, r.version), | |
| 7 | e.fixed32.preencode(n, r.roomDiscoveryKey), | |
| 8 | e.buffer.preencode(n, r.payload), | |
| 9 | d !== o && e.string.preencode(n, d)) | |
| 10 | 10 | }, |
| 11 | encode(d, n) { | |
| 12 | ;(e.uint.encode(d, n.version), | |
| 13 | e.fixed32.encode(d, n.roomDiscoveryKey), | |
| 14 | e.buffer.encode(d, n.payload), | |
| 15 | r !== o && e.string.encode(d, r)) | |
| 11 | encode(n, r) { | |
| 12 | ;(e.uint.encode(n, r.version), | |
| 13 | e.fixed32.encode(n, r.roomDiscoveryKey), | |
| 14 | e.buffer.encode(n, r.payload), | |
| 15 | d !== o && e.string.encode(n, d)) | |
| 16 | 16 | }, |
| 17 | decode(r) { | |
| 18 | const d = e.uint.decode(r) | |
| 19 | if (0 !== d && 1 !== d) throw new Error("Unknown version: " + d) | |
| 17 | decode(d) { | |
| 18 | const n = e.uint.decode(d) | |
| 19 | if (0 !== n && 1 !== n) throw new Error("Unknown version: " + n) | |
| 20 | 20 | return { |
| 21 | version: d, | |
| 22 | roomDiscoveryKey: e.fixed32.decode(r), | |
| 23 | payload: e.buffer.decode(r), | |
| 24 | appId: r.start < r.end ? e.string.decode(r) : o, | |
| 21 | version: n, | |
| 22 | roomDiscoveryKey: e.fixed32.decode(d), | |
| 23 | payload: e.buffer.decode(d), | |
| 24 | appId: d.start < d.end ? e.string.decode(d) : o, | |
| 25 | 25 | } |
| 26 | 26 | }, |
| 27 | 27 | }, |
| 28 | n = { | |
| 29 | preencode(o, r) { | |
| 30 | ;(e.buffer.preencode(o, r.proof), e.buffer.preencode(o, r.attest)) | |
| 28 | r = { | |
| 29 | preencode(o, d) { | |
| 30 | ;(e.buffer.preencode(o, d.proof), e.uint.preencode(o, 0), e.buffer.preencode(o, d.attest)) | |
| 31 | 31 | }, |
| 32 | encode(o, r) { | |
| 33 | ;(e.buffer.encode(o, r.proof), e.buffer.encode(o, r.attest)) | |
| 32 | encode(o, d) { | |
| 33 | ;(e.buffer.encode(o, d.proof), | |
| 34 | e.uint.encode(o, d.attest ? 1 : 0), | |
| 35 | d.attest && e.buffer.encode(o, d.attest)) | |
| 34 | 36 | }, |
| 35 | decode: (o) => ({ proof: e.buffer.decode(o), attest: e.buffer.decode(o) }), | |
| 37 | decode: (o) => ({ | |
| 38 | proof: e.buffer.decode(o), | |
| 39 | attest: 1 & e.uint.decode(o) ? e.buffer.decode(o) : null, | |
| 40 | }), | |
| 36 | 41 | } |
| 37 | module.exports = { notification: d, payload: n } | |
| 42 | module.exports = { notification: n, payload: r } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-push", |
| 3 | "version": "4.2.0", | |
| 3 | "version": "4.3.0", | |
| 4 | 4 | "description": "Push notifications for Keet", |
| 5 | 5 | "scripts": { |
| 6 | 6 | "test": "standard" |
| … | … | @@ -24,7 +24,7 @@ |
| 24 | 24 | "@hyperswarm/rpc": "^3.2.0", |
| 25 | 25 | "autobase": "^7.0.0", |
| 26 | 26 | "b4a": "^1.6.4", |
| 27 | "compact-encoding": "^2.11.0", | |
| 27 | "compact-encoding": "^3.0.0", | |
| 28 | 28 | "hypercore": "^11.4.2", |
| 29 | 29 | "hypercore-crypto": "^3.3.1", |
| 30 | 30 | "hypercore-id-encoding": "^1.3.0", |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-registry-client", |
| 3 | "version": "5.1.1", | |
| 3 | "version": "5.2.0", | |
| 4 | 4 | "description": "Client for keet-registry-service", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "scripts": { |
| … | … | @@ -33,7 +33,7 @@ |
| 33 | 33 | "dependencies": { |
| 34 | 34 | "@holepunchto/keet-registry": "^3.1.1", |
| 35 | 35 | "@holepunchto/keet-registry-schema": "^3.4.0", |
| 36 | "compact-encoding": "^2.16.0", | |
| 36 | "compact-encoding": "^3.0.0", | |
| 37 | 37 | "corestore": "^7.4.2", |
| 38 | 38 | "graceful-goodbye": "^1.3.3", |
| 39 | 39 | "hypercore-id-encoding": "^1.3.0", |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-registry", |
| 3 | "version": "3.7.0", | |
| 3 | "version": "3.9.0", | |
| 4 | 4 | "description": "Name service for Keet identities", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "scripts": { |
| … | … | @@ -40,13 +40,13 @@ |
| 40 | 40 | "dependencies": { |
| 41 | 41 | "@holepunchto/keet-schemas": "blue", |
| 42 | 42 | "b4a": "^1.6.7", |
| 43 | "compact-encoding": "^2.16.0", | |
| 43 | "compact-encoding": "^3.0.0", | |
| 44 | 44 | "debounceify": "^1.1.0", |
| 45 | 45 | "fast-fifo": "^1.3.2", |
| 46 | 46 | "hyperblobs": "^2.8.0", |
| 47 | 47 | "hypercore-crypto": "^3.6.1", |
| 48 | 48 | "hypercore-id-encoding": "^1.3.0", |
| 49 | "hyperdb": "^5.0.0", | |
| 49 | "hyperdb": "^6.0.0", | |
| 50 | 50 | "hyperschema": "^1.10.2", |
| 51 | 51 | "keet-identity-key": "^3.0.0", |
| 52 | 52 | "ready-resource": "^1.1.1", |
| … | … | @@ -90,6 +90,7 @@ export type RoomInfoApiData = { |
| 90 | 90 | isActive: boolean, |
| 91 | 91 | isFullyMuted: boolean, |
| 92 | 92 | isMentionsOnlyMuted: boolean, |
| 93 | isUnread: boolean, | |
| 93 | 94 | }, |
| 94 | 95 | }, |
| 95 | 96 | fileStats?: { total: number } |
| … | … | @@ -36,4 +36,4 @@ export function getChatMessagesApiPromise(e, { reverse: o, gte: n, lte: r }) { |
| 36 | 36 | const i = { reverse: "boolean" != typeof o || o, lte: r, gte: n } |
| 37 | 37 | return apiCallPromise(t().getChatMessages, e, i) |
| 38 | 38 | } |
| 39 | export const ERROR_POSIX = { ENOSPC: "ENOSPC" } | |
| 39 | export const ERROR_POSIX = { ENOSPC: "ENOSPC", EIO: "EIO" } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-store", |
| 3 | "version": "6.14.30", | |
| 3 | "version": "6.15.28", | |
| 4 | 4 | "description": "Keet shared store", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "types": "types/index.d.ts", |
| … | … | @@ -111,7 +111,7 @@ export function* appDesktopHandlerSaga() { |
| 111 | 111 | yield i(Eo, io), |
| 112 | 112 | yield i(x, ao), |
| 113 | 113 | yield i(So, ro), |
| 114 | yield t(P, to), | |
| 114 | yield a(P, to), | |
| 115 | 115 | yield t(Y, po), |
| 116 | 116 | yield i(B, To), |
| 117 | 117 | yield t(h, H), |
| … | … | @@ -204,7 +204,7 @@ function* qi() { |
| 204 | 204 | yield o(ki), |
| 205 | 205 | yield o(S), |
| 206 | 206 | yield d(z, T), |
| 207 | yield r(ii, f), | |
| 207 | yield y(ii, f), | |
| 208 | 208 | yield r(B, F), |
| 209 | 209 | yield r(ei, u), |
| 210 | 210 | yield r(Ii, Ki), |
| … | … | @@ -19,9 +19,9 @@ import { |
| 19 | 19 | import { getRoomItemById as f, getRoomTitle as g, setRoomShowWarning as u } from "../../room" |
| 20 | 20 | import { getAppCurrentRoomId as E } from "../app.reducer" |
| 21 | 21 | import { apiSubscribeSaga as I, safeCall as b } from "../../lib" |
| 22 | import { APP_CONTEXT_KEY as C, ENV_CONTEXT_KEY as S } from "../../constants" | |
| 23 | import { getCoreBackend as k } from "../../../backend" | |
| 24 | import { getStatsUnlocked as O } from "../../stats" | |
| 22 | import { APP_CONTEXT_KEY as C, ENV_CONTEXT_KEY as O } from "../../constants" | |
| 23 | import { getCoreBackend as S } from "../../../backend" | |
| 24 | import { getStatsUnlocked as k } from "../../stats" | |
| 25 | 25 | import { |
| 26 | 26 | NOTIFICATION_CODE as T, |
| 27 | 27 | userCustomNotification as W, |
| … | … | @@ -34,7 +34,7 @@ function* P({ type: r, payload: i }) { |
| 34 | 34 | m = yield e(f(t)), |
| 35 | 35 | n = { ...i, roomId: t, roomTitle: m?.title }, |
| 36 | 36 | { message: p, errorCode: g } = i |
| 37 | g === G.ENOSPC | |
| 37 | g === G.ENOSPC || g === G.EIO | |
| 38 | 38 | ? (yield o(y(n)), yield o(W({ code: T.STORAGE_LOW_SPACE, message: p }))) |
| 39 | 39 | : r === s.type |
| 40 | 40 | ? yield o(d(n)) |
| … | … | @@ -43,13 +43,13 @@ function* P({ type: r, payload: i }) { |
| 43 | 43 | : r === l.type && (yield o(c(n))) |
| 44 | 44 | } |
| 45 | 45 | function* $() { |
| 46 | const { onError: r } = yield m(S), | |
| 46 | const { onError: r } = yield m(O), | |
| 47 | 47 | { consoleWarn: i } = yield m(C) |
| 48 | 48 | r && |
| 49 | (yield I([k().subscribeErrors], function* (t) { | |
| 49 | (yield I([S().subscribeErrors], function* (t) { | |
| 50 | 50 | if (t.isContractError) return void (i && i(t)) |
| 51 | 51 | yield b(r, t, { source: "core" }) |
| 52 | const m = yield e(O), | |
| 52 | const m = yield e(k), | |
| 53 | 53 | d = yield e(A), |
| 54 | 54 | s = t.details?.roomId |
| 55 | 55 | if (m) { |
| … | … | @@ -63,7 +63,7 @@ function* F({ |
| 63 | 63 | ) |
| 64 | 64 | return |
| 65 | 65 | } |
| 66 | const { title: N, roomType: I, avatarUrl: g } = M(y?.config), | |
| 66 | const { title: N, roomType: I, avatarUrl: g } = M(y.config, t), | |
| 67 | 67 | B = I === T.DM, |
| 68 | 68 | { |
| 69 | 69 | member: h, |
| … | … | @@ -27,7 +27,7 @@ function* N({ roomId: o, message: i }) { |
| 27 | 27 | s(t.getMember, o, i.memberId), |
| 28 | 28 | s(t.getBlockedMembers), |
| 29 | 29 | ]), |
| 30 | { title: l, roomType: f } = b(m?.config), | |
| 30 | { title: l, roomType: f } = b(m.config, o), | |
| 31 | 31 | y = f === g.DM, |
| 32 | 32 | { |
| 33 | 33 | member: u, |
| … | … | @@ -1,36 +1,36 @@ |
| 1 | 1 | import { STREAM_TYPE as e, PRESENCE_EVT as r } from "./call.constants" |
| 2 | 2 | import { |
| 3 | 3 | getEmptyMemberMedia as m, |
| 4 | getEmptyMemberPresence as a, | |
| 5 | hasStreamEverAdded as d, | |
| 4 | getEmptyMemberPresence as d, | |
| 5 | hasStreamEverAdded as a, | |
| 6 | 6 | removeFromPresencesSortedByActivity as s, |
| 7 | 7 | updatePresencesSortedByActivity as t, |
| 8 | 8 | } from "./utils" |
| 9 | 9 | export const addCallUnknownPresenceEvtReducer = (e, { payload: m }) => { |
| 10 | 10 | if (!m || !m.swarmId) return e |
| 11 | const { swarmId: a, type: s } = m, | |
| 11 | const { swarmId: d, type: s } = m, | |
| 12 | 12 | t = { ...e.unknownMemberPresence }, |
| 13 | n = t[a] | |
| 13 | n = t[d] | |
| 14 | 14 | return s === r.REMOVE_MEMBER |
| 15 | ? (n && delete t[a], { ...e, unknownMemberPresence: t }) | |
| 16 | : s !== r.REMOVE_STREAM || d(m, n) | |
| 17 | ? { ...e, unknownMemberPresence: { ...t, [a]: [...(n || []), m] } } | |
| 15 | ? (n && delete t[d], { ...e, unknownMemberPresence: t }) | |
| 16 | : s !== r.REMOVE_STREAM || a(m, n) | |
| 17 | ? { ...e, unknownMemberPresence: { ...t, [d]: [...(n || []), m] } } | |
| 18 | 18 | : e |
| 19 | 19 | } |
| 20 | 20 | export const removeCallMemberStreamReducer = (e, { payload: r }) => { |
| 21 | const { swarmId: m, streamId: a, streamName: d } = r, | |
| 21 | const { swarmId: m, streamId: d, streamName: a } = r, | |
| 22 | 22 | s = { |
| 23 | 23 | ...e.presenceBySwarmId[m], |
| 24 | 24 | ...(e.presenceBySwarmId[m].streamByName && { |
| 25 | 25 | streamByName: { ...e.presenceBySwarmId[m].streamByName }, |
| 26 | 26 | }), |
| 27 | 27 | } |
| 28 | return s.streamByName?.[d]?.streamId === a | |
| 29 | ? (delete s.streamByName[d], { ...e, presenceBySwarmId: { ...e.presenceBySwarmId, [m]: s } }) | |
| 28 | return s.streamByName?.[a]?.streamId === d | |
| 29 | ? (delete s.streamByName[a], { ...e, presenceBySwarmId: { ...e.presenceBySwarmId, [m]: s } }) | |
| 30 | 30 | : e |
| 31 | 31 | } |
| 32 | 32 | export const addCallMemberStreamReducer = (e, { payload: r }) => { |
| 33 | const { memberId: m, swarmId: d, streamId: s, streamName: t } = r | |
| 33 | const { memberId: m, swarmId: a, streamId: s, streamName: t } = r | |
| 34 | 34 | let { |
| 35 | 35 | presenceBySwarmId: n, |
| 36 | 36 | presenceMemberSwarmIds: c, |
| … | … | @@ -38,11 +38,11 @@ export const addCallMemberStreamReducer = (e, { payload: r }) => { |
| 38 | 38 | presenceSwarmByMemberId: I, |
| 39 | 39 | } = e |
| 40 | 40 | return ( |
| 41 | n[d] || | |
| 42 | ((n = { ...n, [d]: a({ memberId: m, swarmId: d }) }), | |
| 43 | (c = [...c, d]), | |
| 41 | n[a] || | |
| 42 | ((n = { ...n, [a]: d({ memberId: m, swarmId: a }) }), | |
| 43 | (c = [...c, a]), | |
| 44 | 44 | o.includes(m) || (o = [...o, m]), |
| 45 | (I = { ...I, [m]: d })), | |
| 45 | (I = { ...I, [m]: a })), | |
| 46 | 46 | { |
| 47 | 47 | ...e, |
| 48 | 48 | presenceMemberSwarmIds: c, |
| … | … | @@ -50,29 +50,29 @@ export const addCallMemberStreamReducer = (e, { payload: r }) => { |
| 50 | 50 | presenceSwarmByMemberId: I, |
| 51 | 51 | presenceBySwarmId: { |
| 52 | 52 | ...n, |
| 53 | [d]: { | |
| 54 | ...n[d], | |
| 55 | streamByName: { ...n[d].streamByName, [t]: { streamId: s, streamName: t } }, | |
| 53 | [a]: { | |
| 54 | ...n[a], | |
| 55 | streamByName: { ...n[a].streamByName, [t]: { streamId: s, streamName: t } }, | |
| 56 | 56 | }, |
| 57 | 57 | }, |
| 58 | 58 | } |
| 59 | 59 | ) |
| 60 | 60 | } |
| 61 | 61 | export const removeCallMemberIdReducer = (e, { payload: r }) => { |
| 62 | const { memberId: m, swarmId: a } = r || {} | |
| 63 | if (e.presenceBySwarmId[a]) { | |
| 62 | const { memberId: m, swarmId: d } = r || {} | |
| 63 | if (e.presenceBySwarmId[d]) { | |
| 64 | 64 | const r = Object.values(e.presenceBySwarmId).filter((e) => e.memberId === m).length, |
| 65 | d = { ...e.presenceBySwarmId } | |
| 66 | delete d[a] | |
| 65 | a = { ...e.presenceBySwarmId } | |
| 66 | delete a[d] | |
| 67 | 67 | const t = 1 === r |
| 68 | 68 | let { presenceSwarmByMemberId: n } = e |
| 69 | 69 | return ( |
| 70 | 70 | t && ((n = { ...n }), delete n[m]), |
| 71 | 71 | { |
| 72 | 72 | ...e, |
| 73 | presenceBySwarmId: d, | |
| 74 | presenceMemberSwarmIds: e.presenceMemberSwarmIds.filter((e) => e !== a), | |
| 75 | presencesSortedByActivity: s(e, a), | |
| 73 | presenceBySwarmId: a, | |
| 74 | presenceMemberSwarmIds: e.presenceMemberSwarmIds.filter((e) => e !== d), | |
| 75 | presencesSortedByActivity: s(e, d), | |
| 76 | 76 | presenceMemberIds: t ? e.presenceMemberIds.filter((e) => e !== m) : e.presenceMemberIds, |
| 77 | 77 | presenceSwarmByMemberId: n, |
| 78 | 78 | } |
| … | … | @@ -81,8 +81,8 @@ export const removeCallMemberIdReducer = (e, { payload: r }) => { |
| 81 | 81 | return e |
| 82 | 82 | } |
| 83 | 83 | export const addCallMemberIdReducer = (e, { payload: r }) => { |
| 84 | const { memberId: m, swarmId: d } = r || {}, | |
| 85 | s = e.unknownMemberPresence[d] ? { ...e.unknownMemberPresence } : e.unknownMemberPresence | |
| 84 | const { memberId: m, swarmId: a } = r || {}, | |
| 85 | s = e.unknownMemberPresence[a] ? { ...e.unknownMemberPresence } : e.unknownMemberPresence | |
| 86 | 86 | let { |
| 87 | 87 | presenceBySwarmId: n, |
| 88 | 88 | presenceMemberSwarmIds: c, |
| … | … | @@ -90,16 +90,16 @@ export const addCallMemberIdReducer = (e, { payload: r }) => { |
| 90 | 90 | presenceMemberIds: I, |
| 91 | 91 | presenceSwarmByMemberId: y, |
| 92 | 92 | } = e, |
| 93 | p = n[d] | |
| 93 | p = n[a] | |
| 94 | 94 | return ( |
| 95 | 95 | p || |
| 96 | ((p = a({ memberId: m, swarmId: d })), | |
| 97 | (n = { ...n, [d]: p }), | |
| 98 | (c = [...c, d]), | |
| 99 | (o = t(e, d)), | |
| 96 | ((p = d({ memberId: m, swarmId: a })), | |
| 97 | (n = { ...n, [a]: p }), | |
| 98 | (c = [...c, a]), | |
| 99 | (o = t(e, a)), | |
| 100 | 100 | I.includes(m) || (I = [...I, m]), |
| 101 | (y = { ...y, [m]: d })), | |
| 102 | e.unknownMemberPresence[d] && delete s[d], | |
| 101 | (y = { ...y, [m]: a })), | |
| 102 | e.unknownMemberPresence[a] && delete s[a], | |
| 103 | 103 | { |
| 104 | 104 | ...e, |
| 105 | 105 | presenceBySwarmId: n, |
| … | … | @@ -111,33 +111,37 @@ export const addCallMemberIdReducer = (e, { payload: r }) => { |
| 111 | 111 | } |
| 112 | 112 | ) |
| 113 | 113 | } |
| 114 | export const updateCallRemoteMediaReducer = (r, { payload: a }) => { | |
| 115 | const { memberId: d, swarmId: s, audioMuted: n, videoMuted: c, streamName: o, streamId: I } = a | |
| 116 | let y = r.mediaBySwarmId[s] || m({ memberId: d, swarmId: s }), | |
| 114 | export const updateCallRemoteMediaReducer = (r, { payload: d }) => { | |
| 115 | const { memberId: a, swarmId: s, audioMuted: n, videoMuted: c, streamName: o, streamId: I } = d | |
| 116 | let y = r.mediaBySwarmId[s] || m({ memberId: a, swarmId: s }), | |
| 117 | 117 | { presencesSortedByActivity: p } = r |
| 118 | return ( | |
| 119 | (y = { ...y, streamByName: { ...y.streamByName, [o]: { id: I } } }), | |
| 118 | ;((y = { ...y, streamByName: { ...y.streamByName, [o]: { id: I } } }), | |
| 120 | 119 | o === e.CAMERA && |
| 121 | 120 | (n && y.audioError && delete y.audioError, |
| 122 | 121 | (p = t(r, s, n, c)), |
| 123 | 122 | (y.isAudioMuted = n), |
| 124 | (y.isVideoMuted = c)), | |
| 125 | { ...r, presencesSortedByActivity: p, mediaBySwarmId: { ...r.mediaBySwarmId, [s]: y } } | |
| 126 | ) | |
| 123 | (y.isVideoMuted = c))) | |
| 124 | const w = r.connectedMemberIds?.[a] ? r.connectedMemberIds : { ...r.connectedMemberIds, [a]: !0 } | |
| 125 | return { | |
| 126 | ...r, | |
| 127 | presencesSortedByActivity: p, | |
| 128 | connectedMemberIds: w, | |
| 129 | mediaBySwarmId: { ...r.mediaBySwarmId, [s]: y }, | |
| 130 | } | |
| 127 | 131 | } |
| 128 | 132 | export const removeCallRemoteMediaReducer = (r, { payload: m }) => { |
| 129 | const { swarmId: a, streamName: d, streamId: s } = m | |
| 130 | if (!a || !d || !s) return r | |
| 131 | let t = { ...r.mediaBySwarmId[a] } | |
| 132 | if (!t?.streamByName || !t.streamByName[d]) return r | |
| 133 | if (t.streamByName[d].id !== s) return r | |
| 133 | const { swarmId: d, streamName: a, streamId: s } = m | |
| 134 | if (!d || !a || !s) return r | |
| 135 | let t = { ...r.mediaBySwarmId[d] } | |
| 136 | if (!t?.streamByName || !t.streamByName[a]) return r | |
| 137 | if (t.streamByName[a].id !== s) return r | |
| 134 | 138 | if (Object.keys(t.streamByName).length > 1) |
| 135 | 139 | return ( |
| 136 | 140 | (t = { ...t, streamByName: { ...t.streamByName } }), |
| 137 | delete t.streamByName[d], | |
| 138 | d === e.CAMERA && (delete t.audioError, delete t.isAudioMuted, delete t.isVideoMuted), | |
| 139 | { ...r, mediaBySwarmId: { ...r.mediaBySwarmId, [a]: t } } | |
| 141 | delete t.streamByName[a], | |
| 142 | a === e.CAMERA && (delete t.audioError, delete t.isAudioMuted, delete t.isVideoMuted), | |
| 143 | { ...r, mediaBySwarmId: { ...r.mediaBySwarmId, [d]: t } } | |
| 140 | 144 | ) |
| 141 | 145 | const n = { ...r.mediaBySwarmId } |
| 142 | return (delete n[a], { ...r, mediaBySwarmId: n }) | |
| 146 | return (delete n[d], { ...r, mediaBySwarmId: n }) | |
| 143 | 147 | } |
| … | … | @@ -22,8 +22,8 @@ import { |
| 22 | 22 | import { |
| 23 | 23 | getDeviceState as g, |
| 24 | 24 | getCameraAudioConstraints as v, |
| 25 | getCameraVideoConstraints as D, | |
| 26 | getVideoDevice as I, | |
| 25 | getCameraVideoConstraints as I, | |
| 26 | getVideoDevice as D, | |
| 27 | 27 | getAudioDevice as A, |
| 28 | 28 | setVideoDevice as V, |
| 29 | 29 | setAudioDevice as h, |
| … | … | @@ -105,11 +105,11 @@ export function* windowsPermissionsHandleSaga(e) { |
| 105 | 105 | i && (yield l(C({ permission: i, isGranted: !1, showPermissionDeniedModal: !0 }))) |
| 106 | 106 | } |
| 107 | 107 | export function* updateCameraStream(e) { |
| 108 | const [i, a, o, t, n, y, r, s] = yield d([c(_), c(K), c(I), c(z), c(J), c(X), c(A), c(q)]) | |
| 108 | const [i, a, o, t, n, y, r, s] = yield d([c(_), c(K), c(D), c(z), c(J), c(X), c(A), c(q)]) | |
| 109 | 109 | P(i) && (yield l(de(!1))) |
| 110 | 110 | const u = y.meAllowed ? t : !y.allowed || t, |
| 111 | 111 | p = Math.min(y.maxQuality, n), |
| 112 | f = D({ videoDevice: o, videoMuted: u, videoQuality: p }), | |
| 112 | f = I({ videoDevice: o, videoMuted: u, videoQuality: p }), | |
| 113 | 113 | S = v({ audioDevice: r, audioMuted: s }) |
| 114 | 114 | try { |
| 115 | 115 | yield m().local.applyStreamConstraints(a, { audio: S, video: f }) |
| … | … | @@ -172,10 +172,10 @@ export function* updateDevicePreferences() { |
| 172 | 172 | yield l(h(S)) |
| 173 | 173 | const v = m[i[f.AUDIO_OUTPUT]] || s.devices.find((e) => e.default) || Se(s.devices) || null |
| 174 | 174 | yield l(x(v)) |
| 175 | const D = m[i[f.VIDEO]] || r.devices.find((e) => e.default) || Se(r.devices) || null | |
| 176 | yield l(V(D)) | |
| 177 | const I = i[f.VIDEO_QUALITY] | |
| 178 | ;("number" == typeof I && (yield l(ie(I))), d || (yield l(oe()))) | |
| 175 | const I = m[i[f.VIDEO]] || r.devices.find((e) => e.default) || Se(r.devices) || null | |
| 176 | yield l(V(I)) | |
| 177 | const D = i[f.VIDEO_QUALITY] | |
| 178 | ;("number" == typeof D && (yield l(ie(D))), d || (yield l(oe()))) | |
| 179 | 179 | } |
| 180 | 180 | export function* callPreferencesSaga() { |
| 181 | 181 | ;(yield n(V, function* ({ payload: e }) { |
| … | … | @@ -206,7 +206,10 @@ export function* callVideoToggleSaga() { |
| 206 | 206 | { isVideoMuted: i } = yield c(Z) |
| 207 | 207 | if (i) { |
| 208 | 208 | if ((yield c(U)) < ce) { |
| 209 | ;((yield c(M)).find((i) => i.deviceStaticId === O(e)) && (yield l(b(O(e)))), | |
| 209 | const i = yield c(M), | |
| 210 | a = yield c(D) | |
| 211 | ;((a && i.some((e) => e.deviceStaticId === a.deviceStaticId)) || | |
| 212 | (i.find((i) => i.deviceStaticId === O(e)) && (yield l(b(O(e))))), | |
| 210 | 213 | yield l(H(e ? 2 : 1)), |
| 211 | 214 | yield l(F())) |
| 212 | 215 | } |
| … | … | @@ -221,7 +224,7 @@ export function* callVideoCloseSaga() { |
| 221 | 224 | export function* callSwapViewCameraSaga() { |
| 222 | 225 | try { |
| 223 | 226 | const e = yield c(M), |
| 224 | i = yield c(I), | |
| 227 | i = yield c(D), | |
| 225 | 228 | a = e.find((e) => e.deviceStaticId !== i.deviceStaticId) |
| 226 | 229 | a && (yield l(b(a.deviceStaticId))) |
| 227 | 230 | } catch (e) { |
| … | … | @@ -2,8 +2,8 @@ import { createSelector as e } from "@reduxjs/toolkit" |
| 2 | 2 | import { |
| 3 | 3 | CALL_STATUS as t, |
| 4 | 4 | STREAM_TYPE as r, |
| 5 | CALL_STATE_KEY as a, | |
| 6 | CALL_SETTINGS_STATE_KEY as n, | |
| 5 | CALL_STATE_KEY as n, | |
| 6 | CALL_SETTINGS_STATE_KEY as a, | |
| 7 | 7 | } from "./call.constants" |
| 8 | 8 | import { |
| 9 | 9 | CALL_SETTINGS_INITIAL_STATE as l, |
| … | … | @@ -17,8 +17,8 @@ import { |
| 17 | 17 | showCallAutoEndPopup as p, |
| 18 | 18 | updateCallAutoEndCountdown as C, |
| 19 | 19 | setCallShareScreenDialogOpened as i, |
| 20 | openCallSettings as u, | |
| 21 | setCallRemoteMediaAudioError as g, | |
| 20 | openCallSettings as g, | |
| 21 | setCallRemoteMediaAudioError as u, | |
| 22 | 22 | removeCallRemoteMediaAudioError as I, |
| 23 | 23 | updateCallRemoteMedia as S, |
| 24 | 24 | removeCallRemoteMedia as y, |
| … | … | @@ -27,38 +27,39 @@ import { |
| 27 | 27 | removeCallPeersCount as x, |
| 28 | 28 | setCallPeers as M, |
| 29 | 29 | callSetIncomingDMCall as P, |
| 30 | callResetIncomingDMCall as E, | |
| 31 | setDmCallsV2Enabled as B, | |
| 32 | setActiveCalls as h, | |
| 30 | callResetIncomingDMCall as B, | |
| 31 | setDmCallsV2Enabled as f, | |
| 32 | setActiveCalls as E, | |
| 33 | 33 | setPendingCall as A, |
| 34 | 34 | } from "./call.action" |
| 35 | 35 | import { |
| 36 | addCallMemberId as f, | |
| 36 | addCallMemberId as h, | |
| 37 | 37 | removeCallMemberId as v, |
| 38 | 38 | addCallMemberStream as N, |
| 39 | removeCallMemberStream as T, | |
| 40 | addCallUnknownPresenceEvt as D, | |
| 39 | removeCallMemberStream as k, | |
| 40 | addCallUnknownPresenceEvt as T, | |
| 41 | 41 | } from "./call-presence.action" |
| 42 | 42 | import { |
| 43 | callCancel as k, | |
| 44 | callJoinCmd as L, | |
| 45 | callJoinedEvt as O, | |
| 46 | callLeave as R, | |
| 47 | callReset as V, | |
| 43 | callCancel as O, | |
| 44 | callJoinCmd as D, | |
| 45 | callJoinedEvt as L, | |
| 46 | callLeave as G, | |
| 47 | callReset as R, | |
| 48 | 48 | } from "./call-status.action" |
| 49 | 49 | import { |
| 50 | addCallMemberIdReducer as G, | |
| 51 | addCallMemberStreamReducer as U, | |
| 50 | addCallMemberIdReducer as U, | |
| 51 | addCallMemberStreamReducer as V, | |
| 52 | 52 | addCallUnknownPresenceEvtReducer as J, |
| 53 | 53 | removeCallMemberIdReducer as j, |
| 54 | 54 | removeCallMemberStreamReducer as _, |
| 55 | removeCallRemoteMediaReducer as z, | |
| 56 | updateCallRemoteMediaReducer as H, | |
| 55 | removeCallRemoteMediaReducer as H, | |
| 56 | updateCallRemoteMediaReducer as z, | |
| 57 | 57 | } from "./call-presence.reducer" |
| 58 | import { getNextPositionPreservedList as K, createEmptyPresenceEntry as Y } from "./utils" | |
| 58 | import { getNextPositionPreservedList as K, mergeActivePresences as Y } from "./utils" | |
| 59 | 59 | import { getMembersByRoomIdState as q } from "../member" |
| 60 | 60 | import { getRoomCallsV2Supported as F } from "../room/room.feature" |
| 61 | import { EMPTY_ARRAY as Q } from "../lib/array" | |
| 61 | import { getNetworkPeers as Q } from "../network/network.reducer" | |
| 62 | import { EMPTY_ARRAY as W } from "../lib/array" | |
| 62 | 63 | export const INITIAL_STATE = { |
| 63 | 64 | callId: "", |
| 64 | 65 | memberId: "", |
| … | … | @@ -73,6 +74,7 @@ export const INITIAL_STATE = { |
| 73 | 74 | activeCalls: null, |
| 74 | 75 | activeCallMemberIds: null, |
| 75 | 76 | mediaBySwarmId: {}, |
| 77 | connectedMemberIds: {}, | |
| 76 | 78 | peersCounter: {}, |
| 77 | 79 | showConfirmLeave: !1, |
| 78 | 80 | showAutoEndPopup: !1, |
| … | … | @@ -84,8 +86,8 @@ export const INITIAL_STATE = { |
| 84 | 86 | dmCallsV2Enabled: !1, |
| 85 | 87 | } |
| 86 | 88 | export const callReducer = (e = INITIAL_STATE, r) => { |
| 87 | const { type: a, payload: l } = r | |
| 88 | switch (a) { | |
| 89 | const { type: n, payload: l } = r | |
| 90 | switch (n) { | |
| 89 | 91 | case c.type: { |
| 90 | 92 | const { callId: t, memberId: r } = l |
| 91 | 93 | return { ...e, callId: t, memberId: r } |
| … | … | @@ -104,32 +106,32 @@ export const callReducer = (e = INITIAL_STATE, r) => { |
| 104 | 106 | return { ...e, autoEndCountdown: l } |
| 105 | 107 | case i.type: |
| 106 | 108 | return { ...e, shareScreenDialogOpened: !!l } |
| 107 | case u.type: | |
| 109 | case g.type: | |
| 108 | 110 | return { ...e, status: t.SETTINGS } |
| 109 | case g.type: { | |
| 111 | case u.type: { | |
| 110 | 112 | const { swarmId: t, error: r } = l, |
| 111 | a = e.mediaBySwarmId[t] | |
| 112 | return a && r | |
| 113 | ? { ...e, mediaBySwarmId: { ...e.mediaBySwarmId, [t]: { ...a, audioError: r } } } | |
| 113 | n = e.mediaBySwarmId[t] | |
| 114 | return n && r | |
| 115 | ? { ...e, mediaBySwarmId: { ...e.mediaBySwarmId, [t]: { ...n, audioError: r } } } | |
| 114 | 116 | : e |
| 115 | 117 | } |
| 116 | 118 | case I.type: { |
| 117 | 119 | const { swarmId: t } = l, |
| 118 | 120 | r = e.mediaBySwarmId[t] |
| 119 | 121 | if (r && r.audioError) { |
| 120 | const a = { ...r } | |
| 121 | return (delete a.audioError, { ...e, mediaBySwarmId: { ...e.mediaBySwarmId, [t]: a } }) | |
| 122 | const n = { ...r } | |
| 123 | return (delete n.audioError, { ...e, mediaBySwarmId: { ...e.mediaBySwarmId, [t]: n } }) | |
| 122 | 124 | } |
| 123 | 125 | return e |
| 124 | 126 | } |
| 125 | 127 | case S.type: |
| 126 | return H(e, r) | |
| 127 | case y.type: | |
| 128 | 128 | return z(e, r) |
| 129 | case y.type: | |
| 130 | return H(e, r) | |
| 129 | 131 | case w.type: { |
| 130 | 132 | const { roomId: t, swarmId: r } = l, |
| 131 | a = e.peersCounter[t] || [] | |
| 132 | return a.indexOf(r) < 0 ? { ...e, peersCounter: { ...e.peersCounter, [t]: [...a, r] } } : e | |
| 133 | n = e.peersCounter[t] || [] | |
| 134 | return n.indexOf(r) < 0 ? { ...e, peersCounter: { ...e.peersCounter, [t]: [...n, r] } } : e | |
| 133 | 135 | } |
| 134 | 136 | case b.type: { |
| 135 | 137 | const { roomId: t, swarmId: r } = l |
| … | … | @@ -147,23 +149,23 @@ export const callReducer = (e = INITIAL_STATE, r) => { |
| 147 | 149 | const { roomId: t, ids: r } = l |
| 148 | 150 | return { ...e, peersCounter: { ...e.peersCounter, [t]: r } } |
| 149 | 151 | } |
| 150 | case h.type: | |
| 152 | case E.type: | |
| 151 | 153 | return { ...e, activeCalls: l.calls, activeCallMemberIds: l.memberIds } |
| 152 | case f.type: | |
| 153 | return G(e, r) | |
| 154 | case h.type: | |
| 155 | return U(e, r) | |
| 154 | 156 | case v.type: |
| 155 | 157 | return j(e, r) |
| 156 | 158 | case N.type: |
| 157 | return U(e, r) | |
| 158 | case T.type: | |
| 159 | return V(e, r) | |
| 160 | case k.type: | |
| 159 | 161 | return _(e, r) |
| 160 | case D.type: | |
| 162 | case T.type: | |
| 161 | 163 | return J(e, r) |
| 162 | case L.type: | |
| 164 | case D.type: | |
| 163 | 165 | return { ...e, status: t.JOINING } |
| 164 | case O.type: | |
| 166 | case L.type: | |
| 165 | 167 | return { ...e, status: t.JOINED } |
| 166 | case V.type: | |
| 168 | case R.type: | |
| 167 | 169 | return { |
| 168 | 170 | ...INITIAL_STATE, |
| 169 | 171 | peersCounter: e.peersCounter, |
| … | … | @@ -171,38 +173,39 @@ export const callReducer = (e = INITIAL_STATE, r) => { |
| 171 | 173 | pendingCall: e.pendingCall, |
| 172 | 174 | dmCallsV2Enabled: e.dmCallsV2Enabled, |
| 173 | 175 | } |
| 174 | case k.type: | |
| 175 | case R.type: | |
| 176 | case O.type: | |
| 177 | case G.type: | |
| 176 | 178 | return { |
| 177 | 179 | ...e, |
| 178 | 180 | showConfirmLeave: !1, |
| 179 | 181 | status: t.READY, |
| 180 | 182 | mediaBySwarmId: {}, |
| 183 | connectedMemberIds: {}, | |
| 181 | 184 | activeCalls: null, |
| 182 | 185 | activeCallMemberIds: null, |
| 183 | 186 | pendingCall: null, |
| 184 | 187 | } |
| 185 | 188 | case P.type: |
| 186 | 189 | return { ...e, incomingCall: l } |
| 187 | case E.type: | |
| 190 | case B.type: | |
| 188 | 191 | return { ...e, incomingCall: null } |
| 189 | 192 | case A.type: |
| 190 | 193 | return { ...e, pendingCall: l } |
| 191 | case B.type: | |
| 194 | case f.type: | |
| 192 | 195 | return { ...e, dmCallsV2Enabled: !!l } |
| 193 | 196 | default: { |
| 194 | const t = s(e[n], r) | |
| 195 | return e[n] === t ? e : { ...e, [n]: t } | |
| 197 | const t = s(e[a], r) | |
| 198 | return e[a] === t ? e : { ...e, [a]: t } | |
| 196 | 199 | } |
| 197 | 200 | } |
| 198 | 201 | } |
| 199 | 202 | export const isCallReady = (e) => e !== t.DISABLED && e !== t.LOADING |
| 200 | 203 | export const isCallSettingsMode = (e) => e === t.SETTINGS |
| 201 | 204 | export const isCallJoinedMode = (e) => e === t.JOINING || e === t.JOINED |
| 202 | export const getCallState = (e) => e[a] | |
| 203 | export const getCallId = (e) => e[a].callId | |
| 204 | export const getCallMyMemberId = (e) => e[a].memberId | |
| 205 | export const getCallStatus = (e) => e[a].status | |
| 205 | export const getCallState = (e) => e[n] | |
| 206 | export const getCallId = (e) => e[n].callId | |
| 207 | export const getCallMyMemberId = (e) => e[n].memberId | |
| 208 | export const getCallStatus = (e) => e[n].status | |
| 206 | 209 | export const getCallShowConfirmLeave = (e) => getCallState(e).showConfirmLeave |
| 207 | 210 | export const getCallShowAutoEndPopup = (e) => getCallState(e).showAutoEndPopup |
| 208 | 211 | export const getCallAutoEndCountdown = (e) => getCallState(e).autoEndCountdown |
| … | … | @@ -222,6 +225,8 @@ export const getIsActiveCallMember = (e) => (t) => { |
| 222 | 225 | const r = getActiveCallMemberIds(t) |
| 223 | 226 | return null !== r && r.includes(e) |
| 224 | 227 | } |
| 228 | export const makeGetIsActiveCallMember = (t) => | |
| 229 | e([getActiveCallMemberIds], (e) => null !== e && e.includes(t)) | |
| 225 | 230 | export const getCallTopSortedPresences = (e) => getCallState(e).presencesSortedByActivity |
| 226 | 231 | export const getCallUnknownPresenceIds = e(getCallUnknownPresenceState, (e) => Object.keys(e)) |
| 227 | 232 | export const getCallIncomingCall = (e) => getCallState(e).incomingCall |
| … | … | @@ -235,46 +240,48 @@ export const getCallPresenceIds = e( |
| 235 | 240 | ) |
| 236 | 241 | export const getCallPresenceCount = (e) => getCallPresenceIds(e).length |
| 237 | 242 | export const getIsPresenceUnknown = (e) => (t) => -1 !== getCallUnknownPresenceIds(t)?.indexOf(e) |
| 243 | export const makeGetIsPresenceUnknown = (t) => | |
| 244 | e([getCallUnknownPresenceIds], (e) => -1 !== e?.indexOf(t)) | |
| 238 | 245 | export const getCallPresenceSwarmByMemberIds = (e) => getCallState(e).presenceSwarmByMemberId |
| 239 | 246 | export const getCallRemoteMediaById = (e) => (t) => { |
| 240 | 247 | const { mediaBySwarmId: r } = getCallState(t) |
| 241 | 248 | if (r[e]) return r[e] |
| 242 | const a = getCallPresenceSwarmByMemberIds(t)[e] | |
| 243 | return a ? r[a] : void 0 | |
| 249 | const n = getCallPresenceSwarmByMemberIds(t)[e] | |
| 250 | return n ? r[n] : void 0 | |
| 244 | 251 | } |
| 245 | 252 | export const getCallPresenceById = (e) => (t) => { |
| 246 | 253 | const { presenceBySwarmId: r } = getCallState(t) |
| 247 | 254 | if (r[e]) return r[e] |
| 248 | const a = getCallPresenceSwarmByMemberIds(t)[e] | |
| 249 | return a ? r[a] : void 0 | |
| 255 | const n = getCallPresenceSwarmByMemberIds(t)[e] | |
| 256 | return n ? r[n] : void 0 | |
| 250 | 257 | } |
| 251 | 258 | export const getCallIsOngoing = e( |
| 252 | 259 | getCallState, |
| 253 | 260 | getCallUnknownPresenceIds, |
| 254 | ({ status: e, presenceMemberIds: t, activeCallMemberIds: r }, a) => | |
| 255 | isCallJoinedMode(e) || t.length + a.length > 0 || (null !== r && r.length > 0), | |
| 261 | ({ status: e, presenceMemberIds: t, activeCallMemberIds: r }, n) => | |
| 262 | isCallJoinedMode(e) || t.length + n.length > 0 || (null !== r && r.length > 0), | |
| 256 | 263 | ) |
| 257 | 264 | export const getCallPeersCount = (e, t) => getCallState(e).peersCounter?.[t]?.length || 0 |
| 258 | export const getCallPeerSwarmIds = (e) => (t) => getCallState(t).peersCounter?.[e] || Q | |
| 265 | export const getCallPeerSwarmIds = (e) => (t) => getCallState(t).peersCounter?.[e] || W | |
| 259 | 266 | export const makeCallMemberIdsByRoomId = (t, r) => { |
| 260 | const a = new Map() | |
| 261 | let n = [] | |
| 267 | const n = new Map() | |
| 268 | let a = [] | |
| 262 | 269 | return e(getCallPeerSwarmIds(t), q(t), (e, { bySwarmId: t, byMemberId: l }) => { |
| 263 | a.clear() | |
| 264 | for (let n = 0; n < e.length && a.size < r; n += 1) { | |
| 265 | const r = t[e[n]]?.memberId | |
| 266 | r ? a.set(r, !0) : l[e[n]] && a.set(e[n], !0) | |
| 270 | n.clear() | |
| 271 | for (let a = 0; a < e.length && n.size < r; a += 1) { | |
| 272 | const r = t[e[a]]?.memberId | |
| 273 | r ? n.set(r, !0) : l[e[a]] && n.set(e[a], !0) | |
| 267 | 274 | } |
| 268 | return ((a.size !== n.length || n.some((e) => !a.has(e))) && (n = Array.from(a.keys())), n) | |
| 275 | return ((n.size !== a.length || a.some((e) => !n.has(e))) && (a = Array.from(n.keys())), a) | |
| 269 | 276 | }) |
| 270 | 277 | } |
| 271 | 278 | export const getCallPresenceStreamName = (e, t) => (r) => { |
| 272 | const a = getCallState(r).presenceBySwarmId[e] | |
| 273 | return a && a.streamByName | |
| 274 | ? Object.keys(a.streamByName).reduce((e, r) => { | |
| 279 | const n = getCallState(r).presenceBySwarmId[e] | |
| 280 | return n && n.streamByName | |
| 281 | ? Object.keys(n.streamByName).reduce((e, r) => { | |
| 275 | 282 | if (e) return e |
| 276 | const n = a.streamByName[r] | |
| 277 | return n?.streamId === t ? r : "" | |
| 283 | const a = n.streamByName[r] | |
| 284 | return a?.streamId === t ? r : "" | |
| 278 | 285 | }, "") |
| 279 | 286 | : "" |
| 280 | 287 | } |
| … | … | @@ -284,16 +291,16 @@ export const getScreenStreams = e( |
| 284 | 291 | getCallMediaState, |
| 285 | 292 | getCallMyMemberId, |
| 286 | 293 | o, |
| 287 | (e, t, a, n, l) => { | |
| 294 | (e, t, n, a, l) => { | |
| 288 | 295 | const s = [] |
| 289 | 296 | return ( |
| 290 | n && l && s.push({ streamId: l, memberId: n, isLocal: !0 }), | |
| 297 | a && l && s.push({ streamId: l, memberId: a, isLocal: !0 }), | |
| 291 | 298 | e.forEach((e) => { |
| 292 | const n = t[e], | |
| 293 | l = a[e], | |
| 294 | o = !!n.streamByName?.[r.SCREEN], | |
| 299 | const a = t[e], | |
| 300 | l = n[e], | |
| 301 | o = !!a.streamByName?.[r.SCREEN], | |
| 295 | 302 | c = l && l.streamByName?.[r.SCREEN]?.id |
| 296 | o && s.push({ streamId: c, memberId: n.memberId, swarmId: e }) | |
| 303 | o && s.push({ streamId: c, memberId: a.memberId, swarmId: e }) | |
| 297 | 304 | }), |
| 298 | 305 | s |
| 299 | 306 | ) |
| … | … | @@ -301,14 +308,25 @@ export const getScreenStreams = e( |
| 301 | 308 | ) |
| 302 | 309 | export const getScreenSharingDisabled = e(getScreenStreams, (e) => !!e.find((e) => !e.isLocal)) |
| 303 | 310 | export const getHasScreenSharingStreams = (e) => getScreenStreams(e).length > 0 |
| 304 | export const getActivePresences = e([getCallTopSortedPresences, getActiveCallMemberIds], (e, t) => { | |
| 305 | const r = t || [] | |
| 306 | return e.length > 0 ? e : r.map(Y) | |
| 307 | }) | |
| 311 | export const getActivePresences = e( | |
| 312 | [getCallTopSortedPresences, getActiveCallMemberIds, getCallPresenceSwarmByMemberIds], | |
| 313 | (e, t, r) => (t?.length ? Y(e, t, r) : W), | |
| 314 | ) | |
| 315 | export const getIsPresenceOffline = (e) => (t) => { | |
| 316 | if (!e) return !1 | |
| 317 | const { streamByName: r } = getCallState(t).mediaBySwarmId?.[e] || {} | |
| 318 | return !Q(t).includes(e) || !(r?.camera || r?.screen) | |
| 319 | } | |
| 320 | const X = (e) => (t) => getCallState(t).mediaBySwarmId[e]?.streamByName | |
| 321 | export const makeGetIsPresenceOffline = (t) => | |
| 322 | e([X(t), Q], (e, r) => !(!t || ((e?.camera || e?.screen) && r.includes(t)))) | |
| 323 | export const getHasCallMemberConnected = (e) => (t) => !!getCallState(t).connectedMemberIds?.[e] | |
| 324 | const Z = (e) => getCallState(e).connectedMemberIds | |
| 325 | export const makeGetHasCallMemberConnected = (t) => e([Z], (e) => !!e?.[t]) | |
| 308 | 326 | export const makeGetPositionPreservedActiveSwarmIds = () => { |
| 309 | 327 | let t = [] |
| 310 | 328 | return e([getActivePresences, (e, t) => t], (e, r) => { |
| 311 | const a = e.slice(0, r) | |
| 312 | return ((t = K(t, a)), t) | |
| 329 | const n = e.slice(0, r) | |
| 330 | return ((t = K(t, n)), t) | |
| 313 | 331 | }) |
| 314 | 332 | } |
| … | … | @@ -24,13 +24,13 @@ export const getNextPositionPreservedList = (e, t) => { |
| 24 | 24 | const r = [], |
| 25 | 25 | s = [], |
| 26 | 26 | c = e.length === t.length |
| 27 | let o = c | |
| 27 | let n = c | |
| 28 | 28 | return ( |
| 29 | 29 | e.forEach((e, c) => { |
| 30 | const i = t.findIndex((t) => t.swarmId === e.swarmId) | |
| 31 | i > -1 ? (s.push(e), t.splice(i, 1)) : ((o = !1), s.push(void 0), r.push(c)) | |
| 30 | const o = t.findIndex((t) => t.swarmId === e.swarmId) | |
| 31 | o > -1 ? (s.push(e), t.splice(o, 1)) : ((n = !1), s.push(void 0), r.push(c)) | |
| 32 | 32 | }), |
| 33 | o | |
| 33 | n | |
| 34 | 34 | ? e |
| 35 | 35 | : (r.forEach((e) => { |
| 36 | 36 | s[e] = t.pop() |
| … | … | @@ -42,17 +42,24 @@ export const getMyDeviceId = (e) => e?.self?.deviceId || null |
| 42 | 42 | export const isDeviceInCall = (e, t) => |
| 43 | 43 | e?.members?.some((e) => e.devices?.some((e) => e.deviceId === t)) || !1 |
| 44 | 44 | export const createEmptyPresenceEntry = (e) => ({ swarmId: e, activityScore: 0 }) |
| 45 | export const mergeActivePresences = (e, t, r) => { | |
| 46 | const s = t.map((e) => r[e] || e), | |
| 47 | c = new Set(s), | |
| 48 | n = e.filter((e) => c.has(e.swarmId)), | |
| 49 | o = new Set(n.map((e) => e.swarmId)) | |
| 50 | return [...n, ...s.filter((e) => !o.has(e)).map(createEmptyPresenceEntry)] | |
| 51 | } | |
| 45 | 52 | export const calcActivityScore = (e, t) => (!1 !== e ? 0 : 1) + (!1 !== t ? 0 : 0.5) |
| 46 | 53 | export const updatePresencesSortedByActivity = (e, t, r, s) => { |
| 47 | 54 | const c = calcActivityScore(r, s), |
| 48 | o = [...e.presencesSortedByActivity], | |
| 49 | i = o.find((e) => e.swarmId === t) | |
| 50 | if (i && i.activityScore === c) return e.presencesSortedByActivity | |
| 51 | const n = { swarmId: t, activityScore: c }, | |
| 52 | d = o.findIndex((e) => e.swarmId === n.swarmId) | |
| 53 | ;-1 !== d && o.splice(d, 1) | |
| 54 | let m = o.findIndex((e) => e.activityScore <= n.activityScore) | |
| 55 | return (-1 === m && (m = o.length), o.splice(m, 0, n), o) | |
| 55 | n = [...e.presencesSortedByActivity], | |
| 56 | o = n.find((e) => e.swarmId === t) | |
| 57 | if (o && o.activityScore === c) return e.presencesSortedByActivity | |
| 58 | const i = { swarmId: t, activityScore: c }, | |
| 59 | d = n.findIndex((e) => e.swarmId === i.swarmId) | |
| 60 | ;-1 !== d && n.splice(d, 1) | |
| 61 | let m = n.findIndex((e) => e.activityScore <= i.activityScore) | |
| 62 | return (-1 === m && (m = n.length), n.splice(m, 0, i), n) | |
| 56 | 63 | } |
| 57 | 64 | export const removeFromPresencesSortedByActivity = (e, t) => { |
| 58 | 65 | const r = e.presencesSortedByActivity.filter((e) => e.swarmId !== t) |
| … | … | @@ -40,23 +40,19 @@ export const CHAT_PENDING_FILE_SEND_MIN_DELAY = 500 |
| 40 | 40 | export const CHAT_SEARCH_INPUT_THROTTLE = 250 |
| 41 | 41 | export const CHAT_SEARCH_FIRST_FOUND_DELAY = 1e3 |
| 42 | 42 | export const CHAT_SEARCH_RESULT_NO_JUMP_COUNT = 25 |
| 43 | export const MESSAGE_CATEGORIES = { | |
| 44 | BLOCKED_USER_MSG: "blockedUserMsgCategory", | |
| 45 | HIDDEN: "hiddenCategory", | |
| 43 | export const MESSAGE_CATEGORY = { | |
| 46 | 44 | JOINED: "joined", |
| 45 | CALL_STARTED: "callStarted", | |
| 46 | ROOM_AVATAR_CHANGED: "roomAvatarChanged", | |
| 47 | INVITATION_CREATED: "invitationCreated", | |
| 47 | 48 | LEFT: "left", |
| 48 | MEMBER_REMOVED: "memberRemovedCategory", | |
| 49 | ROOM_TITLE_CHANGED: "roomTitleChanged", | |
| 50 | MEMBER_REMOVED: "memberRemoved", | |
| 51 | CALL_HANGUP: "callHangup", | |
| 52 | CALL_MISSED: "callMissed", | |
| 53 | LOCATION_SHARED: "locationShared", | |
| 49 | 54 | NO_CATEGORY: "", |
| 50 | 55 | } |
| 51 | export const MESSAGE_TYPE_GROUPING_MAP = { | |
| 52 | [CHAT_MESSAGE_TYPE.JOINED]: !0, | |
| 53 | [CHAT_MESSAGE_TYPE.CALL_STARTED]: !1, | |
| 54 | [CHAT_MESSAGE_TYPE.ROOM_AVATAR_CHANGED]: !1, | |
| 55 | [CHAT_MESSAGE_TYPE.INVITATION_CREATED]: !1, | |
| 56 | [CHAT_MESSAGE_TYPE.LEFT]: !0, | |
| 57 | [CHAT_MESSAGE_TYPE.ROOM_TITLE_CHANGED]: !1, | |
| 58 | [CHAT_MESSAGE_TYPE.MEMBER_REMOVED]: !0, | |
| 59 | } | |
| 60 | 56 | export const CHAT_WORKER = { INITIAL: "initial", TOP: "top", BOTTOM: "bottom", SUB: "sub" } |
| 61 | 57 | export const CHAT_MESSAGE_FORMAT = { MARKDOWN: "MARKDOWN", DISPLAY: "DISPLAY" } |
| 62 | 58 | export const PEAR_LINK_PREVIEW_IMAGE_FECTH_TIMEOUT = 1e3 |
| … | … | @@ -5,12 +5,13 @@ import { LAST_MESSAGE_STATE_KEY as t, lastMessageReducer as e } from "./last-mes |
| 5 | 5 | import { REPLY_MESSAGE_STATE_KEY as i, replyMessageReducer as f } from "./reply-message" |
| 6 | 6 | import { PIN_MESSAGE_STATE_KEY as p, pinMessageReducer as s } from "./pin-message" |
| 7 | 7 | import { DRAFT_MESSAGE_STATE_KEY as a, draftMessageReducer as c } from "./draft-message" |
| 8 | import { CHAT_REACTION_STATE_KEY as n, chatReactionReducer as d } from "./reaction" | |
| 9 | import { chatListViewReducer as l, chatListViewMessageReducer as u } from "./list-view" | |
| 8 | import { CHAT_REACTION_STATE_KEY as n, chatReactionReducer as u } from "./reaction" | |
| 9 | import { chatListViewReducer as d, chatListViewMessageReducer as l } from "./list-view" | |
| 10 | 10 | import { CHAT_SEARCH_STATE_KEY as g, chatSearchReducer as h } from "./search" |
| 11 | 11 | import { chatUnreadReducer as R } from "./unread" |
| 12 | 12 | import { reduceReducers as b } from "../lib/reducer" |
| 13 | 13 | import { CHAT_FILE_UPLOAD_STATE_KEY as x, chatFileUploadReducer as v } from "./file" |
| 14 | const w = m(o) | |
| 15 | export const fnReducer = r({ [t]: e, [i]: f, [p]: s, [a]: c, [n]: d, [g]: h, [x]: v }) | |
| 16 | export const chatReducer = b(o, [w, fnReducer, u, R, l]) | |
| 14 | import { CHAT_INPUT_STATE_KEY as w, chatInputReducer as y } from "./input" | |
| 15 | const j = m(o) | |
| 16 | export const fnReducer = r({ [t]: e, [i]: f, [p]: s, [a]: c, [n]: u, [g]: h, [x]: v, [w]: y }) | |
| 17 | export const chatReducer = b(o, [j, fnReducer, l, R, d]) |
| … | … | @@ -5,8 +5,8 @@ import { |
| 5 | 5 | fork as i, |
| 6 | 6 | select as r, |
| 7 | 7 | takeLatest as d, |
| 8 | getContext as a, | |
| 9 | delay as l, | |
| 8 | getContext as l, | |
| 9 | delay as a, | |
| 10 | 10 | takeLeading as s, |
| 11 | 11 | } from "redux-saga/effects" |
| 12 | 12 | import { FEATURES as m, isFeatureSupported as n } from "@holepunchto/keet-core/features" |
| … | … | @@ -65,8 +65,8 @@ import { chatPinMessagesSaga as ie } from "./pin-message" |
| 65 | 65 | import { CHAT_MESSAGE_MAX_LENGTH as re } from "./chat.constant" |
| 66 | 66 | import { draftMessageSaga as de } from "./draft-message" |
| 67 | 67 | import { |
| 68 | chatReactionSaga as ae, | |
| 69 | chatMessageReportHandler as le, | |
| 68 | chatReactionSaga as le, | |
| 69 | chatMessageReportHandler as ae, | |
| 70 | 70 | reportChatMessage as se, |
| 71 | 71 | reportChatMember as me, |
| 72 | 72 | chatMemberReportHandler as ne, |
| … | … | @@ -89,8 +89,9 @@ import { |
| 89 | 89 | getRoomIsAttachmentsDisabled as De, |
| 90 | 90 | getRoomIsLinksDisabled as Ee, |
| 91 | 91 | } from "../room/room.selector" |
| 92 | const _e = [c.UNKNOWN_ROOM_COMMAND, c.INVALID_ROOM_COMMAND_ARGUMENTS], | |
| 93 | be = { | |
| 92 | import { setChatInputIsClearRequested as _e, setChatInputIsProcessing as be } from "./input" | |
| 93 | const ve = [c.UNKNOWN_ROOM_COMMAND, c.INVALID_ROOM_COMMAND_ARGUMENTS], | |
| 94 | Be = { | |
| 94 | 95 | [y.BOLD]: "bold", |
| 95 | 96 | [y.ITALIC]: "italic", |
| 96 | 97 | [y.STRIKE_THROUGH]: "strike", |
| … | … | @@ -101,29 +102,29 @@ const _e = [c.UNKNOWN_ROOM_COMMAND, c.INVALID_ROOM_COMMAND_ARGUMENTS], |
| 101 | 102 | [y.HTTP_LINK]: "httpLinks", |
| 102 | 103 | [y.PEAR_LINK]: "pearLinks", |
| 103 | 104 | } |
| 104 | function* ve(e, o, t, i) { | |
| 105 | function* qe(e, o, t, i) { | |
| 105 | 106 | const r = (o || []).filter((o) => f(e, o.type)) |
| 106 | 107 | yield Me(r, i) |
| 107 | 108 | const d = r.reduce((e, o) => { |
| 108 | 109 | const { type: t, ...i } = o, |
| 109 | r = be[t] | |
| 110 | r = Be[t] | |
| 110 | 111 | return ((e[r] = e[r] || []), e[r].push(i), e) |
| 111 | 112 | }, {}) |
| 112 | 113 | return (t && n(e, m.REPLY_TO) && (d.replyTo = t), g(d) ? void 0 : d) |
| 113 | 114 | } |
| 114 | let Be = [] | |
| 115 | let xe = [] | |
| 115 | 116 | export function* rateLimitSaga() { |
| 116 | 117 | const e = yield r(L), |
| 117 | 118 | o = yield r(K) |
| 118 | 119 | if (e || o) return |
| 119 | Be.push(Date.now()) | |
| 120 | xe.push(Date.now()) | |
| 120 | 121 | const { msgRateLimit: i, msgRateLimitInterval: d } = yield r(E) |
| 121 | if (Be.length < i) return | |
| 122 | Be = Be.slice(-i) | |
| 123 | const a = h(Be) + d - Date.now() | |
| 124 | if (!(a <= 0)) | |
| 122 | if (xe.length < i) return | |
| 123 | xe = xe.slice(-i) | |
| 124 | const l = h(xe) + d - Date.now() | |
| 125 | if (!(l <= 0)) | |
| 125 | 126 | try { |
| 126 | ;(yield t(G(!0)), yield l(a)) | |
| 127 | ;(yield t(G(!0)), yield a(l)) | |
| 127 | 128 | } finally { |
| 128 | 129 | yield t(G(!1)) |
| 129 | 130 | } |
| … | … | @@ -142,22 +143,23 @@ export function* chatAddMessageHandler({ |
| 142 | 143 | roomVersion: o, |
| 143 | 144 | text: i, |
| 144 | 145 | files: d, |
| 145 | display: a, | |
| 146 | replyTo: l, | |
| 146 | display: l, | |
| 147 | replyTo: a, | |
| 147 | 148 | previewByLink: s, |
| 148 | 149 | locationShared: c, |
| 149 | 150 | }) { |
| 150 | 151 | if (yield r(K)) return |
| 151 | 152 | const f = u() |
| 152 | 153 | try { |
| 153 | if (i && i.length > re) return void (yield t(C({ message: "Message is too big" }))) | |
| 154 | if ((yield t(be(!0)), i && i.length > re)) | |
| 155 | return void (yield t(C({ message: "Message is too big" }))) | |
| 154 | 156 | let p |
| 155 | l && (p = yield r(v, l)) | |
| 157 | a && (p = yield r(v, a)) | |
| 156 | 158 | const I = yield r(De(e)), |
| 157 | 159 | g = yield r(Ee(e)), |
| 158 | h = g ? a?.filter((e) => ![y.HTTP_LINK, y.PEAR_LINK].includes(e.type)) : a, | |
| 160 | h = g ? l?.filter((e) => ![y.HTTP_LINK, y.PEAR_LINK].includes(e.type)) : l, | |
| 159 | 161 | u = I || g ? {} : s, |
| 160 | L = yield ve(o, h, p?.coreId, u), | |
| 162 | L = yield qe(o, h, p?.coreId, u), | |
| 161 | 163 | M = n(o, m.MULTI_FILES), |
| 162 | 164 | N = n(o, m.LOCATION_SHARED_EVENT), |
| 163 | 165 | O = yield r((o) => Te(o, e)) |
| … | … | @@ -168,11 +170,14 @@ export function* chatAddMessageHandler({ |
| 168 | 170 | (yield S(f.addChatMessage, e, i, L), yield t(pe({ roomId: e }))), |
| 169 | 171 | d?.length > 0 && !I && (yield t(Le({ files: d, text: i, opts: L, isMultiFileSupported: M }))), |
| 170 | 172 | yield ke(O), |
| 171 | yield rateLimitSaga()) | |
| 173 | yield rateLimitSaga(), | |
| 174 | yield t(_e(!0))) | |
| 172 | 175 | } catch (e) { |
| 173 | _e.includes(e.message) | |
| 176 | ve.includes(e.message) | |
| 174 | 177 | ? yield t(C({ message: e.message })) |
| 175 | 178 | : yield M("sendChatMessageSubmit", e) |
| 179 | } finally { | |
| 180 | yield t(be(!1)) | |
| 176 | 181 | } |
| 177 | 182 | } |
| 178 | 183 | export function* chatUpdateMessageHandler({ |
| … | … | @@ -180,8 +185,8 @@ export function* chatUpdateMessageHandler({ |
| 180 | 185 | roomVersion: o, |
| 181 | 186 | messageId: i, |
| 182 | 187 | text: d, |
| 183 | display: a, | |
| 184 | previewByLink: l, | |
| 188 | display: l, | |
| 189 | previewByLink: a, | |
| 185 | 190 | }) { |
| 186 | 191 | const s = u() |
| 187 | 192 | try { |
| … | … | @@ -192,7 +197,7 @@ export function* chatUpdateMessageHandler({ |
| 192 | 197 | const e = yield r(v, t.replyTo) |
| 193 | 198 | m = e ? e?.coreId : null |
| 194 | 199 | } |
| 195 | const n = yield ve(o, a, m, l) | |
| 200 | const n = yield qe(o, l, m, a) | |
| 196 | 201 | yield S(s.updateChatMessage, e, t.coreId, d, n) |
| 197 | 202 | } |
| 198 | 203 | yield t(R()) |
| … | … | @@ -205,11 +210,11 @@ export function* chatGetInitialData({ roomId: e, messageId: o }) { |
| 205 | 210 | let i, |
| 206 | 211 | r = null |
| 207 | 212 | if (o) { |
| 208 | const { deviceId: d, seq: a } = fe(o), | |
| 209 | l = yield S(t.getChatMessageById, e, { deviceId: d, seq: a }) | |
| 210 | l && Number.isInteger(l.seq) | |
| 211 | ? ((i = l.seq), (r = W({ messageId: o, seq: i }))) | |
| 212 | : yield M("chatGetInitialData", `anchor: invalid data: ${JSON.stringify(l)}`) | |
| 213 | const { deviceId: d, seq: l } = fe(o), | |
| 214 | a = yield S(t.getChatMessageById, e, { deviceId: d, seq: l }) | |
| 215 | a && Number.isInteger(a.seq) | |
| 216 | ? ((i = a.seq), (r = W({ messageId: o, seq: i }))) | |
| 217 | : yield M("chatGetInitialData", `anchor: invalid data: ${JSON.stringify(a)}`) | |
| 213 | 218 | } |
| 214 | 219 | const d = yield Se({ roomId: e }) |
| 215 | 220 | return ((i = i ?? d), { lastSeenSeq: d, startSeq: i, anchor: r }) |
| … | … | @@ -217,7 +222,7 @@ export function* chatGetInitialData({ roomId: e, messageId: o }) { |
| 217 | 222 | export function* chatSaga( |
| 218 | 223 | { |
| 219 | 224 | roomId: r, |
| 220 | ignoreBlocked: l = !1, | |
| 225 | ignoreBlocked: a = !1, | |
| 221 | 226 | filterNames: m, |
| 222 | 227 | messageId: n, |
| 223 | 228 | fileStatsChannel: c, |
| … | … | @@ -228,16 +233,16 @@ export function* chatSaga( |
| 228 | 233 | try { |
| 229 | 234 | const g = yield o(e) |
| 230 | 235 | ;(yield i(te, r, g), |
| 231 | yield i(F, { roomId: r, ignoreBlocked: l, coreEventChannel: g }), | |
| 236 | yield i(F, { roomId: r, ignoreBlocked: a, coreEventChannel: g }), | |
| 232 | 237 | yield i(V, r), |
| 233 | 238 | yield d([ge, Ie], ue, { roomId: r }), |
| 234 | 239 | yield i(Z), |
| 235 | 240 | yield i(U, { roomId: r }), |
| 236 | yield i(q, { roomId: r, ignoreBlocked: l }), | |
| 241 | yield i(q, { roomId: r, ignoreBlocked: a }), | |
| 237 | 242 | yield i(Ce, { roomId: r, fileStatsChannel: c }), |
| 238 | 243 | yield i(P, { roomId: r }), |
| 239 | yield i(ae, { roomId: r }), | |
| 240 | yield i(ie, { roomId: r, ignoreBlocked: l })) | |
| 244 | yield i(le, { roomId: r }), | |
| 245 | yield i(ie, { roomId: r, ignoreBlocked: a })) | |
| 241 | 246 | const { |
| 242 | 247 | lastSeenSeq: h, |
| 243 | 248 | startSeq: S, |
| … | … | @@ -246,7 +251,7 @@ export function* chatSaga( |
| 246 | 251 | yield t(k({ ...f, roomId: r, lastSeenSeq: h, startSeq: S, anchor: L, filterNames: m })) |
| 247 | 252 | const M = yield z({ roomId: r, coreEventChannel: g }) |
| 248 | 253 | ;(yield Ne({ roomId: r }), M && (yield Q()), yield d(j, X), yield d([J, pe], Y, r)) |
| 249 | const { isDesktop: C } = yield a(_) | |
| 254 | const { isDesktop: C } = yield l(_) | |
| 250 | 255 | ;(C && (yield d(H, $)), |
| 251 | 256 | yield d([O, T], N, r), |
| 252 | 257 | yield s(w, function* (e) { |
| … | … | @@ -254,11 +259,11 @@ export function* chatSaga( |
| 254 | 259 | yield chatDeleteMessageHandler(r, o) |
| 255 | 260 | }), |
| 256 | 261 | yield i(x, { roomId: r }), |
| 257 | yield i(B, { roomId: r, ignoreBlocked: l, fileStatsChannel: c }), | |
| 258 | yield i(de, { roomId: r, ignoreBlocked: l }), | |
| 262 | yield i(B, { roomId: r, ignoreBlocked: a, fileStatsChannel: c }), | |
| 263 | yield i(de, { roomId: r, ignoreBlocked: a }), | |
| 259 | 264 | yield i(ee), |
| 260 | 265 | yield d(ce, ye, { roomId: r }), |
| 261 | yield d(se, le, { roomId: r, useLabelsFeature: y }), | |
| 266 | yield d(se, ae, { roomId: r, useLabelsFeature: y }), | |
| 262 | 267 | yield d(me, ne, { roomId: r }), |
| 263 | 268 | yield I([u().subscribeChatLength, r, { reorders: !0 }], oe), |
| 264 | 269 | yield i(he, { roomId: r, autoscroll: !1 }), |
| … | … | @@ -35,6 +35,7 @@ export const INITIAL_STATE = { |
| 35 | 35 | isMessagePinnedMap: {}, |
| 36 | 36 | }, |
| 37 | 37 | reaction: { byId: {} }, |
| 38 | input: { isClearRequested: !1, isProcessing: !1 }, | |
| 38 | 39 | editingMessageId: "", |
| 39 | 40 | selectedMessageId: "", |
| 40 | 41 | sendLimited: !1, |
| … | … | @@ -12,6 +12,7 @@ export * from "./draft-message" |
| 12 | 12 | export * from "./list-view" |
| 13 | 13 | export * from "./reaction" |
| 14 | 14 | export * from "./search" |
| 15 | export * from "./input" | |
| 15 | 16 | export * from "./unread" |
| 16 | 17 | export * from "./file" |
| 17 | 18 | export * from "./loader" |
| … | … | @@ -0,0 +1,3 @@ |
| 1 | import { createAction as t } from "@reduxjs/toolkit" | |
| 2 | export const setChatInputIsClearRequested = t("chat/set-input-clear-requested") | |
| 3 | export const setChatInputIsProcessing = t("chat/set-input-is-processing") |
| … | … | @@ -0,0 +1 @@ |
| 1 | export const CHAT_INPUT_STATE_KEY = "input" |
| … | … | @@ -0,0 +1,14 @@ |
| 1 | import { | |
| 2 | setChatInputIsClearRequested as e, | |
| 3 | setChatInputIsProcessing as t, | |
| 4 | } from "./chat-input.action" | |
| 5 | export const chatInputReducer = (r, a) => { | |
| 6 | switch (a.type) { | |
| 7 | case e.type: | |
| 8 | return { ...r, isClearRequested: a.payload } | |
| 9 | case t.type: | |
| 10 | return { ...r, isProcessing: a.payload } | |
| 11 | default: | |
| 12 | return r | |
| 13 | } | |
| 14 | } |
| … | … | @@ -0,0 +1,5 @@ |
| 1 | import { CHAT_STATE_KEY as t } from "../chat.constant" | |
| 2 | import { CHAT_INPUT_STATE_KEY as e } from "./chat-input.constant" | |
| 3 | export const getChatInputState = (n) => n[t][e] | |
| 4 | export const getChatInputIsProcessing = (t) => getChatInputState(t).isProcessing | |
| 5 | export const getChatInputIsClearRequested = (t) => getChatInputState(t).isClearRequested |
| … | … | @@ -0,0 +1,4 @@ |
| 1 | export * from "./chat-input.selector" | |
| 2 | export * from "./chat-input.action" | |
| 3 | export * from "./chat-input.reducer" | |
| 4 | export * from "./chat-input.constant" |
| … | … | @@ -103,7 +103,7 @@ export const getChatMeJoinedOnly = (e) => { |
| 103 | 103 | const a = t[e] |
| 104 | 104 | if (!a.local) return !1 |
| 105 | 105 | const o = a.event?.type |
| 106 | if ((o !== s.JOINED || a.groupCount) && o !== s.ROOM_AVATAR_CHANGED) return !1 | |
| 106 | if (!((o === s.JOINED && (a.groupCount || 0) < 2) || o === s.ROOM_AVATAR_CHANGED)) return !1 | |
| 107 | 107 | } |
| 108 | 108 | return !0 |
| 109 | 109 | } |
| … | … | @@ -14,8 +14,8 @@ import { |
| 14 | 14 | setChatListViewStartSeenSeq as m, |
| 15 | 15 | } from "./list-view.action" |
| 16 | 16 | import { |
| 17 | VIEW_MODE as V, | |
| 18 | ANCHOR_STATUS as d, | |
| 17 | VIEW_MODE as d, | |
| 18 | ANCHOR_STATUS as V, | |
| 19 | 19 | CHAT_LIST_VIEW_CONFIG as p, |
| 20 | 20 | CHAT_LIST_VIEW_STATE_KEY as E, |
| 21 | 21 | ANCHOR_LOADED_RETRY_COUNT as S, |
| … | … | @@ -56,41 +56,41 @@ export const chatListViewInViewReducer = (e, { payload: s }) => { |
| 56 | 56 | if (!Number.isInteger(w) || !Number.isInteger(m)) return e |
| 57 | 57 | if (c.top === w && c.bottom === m) |
| 58 | 58 | return l && R(l.status) && y(c, l, o) |
| 59 | ? { ...e, listView: { ...e.listView, anchor: { ...l, status: d.RENDERED } } } | |
| 59 | ? { ...e, listView: { ...e.listView, anchor: { ...l, status: V.RENDERED } } } | |
| 60 | 60 | : e |
| 61 | 61 | const p = { top: w, bottom: m } |
| 62 | 62 | let E = l |
| 63 | l && R(l.status) && y(p, l, o) && (E = { ...l, status: d.RENDERED }) | |
| 63 | l && R(l.status) && y(p, l, o) && (E = { ...l, status: V.RENDERED }) | |
| 64 | 64 | let S = u |
| 65 | if (g(u) && c.bottom !== m && (!E || E.status === d.RENDERED)) { | |
| 66 | const t = ("down" == (c.bottom - m > 0 ? "up" : "down") || m === a.bottom) && u === V.LATEST | |
| 67 | S = m + 1 >= o || t ? V.LATEST : V.HISTORY | |
| 65 | if (g(u) && c.bottom !== m && (!E || E.status === V.RENDERED)) { | |
| 66 | const t = ("down" == (c.bottom - m > 0 ? "up" : "down") || m === a.bottom) && u === d.LATEST | |
| 67 | S = m + 1 >= o || t ? d.LATEST : d.HISTORY | |
| 68 | 68 | } |
| 69 | 69 | return { ...e, listView: { ...e.listView, inView: p, anchor: E, mode: S } } |
| 70 | 70 | } |
| 71 | 71 | export const chatListViewReducer = (t, i) => { |
| 72 | 72 | switch (i.type) { |
| 73 | 73 | case n.type: { |
| 74 | const e = i.payload | |
| 75 | if (e) return { ...t, listView: { ...t.listView, paused: e, anchor: null } } | |
| 76 | 74 | const { |
| 77 | message: s, | |
| 78 | listView: { inView: o, lastSeenSeq: n }, | |
| 75 | message: e, | |
| 76 | listView: { mode: s, inView: o, lastSeenSeq: n }, | |
| 79 | 77 | } = t, |
| 80 | { count: r, ids: a } = s, | |
| 81 | c = f({ lastSeenSeq: n, count: r }), | |
| 82 | l = findMessageBySeq(t, n), | |
| 83 | u = l && b({ startSeq: c, count: r }), | |
| 84 | w = u | |
| 85 | ? h({ messageId: l.id, seq: c, status: o.bottom === c ? d.RENDERED : d.LOADED }) | |
| 86 | : D({ status: o.bottom === r - 1 ? d.RENDERED : d.LOADED, messageId: a[0] }) | |
| 78 | r = i.payload | |
| 79 | if (r || !g(s)) return { ...t, listView: { ...t.listView, paused: r, anchor: null } } | |
| 80 | const { count: a, ids: c } = e, | |
| 81 | l = f({ lastSeenSeq: n, count: a }), | |
| 82 | u = findMessageBySeq(t, n), | |
| 83 | w = u && b({ startSeq: l, count: a }), | |
| 84 | m = w | |
| 85 | ? h({ messageId: u.id, seq: l, status: o.bottom === l ? V.RENDERED : V.LOADED }) | |
| 86 | : D({ status: o.bottom === a - 1 ? V.RENDERED : V.LOADED, messageId: c[0] }) | |
| 87 | 87 | return { |
| 88 | 88 | ...t, |
| 89 | 89 | listView: { |
| 90 | 90 | ...t.listView, |
| 91 | startLastSeen: c, | |
| 92 | mode: u ? V.HISTORY : V.LATEST, | |
| 93 | anchor: w, | |
| 91 | startLastSeen: l, | |
| 92 | mode: w ? d.HISTORY : d.LATEST, | |
| 93 | anchor: m, | |
| 94 | 94 | stopAnchor: !1, |
| 95 | 95 | paused: !1, |
| 96 | 96 | }, |
| … | … | @@ -109,42 +109,42 @@ export const chatListViewReducer = (t, i) => { |
| 109 | 109 | paused: c, |
| 110 | 110 | }, |
| 111 | 111 | } = t |
| 112 | if (s === V.FRESH_LOADING) { | |
| 112 | if (s === d.FRESH_LOADING) { | |
| 113 | 113 | const { count: s, ids: n } = e, |
| 114 | 114 | l = findMessageBySeq(t, i), |
| 115 | 115 | u = l && b({ startSeq: i, count: s }), |
| 116 | 116 | w = f({ lastSeenSeq: a, count: s }), |
| 117 | 117 | m = u |
| 118 | ? h({ messageId: l.id, seq: i, status: o.bottom === i ? d.RENDERED : d.LOADED }) | |
| 119 | : D({ status: o.bottom === s - 1 ? d.RENDERED : d.LOADED, messageId: n[0] }) | |
| 118 | ? h({ messageId: l.id, seq: i, status: o.bottom === i ? V.RENDERED : V.LOADED }) | |
| 119 | : D({ status: o.bottom === s - 1 ? V.RENDERED : V.LOADED, messageId: n[0] }) | |
| 120 | 120 | return { |
| 121 | 121 | ...t, |
| 122 | 122 | listView: { |
| 123 | 123 | ...t.listView, |
| 124 | 124 | startLastSeen: w, |
| 125 | mode: u || r ? V.HISTORY : V.LATEST, | |
| 125 | mode: u || r ? d.HISTORY : d.LATEST, | |
| 126 | 126 | anchor: r || c ? null : m, |
| 127 | 127 | stopAnchor: !1, |
| 128 | 128 | }, |
| 129 | 129 | } |
| 130 | 130 | } |
| 131 | if (s === V.LATEST) { | |
| 131 | if (s === d.LATEST) { | |
| 132 | 132 | const { byId: s, count: i } = e, |
| 133 | 133 | n = i - 1 |
| 134 | 134 | if (o.bottom > 0 && o.bottom === n) return t |
| 135 | 135 | const r = Object.values(s).find((t) => t.seq === n) |
| 136 | 136 | if (!r) { |
| 137 | 137 | const e = t.listView.anchor |
| 138 | return e?.lastMessage && e.status !== d.ASKED | |
| 139 | ? { ...t, listView: { ...t.listView, anchor: { ...e, status: d.ASKED } } } | |
| 138 | return e?.lastMessage && e.status !== V.ASKED | |
| 139 | ? { ...t, listView: { ...t.listView, anchor: { ...e, status: V.ASKED } } } | |
| 140 | 140 | : t |
| 141 | 141 | } |
| 142 | 142 | return { |
| 143 | 143 | ...t, |
| 144 | listView: { ...t.listView, anchor: c ? null : D({ status: d.LOADED, messageId: r.id }) }, | |
| 144 | listView: { ...t.listView, anchor: c ? null : D({ status: V.LOADED, messageId: r.id }) }, | |
| 145 | 145 | } |
| 146 | 146 | } |
| 147 | if (t.listView.anchor?.status === d.ASKED) { | |
| 147 | if (t.listView.anchor?.status === V.ASKED) { | |
| 148 | 148 | const { |
| 149 | 149 | message: { ids: e, seqLoaded: s, count: i }, |
| 150 | 150 | } = t |
| … | … | @@ -161,7 +161,7 @@ export const chatListViewReducer = (t, i) => { |
| 161 | 161 | ...t, |
| 162 | 162 | listView: { |
| 163 | 163 | ...t.listView, |
| 164 | anchor: { ...n, messageId: o, status: d.LOADED, retryCountProcessed: S }, | |
| 164 | anchor: { ...n, messageId: o, status: V.LOADED, retryCountProcessed: S }, | |
| 165 | 165 | }, |
| 166 | 166 | } |
| 167 | 167 | } |
| … | … | @@ -180,20 +180,20 @@ export const chatListViewReducer = (t, i) => { |
| 180 | 180 | let a = e |
| 181 | 181 | if (r) { |
| 182 | 182 | const { lastMessage: e, seq: s } = r |
| 183 | if (e) a = V.LATEST | |
| 183 | if (e) a = d.LATEST | |
| 184 | 184 | else { |
| 185 | 185 | const { |
| 186 | 186 | message: { count: e }, |
| 187 | 187 | } = t |
| 188 | a = s + 1 >= e ? V.LATEST : V.HISTORY | |
| 188 | a = s + 1 >= e ? d.LATEST : d.HISTORY | |
| 189 | 189 | } |
| 190 | } else s && s.status !== d.RENDERED && o.bottom !== n.count - 1 && (a = V.HISTORY) | |
| 190 | } else s && s.status !== V.RENDERED && o.bottom !== n.count - 1 && (a = d.HISTORY) | |
| 191 | 191 | return { ...t, listView: { ...t.listView, anchor: r, mode: a } } |
| 192 | 192 | } |
| 193 | 193 | case u.type: { |
| 194 | 194 | const e = i.payload, |
| 195 | 195 | { anchor: s } = t.listView |
| 196 | if (!s || s?.status === e || s?.status === d.RENDERED) return t | |
| 196 | if (!s || s?.status === e || s?.status === V.RENDERED) return t | |
| 197 | 197 | const o = { ...s, status: e } |
| 198 | 198 | return { ...t, listView: { ...t.listView, anchor: o } } |
| 199 | 199 | } |
| … | … | @@ -203,12 +203,12 @@ export const chatListViewReducer = (t, i) => { |
| 203 | 203 | listView: { startSeq: s, mode: i, inView: o, anchor: n, lastSeenSeq: r, paused: a }, |
| 204 | 204 | } = t |
| 205 | 205 | if (0 === e) |
| 206 | return { ...t, listView: { ...t.listView, mode: V.LATEST, inView: { top: 0, bottom: 0 } } } | |
| 206 | return { ...t, listView: { ...t.listView, mode: d.LATEST, inView: { top: 0, bottom: 0 } } } | |
| 207 | 207 | if (-1 === s || s + 1 > e) return { ...t, listView: { ...t.listView, startSeq: e - 1 } } |
| 208 | 208 | const c = r === s && !b({ count: e, startSeq: s }) |
| 209 | if (i === V.RESTORE_LAST && c) return { ...t, listView: { ...t.listView, startSeq: e - 1 } } | |
| 210 | const l = n && n.status !== d.RENDERED && !a | |
| 211 | return i === V.LATEST && !l && e > o.bottom + 1 | |
| 209 | if (i === d.RESTORE_LAST && c) return { ...t, listView: { ...t.listView, startSeq: e - 1 } } | |
| 210 | const l = n && n.status !== V.RENDERED | |
| 211 | return i === d.LATEST && !l && e > o.bottom + 1 && !a | |
| 212 | 212 | ? { ...t, listView: { ...t.listView, anchor: D() } } |
| 213 | 213 | : t |
| 214 | 214 | } |
| … | … | @@ -1,7 +1,7 @@ |
| 1 | 1 | import { getChatMessagesApiPromise as t } from "../../../api/core" |
| 2 | 2 | import { first as e, last as o } from "../../lib/array" |
| 3 | import { MESSAGE_CATEGORIES as r } from "../chat.constant" | |
| 4 | import { getCoreEventCategoryName as a } from "../message" | |
| 3 | import { MESSAGE_CATEGORY as r } from "../chat.constant" | |
| 4 | import { calcMessageCategory as a } from "../message" | |
| 5 | 5 | import { PORTION_SIZE_MAX as n, PORTION_SIZE_MIN as s, EMPTY_ARRAY as c } from "./loader.constants" |
| 6 | 6 | export const createCtrlCtxRef = () => { |
| 7 | 7 | let t = 0, |
| … | … | @@ -1,7 +1,7 @@ |
| 1 | 1 | import { call as t } from "redux-saga/effects" |
| 2 | 2 | import { loadInitial as e, loadMsgsBefore as o, loadMsgsAfter as r } from "./loader-step" |
| 3 | 3 | import { EMPTY_ARRAY as c } from "./loader.constants" |
| 4 | import { CHAT_WORKER as n, MESSAGE_CATEGORIES as d } from "../chat.constant" | |
| 4 | import { CHAT_WORKER as n, MESSAGE_CATEGORY as d } from "../chat.constant" | |
| 5 | 5 | export const createChatLoader = ({ roomId: f }) => ({ |
| 6 | 6 | fetch: { |
| 7 | 7 | [n.INITIAL]: function* ({ query: o, count: r, ctxRef: c }) { |
| … | … | @@ -1,63 +1,61 @@ |
| 1 | 1 | import { MS_5_MINUTES as t, formatTimestamp as e } from "../../lib/date" |
| 2 | import { CHAT_MESSAGE_TYPE as r, MESSAGE_CATEGORIES as o } from "../chat.constant" | |
| 3 | import { groupByAuthor as n } from "./message-create-author" | |
| 2 | import { MESSAGE_CATEGORY as r } from "../chat.constant" | |
| 3 | import { groupByAuthor as o } from "./message-create-author" | |
| 4 | 4 | import { groupByDate as s } from "./message-create-date" |
| 5 | import { getCoreEventCategoryName as a, getIsGroupCountLimitReached as m } from "./message" | |
| 6 | function i(t, e, o) { | |
| 7 | if (o >= e) return | |
| 8 | const n = t[o], | |
| 5 | import { calcMessageCategory as a, getIsGroupCountLimitReached as m } from "./message" | |
| 6 | function n(t, e, r) { | |
| 7 | const o = t[r], | |
| 9 | 8 | s = t[e], |
| 10 | 9 | a = s.id |
| 11 | let m, i | |
| 12 | for (let r = o; r < e; r += 1) { | |
| 13 | let e = t[r] | |
| 10 | let m, n | |
| 11 | for (let o = r; o < e; o += 1) { | |
| 12 | let e = t[o] | |
| 14 | 13 | ;(e.isHead || e.datetime || e.parentId !== a) && |
| 15 | 14 | ((m ||= e.isHead), |
| 16 | e.datetime && !i && (i = e.datetime), | |
| 15 | e.datetime && !n && (n = e.datetime), | |
| 17 | 16 | (e = { ...e, isHead: !1, datetime: void 0, parentId: a }), |
| 18 | (t[r] = e)) | |
| 17 | (t[o] = e)) | |
| 19 | 18 | } |
| 20 | const d = [] | |
| 21 | for (let n = e; n >= o; n -= 1) { | |
| 22 | const { event: e, memberId: o, targetMemberId: s } = t[n], | |
| 23 | a = e.type === r.MEMBER_REMOVED | |
| 24 | d.push(a ? s : o) | |
| 19 | const i = [] | |
| 20 | for (let o = e; o >= r; o -= 1) { | |
| 21 | const { memberId: e, targetMemberId: r } = t[o] | |
| 22 | r ? i.push(r) : i.push(e) | |
| 25 | 23 | } |
| 26 | const p = e - o + 1, | |
| 27 | u = n.seq | |
| 28 | t[e] = { ...s, isHead: !0, groupMemberIds: d, groupCount: p, groupSeq: u } | |
| 29 | const f = o - 1 | |
| 30 | i && f >= 0 && !t[f].datetime && (t[f] = { ...t[f], datetime: i }) | |
| 24 | const d = e - r + 1, | |
| 25 | p = o.seq | |
| 26 | t[e] = { ...s, isHead: !0, groupMemberIds: i, groupCount: d, groupSeq: p } | |
| 27 | const u = r - 1 | |
| 28 | n && u >= 0 && !t[u].datetime && (t[u] = { ...t[u], datetime: n }) | |
| 31 | 29 | } |
| 32 | 30 | export function groupByCategory(t) { |
| 33 | let e = o.NO_CATEGORY, | |
| 34 | r = -1 | |
| 35 | for (let o = t.length - 1; o >= 0; o -= 1) { | |
| 36 | const n = t[o], | |
| 37 | s = a(n), | |
| 38 | d = o + 1, | |
| 39 | p = m(s, r > -1 ? r - d + 1 : 0), | |
| 40 | u = s !== e || p | |
| 41 | ;(u && r > -1 && i(t, r, d), s && u && (r = o), s || (r = -1), (e = s)) | |
| 31 | let e = r.NO_CATEGORY, | |
| 32 | o = -1 | |
| 33 | for (let r = t.length - 1; r >= 0; r -= 1) { | |
| 34 | const s = t[r], | |
| 35 | i = a(s), | |
| 36 | d = r + 1, | |
| 37 | p = m(i, o > -1 ? o - d + 1 : 0), | |
| 38 | u = i !== e || p | |
| 39 | ;(u && o > -1 && n(t, o, d), i && u && (o = r), i || (o = -1), (e = i)) | |
| 42 | 40 | } |
| 43 | return (r > -1 && i(t, r, 0), t) | |
| 41 | return (o > -1 && n(t, o, 0), t) | |
| 44 | 42 | } |
| 45 | 43 | export function markOutOfOrders(t, r) { |
| 46 | 44 | const { now: o } = r |
| 47 | let n = t.length, | |
| 48 | s = t[t.length - 1], | |
| 49 | a = s?.timestamp | |
| 50 | for (; n > 0; ) { | |
| 51 | ;((n -= 1), (s = t[n])) | |
| 52 | const { timestamp: r } = s, | |
| 53 | m = r > o || (a > s.timestamp && e(a) !== e(s.timestamp)) | |
| 54 | ;(!!s.isOutOfOrder !== m && (t[n] = { ...s, isOutOfOrder: m }), m || (a = r)) | |
| 45 | let s = t.length, | |
| 46 | a = t[t.length - 1], | |
| 47 | m = a?.timestamp | |
| 48 | for (; s > 0; ) { | |
| 49 | ;((s -= 1), (a = t[s])) | |
| 50 | const { timestamp: r } = a, | |
| 51 | n = r > o || (m > a.timestamp && e(m) !== e(a.timestamp)) | |
| 52 | ;(!!a.isOutOfOrder !== n && (t[s] = { ...a, isOutOfOrder: n }), n || (m = r)) | |
| 55 | 53 | } |
| 56 | 54 | return t |
| 57 | 55 | } |
| 58 | 56 | export function groupMessages(e, r = { now: Date.now() + t }) { |
| 59 | 57 | if (!e?.length) return [] |
| 60 | const o = markOutOfOrders(e, r), | |
| 61 | a = n(o) | |
| 62 | return groupByCategory(s(a)) | |
| 58 | const a = markOutOfOrders(e, r), | |
| 59 | m = o(a) | |
| 60 | return groupByCategory(s(m)) | |
| 63 | 61 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | import { DISPLAY_TYPES as e } from "@holepunchto/keet-core/legacy-constants" |
| 2 | 2 | import { first as t, last as s, isEmpty as r } from "../../lib/array" |
| 3 | import { getFileId as n, MEDIA_TYPE as i, parseCoreFile as o } from "../../media/file" | |
| 3 | import { getFileId as n, MEDIA_TYPE as o, parseCoreFile as i } from "../../media/file" | |
| 4 | 4 | import { |
| 5 | 5 | isAudioMimeType as d, |
| 6 | 6 | isAudioVoicePath as a, |
| … | … | @@ -11,18 +11,18 @@ import { |
| 11 | 11 | LAST_MESSAGE_SEEN_PREFIX as p, |
| 12 | 12 | CHAT_MESSAGE_TYPE as m, |
| 13 | 13 | CHAT_MESSAGE_FORMAT as g, |
| 14 | MESSAGE_CATEGORIES as h, | |
| 15 | KNOWN_EVENT_TYPES as I, | |
| 16 | CHAT_MESSAGE_REPORT_COUNT as f, | |
| 14 | MESSAGE_CATEGORY as I, | |
| 15 | KNOWN_EVENT_TYPES as h, | |
| 16 | CHAT_MESSAGE_REPORT_COUNT as E, | |
| 17 | 17 | } from "../chat.constant" |
| 18 | import { parseCoreReactions as u } from "../reaction/chat-reaction.model" | |
| 18 | import { parseCoreReactions as f } from "../reaction/chat-reaction.model" | |
| 19 | 19 | import { |
| 20 | displayPartial as E, | |
| 21 | displayToSegment as y, | |
| 22 | displayReplaceMention as M, | |
| 20 | displayPartial as A, | |
| 21 | displayToSegment as u, | |
| 22 | displayReplaceMention as y, | |
| 23 | 23 | } from "./message-parser" |
| 24 | export const GROUP_MAX_SIZE = 64 | |
| 25 | const { HTTP_LINK: x, PEAR_LINK: b } = e | |
| 24 | export const GROUP_LIMIT = 64 | |
| 25 | const { HTTP_LINK: M, PEAR_LINK: T } = e | |
| 26 | 26 | export const getLastSeenMessageKey = (e) => `${p}_${e}` |
| 27 | 27 | export const UNKNOWN_ID = "unknown_id" |
| 28 | 28 | export const createMessageId = (e) => { |
| … | … | @@ -50,7 +50,7 @@ export const isCallSystemEvent = (e) => |
| 50 | 50 | !(!e?.event?.type || ![m.CALL_STARTED, m.CALL_HANGUP].includes(e.event.type)) |
| 51 | 51 | export const isStartCallMessage = (e) => e && e.event?.type === m.CALL_STARTED |
| 52 | 52 | export const updateMessage = (e, t) => { |
| 53 | const { memberById: s, blocked: r, local: n, hidden: i, range: o } = t || {} | |
| 53 | const { memberById: s, blocked: r, local: n, hidden: o, range: i } = t || {} | |
| 54 | 54 | let d = { ...e } |
| 55 | 55 | if (d.chat) { |
| 56 | 56 | let { text: e, display: t } = d.chat |
| … | … | @@ -58,17 +58,17 @@ export const updateMessage = (e, t) => { |
| 58 | 58 | if (r.length > 0 && s) |
| 59 | 59 | for (const n of r) { |
| 60 | 60 | const { memberId: r } = n, |
| 61 | i = s[r] | |
| 62 | if (i) { | |
| 63 | const s = M({ text: e, display: t }, r, i.displayName) | |
| 61 | o = s[r] | |
| 62 | if (o) { | |
| 63 | const s = y({ text: e, display: t }, r, o.displayName) | |
| 64 | 64 | ;((t = s.display), (e = s.text), (n.pending = !1)) |
| 65 | 65 | } else void 0 === n.pending && (n.pending = !0) |
| 66 | 66 | } |
| 67 | 67 | d.chat = { ...d.chat, display: t, text: e || "", mentions: r } |
| 68 | 68 | } |
| 69 | if ((void 0 !== r && (d.blocked = r), void 0 !== n && (d.local = n), (d.hidden = !!i), o)) { | |
| 70 | const { start: e, end: t } = o, | |
| 71 | s = E({ text: d.chat?.text || "", display: d.chat?.display || [] }, { start: e, end: t }) | |
| 69 | if ((void 0 !== r && (d.blocked = r), void 0 !== n && (d.local = n), (d.hidden = !!o), i)) { | |
| 70 | const { start: e, end: t } = i, | |
| 71 | s = A({ text: d.chat?.text || "", display: d.chat?.display || [] }, { start: e, end: t }) | |
| 72 | 72 | ;((d.chat.text = s.text), (d.chat.display = s.display)) |
| 73 | 73 | } |
| 74 | 74 | return ( |
| … | … | @@ -76,71 +76,66 @@ export const updateMessage = (e, t) => { |
| 76 | 76 | ...d, |
| 77 | 77 | chat: { |
| 78 | 78 | ...d.chat, |
| 79 | segments: y({ text: d.chat?.text, display: d.chat?.display }), | |
| 79 | segments: u({ text: d.chat?.text, display: d.chat?.display }), | |
| 80 | 80 | format: g.DISPLAY, |
| 81 | 81 | }, |
| 82 | 82 | }), |
| 83 | 83 | d |
| 84 | 84 | ) |
| 85 | 85 | } |
| 86 | export const getCoreEventCategoryName = (e) => { | |
| 87 | const t = e.event?.type | |
| 88 | switch (t) { | |
| 89 | case m.JOINED: | |
| 90 | return h.JOINED | |
| 91 | case m.LEFT: | |
| 92 | return h.LEFT | |
| 93 | case m.MEMBER_REMOVED: | |
| 94 | return h.MEMBER_REMOVED | |
| 95 | default: | |
| 96 | return h.NO_CATEGORY | |
| 97 | } | |
| 86 | export const MESSAGE_TYPE_TO_CATEGORY = { | |
| 87 | [m.JOINED]: I.JOINED, | |
| 88 | [m.CALL_STARTED]: I.CALL_STARTED, | |
| 89 | [m.ROOM_AVATAR_CHANGED]: I.ROOM_AVATAR_CHANGED, | |
| 90 | [m.INVITATION_CREATED]: I.INVITATION_CREATED, | |
| 91 | [m.LEFT]: I.LEFT, | |
| 92 | [m.ROOM_TITLE_CHANGED]: I.ROOM_TITLE_CHANGED, | |
| 93 | [m.MEMBER_REMOVED]: I.MEMBER_REMOVED, | |
| 94 | [m.CALL_HANGUP]: I.CALL_HANGUP, | |
| 95 | [m.CALL_MISSED]: I.CALL_MISSED, | |
| 96 | [m.LOCATION_SHARED]: I.LOCATION_SHARED, | |
| 98 | 97 | } |
| 99 | export const getIsGroupCountLimitReached = (e, t) => { | |
| 100 | switch (e) { | |
| 101 | case h.JOINED: | |
| 102 | case h.LEFT: | |
| 103 | case h.MEMBER_REMOVED: | |
| 104 | return t >= 64 | |
| 105 | default: | |
| 106 | return !1 | |
| 107 | } | |
| 98 | export const calcMessageCategory = (e) => { | |
| 99 | const t = e.event?.type | |
| 100 | return t ? (MESSAGE_TYPE_TO_CATEGORY[t] ?? `UNKNOWN_${t}`) : I.NO_CATEGORY | |
| 108 | 101 | } |
| 102 | const _ = { [I.JOINED]: 64, [I.LEFT]: 64, [I.MEMBER_REMOVED]: 64 } | |
| 103 | export const getIsGroupCountLimitReached = (e, t) => t >= ((e && _[e]) || 1) | |
| 109 | 104 | export const getFileMediaType = (e, t) => |
| 110 | l(e) ? i.IMAGE : c(e) ? i.VIDEO : d(e) && a(t) ? i.VOICE : d(e) ? i.AUDIO : i.FILE | |
| 105 | l(e) ? o.IMAGE : c(e) ? o.VIDEO : d(e) && a(t) ? o.VOICE : d(e) ? o.AUDIO : o.FILE | |
| 111 | 106 | export const getFileListMediaType = (e) => { |
| 112 | if (!e.length) return i.FILE | |
| 107 | if (!e.length) return o.FILE | |
| 113 | 108 | const t = new Set() |
| 114 | 109 | for (let s = 0; s < e.length; s += 1) { |
| 115 | 110 | const r = e[s] |
| 116 | 111 | t.add(getFileMediaType(r.mimetype, r.name)) |
| 117 | 112 | } |
| 118 | 113 | if (1 === t.size) { |
| 119 | if (t.has(i.IMAGE)) return i.IMAGE | |
| 120 | if (t.has(i.VIDEO)) return i.VIDEO | |
| 121 | if (t.has(i.AUDIO)) return i.AUDIO | |
| 122 | if (t.has(i.VOICE)) return i.VOICE | |
| 123 | } else if (2 === t.size && t.has(i.IMAGE) && t.has(i.VIDEO)) return i.MEDIA | |
| 124 | return i.FILE | |
| 114 | if (t.has(o.IMAGE)) return o.IMAGE | |
| 115 | if (t.has(o.VIDEO)) return o.VIDEO | |
| 116 | if (t.has(o.AUDIO)) return o.AUDIO | |
| 117 | if (t.has(o.VOICE)) return o.VOICE | |
| 118 | } else if (2 === t.size && t.has(o.IMAGE) && t.has(o.VIDEO)) return o.MEDIA | |
| 119 | return o.FILE | |
| 125 | 120 | } |
| 126 | 121 | export const parseFiles = (e) => { |
| 127 | 122 | const t = [], |
| 128 | 123 | s = [] |
| 129 | 124 | if (isSystemEvent(e)) return { fileId: "", fileIds: s, files: t, mediaType: null, chat: e.chat } |
| 130 | const { chat: r, files: i } = e | |
| 131 | if (i) | |
| 132 | for (let e = 0; e < i.length; e += 1) { | |
| 133 | const r = o(i[e]), | |
| 125 | const { chat: r, files: o } = e | |
| 126 | if (o) | |
| 127 | for (let e = 0; e < o.length; e += 1) { | |
| 128 | const r = i(o[e]), | |
| 134 | 129 | { id: n } = r |
| 135 | 130 | n && (t.push(r), s.push(n)) |
| 136 | 131 | } |
| 137 | 132 | const d = r?.display, |
| 138 | 133 | a = d |
| 139 | 134 | ? d.map((s, r) => { |
| 140 | if ((s.type === x || s.type === b) && s.preview?.file) { | |
| 141 | const i = o(s.preview.file), | |
| 142 | d = n(i.pointer) || `${createMessageId(e)}-link-preview-${r}` | |
| 143 | if (i) return ((i.id = d), t.push(i), { ...s, preview: { ...s.preview, fileId: d } }) | |
| 135 | if ((s.type === M || s.type === T) && s.preview?.file) { | |
| 136 | const o = i(s.preview.file), | |
| 137 | d = n(o.pointer) || `${createMessageId(e)}-link-preview-${r}` | |
| 138 | if (o) return ((o.id = d), t.push(o), { ...s, preview: { ...s.preview, fileId: d } }) | |
| 144 | 139 | } |
| 145 | 140 | return s |
| 146 | 141 | }) |
| … | … | @@ -190,7 +185,7 @@ export const parseMessage = (e, t) => { |
| 190 | 185 | const s = createMessageId(e) |
| 191 | 186 | if (s === UNKNOWN_ID) |
| 192 | 187 | throw new Error("invalid core message", { cause: JSON.stringify(e, null, 2) }) |
| 193 | const { fileId: r = "", mediaType: n, fileIds: i, files: o, chat: d } = parseFiles(e), | |
| 188 | const { fileId: r = "", mediaType: n, fileIds: o, files: i, chat: d } = parseFiles(e), | |
| 194 | 189 | a = parseSystemEvents(e), |
| 195 | 190 | l = { |
| 196 | 191 | id: s, |
| … | … | @@ -205,17 +200,17 @@ export const parseMessage = (e, t) => { |
| 205 | 200 | deleted: e.deleted, |
| 206 | 201 | fileId: r, |
| 207 | 202 | mediaType: n, |
| 208 | fileIds: i, | |
| 203 | fileIds: o, | |
| 209 | 204 | chat: d, |
| 210 | reactionCount: u(e.reactions, s).total, | |
| 211 | reported: t?.reported || (e.labels?.flags || 0) >= f, | |
| 205 | reactionCount: f(e.reactions, s).total, | |
| 206 | reported: t?.reported || (e.labels?.flags || 0) >= E, | |
| 212 | 207 | reportedByMe: t?.reportedByMe || !!e.labels?.flagged, |
| 213 | 208 | reportedClock: e.labels?.flagsClock || 0, |
| 214 | 209 | reportedCount: e.labels?.flags || 0, |
| 215 | 210 | labelsEditedAt: e.labels?.editedAt || 0, |
| 216 | 211 | forwarded: e.forwarded, |
| 217 | 212 | } |
| 218 | return { message: updateMessage(l, t), files: o } | |
| 213 | return { message: updateMessage(l, t), files: i } | |
| 219 | 214 | } |
| 220 | 215 | export const isMessageChanged = (e, t) => |
| 221 | 216 | !( |
| … | … | @@ -254,10 +249,10 @@ export const isMessageChangedExcludeGrouping = (e, t) => |
| 254 | 249 | export const CHAT_MESSAGE_FILTER_MAP = {} |
| 255 | 250 | export const hasMoreMessages = (e, r) => { |
| 256 | 251 | const n = t(e)?.seq, |
| 257 | i = s(e)?.seq, | |
| 258 | o = t(r)?.seq, | |
| 252 | o = s(e)?.seq, | |
| 253 | i = t(r)?.seq, | |
| 259 | 254 | d = s(r)?.seq |
| 260 | return o > n || d < i | |
| 255 | return i > n || d < o | |
| 261 | 256 | } |
| 262 | 257 | export const getChatDisplayNameForMention = ({ message: e, memberById: t }) => |
| 263 | 258 | e.chat?.segments |
| … | … | @@ -271,7 +266,7 @@ export const getChatDisplayNameForMention = ({ message: e, memberById: t }) => |
| 271 | 266 | return r |
| 272 | 267 | }) |
| 273 | 268 | .join("") |
| 274 | const A = [e.MENTION, e.EMOJI] | |
| 269 | const O = [e.MENTION, e.EMOJI] | |
| 275 | 270 | export function cutSegmentHighlight(e, t) { |
| 276 | 271 | if (r(e)) return e |
| 277 | 272 | const s = [] |
| … | … | @@ -288,35 +283,35 @@ export function cutSegmentHighlight(e, t) { |
| 288 | 283 | ) |
| 289 | 284 | } |
| 290 | 285 | export const cutFormattedText = ({ text: e, segments: t, limit: s, addToEndText: n }) => { |
| 291 | let i = s | |
| 292 | if (i >= e.length) return { text: e, segments: t, exceedsLimit: !1 } | |
| 293 | const o = t.reduce((e, t) => { | |
| 294 | if (t.end <= i) e.push(t) | |
| 295 | else if (t.start < i && t.end > i) { | |
| 296 | const s = t.styles.find((e) => -1 !== A.indexOf(e.type)) | |
| 297 | i = s ? t.end : i | |
| 298 | const n = { ...t, end: i } | |
| 286 | let o = s | |
| 287 | if (o >= e.length) return { text: e, segments: t, exceedsLimit: !1 } | |
| 288 | const i = t.reduce((e, t) => { | |
| 289 | if (t.end <= o) e.push(t) | |
| 290 | else if (t.start < o && t.end > o) { | |
| 291 | const s = t.styles.find((e) => -1 !== O.indexOf(e.type)) | |
| 292 | o = s ? t.end : o | |
| 293 | const n = { ...t, end: o } | |
| 299 | 294 | if (!r(t.highlight)) { |
| 300 | const e = i - t.start | |
| 295 | const e = o - t.start | |
| 301 | 296 | n.highlight = cutSegmentHighlight(t.highlight, e) |
| 302 | 297 | } |
| 303 | 298 | e.push(n) |
| 304 | 299 | } |
| 305 | 300 | return e |
| 306 | 301 | }, []), |
| 307 | d = e.length > i | |
| 302 | d = e.length > o | |
| 308 | 303 | if (!d) return { text: e, segments: t, exceedsLimit: d } |
| 309 | const a = o[o.length - 1] | |
| 310 | let l = e.slice(0, i) | |
| 304 | const a = i[i.length - 1] | |
| 305 | let l = e.slice(0, o) | |
| 311 | 306 | const c = /\s/.test(l.slice(-1)) |
| 312 | 307 | if ((n && (l += c ? n : ` ${n}`), !t)) return { text: l, segments: t, exceedsLimit: d } |
| 313 | 308 | if (n) { |
| 314 | 309 | const e = c ? n.length : n.length + 1 |
| 315 | 310 | a.styles.length |
| 316 | ? o.push({ start: i, end: i + e, styles: [] }) | |
| 317 | : (o[o.length - 1] = { ...a, end: a.end + e }) | |
| 311 | ? i.push({ start: o, end: o + e, styles: [] }) | |
| 312 | : (i[i.length - 1] = { ...a, end: a.end + e }) | |
| 318 | 313 | } |
| 319 | return { text: l, segments: o, exceedsLimit: d } | |
| 314 | return { text: l, segments: i, exceedsLimit: d } | |
| 320 | 315 | } |
| 321 | 316 | export function getIsMessageHidden(e, t) { |
| 322 | 317 | for (const s of t) { |
| … | … | @@ -324,5 +319,5 @@ export function getIsMessageHidden(e, t) { |
| 324 | 319 | if (r?.(e)) return !0 |
| 325 | 320 | } |
| 326 | 321 | const s = parseSystemEvents(e)?.type |
| 327 | return s && !I.includes(s) | |
| 322 | return s && !h.includes(s) | |
| 328 | 323 | } |
| … | … | @@ -2,16 +2,16 @@ import { chatInit as e } from "../init" |
| 2 | 2 | import { EMPTY_ACTION as t } from "../../lib/reducer" |
| 3 | 3 | import { chatMessageClickEvt as r } from "../message" |
| 4 | 4 | import { |
| 5 | chatSearchDisable as a, | |
| 6 | chatSearchGoNextMsgCmd as n, | |
| 5 | chatSearchDisable as n, | |
| 6 | chatSearchGoNextMsgCmd as a, | |
| 7 | 7 | chatSearchGoPrevMsgCmd as d, |
| 8 | 8 | chatSearchInputEvt as s, |
| 9 | 9 | setChatSearchChatMode as c, |
| 10 | 10 | setChatSearchListMode as o, |
| 11 | addChatSearchMessages as m, | |
| 12 | setChatSearchTerms as i, | |
| 13 | toggleChatSearching as h, | |
| 14 | setChatSearchMessagesDone as u, | |
| 11 | addChatSearchMessages as i, | |
| 12 | setChatSearchTerms as m, | |
| 13 | toggleChatSearching as u, | |
| 14 | setChatSearchMessagesDone as h, | |
| 15 | 15 | } from "./chat-search.action" |
| 16 | 16 | import { |
| 17 | 17 | EMPTY_INDEX as p, |
| … | … | @@ -23,43 +23,43 @@ import { |
| 23 | 23 | CHAT_SEARCH_STATE_KEY as x, |
| 24 | 24 | } from "./chat-search.constant" |
| 25 | 25 | import { |
| 26 | addSegmentHighlight as A, | |
| 26 | addSegmentHighlight as T, | |
| 27 | 27 | createHighlightSegments as S, |
| 28 | isChatSearching as T, | |
| 29 | isEmptySearchTerms as D, | |
| 30 | isSearchTermsLimited as E, | |
| 31 | trimTextAndSegment as R, | |
| 28 | isChatSearching as A, | |
| 29 | isEmptySearchTerms as E, | |
| 30 | isSearchTermsLimited as R, | |
| 31 | trimTextAndSegment as v, | |
| 32 | 32 | } from "./chat-search.model" |
| 33 | export const chatSearchReducer = (v = l, C = t) => { | |
| 34 | switch (C.type) { | |
| 35 | case a.type: | |
| 36 | return v === l ? v : l | |
| 37 | case h.type: | |
| 38 | return T(v.mode) ? l : { ...v, mode: y.CHAT } | |
| 39 | case i.type: { | |
| 40 | if (!T(v.mode)) return v | |
| 41 | const e = C.payload.filter((e) => !!e), | |
| 42 | { searchTerms: t, mode: r } = v | |
| 43 | if (D(e)) return { ...l, mode: r } | |
| 44 | if (E(e)) return { ...l, searchTerms: e, mode: r } | |
| 45 | const a = t.length ? I.LOADING_MORE : I.ASKED | |
| 46 | return { ...l, mode: r, searchTerms: e, dataStatus: a } | |
| 47 | } | |
| 33 | export const chatSearchReducer = (C = l, H = t) => { | |
| 34 | switch (H.type) { | |
| 35 | case n.type: | |
| 36 | return C === l ? C : l | |
| 37 | case u.type: | |
| 38 | return A(C.mode) ? l : { ...C, mode: y.CHAT } | |
| 48 | 39 | case m.type: { |
| 49 | const e = C.payload, | |
| 50 | { ids: t, byId: r, mode: a, searchTerms: n } = v | |
| 51 | if (!T(a)) return v | |
| 52 | if (0 === e.length) return v | |
| 40 | if (!A(C.mode)) return C | |
| 41 | const e = H.payload.filter((e) => !!e), | |
| 42 | { mode: t } = C | |
| 43 | if (E(e)) return { ...l, mode: t } | |
| 44 | if (R(e)) return { ...l, searchTerms: e, mode: t } | |
| 45 | const r = e.length ? I.LOADING_MORE : I.RESET | |
| 46 | return { ...l, mode: t, searchTerms: e, dataStatus: r } | |
| 47 | } | |
| 48 | case i.type: { | |
| 49 | const e = H.payload, | |
| 50 | { ids: t, byId: r, mode: n, searchTerms: a } = C | |
| 51 | if (!A(n)) return C | |
| 52 | if (0 === e.length) return C | |
| 53 | 53 | const { |
| 54 | 54 | nextIds: d, |
| 55 | 55 | nextById: s, |
| 56 | 56 | changedIds: c, |
| 57 | 57 | } = e.reduce( |
| 58 | 58 | (e, t) => { |
| 59 | const r = S(n, t.chat.text), | |
| 60 | a = A(t.chat.segments, r), | |
| 61 | d = R(t.chat.text, a, v.config), | |
| 62 | s = { ...t, chat: { ...t.chat, ...d, segments: a } } | |
| 59 | const r = S(a, t.chat.text), | |
| 60 | n = T(t.chat.segments, r), | |
| 61 | d = v(t.chat.text, n, C.config), | |
| 62 | s = { ...t, chat: { ...t.chat, ...d, segments: n } } | |
| 63 | 63 | return ( |
| 64 | 64 | (e.nextById[t.id] = s), |
| 65 | 65 | e.nextIds.includes(t.id) || (e.nextIds.push(t.id), (e.changedIds = !0)), |
| … | … | @@ -68,51 +68,51 @@ export const chatSearchReducer = (v = l, C = t) => { |
| 68 | 68 | }, |
| 69 | 69 | { nextIds: [...t], nextById: { ...r }, changedIds: !1 }, |
| 70 | 70 | ) |
| 71 | return { ...v, ids: c ? d : t, byId: s, dataStatus: I.READY } | |
| 71 | return { ...C, ids: c ? d : t, byId: s, dataStatus: I.READY } | |
| 72 | 72 | } |
| 73 | case u.type: | |
| 74 | return v.dataStatus === I.READY ? v : { ...v, dataStatus: I.READY } | |
| 73 | case h.type: | |
| 74 | return C.dataStatus === I.READY ? C : { ...C, dataStatus: I.READY } | |
| 75 | 75 | case r.type: { |
| 76 | if (!T(v.mode)) return v | |
| 77 | const { messageId: e } = C.payload, | |
| 78 | t = v.ids.findIndex((t) => t === e) | |
| 79 | return t === p || (t === v.activeIndex && v.mode === y.CHAT) | |
| 80 | ? v | |
| 81 | : { ...v, activeIndex: t, mode: y.CHAT } | |
| 76 | if (!A(C.mode)) return C | |
| 77 | const { messageId: e } = H.payload, | |
| 78 | t = C.ids.findIndex((t) => t === e) | |
| 79 | return t === p || (t === C.activeIndex && C.mode === y.CHAT) | |
| 80 | ? C | |
| 81 | : { ...C, activeIndex: t, mode: y.CHAT } | |
| 82 | 82 | } |
| 83 | 83 | case d.type: { |
| 84 | const { activeIndex: e, ids: t } = v | |
| 85 | if (!T(v.mode) || !t.length) return v | |
| 84 | const { activeIndex: e, ids: t } = C | |
| 85 | if (!A(C.mode) || !t.length) return C | |
| 86 | 86 | let r = e |
| 87 | 87 | return ( |
| 88 | 88 | (r = e === p || 0 === e ? t.length - 1 : Math.min(e - 1, t.length - 1)), |
| 89 | r === e ? v : { ...v, activeIndex: r } | |
| 89 | r === e ? C : { ...C, activeIndex: r } | |
| 90 | 90 | ) |
| 91 | 91 | } |
| 92 | case n.type: { | |
| 93 | const { activeIndex: e, ids: t } = v | |
| 94 | if (!T(v.mode) || !t.length) return v | |
| 92 | case a.type: { | |
| 93 | const { activeIndex: e, ids: t } = C | |
| 94 | if (!A(C.mode) || !t.length) return C | |
| 95 | 95 | let r = e |
| 96 | 96 | return ( |
| 97 | 97 | (r = e === p || e === t.length - 1 ? 0 : Math.min(e + 1, t.length - 1)), |
| 98 | r === e ? v : { ...v, activeIndex: r } | |
| 98 | r === e ? C : { ...C, activeIndex: r } | |
| 99 | 99 | ) |
| 100 | 100 | } |
| 101 | 101 | case s.type: { |
| 102 | const e = C.payload.trim().length <= f.CHARS | |
| 103 | if (!T(v.mode) || e) return v | |
| 104 | const t = v.searchTerms.length ? I.LOADING_MORE : I.ASKED | |
| 105 | return v.dataStatus === t ? v : { ...v, dataStatus: t } | |
| 102 | const e = H.payload.trim().length <= f.CHARS | |
| 103 | if (!A(C.mode) || e) return C | |
| 104 | const t = C.searchTerms.length ? I.LOADING_MORE : I.RESET | |
| 105 | return C.dataStatus === t ? C : { ...C, dataStatus: t } | |
| 106 | 106 | } |
| 107 | 107 | case o.type: |
| 108 | return v.mode !== y.CHAT ? v : { ...v, mode: y.LIST } | |
| 108 | return C.mode !== y.CHAT ? C : { ...C, mode: y.LIST } | |
| 109 | 109 | case c.type: |
| 110 | return v.mode !== y.LIST ? v : { ...v, mode: y.CHAT } | |
| 110 | return C.mode !== y.LIST ? C : { ...C, mode: y.CHAT } | |
| 111 | 111 | case e.type: { |
| 112 | const e = C.payload?.[x] | |
| 113 | return e ? { ...v, config: { ...g, ...e } } : v | |
| 112 | const e = H.payload?.[x] | |
| 113 | return e ? { ...C, config: { ...g, ...e } } : C | |
| 114 | 114 | } |
| 115 | 115 | default: |
| 116 | return v | |
| 116 | return C | |
| 117 | 117 | } |
| 118 | 118 | } |
| … | … | @@ -7,7 +7,6 @@ export const INITIAL_STATE = { |
| 7 | 7 | suspended: !1, |
| 8 | 8 | suspendDisabled: !1, |
| 9 | 9 | localDbCompact: { errorMsg: "", success: !1, running: !1 }, |
| 10 | profileVersion: "", | |
| 11 | 10 | audit: { report: [], running: !1, issues: 0, dropped: 0, corrupt: 0, errorMsg: "" }, |
| 12 | 11 | flags: [], |
| 13 | 12 | } |
| … | … | @@ -50,9 +49,6 @@ export const debugSlice = e({ |
| 50 | 49 | setSuspendDisabled: (e, { payload: t }) => { |
| 51 | 50 | e.suspendDisabled = t |
| 52 | 51 | }, |
| 53 | setProfileVersion: (e, { payload: t }) => { | |
| 54 | e.profileVersion = t | |
| 55 | }, | |
| 56 | 52 | setLocalDbCompacting: (e) => { |
| 57 | 53 | ;((e.localDbCompact.errorMsg = ""), |
| 58 | 54 | (e.localDbCompact.running = !0), |
| … | … | @@ -73,7 +69,6 @@ export const getIsSuspendDisabled = (e) => s(e).suspendDisabled |
| 73 | 69 | export const getIsOffline = (e) => s(e).offline |
| 74 | 70 | export const getDebugFlags = (e) => s(e).flags |
| 75 | 71 | export const getAuditResult = (e) => s(e).audit |
| 76 | export const getProfileVersion = (e) => s(e).profileVersion | |
| 77 | 72 | export const getLocalDbCompact = (e) => s(e).localDbCompact |
| 78 | 73 | export const getIsLocalDbCompacting = (e) => getLocalDbCompact(e).running |
| 79 | 74 | export const getLocalDbCompactSuccess = (e) => getLocalDbCompact(e).success |
| … | … | @@ -87,7 +82,6 @@ export const { |
| 87 | 82 | setStartAudit: setStartAudit, |
| 88 | 83 | setAuditReport: setAuditReport, |
| 89 | 84 | setAuditError: setAuditError, |
| 90 | setProfileVersion: setProfileVersion, | |
| 91 | 85 | setLocalDbCompacting: setLocalDbCompacting, |
| 92 | 86 | setLocalDbCompactError: setLocalDbCompactError, |
| 93 | 87 | setLocalDbCompactSuccess: setLocalDbCompactSuccess, |
| … | … | @@ -100,4 +94,3 @@ export const toggleOffline = t("debug/toggle-offline") |
| 100 | 94 | export const startAudit = t("debug/start-audit") |
| 101 | 95 | export const startLocalDbCompact = t("debug/start-local-db-compact") |
| 102 | 96 | export const upgradePrivateProfile = t("debug/upgrade-private-profile") |
| 103 | export const subscribeProfileVersionCmd = t("debug/subscribe-profile-version-cmd") |
| … | … | @@ -1,153 +1,137 @@ |
| 1 | 1 | import { |
| 2 | 2 | put as e, |
| 3 | 3 | all as a, |
| 4 | call as i, | |
| 5 | select as t, | |
| 6 | takeLatest as o, | |
| 7 | fork as r, | |
| 8 | take as l, | |
| 4 | call as t, | |
| 5 | select as i, | |
| 6 | takeLatest as d, | |
| 7 | fork as g, | |
| 8 | take as o, | |
| 9 | 9 | } from "redux-saga/effects" |
| 10 | 10 | import { |
| 11 | lockDebug as d, | |
| 12 | unlockDebug as g, | |
| 13 | toggleDebug as s, | |
| 14 | toggleOffline as u, | |
| 15 | toggleSuspendCmd as y, | |
| 16 | setDebugFlags as c, | |
| 17 | fetchDebugFlags as p, | |
| 18 | updateDebugFlag as n, | |
| 19 | getIsSuspended as f, | |
| 11 | lockDebug as l, | |
| 12 | unlockDebug as r, | |
| 13 | toggleDebug as u, | |
| 14 | toggleOffline as y, | |
| 15 | toggleSuspendCmd as c, | |
| 16 | setDebugFlags as p, | |
| 17 | fetchDebugFlags as s, | |
| 18 | updateDebugFlag as f, | |
| 19 | getIsSuspended as n, | |
| 20 | 20 | getIsDebugUnlocked as S, |
| 21 | getIsOffline as b, | |
| 22 | setSuspended as m, | |
| 21 | getIsOffline as m, | |
| 22 | setSuspended as b, | |
| 23 | 23 | setSuspendDisabled as D, |
| 24 | 24 | startAudit as h, |
| 25 | 25 | setAuditReport as F, |
| 26 | 26 | setAuditError as x, |
| 27 | setStartAudit as P, | |
| 28 | upgradePrivateProfile as V, | |
| 29 | subscribeProfileVersionCmd as A, | |
| 30 | setProfileVersion as O, | |
| 31 | setLocalDbCompacting as k, | |
| 32 | startLocalDbCompact as v, | |
| 27 | setStartAudit as A, | |
| 28 | upgradePrivateProfile as O, | |
| 29 | setLocalDbCompacting as P, | |
| 30 | startLocalDbCompact as k, | |
| 33 | 31 | setLocalDbCompactSuccess as C, |
| 34 | setLocalDbCompactError as I, | |
| 32 | setLocalDbCompactError as L, | |
| 35 | 33 | } from "./debug.reducer" |
| 36 | import { uiAutomationSaga as L } from "./ui-automation.saga" | |
| 37 | import { DEBUG_OFFLINE_FLAGS as B } from "./debug.constants" | |
| 38 | import { getCoreBackend as R } from "../../backend" | |
| 39 | import { apiCall as E } from "../../api/core" | |
| 40 | import { taskErrorSaga as M } from "../error" | |
| 41 | import { unlockStats as N } from "../stats" | |
| 42 | import { getMyIdentity as T, setPrivateProfileVersion as j } from "../identity" | |
| 43 | import { apiSubscribeSaga as q } from "../lib" | |
| 34 | import { uiAutomationSaga as B } from "./ui-automation.saga" | |
| 35 | import { DEBUG_OFFLINE_FLAGS as v } from "./debug.constants" | |
| 36 | import { getCoreBackend as I } from "../../backend" | |
| 37 | import { apiCall as M } from "../../api/core" | |
| 38 | import { taskErrorSaga as N } from "../error" | |
| 39 | import { unlockStats as R } from "../stats" | |
| 40 | import { getMyIdentity as T } from "../identity" | |
| 44 | 41 | export function* fetchDebugFlagsSaga() { |
| 45 | 42 | try { |
| 46 | const a = R(), | |
| 47 | i = yield E(a.getDebugFlags) | |
| 48 | yield e(c(i)) | |
| 43 | const a = I(), | |
| 44 | t = yield M(a.getDebugFlags) | |
| 45 | yield e(p(t)) | |
| 49 | 46 | } catch (e) { |
| 50 | yield M("fetchDebugFlagsSaga", e) | |
| 47 | yield N("fetchDebugFlagsSaga", e) | |
| 51 | 48 | } |
| 52 | 49 | } |
| 53 | 50 | export function* toggleOfflineSaga() { |
| 54 | 51 | try { |
| 55 | const e = R(), | |
| 56 | o = yield t(b), | |
| 57 | r = B | |
| 58 | ;(yield a(r.map((a) => E(e.updateDebugFlag, a, !o))), yield i(fetchDebugFlagsSaga)) | |
| 52 | const e = I(), | |
| 53 | d = yield i(m), | |
| 54 | g = v | |
| 55 | ;(yield a(g.map((a) => M(e.updateDebugFlag, a, !d))), yield t(fetchDebugFlagsSaga)) | |
| 59 | 56 | } catch (e) { |
| 60 | yield M("toggleOfflineSaga", e) | |
| 57 | yield N("toggleOfflineSaga", e) | |
| 61 | 58 | } |
| 62 | 59 | } |
| 63 | 60 | export function* suspendSaga() { |
| 64 | 61 | try { |
| 65 | const a = R() | |
| 62 | const a = I() | |
| 66 | 63 | for (;;) |
| 67 | (yield l(y), | |
| 64 | (yield o(c), | |
| 68 | 65 | yield e(D(!0)), |
| 69 | (yield t(f)) ? (yield E(a.resume), yield e(m(!1))) : (yield E(a.suspend), yield e(m(!0))), | |
| 66 | (yield i(n)) ? (yield M(a.resume), yield e(b(!1))) : (yield M(a.suspend), yield e(b(!0))), | |
| 70 | 67 | yield e(D(!1))) |
| 71 | 68 | } catch (e) { |
| 72 | yield M("toggleSuspendSaga", e) | |
| 69 | yield N("toggleSuspendSaga", e) | |
| 73 | 70 | } |
| 74 | 71 | } |
| 75 | 72 | export function* toggleDebugSaga() { |
| 76 | ;(yield t(S)) ? yield e(d()) : yield e(g()) | |
| 73 | ;(yield i(S)) ? yield e(l()) : yield e(r()) | |
| 77 | 74 | } |
| 78 | 75 | export function* updateDebugFlagSaga({ payload: e }) { |
| 79 | 76 | try { |
| 80 | const { key: a, value: t } = e, | |
| 81 | o = R() | |
| 82 | ;(yield E(o.updateDebugFlag, a, t), yield i(fetchDebugFlagsSaga)) | |
| 77 | const { key: a, value: i } = e, | |
| 78 | d = I() | |
| 79 | ;(yield M(d.updateDebugFlag, a, i), yield t(fetchDebugFlagsSaga)) | |
| 83 | 80 | } catch (e) { |
| 84 | yield M("updateDebugFlagSaga", e) | |
| 81 | yield N("updateDebugFlagSaga", e) | |
| 85 | 82 | } |
| 86 | 83 | } |
| 87 | 84 | export function* startAuditSaga() { |
| 88 | 85 | try { |
| 89 | const a = R() | |
| 90 | yield e(P()) | |
| 91 | const i = yield E(a.audit) | |
| 92 | let t = 0, | |
| 93 | o = 0, | |
| 94 | r = 0 | |
| 95 | for (const { audit: e } of i) | |
| 86 | const a = I() | |
| 87 | yield e(A()) | |
| 88 | const t = yield M(a.audit) | |
| 89 | let i = 0, | |
| 90 | d = 0, | |
| 91 | g = 0 | |
| 92 | for (const { audit: e } of t) | |
| 96 | 93 | (e.droppedBits || e.droppedBlocks || e.droppedTreeNodes || e.corrupt) && |
| 97 | ((t += 1), e.corrupt ? (r += 1) : (o += 1)) | |
| 98 | yield e(F({ report: i, issues: t, dropped: o, corrupt: r })) | |
| 94 | ((i += 1), e.corrupt ? (g += 1) : (d += 1)) | |
| 95 | yield e(F({ report: t, issues: i, dropped: d, corrupt: g })) | |
| 99 | 96 | } catch (a) { |
| 100 | ;(yield e(x(a.message)), yield M("startAuditSaga", a)) | |
| 97 | ;(yield e(x(a.message)), yield N("startAuditSaga", a)) | |
| 101 | 98 | } |
| 102 | 99 | } |
| 103 | 100 | export function* startLocalDbCompactSaga() { |
| 104 | 101 | try { |
| 105 | const a = R() | |
| 106 | ;(yield e(k()), yield E(a.compact), yield e(C())) | |
| 102 | const a = I() | |
| 103 | ;(yield e(P()), yield M(a.compact), yield e(C())) | |
| 107 | 104 | } catch (a) { |
| 108 | ;(yield e(I(a.message)), yield M("compactSaga", a)) | |
| 105 | ;(yield e(L(a.message)), yield N("compactSaga", a)) | |
| 109 | 106 | } |
| 110 | 107 | } |
| 111 | 108 | export function* upgradeProfileSaga() { |
| 112 | 109 | try { |
| 113 | const a = R(), | |
| 114 | o = yield t(T) | |
| 115 | if (!o) return | |
| 116 | yield i(a.upgradeRoom, o.profileId) | |
| 117 | const { version: r } = yield i(a.getVersion, o.profileId) | |
| 118 | yield e(j(r)) | |
| 110 | const e = I(), | |
| 111 | a = yield i(T) | |
| 112 | if (!a) return | |
| 113 | yield t(e.upgradeRoom, a.profileId) | |
| 119 | 114 | } catch (e) { |
| 120 | yield M("upgradeProfileSaga", e) | |
| 115 | yield N("upgradeProfileSaga", e) | |
| 121 | 116 | } |
| 122 | 117 | } |
| 123 | export function* subscribeProfileVersionSaga({ payload: a }) { | |
| 124 | if (!a) return | |
| 125 | const i = yield t(T) | |
| 126 | if (!i) return | |
| 127 | const o = R() | |
| 128 | yield q([o.subscribeRoomVersion, i.profileId], (a) => e(O(a?.version || "")), { | |
| 129 | onError: (e) => M("subscribeProfileVersionSaga", e), | |
| 130 | }) | |
| 131 | } | |
| 132 | 118 | export function* debugMobileSaga() { |
| 133 | ;(yield r(suspendSaga), | |
| 134 | yield o(p, fetchDebugFlagsSaga), | |
| 135 | yield o(n, updateDebugFlagSaga), | |
| 136 | yield o(u, toggleOfflineSaga), | |
| 137 | yield o(h, startAuditSaga), | |
| 138 | yield o(v, startLocalDbCompactSaga), | |
| 139 | yield o(A, subscribeProfileVersionSaga), | |
| 140 | yield o(V, upgradeProfileSaga)) | |
| 119 | ;(yield g(suspendSaga), | |
| 120 | yield d(s, fetchDebugFlagsSaga), | |
| 121 | yield d(f, updateDebugFlagSaga), | |
| 122 | yield d(y, toggleOfflineSaga), | |
| 123 | yield d(h, startAuditSaga), | |
| 124 | yield d(k, startLocalDbCompactSaga), | |
| 125 | yield d(O, upgradeProfileSaga)) | |
| 141 | 126 | } |
| 142 | 127 | export function* debugSaga() { |
| 143 | ;(yield r(suspendSaga), | |
| 144 | yield o(h, startAuditSaga), | |
| 145 | yield o(v, startLocalDbCompactSaga), | |
| 146 | yield o(s, toggleDebugSaga), | |
| 147 | yield o(u, toggleOfflineSaga), | |
| 148 | yield o(g, L), | |
| 149 | yield o(A, subscribeProfileVersionSaga), | |
| 150 | yield o(V, upgradeProfileSaga), | |
| 151 | yield o(n, updateDebugFlagSaga), | |
| 152 | yield o([N, p], fetchDebugFlagsSaga)) | |
| 128 | ;(yield g(suspendSaga), | |
| 129 | yield d(h, startAuditSaga), | |
| 130 | yield d(k, startLocalDbCompactSaga), | |
| 131 | yield d(u, toggleDebugSaga), | |
| 132 | yield d(y, toggleOfflineSaga), | |
| 133 | yield d(r, B), | |
| 134 | yield d(O, upgradeProfileSaga), | |
| 135 | yield d(f, updateDebugFlagSaga), | |
| 136 | yield d([R, s], fetchDebugFlagsSaga)) | |
| 153 | 137 | } |
| … | … | @@ -54,3 +54,5 @@ export const AVATAR_SIZE_CONF = { |
| 54 | 54 | } |
| 55 | 55 | export const QUERY_IDENTITY_SOURCE = { GLOBAL: "GLOBAL", START_NEW_CHAT: "START_NEW_CHAT" } |
| 56 | 56 | export const USER_SETTINGS_KEY = { DISABLE_READ_RECEIPTS: "disableReadReceipts" } |
| 57 | export const CHAT_INVITATION = "chat" | |
| 58 | export const LINK_INVITATION = "link" |
| … | … | @@ -1,3 +1,4 @@ |
| 1 | import { CHAT_INVITATION as t } from "./identity.constants" | |
| 1 | 2 | export const PUBLIC_INVITE_PREFIX = "https://pears.com/invite/" |
| 2 | 3 | export const getPearInvitationContextRegExp = (t) => { |
| 3 | 4 | const n = t.join("|") |
| … | … | @@ -21,12 +22,7 @@ export const parseInvitation = (t, n) => { |
| 21 | 22 | } |
| 22 | 23 | export const removeInvitationQueryParams = (t) => t.split("?")[0] |
| 23 | 24 | export const isInvitation = (t, n) => !!parseInvitation(t, n) |
| 24 | export function createInvitationLink({ | |
| 25 | applicationKey: t, | |
| 26 | invitation: n, | |
| 27 | isPublic: o, | |
| 28 | appProtocol: i, | |
| 29 | }) { | |
| 25 | export function createInvitationLink({ invitation: n, isPublic: o, appProtocol: i }) { | |
| 30 | 26 | return `${o ? PUBLIC_INVITE_PREFIX : `${i}://`}${t}/${n}` |
| 31 | 27 | } |
| 32 | 28 | export const trimRoomInvitation = (t, n) => { |
| … | … | @@ -1,4 +1,4 @@ |
| 1 | import { calcAvatarColor as e } from "../lib/color" | |
| 1 | import { calcAvatarColorById as e } from "../lib/color" | |
| 2 | 2 | import { |
| 3 | 3 | CONTROL_WORD_5TH_INDEX as t, |
| 4 | 4 | CONTROL_WORD_12TH_INDEX as r, |
| … | … | @@ -53,8 +53,9 @@ export const normalizeIdentity = (t) => { |
| 53 | 53 | isLoggedOut: i, |
| 54 | 54 | hasDiscoveryKey: d, |
| 55 | 55 | settings: c, |
| 56 | version: l, | |
| 56 | 57 | } = t || {}, |
| 57 | l = a | |
| 58 | m = a | |
| 58 | 59 | .map(({ deviceId: e, name: t, confirmed: a, isMobile: o }) => ({ |
| 59 | 60 | deviceId: e, |
| 60 | 61 | name: t, |
| … | … | @@ -62,23 +63,26 @@ export const normalizeIdentity = (t) => { |
| 62 | 63 | current: e === r?.deviceId, |
| 63 | 64 | confirmed: a, |
| 64 | 65 | })) |
| 65 | .sort((e) => (e.current ? -1 : 1)) | |
| 66 | .sort((e) => (e.current ? -1 : 1)), | |
| 67 | p = isAnonymousIdentityData(t) ? n.ANONYMOUS : n.COMPLETE, | |
| 68 | u = t.memberId ?? "" | |
| 66 | 69 | return { |
| 67 | status: isAnonymousIdentityData(t) ? n.ANONYMOUS : n.COMPLETE, | |
| 70 | status: p, | |
| 68 | 71 | avatar: t.avatar ?? null, |
| 69 | 72 | avatarUrl: getAvatarUrl(t.avatar), |
| 70 | 73 | avatarUrlMedium: getAvatarUrlMedium(t.avatar), |
| 71 | 74 | displayName: t.displayName ?? "", |
| 72 | 75 | username: t.username || "", |
| 73 | color: e(t.displayName || ""), | |
| 76 | color: e(u), | |
| 74 | 77 | local: r, |
| 75 | memberId: t.memberId ?? "", | |
| 78 | memberId: u, | |
| 76 | 79 | hasDiscoveryKey: d, |
| 77 | devices: l, | |
| 80 | devices: m, | |
| 78 | 81 | loggedOut: i, |
| 79 | 82 | confirmed: o, |
| 80 | 83 | profileId: t.profileId || "", |
| 81 | 84 | settings: c, |
| 85 | privateProfileVersion: l, | |
| 82 | 86 | } |
| 83 | 87 | } |
| 84 | 88 | export const normalizeRecoveryPhrase = (e) => e.toLowerCase().trim().split(/\s+/).join(" ") |
| … | … | @@ -4,8 +4,8 @@ import { |
| 4 | 4 | IDENTITY_MEMBER_STATUS as c, |
| 5 | 5 | IDENTITY_STATUS as a, |
| 6 | 6 | IDENTITY_USERNAME_STATUS as s, |
| 7 | IDENTITY_USERNAME_SAVE_STATUS as d, | |
| 8 | QUERY_IDENTITY_SOURCE as o, | |
| 7 | IDENTITY_USERNAME_SAVE_STATUS as o, | |
| 8 | QUERY_IDENTITY_SOURCE as d, | |
| 9 | 9 | MAX_REMAINING_EDITS as y, |
| 10 | 10 | AVATAR_BASE_EMPTY_URL as I, |
| 11 | 11 | } from "./identity.constants" |
| … | … | @@ -52,10 +52,10 @@ export const MY_IDENTITY_INITIAL_STATE = { |
| 52 | 52 | local: {}, |
| 53 | 53 | memberId: "", |
| 54 | 54 | profileId: "", |
| 55 | searchResults: { [o.GLOBAL]: l, [o.START_NEW_CHAT]: l }, | |
| 55 | searchResults: { [d.GLOBAL]: l, [d.START_NEW_CHAT]: l }, | |
| 56 | 56 | selectedProfile: { contactInfo: null }, |
| 57 | 57 | usernameStatus: s.UNKNOWN, |
| 58 | createUsernameStatus: d.UNKNOWN, | |
| 58 | createUsernameStatus: o.UNKNOWN, | |
| 59 | 59 | deviceLoading: !1, |
| 60 | 60 | deviceLoadError: "", |
| 61 | 61 | invitationLink: "", |
| … | … | @@ -242,11 +242,11 @@ export const identitySlice = i({ |
| 242 | 242 | e.termsOfService = t |
| 243 | 243 | }, |
| 244 | 244 | queryIdentityRecords: (e, { payload: t }) => { |
| 245 | const i = t.opts?.source || o.GLOBAL | |
| 245 | const i = t.opts?.source || d.GLOBAL | |
| 246 | 246 | ;((e.myIdentity.searchResults[i].isSearching = !0), (e.myIdentity.searchResults[i].list = [])) |
| 247 | 247 | }, |
| 248 | 248 | updateIdentitySearchList: (e, { payload: t }) => { |
| 249 | const { list: i, source: r = o.GLOBAL } = t | |
| 249 | const { list: i, source: r = d.GLOBAL } = t | |
| 250 | 250 | ;((e.myIdentity.searchResults[r].isSearching = !1), (e.myIdentity.searchResults[r].list = i)) |
| 251 | 251 | }, |
| 252 | 252 | updateIdentitySelectedProfile: (e, { payload: t }) => { |
| … | … | @@ -260,14 +260,14 @@ export const identitySlice = i({ |
| 260 | 260 | }, |
| 261 | 261 | updateUsernameReservationInfo: (e, t) => { |
| 262 | 262 | const { error: i, username: r, status: n, count: c } = t.payload || {} |
| 263 | ;(n === d.RESERVED && (e.myIdentity.actionType = void 0), | |
| 263 | ;(n === o.RESERVED && (e.myIdentity.actionType = void 0), | |
| 264 | 264 | (e.myIdentity.createUsernameStatus = n ?? e.myIdentity.createUsernameStatus), |
| 265 | 265 | (e.myIdentity.username = r ?? e.myIdentity.username), |
| 266 | 266 | (e.myIdentity.usernameError = i ?? e.myIdentity.usernameError), |
| 267 | 267 | (e.myIdentity.usernameEditCounts = c ?? e.myIdentity.usernameEditCounts)) |
| 268 | 268 | }, |
| 269 | 269 | resetUsernameReservationInfo: (e) => { |
| 270 | ;((e.myIdentity.usernameError = void 0), (e.myIdentity.createUsernameStatus = d.NOT_STARTED)) | |
| 270 | ;((e.myIdentity.usernameError = void 0), (e.myIdentity.createUsernameStatus = o.NOT_STARTED)) | |
| 271 | 271 | }, |
| 272 | 272 | updatePeerIdentity: (e, { payload: t }) => { |
| 273 | 273 | const { memberId: i, identityRecord: r } = t |
| … | … | @@ -360,7 +360,7 @@ export const getTermsOfService = (e) => getIdentityState(e).termsOfService |
| 360 | 360 | export const getIdentityDeviceLoading = (e) => getIdentityState(e).myIdentity.deviceLoading |
| 361 | 361 | export const getIdentityDeviceLoadError = (e) => getIdentityState(e).myIdentity.deviceLoadError |
| 362 | 362 | export const getIdentitySearchResult = |
| 363 | (e = o.GLOBAL) => | |
| 363 | (e = d.GLOBAL) => | |
| 364 | 364 | (t) => |
| 365 | 365 | getIdentityState(t).myIdentity.searchResults[e] || l |
| 366 | 366 | export const getIdentitySelectedProfile = (e) => getIdentityState(e).myIdentity.selectedProfile |
| … | … | @@ -380,20 +380,25 @@ export const getRemainingEdits = (e) => { |
| 380 | 380 | export const getCanEditUsername = t( |
| 381 | 381 | [(e) => getIdentityState(e).myIdentity, (e) => getRemainingEdits(e)], |
| 382 | 382 | ({ createUsernameStatus: e, username: t }, i) => |
| 383 | t && e !== d.RESERVING && e !== d.EDITING_LIMIT_EXCEEDED && null != i && i > 0, | |
| 383 | t && e !== o.RESERVING && e !== o.EDITING_LIMIT_EXCEEDED && null != i && i > 0, | |
| 384 | 384 | ) |
| 385 | 385 | export const getRemoveDeviceStatus = (e) => getIdentityState(e).removeDeviceStatus |
| 386 | 386 | export const getUsernameError = (e) => getIdentityState(e).myIdentity.usernameError |
| 387 | 387 | export const getIsReadReceiptsDisabled = (e) => |
| 388 | 388 | getIdentityState(e).myIdentity.settings.disableReadReceipts |
| 389 | export const getPrivateProfileVersion = (e) => getIdentityState(e).myIdentity.privateProfileVersion | |
| 389 | 390 | export const getIsReadReceiptsSupported = (e) => { |
| 390 | const { privateProfileVersion: t } = getIdentityState(e).myIdentity | |
| 391 | const t = getPrivateProfileVersion(e) | |
| 391 | 392 | return r(t, n.PRIVATE_PROFILE_SETTINGS) |
| 392 | 393 | } |
| 393 | 394 | export const getIsFavoriteRoomSupported = (e) => { |
| 394 | const { privateProfileVersion: t } = getIdentityState(e).myIdentity | |
| 395 | const t = getPrivateProfileVersion(e) | |
| 395 | 396 | return r(t, n.FAVORITE_ROOMS) |
| 396 | 397 | } |
| 398 | export const getIsRoomMarkUnreadSupported = (e) => { | |
| 399 | const t = getPrivateProfileVersion(e) | |
| 400 | return r(t, n.ROOM_MARK_UNREAD) | |
| 401 | } | |
| 397 | 402 | export const { |
| 398 | 403 | setAccountRecoveryAgreement: setAccountRecoveryAgreement, |
| 399 | 404 | setAccountRecoverySuccess: setAccountRecoverySuccess, |
| … | … | @@ -3,98 +3,98 @@ import { ERRORS as i } from "@holepunchto/keet-core/legacy-constants" |
| 3 | 3 | import { |
| 4 | 4 | all as t, |
| 5 | 5 | call as r, |
| 6 | delay as n, | |
| 7 | fork as d, | |
| 6 | delay as d, | |
| 7 | fork as n, | |
| 8 | 8 | getContext as a, |
| 9 | 9 | put as o, |
| 10 | 10 | race as y, |
| 11 | select as s, | |
| 12 | take as c, | |
| 11 | select as c, | |
| 12 | take as s, | |
| 13 | 13 | takeEvery as l, |
| 14 | 14 | takeLatest as m, |
| 15 | 15 | takeLeading as u, |
| 16 | 16 | } from "redux-saga/effects" |
| 17 | import { getCoreBackend as f } from "../../backend" | |
| 18 | import { apiCall as p } from "../../api/core" | |
| 17 | import { getCoreBackend as p } from "../../backend" | |
| 18 | import { apiCall as f } from "../../api/core" | |
| 19 | 19 | import { ENV_CONTEXT_KEY as g, PLATFORM_CONTEXT_KEY as I } from "../constants" |
| 20 | import { pairInvalidInviteError as v, taskErrorSaga as b } from "../error" | |
| 20 | import { pairInvalidInviteError as b, taskErrorSaga as v } from "../error" | |
| 21 | 21 | import { apiSubscribeSaga as E, apiTakeEvery as S, apiTakeMatch as h } from "../lib" |
| 22 | 22 | import { |
| 23 | 23 | IDENTITY_STATUS as D, |
| 24 | 24 | IDENTITY_USERNAME_ACTION_TYPE as U, |
| 25 | IDENTITY_USERNAME_SAVE_STATUS as R, | |
| 26 | IDENTITY_USERNAME_STATUS as x, | |
| 27 | IDENTITY_VERIFY_DELAY as L, | |
| 28 | QUERY_IDENTITY_DELAY as k, | |
| 29 | QUERY_IDENTITY_LIMIT as P, | |
| 30 | QUERY_IDENTITY_REQUEST_TIMEOUT as O, | |
| 31 | QUERY_IDENTITY_SOURCE as A, | |
| 25 | IDENTITY_USERNAME_SAVE_STATUS as L, | |
| 26 | IDENTITY_USERNAME_STATUS as R, | |
| 27 | IDENTITY_VERIFY_DELAY as x, | |
| 28 | LINK_INVITATION as k, | |
| 29 | QUERY_IDENTITY_DELAY as O, | |
| 30 | QUERY_IDENTITY_LIMIT as A, | |
| 31 | QUERY_IDENTITY_REQUEST_TIMEOUT as T, | |
| 32 | QUERY_IDENTITY_SOURCE as C, | |
| 32 | 33 | } from "./identity.constants" |
| 33 | 34 | import { |
| 34 | isValidIdentityUsername as T, | |
| 35 | parseUserSearchItem as V, | |
| 36 | parseUserSearchResponse as C, | |
| 35 | isValidIdentityUsername as N, | |
| 36 | parseUserSearchItem as P, | |
| 37 | parseUserSearchResponse as w, | |
| 37 | 38 | } from "./identity.model" |
| 38 | 39 | import { |
| 39 | addIdentityInvitedDevice as N, | |
| 40 | approveIdentityInvitedDevice as w, | |
| 41 | cancelIdentityInvitationLink as _, | |
| 42 | createIdentityInvitationLink as F, | |
| 43 | createIdentityUsernameCmd as G, | |
| 44 | getIdentityInvitationLink as j, | |
| 45 | getIdentityInvitedDevices as q, | |
| 46 | getIdentityStatus as H, | |
| 47 | rejectIdentityInvitedDevice as M, | |
| 40 | addIdentityInvitedDevice as V, | |
| 41 | approveIdentityInvitedDevice as _, | |
| 42 | cancelIdentityInvitationLink as F, | |
| 43 | createIdentityInvitationLink as G, | |
| 44 | createIdentityUsernameCmd as j, | |
| 45 | getIdentityInvitationLink as q, | |
| 46 | getIdentityInvitedDevices as H, | |
| 47 | getIdentityStatus as M, | |
| 48 | rejectIdentityInvitedDevice as $, | |
| 48 | 49 | removeIdentityInvitedDevice as K, |
| 49 | setIdentity as $, | |
| 50 | setIdentityAsked as B, | |
| 51 | setIdentityInvitationLink as W, | |
| 52 | setSyncDeviceErrorMsg as Y, | |
| 53 | updateIdentityDeviceFailure as X, | |
| 54 | updateIdentityDeviceRequest as z, | |
| 55 | updateIdentityDeviceSuccess as J, | |
| 56 | updateIdentitySearchList as Q, | |
| 57 | verifyIdentityUsernameCmd as Z, | |
| 58 | updateIdentityVerifyStatus as ee, | |
| 59 | resetIdentityVerifyStatus as ie, | |
| 60 | askIdentityLoad as te, | |
| 61 | updatePeerIdentity as re, | |
| 50 | setIdentity as B, | |
| 51 | setIdentityAsked as W, | |
| 52 | setIdentityInvitationLink as Y, | |
| 53 | setSyncDeviceErrorMsg as X, | |
| 54 | updateIdentityDeviceFailure as z, | |
| 55 | updateIdentityDeviceRequest as J, | |
| 56 | updateIdentityDeviceSuccess as Q, | |
| 57 | updateIdentitySearchList as Z, | |
| 58 | verifyIdentityUsernameCmd as ee, | |
| 59 | updateIdentityVerifyStatus as ie, | |
| 60 | resetIdentityVerifyStatus as te, | |
| 61 | askIdentityLoad as re, | |
| 62 | updatePeerIdentity as de, | |
| 62 | 63 | getMyMemberId as ne, |
| 63 | createAndSubmitBackup as de, | |
| 64 | getIsIdentityConfirmed as ae, | |
| 65 | submitBackupSuccess as oe, | |
| 66 | queryIdentityRecords as ye, | |
| 64 | createAndSubmitBackup as ae, | |
| 65 | getIsIdentityConfirmed as oe, | |
| 66 | submitBackupSuccess as ye, | |
| 67 | queryIdentityRecords as ce, | |
| 67 | 68 | editIdentityUsernameCmd as se, |
| 68 | fetchMyContactInvitationCmd as ce, | |
| 69 | getAccountRecoveryLoading as le, | |
| 70 | setAccountRecoverySuccess as me, | |
| 71 | removeLinkedDevice as ue, | |
| 69 | fetchMyContactInvitationCmd as le, | |
| 70 | getAccountRecoveryLoading as me, | |
| 71 | setAccountRecoverySuccess as ue, | |
| 72 | removeLinkedDevice as pe, | |
| 72 | 73 | updateRemoveDeviceStatus as fe, |
| 73 | getCreateUsernameStatus as pe, | |
| 74 | setIdentityUsernameActionType as ge, | |
| 75 | updateUsernameReservationInfo as Ie, | |
| 74 | getCreateUsernameStatus as ge, | |
| 75 | setIdentityUsernameActionType as Ie, | |
| 76 | updateUsernameReservationInfo as be, | |
| 76 | 77 | resetUsernameReservationInfo as ve, |
| 77 | identityLoggedOut as be, | |
| 78 | updateUserSettingsCmd as Ee, | |
| 79 | fetchPrivateProfileStatsCmd as Se, | |
| 80 | setPrivateProfileStats as he, | |
| 81 | setPrivateProfileVersion as De, | |
| 78 | identityLoggedOut as Ee, | |
| 79 | updateUserSettingsCmd as Se, | |
| 80 | fetchPrivateProfileStatsCmd as he, | |
| 81 | setPrivateProfileStats as De, | |
| 82 | 82 | getMyIdentity as Ue, |
| 83 | getIdentityState as Re, | |
| 83 | getIdentityState as Le, | |
| 84 | 84 | } from "./identity.reducer" |
| 85 | import { identityUserProfileSaga as xe } from "./identity-profile.saga" | |
| 86 | import { accountRecoverSaga as Le } from "./saga/account-recover.saga" | |
| 85 | import { identityUserProfileSaga as Re } from "./identity-profile.saga" | |
| 86 | import { accountRecoverSaga as xe } from "./saga/account-recover.saga" | |
| 87 | 87 | import { backupCreateSaga as ke } from "./saga/backup-create.saga" |
| 88 | import { syncDeviceSaga as Pe } from "./saga/sync-device.saga" | |
| 89 | import { secretPhraseSaga as Oe } from "./saga/secret-phrase-saga" | |
| 90 | import { blockMemberSaga as Ae, unblockMemberSaga as Te } from "./member/identity-member.saga" | |
| 88 | import { syncDeviceSaga as Oe } from "./saga/sync-device.saga" | |
| 89 | import { secretPhraseSaga as Ae } from "./saga/secret-phrase-saga" | |
| 90 | import { blockMemberSaga as Te, unblockMemberSaga as Ce } from "./member/identity-member.saga" | |
| 91 | 91 | import { |
| 92 | blockMemberCmd as Ve, | |
| 93 | initBlockedMembersSubscription as Ce, | |
| 94 | unblockMemberCmd as Ne, | |
| 92 | blockMemberCmd as Ne, | |
| 93 | initBlockedMembersSubscription as Pe, | |
| 94 | unblockMemberCmd as we, | |
| 95 | 95 | } from "./member" |
| 96 | 96 | import { |
| 97 | NOTIFICATION_CODE as we, | |
| 97 | NOTIFICATION_CODE as Ve, | |
| 98 | 98 | userCustomNotification as _e, |
| 99 | 99 | userSuccessNotification as Fe, |
| 100 | 100 | } from "../notification" |
| … | … | @@ -103,276 +103,262 @@ import { fetchMyContactInvitationSaga as je } from "./saga/fetch-my-contact-invi |
| 103 | 103 | export function* updateIdentityDeviceSaga({ payload: e }) { |
| 104 | 104 | try { |
| 105 | 105 | const { name: i, deviceId: t } = e, |
| 106 | r = f(), | |
| 107 | n = i || t | |
| 108 | ;(yield p(r.updateIdentityDevice, { name: n }), yield o(J({ name: n, deviceId: t }))) | |
| 106 | r = p(), | |
| 107 | d = i || t | |
| 108 | ;(yield f(r.updateIdentityDevice, { name: d }), yield o(Q({ name: d, deviceId: t }))) | |
| 109 | 109 | } catch (e) { |
| 110 | ;(yield o(X({ error: e.message })), yield b("updateIdentityDeviceSaga", e)) | |
| 110 | ;(yield o(z({ error: e.message })), yield v("updateIdentityDeviceSaga", e)) | |
| 111 | 111 | } |
| 112 | 112 | } |
| 113 | 113 | export function* approveIdentityInvitedDeviceSaga({ payload: e }) { |
| 114 | 114 | try { |
| 115 | const i = (yield s(q)).find((i) => i.deviceId === e) | |
| 115 | const i = (yield c(H)).find((i) => i.deviceId === e) | |
| 116 | 116 | if (!i) throw new Error("wrong device to approve") |
| 117 | const t = f() | |
| 118 | yield p(t.confirmPairingRequest, i, !0) | |
| 117 | const t = p() | |
| 118 | yield f(t.confirmPairingRequest, i, !0) | |
| 119 | 119 | } catch (e) { |
| 120 | yield b("approveIdentityInvitedDeviceSaga", e) | |
| 120 | yield v("approveIdentityInvitedDeviceSaga", e) | |
| 121 | 121 | } finally { |
| 122 | 122 | yield o(K(e)) |
| 123 | 123 | } |
| 124 | 124 | } |
| 125 | 125 | export function* rejectIdentityInvitedDeviceSaga({ payload: e }) { |
| 126 | 126 | try { |
| 127 | const i = (yield s(q)).find((i) => i.deviceId === e) | |
| 127 | const i = (yield c(H)).find((i) => i.deviceId === e) | |
| 128 | 128 | if (!i) throw new Error("wrong device to reject") |
| 129 | const t = f() | |
| 130 | yield p(t.confirmPairingRequest, i, !1) | |
| 129 | const t = p() | |
| 130 | yield f(t.confirmPairingRequest, i, !1) | |
| 131 | 131 | } catch (e) { |
| 132 | yield b("rejectIdentityInvitedDeviceSaga", e) | |
| 132 | yield v("rejectIdentityInvitedDeviceSaga", e) | |
| 133 | 133 | } finally { |
| 134 | 134 | yield o(K(e)) |
| 135 | 135 | } |
| 136 | 136 | } |
| 137 | 137 | export function* createIdentityInvitationLinkSaga() { |
| 138 | 138 | try { |
| 139 | if (yield s(j)) return | |
| 140 | const e = f(), | |
| 141 | [i, t] = yield y([c(_), p(e.createIdentityInvitation)]) | |
| 139 | if (yield c(q)) return | |
| 140 | const e = p(), | |
| 141 | [i, t] = yield y([s(F), f(e.createIdentityInvitation)]) | |
| 142 | 142 | if (!i && !t) throw new Error("unable to create invitation link") |
| 143 | 143 | if (!i) { |
| 144 | 144 | const { |
| 145 | 145 | config: { appProtocol: e }, |
| 146 | 146 | } = yield a(I) |
| 147 | yield o(W(`${e}://keet/${t}`)) | |
| 147 | yield o(Y(`${e}://${k}/${t}`)) | |
| 148 | 148 | } |
| 149 | 149 | } catch (e) { |
| 150 | yield b("createIdentityInvitationLinkSaga", e) | |
| 150 | yield v("createIdentityInvitationLinkSaga", e) | |
| 151 | 151 | } |
| 152 | 152 | } |
| 153 | 153 | export function* loadIdentitySync() { |
| 154 | 154 | try { |
| 155 | yield o(B()) | |
| 156 | const e = f(), | |
| 157 | i = yield p(e.getIdentity) | |
| 158 | yield o($(i)) | |
| 155 | yield o(W()) | |
| 156 | const e = p(), | |
| 157 | i = yield f(e.getIdentity) | |
| 158 | yield o(B(i)) | |
| 159 | 159 | } catch (e) { |
| 160 | yield b("loadIdentitySync", e, { isCritical: !0 }) | |
| 160 | yield v("loadIdentitySync", e, { isCritical: !0 }) | |
| 161 | 161 | } |
| 162 | 162 | return !0 |
| 163 | 163 | } |
| 164 | 164 | function* qe({ payload: e }) { |
| 165 | 165 | try { |
| 166 | if ((yield s(pe)) === R.RESERVING) return | |
| 167 | yield o(ge(U.UPDATE)) | |
| 168 | const i = f() | |
| 169 | yield p(i.updateUsername, e) | |
| 166 | if ((yield c(ge)) === L.RESERVING) return | |
| 167 | yield o(Ie(U.UPDATE)) | |
| 168 | const i = p() | |
| 169 | yield f(i.updateUsername, e) | |
| 170 | 170 | } catch (e) { |
| 171 | 171 | e?.code |
| 172 | ? yield o(Ie({ status: R.FAILED, error: e.code })) | |
| 173 | : (yield b("editIdentityUsername", e), yield o(ve())) | |
| 172 | ? yield o(be({ status: L.FAILED, error: e.code })) | |
| 173 | : (yield v("editIdentityUsername", e), yield o(ve())) | |
| 174 | 174 | } |
| 175 | 175 | } |
| 176 | 176 | function* He({ payload: e }) { |
| 177 | 177 | try { |
| 178 | yield o(ge(U.CREATE)) | |
| 179 | const i = f() | |
| 180 | yield p(i.registerUsername, e) | |
| 178 | yield o(Ie(U.CREATE)) | |
| 179 | const i = p() | |
| 180 | yield f(i.registerUsername, e) | |
| 181 | 181 | } catch (e) { |
| 182 | 182 | ;(yield o(ve()), |
| 183 | e.code === we.OUTDATED_CLOCK | |
| 184 | ? yield o(_e({ code: we.OUTDATED_CLOCK })) | |
| 185 | : yield b("createIdentityUsername", e)) | |
| 183 | e.code === Ve.OUTDATED_CLOCK | |
| 184 | ? yield o(_e({ code: Ve.OUTDATED_CLOCK })) | |
| 185 | : yield v("createIdentityUsername", e)) | |
| 186 | 186 | } |
| 187 | 187 | } |
| 188 | 188 | function* Me({ payload: e }) { |
| 189 | yield n(k) | |
| 189 | yield d(O) | |
| 190 | 190 | try { |
| 191 | const i = f(), | |
| 191 | const i = p(), | |
| 192 | 192 | { prefix: t, opts: r = {} } = e, |
| 193 | { source: d = A.GLOBAL, limit: a = P } = r, | |
| 194 | [s, c] = yield y([p(i.searchUsername, t, { limit: a }), n(O)]) | |
| 195 | if (c) return void (yield o(Q({ list: [], source: d }))) | |
| 196 | const l = C({ response: s }) | |
| 197 | yield o(Q({ list: l, source: d })) | |
| 193 | { source: n = C.GLOBAL, limit: a = A } = r, | |
| 194 | [c, s] = yield y([f(i.searchUsername, t, { limit: a }), d(T)]) | |
| 195 | if (s) return void (yield o(Z({ list: [], source: n }))) | |
| 196 | const l = w({ response: c }) | |
| 197 | yield o(Z({ list: l, source: n })) | |
| 198 | 198 | } catch (e) { |
| 199 | yield b("queryIdentityRecordsSaga", e) | |
| 199 | yield v("queryIdentityRecordsSaga", e) | |
| 200 | 200 | } |
| 201 | 201 | } |
| 202 | function* Ke({ payload: e }) { | |
| 202 | function* $e({ payload: e }) { | |
| 203 | 203 | try { |
| 204 | if ((yield o(ee(x.CHECKING)), yield n(L), !e)) return void (yield o(ie())) | |
| 205 | if (!T(e)) return void (yield o(ee(x.INVALID_CHAR))) | |
| 206 | const i = f(), | |
| 207 | t = (yield p(i.checkUsername, e)) ? x.NOT_FOUND : x.EXISTS | |
| 208 | yield o(ee(t)) | |
| 204 | if ((yield o(ie(R.CHECKING)), yield d(x), !e)) return void (yield o(te())) | |
| 205 | if (!N(e)) return void (yield o(ie(R.INVALID_CHAR))) | |
| 206 | const i = p(), | |
| 207 | t = (yield f(i.checkUsername, e)) ? R.NOT_FOUND : R.EXISTS | |
| 208 | yield o(ie(t)) | |
| 209 | 209 | } catch (e) { |
| 210 | yield b("verifyIdentityUsernameSaga", e) | |
| 210 | yield v("verifyIdentityUsernameSaga", e) | |
| 211 | 211 | } |
| 212 | 212 | } |
| 213 | export function* identityPrivateProfileVersionSaga() { | |
| 214 | const { profileId: e } = yield s(Ue), | |
| 215 | i = f() | |
| 216 | yield E( | |
| 217 | [i.subscribeRoomVersion, e], | |
| 218 | function* (e) { | |
| 219 | const { privateProfileVersion: i } = yield s(Ue), | |
| 220 | t = e?.version | |
| 221 | t && t !== i && (yield o(De(t))) | |
| 222 | }, | |
| 223 | { onError: (e) => b("identityPrivateProfileVersionSaga", e) }, | |
| 224 | ) | |
| 225 | } | |
| 226 | function* $e() { | |
| 213 | function* Ke() { | |
| 227 | 214 | try { |
| 228 | const { profileId: e } = yield s(Ue), | |
| 229 | i = f(), | |
| 230 | [r, n] = yield t([p(i.getRoomStats, e), p(i.getRoomInfo, e)]) | |
| 215 | const { profileId: e } = yield c(Ue), | |
| 216 | i = p(), | |
| 217 | [r, d] = yield t([f(i.getRoomStats, e), f(i.getRoomInfo, e)]) | |
| 231 | 218 | yield o( |
| 232 | he({ | |
| 219 | De({ | |
| 233 | 220 | stats: { |
| 234 | 221 | roomInfo: { |
| 235 | version: n?.digest?.abi.version, | |
| 236 | experimental: n?.digest?.settings?.isExperimental, | |
| 222 | version: d?.digest?.abi.version, | |
| 223 | experimental: d?.digest?.settings?.isExperimental, | |
| 237 | 224 | }, |
| 238 | 225 | ...r, |
| 239 | 226 | }, |
| 240 | 227 | }), |
| 241 | 228 | ) |
| 242 | 229 | } catch (e) { |
| 243 | yield b("fetchRoomStatsSaga", e) | |
| 230 | yield v("fetchRoomStatsSaga", e) | |
| 244 | 231 | } |
| 245 | 232 | } |
| 246 | 233 | export function* identityErrorHandler() { |
| 247 | yield l(v, function* () { | |
| 248 | yield o(Y(i.INVALID_INVITATION_TYPE)) | |
| 234 | yield l(b, function* () { | |
| 235 | yield o(X(i.INVALID_INVITATION_TYPE)) | |
| 249 | 236 | }) |
| 250 | 237 | } |
| 251 | 238 | function* Be({ payload: { deviceId: e, message: i } }) { |
| 252 | 239 | try { |
| 253 | const t = f() | |
| 240 | const t = p() | |
| 254 | 241 | ;(yield o(fe({ isLoading: !0 })), |
| 255 | yield p(t.removeIdentityDevice, e), | |
| 242 | yield f(t.removeIdentityDevice, e), | |
| 256 | 243 | yield o(fe({ isLoading: !1, isSuccess: !0, isError: !1 })), |
| 257 | 244 | yield o(Fe({ message: i }))) |
| 258 | 245 | } catch (e) { |
| 259 | 246 | yield o(fe({ isLoading: !1, isError: !0, isSuccess: !1 })) |
| 260 | 247 | } |
| 261 | 248 | } |
| 262 | export function identityFeatureGate(i, t, n = []) { | |
| 249 | export function identityFeatureGate(i, t, d = []) { | |
| 263 | 250 | return function* () { |
| 264 | 251 | for (;;) { |
| 265 | const t = yield s(Re), | |
| 252 | const t = yield c(Le), | |
| 266 | 253 | r = t.myIdentity?.privateProfileVersion |
| 267 | 254 | if (e(r, i)) break |
| 268 | yield c(De) | |
| 255 | yield s(B) | |
| 269 | 256 | } |
| 270 | yield r(t, ...n) | |
| 257 | yield r(t, ...d) | |
| 271 | 258 | } |
| 272 | 259 | } |
| 273 | 260 | export function* identityWorker(e) { |
| 274 | 261 | const { username: i } = yield a(g) |
| 275 | 262 | switch (e) { |
| 276 | 263 | case D.ANONYMOUS: |
| 277 | yield b("Anonymous identity is not supported") | |
| 264 | yield v("Anonymous identity is not supported") | |
| 278 | 265 | break |
| 279 | 266 | case D.COMPLETE: |
| 280 | ;(yield d(Oe), | |
| 281 | yield d(Ge), | |
| 282 | yield u(w, approveIdentityInvitedDeviceSaga), | |
| 283 | yield u(M, rejectIdentityInvitedDeviceSaga), | |
| 284 | yield u(F, createIdentityInvitationLinkSaga), | |
| 285 | yield u(z, updateIdentityDeviceSaga), | |
| 286 | yield u(Ve, Ae), | |
| 267 | ;(yield n(Ae), | |
| 268 | yield n(Ge), | |
| 269 | yield u(_, approveIdentityInvitedDeviceSaga), | |
| 270 | yield u($, rejectIdentityInvitedDeviceSaga), | |
| 271 | yield u(G, createIdentityInvitationLinkSaga), | |
| 272 | yield u(J, updateIdentityDeviceSaga), | |
| 287 | 273 | yield u(Ne, Te), |
| 288 | yield u(ce, je), | |
| 289 | yield u(ue, Be), | |
| 290 | yield u(Se, $e), | |
| 291 | yield d(identityPrivateProfileVersionSaga), | |
| 292 | yield Ce(), | |
| 293 | (i?.registerEnabled || i?.searchEnabled) && (yield m(Z, Ke)), | |
| 294 | i?.registerEnabled && (yield u(G, He)), | |
| 295 | i?.searchEnabled && (yield m(ye, Me)), | |
| 296 | yield d(xe), | |
| 297 | yield S([f().subscribeIdentityPairingRequests], (e) => o(N(e)))) | |
| 274 | yield u(we, Ce), | |
| 275 | yield u(le, je), | |
| 276 | yield u(pe, Be), | |
| 277 | yield u(he, Ke), | |
| 278 | yield Pe(), | |
| 279 | (i?.registerEnabled || i?.searchEnabled) && (yield m(ee, $e)), | |
| 280 | i?.registerEnabled && (yield u(j, He)), | |
| 281 | i?.searchEnabled && (yield m(ce, Me)), | |
| 282 | yield n(Re), | |
| 283 | yield S([p().subscribeIdentityPairingRequests], (e) => o(V(e)))) | |
| 298 | 284 | break |
| 299 | 285 | default: |
| 300 | yield b("identitySaga", "no identity data available") | |
| 286 | yield v("identitySaga", "no identity data available") | |
| 301 | 287 | } |
| 302 | 288 | } |
| 303 | 289 | export function* memberIdentityLoad() { |
| 304 | yield l(te, function* ({ payload: e }) { | |
| 305 | const i = f(), | |
| 306 | t = yield p(i.lookupUserByMemberId, e) | |
| 307 | yield o(re({ memberId: e, identityRecord: V({ item: t }) })) | |
| 290 | yield l(re, function* ({ payload: e }) { | |
| 291 | const i = p(), | |
| 292 | t = yield f(i.lookupUserByMemberId, e) | |
| 293 | yield o(de({ memberId: e, identityRecord: P({ item: t }) })) | |
| 308 | 294 | }) |
| 309 | 295 | } |
| 310 | 296 | export function* identityOnboardingSaga() { |
| 311 | 297 | const { username: e } = yield a(g) |
| 312 | ;(yield d(ke), | |
| 313 | yield d(Pe), | |
| 314 | yield d(Le), | |
| 315 | yield u(z, updateIdentityDeviceSaga), | |
| 316 | (e?.searchEnabled || e?.registerEnabled) && (yield m(Z, Ke))) | |
| 298 | ;(yield n(ke), | |
| 299 | yield n(Oe), | |
| 300 | yield n(xe), | |
| 301 | yield u(J, updateIdentityDeviceSaga), | |
| 302 | (e?.searchEnabled || e?.registerEnabled) && (yield m(ee, $e))) | |
| 317 | 303 | } |
| 318 | 304 | export function* subscribeIdentityUsername() { |
| 319 | 305 | yield E( |
| 320 | [f().subscribeUsername], | |
| 306 | [p().subscribeUsername], | |
| 321 | 307 | function* (e) { |
| 322 | 308 | const { status: i, record: t, error: r } = e || {} |
| 323 | ;(i?.isReserving && (yield o(Ie({ status: R.RESERVING }))), | |
| 309 | ;(i?.isReserving && (yield o(be({ status: L.RESERVING }))), | |
| 324 | 310 | i?.hasRecord && |
| 325 | 311 | t && |
| 326 | (yield o(Ie({ status: R.RESERVED, username: t.username, count: t.count }))), | |
| 327 | i?.hasError && r && (yield o(Ie({ error: r, status: R.FAILED })))) | |
| 312 | (yield o(be({ status: L.RESERVED, username: t.username, count: t.count }))), | |
| 313 | i?.hasError && r && (yield o(be({ error: r, status: L.FAILED })))) | |
| 328 | 314 | }, |
| 329 | { onError: (e) => b("subscribeUsername", e) }, | |
| 315 | { onError: (e) => v("subscribeUsername", e) }, | |
| 330 | 316 | ) |
| 331 | 317 | } |
| 332 | 318 | export function* subscribeIdentityDataSaga(e) { |
| 333 | ;(e.isLoggedOut && (yield o(be())), yield o($(e))) | |
| 319 | ;(e.isLoggedOut && (yield o(Ee())), yield o(B(e))) | |
| 334 | 320 | } |
| 335 | 321 | export function* updateUserSettings({ payload: e }) { |
| 336 | 322 | try { |
| 337 | const i = f() | |
| 338 | yield p(i.updateUserSettings, e.key, e.value) | |
| 323 | const i = p() | |
| 324 | yield f(i.updateUserSettings, e.key, e.value) | |
| 339 | 325 | } catch (e) { |
| 340 | yield b("updateUserSettings", e) | |
| 326 | yield v("updateUserSettings", e) | |
| 341 | 327 | } |
| 342 | 328 | } |
| 343 | 329 | export function* identitySaga() { |
| 344 | 330 | try { |
| 345 | 331 | const { username: e } = yield a(g), |
| 346 | i = yield s(H) | |
| 347 | if (i !== D.COMPLETE) return void (yield b("identitySaga", `incorrect initial ID status=${i}`)) | |
| 348 | if (!(yield s(ae))) { | |
| 349 | const e = yield d(identityOnboardingSaga), | |
| 350 | i = yield s(ne), | |
| 332 | i = yield c(M) | |
| 333 | if (i !== D.COMPLETE) return void (yield v("identitySaga", `incorrect initial ID status=${i}`)) | |
| 334 | if (!(yield c(oe))) { | |
| 335 | const e = yield n(identityOnboardingSaga), | |
| 336 | i = yield c(ne), | |
| 351 | 337 | [t, r] = yield y([ |
| 352 | h([f().subscribeIdentity], { | |
| 338 | h([p().subscribeIdentity], { | |
| 353 | 339 | matchFn: (e) => e.memberId !== i, |
| 354 | onError: (e) => b("Onboarding: subscribeIdentity", e), | |
| 340 | onError: (e) => v("Onboarding: subscribeIdentity", e), | |
| 355 | 341 | }), |
| 356 | c(de), | |
| 342 | s(ae), | |
| 357 | 343 | ]) |
| 358 | if (t) ((yield s(le)) && (yield o(me())), yield o($(t))) | |
| 344 | if (t) ((yield c(me)) && (yield o(ue())), yield o(B(t))) | |
| 359 | 345 | else { |
| 360 | 346 | const { payload: e } = r, |
| 361 | i = f() | |
| 362 | ;(yield p(i.confirmRecoveryPhrase, { persist: !e }), yield o(oe())) | |
| 347 | i = p() | |
| 348 | ;(yield f(i.confirmRecoveryPhrase, { persist: !e }), yield o(ye())) | |
| 363 | 349 | } |
| 364 | 350 | e.cancel() |
| 365 | 351 | } |
| 366 | ;(yield d(identityWorker, i), | |
| 367 | yield d(identityErrorHandler), | |
| 368 | (e?.registerEnabled || e?.searchEnabled) && (yield d(memberIdentityLoad)), | |
| 352 | ;(yield n(identityWorker, i), | |
| 353 | yield n(identityErrorHandler), | |
| 354 | (e?.registerEnabled || e?.searchEnabled) && (yield n(memberIdentityLoad)), | |
| 369 | 355 | e?.editEnabled && (yield m(se, qe)), |
| 370 | (e?.registerEnabled || e?.editEnabled) && (yield d(subscribeIdentityUsername)), | |
| 371 | yield m(Ee, updateUserSettings), | |
| 372 | yield E([f().subscribeIdentity], subscribeIdentityDataSaga, { | |
| 373 | onError: (e) => b("subscribeIdentity", e), | |
| 356 | (e?.registerEnabled || e?.editEnabled) && (yield n(subscribeIdentityUsername)), | |
| 357 | yield m(Se, updateUserSettings), | |
| 358 | yield E([p().subscribeIdentity], subscribeIdentityDataSaga, { | |
| 359 | onError: (e) => v("subscribeIdentity", e), | |
| 374 | 360 | })) |
| 375 | 361 | } catch (e) { |
| 376 | yield b("identitySaga", e) | |
| 362 | yield v("identitySaga", e) | |
| 377 | 363 | } |
| 378 | 364 | } |
| … | … | @@ -7,13 +7,12 @@ import { createInvitationLink as c } from "../identity.invitation" |
| 7 | 7 | import { PLATFORM_CONTEXT_KEY as e } from "../../constants" |
| 8 | 8 | export function* fetchMyContactInvitationSaga() { |
| 9 | 9 | const { |
| 10 | applicationKey: p, | |
| 11 | 10 | config: { appProtocol: f }, |
| 12 | 11 | } = yield t(e) |
| 13 | 12 | try { |
| 14 | 13 | const t = r(), |
| 15 | 14 | n = yield i(t.getSelfContactInfo) |
| 16 | yield o(a(c({ invitation: n, isPublic: !1, applicationKey: p, appProtocol: f }))) | |
| 15 | yield o(a(c({ invitation: n, isPublic: !1, appProtocol: f }))) | |
| 17 | 16 | } catch (t) { |
| 18 | 17 | yield n("fetchMyContactInvitationSaga", t) |
| 19 | 18 | } |
| … | … | @@ -1,6 +1,14 @@ |
| 1 | const t = (t) => `hsl(${Math.abs(t) % 361}, 65%, 40%)` | |
| 2 | export const calcAvatarColor = (o) => { | |
| 1 | export const calculateBackgroundColor = (t) => `hsl(${Math.abs(t) % 361}, 65%, 40%)` | |
| 2 | export const BLANK_AVATAR_COLOR = calculateBackgroundColor(0) | |
| 3 | export const COLOR_BY_ID_MAX_SIZE = 1e3 | |
| 4 | const t = new Map() | |
| 5 | export const calcAvatarColorById = (o) => { | |
| 6 | if (!o) return BLANK_AVATAR_COLOR | |
| 7 | let e = t.get(o) | |
| 8 | if (e) return e | |
| 9 | t.size > 1e3 && t.clear() | |
| 3 | 10 | let r = 0 |
| 4 | if (o) for (let t = 0; t < o.length; t += 1) r = o.charCodeAt(t) + ((r << 5) - r) | |
| 5 | return t(r) | |
| 11 | const c = Math.min(o.length, 6) | |
| 12 | for (let t = 0; t < c; t += 1) r = o.charCodeAt(t) + ((r << 5) - r) | |
| 13 | return ((e = calculateBackgroundColor(r)), t.set(o, e), e) | |
| 6 | 14 | } |
| … | … | @@ -1,4 +1,4 @@ |
| 1 | import { calcAvatarColor as e } from "../lib/color" | |
| 1 | import { calcAvatarColorById as e } from "../lib/color" | |
| 2 | 2 | import { getAvatarUrl as t, getAvatarUrlMedium as a } from "../identity" |
| 3 | 3 | export const CAN_SHARE_FILES = 16 |
| 4 | 4 | export const CAN_REACT = 8 |
| … | … | @@ -100,9 +100,10 @@ export const getRolesSelectOptions = ({ myRole: e, managedMemberRole: t }) => { |
| 100 | 100 | } |
| 101 | 101 | export const parseMemberResponse = (E) => { |
| 102 | 102 | const { status: o } = E, |
| 103 | { isActive: n, isMuted: R, isPending: r } = o || {} | |
| 103 | { isActive: n, isMuted: R, isPending: r } = o || {}, | |
| 104 | M = E.memberId ?? "" | |
| 104 | 105 | return { |
| 105 | memberId: E.memberId ?? "", | |
| 106 | memberId: M, | |
| 106 | 107 | name: E.name ?? "", |
| 107 | 108 | displayName: E.displayName ?? "", |
| 108 | 109 | capabilities: E.capabilities ?? null, |
| … | … | @@ -110,7 +111,7 @@ export const parseMemberResponse = (E) => { |
| 110 | 111 | avatar: E.avatar ?? "", |
| 111 | 112 | avatarUrl: t(E.avatar), |
| 112 | 113 | avatarUrlMedium: a(E.avatar), |
| 113 | color: e(E.displayName), | |
| 114 | color: e(M), | |
| 114 | 115 | anonymous: !!E.anonymous, |
| 115 | 116 | deviceIds: E.deviceIds ?? [], |
| 116 | 117 | contactInfo: E.contactInfo ?? {}, |
| … | … | @@ -41,4 +41,9 @@ export const FIRST_VISIT_INTRO_ROOM_IDS = [ |
| 41 | 41 | "kd8r5xiqqd75wexjduwmcuapa4bcydqt3okwgscupw9qxfo5oory", |
| 42 | 42 | "474kwn93d6tzc3ad7mwy3nc1sn74a4kdax7jxpbfyhw4ywxe1coy", |
| 43 | 43 | "nm1nabjhw81yrug1gmrffc83px7rxj3q8xrhcyuontewn4whop5o", |
| 44 | "1cdbp5jcuqqkw75kic6gp7j5uu3fq3meksd4ike7f3ytrsmoon6o", | |
| 45 | "hq1e4ymj8ed54xnm4uisr1qz31dkz19m69yfyo868r3k3koxhc6o", | |
| 46 | "zt7en9fwcabkxkpy53ysn8tqqdb985daqtinj9346y7zjnzsdwoo", | |
| 47 | "gpu8wma8a1377mg1nkjm4nky8xcwzdp3kb6cp5dyt5hn8dxo6jry", | |
| 48 | "grimk9t5whmbsaa738sh47iuhiof8gdh6eoqzwsqbmcq4xo1tugo", | |
| 44 | 49 | ] |
| … | … | @@ -1,39 +1,42 @@ |
| 1 | import { parseCoreFile as e } from "../../media/file" | |
| 2 | import { calcAvatarColor as t } from "../../lib/color" | |
| 1 | import { parseCoreFile as t } from "../../media/file" | |
| 2 | import { calcAvatarColorById as e } from "../../lib/color" | |
| 3 | 3 | import { EMPTY_ROOM_AVATAR as o, ROOM_AVATAR_MIME_TYPE_DEFAULT as a } from "../room.constant" |
| 4 | 4 | export const UNKNOWN_ID = "unknown_id" |
| 5 | export const getDmAvatarData = (t) => { | |
| 6 | const m = e(t.avatar?.small), | |
| 7 | r = m?.pointer?.inlined, | |
| 8 | s = m?.mimetype || a | |
| 9 | return { avatar: m ?? o.avatar, avatarUrl: r ? `data:${s};base64,${r}` : "" } | |
| 5 | export const getDmAvatarData = (e) => { | |
| 6 | const r = t(e.avatar?.small), | |
| 7 | m = r?.pointer?.inlined, | |
| 8 | s = r?.mimetype || a | |
| 9 | return { avatar: r ?? o.avatar, avatarUrl: m ? `data:${s};base64,${m}` : "" } | |
| 10 | 10 | } |
| 11 | export const getDmRequestId = (e) => e?.id?.roomId || UNKNOWN_ID | |
| 12 | export const parseDmRoom = (e) => ({ roomId: e.roomId ?? "", dmMemberId: e.dmMemberId ?? "" }) | |
| 13 | export const formatDmRequest = (e) => { | |
| 14 | const { senderContactInfo: o } = e | |
| 11 | export const getDmRequestId = (t) => t?.id?.roomId || UNKNOWN_ID | |
| 12 | export const parseDmRoom = (t) => ({ roomId: t.roomId ?? "", dmMemberId: t.dmMemberId ?? "" }) | |
| 13 | export const formatDmRequest = (t) => { | |
| 14 | const { senderContactInfo: o } = t, | |
| 15 | { memberId: a, displayName: r } = o, | |
| 16 | { avatar: m, avatarUrl: s } = getDmAvatarData(o) | |
| 15 | 17 | return { |
| 16 | ...getDmAvatarData(o), | |
| 17 | id: getDmRequestId(e), | |
| 18 | color: t(o.displayName), | |
| 19 | requestId: e.id, | |
| 20 | senderId: o.memberId, | |
| 21 | displayName: o.displayName, | |
| 22 | message: e.message, | |
| 23 | status: e.status, | |
| 24 | timestamp: e.sentAt, | |
| 18 | avatar: m, | |
| 19 | avatarUrl: s, | |
| 20 | id: getDmRequestId(t), | |
| 21 | color: e(a), | |
| 22 | requestId: t.id, | |
| 23 | senderId: a, | |
| 24 | displayName: r, | |
| 25 | message: t.message, | |
| 26 | status: t.status, | |
| 27 | timestamp: t.sentAt, | |
| 25 | 28 | } |
| 26 | 29 | } |
| 27 | export const parseDmContactInfo = (e) => ({ | |
| 28 | roomId: e.activeRoom?.id ?? "", | |
| 29 | memberId: e.memberId, | |
| 30 | ...e.pendingRequest?.status, | |
| 31 | isBlocked: e.contactStatus?.isBlocked ?? !1, | |
| 32 | isAccepted: e.activeRoom?.status?.isAccepted ?? !1, | |
| 33 | isWritable: e.activeRoom?.status?.isWritable ?? !0, | |
| 30 | export const parseDmContactInfo = (t) => ({ | |
| 31 | roomId: t.activeRoom?.id ?? "", | |
| 32 | memberId: t.memberId, | |
| 33 | ...t.pendingRequest?.status, | |
| 34 | isBlocked: t.contactStatus?.isBlocked ?? !1, | |
| 35 | isAccepted: t.activeRoom?.status?.isAccepted ?? !1, | |
| 36 | isWritable: t.activeRoom?.status?.isWritable ?? !0, | |
| 34 | 37 | }) |
| 35 | export const parseDmRoomConfigIds = (e) => ({ | |
| 36 | roomId: e.roomId, | |
| 37 | memberId: e.dmMemberId, | |
| 38 | discoveryId: e.discoveryId, | |
| 38 | export const parseDmRoomConfigIds = (t) => ({ | |
| 39 | roomId: t.roomId, | |
| 40 | memberId: t.dmMemberId, | |
| 41 | discoveryId: t.discoveryId, | |
| 39 | 42 | }) |
| … | … | @@ -9,6 +9,7 @@ export * from "./main" |
| 9 | 9 | export * from "./joint" |
| 10 | 10 | export * from "./list" |
| 11 | 11 | export * from "./dm" |
| 12 | export * from "./room-discover" | |
| 12 | 13 | export * from "./forward-message" |
| 13 | 14 | export * from "./share-message" |
| 14 | 15 | export * from "./room.feature" |
| … | … | @@ -5,14 +5,14 @@ import { getCoreBackend as a } from "../../../backend" |
| 5 | 5 | import { apiCall as s } from "../../../api/core" |
| 6 | 6 | import { PLATFORM_CONTEXT_KEY as d } from "../../constants" |
| 7 | 7 | import { |
| 8 | taskErrorSaga as c, | |
| 9 | pairInvalidInviteError as m, | |
| 8 | taskErrorSaga as m, | |
| 9 | pairInvalidInviteError as c, | |
| 10 | 10 | GENERIC_PAIRING_ERROR as l, |
| 11 | 11 | } from "../../error" |
| 12 | 12 | import { |
| 13 | 13 | parseInvitation as p, |
| 14 | removeInvitationQueryParams as y, | |
| 15 | createInvitationLink as I, | |
| 14 | removeInvitationQueryParams as I, | |
| 15 | createInvitationLink as y, | |
| 16 | 16 | } from "../../identity" |
| 17 | 17 | import { NOTIFICATION_CODE as f, userCustomNotification as g } from "../../notification" |
| 18 | 18 | import { getRoomListDiscoveryIds as u } from "../list/room-list.reducer" |
| … | … | @@ -37,24 +37,24 @@ import { |
| 37 | 37 | } from "./room-joint.model" |
| 38 | 38 | import { ROOM_INVITE_CONFIG_DEFAULT as w } from "../room.constant" |
| 39 | 39 | export function* createInvitationSaga( |
| 40 | { applicationKey: o, appProtocol: i }, | |
| 41 | { payload: { roomId: t, invitationPreview: n, messageId: d, isPublic: m = !1, opts: l = w } }, | |
| 40 | { appProtocol: o }, | |
| 41 | { payload: { roomId: i, invitationPreview: t, messageId: n, isPublic: d = !1, opts: c = w } }, | |
| 42 | 42 | ) { |
| 43 | 43 | try { |
| 44 | 44 | const r = a(), |
| 45 | c = yield s(r.createInvitation, t, l) | |
| 46 | let p | |
| 47 | ;((p = I({ applicationKey: o, invitation: c, isPublic: m, appProtocol: i })), | |
| 48 | d && (p = P({ invitationLink: p, messageId: d })), | |
| 49 | yield e(N({ invitationLink: p, invitationPreview: n }))) | |
| 45 | m = yield s(r.createInvitation, i, c) | |
| 46 | let l | |
| 47 | ;((l = y({ invitation: m, isPublic: d, appProtocol: o })), | |
| 48 | n && (l = P({ invitationLink: l, messageId: n })), | |
| 49 | yield e(N({ invitationLink: l, invitationPreview: t }))) | |
| 50 | 50 | } catch (o) { |
| 51 | 51 | o.code === r.AUTOBASE_IS_NOT_WRITEABLE |
| 52 | 52 | ? yield e(g({ code: f.INVITATION_AUTOBASE_WRITABLE_ERROR })) |
| 53 | : yield c("createInvitationSaga", o) | |
| 53 | : yield m("createInvitationSaga", o) | |
| 54 | 54 | } |
| 55 | 55 | } |
| 56 | 56 | export function* roomInvitationHandler({ link: o, skipParse: i = !1, setActive: n = !1 }) { |
| 57 | const I = a() | |
| 57 | const y = a() | |
| 58 | 58 | let f = !1 |
| 59 | 59 | try { |
| 60 | 60 | const { |
| … | … | @@ -63,18 +63,18 @@ export function* roomInvitationHandler({ link: o, skipParse: i = !1, setActive: |
| 63 | 63 | let a = i ? o : p(o, r) |
| 64 | 64 | if (!a) return f |
| 65 | 65 | f = !0 |
| 66 | const c = v(o) | |
| 67 | i && c && (a = y(a)) | |
| 68 | const { seedId: m, key: l } = yield s(I.startPairingRoom, a) | |
| 69 | if (l) yield e(E({ roomId: l, messageId: c })) | |
| 66 | const m = v(o) | |
| 67 | i && m && (a = I(a)) | |
| 68 | const { seedId: c, key: l } = yield s(y.startPairingRoom, a) | |
| 69 | if (l) yield e(E({ roomId: l, messageId: m })) | |
| 70 | 70 | else { |
| 71 | if (!m) throw new Error("room pairing failed: no seedId") | |
| 72 | ;(yield e(R(x({ seedId: m, messageId: c }))), n && (yield e(h({ seedId: m })))) | |
| 71 | if (!c) throw new Error("room pairing failed: no seedId") | |
| 72 | ;(yield e(R(x({ seedId: c, messageId: m }))), n && (yield e(h({ seedId: c })))) | |
| 73 | 73 | } |
| 74 | 74 | } catch (o) { |
| 75 | ;(yield c("roomInvitationHandler", o, { logWarn: !0 }), | |
| 75 | ;(yield m("roomInvitationHandler", o, { logWarn: !0 }), | |
| 76 | 76 | o.code === r.INVALID_INVITATION_TYPE |
| 77 | ? yield e(m()) | |
| 77 | ? yield e(c()) | |
| 78 | 78 | : yield e(T(o.code && o.message ? o.message : l))) |
| 79 | 79 | } |
| 80 | 80 | return f |
| … | … | @@ -84,7 +84,7 @@ export function* roomPairingCancelSaga({ payload: o }) { |
| 84 | 84 | try { |
| 85 | 85 | ;(yield s(i.stopPairingRoom, o), yield e(R({ seedId: o, status: C.CANCELLED }))) |
| 86 | 86 | } catch (o) { |
| 87 | yield c("roomPairingCancelSaga", o) | |
| 87 | yield m("roomPairingCancelSaga", o) | |
| 88 | 88 | } |
| 89 | 89 | } |
| 90 | 90 | export function* roomsPairingDataSaga({ pendingRoomChannel: e }) { |
| … | … | @@ -97,7 +97,7 @@ export function* roomsPairingDataSaga({ pendingRoomChannel: e }) { |
| 97 | 97 | a = Object.values(n).flat() |
| 98 | 98 | for (const o of a) e.put(o) |
| 99 | 99 | }, |
| 100 | { onError: (o) => c("subscribePendingRooms", o) }, | |
| 100 | { onError: (o) => m("subscribePendingRooms", o) }, | |
| 101 | 101 | ) |
| 102 | 102 | } |
| 103 | 103 | export function* roomPairingSaga({ pendingRoomChannel: t }) { |
| … | … | @@ -124,7 +124,7 @@ export function* roomPairingSaga({ pendingRoomChannel: t }) { |
| 124 | 124 | } |
| 125 | 125 | } |
| 126 | 126 | } catch (o) { |
| 127 | yield c("roomPairingSaga", o) | |
| 127 | yield m("roomPairingSaga", o) | |
| 128 | 128 | } finally { |
| 129 | 129 | t?.close() |
| 130 | 130 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | import { createSlice as o, createAction as t, createSelector as e } from "@reduxjs/toolkit" |
| 2 | 2 | import { ROOM_STATE_KEY as s } from "../room.constant" |
| 3 | import { ROOM_LIST_STATE_KEY as r, ROOM_FILTER_MAP_INITIAL as i } from "./room-list.constant" | |
| 3 | import { ROOM_LIST_STATE_KEY as r, ROOM_FILTER_MAP_INITIAL as a } from "./room-list.constant" | |
| 4 | 4 | export const setRoomFilterMap = t("room/set-room-filter-map") |
| 5 | 5 | export const setSearchRoomIds = t("room/set-search-room-ids") |
| 6 | 6 | export const ROOM_LIST_INITIAL_STATE = { |
| … | … | @@ -8,7 +8,7 @@ export const ROOM_LIST_INITIAL_STATE = { |
| 8 | 8 | discoveryIds: [], |
| 9 | 9 | actualRoomIds: [], |
| 10 | 10 | searchRoomIds: [], |
| 11 | roomFilterMap: i, | |
| 11 | roomFilterMap: a, | |
| 12 | 12 | searchText: "", |
| 13 | 13 | inView: { top: -1, bottom: -1 }, |
| 14 | 14 | isLoading: !0, |
| … | … | @@ -20,6 +20,7 @@ export const ROOM_LIST_INITIAL_STATE = { |
| 20 | 20 | total: -1, |
| 21 | 21 | recentRoomsBufferInterval: 1e3, |
| 22 | 22 | scrollToRoomId: null, |
| 23 | preloadOverscan: 0, | |
| 23 | 24 | } |
| 24 | 25 | export const roomListSlice = o({ |
| 25 | 26 | name: r, |
| … | … | @@ -47,6 +48,9 @@ export const roomListSlice = o({ |
| 47 | 48 | resetScrollToRoomId: (o) => { |
| 48 | 49 | o.scrollToRoomId = null |
| 49 | 50 | }, |
| 51 | setRoomListPreloadOverscan: (o, { payload: t }) => { | |
| 52 | o.preloadOverscan = Math.max(0, Math.floor(t)) | |
| 53 | }, | |
| 50 | 54 | }, |
| 51 | 55 | }) |
| 52 | 56 | export const getRoomListState = (o) => o[s][r] |
| … | … | @@ -65,10 +69,22 @@ export const getRoomListInView = (o) => getRoomListState(o).inView |
| 65 | 69 | export const getRoomListIsLoading = (o) => getRoomListState(o).isLoading |
| 66 | 70 | export const getRoomFavoriteListIsLoading = (o) => getRoomListState(o).isRoomFavoriteLoading |
| 67 | 71 | export const getRoomListIsError = (o) => getRoomListState(o).isError |
| 72 | export const getRoomListPreloadOverscan = (o) => getRoomListState(o).preloadOverscan | |
| 68 | 73 | export const getRoomListInViewIds = e(getRoomListInView, getRoomListActualIds, (o, t) => { |
| 69 | 74 | const { top: e, bottom: s } = o |
| 70 | 75 | return e < 0 || s < 0 ? [] : t.slice(e, s + 1) |
| 71 | 76 | }) |
| 77 | export const getRoomListInViewOverscanIds = e( | |
| 78 | getRoomListActualIds, | |
| 79 | getRoomListInView, | |
| 80 | getRoomListPreloadOverscan, | |
| 81 | (o, t, e) => { | |
| 82 | const { top: s, bottom: r } = t | |
| 83 | return s < 0 || r < 0 || e <= 0 | |
| 84 | ? [] | |
| 85 | : [...o.slice(Math.max(0, s - e), s), ...o.slice(r + 1, r + 1 + e)] | |
| 86 | }, | |
| 87 | ) | |
| 72 | 88 | export const getRoomListSearchError = (o) => getRoomListState(o).searchError |
| 73 | 89 | export const getRoomListUnreadRoomsCount = (o) => getRoomListState(o).unreadRoomsCount |
| 74 | 90 | export const getRecentRoomsBufferInterval = (o) => getRoomListState(o).recentRoomsBufferInterval |
| … | … | @@ -81,6 +97,7 @@ export const { |
| 81 | 97 | setUnreadRoomsCount: setUnreadRoomsCount, |
| 82 | 98 | setScrollToRoomId: setScrollToRoomId, |
| 83 | 99 | resetScrollToRoomId: resetScrollToRoomId, |
| 100 | setRoomListPreloadOverscan: setRoomListPreloadOverscan, | |
| 84 | 101 | } = roomListSlice.actions |
| 85 | 102 | export const roomListInViewIdsChangeEvt = t("room-list/in-view-ids-change-evt") |
| 86 | 103 | export const roomListReducer = roomListSlice.reducer |
| … | … | @@ -1,261 +1,315 @@ |
| 1 | import { FEATURES as e } from "@holepunchto/keet-core/features" | |
| 2 | import { buffers as o, channel as t } from "redux-saga" | |
| 1 | import { FEATURES as o } from "@holepunchto/keet-core/features" | |
| 2 | import { buffers as e, channel as t } from "redux-saga" | |
| 3 | 3 | import { |
| 4 | fork as r, | |
| 5 | select as i, | |
| 4 | fork as i, | |
| 5 | select as r, | |
| 6 | 6 | call as a, |
| 7 | 7 | put as d, |
| 8 | takeEvery as l, | |
| 9 | takeLatest as n, | |
| 8 | takeEvery as n, | |
| 9 | takeLatest as l, | |
| 10 | 10 | take as c, |
| 11 | 11 | delay as s, |
| 12 | 12 | flush as y, |
| 13 | 13 | race as m, |
| 14 | takeLeading as p, | |
| 14 | 15 | } from "redux-saga/effects" |
| 15 | 16 | import { getCoreBackend as f } from "../../../backend" |
| 16 | import { apiCall as u, searchRoomsApi as p } from "../../../api/core" | |
| 17 | import { taskErrorSaga as g } from "../../error" | |
| 18 | import { apiSubscribeSaga as R, forkChildren as b, apiSubscribeLatest as h } from "../../lib" | |
| 19 | import { normalizedIncludes as I } from "../../lib/string" | |
| 17 | import { apiCall as u, searchRoomsApi as g } from "../../../api/core" | |
| 18 | import { taskErrorSaga as R } from "../../error" | |
| 19 | import { apiSubscribeSaga as h, forkChildren as I, apiSubscribeLatest as b } from "../../lib" | |
| 20 | import { normalizedIncludes as L } from "../../lib/string" | |
| 20 | 21 | import { identityFeatureGate as S, setBlockedMembers as E } from "../../identity" |
| 21 | 22 | import { |
| 22 | getChatLastMessageByRoomId as L, | |
| 23 | getChatLastMessageByRoomId as A, | |
| 23 | 24 | setChatMessageLastSeen as v, |
| 24 | updateChatLastMessage as A, | |
| 25 | updateChatLastMessageBlocked as D, | |
| 26 | sendChatMessageSuccess as F, | |
| 27 | chatSubscribeUnreadSaga as O, | |
| 25 | updateChatLastMessage as D, | |
| 26 | updateChatLastMessageBlocked as O, | |
| 27 | sendChatMessageSuccess as U, | |
| 28 | chatSubscribeUnreadSaga as F, | |
| 28 | 29 | chatUnreadSyncData as k, |
| 29 | 30 | } from "../../chat" |
| 30 | 31 | import { |
| 31 | getRoomListSearchText as x, | |
| 32 | searchAllRooms as U, | |
| 33 | getRoomListAllIds as C, | |
| 34 | setSearchRoomIds as M, | |
| 35 | getRoomListInViewIds as N, | |
| 36 | setItemsInView as V, | |
| 37 | roomListInViewIdsChangeEvt as T, | |
| 38 | setRoomListSearchError as P, | |
| 39 | setUnreadRoomsCount as _, | |
| 32 | getRoomListSearchText as V, | |
| 33 | searchAllRooms as M, | |
| 34 | getRoomListAllIds as x, | |
| 35 | setSearchRoomIds as N, | |
| 36 | getRoomListInViewIds as C, | |
| 37 | getRoomListInViewOverscanIds as T, | |
| 38 | setItemsInView as _, | |
| 39 | roomListInViewIdsChangeEvt as w, | |
| 40 | setRoomListSearchError as B, | |
| 41 | setUnreadRoomsCount as P, | |
| 40 | 42 | getRoomListUnreadRoomsCount as j, |
| 41 | getRoomListSearchIds as w, | |
| 42 | setRoomListIsSearching as B, | |
| 43 | getRoomListIsSearching as G, | |
| 44 | getRecentRoomsBufferInterval as H, | |
| 45 | setScrollToRoomId as W, | |
| 46 | setRoomFilterMap as q, | |
| 47 | getRoomFilterMap as z, | |
| 43 | getRoomListSearchIds as G, | |
| 44 | setRoomListIsSearching as H, | |
| 45 | getRoomListIsSearching as W, | |
| 46 | getRecentRoomsBufferInterval as K, | |
| 47 | setScrollToRoomId as q, | |
| 48 | setRoomFilterMap as z, | |
| 49 | getRoomFilterMap as J, | |
| 48 | 50 | } from "./room-list.reducer" |
| 49 | 51 | import { |
| 50 | setAllRooms as J, | |
| 51 | updateRecentRooms as K, | |
| 52 | addOrRemoveRecentRoom as Q, | |
| 53 | createRoomSubmit as X, | |
| 54 | setFavoriteRooms as Y, | |
| 55 | toggleRoomFavoriteCmd as Z, | |
| 56 | addOrRemoveFavoriteRoom as $, | |
| 52 | setAllRooms as Q, | |
| 53 | updateRecentRooms as X, | |
| 54 | addOrRemoveRecentRoom as Y, | |
| 55 | createRoomSubmit as Z, | |
| 56 | setFavoriteRooms as $, | |
| 57 | toggleRoomFavoriteCmd as oo, | |
| 58 | addOrRemoveFavoriteRoom as eo, | |
| 59 | toggleRoomIsUnreadCmd as to, | |
| 57 | 60 | } from "../room.action" |
| 58 | import { getRoomAllNotifications as ee, getRoomNotificationById as oe } from "../room.selector" | |
| 59 | 61 | import { |
| 60 | RECENT_ROOM_UPDATE as te, | |
| 61 | ROOM_PREFERENCES as re, | |
| 62 | defaultRoomPreferences as ie, | |
| 62 | getRoomAllNotifications as io, | |
| 63 | getRoomIsUnread as ro, | |
| 64 | getRoomItemById as ao, | |
| 65 | getRoomNotificationById as no, | |
| 66 | getRoomState as lo, | |
| 67 | } from "../room.selector" | |
| 68 | import { | |
| 69 | RECENT_ROOM_UPDATE as co, | |
| 70 | ROOM_PREFERENCES as so, | |
| 71 | defaultRoomPreferences as yo, | |
| 63 | 72 | } from "../room.constant" |
| 64 | 73 | import { |
| 65 | parseRecentRoomsAllResponse as ae, | |
| 66 | parseRecentRoomsChangeResponse as de, | |
| 67 | parseRecentRoomsAddRemoveResponse as le, | |
| 74 | parseRecentRoomsAllResponse as mo, | |
| 75 | parseRecentRoomsChangeResponse as po, | |
| 76 | parseRecentRoomsAddRemoveResponse as fo, | |
| 68 | 77 | } from "../room.model" |
| 69 | 78 | import { |
| 70 | getPreferencesNotificationsType as ne, | |
| 71 | getPreferencesRoomListFilter as ce, | |
| 72 | NOTIFICATIONS_TYPES as se, | |
| 73 | PREFERENCES as ye, | |
| 74 | updatePreferencesCmd as me, | |
| 79 | getPreferencesNotificationsType as uo, | |
| 80 | getPreferencesRoomListFilter as go, | |
| 81 | NOTIFICATIONS_TYPES as Ro, | |
| 82 | PREFERENCES as ho, | |
| 83 | updatePreferencesCmd as Io, | |
| 75 | 84 | } from "../../preferences" |
| 76 | import { roomListItemUpdateSaga as fe } from "./room-list-item-update-saga" | |
| 77 | function* ue() { | |
| 78 | const e = {} | |
| 79 | yield n([M, J, K, Q, V, q, Y, $], function* () { | |
| 80 | const o = yield i(N) | |
| 81 | let t = !1 | |
| 82 | ;(Object.keys(e).forEach((r) => { | |
| 83 | o.includes(r) || (delete e[r], (t = !0)) | |
| 85 | import { roomListItemUpdateSaga as bo } from "./room-list-item-update-saga" | |
| 86 | import { setAppCurrentRoomId as Lo, getAppCurrentRoomId as So } from "../../app/app.reducer" | |
| 87 | function* Eo({ roomId: o, appVersion: e }) { | |
| 88 | try { | |
| 89 | const t = f(), | |
| 90 | i = yield u(t.getRoomInfo, o), | |
| 91 | a = yield r(ao(o)) | |
| 92 | if (a?.isLoaded) return | |
| 93 | yield bo({ | |
| 94 | data: i, | |
| 95 | roomId: o, | |
| 96 | appVersion: e, | |
| 97 | trackLastMsgUpdates: !1, | |
| 98 | trackNotificationsUpdates: !1, | |
| 99 | }) | |
| 100 | } catch (o) { | |
| 101 | yield R("preloadRoomListItemSaga", o, { logOnly: !0 }) | |
| 102 | } | |
| 103 | } | |
| 104 | function* Ao({ appVersion: o }) { | |
| 105 | const e = {}, | |
| 106 | t = new Map() | |
| 107 | yield l([N, Q, X, Y, _, z, $, eo], function* () { | |
| 108 | const a = yield r(C) | |
| 109 | let n = !1 | |
| 110 | ;(Object.keys(e).forEach((o) => { | |
| 111 | a.includes(o) || (delete e[o], (n = !0)) | |
| 84 | 112 | }), |
| 85 | o | |
| 113 | a | |
| 86 | 114 | .filter((o) => !e[o]) |
| 87 | 115 | .forEach((o) => { |
| 88 | ;((e[o] = !0), (t = !0)) | |
| 116 | ;((e[o] = !0), (n = !0)) | |
| 89 | 117 | }), |
| 90 | t && (yield d(T(Object.keys(e))))) | |
| 118 | n && (yield d(w(Object.keys(e))))) | |
| 119 | const l = yield r(T), | |
| 120 | { roomById: c } = yield r(lo) | |
| 121 | for (const e of l) { | |
| 122 | if (c[e]?.isLoaded) continue | |
| 123 | const r = t.get(e) | |
| 124 | if (r?.isRunning()) continue | |
| 125 | const a = yield i(Eo, { roomId: e, appVersion: o }) | |
| 126 | t.set(e, a) | |
| 127 | } | |
| 91 | 128 | }) |
| 92 | 129 | } |
| 93 | 130 | export function* roomSearchSaga() { |
| 94 | const e = yield i(x) | |
| 95 | if (e) | |
| 131 | const o = yield r(V) | |
| 132 | if (o) | |
| 96 | 133 | try { |
| 97 | ;(yield i(G)) || (yield d(B(!0))) | |
| 98 | const o = (yield* p()).reduce((o, t) => { | |
| 99 | const { title: r, roomId: i } = t | |
| 100 | return (r && I(r, e) && o.push(i), o) | |
| 134 | ;(yield r(W)) || (yield d(H(!0))) | |
| 135 | const e = (yield* g()).reduce((e, t) => { | |
| 136 | const { title: i, roomId: r } = t | |
| 137 | return (i && L(i, o) && e.push(r), e) | |
| 101 | 138 | }, []) |
| 102 | yield d(M(o)) | |
| 103 | } catch (e) { | |
| 104 | ;(yield d(P(e.message)), yield g("roomSearchAll", e, { logOnly: !0 })) | |
| 139 | yield d(N(e)) | |
| 140 | } catch (o) { | |
| 141 | ;(yield d(B(o.message)), yield R("roomSearchAll", o, { logOnly: !0 })) | |
| 105 | 142 | } |
| 106 | else (yield i(w)).length > 0 && (yield d(M([]))) | |
| 143 | else (yield r(G)).length > 0 && (yield d(N([]))) | |
| 107 | 144 | } |
| 108 | export function* roomListDataSaga({ appVersion: e }) { | |
| 109 | ;(yield l(E, function* ({ payload: { blockedByMemberId: e } }) { | |
| 110 | yield d(D({ blockedByMemberId: e })) | |
| 145 | export function* roomListDataSaga({ appVersion: o }) { | |
| 146 | ;(yield n(E, function* ({ payload: { blockedByMemberId: o } }) { | |
| 147 | yield d(O({ blockedByMemberId: o })) | |
| 111 | 148 | }), |
| 112 | yield b( | |
| 113 | T, | |
| 114 | ({ payload: e }) => e, | |
| 115 | function* ({ taskId: o }) { | |
| 116 | ;(yield r(O, { roomId: o }), | |
| 117 | yield h( | |
| 118 | [f().subscribeRoomInfo, o], | |
| 149 | yield I( | |
| 150 | w, | |
| 151 | ({ payload: o }) => o, | |
| 152 | function* ({ taskId: e }) { | |
| 153 | ;(yield i(F, { roomId: e }), | |
| 154 | yield b( | |
| 155 | [f().subscribeRoomInfo, e], | |
| 119 | 156 | function* (t) { |
| 120 | yield fe({ | |
| 157 | yield bo({ | |
| 121 | 158 | data: t, |
| 122 | roomId: o, | |
| 123 | appVersion: e, | |
| 159 | roomId: e, | |
| 160 | appVersion: o, | |
| 124 | 161 | trackLastMsgUpdates: !0, |
| 125 | 162 | trackNotificationsUpdates: !0, |
| 126 | 163 | }) |
| 127 | 164 | }, |
| 128 | { onError: (e) => g("roomListItemTask", e) }, | |
| 165 | { onError: (o) => R("roomListItemTask", o) }, | |
| 129 | 166 | )) |
| 130 | 167 | }, |
| 131 | (e) => g("roomListItem", e), | |
| 168 | (o) => R("roomListItem", o), | |
| 132 | 169 | )) |
| 133 | 170 | } |
| 134 | 171 | export function* calculateAndUpdateUnreadRoomsCount() { |
| 135 | 172 | try { |
| 136 | const e = yield i(L), | |
| 137 | o = yield i(C), | |
| 138 | t = yield i(ne), | |
| 139 | r = yield i(j), | |
| 140 | a = t !== se.NONE | |
| 141 | let l = 0 | |
| 173 | const o = yield r(A), | |
| 174 | e = yield r(x), | |
| 175 | t = yield r(uo), | |
| 176 | i = yield r(j), | |
| 177 | a = t !== Ro.NONE | |
| 178 | let n = 0 | |
| 142 | 179 | if (a) { |
| 143 | const t = yield i(ee) | |
| 144 | for (const r of o) { | |
| 145 | if (!(yield i(oe(r)))) continue | |
| 146 | const o = t[r] || ie, | |
| 147 | a = e[r] | |
| 148 | a?.unread && o[re.NOTIFICATIONS] && (l += 1) | |
| 180 | const t = yield r(io) | |
| 181 | for (const i of e) { | |
| 182 | if (!(yield r(no(i)))) continue | |
| 183 | const e = t[i] || yo, | |
| 184 | a = o[i] | |
| 185 | a?.unread && e[so.NOTIFICATIONS] && (n += 1) | |
| 149 | 186 | } |
| 150 | 187 | } |
| 151 | if (r === l) return | |
| 152 | yield d(_(l)) | |
| 153 | } catch (e) { | |
| 154 | yield g("calculateAndUpdateUnreadRoomsCount", e) | |
| 188 | if (i === n) return | |
| 189 | yield d(P(n)) | |
| 190 | } catch (o) { | |
| 191 | yield R("calculateAndUpdateUnreadRoomsCount", o) | |
| 155 | 192 | } |
| 156 | 193 | } |
| 157 | export function* throttleRecentRoomChanged(e) { | |
| 194 | export function* throttleRecentRoomChanged(o) { | |
| 158 | 195 | try { |
| 159 | const o = yield i(H) | |
| 196 | const e = yield r(K) | |
| 160 | 197 | for (;;) { |
| 161 | const t = yield c(e), | |
| 162 | r = yield y(e) | |
| 163 | let i = [t] | |
| 164 | ;(Array.isArray(r) && (i = r.reverse().concat(t)), yield d(K(i)), yield s(o)) | |
| 198 | const t = yield c(o), | |
| 199 | i = yield y(o) | |
| 200 | let r = [t] | |
| 201 | ;(Array.isArray(i) && (r = i.reverse().concat(t)), yield d(X(r)), yield s(e)) | |
| 165 | 202 | } |
| 166 | } catch (e) { | |
| 167 | yield g("throttleRecentRoomUpdates", e) | |
| 203 | } catch (o) { | |
| 204 | yield R("throttleRecentRoomUpdates", o) | |
| 168 | 205 | } |
| 169 | 206 | } |
| 170 | const pe = 400 | |
| 171 | function* ge() { | |
| 207 | const vo = 400 | |
| 208 | function* Do() { | |
| 172 | 209 | for (;;) { |
| 173 | yield c(X) | |
| 174 | const { response: e } = yield m({ delay: s(pe), response: c(Q) }), | |
| 175 | o = e?.payload | |
| 176 | o?.roomId && o.type === te.ADDED && (yield d(W(o.roomId))) | |
| 210 | yield c(Z) | |
| 211 | const { response: o } = yield m({ delay: s(vo), response: c(Y) }), | |
| 212 | e = o?.payload | |
| 213 | e?.roomId && e.type === co.ADDED && (yield d(q(e.roomId))) | |
| 177 | 214 | } |
| 178 | 215 | } |
| 179 | function* Re() { | |
| 180 | ;(yield r(ge), | |
| 181 | yield n(F, function* ({ payload: e }) { | |
| 182 | yield d(W(e.roomId)) | |
| 216 | function* Oo() { | |
| 217 | ;(yield i(Do), | |
| 218 | yield l(U, function* ({ payload: o }) { | |
| 219 | yield d(q(o.roomId)) | |
| 183 | 220 | })) |
| 184 | 221 | } |
| 185 | export function* toggleRoomFavoriteSaga({ payload: e }) { | |
| 222 | export function* toggleRoomFavoriteSaga({ payload: o }) { | |
| 186 | 223 | try { |
| 187 | const { roomId: o, value: t } = e, | |
| 188 | r = f() | |
| 189 | yield u(r.setRoomFavorite, o, t) | |
| 190 | } catch (e) { | |
| 191 | yield g("toggleRoomFavoriteSaga", e) | |
| 224 | const { roomId: e, value: t } = o, | |
| 225 | i = f() | |
| 226 | yield u(i.setRoomFavorite, e, t) | |
| 227 | } catch (o) { | |
| 228 | yield R("toggleRoomFavoriteSaga", o) | |
| 192 | 229 | } |
| 193 | 230 | } |
| 194 | function* be() { | |
| 231 | function* Uo({ payload: o }) { | |
| 232 | try { | |
| 233 | const e = yield r(ro(o)), | |
| 234 | t = f() | |
| 235 | yield u(t.setRoomUnread, o, !e) | |
| 236 | } catch (o) { | |
| 237 | yield R("toggleRoomIsUnreadSaga", o) | |
| 238 | } | |
| 239 | } | |
| 240 | function* Fo() { | |
| 241 | ;(yield p(to, Uo), | |
| 242 | yield n([Lo, U], function* () { | |
| 243 | const o = yield r(So) | |
| 244 | ;(yield r(ro(o))) && (yield Uo({ payload: o })) | |
| 245 | })) | |
| 246 | } | |
| 247 | function* ko() { | |
| 195 | 248 | try { |
| 196 | yield R( | |
| 249 | yield h( | |
| 197 | 250 | [f().subscribeFavoriteRooms, {}], |
| 198 | function* (e) { | |
| 199 | switch (e.type) { | |
| 200 | case te.ALL: | |
| 201 | return void (yield d(Y(ae(e)))) | |
| 202 | case te.CHANGED: | |
| 251 | function* (o) { | |
| 252 | switch (o.type) { | |
| 253 | case co.ALL: | |
| 254 | return void (yield d($(mo(o)))) | |
| 255 | case co.CHANGED: | |
| 203 | 256 | return |
| 204 | case te.ADDED: | |
| 205 | case te.REMOVED: | |
| 206 | return void (yield d($(le(e)))) | |
| 257 | case co.ADDED: | |
| 258 | case co.REMOVED: | |
| 259 | return void (yield d(eo(fo(o)))) | |
| 207 | 260 | default: |
| 208 | yield g("subscribeRecentRooms", "invalid data", { logWarn: !0 }) | |
| 261 | yield R("subscribeRecentRooms", "invalid data", { logWarn: !0 }) | |
| 209 | 262 | } |
| 210 | 263 | }, |
| 211 | { onError: (e) => g("subscribeFavoriteRooms", e) }, | |
| 264 | { onError: (o) => R("subscribeFavoriteRooms", o) }, | |
| 212 | 265 | ) |
| 213 | } catch (e) { | |
| 214 | yield g("roomListFavoritesSub", e) | |
| 266 | } catch (o) { | |
| 267 | yield R("roomListFavoritesSub", o) | |
| 215 | 268 | } |
| 216 | 269 | } |
| 217 | 270 | export function* roomListFilterPreferencesSaga() { |
| 218 | 271 | try { |
| 219 | const e = yield i(ce) | |
| 220 | ;(yield d(q(e)), | |
| 221 | yield n(q, function* () { | |
| 222 | const e = yield i(z) | |
| 223 | yield d(me(ye.ROOM_LIST_FILTER, e)) | |
| 272 | const o = yield r(go) | |
| 273 | ;(yield d(z(o)), | |
| 274 | yield l(z, function* () { | |
| 275 | const o = yield r(J) | |
| 276 | yield d(Io(ho.ROOM_LIST_FILTER, o)) | |
| 224 | 277 | })) |
| 225 | } catch (e) { | |
| 226 | yield g("roomListFilterPreferencesSaga", e) | |
| 278 | } catch (o) { | |
| 279 | yield R("roomListFilterPreferencesSaga", o) | |
| 227 | 280 | } |
| 228 | 281 | } |
| 229 | export function* roomListSaga({ appVersion: i }) { | |
| 282 | export function* roomListSaga({ appVersion: r }) { | |
| 230 | 283 | try { |
| 231 | ;(yield n([U, Q], roomSearchSaga), | |
| 232 | yield l([A, v, k], calculateAndUpdateUnreadRoomsCount), | |
| 233 | yield r(roomListFilterPreferencesSaga), | |
| 234 | yield r(ue), | |
| 235 | yield r(S(e.FAVORITE_ROOMS, be)), | |
| 236 | yield n(Z, toggleRoomFavoriteSaga), | |
| 237 | yield r(roomListDataSaga, { appVersion: i }), | |
| 238 | yield r(Re)) | |
| 239 | const c = yield a(t, o.expanding(20)) | |
| 240 | ;(yield r(throttleRecentRoomChanged, c), | |
| 241 | yield R( | |
| 284 | ;(yield l([M, Y], roomSearchSaga), | |
| 285 | yield n([D, v, k], calculateAndUpdateUnreadRoomsCount), | |
| 286 | yield i(roomListFilterPreferencesSaga), | |
| 287 | yield i(Ao, { appVersion: r }), | |
| 288 | yield i(S(o.FAVORITE_ROOMS, ko)), | |
| 289 | yield l(oo, toggleRoomFavoriteSaga), | |
| 290 | yield i(S(o.ROOM_MARK_UNREAD, Fo)), | |
| 291 | yield i(roomListDataSaga, { appVersion: r }), | |
| 292 | yield i(Oo)) | |
| 293 | const c = yield a(t, e.expanding(20)) | |
| 294 | ;(yield i(throttleRecentRoomChanged, c), | |
| 295 | yield h( | |
| 242 | 296 | [f().subscribeRecentRooms, {}], |
| 243 | function* (e) { | |
| 244 | switch (e.type) { | |
| 245 | case te.ALL: | |
| 246 | return void (yield d(J(ae(e)))) | |
| 247 | case te.CHANGED: | |
| 248 | return void (yield d(c, de(e))) | |
| 249 | case te.ADDED: | |
| 250 | case te.REMOVED: | |
| 251 | return void (yield d(Q(le(e)))) | |
| 297 | function* (o) { | |
| 298 | switch (o.type) { | |
| 299 | case co.ALL: | |
| 300 | return void (yield d(Q(mo(o)))) | |
| 301 | case co.CHANGED: | |
| 302 | return void (yield d(c, po(o))) | |
| 303 | case co.ADDED: | |
| 304 | case co.REMOVED: | |
| 305 | return void (yield d(Y(fo(o)))) | |
| 252 | 306 | default: |
| 253 | yield g("subscribeRecentRooms", "invalid data", { logWarn: !0 }) | |
| 307 | yield R("subscribeRecentRooms", "invalid data", { logWarn: !0 }) | |
| 254 | 308 | } |
| 255 | 309 | }, |
| 256 | { onError: (e) => g("subscribeRecentRooms", e) }, | |
| 310 | { onError: (o) => R("subscribeRecentRooms", o) }, | |
| 257 | 311 | )) |
| 258 | } catch (e) { | |
| 259 | yield g("roomListSaga", e) | |
| 312 | } catch (o) { | |
| 313 | yield R("roomListSaga", o) | |
| 260 | 314 | } |
| 261 | 315 | } |
| … | … | @@ -4,12 +4,12 @@ import { |
| 4 | 4 | takeLeading as r, |
| 5 | 5 | getContext as m, |
| 6 | 6 | put as i, |
| 7 | call as t, | |
| 8 | select as d, | |
| 7 | call as d, | |
| 8 | select as t, | |
| 9 | 9 | } from "redux-saga/effects" |
| 10 | 10 | import { FEATURES as a, isFeatureSupported as n } from "@holepunchto/keet-core/features" |
| 11 | import { channel as p, buffers as l } from "redux-saga" | |
| 12 | import { getCoreBackend as s } from "../../../backend" | |
| 11 | import { channel as p, buffers as s } from "redux-saga" | |
| 12 | import { getCoreBackend as l } from "../../../backend" | |
| 13 | 13 | import { apiCall as f } from "../../../api/core" |
| 14 | 14 | import { chatSaga as y, chatFilePendingSaga as c, chatMembersBlockedHandler as I } from "../../chat" |
| 15 | 15 | import { |
| … | … | @@ -33,90 +33,89 @@ import { throttleFileStatsChanged as L } from "../../media/file/saga/file.saga" |
| 33 | 33 | import { memberChangeRoleSubmit as P, myMemberRemoved as k } from "../../member/member.reducer" |
| 34 | 34 | import { |
| 35 | 35 | setFirstTimeRoomModal as w, |
| 36 | closeFirstTimeRoomModal as K, | |
| 37 | closeRoomSubmit as X, | |
| 36 | closeFirstTimeRoomModal as X, | |
| 37 | closeRoomSubmit as j, | |
| 38 | 38 | } from "../room.action" |
| 39 | 39 | import { |
| 40 | PREFERENCES as j, | |
| 41 | preferenceUpdateTask as v, | |
| 42 | getPreferencesRoomIntroModalNeeded as z, | |
| 43 | getPreferencesIntroModalSeenRooms as F, | |
| 40 | PREFERENCES as v, | |
| 41 | preferenceUpdateTask as z, | |
| 42 | getPreferencesRoomIntroModalNeeded as F, | |
| 43 | getPreferencesIntroModalSeenRooms as G, | |
| 44 | 44 | } from "../../preferences" |
| 45 | import { forwardMessageToRoomSaga as G } from "../forward-message/forward-message.saga" | |
| 46 | import { reportedMessagesSaga as H } from "../../reported-messages" | |
| 47 | import { membersReportedSaga as U } from "../../member/reported" | |
| 45 | import { forwardMessageToRoomSaga as H } from "../forward-message/forward-message.saga" | |
| 46 | import { reportedMessagesSaga as U } from "../../reported-messages" | |
| 47 | import { membersReportedSaga as q } from "../../member/reported" | |
| 48 | 48 | export function* unindexededRoomTipSaga(o) { |
| 49 | 49 | try { |
| 50 | const e = s(), | |
| 50 | const e = l(), | |
| 51 | 51 | r = yield f(e.getTipSize, o) |
| 52 | 52 | yield i(x(r)) |
| 53 | 53 | } catch (o) { |
| 54 | 54 | yield E("unindexededRoomTipSaga", o) |
| 55 | 55 | } |
| 56 | 56 | } |
| 57 | function* q(o, e) { | |
| 57 | function* J(o, e) { | |
| 58 | 58 | const { role: r, memberId: m } = e.payload |
| 59 | 59 | if (r === R.MODERATOR || r === R.ADMIN) { |
| 60 | const e = yield d(M(o, m)) | |
| 60 | const e = yield t(M(o, m)) | |
| 61 | 61 | if (!e?.isMuted) return |
| 62 | const r = s() | |
| 62 | const r = l() | |
| 63 | 63 | yield f(r.unmuteMember, o, m) |
| 64 | 64 | } |
| 65 | 65 | } |
| 66 | function* J(o, e) { | |
| 66 | function* K(o, e) { | |
| 67 | 67 | const { roomId: r } = e.payload |
| 68 | r === o && (yield i(X({ openNextRoom: !0 }))) | |
| 68 | r === o && (yield i(j({ openNextRoom: !0 }))) | |
| 69 | 69 | } |
| 70 | 70 | function* Q({ roomId: o }) { |
| 71 | 71 | try { |
| 72 | const e = yield d(_) | |
| 73 | ;(e.isOpen || e.roomId) && (yield i(K())) | |
| 74 | const r = yield d(F) | |
| 72 | const e = yield t(_) | |
| 73 | ;(e.isOpen || e.roomId) && (yield i(X())) | |
| 74 | const r = yield t(G) | |
| 75 | 75 | yield i(w({ roomId: o, isOpen: !0 })) |
| 76 | 76 | const m = { ...r, [o]: !0 } |
| 77 | yield t(v, j.INTRO_MODAL_SEEN_ROOMS, m) | |
| 77 | yield d(z, v.INTRO_MODAL_SEEN_ROOMS, m) | |
| 78 | 78 | } catch (o) { |
| 79 | 79 | yield E("firstTimeRoomModalSaga", o) |
| 80 | 80 | } |
| 81 | 81 | } |
| 82 | 82 | export function* commonRoomSaga(i) { |
| 83 | const { roomId: s, myMemberId: f, roomType: R, roomVersion: M, messageId: x, appVersion: _ } = i | |
| 83 | const { roomId: l, myMemberId: f, roomType: R, roomVersion: M, messageId: x, appVersion: _ } = i | |
| 84 | 84 | try { |
| 85 | 85 | const { |
| 86 | applicationKey: i, | |
| 87 | config: { appProtocol: E }, | |
| 86 | config: { appProtocol: i }, | |
| 88 | 87 | } = yield m(V), |
| 89 | w = yield t(p, l.expanding(20)) | |
| 90 | ;(yield o(L, w), | |
| 91 | yield o(D(a.REPORTED_MSG_INDEX, H, [s, f]), s), | |
| 92 | yield o(D(a.REPORTED_MEMBER_INDEX, U, [s, f]), s)) | |
| 93 | const K = [], | |
| 88 | E = yield d(p, s.expanding(20)) | |
| 89 | ;(yield o(L, E), | |
| 90 | yield o(D(a.REPORTED_MSG_INDEX, U, [l, f]), l), | |
| 91 | yield o(D(a.REPORTED_MEMBER_INDEX, q, [l, f]), l)) | |
| 92 | const w = [], | |
| 94 | 93 | X = R === B.BROADCAST, |
| 95 | 94 | j = n(M, a.CHAT_LABELS) |
| 96 | 95 | ;(yield o(y, { |
| 97 | roomId: s, | |
| 96 | roomId: l, | |
| 98 | 97 | ignoreBlocked: X, |
| 99 | filterNames: K, | |
| 98 | filterNames: w, | |
| 100 | 99 | messageId: x, |
| 101 | fileStatsChannel: w, | |
| 100 | fileStatsChannel: E, | |
| 102 | 101 | useLabelsFeature: j, |
| 103 | 102 | }), |
| 104 | yield o(c, { roomId: s })) | |
| 103 | yield o(c, { roomId: l })) | |
| 105 | 104 | const v = n(M, a.MUTE_MEMBER) |
| 106 | ;(yield o(h, { roomId: s, myMemberId: f }), | |
| 107 | yield o(g, { roomId: s, myMemberId: f, muteMemberSupported: v }), | |
| 108 | v && (yield e(P, q, s)), | |
| 109 | yield r(T, S, { applicationKey: i, appProtocol: E }), | |
| 110 | yield r(k, J, s), | |
| 111 | yield o(N, { roomId: s, fileStatsChannel: w }), | |
| 112 | yield o(O, { roomId: s, appVersion: _ }), | |
| 113 | yield o(A, { roomId: s, appVersion: _ }), | |
| 105 | ;(yield o(h, { roomId: l, myMemberId: f }), | |
| 106 | yield o(g, { roomId: l, myMemberId: f, muteMemberSupported: v }), | |
| 107 | v && (yield e(P, J, l)), | |
| 108 | yield r(T, S, { appProtocol: i }), | |
| 109 | yield r(k, K, l), | |
| 110 | yield o(N, { roomId: l, fileStatsChannel: E }), | |
| 111 | yield o(O, { roomId: l, appVersion: _ }), | |
| 112 | yield o(A, { roomId: l, appVersion: _ }), | |
| 114 | 113 | yield e(C, I), |
| 115 | yield o(unindexededRoomTipSaga, s), | |
| 116 | yield o(b, { roomId: s }), | |
| 117 | yield o(u, { roomId: s }), | |
| 118 | (yield d(z, s)) && (yield o(Q, { roomId: s })), | |
| 119 | yield o(G, { appVersion: _ })) | |
| 114 | yield o(unindexededRoomTipSaga, l), | |
| 115 | yield o(b, { roomId: l }), | |
| 116 | yield o(u, { roomId: l }), | |
| 117 | (yield t(F, l)) && (yield o(Q, { roomId: l })), | |
| 118 | yield o(H, { appVersion: _ })) | |
| 120 | 119 | } catch (o) { |
| 121 | 120 | yield E("commonRoomSaga", o) |
| 122 | 121 | } |
| … | … | @@ -0,0 +1,2 @@ |
| 1 | export * from "./room-discover.constant" | |
| 2 | export * from "./room-discover.model" |
| … | … | @@ -0,0 +1,145 @@ |
| 1 | import { ROOM_TYPE as e } from "../room.constant" | |
| 2 | export const PRODUCTION_DISCOVER = { | |
| 3 | keetWelcome: { | |
| 4 | discoveryId: "stzm4d1ukqku5gd4s545b938g4oaqz5apqgw7whescybwstnogcy", | |
| 5 | inviteLink: | |
| 6 | "pear://keet/yfo65n76jzi9girwkdqffaa6istu4n9zrc8pje6qds1qqco448fk6cnoa5uuynb7tnje58r7mtpzs1bodbk8routkfmk3fhd4czh6y8x5jsj7t69pq3iatqd8jj38bjxy318atyxy7mnwg1zk4djry47cchdaye", | |
| 7 | description: | |
| 8 | "A vibrant community where p2p technology enthusiasts gather to discuss their interests (Official)", | |
| 9 | title: "Keet Welcome", | |
| 10 | }, | |
| 11 | keetWelcome_ru: { | |
| 12 | discoveryId: "5e738gywy3yfqnmuy4cc7ijic8ofer73665d93f3gfss76neorno", | |
| 13 | inviteLink: | |
| 14 | "pear://keet/nfo19kgumsfx6yebdqhfgn5na9qiw1pcxny1dmzwj1s1tsazsyr9rt1e4arujn3kwe9gc7bgm8pbeiag13c4dmapqi6zzpwaednz9o9odjcoxsupzsopqc46ceyjfses3cw1oghudtgi6x1ifdhj1yc4woosgyed346wfg1paetn1iiuafiethafntfhr", | |
| 15 | description: | |
| 16 | "Общественная комната для всего, что связано с Keet & Pears. Пожалуйста, соблюдайте правила сообщества.", | |
| 17 | title: "Keet Добро Пожаловать", | |
| 18 | locale: ["ru"], | |
| 19 | }, | |
| 20 | keetWelcome_es: { | |
| 21 | discoveryId: "a4y3u6w7p4hfg5im94skfby3x3ayza7piusgjc8pa69idqprg7go", | |
| 22 | inviteLink: | |
| 23 | "pear://keet/nfozhdeghdhkmq6pjnot38qehk41tfdk7ezdrzop6eg1kf8j4315eyskw9jb9xaucsh8wekg9m5z3fxcooxf9fggkd9t6d3s4nbpzwnxmaa4jg7ow54kenfw4njk8hqa1jobcfkziiu37egtkq7ge6hdw6bfryedn7xcc9njakfrjraefdt1fgtg3jgcr", | |
| 24 | description: | |
| 25 | "Sala comunitaria para todo lo relacionado con Keet y Pears. Por favor, sigue las reglas de uso en la sala de la comunidad. ¡Disfruta!", | |
| 26 | title: "Keet Bienvenido", | |
| 27 | locale: ["es"], | |
| 28 | }, | |
| 29 | keetWelcome_it: { | |
| 30 | discoveryId: "948d99ahti8h9b9mnx96txfuzff4zjnz4rwy3hc8apkkoo9bskro", | |
| 31 | inviteLink: | |
| 32 | "pear://keet/nfoty8ery1i6q7urd4grpb8jbwu9zs7xitorcg4yypnd3cfzwp16g7cmink6dmr6jqjaodufpojo6x7j45g15sghb1mm1zstk8frdhf97etai3cpujbgmcf7x4mk4jtjun53pohwpspkq6rb6sdgngddahd9kyedwfoz16nkakuich9pjubfj77x6jfcr", | |
| 33 | description: | |
| 34 | "Sala comune per tutto ciò che riguarda Keet e 'Pears'. Si prega di seguire le regole della comunità.", | |
| 35 | title: "Keet Benvenuto", | |
| 36 | locale: ["it"], | |
| 37 | }, | |
| 38 | keetWelcome_zh: { | |
| 39 | discoveryId: "rcf6wcm4ohuj6715kswuxucrrcag97kepw119i5sabyk5iycogxy", | |
| 40 | inviteLink: | |
| 41 | "pear://keet/nfo4epyx159hi9s4abcyqmqf6cx5q5nhiemdr58swhyr1o3pfh8irmetf4kczst45dg9mn5gj4546cntiqdkmn65psbyeitnkorstex3kdg1dadm18ceihpk7q7hd6wyny9oghx4aahnjjcg661yuyom7yzzayedrj5nfb6opjcggy4sj8bewtrubywqg", | |
| 42 | description: | |
| 43 | "社区活动室,討論包含 Keet 和“Pear”的所有內容。 请遵守社区规则。 社群活動室,討論包含 Keet 和“Pear”的所有內容。 請遵守社群規則。", | |
| 44 | title: "Keet 欢迎/ 歡迎", | |
| 45 | locale: ["zh", "tw"], | |
| 46 | }, | |
| 47 | keetWelcome_hi: { | |
| 48 | discoveryId: "1yfpjjc9m6yjxgtw5ykz7enr8sbesx3qmbx1emiscag5mtpujgty", | |
| 49 | inviteLink: | |
| 50 | "pear://keet/nfo7sh8wp69zrnumu5tur1dozpf3mdfb8f741po8bk4dtwcm6dxhgfg3ms3ex69ya79wm69ztebkgif3h5ix86kmxa8kh5i47zsgipzzc4tnjgmczkqz5dbbt8fkw17k4swbkc13hxzfuejpttq3jfca84x4qyedaxro5knjakcdmam6j8bfdkaxmjrhr", | |
| 51 | title: "Keet स्वागत", | |
| 52 | description: | |
| 53 | "Keet और Pears से जुड़ी हर चीज़ के लिए सामुदायिक कक्ष। कृपया सामुदायिक कक्ष के उपयोग के नियमों का पालन करें। आनंद लें!", | |
| 54 | locale: ["hi"], | |
| 55 | }, | |
| 56 | keetNews: { | |
| 57 | discoveryId: "cbf1e8wxueaf7mu9biqhe64hugocnn5yhrcfp8dmiize7ifczwxo", | |
| 58 | inviteLink: | |
| 59 | "pear://keet/yfo7j69nb4d8sqtbex7p87e5ukiq9mzyuj3rrpxbwmtrx3ba5x3ga7bdr98c1ycomg1kuo3p9zgscrqahbyo7xsgkr4x5k9rerbpjmjxp3h555imc1ug1qyinw9utwf7n5csxq91n9wuf5p5orxmpsk97youaye", | |
| 60 | description: | |
| 61 | "A space to get the latest updates on new app features and all things Keet. (Official)", | |
| 62 | title: "Keet News", | |
| 63 | roomType: e.BROADCAST, | |
| 64 | }, | |
| 65 | Bitcoin: { | |
| 66 | discoveryId: "chtggppwfrnoieasy9bgwp9hwohqr849xc5pr1h4835kqyotgjoy", | |
| 67 | inviteLink: | |
| 68 | "pear://keet/yfo951jprdyzmfaj9hcxtahif3j3xp31phk1scr3cbo778kr7ghpcxkinyft5cs9m74rt9dcxf71sfxidkxoa7nh6gqr334ik5itkeg3rxyc84b9p7xud81wa375i79epjm8pz63kzkcjiq8f68yumg1syferye", | |
| 69 | description: | |
| 70 | "A lively space where Bitcoin enthusiasts share updates, news, and insights about cryptocurrency.", | |
| 71 | title: "@bitcoin 🔥", | |
| 72 | roomType: e.BROADCAST, | |
| 73 | }, | |
| 74 | pearNews: { | |
| 75 | discoveryId: "cyyqe9my6fqc88upa7zr76qff6z6i3y6gi7zddrky7e3w4eq9cby", | |
| 76 | inviteLink: | |
| 77 | "pear://keet/nfohjh8doay54bzgtrekddbk8wjx7tb5cpi9kukesrpuztgn13z9yekihpj9xtzqdomoe3wc3wnsdhn84migxe9dwg6rod6z5ben9dryz698gh4f76xicpfw56yugzpt7wt8xyk6z6y68qrgrrhw5egyo94iwyed1bg8cnkt4etjwjskzpij5pnrw3fhr", | |
| 78 | description: | |
| 79 | "A space to get the latest updates and all things about the Pear runtime. (Official)", | |
| 80 | title: "Pear News", | |
| 81 | roomType: e.BROADCAST, | |
| 82 | }, | |
| 83 | } | |
| 84 | export const NIGHTLY_DISCOVER = { | |
| 85 | verifiedRoom: { | |
| 86 | title: "Verified room 🟢", | |
| 87 | inviteLink: | |
| 88 | "keet-nightly://keet/gfoufdip6xet734gz7mupg7qf74fu8kqtt5eaf4g9t37i6nw5ygfyyigjc76zzdfu75ozbiwn59aq4c4s9riojyw4bcmmz8jnjtkgwu8frkg9ftfpjcgqjps7gguqy7tzecertrf8xipj3jqrkuu5zgea495gyedpq6t5y4cae1u3349nszawtrubn1hhye", | |
| 89 | discoveryId: "perf5whp59dbjrru86sjc7i84d4q45bu417w9u5buimoqteb6qyy", | |
| 90 | description: "", | |
| 91 | }, | |
| 92 | verifiedBroadcast: { | |
| 93 | title: "Verified Broadcast Room 🟢", | |
| 94 | inviteLink: | |
| 95 | "keet-nightly://keet/gfo6z4f8xgqu3qsbkbjc4n7957yzg8zbehsbk71cw36nfzms5wzxatkfrx6on1a3gzbda67m5bogter8nunyerw5zserdhsemn3ypzdmdbt5j18qaa4m6386da9mtxkbu78rnksfpsrwc7u3zrkmywujpup4ryedwe5ogskmakcdmyf7jzbnfgtg3k6swye", | |
| 96 | discoveryId: "hxtow75oft93igk63inkb1jdwnw896fx77e3c8smnuop31jgmaqy", | |
| 97 | description: "", | |
| 98 | roomType: e.BROADCAST, | |
| 99 | }, | |
| 100 | } | |
| 101 | export const INTERNAL_DISCOVER = { | |
| 102 | keetSocial: { | |
| 103 | discoveryId: "qfgx38i5b5no7zpsxu6gkz9jd9r3ru6bo3m7sp58kt8s7p9xw5xo", | |
| 104 | title: "Keet Social 🟡", | |
| 105 | description: "The fun is now mandatory.", | |
| 106 | inviteLink: | |
| 107 | "keet-internal://keet/gfo7gpfz6cd1n5efs1dh4otkhy7hregxk6p7pejwoagwqdisosrqqsu9rimhzp98z7ubnaoa41y6eizqgn9kwfth4x1sc3bx8jkw5iogz7fdjc6wb7pw7hmnj73ngpr37p3tqhaw9hfzbf9zoxxuq6id41dmqyedmbtogi1jakcdmyf7yuud7wsgqcokgyo", | |
| 108 | }, | |
| 109 | bugReports: { | |
| 110 | discoveryId: "peeqc9ucg8adxo4ctbt1kq734xzq494o74gk5jdydwqbdaxmieco", | |
| 111 | title: "Internal Bug Reports 🟡", | |
| 112 | description: | |
| 113 | "Room for reporting bugs on the internal Keet build only. Keep this room on topic please", | |
| 114 | inviteLink: | |
| 115 | "keet-internal://keet/gfoifsxtf7d1nb5xstg75z63iixx7e5mb4jioja9ntjio9f4tb86yo7ce54gukzfa1nxen1tkdonr8c6u3s8nree73p8xg3xqgcwabw1s6poq4on4gfi8ty5kw8c73xuhqy7gykaf6j6b55kdsdbc6srr4zowyedw7th3rkpambq1z6wjmbehzk4qfrhryo", | |
| 116 | }, | |
| 117 | ama: { | |
| 118 | discoveryId: "nk3p9u3nkx34hg3rd8b7a1hazzj4baegzyir13krkuk4xjjaaoqo", | |
| 119 | title: "AMA 🟡", | |
| 120 | inviteLink: | |
| 121 | "keet-internal://keet/gfoiogcrsf95tefhbztzgw7gqyb91symbiny5d37x7e97yb4jokfascdnbxie6ttcq9pn8wsaaosxkmjqjsfyhs9t1obfgiqepnzadobh7ugqgtmrc6rhk3thrnegu37y7ftz71rtcsjc6ydnb66pciju8ndryedz1ubafdjicno181gj8bd7wsgqcmqeyo", | |
| 122 | description: "", | |
| 123 | }, | |
| 124 | keetDesktop: { | |
| 125 | discoveryId: "mg4764rrzkankuonfx1p4petr65y4babw9m6dnax67f73mcbucsy", | |
| 126 | title: "Keet Desktop 🟡", | |
| 127 | inviteLink: | |
| 128 | "keet-internal://keet/gfoupze7ex9s17cx1qb9wh44soshteqrfqyy6siwjkq5wgrjycddof65djqzhxr6gnfaczzb6hecoqqc9x418thjmerbzxuxgw43y4ufw9781yi4ks4ek9t5c5qip5spkkqagem18sh3kj8u33de6fdc979ucyed4rubhkeo36rghgkmjxbnrz9f83rhryo", | |
| 129 | description: "", | |
| 130 | }, | |
| 131 | keetMobile: { | |
| 132 | discoveryId: "otiht3hkefkq9ekwmumpyk5otzkyghxnckh8e9zree4sqiyibn5y", | |
| 133 | title: "Mobile 🟡", | |
| 134 | inviteLink: | |
| 135 | "keet-internal://keet/gfo995inofbz9kx46c5p5zoa77xud3ac6wt1jr5ydjfa54pfpkicrrztprqascu5jwabtff9m9p6uu1th9sc3kne1y5njo895m3nms6k55x7ksgp9m9z38yoxfo6kog483qqbkizyy4hc6z3ftoezqajwct3syedejx87tnkaetd6euuz7ijpn8pum6hayo", | |
| 136 | description: "", | |
| 137 | }, | |
| 138 | internalRoomsList: { | |
| 139 | discoveryId: "sog44ojmo6ukscy11sp46zswan8dsbkzruibz37ei5ts38m9h7yy", | |
| 140 | title: "Internal Rooms List 🟡", | |
| 141 | inviteLink: | |
| 142 | "keet-internal://keet/gfo37cxwigc3w3341o1x9j1h5akhy5jcinq4g567ta59qkq7t316647ifwyy8cf69p1yo19xif9ke9fpwpwcfu5tuug7ghxeo4c66hwan6mtjx79qnojganf8kfxcdqwznhsr6ibzg6qxjpdioggx5wxp5hekyedijyc6qkn4me1cgyrjubjopx6q7fhryo", | |
| 143 | description: "", | |
| 144 | }, | |
| 145 | } |
| … | … | @@ -0,0 +1,19 @@ |
| 1 | import { ROOM_TYPE as e } from "../room.constant" | |
| 2 | export const createDiscoverRooms = (o, r, t = (e) => e) => | |
| 3 | Object.keys(o).reduce( | |
| 4 | (c, s) => ((c[s] = t({ roomType: e.ROOM, avatarUrl: "", ...o[s], ...r[s] })), c), | |
| 5 | {}, | |
| 6 | ) | |
| 7 | export const filterDiscoverRooms = (e, o) => { | |
| 8 | const { locale: r, excludeDiscoveryIds: t } = o, | |
| 9 | c = new Set(t) | |
| 10 | return Object.keys(e).reduce((o, t) => { | |
| 11 | const s = e[t] | |
| 12 | return ( | |
| 13 | c.has(s.discoveryId) || | |
| 14 | (r && s.locale?.length && !s.locale.some((e) => r.startsWith(e))) || | |
| 15 | (o[t] = s), | |
| 16 | o | |
| 17 | ) | |
| 18 | }, {}) | |
| 19 | } |
| … | … | @@ -23,6 +23,7 @@ export const createRoomSubmit = o("room/create-submit") |
| 23 | 23 | export const toggleRoomNotifications = o("room/toggle-notifications") |
| 24 | 24 | export const roomNewActivity = o("room/new-activity") |
| 25 | 25 | export const toggleRoomMembershipEvents = o("room/toggle-membership-events") |
| 26 | export const toggleRoomIsUnreadCmd = o("room/toggle-room-unread") | |
| 26 | 27 | export const roomSetRepairingStatus = o("room/set-repairing-status") |
| 27 | 28 | export const repairRoom = o("room/room-repairing-status") |
| 28 | 29 | export const roomSetMoveIndexerStatus = o("room/set-move-indexer-status") |
| … | … | @@ -20,6 +20,7 @@ export const ROOM_INVITE_CONFIG_DEFAULT = { |
| 20 | 20 | canIndex: !1, |
| 21 | 21 | expiration: INVITE_EXPIRATION.DAYS, |
| 22 | 22 | reusable: !0, |
| 23 | readOnly: !1, | |
| 23 | 24 | } |
| 24 | 25 | export const ROOM_PREFERENCES = { NOTIFICATIONS: "notifications" } |
| 25 | 26 | export const defaultRoomPreferences = { [ROOM_PREFERENCES.NOTIFICATIONS]: !0 } |
| … | … | @@ -1,26 +1,26 @@ |
| 1 | 1 | import { |
| 2 | 2 | DEFAULT_ROOM_TITLE as e, |
| 3 | 3 | ROOM_TYPE as o, |
| 4 | ROOM_DESCRIPTION_MAX_LENGTH as t, | |
| 5 | RECENT_ROOM_UPDATE as s, | |
| 4 | ROOM_DESCRIPTION_MAX_LENGTH as s, | |
| 5 | RECENT_ROOM_UPDATE as t, | |
| 6 | 6 | } from "./room.constant" |
| 7 | import { calcAvatarColor as i } from "../lib/color" | |
| 7 | import { calcAvatarColorById as i } from "../lib/color" | |
| 8 | 8 | import { getAvatarUrl as r, getAvatarUrlMedium as a } from "../identity" |
| 9 | export const isDmPeerHasLeft = ({ dmMemberId: e, memberCount: t, roomType: s }) => | |
| 10 | s === o.DM && !!e && 1 === t | |
| 9 | export const isDmPeerHasLeft = ({ dmMemberId: e, memberCount: s, roomType: t }) => | |
| 10 | t === o.DM && !!e && 1 === s | |
| 11 | 11 | export const parseRecentRoomsAllResponse = (e) => ({ |
| 12 | 12 | total: e.rooms?.length ?? 0, |
| 13 | 13 | rooms: e.rooms.map((e) => ({ roomId: e.roomId ?? "", timestamp: e.timestamp ?? 0 })), |
| 14 | 14 | }) |
| 15 | 15 | export const parseRecentRoomsChangeResponse = (e) => ({ |
| 16 | type: s.CHANGED, | |
| 16 | type: t.CHANGED, | |
| 17 | 17 | timestamp: e.timestamp ?? 0, |
| 18 | 18 | roomId: e.roomId || "", |
| 19 | 19 | }) |
| 20 | 20 | export const parseRecentRoomsAddRemoveResponse = (e) => { |
| 21 | 21 | switch (e.type) { |
| 22 | case s.ADDED: | |
| 23 | case s.REMOVED: | |
| 22 | case t.ADDED: | |
| 23 | case t.REMOVED: | |
| 24 | 24 | return { type: e.type, timestamp: e.timestamp ?? 0, roomId: e.roomId || "" } |
| 25 | 25 | default: |
| 26 | 26 | return null |
| … | … | @@ -32,58 +32,58 @@ export const parseRoomConfigIdsResponse = (e) => ({ |
| 32 | 32 | discoveryId: e.discoveryId ?? "", |
| 33 | 33 | isReadOnly: !e.self?.deviceId, |
| 34 | 34 | }) |
| 35 | export const parseRoomConfigResponse = (t) => { | |
| 36 | const s = t.roomType === o.DM ? "" : e, | |
| 37 | n = "string" != typeof t.canCall || "true" === t.canCall | |
| 35 | export const parseRoomConfigResponse = (s, t) => { | |
| 36 | const n = s.roomType === o.DM ? "" : e, | |
| 37 | m = "string" != typeof s.canCall || "true" === s.canCall | |
| 38 | 38 | return { |
| 39 | title: t.title ?? s, | |
| 40 | description: t.description ?? "", | |
| 41 | roomType: t.roomType ?? o.ROOM, | |
| 42 | avatarUrl: r(t.avatar), | |
| 43 | avatarUrlMedium: a(t.avatar), | |
| 44 | avatarColor: i(t.title ?? s), | |
| 45 | canCall: n, | |
| 46 | isMembershipEventsDisabled: t.isMembershipEventsDisabled || !1, | |
| 39 | title: s.title ?? n, | |
| 40 | description: s.description ?? "", | |
| 41 | roomType: s.roomType ?? o.ROOM, | |
| 42 | avatarUrl: r(s.avatar), | |
| 43 | avatarUrlMedium: a(s.avatar), | |
| 44 | avatarColor: i(t), | |
| 45 | canCall: m, | |
| 46 | isMembershipEventsDisabled: s.isMembershipEventsDisabled || !1, | |
| 47 | 47 | } |
| 48 | 48 | } |
| 49 | export const parseRoomVersionResponse = (e, o) => (t) => ({ | |
| 49 | export const parseRoomVersionResponse = (e, o) => (s) => ({ | |
| 50 | 50 | roomId: e, |
| 51 | isCompatible: o >= t?.version, | |
| 52 | version: t?.version, | |
| 53 | experimental: t?.experimental, | |
| 54 | latest: o === t?.version, | |
| 51 | isCompatible: o >= s?.version, | |
| 52 | version: s?.version, | |
| 53 | experimental: s?.experimental, | |
| 54 | latest: o === s?.version, | |
| 55 | 55 | }) |
| 56 | export const parseRoomVersionFromInfoResponse = (e, o) => (t) => ({ | |
| 56 | export const parseRoomVersionFromInfoResponse = (e, o) => (s) => ({ | |
| 57 | 57 | roomId: e, |
| 58 | isCompatible: o >= t.digest.abi.version, | |
| 59 | version: t.digest.abi.version ?? 0, | |
| 60 | experimental: !!t.digest.settings.isExperimental, | |
| 58 | isCompatible: o >= s.digest.abi.version, | |
| 59 | version: s.digest.abi.version ?? 0, | |
| 60 | experimental: !!s.digest.settings.isExperimental, | |
| 61 | 61 | }) |
| 62 | 62 | export const parseRoomInfoResponse = (e, o) => { |
| 63 | 63 | const { |
| 64 | title: t, | |
| 65 | description: s, | |
| 64 | title: s, | |
| 65 | description: t, | |
| 66 | 66 | roomType: i, |
| 67 | 67 | avatarUrl: r, |
| 68 | 68 | avatarUrlMedium: a, |
| 69 | 69 | avatarColor: n, |
| 70 | 70 | canCall: m, |
| 71 | isMembershipEventsDisabled: p, | |
| 72 | } = parseRoomConfigResponse(e.config), | |
| 73 | { dmMemberId: d, discoveryId: l, isReadOnly: c } = parseRoomConfigIdsResponse(e) | |
| 71 | isMembershipEventsDisabled: d, | |
| 72 | } = parseRoomConfigResponse(e.config, e.roomId), | |
| 73 | { dmMemberId: p, discoveryId: l, isReadOnly: c } = parseRoomConfigIdsResponse(e) | |
| 74 | 74 | return { |
| 75 | 75 | roomId: e.roomId ?? "", |
| 76 | dmMemberId: d, | |
| 76 | dmMemberId: p, | |
| 77 | 77 | discoveryId: l, |
| 78 | 78 | isReadOnly: c, |
| 79 | title: t, | |
| 80 | description: s, | |
| 79 | title: s, | |
| 80 | description: t, | |
| 81 | 81 | roomType: i, |
| 82 | 82 | avatarUrl: r, |
| 83 | 83 | avatarUrlMedium: a, |
| 84 | 84 | avatarColor: n, |
| 85 | 85 | canCall: m, |
| 86 | isMembershipEventsDisabled: p, | |
| 86 | isMembershipEventsDisabled: d, | |
| 87 | 87 | isAttachmentsDisabled: !!e.digest.settings.isAttachmentsDisabled, |
| 88 | 88 | isLinksDisabled: !!e.digest.settings.isLinksDisabled, |
| 89 | 89 | isCompatible: o >= e.digest.abi.version, |
| … | … | @@ -96,20 +96,21 @@ export const parseRoomInfoResponse = (e, o) => { |
| 96 | 96 | fileTotalSize: e.fileStats?.total, |
| 97 | 97 | activeCallId: e.activeCall?.callId || "", |
| 98 | 98 | isVerified: e.isVerified, |
| 99 | isUnread: e.preferences?.status?.isUnread ?? !1, | |
| 99 | 100 | } |
| 100 | 101 | } |
| 101 | 102 | export const createRoomInitialConfig = ( |
| 102 | 103 | e, |
| 103 | { description: t = "", roomType: s = o.ROOM, canCall: i = "true" } = {}, | |
| 104 | ) => ({ title: e, description: t, roomType: s, canCall: i }) | |
| 104 | { description: s = "", roomType: t = o.ROOM, canCall: i = "true" } = {}, | |
| 105 | ) => ({ title: e, description: s, roomType: t, canCall: i }) | |
| 105 | 106 | export const getRoomConfigChanges = (e, o) => |
| 106 | 107 | e |
| 107 | 108 | ? Object.keys(o).reduce( |
| 108 | (t, s) => (e[s] !== o[s] && "avatar" !== s && void 0 !== o[s] && (t[s] = o[s]), t), | |
| 109 | (s, t) => (e[t] !== o[t] && "avatar" !== t && void 0 !== o[t] && (s[t] = o[t]), s), | |
| 109 | 110 | {}, |
| 110 | 111 | ) |
| 111 | 112 | : o |
| 112 | export const sanitizeRoomDescription = (e) => (e ? e.trim().slice(0, t) : "") | |
| 113 | export const sanitizeRoomDescription = (e) => (e ? e.trim().slice(0, s) : "") | |
| 113 | 114 | export const sanitizeRoomOpts = (e) => ({ |
| 114 | 115 | ...e, |
| 115 | 116 | description: sanitizeRoomDescription(e.description), |
| … | … | @@ -8,104 +8,93 @@ import { |
| 8 | 8 | import { |
| 9 | 9 | ROOM_MAIN_STATE_KEY as m, |
| 10 | 10 | roomMainSlice as d, |
| 11 | ROOM_MAIN_INITIAL_STATE as a, | |
| 11 | ROOM_MAIN_INITIAL_STATE as i, | |
| 12 | 12 | } from "./main/room-main.reducer" |
| 13 | 13 | import { |
| 14 | ROOM_JOINT_STATE_KEY as i, | |
| 14 | ROOM_JOINT_STATE_KEY as a, | |
| 15 | 15 | roomJointSlice as l, |
| 16 | 16 | ROOM_JOINT_INITIAL_STATE as n, |
| 17 | 17 | } from "./joint/room-joint.reducer" |
| 18 | import { ROOM_FILTER as c, ROOM_LIST_STATE_KEY as I } from "./list/room-list.constant" | |
| 18 | import { ROOM_FILTER as y, ROOM_LIST_STATE_KEY as I } from "./list/room-list.constant" | |
| 19 | 19 | import { |
| 20 | ROOM_LIST_INITIAL_STATE as y, | |
| 20 | ROOM_LIST_INITIAL_STATE as c, | |
| 21 | 21 | roomListSlice as p, |
| 22 | setRoomFilterMap as u, | |
| 23 | setSearchRoomIds as B, | |
| 22 | searchAllRooms as u, | |
| 23 | setRoomFilterMap as B, | |
| 24 | setSearchRoomIds as f, | |
| 24 | 25 | } from "./list/room-list.reducer" |
| 25 | import { ROOM_DM_INITIAL_STATE as f, roomDmSlice as R } from "./dm/room-dm.reducer" | |
| 26 | import { ROOM_DM_STATE_KEY as g } from "./dm/room-dm.constant" | |
| 26 | import { ROOM_DM_INITIAL_STATE as R, roomDmSlice as g } from "./dm/room-dm.reducer" | |
| 27 | import { ROOM_DM_STATE_KEY as h } from "./dm/room-dm.constant" | |
| 27 | 28 | import { |
| 28 | setAllRooms as h, | |
| 29 | setMainRoom as v, | |
| 29 | setAllRooms as v, | |
| 30 | setMainRoom as b, | |
| 30 | 31 | setRoomMyCapabilities as A, |
| 31 | setRoomVersion as b, | |
| 32 | setRoomInfo as D, | |
| 33 | setNotifications as T, | |
| 34 | setRoomStats as w, | |
| 35 | unlockDebug as M, | |
| 36 | setCreatedRoomMeta as E, | |
| 37 | roomSetRepairingStatus as C, | |
| 38 | roomSetMoveIndexerStatus as L, | |
| 39 | updateRecentRooms as x, | |
| 40 | addOrRemoveRecentRoom as S, | |
| 41 | setRoomDiscoveryKey as j, | |
| 42 | setRoomShowWarning as k, | |
| 43 | setFavoriteRooms as F, | |
| 44 | addOrRemoveFavoriteRoom as O, | |
| 32 | setRoomVersion as D, | |
| 33 | setRoomInfo as T, | |
| 34 | setNotifications as w, | |
| 35 | setRoomStats as M, | |
| 36 | unlockDebug as E, | |
| 37 | setCreatedRoomMeta as C, | |
| 38 | roomSetRepairingStatus as L, | |
| 39 | roomSetMoveIndexerStatus as S, | |
| 40 | updateRecentRooms as j, | |
| 41 | addOrRemoveRecentRoom as k, | |
| 42 | setRoomDiscoveryKey as x, | |
| 43 | setRoomShowWarning as F, | |
| 44 | setFavoriteRooms as O, | |
| 45 | addOrRemoveFavoriteRoom as N, | |
| 45 | 46 | } from "./room.action" |
| 46 | import { getRecentRoomItemChanged as N, isDmPeerHasLeft as _ } from "./room.model" | |
| 47 | import { arrayEqual as K, getChanged as V } from "../lib/array" | |
| 48 | import { myMemberRemoved as W } from "../member" | |
| 47 | import { getRecentRoomItemChanged as _, isDmPeerHasLeft as K } from "./room.model" | |
| 48 | import { arrayEqual as V, getChanged as W } from "../lib/array" | |
| 49 | import { myMemberRemoved as q } from "../member" | |
| 49 | 50 | import { |
| 50 | FORWARD_MESSAGE_INITIAL_STATE as q, | |
| 51 | FORWARD_MESSAGE_STATE_KEY as z, | |
| 52 | forwardMessageReducer as G, | |
| 51 | FORWARD_MESSAGE_INITIAL_STATE as z, | |
| 52 | FORWARD_MESSAGE_STATE_KEY as G, | |
| 53 | forwardMessageReducer as H, | |
| 53 | 54 | } from "./forward-message" |
| 54 | 55 | import { |
| 55 | SHARE_MESSAGE_IN_MESSAGE_INITIAL_STATE as H, | |
| 56 | SHARE_MESSAGE_IN_STATE_KEY as J, | |
| 57 | shareMessageInReducer as P, | |
| 56 | SHARE_MESSAGE_IN_MESSAGE_INITIAL_STATE as J, | |
| 57 | SHARE_MESSAGE_IN_STATE_KEY as P, | |
| 58 | shareMessageInReducer as Q, | |
| 58 | 59 | } from "./share-message" |
| 59 | import { updateRoomFilterMap as Q } from "./list/room-list.model" | |
| 60 | export const calcActualRoomIds = (o) => { | |
| 61 | const { | |
| 62 | list: { searchText: r, searchRoomIds: t, allRoomIds: e, roomFilterMap: s }, | |
| 63 | favoriteByRoomId: m, | |
| 64 | } = o | |
| 65 | let d = r ? t : e | |
| 66 | return (s[c.FAVORITES] && (d = d.filter((o) => m[o])), d) | |
| 67 | } | |
| 68 | export const updateActualRoomIds = (o) => { | |
| 69 | const r = calcActualRoomIds(o) | |
| 70 | return K(r, o.list.actualRoomIds) ? o : { ...o, list: { ...o.list, actualRoomIds: r } } | |
| 71 | } | |
| 72 | const U = (o) => | |
| 60 | import { updateRoomFilterMap as U } from "./list/room-list.model" | |
| 61 | const X = (o) => | |
| 73 | 62 | Object.values(o) |
| 74 | 63 | .sort((o, r) => r.timestamp - o.timestamp) |
| 75 | 64 | .map((o) => o.roomId), |
| 76 | X = { isDebugging: !1, debugClicks: e, showWarning: !1 } | |
| 65 | Y = { isDebugging: !1, debugClicks: e, showWarning: !1 } | |
| 77 | 66 | export const INITIAL_STATE = { |
| 78 | 67 | stats: {}, |
| 79 | 68 | favoriteByRoomId: {}, |
| 80 | 69 | roomById: {}, |
| 81 | 70 | roomDiscoveryKeyById: {}, |
| 82 | 71 | notificationsById: {}, |
| 83 | [m]: a, | |
| 84 | [i]: n, | |
| 85 | [I]: y, | |
| 86 | [g]: f, | |
| 87 | [z]: q, | |
| 88 | [J]: H, | |
| 72 | [m]: i, | |
| 73 | [a]: n, | |
| 74 | [I]: c, | |
| 75 | [h]: R, | |
| 76 | [G]: z, | |
| 77 | [P]: J, | |
| 89 | 78 | } |
| 90 | 79 | export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 91 | 80 | switch (m.type) { |
| 92 | case w.type: { | |
| 81 | case M.type: { | |
| 93 | 82 | const { roomId: o, stats: t } = m.payload |
| 94 | 83 | return { ...r, stats: { ...t, roomId: o } } |
| 95 | 84 | } |
| 96 | case v.type: { | |
| 85 | case b.type: { | |
| 97 | 86 | const { roomId: o } = m.payload |
| 98 | 87 | let { joint: e } = r |
| 99 | 88 | return ( |
| 100 | 89 | o && (e = { ...e, pairing: { ...e.pairing, activeSeedId: t } }), |
| 101 | { ...r, main: { ...a, roomId: o }, joint: e } | |
| 90 | { ...r, main: { ...i, roomId: o }, joint: e } | |
| 102 | 91 | ) |
| 103 | 92 | } |
| 104 | case B.type: { | |
| 93 | case f.type: { | |
| 105 | 94 | const { payload: o } = m |
| 106 | 95 | return { ...r, list: { ...r.list, isSearching: !1, searchRoomIds: o } } |
| 107 | 96 | } |
| 108 | case h.type: { | |
| 97 | case v.type: { | |
| 109 | 98 | const { total: o, rooms: t } = m.payload |
| 110 | 99 | let e = r |
| 111 | 100 | if ( |
| … | … | @@ -114,16 +103,16 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 114 | 103 | 0 === t.length && 0 === r.list.allRoomIds.length) |
| 115 | 104 | ) |
| 116 | 105 | return e |
| 117 | const s = V( | |
| 106 | const s = W( | |
| 118 | 107 | r.list.allRoomIds, |
| 119 | 108 | t.map((o) => o.roomId), |
| 120 | 109 | ), |
| 121 | 110 | d = t.reduce((o, r) => { |
| 122 | 111 | const { roomId: t } = r, |
| 123 | s = N(e.roomById[t], r) | |
| 112 | s = _(e.roomById[t], r) | |
| 124 | 113 | if (s) { |
| 125 | 114 | const r = o || {} |
| 126 | return ((r[s.roomId] = { ...(e.roomById[t] || X), ...s }), r) | |
| 115 | return ((r[s.roomId] = { ...(e.roomById[t] || Y), ...s }), r) | |
| 127 | 116 | } |
| 128 | 117 | return o |
| 129 | 118 | }, null) |
| … | … | @@ -133,12 +122,12 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 133 | 122 | e |
| 134 | 123 | ) |
| 135 | 124 | } |
| 136 | case F.type: { | |
| 125 | case O.type: { | |
| 137 | 126 | const o = {} |
| 138 | 127 | for (const { roomId: r } of m.payload.rooms) o[r] = !0 |
| 139 | 128 | return { ...r, favoriteByRoomId: o, list: { ...r.list, isRoomFavoriteLoading: !1 } } |
| 140 | 129 | } |
| 141 | case O.type: { | |
| 130 | case N.type: { | |
| 142 | 131 | const o = { ...r.favoriteByRoomId }, |
| 143 | 132 | { type: t, roomId: e } = m.payload |
| 144 | 133 | return ( |
| … | … | @@ -146,13 +135,13 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 146 | 135 | { ...r, favoriteByRoomId: o, list: { ...r.list, isRoomFavoriteLoading: !1 } } |
| 147 | 136 | ) |
| 148 | 137 | } |
| 149 | case S.type: { | |
| 138 | case k.type: { | |
| 150 | 139 | const { type: o, roomId: t, timestamp: e } = m.payload |
| 151 | 140 | switch (o) { |
| 152 | 141 | case s.ADDED: { |
| 153 | 142 | if (r.roomById[t] && r.list.allRoomIds.includes(t)) return r |
| 154 | const o = { ...r.roomById, [t]: { ...X, ...r.roomById[t], roomId: t, timestamp: e } }, | |
| 155 | s = U(o) | |
| 143 | const o = { ...r.roomById, [t]: { ...Y, ...r.roomById[t], roomId: t, timestamp: e } }, | |
| 144 | s = X(o) | |
| 156 | 145 | return { ...r, roomById: o, list: { ...r.list, allRoomIds: s } } |
| 157 | 146 | } |
| 158 | 147 | case s.REMOVED: { |
| … | … | @@ -179,7 +168,7 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 179 | 168 | return r |
| 180 | 169 | } |
| 181 | 170 | } |
| 182 | case W.type: { | |
| 171 | case q.type: { | |
| 183 | 172 | const { roomId: o } = m.payload |
| 184 | 173 | if (!r.roomById[o]) return r |
| 185 | 174 | const t = { ...r.roomById } |
| … | … | @@ -200,7 +189,7 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 200 | 189 | } |
| 201 | 190 | ) |
| 202 | 191 | } |
| 203 | case x.type: { | |
| 192 | case j.type: { | |
| 204 | 193 | const o = m.payload |
| 205 | 194 | if (!Array.isArray(o) || !o.length) return r |
| 206 | 195 | const t = {} |
| … | … | @@ -208,8 +197,8 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 208 | 197 | for (let s = 0; s < o.length; s += 1) { |
| 209 | 198 | const { roomId: m, timestamp: d } = o[s] |
| 210 | 199 | if (t[m]) continue |
| 211 | const a = r.roomById[m] | |
| 212 | a && d && a.timestamp !== d && ((t[m] = { ...a, timestamp: d }), (e = !0)) | |
| 200 | const i = r.roomById[m] | |
| 201 | i && d && i.timestamp !== d && ((t[m] = { ...i, timestamp: d }), (e = !0)) | |
| 213 | 202 | } |
| 214 | 203 | if (!e) return r |
| 215 | 204 | let s = !1 |
| … | … | @@ -219,13 +208,13 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 219 | 208 | } |
| 220 | 209 | const d = { ...r.roomById, ...t } |
| 221 | 210 | if (s) return { ...r, roomById: d } |
| 222 | const a = U(d) | |
| 223 | return { ...r, roomById: d, list: { ...r.list, allRoomIds: a } } | |
| 211 | const i = X(d) | |
| 212 | return { ...r, roomById: d, list: { ...r.list, allRoomIds: i } } | |
| 224 | 213 | } |
| 225 | case D.type: { | |
| 214 | case T.type: { | |
| 226 | 215 | const o = m.payload, |
| 227 | t = { ...(r.roomById[o.roomId] || X), ...o } | |
| 228 | t.isReadOnly = t.isReadOnly || _(t) | |
| 216 | t = { ...(r.roomById[o.roomId] || Y), ...o, isLoaded: !0 } | |
| 217 | t.isReadOnly = t.isReadOnly || K(t) | |
| 229 | 218 | let e = r.list |
| 230 | 219 | return ( |
| 231 | 220 | t.discoveryId && |
| … | … | @@ -234,7 +223,7 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 234 | 223 | { ...r, roomById: { ...r.roomById, [o.roomId]: t }, list: e } |
| 235 | 224 | ) |
| 236 | 225 | } |
| 237 | case k.type: { | |
| 226 | case F.type: { | |
| 238 | 227 | const { roomId: o, showWarning: t } = m.payload, |
| 239 | 228 | e = r.roomById[o] |
| 240 | 229 | return e ? { ...r, roomById: { ...r.roomById, [o]: { ...e, showWarning: t } } } : r |
| … | … | @@ -243,15 +232,15 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 243 | 232 | const { roomId: o, myCapabilites: t } = m.payload |
| 244 | 233 | return { ...r, roomById: { ...r.roomById, [o]: { ...r.roomById[o], myCapabilites: t } } } |
| 245 | 234 | } |
| 246 | case b.type: { | |
| 235 | case D.type: { | |
| 247 | 236 | const { roomId: o, ...t } = m.payload || {} |
| 248 | 237 | return o ? { ...r, roomById: { ...r.roomById, [o]: { ...r.roomById[o], ...t } } } : r |
| 249 | 238 | } |
| 250 | case T.type: { | |
| 239 | case w.type: { | |
| 251 | 240 | const o = m.payload |
| 252 | 241 | return { ...r, notificationsById: { ...r.notificationsById, ...o } } |
| 253 | 242 | } |
| 254 | case M.type: { | |
| 243 | case E.type: { | |
| 255 | 244 | const o = m.payload, |
| 256 | 245 | t = r.roomById[o] |
| 257 | 246 | if (!t || t.isDebugging || "number" != typeof t.debugClicks) return r |
| … | … | @@ -260,42 +249,55 @@ export const roomCommonReducer = (r = INITIAL_STATE, m) => { |
| 260 | 249 | ? { ...r, roomById: { ...r.roomById, [o]: { ...t, debugClicks: s - 1 } } } |
| 261 | 250 | : { ...r, roomById: { ...r.roomById, [o]: { ...t, debugClicks: 0, isDebugging: !0 } } } |
| 262 | 251 | } |
| 263 | case E.type: { | |
| 252 | case C.type: { | |
| 264 | 253 | const { roomId: o, title: t } = m.payload |
| 265 | 254 | return o && t ? { ...r, roomById: { ...r.roomById, [o]: { ...r.roomById[o], title: t } } } : r |
| 266 | 255 | } |
| 267 | case C.type: { | |
| 256 | case L.type: { | |
| 268 | 257 | const { roomId: o, status: t } = m.payload |
| 269 | 258 | return { ...r, roomById: { ...r.roomById, [o]: { ...r.roomById[o], isRepairing: t } } } |
| 270 | 259 | } |
| 271 | case L.type: { | |
| 260 | case S.type: { | |
| 272 | 261 | const { roomId: o, status: t } = m.payload |
| 273 | 262 | return { ...r, roomById: { ...r.roomById, [o]: { ...r.roomById[o], isMovingIndexer: t } } } |
| 274 | 263 | } |
| 275 | 264 | case o.type: |
| 276 | 265 | return INITIAL_STATE |
| 277 | case j.type: { | |
| 266 | case x.type: { | |
| 278 | 267 | const { roomId: o, key: t } = m.payload |
| 279 | 268 | return { ...r, roomDiscoveryKeyById: { ...r.roomDiscoveryKeyById, [o]: t } } |
| 280 | 269 | } |
| 281 | case u.type: { | |
| 270 | case B.type: { | |
| 282 | 271 | const { payload: o } = m, |
| 283 | t = Q(r.list.roomFilterMap, o) | |
| 272 | t = U(r.list.roomFilterMap, o) | |
| 284 | 273 | return { ...r, list: { ...r.list, roomFilterMap: t } } |
| 285 | 274 | } |
| 286 | 275 | default: |
| 287 | 276 | return r |
| 288 | 277 | } |
| 289 | 278 | } |
| 279 | const Z = new Set([j.type, k.type, v.type, O.type, N.type, u.type, f.type, B.type]) | |
| 280 | export const actualRoomIdsReducer = (o, r) => { | |
| 281 | if (!Z.has(r.type)) return o | |
| 282 | const { | |
| 283 | list: { searchText: t, searchRoomIds: e, allRoomIds: s, roomFilterMap: m }, | |
| 284 | favoriteByRoomId: d, | |
| 285 | } = o | |
| 286 | let i = t ? e : s | |
| 287 | return ( | |
| 288 | m[y.FAVORITES] && (i = i.filter((o) => d[o])), | |
| 289 | V(o.list.actualRoomIds, i) ? o : { ...o, list: { ...o.list, actualRoomIds: i } } | |
| 290 | ) | |
| 291 | } | |
| 290 | 292 | export const roomReducer = (o = INITIAL_STATE, t) => { |
| 291 | 293 | const e = { |
| 292 | 294 | [m]: d.reducer(o[m], t), |
| 293 | [i]: l.reducer(o[i], t), | |
| 295 | [a]: l.reducer(o[a], t), | |
| 294 | 296 | [I]: p.reducer(o[I], t), |
| 295 | [g]: R.reducer(o[g], t), | |
| 296 | [z]: G(o[z], t), | |
| 297 | [J]: P(o[J], t), | |
| 297 | [h]: g.reducer(o[h], t), | |
| 298 | [G]: H(o[G], t), | |
| 299 | [P]: Q(o[P], t), | |
| 298 | 300 | } |
| 299 | 301 | let s = r(o, e) ? { ...o, ...e } : o |
| 300 | return ((s = roomCommonReducer(s, t)), s !== o && (s = updateActualRoomIds(s)), s) | |
| 302 | return ((s = roomCommonReducer(s, t)), (s = actualRoomIdsReducer(s, t)), s) | |
| 301 | 303 | } |
| … | … | @@ -35,9 +35,9 @@ import { |
| 35 | 35 | } from "./main" |
| 36 | 36 | import { |
| 37 | 37 | switchRoomSubmit as N, |
| 38 | setMainRoom as F, | |
| 39 | closeRoomSubmit as O, | |
| 40 | setNotifications as w, | |
| 38 | setMainRoom as w, | |
| 39 | closeRoomSubmit as F, | |
| 40 | setNotifications as O, | |
| 41 | 41 | toggleRoomNotifications as B, |
| 42 | 42 | setCreatedRoomMeta as G, |
| 43 | 43 | repairRoom as L, |
| … | … | @@ -61,7 +61,7 @@ export function* roomToggleNotificationsHandler({ payload: { roomId: e } }) { |
| 61 | 61 | const o = !(yield i(K(e))), |
| 62 | 62 | t = y() |
| 63 | 63 | ;(yield p(t.updateRoomPreferences, e, c.IS_FULLY_MUTED, !o), |
| 64 | yield r(w({ [e]: { notifications: o } }))) | |
| 64 | yield r(O({ [e]: { notifications: o } }))) | |
| 65 | 65 | } |
| 66 | 66 | export function* roomToggleMembershipEventsHandler({ payload: e }) { |
| 67 | 67 | try { |
| … | … | @@ -96,11 +96,11 @@ export function* roomGetStartStateData(o) { |
| 96 | 96 | export function* activeRoomSaga({ roomId: e, messageId: o, appVersion: n }) { |
| 97 | 97 | const d = y() |
| 98 | 98 | try { |
| 99 | if ((yield r(F({ roomId: e })), !e)) return | |
| 99 | if ((yield r(w({ roomId: e })), !e)) return | |
| 100 | 100 | yield g([d.subscribeActivateRoom, e], () => {}, { |
| 101 | 101 | onError: (e) => x("subscribeActivateRoom", e), |
| 102 | 102 | onCleanup: ({ apiClose: e }) => { |
| 103 | if (e) return r(O({ openNextRoom: !0 })) | |
| 103 | if (e) return r(F({ openNextRoom: !0 })) | |
| 104 | 104 | }, |
| 105 | 105 | }) |
| 106 | 106 | const [m, a] = yield roomGetStartStateData(e), |
| … | … | @@ -158,9 +158,7 @@ function* ee({ payload: { roomId: e } }) { |
| 158 | 158 | h({ title: "Move Indexer", message: "Could not find any device indexing" }), |
| 159 | 159 | )) |
| 160 | 160 | if (m.id === d) |
| 161 | return void (yield r( | |
| 162 | b({ title: "Move Indexer", message: "The current device is already indexing" }), | |
| 163 | )) | |
| 161 | return void (yield r(b({ title: "Move Indexer", message: "This device is now the indexer" }))) | |
| 164 | 162 | ;(yield p(o.moveIndexer, e, d, m.id), |
| 165 | 163 | yield r(b({ title: "Move Indexer", message: "Indexer moved to this device" }))) |
| 166 | 164 | } catch (e) { |
| … | … | @@ -15,8 +15,8 @@ import { |
| 15 | 15 | import { getRoomMainId as R } from "./main/room-main.reducer" |
| 16 | 16 | import { getRoomPairingCount as c } from "./joint/room-joint.reducer" |
| 17 | 17 | import { getRoomListAllIds as d } from "./list/room-list.reducer" |
| 18 | import { getChatMessageById as p, getChatMyMessageNotSeenByPeer as l } from "../chat/list-view" | |
| 19 | import { getChatLastMessage as y } from "../chat/last-message" | |
| 18 | import { getChatMessageById as p, getChatMyMessageNotSeenByPeer as y } from "../chat/list-view" | |
| 19 | import { getChatLastMessage as l } from "../chat/last-message" | |
| 20 | 20 | import { getMemberBlocked as x } from "../identity" |
| 21 | 21 | export const getRoomState = (o) => o[n] |
| 22 | 22 | export const getRoomItemById = (o) => (t) => getRoomState(t).roomById[o] |
| … | … | @@ -68,6 +68,10 @@ export const getRoomNotificationById = (o) => (t) => { |
| 68 | 68 | const e = getRoomState(t).notificationsById?.[o] |
| 69 | 69 | return e?.[g.NOTIFICATIONS] ?? i[g.NOTIFICATIONS] |
| 70 | 70 | } |
| 71 | export const getRoomIsUnread = (o) => (t) => { | |
| 72 | const e = getRoomItemById(o) | |
| 73 | return e?.(t)?.isUnread ?? !1 | |
| 74 | } | |
| 71 | 75 | export const getIsRoomDm = (t) => o(getRoomItemById(t), (o) => o?.roomType === I.DM) |
| 72 | 76 | export const canCurrentMemberManageRoles = (o) => { |
| 73 | 77 | const m = R(o), |
| … | … | @@ -87,7 +91,7 @@ export const getIsChatMessageSent = (o) => (t) => { |
| 87 | 91 | export const getLastMessageDeliveryStatus = (o) => { |
| 88 | 92 | const t = getRoomIsDm(o) |
| 89 | 93 | return (e) => { |
| 90 | const { peerNotSeen: m, message: r } = y(e, o) | |
| 94 | const { peerNotSeen: m, message: r } = l(e, o) | |
| 91 | 95 | if (!r?.local || r.event) return a.NONE |
| 92 | 96 | const s = t(e) |
| 93 | 97 | if (!m && s) return a.READ |
| … | … | @@ -96,7 +100,7 @@ export const getLastMessageDeliveryStatus = (o) => { |
| 96 | 100 | } |
| 97 | 101 | } |
| 98 | 102 | export const getChatMessageDeliveryStatus = (o) => { |
| 99 | const t = l(o), | |
| 103 | const t = y(o), | |
| 100 | 104 | e = getIsChatMessageSent(o) |
| 101 | 105 | return (m) => { |
| 102 | 106 | const r = p(m, o)?.local |
| … | … | @@ -1,83 +1,70 @@ |
| 1 | 1 | import { |
| 2 | select as i, | |
| 3 | put as e, | |
| 2 | select as e, | |
| 3 | put as i, | |
| 4 | 4 | takeLatest as o, |
| 5 | 5 | takeLeading as t, |
| 6 | call as n, | |
| 6 | call as d, | |
| 7 | 7 | } from "redux-saga/effects" |
| 8 | import { memberRemoveSuccess as c } from "../member" | |
| 9 | import { UI_PANEL as r, ROOM_INFO_SECTION as d } from "./ui.constants" | |
| 8 | import { memberRemoveSuccess as l } from "../member" | |
| 9 | import { UI_PANEL as n, ROOM_INFO_SECTION as r } from "./ui.constants" | |
| 10 | 10 | import { |
| 11 | setRoomInfoSectionsStack as l, | |
| 12 | closeUIPanel as s, | |
| 11 | setRoomInfoSectionsStack as y, | |
| 12 | closeUIPanel as c, | |
| 13 | 13 | toggleUIPanel as m, |
| 14 | uiRoomInfoGoBackCmd as y, | |
| 14 | uiRoomInfoGoBackCmd as s, | |
| 15 | 15 | ROOM_INFO_SECTION_STACK_DEFAULT as a, |
| 16 | 16 | getRoomInfoCurrentSectionData as f, |
| 17 | 17 | ROOM_INFO_SECTION_ROOT as u, |
| 18 | 18 | getRoomInfoSectionsStack as p, |
| 19 | 19 | uiRoomInfoGoToCmd as E, |
| 20 | 20 | getUIPanelRoomInfoOpen as M, |
| 21 | resetUIPanels as R, | |
| 22 | uiRoomInfoGoToMemberCmd as I, | |
| 21 | resetUIPanels as I, | |
| 22 | uiRoomInfoGoToMemberCmd as O, | |
| 23 | 23 | } from "./ui.reducer" |
| 24 | import { getAppCurrentRoomId as O, setAppCurrentRoomId as S } from "../app/app.reducer" | |
| 25 | import { canCurrentMemberManageRoles as P, roomFilesInitialFetchSaga as _ } from "../room" | |
| 26 | import { last as b } from "../lib/array" | |
| 27 | const { | |
| 28 | ROOT: B, | |
| 29 | FILES: N, | |
| 30 | DM_REQUEST_MEMBER: g, | |
| 31 | MANAGE_MEMBER: F, | |
| 32 | MEMBER: h, | |
| 33 | MEMBERS_PERMISSIONS: v, | |
| 34 | } = d | |
| 24 | import { getAppCurrentRoomId as R, setAppCurrentRoomId as _ } from "../app/app.reducer" | |
| 25 | import { | |
| 26 | canCurrentMemberManageRoles as b, | |
| 27 | roomFilesInitialFetchSaga as S, | |
| 28 | switchRoomSubmit as g, | |
| 29 | } from "../room" | |
| 30 | import { last as B } from "../lib/array" | |
| 31 | const { ROOT: F, FILES: N, DM_REQUEST_MEMBER: h, MANAGE_MEMBER: v, MEMBER: x } = r | |
| 35 | 32 | export function* uiRoomInfoSectionSaga() { |
| 36 | ;(yield o(S, function* () { | |
| 37 | ;(yield i(M)) && (yield e(s(r.ROOM_INFO))) | |
| 33 | ;(yield o(_, function* () { | |
| 34 | ;(yield e(M)) && (yield i(c(n.ROOM_INFO))) | |
| 38 | 35 | }), |
| 39 | yield o(l, function* () { | |
| 40 | const { section: e } = yield i(f), | |
| 41 | o = yield i(O) | |
| 42 | e === N && (yield n(_, { roomId: o })) | |
| 43 | }), | |
| 44 | 36 | yield o(y, function* () { |
| 45 | const o = yield i(p), | |
| 37 | const { section: i } = yield e(f), | |
| 38 | o = yield e(R) | |
| 39 | i === N && (yield d(S, { roomId: o })) | |
| 40 | }), | |
| 41 | yield o(s, function* () { | |
| 42 | const o = yield e(p), | |
| 46 | 43 | t = o.length > 1 ? o.slice(0, -1) : a |
| 47 | yield e(l(t)) | |
| 44 | yield i(y(t)) | |
| 48 | 45 | }), |
| 49 | 46 | yield o(E, function* (o) { |
| 50 | const t = yield i(M) | |
| 51 | t || (yield e(R()), yield e(m({ key: r.ROOM_INFO, value: !0 }))) | |
| 52 | const { payload: n } = o, | |
| 53 | { section: c } = n | |
| 54 | if (c === B) return void (yield e(l(a))) | |
| 55 | let d = yield i(p) | |
| 56 | t || (d = [u]) | |
| 57 | const s = b(d)?.section | |
| 58 | let y = s === c ? d.slice(0, -1) : [...d] | |
| 59 | if ((y.push(n), !t)) { | |
| 60 | const e = yield i(P) | |
| 61 | c === h | |
| 62 | ? (y = e | |
| 63 | ? [ | |
| 64 | u, | |
| 65 | { section: v, sectionParams: {} }, | |
| 66 | { section: F, sectionParams: n.sectionParams }, | |
| 67 | n, | |
| 68 | ] | |
| 69 | : [u, n]) | |
| 70 | : c === F | |
| 71 | ? (y = [u, { section: v, sectionParams: {} }, n]) | |
| 72 | : c === g && (y = [n]) | |
| 73 | } | |
| 74 | yield e(l(y)) | |
| 47 | const { payload: t } = o, | |
| 48 | { | |
| 49 | section: d, | |
| 50 | sectionParams: { roomId: l }, | |
| 51 | } = t, | |
| 52 | r = yield e(R) | |
| 53 | l && l !== r && (yield i(g({ roomId: l }))) | |
| 54 | const c = yield e(M) | |
| 55 | if ((c || (yield i(I()), yield i(m({ key: n.ROOM_INFO, value: !0 }))), d === F)) | |
| 56 | return void (yield i(y(a))) | |
| 57 | let s = yield e(p) | |
| 58 | c || (s = [u]) | |
| 59 | const f = B(s)?.section | |
| 60 | let E = f === d ? s.slice(0, -1) : [...s] | |
| 61 | ;(E.push(t), c || d !== h || (E = [t]), yield i(y(E))) | |
| 75 | 62 | }), |
| 76 | yield o(I, function* ({ payload: { memberId: o } }) { | |
| 77 | const t = (yield i(P)) ? F : h | |
| 78 | yield e(E({ section: t, sectionParams: { memberId: o } })) | |
| 63 | yield o(O, function* ({ payload: { memberId: o } }) { | |
| 64 | const t = (yield e(b)) ? v : x | |
| 65 | yield i(E({ section: t, sectionParams: { memberId: o } })) | |
| 79 | 66 | }), |
| 80 | yield t(c, function* () { | |
| 81 | yield e(l(a)) | |
| 67 | yield t(l, function* () { | |
| 68 | yield i(y(a)) | |
| 82 | 69 | })) |
| 83 | 70 | } |
| … | … | @@ -89,6 +89,7 @@ export const ROOM_INFO_SECTION = { |
| 89 | 89 | REPORTED_MEMBERS_LIST: "reportedMembersList", |
| 90 | 90 | DM_REQUEST_MEMBER: "dmRequestMember", |
| 91 | 91 | DEBUG: "debug", |
| 92 | DEV_TOOLS: "devTools", | |
| 92 | 93 | GROUP_SETTINGS: "groupSettings", |
| 93 | 94 | } |
| 94 | 95 | export const PROFILE_SECTIONS = { |
| … | … | @@ -3,15 +3,15 @@ import { |
| 3 | 3 | takeEvery as e, |
| 4 | 4 | select as o, |
| 5 | 5 | fork as l, |
| 6 | all as t, | |
| 7 | takeLatest as r, | |
| 8 | take as d, | |
| 6 | all as d, | |
| 7 | takeLatest as t, | |
| 8 | take as r, | |
| 9 | 9 | } from "redux-saga/effects" |
| 10 | 10 | import { |
| 11 | 11 | callCancel as y, |
| 12 | 12 | callLeave as c, |
| 13 | callJoinedEvt as m, | |
| 14 | callJoinDMIncoming as n, | |
| 13 | callJoinedEvt as n, | |
| 14 | callJoinDMIncoming as m, | |
| 15 | 15 | openCallSettings as a, |
| 16 | 16 | } from "../call/call.action" |
| 17 | 17 | import { getCallStatus as f, isCallJoinedMode as u } from "../call/call.reducer" |
| … | … | @@ -44,37 +44,38 @@ import { |
| 44 | 44 | getUICallExpanded as x, |
| 45 | 45 | closeUIPanel as G, |
| 46 | 46 | getUIPanelState as L, |
| 47 | setAppActive as Q, | |
| 47 | 48 | } from "./ui.reducer" |
| 48 | import { memberMuteToggleSuccess as Q, memberRemoveSuccess as V } from "../member/member.reducer" | |
| 49 | import { appActiveSaga as k } from "./ui-app-active.saga" | |
| 49 | import { memberMuteToggleSuccess as V, memberRemoveSuccess as k } from "../member/member.reducer" | |
| 50 | import { appActiveSaga as w } from "./ui-app-active.saga" | |
| 50 | 51 | import { |
| 51 | setSyncDeviceSeedId as w, | |
| 52 | addIdentityInvitedDevice as A, | |
| 52 | setSyncDeviceSeedId as A, | |
| 53 | addIdentityInvitedDevice as F, | |
| 53 | 54 | } from "../identity/identity.reducer" |
| 54 | import { LAYOUT_TYPE as F, ROOM_LIST_TAB as J, UI_PANEL as q } from "./ui.constants" | |
| 55 | import { LAYOUT_TYPE as J, ROOM_LIST_TAB as q, UI_PANEL as z } from "./ui.constants" | |
| 55 | 56 | import { |
| 56 | clearPairingRoom as z, | |
| 57 | getRoomPairingIdActive as B, | |
| 58 | setRoomPairingActive as H, | |
| 57 | clearPairingRoom as B, | |
| 58 | getRoomPairingIdActive as H, | |
| 59 | setRoomPairingActive as K, | |
| 59 | 60 | } from "../room/joint/room-joint.reducer" |
| 60 | 61 | import { |
| 61 | setUIRemoveMemberModal as K, | |
| 62 | setUIBlockMemberModal as W, | |
| 63 | setUIMuteMemberToggleModal as X, | |
| 62 | setUIRemoveMemberModal as W, | |
| 63 | setUIBlockMemberModal as X, | |
| 64 | setUIMuteMemberToggleModal as Z, | |
| 64 | 65 | } from "./ui-modal.reducer" |
| 65 | import { uiRoomInfoSectionSaga as Z } from "./ui-room-info.saga" | |
| 66 | import { getDmActiveId as $, setDmActiveId as ii } from "../room" | |
| 67 | import { callJoinCmd as ei } from "../call/call-status.action" | |
| 68 | import { getErrorFilter as oi, resetErrorFilter as li } from "../error" | |
| 66 | import { uiRoomInfoSectionSaga as $ } from "./ui-room-info.saga" | |
| 67 | import { getDmActiveId as ii, setDmActiveId as ei } from "../room" | |
| 68 | import { callJoinCmd as oi } from "../call/call-status.action" | |
| 69 | import { getErrorFilter as li, resetErrorFilter as di } from "../error" | |
| 69 | 70 | import { getFileViewerFile as ti } from "../media/file/file.reducer" |
| 70 | 71 | import { resetFileViewer as ri } from "../media/file/file.action" |
| 71 | 72 | export function* uiLayoutSaga() { |
| 72 | ;(yield l(Z), | |
| 73 | yield l(k), | |
| 73 | ;(yield l($), | |
| 74 | yield l(w), | |
| 74 | 75 | yield e(G, function* ({ payload: e }) { |
| 75 | if (e === q.PROFILE) { | |
| 76 | const e = yield o(oi) | |
| 77 | ;(e.key || e.value) && (yield i(li())) | |
| 76 | if (e === z.PROFILE) { | |
| 77 | const e = yield o(li) | |
| 78 | ;(e.key || e.value) && (yield i(di())) | |
| 78 | 79 | } |
| 79 | 80 | }), |
| 80 | 81 | yield e(E, function* () { |
| … | … | @@ -82,71 +83,76 @@ export function* uiLayoutSaga() { |
| 82 | 83 | }), |
| 83 | 84 | yield e([E, y, c], function* (e) { |
| 84 | 85 | if ((yield o(Y)) && E.match(e)) return |
| 85 | const [l, r, d] = yield t([o(f), o(s), o(p)]) | |
| 86 | const [l, t, r] = yield d([o(f), o(s), o(p)]) | |
| 86 | 87 | u(l) |
| 87 | ? r === d | |
| 88 | ? t === r | |
| 88 | 89 | ? yield i(v({ chat: !0, callParticipants: !1 })) |
| 89 | 90 | : yield i(v({ rooms: !0, chat: !0, callParticipants: !1 })) |
| 90 | 91 | : yield i(v({ rooms: !0, chat: !0 })) |
| 91 | 92 | }), |
| 92 | yield e(n, function* () { | |
| 93 | yield e(m, function* () { | |
| 93 | 94 | ;(yield i(C(!0)), |
| 94 | yield d(a), | |
| 95 | yield r(a), | |
| 95 | 96 | yield i(v({ rooms: !1, chat: !1 })), |
| 96 | yield d(ei), | |
| 97 | yield r(oi), | |
| 97 | 98 | yield i(C(!1))) |
| 98 | 99 | }), |
| 99 | yield e(m, function* () { | |
| 100 | yield e(n, function* () { | |
| 100 | 101 | yield i(v({ chat: !1, rooms: !1 })) |
| 101 | 102 | }), |
| 102 | yield e(w, function* ({ payload: e }) { | |
| 103 | yield e(A, function* ({ payload: e }) { | |
| 103 | 104 | const l = yield o(M) |
| 104 | e && l !== F.SYNC_DEVICE && (yield i(j(F.SYNC_DEVICE))) | |
| 105 | e && l !== J.SYNC_DEVICE && (yield i(j(J.SYNC_DEVICE))) | |
| 105 | 106 | }), |
| 106 | yield e(A, function* () { | |
| 107 | yield e(F, function* () { | |
| 107 | 108 | yield i(v({ profile: !1 })) |
| 108 | 109 | }), |
| 109 | 110 | yield e([I, N], function* () { |
| 110 | const [e, l] = yield t([o(h), o(M)]) | |
| 111 | ;(e === O.RUNNING && l !== F.ROOM && (yield i(j(F.ROOM))), | |
| 112 | e === O.IDENTITY_SETUP && l === F.ROOM && (yield i(j(F.IDENTITY_SETUP)))) | |
| 111 | const [e, l] = yield d([o(h), o(M)]) | |
| 112 | ;(e === O.RUNNING && l !== J.ROOM && (yield i(j(J.ROOM))), | |
| 113 | e === O.IDENTITY_SETUP && l === J.ROOM && (yield i(j(J.IDENTITY_SETUP)))) | |
| 113 | 114 | }), |
| 114 | 115 | yield e(R, function* ({ payload: e }) { |
| 115 | 116 | const { memberId: o } = e |
| 116 | yield i(W({ memberId: o })) | |
| 117 | }), | |
| 118 | yield e(Q, function* () { | |
| 119 | yield i(X(null)) | |
| 117 | yield i(X({ memberId: o })) | |
| 120 | 118 | }), |
| 121 | 119 | yield e(V, function* () { |
| 122 | yield i(K(null)) | |
| 120 | yield i(Z(null)) | |
| 121 | }), | |
| 122 | yield e(k, function* () { | |
| 123 | yield i(W(null)) | |
| 123 | 124 | }), |
| 124 | yield r([H, z], function* () { | |
| 125 | const { PAIRING: e, JOINED: l, DM_REQUESTS: t } = J, | |
| 126 | r = yield o(B), | |
| 127 | d = yield o(U) | |
| 128 | if (r) yield i(g(e)) | |
| 125 | yield t([K, B], function* () { | |
| 126 | const { PAIRING: e, JOINED: l, DM_REQUESTS: d } = q, | |
| 127 | t = yield o(H), | |
| 128 | r = yield o(U) | |
| 129 | if (t) yield i(g(e)) | |
| 129 | 130 | else |
| 130 | switch (d) { | |
| 131 | case t: | |
| 131 | switch (r) { | |
| 132 | case d: | |
| 132 | 133 | case e: |
| 133 | 134 | yield i(g(l)) |
| 134 | 135 | } |
| 135 | 136 | }), |
| 136 | yield r([ii], function* () { | |
| 137 | ;(yield o($)) && (yield i(g(J.DM_REQUESTS)), yield i(b())) | |
| 137 | yield t([ei], function* () { | |
| 138 | ;(yield o(ii)) && (yield i(g(q.DM_REQUESTS)), yield i(b())) | |
| 138 | 139 | }), |
| 139 | 140 | yield e(T, function* () { |
| 140 | const [e, l, r, d] = yield t([o(f), o(S), o(x), o(D)]) | |
| 141 | u(e) && l && r && d && (yield i(v({ rooms: !0, chat: !0 }))) | |
| 141 | const [e, l, t, r] = yield d([o(f), o(S), o(x), o(D)]) | |
| 142 | u(e) && l && t && r && (yield i(v({ rooms: !0, chat: !0 }))) | |
| 142 | 143 | }), |
| 143 | 144 | yield e(v, function* () { |
| 144 | 145 | const { chat: e } = yield o(L), |
| 145 | 146 | l = yield o(P) |
| 146 | 147 | e && l ? yield i(_(!1)) : e || l || (yield i(_(!0))) |
| 147 | 148 | }), |
| 149 | yield e(Q, function* (e) { | |
| 150 | const l = yield o(P), | |
| 151 | d = e.payload | |
| 152 | d || l ? d && l && (yield i(_(!1))) : yield i(_(!0)) | |
| 153 | }), | |
| 148 | 154 | yield e(v, function* (e) { |
| 149 | const { rooms: l, chat: t } = e.payload | |
| 150 | ;(yield o(D)) && !1 === l && !1 === t && (yield i(T())) | |
| 155 | const { rooms: l, chat: d } = e.payload | |
| 156 | ;(yield o(D)) && !1 === l && !1 === d && (yield i(T())) | |
| 151 | 157 | })) |
| 152 | 158 | } |
| … | … | @@ -1,176 +1,206 @@ |
| 1 | 1 | import { |
| 2 | select as i, | |
| 3 | put as e, | |
| 2 | select as e, | |
| 3 | put as i, | |
| 4 | 4 | take as l, |
| 5 | 5 | getContext as t, |
| 6 | 6 | call as a, |
| 7 | 7 | takeLatest as n, |
| 8 | delay as o, | |
| 9 | fork as r, | |
| 10 | race as d, | |
| 8 | takeEvery as o, | |
| 9 | delay as r, | |
| 10 | fork as d, | |
| 11 | race as c, | |
| 11 | 12 | } from "redux-saga/effects" |
| 12 | import { getAppCurrentRoomId as y, hasAppCurrentRoomCallMatch as c } from "../app" | |
| 13 | import { getRoomCanCall as s, getRoomItemById as m } from "../room" | |
| 14 | import { taskErrorSaga as g } from "../error" | |
| 13 | import { getAppCurrentRoomId as y, hasAppCurrentRoomCallMatch as s } from "../app" | |
| 14 | import { getRoomCanCall as m, getRoomItemById as g } from "../room" | |
| 15 | import { taskErrorSaga as u } from "../error" | |
| 15 | 16 | import { |
| 16 | getCallStatus as u, | |
| 17 | callJoinCmd as C, | |
| 18 | callLeave as p, | |
| 19 | CALL_STATUS as f, | |
| 20 | openCallSettings as v, | |
| 17 | getCallStatus as p, | |
| 18 | getCallId as C, | |
| 19 | callJoinCmd as f, | |
| 20 | callLeave as S, | |
| 21 | CALL_STATUS as v, | |
| 22 | openCallSettings as R, | |
| 21 | 23 | isCallJoinedMode as A, |
| 22 | callCancel as S, | |
| 24 | updateCallRemoteMedia as E, | |
| 25 | removeCallRemoteMedia as b, | |
| 26 | STREAM_TYPE as h, | |
| 27 | callCancel as w, | |
| 23 | 28 | } from "../call" |
| 24 | 29 | import { |
| 25 | uiLeaveAndJoinNewCall as R, | |
| 26 | uiShowMicPermissionBottomSheet as E, | |
| 27 | uiShowCallOnGoingBottomSheet as b, | |
| 28 | uiStartCall as h, | |
| 29 | uiCallWebrtcCleared as w, | |
| 30 | uiExpoDeviceVibrateSuccess as _, | |
| 31 | uiNavigateToRoute as O, | |
| 32 | uiShowCallPreview as I, | |
| 33 | uiCallFetchAudioOutputs as L, | |
| 34 | uiUpdateWorklet as N, | |
| 30 | uiLeaveAndJoinNewCall as N, | |
| 31 | uiShowMicPermissionBottomSheet as O, | |
| 32 | uiShowCallOnGoingBottomSheet as _, | |
| 33 | uiStartCall as I, | |
| 34 | uiCallWebrtcCleared as L, | |
| 35 | uiExpoDeviceVibrateSuccess as x, | |
| 36 | uiNavigateToRoute as M, | |
| 37 | uiShowCallPreview as T, | |
| 38 | uiCallFetchAudioOutputs as F, | |
| 39 | uiUpdateWorklet as k, | |
| 35 | 40 | } from "./ui.action" |
| 36 | import { APP_CONTEXT_KEY as M } from "../constants" | |
| 37 | import { userErrorNotification as x, userInfoNotification as T } from "../notification" | |
| 41 | import { APP_CONTEXT_KEY as H } from "../constants" | |
| 42 | import { userErrorNotification as J, userInfoNotification as V } from "../notification" | |
| 38 | 43 | import { |
| 39 | setUIIsCallLoading as F, | |
| 40 | setUICallAudioOutputs as H, | |
| 41 | setUICallCurrentAudioOutput as k, | |
| 42 | getUIAppNavigatorCurrentRoute as J, | |
| 44 | setUIIsCallLoading as j, | |
| 45 | setUICallAudioOutputs as D, | |
| 46 | setUICallCurrentAudioOutput as K, | |
| 47 | getUIAppNavigatorCurrentRoute as P, | |
| 48 | setUICallScreenVideoTrackId as U, | |
| 43 | 49 | } from "./ui.reducer" |
| 44 | import { requestMicPermissionSaga as D } from "../media/media-permissions.saga" | |
| 45 | import { getCoreBackend as K } from "../../backend" | |
| 46 | import { apiTakeMatch as P } from "../lib/external-src" | |
| 47 | import { setupWebrtcCallInfra as V } from "./ui-call.utils" | |
| 50 | import { requestMicPermissionSaga as W } from "../media/media-permissions.saga" | |
| 51 | import { getCallApi as B, getCoreBackend as X } from "../../backend" | |
| 52 | import { apiTakeMatch as q } from "../lib/external-src" | |
| 53 | import { setupWebrtcCallInfra as z } from "./ui-call.utils" | |
| 48 | 54 | export const MAX_ACTIVE_CALL_WAIT = 2e4 |
| 49 | export function* waitForActiveCallSync(i) { | |
| 55 | export function* waitForActiveCallSync(e) { | |
| 50 | 56 | try { |
| 51 | const n = K(), | |
| 52 | r = yield d({ | |
| 53 | hasActiveCall: P([n.subscribeActiveCalls, i], { | |
| 54 | matchFn: (i) => i.length > 0, | |
| 55 | onError: (i) => g("waitForActiveCallSync: subscribeActiveCalls", i), | |
| 57 | const n = X(), | |
| 58 | o = yield c({ | |
| 59 | hasActiveCall: q([n.subscribeActiveCalls, e], { | |
| 60 | matchFn: (e) => e.length > 0, | |
| 61 | onError: (e) => u("waitForActiveCallSync: subscribeActiveCalls", e), | |
| 56 | 62 | }), |
| 57 | cancelled: l(S), | |
| 58 | timedout: o(2e4), | |
| 63 | cancelled: l(w), | |
| 64 | timedout: r(2e4), | |
| 59 | 65 | }) |
| 60 | if (r.timedout) { | |
| 61 | const { navigationHelpers: i, webRTC: l, localeManager: n } = yield t(M), | |
| 66 | if (o.timedout) { | |
| 67 | const { navigationHelpers: e, webRTC: l, localeManager: n } = yield t(H), | |
| 62 | 68 | o = n.getStrings(), |
| 63 | 69 | { timedoutJoinCall: r } = o.call |
| 64 | ;(yield e(x({ message: r })), | |
| 65 | i.back(), | |
| 70 | ;(yield i(J({ message: r })), | |
| 71 | e.back(), | |
| 66 | 72 | yield a(l.setInCall, { enabled: !1 }), |
| 67 | yield e(w()), | |
| 68 | yield e(N())) | |
| 73 | yield i(L()), | |
| 74 | yield i(k())) | |
| 69 | 75 | } |
| 70 | return r | |
| 71 | } catch (i) { | |
| 72 | return (yield g("waitForActiveCallSync", i), { timedout: !0 }) | |
| 76 | return o | |
| 77 | } catch (e) { | |
| 78 | return (yield u("waitForActiveCallSync", e), { timedout: !0 }) | |
| 73 | 79 | } |
| 74 | 80 | } |
| 75 | function* W(l) { | |
| 81 | function* G(l) { | |
| 76 | 82 | try { |
| 77 | 83 | const { payload: n } = l || {}, |
| 78 | o = yield i(y), | |
| 84 | o = yield e(y), | |
| 79 | 85 | r = n?.answeringCallRing |
| 80 | 86 | if (o) { |
| 81 | const { localeManager: l, navigationConstants: d } = yield t(M), | |
| 82 | y = l.getStrings(), | |
| 83 | s = yield i(m(o)) | |
| 84 | if (!s.canCall) return void (yield e(T({ message: y.room.callDisabledNotification }))) | |
| 85 | const g = yield i(u), | |
| 86 | p = yield i(c) | |
| 87 | if (g === f.JOINED && !p) return void (yield e(b())) | |
| 88 | if ((yield e(F(!0)), !(yield D()))) return void (yield e(E())) | |
| 87 | const { localeManager: l, navigationConstants: d } = yield t(H), | |
| 88 | c = l.getStrings(), | |
| 89 | y = yield e(g(o)) | |
| 90 | if (!y.canCall) return void (yield i(V({ message: c.room.callDisabledNotification }))) | |
| 91 | const m = yield e(p), | |
| 92 | u = yield e(s) | |
| 93 | if (m === v.JOINED && !u) return void (yield i(_())) | |
| 94 | if ((yield i(j(!0)), !(yield W()))) return void (yield i(O())) | |
| 89 | 95 | if (r) { |
| 90 | const { timedout: i, cancelled: e } = yield a(waitForActiveCallSync, o) | |
| 91 | if (i || e) return | |
| 96 | const { timedout: e, cancelled: i } = yield a(waitForActiveCallSync, o) | |
| 97 | if (e || i) return | |
| 92 | 98 | } |
| 93 | ;(yield e(C()), | |
| 94 | yield e(O({ routeName: d.SCREEN_ROOM_CALL, params: { roomId: o } })), | |
| 95 | yield a(V, { | |
| 96 | roomTitle: s.title, | |
| 99 | ;(yield i(f()), | |
| 100 | yield i(M({ routeName: d.SCREEN_ROOM_CALL, params: { roomId: o } })), | |
| 101 | yield a(z, { | |
| 102 | roomTitle: y.title, | |
| 97 | 103 | hasExistingCallKit: r, |
| 98 | 104 | answeringInAppCallRing: n?.answeringInAppCallRing, |
| 99 | 105 | })) |
| 100 | 106 | } |
| 101 | } catch (i) { | |
| 102 | yield g("startCallSaga", i) | |
| 107 | } catch (e) { | |
| 108 | yield u("startCallSaga", e) | |
| 103 | 109 | } finally { |
| 104 | yield e(F(!1)) | |
| 110 | yield i(j(!1)) | |
| 105 | 111 | } |
| 106 | 112 | } |
| 107 | function* j() { | |
| 113 | function* Q() { | |
| 108 | 114 | try { |
| 109 | const { navigationConstants: i, navigationHelpers: a } = yield t(M) | |
| 110 | ;(yield e(p()), yield l(w), yield o(500), yield e(v()), a.navigate(i.SCREEN_ROOM_CALL_PREVIEW)) | |
| 111 | } catch (i) { | |
| 112 | yield g("leaveAndJoinNewCallSaga", i) | |
| 115 | const { navigationConstants: e, navigationHelpers: a } = yield t(H) | |
| 116 | ;(yield i(S()), yield l(L), yield r(500), yield i(R()), a.navigate(e.SCREEN_ROOM_CALL_PREVIEW)) | |
| 117 | } catch (e) { | |
| 118 | yield u("leaveAndJoinNewCallSaga", e) | |
| 113 | 119 | } |
| 114 | 120 | } |
| 115 | function* B() { | |
| 121 | function* Y() { | |
| 116 | 122 | try { |
| 117 | 123 | const { |
| 118 | 124 | navigationConstants: l, |
| 119 | 125 | navigationHelpers: n, |
| 120 | 126 | webRTC: o, |
| 121 | 127 | callBackgroundHandler: r, |
| 122 | } = yield t(M) | |
| 123 | ;((yield i(J)) === l.SCREEN_ROOM_CALL && n.back(), | |
| 128 | } = yield t(H) | |
| 129 | ;((yield e(P)) === l.SCREEN_ROOM_CALL && n.back(), | |
| 124 | 130 | yield a(o.setInCall, { enabled: !1 }), |
| 125 | 131 | yield a(r.stopService), |
| 126 | 132 | yield a(o.setKeepScreenOn, !1), |
| 127 | yield e(w())) | |
| 128 | } catch (i) { | |
| 129 | yield g("uiCallLeaveSaga", i) | |
| 133 | yield i(L())) | |
| 134 | } catch (e) { | |
| 135 | yield u("uiCallLeaveSaga", e) | |
| 130 | 136 | } |
| 131 | 137 | } |
| 132 | function* X(l) { | |
| 138 | function* Z(l) { | |
| 133 | 139 | try { |
| 134 | 140 | const { payload: a } = l || {}, |
| 135 | 141 | n = a?.joinCall, |
| 136 | o = yield i(y), | |
| 137 | r = yield i(u), | |
| 138 | d = yield i(c), | |
| 139 | m = yield A(r), | |
| 140 | g = yield i(s(o)), | |
| 141 | { navigationConstants: C, navigationHelpers: p, localeManager: f } = yield t(M), | |
| 142 | o = yield e(y), | |
| 143 | r = yield e(p), | |
| 144 | d = yield e(s), | |
| 145 | c = yield A(r), | |
| 146 | g = yield e(m(o)), | |
| 147 | { navigationConstants: u, navigationHelpers: C, localeManager: f } = yield t(H), | |
| 142 | 148 | S = f.getStrings() |
| 143 | ;(yield e(_(o)), | |
| 144 | m && !d | |
| 145 | ? yield e(b()) | |
| 149 | ;(yield i(x(o)), | |
| 150 | c && !d | |
| 151 | ? yield i(_()) | |
| 146 | 152 | : g |
| 147 | ? (yield e(v()), p.navigate(C.SCREEN_ROOM_CALL_PREVIEW, { joinCall: n })) | |
| 148 | : yield e(T({ message: S.room.callDisabledNotification }))) | |
| 149 | } catch (i) { | |
| 150 | yield g("showCallPreviewSaga", i) | |
| 153 | ? (yield i(R()), C.navigate(u.SCREEN_ROOM_CALL_PREVIEW, { joinCall: n })) | |
| 154 | : yield i(V({ message: S.room.callDisabledNotification }))) | |
| 155 | } catch (e) { | |
| 156 | yield u("showCallPreviewSaga", e) | |
| 151 | 157 | } |
| 152 | 158 | } |
| 153 | function* q() { | |
| 159 | function* $() { | |
| 154 | 160 | try { |
| 155 | const { webRTC: i } = yield t(M), | |
| 156 | l = yield a(i.listAudioRoutes) | |
| 157 | yield e(H(l)) | |
| 158 | const n = yield a(i.getAudioOutput) | |
| 159 | yield e(k(n.type)) | |
| 160 | } catch (i) { | |
| 161 | yield g("uiCallFetchAudioOutputsSaga", i) | |
| 161 | const { webRTC: e } = yield t(H), | |
| 162 | l = yield a(e.listAudioRoutes) | |
| 163 | yield i(D(l)) | |
| 164 | const n = yield a(e.getAudioOutput) | |
| 165 | yield i(K(n.type)) | |
| 166 | } catch (e) { | |
| 167 | yield u("uiCallFetchAudioOutputsSaga", e) | |
| 162 | 168 | } |
| 163 | 169 | } |
| 164 | function* z(e) { | |
| 170 | function* ee(i) { | |
| 165 | 171 | try { |
| 166 | if (!e.payload?.resume) return | |
| 167 | const l = yield i(y), | |
| 168 | t = yield i(m(l)) | |
| 169 | yield r(V, { roomTitle: t.title, hasExistingCallKit: !1, answeringInAppCallRing: !1 }) | |
| 170 | } catch (i) { | |
| 171 | yield g("resumeCallJoinSaga", i) | |
| 172 | if (!i.payload?.resume) return | |
| 173 | const l = yield e(y), | |
| 174 | t = yield e(g(l)) | |
| 175 | yield d(z, { roomTitle: t.title, hasExistingCallKit: !1, answeringInAppCallRing: !1 }) | |
| 176 | } catch (e) { | |
| 177 | yield u("resumeCallJoinSaga", e) | |
| 172 | 178 | } |
| 173 | 179 | } |
| 180 | export function* screenStreamUpdateSaga(l) { | |
| 181 | try { | |
| 182 | const { streamName: t, streamId: a, videoMuted: n } = l.payload | |
| 183 | if (t !== h.SCREEN) return | |
| 184 | if (n) return void (yield i(U(null))) | |
| 185 | const o = yield e(C) | |
| 186 | if (!o || !a) return | |
| 187 | const r = B().getRemoteSrcObject(o, a), | |
| 188 | d = r?.getVideoTracks?.()[0] | |
| 189 | yield i(U(d ? String(d) : null)) | |
| 190 | } catch (e) { | |
| 191 | yield u("screenStreamUpdateSaga", e) | |
| 192 | } | |
| 193 | } | |
| 194 | export function* screenStreamRemoveSaga(e) { | |
| 195 | e.payload?.streamName === h.SCREEN && (yield i(U(null))) | |
| 196 | } | |
| 174 | 197 | export function* uiCallSaga() { |
| 175 | ;(yield n(h, W), yield n(p, B), yield n(R, j), yield n(I, X), yield n(L, q), yield n(C, z)) | |
| 198 | ;(yield n(I, G), | |
| 199 | yield n(S, Y), | |
| 200 | yield n(N, Q), | |
| 201 | yield n(T, Z), | |
| 202 | yield n(F, $), | |
| 203 | yield n(f, ee), | |
| 204 | yield o(E, screenStreamUpdateSaga), | |
| 205 | yield o(b, screenStreamRemoveSaga)) | |
| 176 | 206 | } |
| … | … | @@ -1,16 +1,20 @@ |
| 1 | 1 | import { createSlice as t } from "@reduxjs/toolkit" |
| 2 | 2 | import { MAX_AUDIO_SAMPLES as e, UI_APP_STATE as o, UI_MOBILE_STATE_KEY as a } from "./ui.constants" |
| 3 | 3 | import { setAppCurrentRoomId as s, getAppStatusLoading as i } from "../app/app.reducer" |
| 4 | const p = { | |
| 4 | import { callReset as p, callLeave as r } from "../call/call-status.action" | |
| 5 | const I = { | |
| 5 | 6 | appState: o.INIT, |
| 6 | 7 | appActive: !0, |
| 7 | 8 | shareContent: [], |
| 8 | 9 | shareRoomId: "", |
| 9 | callAudioCurrentOutput: "earpiece", | |
| 10 | callAudioOutputs: [], | |
| 11 | callSpeakerOn: !1, | |
| 12 | isCallLoading: !1, | |
| 13 | nativeCallRinging: !1, | |
| 10 | call: { | |
| 11 | audioCurrentOutput: "earpiece", | |
| 12 | audioOutputs: [], | |
| 13 | speakerOn: !1, | |
| 14 | isLoading: !1, | |
| 15 | nativeCallRinging: !1, | |
| 16 | screenVideoTrackId: null, | |
| 17 | }, | |
| 14 | 18 | deviceIsOnSilentMode: !1, |
| 15 | 19 | onboarding: { showWalkthroughTooltip: !1, walkthroughStep: 0 }, |
| 16 | 20 | appModal: { showModal: !1, queue: [] }, |
| … | … | @@ -31,7 +35,7 @@ const p = { |
| 31 | 35 | } |
| 32 | 36 | export const uiMobileSlice = t({ |
| 33 | 37 | name: a, |
| 34 | initialState: p, | |
| 38 | initialState: I, | |
| 35 | 39 | reducers: { |
| 36 | 40 | setUIAppState: (t, e) => { |
| 37 | 41 | t.appState = e.payload || o.INIT |
| … | … | @@ -59,19 +63,22 @@ export const uiMobileSlice = t({ |
| 59 | 63 | t.shareRoomId = e.payload |
| 60 | 64 | }, |
| 61 | 65 | setUICallCurrentAudioOutput: (t, e) => { |
| 62 | t.callAudioCurrentOutput = e.payload | |
| 66 | t.call.audioCurrentOutput = e.payload | |
| 63 | 67 | }, |
| 64 | 68 | setUICallAudioOutputs: (t, e) => { |
| 65 | t.callAudioOutputs = e.payload | |
| 69 | t.call.audioOutputs = e.payload | |
| 66 | 70 | }, |
| 67 | 71 | setUICallSpeaker: (t, e) => { |
| 68 | t.callSpeakerOn = e.payload | |
| 72 | t.call.speakerOn = e.payload | |
| 69 | 73 | }, |
| 70 | 74 | setUIIsCallLoading: (t, e) => { |
| 71 | t.isCallLoading = e.payload | |
| 75 | t.call.isLoading = e.payload | |
| 72 | 76 | }, |
| 73 | 77 | setUINativeCallRinging: (t, e) => { |
| 74 | t.nativeCallRinging = e.payload | |
| 78 | t.call.nativeCallRinging = e.payload | |
| 79 | }, | |
| 80 | setUICallScreenVideoTrackId: (t, e) => { | |
| 81 | t.call.screenVideoTrackId = e.payload | |
| 75 | 82 | }, |
| 76 | 83 | setUIShowWalkthroughTooltip: (t) => { |
| 77 | 84 | t.onboarding.showWalkthroughTooltip = !0 |
| … | … | @@ -139,9 +146,15 @@ export const uiMobileSlice = t({ |
| 139 | 146 | }, |
| 140 | 147 | }, |
| 141 | 148 | extraReducers: (t) => { |
| 142 | t.addCase(s, (t, e) => { | |
| 143 | e.payload?.roomId || (t.room = p.room) | |
| 144 | }) | |
| 149 | ;(t.addCase(s, (t, e) => { | |
| 150 | e.payload?.roomId || (t.room = I.room) | |
| 151 | }), | |
| 152 | t.addCase(p, (t) => { | |
| 153 | t.call.screenVideoTrackId = null | |
| 154 | }), | |
| 155 | t.addCase(r, (t) => { | |
| 156 | t.call.screenVideoTrackId = null | |
| 157 | })) | |
| 145 | 158 | }, |
| 146 | 159 | }) |
| 147 | 160 | export const getUIState = (t) => t[a] |
| … | … | @@ -150,11 +163,12 @@ export const getUIAppActive = (t) => getUIState(t).appActive |
| 150 | 163 | export const getUIAppBackgrounded = (t) => getUIAppState(t) === o.BACKGROUND |
| 151 | 164 | export const getUIAppForegrounded = (t) => getUIAppState(t) === o.ACTIVE |
| 152 | 165 | export const getUIDeviceSilentMode = (t) => getUIState(t).deviceIsOnSilentMode |
| 153 | export const getUICallCurrentAudioOutput = (t) => getUIState(t).callAudioCurrentOutput | |
| 154 | export const getUICallAudioOutputs = (t) => getUIState(t).callAudioOutputs | |
| 155 | export const getUICallSpeaker = (t) => getUIState(t).callSpeakerOn | |
| 156 | export const getUIIsCallLoading = (t) => getUIState(t).isCallLoading | |
| 157 | export const getUINativeCallRinging = (t) => getUIState(t).nativeCallRinging | |
| 166 | export const getUICallCurrentAudioOutput = (t) => getUIState(t).call.audioCurrentOutput | |
| 167 | export const getUICallAudioOutputs = (t) => getUIState(t).call.audioOutputs | |
| 168 | export const getUICallSpeaker = (t) => getUIState(t).call.speakerOn | |
| 169 | export const getUIIsCallLoading = (t) => getUIState(t).call.isLoading | |
| 170 | export const getUINativeCallRinging = (t) => getUIState(t).call.nativeCallRinging | |
| 171 | export const getUIScreenVideoTrackId = (t) => getUIState(t).call.screenVideoTrackId | |
| 158 | 172 | export const getUIShareContent = (t) => getUIState(t).shareContent || [] |
| 159 | 173 | export const getUIShareRoomId = (t) => getUIState(t).shareRoomId |
| 160 | 174 | export const getUIPushNotificationPermissionsGranted = (t) => |
| … | … | @@ -228,4 +242,5 @@ export const { |
| 228 | 242 | setUIIsCallLoading: setUIIsCallLoading, |
| 229 | 243 | setUIUserAuthenticationStatus: setUIUserAuthenticationStatus, |
| 230 | 244 | setUINativeCallRinging: setUINativeCallRinging, |
| 245 | setUICallScreenVideoTrackId: setUICallScreenVideoTrackId, | |
| 231 | 246 | } = uiMobileSlice.actions |
| … | … | @@ -78,6 +78,7 @@ declare module "api/core" { |
| 78 | 78 | export function setApiEnhancer(enhancer: any): void; |
| 79 | 79 | export namespace ERROR_POSIX { |
| 80 | 80 | let ENOSPC: string; |
| 81 | let EIO: string; | |
| 81 | 82 | } |
| 82 | 83 | import type { QueryApiParam } from "api/core-type"; |
| 83 | 84 | import type { RoomInfoApiData } from "api/core-type"; |
| … | … | @@ -1044,6 +1045,9 @@ declare module "store/identity/identity.constants" { |
| 1044 | 1045 | export namespace USER_SETTINGS_KEY { |
| 1045 | 1046 | let DISABLE_READ_RECEIPTS: "disableReadReceipts"; |
| 1046 | 1047 | } |
| 1048 | /** @typedef {USER_SETTINGS_KEY[keyof typeof USER_SETTINGS_KEY]} UserSettingsKey */ | |
| 1049 | export const CHAT_INVITATION: "chat"; | |
| 1050 | export const LINK_INVITATION: "link"; | |
| 1047 | 1051 | export type IdentityStatus = "UNKNOWN" | "ASKED" | "ANONYMOUS" | "COMPLETE"; |
| 1048 | 1052 | export type IdentityDevice = "desktop" | "mobile"; |
| 1049 | 1053 | export type IdentityUsernameStatus = "UNKNOWN" | "EXISTS" | "INVALID_CHAR" | "NOT_FOUND" | "CHECKING"; |
| … | … | @@ -1069,8 +1073,12 @@ declare module "store/identity/identity.constants" { |
| 1069 | 1073 | export type UserSettingsKey = "disableReadReceipts"; |
| 1070 | 1074 | } |
| 1071 | 1075 | declare module "store/lib/color" { |
| 1072 | /** @type {(name: string) => string} */ | |
| 1073 | export const calcAvatarColor: (name: string) => string; | |
| 1076 | /** @type {(hash: number) => string} */ | |
| 1077 | export const calculateBackgroundColor: (hash: number) => string; | |
| 1078 | export const BLANK_AVATAR_COLOR: string; | |
| 1079 | export const COLOR_BY_ID_MAX_SIZE: 1000; | |
| 1080 | /** @type {(id: string) => string} */ | |
| 1081 | export const calcAvatarColorById: (id: string) => string; | |
| 1074 | 1082 | } |
| 1075 | 1083 | declare module "store/media/file/file.constants" { |
| 1076 | 1084 | export const FILE_PREVIEW_MIME_TYPE: "image/webp"; |
| … | … | @@ -2054,6 +2062,7 @@ declare module "store/identity/identity.model" { |
| 2054 | 2062 | confirmed: boolean; |
| 2055 | 2063 | loggedOut: boolean; |
| 2056 | 2064 | settings: UserSettings; |
| 2065 | privateProfileVersion: number; | |
| 2057 | 2066 | }; |
| 2058 | 2067 | export type RawDevice = { |
| 2059 | 2068 | deviceId: string; |
| … | … | @@ -2081,6 +2090,7 @@ declare module "store/identity/identity.model" { |
| 2081 | 2090 | confirmed: boolean; |
| 2082 | 2091 | isLoggedOut: boolean; |
| 2083 | 2092 | settings: any; |
| 2093 | version: number; | |
| 2084 | 2094 | }; |
| 2085 | 2095 | export type DeviceIdPayload = any; |
| 2086 | 2096 | export type DeviceUnlinkPayload = any; |
| … | … | @@ -2715,8 +2725,10 @@ declare module "store/identity/identity.reducer" { |
| 2715 | 2725 | export function getRemoveDeviceStatus(state: any): import("store/identity").RemoveDeviceStatus; |
| 2716 | 2726 | export function getUsernameError(state: any): string; |
| 2717 | 2727 | export function getIsReadReceiptsDisabled(state: any): boolean; |
| 2728 | export function getPrivateProfileVersion(state: any): number; | |
| 2718 | 2729 | export function getIsReadReceiptsSupported(state: any): any; |
| 2719 | 2730 | export function getIsFavoriteRoomSupported(state: any): any; |
| 2731 | export function getIsRoomMarkUnreadSupported(state: any): any; | |
| 2720 | 2732 | export const setAccountRecoveryAgreement: ActionCreatorWithPayload<any, "identity/setAccountRecoveryAgreement">; |
| 2721 | 2733 | export const setAccountRecoverySuccess: ActionCreatorWithoutPayload<"identity/setAccountRecoverySuccess">; |
| 2722 | 2734 | export const setAccountRecoveryError: ActionCreatorWithPayload<any, "identity/setAccountRecoveryError">; |
| … | … | @@ -2839,8 +2851,7 @@ declare module "store/identity/identity.reducer" { |
| 2839 | 2851 | import type { AvatarData } from "store/identity/identity.constants"; |
| 2840 | 2852 | } |
| 2841 | 2853 | declare module "store/identity/identity.invitation" { |
| 2842 | export function createInvitationLink({ applicationKey, invitation, isPublic, appProtocol, }: { | |
| 2843 | applicationKey: any; | |
| 2854 | export function createInvitationLink({ invitation, isPublic, appProtocol, }: { | |
| 2844 | 2855 | invitation: any; |
| 2845 | 2856 | isPublic: any; |
| 2846 | 2857 | appProtocol: any; |
| … | … | @@ -3013,7 +3024,6 @@ declare module "store/identity/saga/fetch-my-contact-invitation.saga" { |
| 3013 | 3024 | payload: any; |
| 3014 | 3025 | type: "identity/setIdentityContactInvitation"; |
| 3015 | 3026 | }>, void, { |
| 3016 | applicationKey: any; | |
| 3017 | 3027 | config: { |
| 3018 | 3028 | appProtocol: any; |
| 3019 | 3029 | }; |
| … | … | @@ -3080,9 +3090,6 @@ declare module "store/identity/identity.saga" { |
| 3080 | 3090 | payload: import("store/identity").RawIdentity; |
| 3081 | 3091 | type: "identity/setIdentity"; |
| 3082 | 3092 | }>, boolean, unknown>; |
| 3083 | export function identityPrivateProfileVersionSaga(): Generator<Generator<any, void, unknown> | import("redux-saga/effects").SelectEffect, void, { | |
| 3084 | profileId: any; | |
| 3085 | }>; | |
| 3086 | 3093 | export function identityErrorHandler(): Generator<import("redux-saga/effects").ForkEffect<never>, void, unknown>; |
| 3087 | 3094 | /** |
| 3088 | 3095 | * @param {number} feature |
| … | … | @@ -4736,6 +4743,7 @@ declare module "store/call/utils" { |
| 4736 | 4743 | swarmId: any; |
| 4737 | 4744 | activityScore: number; |
| 4738 | 4745 | }; |
| 4746 | export function mergeActivePresences(topSorted: any, memberIds: any, swarmByMember: any): any[]; | |
| 4739 | 4747 | export function calcActivityScore(isAudioMuted: any, isVideoMuted: any): number; |
| 4740 | 4748 | export function updatePresencesSortedByActivity(state: any, swarmId: any, isAudioMuted: any, isVideoMuted: any): any; |
| 4741 | 4749 | export function removeFromPresencesSortedByActivity(state: any, swarmId: any): any; |
| … | … | @@ -4806,6 +4814,7 @@ declare module "store/room/room.constant" { |
| 4806 | 4814 | import expiration = DAYS; |
| 4807 | 4815 | export { expiration }; |
| 4808 | 4816 | export let reusable: boolean; |
| 4817 | export let readOnly: boolean; | |
| 4809 | 4818 | } |
| 4810 | 4819 | export namespace ROOM_PREFERENCES { |
| 4811 | 4820 | let NOTIFICATIONS: "notifications"; |
| … | … | @@ -5140,6 +5149,7 @@ declare module "store/room/list/room-list.model" { |
| 5140 | 5149 | total: number; |
| 5141 | 5150 | recentRoomsBufferInterval: number; |
| 5142 | 5151 | scrollToRoomId: string | null; |
| 5152 | preloadOverscan: number; | |
| 5143 | 5153 | }; |
| 5144 | 5154 | import type { RoomFilterMap } from "store/room/list/room-list.constant"; |
| 5145 | 5155 | } |
| … | … | @@ -5367,27 +5377,29 @@ declare module "store/chat/chat.constant" { |
| 5367 | 5377 | export const CHAT_SEARCH_INPUT_THROTTLE: 250; |
| 5368 | 5378 | export const CHAT_SEARCH_FIRST_FOUND_DELAY: 1000; |
| 5369 | 5379 | export const CHAT_SEARCH_RESULT_NO_JUMP_COUNT: 25; |
| 5370 | export namespace MESSAGE_CATEGORIES { | |
| 5371 | export let BLOCKED_USER_MSG: "blockedUserMsgCategory"; | |
| 5372 | export let HIDDEN: "hiddenCategory"; | |
| 5380 | export namespace MESSAGE_CATEGORY { | |
| 5373 | 5381 | let JOINED_1: "joined"; |
| 5374 | 5382 | export { JOINED_1 as JOINED }; |
| 5383 | let CALL_STARTED_1: "callStarted"; | |
| 5384 | export { CALL_STARTED_1 as CALL_STARTED }; | |
| 5385 | let ROOM_AVATAR_CHANGED_1: "roomAvatarChanged"; | |
| 5386 | export { ROOM_AVATAR_CHANGED_1 as ROOM_AVATAR_CHANGED }; | |
| 5387 | let INVITATION_CREATED_1: "invitationCreated"; | |
| 5388 | export { INVITATION_CREATED_1 as INVITATION_CREATED }; | |
| 5375 | 5389 | let LEFT_1: "left"; |
| 5376 | 5390 | export { LEFT_1 as LEFT }; |
| 5377 | let MEMBER_REMOVED_1: "memberRemovedCategory"; | |
| 5391 | let ROOM_TITLE_CHANGED_1: "roomTitleChanged"; | |
| 5392 | export { ROOM_TITLE_CHANGED_1 as ROOM_TITLE_CHANGED }; | |
| 5393 | let MEMBER_REMOVED_1: "memberRemoved"; | |
| 5378 | 5394 | export { MEMBER_REMOVED_1 as MEMBER_REMOVED }; |
| 5395 | let CALL_HANGUP_1: "callHangup"; | |
| 5396 | export { CALL_HANGUP_1 as CALL_HANGUP }; | |
| 5397 | let CALL_MISSED_1: "callMissed"; | |
| 5398 | export { CALL_MISSED_1 as CALL_MISSED }; | |
| 5399 | let LOCATION_SHARED_1: "locationShared"; | |
| 5400 | export { LOCATION_SHARED_1 as LOCATION_SHARED }; | |
| 5379 | 5401 | export let NO_CATEGORY: ""; |
| 5380 | 5402 | } |
| 5381 | /** @typedef {MESSAGE_CATEGORIES[keyof typeof MESSAGE_CATEGORIES]} ChatMessageCategory */ | |
| 5382 | export const MESSAGE_TYPE_GROUPING_MAP: { | |
| 5383 | [CHAT_MESSAGE_TYPE.JOINED]: boolean; | |
| 5384 | [CHAT_MESSAGE_TYPE.CALL_STARTED]: boolean; | |
| 5385 | [CHAT_MESSAGE_TYPE.ROOM_AVATAR_CHANGED]: boolean; | |
| 5386 | [CHAT_MESSAGE_TYPE.INVITATION_CREATED]: boolean; | |
| 5387 | [CHAT_MESSAGE_TYPE.LEFT]: boolean; | |
| 5388 | [CHAT_MESSAGE_TYPE.ROOM_TITLE_CHANGED]: boolean; | |
| 5389 | [CHAT_MESSAGE_TYPE.MEMBER_REMOVED]: boolean; | |
| 5390 | }; | |
| 5391 | 5403 | export namespace CHAT_WORKER { |
| 5392 | 5404 | let INITIAL: "initial"; |
| 5393 | 5405 | let TOP: "top"; |
| … | … | @@ -5399,7 +5411,6 @@ declare module "store/chat/chat.constant" { |
| 5399 | 5411 | let DISPLAY: string; |
| 5400 | 5412 | } |
| 5401 | 5413 | export const PEAR_LINK_PREVIEW_IMAGE_FECTH_TIMEOUT: 1000; |
| 5402 | export type ChatMessageCategory = "" | "blockedUserMsgCategory" | "hiddenCategory" | "joined" | "left" | "memberRemovedCategory"; | |
| 5403 | 5414 | export type ChatWorkerType = "sub" | "initial" | "top" | "bottom"; |
| 5404 | 5415 | } |
| 5405 | 5416 | declare module "store/chat/reaction/chat-reaction.model" { |
| … | … | @@ -5457,7 +5468,7 @@ declare module "store/chat/message/message" { |
| 5457 | 5468 | * @param {string[]} chatMessageFilters |
| 5458 | 5469 | */ |
| 5459 | 5470 | export function getIsMessageHidden(coreEvent: CoreEvent, chatMessageFilters: string[]): boolean; |
| 5460 | export const GROUP_MAX_SIZE: 64; | |
| 5471 | export const GROUP_LIMIT: 64; | |
| 5461 | 5472 | export function getLastSeenMessageKey(roomId: string): string; |
| 5462 | 5473 | export const UNKNOWN_ID: "unknown_id"; |
| 5463 | 5474 | export function createMessageId(coreEvent: { |
| … | … | @@ -5475,8 +5486,25 @@ declare module "store/chat/message/message" { |
| 5475 | 5486 | export function isCallSystemEvent(message: ChatMessage): boolean; |
| 5476 | 5487 | export function isStartCallMessage(message: ChatMessage): boolean; |
| 5477 | 5488 | export function updateMessage(message: ChatMessage, context?: MessageUpdateContext): ChatMessage; |
| 5478 | export function getCoreEventCategoryName(msg: CoreEvent | ChatMessage): ChatMessageCategory; | |
| 5479 | export function getIsGroupCountLimitReached(category: ChatMessageCategory, count: number): boolean; | |
| 5489 | /** | |
| 5490 | * @typedef {Object} ContextParam | |
| 5491 | * @prop {boolean} [hidden] | |
| 5492 | * @prop {boolean} [blocked] | |
| 5493 | */ | |
| 5494 | export const MESSAGE_TYPE_TO_CATEGORY: { | |
| 5495 | readonly [CHAT_MESSAGE_TYPE.JOINED]: "joined"; | |
| 5496 | readonly [CHAT_MESSAGE_TYPE.CALL_STARTED]: "callStarted"; | |
| 5497 | readonly [CHAT_MESSAGE_TYPE.ROOM_AVATAR_CHANGED]: "roomAvatarChanged"; | |
| 5498 | readonly [CHAT_MESSAGE_TYPE.INVITATION_CREATED]: "invitationCreated"; | |
| 5499 | readonly [CHAT_MESSAGE_TYPE.LEFT]: "left"; | |
| 5500 | readonly [CHAT_MESSAGE_TYPE.ROOM_TITLE_CHANGED]: "roomTitleChanged"; | |
| 5501 | readonly [CHAT_MESSAGE_TYPE.MEMBER_REMOVED]: "memberRemoved"; | |
| 5502 | readonly [CHAT_MESSAGE_TYPE.CALL_HANGUP]: "callHangup"; | |
| 5503 | readonly [CHAT_MESSAGE_TYPE.CALL_MISSED]: "callMissed"; | |
| 5504 | readonly [CHAT_MESSAGE_TYPE.LOCATION_SHARED]: "locationShared"; | |
| 5505 | }; | |
| 5506 | export function calcMessageCategory(msg: CoreEvent | ChatMessage): string; | |
| 5507 | export function getIsGroupCountLimitReached(category: any, count: number): boolean; | |
| 5480 | 5508 | export function getFileMediaType(mimetype: string, name: string): "AUDIO" | "VIDEO" | "IMAGE" | "VOICE" | "FILE"; |
| 5481 | 5509 | export function getFileListMediaType(files: FileEntry[]): "AUDIO" | "VIDEO" | "IMAGE" | "MEDIA" | "VOICE" | "FILE"; |
| 5482 | 5510 | export function parseFiles(event: CoreEvent): { |
| … | … | @@ -5637,7 +5665,7 @@ declare module "store/chat/message/message" { |
| 5637 | 5665 | import type { SegmentHighlight } from "store/chat/message/core-event"; |
| 5638 | 5666 | import type { CoreEvent } from "api/core-event-type"; |
| 5639 | 5667 | import type { CoreEventId } from "api/core-event-type"; |
| 5640 | import type { ChatMessageCategory } from "store/chat/chat.constant"; | |
| 5668 | import { CHAT_MESSAGE_TYPE } from "store/chat/chat.constant"; | |
| 5641 | 5669 | import type { FileEntry } from "store/media/file/file.model"; |
| 5642 | 5670 | import { MEDIA_TYPE } from "store/media/file/file.constants"; |
| 5643 | 5671 | import type { CoreEventChat } from "api/core-event-type"; |
| … | … | @@ -6320,14 +6348,14 @@ declare module "store/chat/loader/loader-step" { |
| 6320 | 6348 | export function loadMsgsBefore({ roomId, topSeq, topMsgCategory, expectedCount, ctxRef, }: { |
| 6321 | 6349 | roomId: string; |
| 6322 | 6350 | topSeq: number; |
| 6323 | topMsgCategory: ChatMessageCategory; | |
| 6351 | topMsgCategory: string; | |
| 6324 | 6352 | expectedCount: number; |
| 6325 | 6353 | ctxRef?: LoaderCtrlContextRef; |
| 6326 | 6354 | }): Promise<CoreEvent[]>; |
| 6327 | 6355 | export function loadMsgsAfter({ roomId, bottomSeq, bottomMsgCategory, expectedCount, count, ctxRef, }: { |
| 6328 | 6356 | roomId: string; |
| 6329 | 6357 | bottomSeq: number; |
| 6330 | bottomMsgCategory: ChatMessageCategory; | |
| 6358 | bottomMsgCategory: string; | |
| 6331 | 6359 | expectedCount: number; |
| 6332 | 6360 | count: number; |
| 6333 | 6361 | ctxRef?: LoaderCtrlContextRef; |
| … | … | @@ -6351,9 +6379,8 @@ declare module "store/chat/loader/loader-step" { |
| 6351 | 6379 | }; |
| 6352 | 6380 | export type ChatLoaderEvtCounter = { |
| 6353 | 6381 | count: number; |
| 6354 | lastCategory: ChatMessageCategory; | |
| 6382 | lastCategory: string; | |
| 6355 | 6383 | }; |
| 6356 | import type { ChatMessageCategory } from "store/chat/chat.constant"; | |
| 6357 | 6384 | import type { CoreEvent } from "api/core-event-type"; |
| 6358 | 6385 | import type { MessageQuery } from "store/chat/message/message-query"; |
| 6359 | 6386 | } |
| … | … | @@ -7410,6 +7437,7 @@ declare module "store/room/joint/room-joint.reducer" { |
| 7410 | 7437 | * @prop {boolean} canIndex |
| 7411 | 7438 | * @prop {string | number} expiration |
| 7412 | 7439 | * @prop {boolean} reusable |
| 7440 | * @prop {boolean} readOnly | |
| 7413 | 7441 | */ |
| 7414 | 7442 | /** |
| 7415 | 7443 | * @typedef {Object} RoomInvitationPayload |
| … | … | @@ -7440,6 +7468,7 @@ declare module "store/room/joint/room-joint.reducer" { |
| 7440 | 7468 | canIndex: boolean; |
| 7441 | 7469 | expiration: string | number; |
| 7442 | 7470 | reusable: boolean; |
| 7471 | readOnly: boolean; | |
| 7443 | 7472 | }; |
| 7444 | 7473 | export type RoomInvitationPayload = { |
| 7445 | 7474 | roomId: string; |
| … | … | @@ -7506,6 +7535,11 @@ declare module "store/room/list/room-list.reducer" { |
| 7506 | 7535 | type: string; |
| 7507 | 7536 | }) => void; |
| 7508 | 7537 | resetScrollToRoomId: (state: import("immer").WritableDraft<RoomListState>) => void; |
| 7538 | /** | |
| 7539 | * @param {RoomListState} state | |
| 7540 | * @param {PayloadAction<number>} action | |
| 7541 | */ | |
| 7542 | setRoomListPreloadOverscan: (state: RoomListState, { payload }: PayloadAction<number>) => void; | |
| 7509 | 7543 | }, "list", "list", import("@reduxjs/toolkit").SliceSelectors<RoomListState>>; |
| 7510 | 7544 | /** @type {(state: *) => RoomListState} */ |
| 7511 | 7545 | export const getRoomListState: (state: any) => RoomListState; |
| … | … | @@ -7526,6 +7560,7 @@ declare module "store/room/list/room-list.reducer" { |
| 7526 | 7560 | export function getRoomListIsLoading(state: any): boolean; |
| 7527 | 7561 | export function getRoomFavoriteListIsLoading(state: any): boolean; |
| 7528 | 7562 | export function getRoomListIsError(state: any): boolean; |
| 7563 | export function getRoomListPreloadOverscan(state: any): number; | |
| 7529 | 7564 | export const getRoomListInViewIds: ((state: any) => string[]) & { |
| 7530 | 7565 | clearCache: () => void; |
| 7531 | 7566 | resultsCount: () => number; |
| … | … | @@ -7556,6 +7591,36 @@ declare module "store/room/list/room-list.reducer" { |
| 7556 | 7591 | memoize: typeof import("reselect").weakMapMemoize; |
| 7557 | 7592 | argsMemoize: typeof import("reselect").weakMapMemoize; |
| 7558 | 7593 | }; |
| 7594 | export const getRoomListInViewOverscanIds: ((state: any) => string[]) & { | |
| 7595 | clearCache: () => void; | |
| 7596 | resultsCount: () => number; | |
| 7597 | resetResultsCount: () => void; | |
| 7598 | } & { | |
| 7599 | resultFunc: (resultFuncArgs_0: string[], resultFuncArgs_1: { | |
| 7600 | top: number; | |
| 7601 | bottom: number; | |
| 7602 | }, resultFuncArgs_2: number) => string[]; | |
| 7603 | memoizedResultFunc: ((resultFuncArgs_0: string[], resultFuncArgs_1: { | |
| 7604 | top: number; | |
| 7605 | bottom: number; | |
| 7606 | }, resultFuncArgs_2: number) => string[]) & { | |
| 7607 | clearCache: () => void; | |
| 7608 | resultsCount: () => number; | |
| 7609 | resetResultsCount: () => void; | |
| 7610 | }; | |
| 7611 | lastResult: () => string[]; | |
| 7612 | dependencies: [(state: any) => string[], (state: any) => { | |
| 7613 | top: number; | |
| 7614 | bottom: number; | |
| 7615 | }, (state: any) => number]; | |
| 7616 | recomputations: () => number; | |
| 7617 | resetRecomputations: () => void; | |
| 7618 | dependencyRecomputations: () => number; | |
| 7619 | resetDependencyRecomputations: () => void; | |
| 7620 | } & { | |
| 7621 | memoize: typeof import("reselect").weakMapMemoize; | |
| 7622 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 7623 | }; | |
| 7559 | 7624 | export function getRoomListSearchError(state: any): string; |
| 7560 | 7625 | export function getRoomListUnreadRoomsCount(state: any): number; |
| 7561 | 7626 | export function getRecentRoomsBufferInterval(state: any): number; |
| … | … | @@ -7570,6 +7635,7 @@ declare module "store/room/list/room-list.reducer" { |
| 7570 | 7635 | export const setUnreadRoomsCount: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number, "list/setUnreadRoomsCount">; |
| 7571 | 7636 | export const setScrollToRoomId: ActionCreatorWithPayload<any, "list/setScrollToRoomId">; |
| 7572 | 7637 | export const resetScrollToRoomId: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"list/resetScrollToRoomId">; |
| 7638 | export const setRoomListPreloadOverscan: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number, "list/setRoomListPreloadOverscan">; | |
| 7573 | 7639 | /** @type {ActionCreatorWithPayload<string[], 'room-list/in-view-ids-change-evt'>} */ |
| 7574 | 7640 | export const roomListInViewIdsChangeEvt: ActionCreatorWithPayload<string[], "room-list/in-view-ids-change-evt">; |
| 7575 | 7641 | export const roomListReducer: import("redux").Reducer<RoomListState>; |
| … | … | @@ -8607,6 +8673,40 @@ declare module "store/chat/unread/index" { |
| 8607 | 8673 | export * from "store/chat/unread/chat-unread.action"; |
| 8608 | 8674 | export * from "store/chat/unread/chat-unread.saga"; |
| 8609 | 8675 | } |
| 8676 | declare module "store/chat/input/chat-input.constant" { | |
| 8677 | /** @import { ChatState } from '../chat.state' */ | |
| 8678 | export const CHAT_INPUT_STATE_KEY: "input"; | |
| 8679 | } | |
| 8680 | declare module "store/chat/input/chat-input.selector" { | |
| 8681 | export function getChatInputState(state: any): ChatInputState; | |
| 8682 | export function getChatInputIsProcessing(state: any): boolean; | |
| 8683 | export function getChatInputIsClearRequested(state: any): boolean; | |
| 8684 | import type { ChatInputState } from "store/chat/chat.state"; | |
| 8685 | } | |
| 8686 | declare module "store/chat/input/chat-input.action" { | |
| 8687 | /** @type {ActionCreatorWithPayload<boolean, 'chat/set-input-clear-requested'>} */ | |
| 8688 | export const setChatInputIsClearRequested: ActionCreatorWithPayload<boolean, "chat/set-input-clear-requested">; | |
| 8689 | /** @type {ActionCreatorWithPayload<boolean, 'chat/set-input-is-processing'>} */ | |
| 8690 | export const setChatInputIsProcessing: ActionCreatorWithPayload<boolean, "chat/set-input-is-processing">; | |
| 8691 | import type { ActionCreatorWithPayload } from "@reduxjs/toolkit"; | |
| 8692 | } | |
| 8693 | declare module "store/chat/input/chat-input.reducer" { | |
| 8694 | /** @typedef {ReturnType< | |
| 8695 | * (typeof setChatInputIsClearRequested | typeof setChatInputIsProcessing) | |
| 8696 | * >} ChatInputAction */ | |
| 8697 | /** @type {(state: ChatInputState, action: ChatInputAction) => ChatInputState} */ | |
| 8698 | export const chatInputReducer: (state: ChatInputState, action: ChatInputAction) => ChatInputState; | |
| 8699 | export type ChatInputAction = ReturnType<(typeof setChatInputIsClearRequested | typeof setChatInputIsProcessing)>; | |
| 8700 | import type { ChatInputState } from "store/chat/chat.state"; | |
| 8701 | import { setChatInputIsClearRequested } from "store/chat/input/chat-input.action"; | |
| 8702 | import { setChatInputIsProcessing } from "store/chat/input/chat-input.action"; | |
| 8703 | } | |
| 8704 | declare module "store/chat/input/index" { | |
| 8705 | export * from "store/chat/input/chat-input.selector"; | |
| 8706 | export * from "store/chat/input/chat-input.action"; | |
| 8707 | export * from "store/chat/input/chat-input.reducer"; | |
| 8708 | export * from "store/chat/input/chat-input.constant"; | |
| 8709 | } | |
| 8610 | 8710 | declare module "store/chat/chat.reducer" { |
| 8611 | 8711 | export const fnReducer: (state: any, action: any) => any; |
| 8612 | 8712 | /** @type {Reducer<ChatState, *>} */ |
| … | … | @@ -8923,6 +9023,9 @@ declare module "store/chat/chat.saga" { |
| 8923 | 9023 | }): Generator<Generator<any, any, any> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").PutEffect<{ |
| 8924 | 9024 | payload: import("store/notification").ErrorNotificationParam; |
| 8925 | 9025 | type: string; |
| 9026 | }> | import("redux-saga/effects").PutEffect<{ | |
| 9027 | payload: boolean; | |
| 9028 | type: "chat/set-input-is-processing"; | |
| 8926 | 9029 | }> | import("redux-saga/effects").PutEffect<{ |
| 8927 | 9030 | payload: { |
| 8928 | 9031 | roomId: string; |
| … | … | @@ -8931,6 +9034,9 @@ declare module "store/chat/chat.saga" { |
| 8931 | 9034 | }> | import("redux-saga/effects").PutEffect<{ |
| 8932 | 9035 | payload: import("store/chat").SendChatFilesPayload; |
| 8933 | 9036 | type: "chat/sendChatFiles"; |
| 9037 | }> | import("redux-saga/effects").PutEffect<{ | |
| 9038 | payload: boolean; | |
| 9039 | type: "chat/set-input-clear-requested"; | |
| 8934 | 9040 | }>, void, any>; |
| 8935 | 9041 | /** |
| 8936 | 9042 | * @param {Object} param |
| … | … | @@ -9101,6 +9207,7 @@ declare module "store/chat/index" { |
| 9101 | 9207 | export * from "store/chat/list-view"; |
| 9102 | 9208 | export * from "store/chat/reaction"; |
| 9103 | 9209 | export * from "store/chat/search"; |
| 9210 | export * from "store/chat/input"; | |
| 9104 | 9211 | export * from "store/chat/unread"; |
| 9105 | 9212 | export * from "store/chat/file"; |
| 9106 | 9213 | export * from "store/chat/loader"; |
| … | … | @@ -9233,8 +9340,6 @@ declare module "store/room/list/index" { |
| 9233 | 9340 | export * from "store/room/list/room-list-item-update-saga"; |
| 9234 | 9341 | } |
| 9235 | 9342 | declare module "store/room/room.reducer" { |
| 9236 | export function calcActualRoomIds(state: RoomState): string[]; | |
| 9237 | export function updateActualRoomIds(state: RoomState): RoomState; | |
| 9238 | 9343 | /** @type {RoomState} */ |
| 9239 | 9344 | export const INITIAL_STATE: RoomState; |
| 9240 | 9345 | /** @typedef {ReturnType<typeof setMainRoom |
| … | … | @@ -9259,6 +9364,7 @@ declare module "store/room/room.reducer" { |
| 9259 | 9364 | * | typeof setRoomFilterMap> } RoomAction */ |
| 9260 | 9365 | /** @type {(state: RoomState, action: RoomAction) => RoomState} */ |
| 9261 | 9366 | export const roomCommonReducer: (state: RoomState, action: RoomAction) => RoomState; |
| 9367 | export function actualRoomIdsReducer(state: RoomState, action: any): RoomState; | |
| 9262 | 9368 | /** @type {(state: RoomState, action: any) => RoomState} */ |
| 9263 | 9369 | export const roomReducer: (state: RoomState, action: any) => RoomState; |
| 9264 | 9370 | export type RoomAction = ReturnType<typeof setMainRoom | typeof setAllRooms | typeof setSearchRoomIds | typeof updateRecentRooms | typeof addOrRemoveRecentRoom | typeof setRoomInfo | typeof setRoomShowWarning | typeof setRoomMyCapabilities | typeof setRoomVersion | typeof setNotifications | typeof setRoomStats | typeof unlockDebug | typeof setCreatedRoomMeta | typeof resetModuleStateCmd | typeof roomSetRepairingStatus | typeof roomSetMoveIndexerStatus | typeof setRoomDiscoveryKey | typeof setFavoriteRooms | typeof addOrRemoveFavoriteRoom | typeof setRoomFilterMap>; |
| … | … | @@ -9887,11 +9993,10 @@ declare module "store/room/joint/room-leaving.saga" { |
| 9887 | 9993 | } |
| 9888 | 9994 | declare module "store/room/joint/room-pairing.saga" { |
| 9889 | 9995 | /** |
| 9890 | * @param {{ applicationKey: string, appProtocol: string }} param | |
| 9996 | * @param {{ appProtocol: string }} param | |
| 9891 | 9997 | * @param {ReturnType<typeof createRoomInvitation>} action |
| 9892 | 9998 | */ |
| 9893 | export function createInvitationSaga({ applicationKey, appProtocol }: { | |
| 9894 | applicationKey: string; | |
| 9999 | export function createInvitationSaga({ appProtocol }: { | |
| 9895 | 10000 | appProtocol: string; |
| 9896 | 10001 | }, { payload: { roomId, invitationPreview, messageId, isPublic, opts, }, }: ReturnType<typeof createRoomInvitation>): Generator<Generator<any, any, any> | import("redux-saga/effects").PutEffect<{ |
| 9897 | 10002 | payload: any; |
| … | … | @@ -11103,7 +11208,6 @@ declare module "store/room/main/room-common.saga" { |
| 11103 | 11208 | payload: import("store/room").SetForwardMessageParam; |
| 11104 | 11209 | type: "room/forward/set-forward-message"; |
| 11105 | 11210 | } & import("store/chat").ChatMessage>>, void, { |
| 11106 | applicationKey: any; | |
| 11107 | 11211 | config: { |
| 11108 | 11212 | appProtocol: any; |
| 11109 | 11213 | }; |
| … | … | @@ -11562,7 +11666,6 @@ declare module "store/room/room.saga" { |
| 11562 | 11666 | payload: import("store/room").SetForwardMessageParam; |
| 11563 | 11667 | type: "room/forward/set-forward-message"; |
| 11564 | 11668 | } & import("store/chat").ChatMessage>>, void, { |
| 11565 | applicationKey: any; | |
| 11566 | 11669 | config: { |
| 11567 | 11670 | appProtocol: any; |
| 11568 | 11671 | }; |
| … | … | @@ -11608,6 +11711,50 @@ declare module "store/room/room.saga" { |
| 11608 | 11711 | import type { createRoomSubmit } from "store/room/room.action"; |
| 11609 | 11712 | import type { RoomType } from "store/room/room.constant"; |
| 11610 | 11713 | } |
| 11714 | declare module "store/room/room-discover/room-discover.constant" { | |
| 11715 | /** | |
| 11716 | * @typedef {Object} DiscoverRoom | |
| 11717 | * @property {string} discoveryId | |
| 11718 | * @property {string} inviteLink | |
| 11719 | * @property {string} avatarUrl | |
| 11720 | * @property {string} description | |
| 11721 | * @property {string} title | |
| 11722 | * @property {string} [roomType] | |
| 11723 | * @property {string[]} [locale] | |
| 11724 | */ | |
| 11725 | /** | |
| 11726 | * @typedef {Omit<DiscoverRoom, 'avatarUrl'>} DiscoverRoomTemplate | |
| 11727 | */ | |
| 11728 | /** @type {Record<string, DiscoverRoomTemplate>} */ | |
| 11729 | export const PRODUCTION_DISCOVER: Record<string, DiscoverRoomTemplate>; | |
| 11730 | /** @type {Record<string, DiscoverRoomTemplate>} */ | |
| 11731 | export const NIGHTLY_DISCOVER: Record<string, DiscoverRoomTemplate>; | |
| 11732 | /** @type {Record<string, DiscoverRoomTemplate>} */ | |
| 11733 | export const INTERNAL_DISCOVER: Record<string, DiscoverRoomTemplate>; | |
| 11734 | export type DiscoverRoom = { | |
| 11735 | discoveryId: string; | |
| 11736 | inviteLink: string; | |
| 11737 | avatarUrl: string; | |
| 11738 | description: string; | |
| 11739 | title: string; | |
| 11740 | roomType?: string; | |
| 11741 | locale?: string[]; | |
| 11742 | }; | |
| 11743 | export type DiscoverRoomTemplate = Omit<DiscoverRoom, "avatarUrl">; | |
| 11744 | } | |
| 11745 | declare module "store/room/room-discover/room-discover.model" { | |
| 11746 | export function createDiscoverRooms(templates: Record<string, DiscoverRoomTemplate>, mixing: Record<string, Partial<DiscoverRoom>>, transform?: (room: DiscoverRoom) => DiscoverRoom): Record<string, DiscoverRoom>; | |
| 11747 | export function filterDiscoverRooms(rooms: Record<string, DiscoverRoom>, options: { | |
| 11748 | locale?: string; | |
| 11749 | excludeDiscoveryIds?: string[]; | |
| 11750 | }): Record<string, DiscoverRoom>; | |
| 11751 | import type { DiscoverRoomTemplate } from "store/room/room-discover/room-discover.constant"; | |
| 11752 | import type { DiscoverRoom } from "store/room/room-discover/room-discover.constant"; | |
| 11753 | } | |
| 11754 | declare module "store/room/room-discover/index" { | |
| 11755 | export * from "store/room/room-discover/room-discover.constant"; | |
| 11756 | export * from "store/room/room-discover/room-discover.model"; | |
| 11757 | } | |
| 11611 | 11758 | declare module "store/room/index" { |
| 11612 | 11759 | export * from "store/room/room.action"; |
| 11613 | 11760 | export * from "store/room/room.selector"; |
| … | … | @@ -11620,6 +11767,7 @@ declare module "store/room/index" { |
| 11620 | 11767 | export * from "store/room/joint"; |
| 11621 | 11768 | export * from "store/room/list"; |
| 11622 | 11769 | export * from "store/room/dm"; |
| 11770 | export * from "store/room/room-discover"; | |
| 11623 | 11771 | export * from "store/room/forward-message"; |
| 11624 | 11772 | export * from "store/room/share-message"; |
| 11625 | 11773 | export * from "store/room/room.feature"; |
| … | … | @@ -11793,6 +11941,11 @@ declare module "store/chat/chat.state" { |
| 11793 | 11941 | * @prop {number} searchFirstFounDelay |
| 11794 | 11942 | * @prop {number} searchResultNoJumpCount |
| 11795 | 11943 | */ |
| 11944 | /** | |
| 11945 | * @typedef {Object} ChatInputState | |
| 11946 | * @prop {boolean} isClearRequested | |
| 11947 | * @prop {boolean} isProcessing | |
| 11948 | */ | |
| 11796 | 11949 | /** |
| 11797 | 11950 | * @typedef {Object} ChatState |
| 11798 | 11951 | * @prop {string} currentRoomId |
| … | … | @@ -11804,6 +11957,7 @@ declare module "store/chat/chat.state" { |
| 11804 | 11957 | * @prop {FileUploadState} fileUpload |
| 11805 | 11958 | * @prop {ChatReactionState} reaction |
| 11806 | 11959 | * @prop {string} editingMessageId |
| 11960 | * @prop {ChatInputState} input | |
| 11807 | 11961 | * @prop {string} selectedMessageId |
| 11808 | 11962 | * @prop {boolean} sendLimited |
| 11809 | 11963 | * @prop {ReplyMessageState} replyMessage |
| … | … | @@ -11861,6 +12015,10 @@ declare module "store/chat/chat.state" { |
| 11861 | 12015 | searchFirstFounDelay: number; |
| 11862 | 12016 | searchResultNoJumpCount: number; |
| 11863 | 12017 | }; |
| 12018 | export type ChatInputState = { | |
| 12019 | isClearRequested: boolean; | |
| 12020 | isProcessing: boolean; | |
| 12021 | }; | |
| 11864 | 12022 | export type ChatState = { |
| 11865 | 12023 | currentRoomId: string; |
| 11866 | 12024 | error: string; |
| … | … | @@ -11871,6 +12029,7 @@ declare module "store/chat/chat.state" { |
| 11871 | 12029 | fileUpload: FileUploadState; |
| 11872 | 12030 | reaction: ChatReactionState; |
| 11873 | 12031 | editingMessageId: string; |
| 12032 | input: ChatInputState; | |
| 11874 | 12033 | selectedMessageId: string; |
| 11875 | 12034 | sendLimited: boolean; |
| 11876 | 12035 | replyMessage: ReplyMessageState; |
| … | … | @@ -12280,6 +12439,7 @@ declare module "store/room/room.model" { |
| 12280 | 12439 | * @prop {number} [fileTotalSize] |
| 12281 | 12440 | * @prop {string} [activeCallId] |
| 12282 | 12441 | * @prop {boolean} [isVerified] |
| 12442 | * @prop {boolean} [isUnread] | |
| 12283 | 12443 | */ |
| 12284 | 12444 | /** |
| 12285 | 12445 | * @typedef {Object} RoomState |
| … | … | @@ -12347,8 +12507,8 @@ declare module "store/room/room.model" { |
| 12347 | 12507 | export const parseRecentRoomsAddRemoveResponse: (data: RecentRoomsApiAddRemoveData) => RecentRoomsApiAddRemoveData; |
| 12348 | 12508 | /** @type {(data: RoomInfoApiData) => RoomConfigIdsData} */ |
| 12349 | 12509 | export const parseRoomConfigIdsResponse: (data: RoomInfoApiData) => RoomConfigIdsData; |
| 12350 | /** @type {(data: RoomConfigApiData) => RoomConfigData} */ | |
| 12351 | export const parseRoomConfigResponse: (data: RoomConfigApiData) => RoomConfigData; | |
| 12510 | /** @type {(data: RoomConfigApiData, roomId: string) => RoomConfigData} */ | |
| 12511 | export const parseRoomConfigResponse: (data: RoomConfigApiData, roomId: string) => RoomConfigData; | |
| 12352 | 12512 | /** |
| 12353 | 12513 | * @typedef {{ version: number, experimental?: boolean, isCompatible: boolean }} Version |
| 12354 | 12514 | * @type {(roomId: string, appVersion: number) => (roomVersion: Version) => RoomVersionData} |
| … | … | @@ -12423,6 +12583,7 @@ declare module "store/room/room.model" { |
| 12423 | 12583 | fileTotalSize?: number; |
| 12424 | 12584 | activeCallId?: string; |
| 12425 | 12585 | isVerified?: boolean; |
| 12586 | isUnread?: boolean; | |
| 12426 | 12587 | }; |
| 12427 | 12588 | export type RoomState = { |
| 12428 | 12589 | roomById: { |
| … | … | @@ -12593,6 +12754,8 @@ declare module "store/room/room.action" { |
| 12593 | 12754 | export const roomNewActivity: ActionCreatorWithPayload<string, "room/new-activity">; |
| 12594 | 12755 | /** @type {ActionCreatorWithPayload<string, 'room/toggle-membership-events'>} */ |
| 12595 | 12756 | export const toggleRoomMembershipEvents: ActionCreatorWithPayload<string, "room/toggle-membership-events">; |
| 12757 | /** @type {ActionCreatorWithPayload<string, 'room/toggle-room-unread'>} */ | |
| 12758 | export const toggleRoomIsUnreadCmd: ActionCreatorWithPayload<string, "room/toggle-room-unread">; | |
| 12596 | 12759 | /** |
| 12597 | 12760 | * @typedef {Object} RoomGenericStatusUpdatePayload |
| 12598 | 12761 | * @prop {string} roomId |
| … | … | @@ -13016,6 +13179,8 @@ declare module "store/room/room.selector" { |
| 13016 | 13179 | [x: string]: import("store/room").RoomNotification; |
| 13017 | 13180 | }; |
| 13018 | 13181 | export function getRoomNotificationById(roomId: any): (state: any) => boolean; |
| 13182 | /** @type {(roomId: string) => (state: any) => boolean} */ | |
| 13183 | export const getRoomIsUnread: (roomId: string) => (state: any) => boolean; | |
| 13019 | 13184 | export function getIsRoomDm(roomId: any): ((state: any) => boolean) & { |
| 13020 | 13185 | clearCache: () => void; |
| 13021 | 13186 | resultsCount: () => number; |
| … | … | @@ -13057,6 +13222,128 @@ declare module "store/room/room.feature" { |
| 13057 | 13222 | export function getRoomCallsV2Supported(roomId: any): (state: any) => any; |
| 13058 | 13223 | export { FEATURES }; |
| 13059 | 13224 | } |
| 13225 | declare module "store/network/network.constants" { | |
| 13226 | export namespace NETWORK_CONFIG { | |
| 13227 | let NETWORK_UPDATE_DURATION: number; | |
| 13228 | } | |
| 13229 | export namespace NETWORK_STATUS { | |
| 13230 | let ONLINE: "online"; | |
| 13231 | let OFFLINE: "offline"; | |
| 13232 | let TRICKY: "tricky"; | |
| 13233 | let UNKNOWN: "unknown"; | |
| 13234 | } | |
| 13235 | export type NetworkStatusData = { | |
| 13236 | host: string; | |
| 13237 | port: number; | |
| 13238 | online: boolean; | |
| 13239 | degraded: boolean; | |
| 13240 | loaded: boolean; | |
| 13241 | connections: number; | |
| 13242 | peers: string[]; | |
| 13243 | }; | |
| 13244 | export type NetworkSettingsValues = { | |
| 13245 | concurrency: number; | |
| 13246 | maxWindow: number; | |
| 13247 | randomPunchInterval: number; | |
| 13248 | connectionKeepAlive: number; | |
| 13249 | }; | |
| 13250 | export type NetworkSettings = { | |
| 13251 | default: NetworkSettingsValues; | |
| 13252 | values: NetworkSettingsValues; | |
| 13253 | isCustom: boolean; | |
| 13254 | isLoaded: boolean; | |
| 13255 | }; | |
| 13256 | export type NetworkConfig = typeof NETWORK_CONFIG; | |
| 13257 | export type NetworkState = { | |
| 13258 | config: NetworkConfig; | |
| 13259 | status: NetworkStatusData; | |
| 13260 | settings: NetworkSettings; | |
| 13261 | }; | |
| 13262 | export type NetworkStatus = (typeof NETWORK_STATUS)[keyof typeof NETWORK_STATUS]; | |
| 13263 | } | |
| 13264 | declare module "store/network/network.model" { | |
| 13265 | export function calcNetworkStatus(data: NetworkStatusData): "unknown" | "online" | "offline" | "tricky"; | |
| 13266 | export function isNetworkStatusChanged(a: NetworkStatusData, b: NetworkStatusData): boolean; | |
| 13267 | import type { NetworkStatusData } from "store/network/network.constants"; | |
| 13268 | } | |
| 13269 | declare module "store/network/network.reducer" { | |
| 13270 | export const NETWORK_STATE_KEY: "network"; | |
| 13271 | /** @type {NetworkState} */ | |
| 13272 | export const NETWORK_INITIAL_STATE: NetworkState; | |
| 13273 | export const networkSlice: import("@reduxjs/toolkit").Slice<NetworkState, { | |
| 13274 | setNetworkData: (state: import("immer").WritableDraft<NetworkState>, { payload: { host, port, online, degraded, connections, peers, loaded, }, }: { | |
| 13275 | payload: any; | |
| 13276 | type: string; | |
| 13277 | }) => void; | |
| 13278 | setNetworkSettingsDefault: (state: import("immer").WritableDraft<NetworkState>, { payload: { concurrency, maxWindow, randomPunchInterval, connectionKeepAlive, }, }: { | |
| 13279 | payload: any; | |
| 13280 | type: string; | |
| 13281 | }) => void; | |
| 13282 | setNetworkSettings: (state: import("immer").WritableDraft<NetworkState>, { payload: { concurrency, maxWindow, randomPunchInterval, connectionKeepAlive, isLoaded, }, }: { | |
| 13283 | payload: any; | |
| 13284 | type: string; | |
| 13285 | }) => void; | |
| 13286 | setNetworkSettingsIsCustom: (state: import("immer").WritableDraft<NetworkState>, { payload }: { | |
| 13287 | payload: any; | |
| 13288 | type: string; | |
| 13289 | }) => void; | |
| 13290 | resetNetworkSettings: (state: import("immer").WritableDraft<NetworkState>) => void; | |
| 13291 | }, "network", "network", import("@reduxjs/toolkit").SliceSelectors<NetworkState>>; | |
| 13292 | export function getNetworkState(state: any): NetworkState; | |
| 13293 | export function getNetworkConfig(state: any): { | |
| 13294 | NETWORK_UPDATE_DURATION: number; | |
| 13295 | }; | |
| 13296 | export function getNetworkStatusState(state: any): NetworkStatusData; | |
| 13297 | export function getNetworkIp(state: any): string; | |
| 13298 | export function getNetworkPort(state: any): number; | |
| 13299 | export function getNetworkLoaded(state: any): boolean; | |
| 13300 | export function getNetworkOnline(state: any): boolean; | |
| 13301 | export function getNetworkDegraded(state: any): boolean; | |
| 13302 | export function getNetworkPeerCount(state: any): number; | |
| 13303 | export function getNetworkPeers(state: any): string[]; | |
| 13304 | export function getNetworkSettings(state: any): import("store/network").NetworkSettings; | |
| 13305 | export function getNetworkSettingsDefault(state: any): NetworkSettingsValues; | |
| 13306 | export function getNetworkSettingsValues(state: any): NetworkSettingsValues; | |
| 13307 | export function getNetworkSettingsLoading(state: any): boolean; | |
| 13308 | export const getNetworkSettingsIsCustom: ((state: any) => boolean) & { | |
| 13309 | clearCache: () => void; | |
| 13310 | resultsCount: () => number; | |
| 13311 | resetResultsCount: () => void; | |
| 13312 | } & { | |
| 13313 | resultFunc: (resultFuncArgs_0: import("store/network").NetworkSettings) => boolean; | |
| 13314 | memoizedResultFunc: ((resultFuncArgs_0: import("store/network").NetworkSettings) => boolean) & { | |
| 13315 | clearCache: () => void; | |
| 13316 | resultsCount: () => number; | |
| 13317 | resetResultsCount: () => void; | |
| 13318 | }; | |
| 13319 | lastResult: () => boolean; | |
| 13320 | dependencies: [(state: any) => import("store/network").NetworkSettings]; | |
| 13321 | recomputations: () => number; | |
| 13322 | resetRecomputations: () => void; | |
| 13323 | dependencyRecomputations: () => number; | |
| 13324 | resetDependencyRecomputations: () => void; | |
| 13325 | } & { | |
| 13326 | memoize: typeof import("reselect").weakMapMemoize; | |
| 13327 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 13328 | }; | |
| 13329 | export function getNetworkStatus(state: any): "unknown" | "online" | "offline" | "tricky"; | |
| 13330 | export const setNetworkData: ActionCreatorWithPayload<any, "network/setNetworkData">; | |
| 13331 | export const setNetworkSettings: ActionCreatorWithPayload<any, "network/setNetworkSettings">; | |
| 13332 | export const setNetworkSettingsDefault: ActionCreatorWithPayload<any, "network/setNetworkSettingsDefault">; | |
| 13333 | export const setNetworkSettingsIsCustom: ActionCreatorWithPayload<any, "network/setNetworkSettingsIsCustom">; | |
| 13334 | export const resetNetworkSettings: ActionCreatorWithoutPayload<"network/resetNetworkSettings">; | |
| 13335 | export const getAppInitialState: () => NetworkState; | |
| 13336 | export const appReducer: import("redux").Reducer<NetworkState>; | |
| 13337 | /** @type {ActionCreatorWithoutPayload} */ | |
| 13338 | export const loadNetworkSettings: ActionCreatorWithoutPayload; | |
| 13339 | /** @type {ActionCreatorWithPayload<NetworkSettingsValues, 'network/update-settings'>} */ | |
| 13340 | export const updateNetworkSettings: ActionCreatorWithPayload<NetworkSettingsValues, "network/update-settings">; | |
| 13341 | import type { NetworkState } from "store/network/network.constants"; | |
| 13342 | import type { NetworkStatusData } from "store/network/network.constants"; | |
| 13343 | import type { NetworkSettingsValues } from "store/network/network.constants"; | |
| 13344 | import type { ActionCreatorWithPayload } from "@reduxjs/toolkit"; | |
| 13345 | import type { ActionCreatorWithoutPayload } from "@reduxjs/toolkit"; | |
| 13346 | } | |
| 13060 | 13347 | declare module "store/call/call.reducer" { |
| 13061 | 13348 | export namespace INITIAL_STATE { |
| 13062 | 13349 | export let callId: string; |
| … | … | @@ -13072,6 +13359,7 @@ declare module "store/call/call.reducer" { |
| 13072 | 13359 | export let activeCalls: any; |
| 13073 | 13360 | export let activeCallMemberIds: any; |
| 13074 | 13361 | export let mediaBySwarmId: {}; |
| 13362 | export let connectedMemberIds: {}; | |
| 13075 | 13363 | export let peersCounter: {}; |
| 13076 | 13364 | export let showConfirmLeave: boolean; |
| 13077 | 13365 | export let showAutoEndPopup: boolean; |
| … | … | @@ -13112,6 +13400,7 @@ declare module "store/call/call.reducer" { |
| 13112 | 13400 | activeCalls: any; |
| 13113 | 13401 | activeCallMemberIds: any; |
| 13114 | 13402 | mediaBySwarmId: {}; |
| 13403 | connectedMemberIds: {}; | |
| 13115 | 13404 | peersCounter: {}; |
| 13116 | 13405 | showConfirmLeave: boolean; |
| 13117 | 13406 | showAutoEndPopup: boolean; |
| … | … | @@ -13142,6 +13431,27 @@ declare module "store/call/call.reducer" { |
| 13142 | 13431 | export function getActiveCalls(state: any): any; |
| 13143 | 13432 | export function getActiveCallMemberIds(state: any): any; |
| 13144 | 13433 | export function getIsActiveCallMember(id: any): (state: any) => any; |
| 13434 | export function makeGetIsActiveCallMember(id: any): ((state: any) => any) & { | |
| 13435 | clearCache: () => void; | |
| 13436 | resultsCount: () => number; | |
| 13437 | resetResultsCount: () => void; | |
| 13438 | } & { | |
| 13439 | resultFunc: (resultFuncArgs_0: any) => any; | |
| 13440 | memoizedResultFunc: ((resultFuncArgs_0: any) => any) & { | |
| 13441 | clearCache: () => void; | |
| 13442 | resultsCount: () => number; | |
| 13443 | resetResultsCount: () => void; | |
| 13444 | }; | |
| 13445 | lastResult: () => any; | |
| 13446 | dependencies: [(state: any) => any]; | |
| 13447 | recomputations: () => number; | |
| 13448 | resetRecomputations: () => void; | |
| 13449 | dependencyRecomputations: () => number; | |
| 13450 | resetDependencyRecomputations: () => void; | |
| 13451 | } & { | |
| 13452 | memoize: typeof import("reselect").weakMapMemoize; | |
| 13453 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 13454 | }; | |
| 13145 | 13455 | export function getCallTopSortedPresences(state: any): any; |
| 13146 | 13456 | export const getCallUnknownPresenceIds: ((state: any) => string[]) & { |
| 13147 | 13457 | clearCache: () => void; |
| … | … | @@ -13212,6 +13522,47 @@ declare module "store/call/call.reducer" { |
| 13212 | 13522 | }; |
| 13213 | 13523 | export function getCallPresenceCount(state: any): any; |
| 13214 | 13524 | export function getIsPresenceUnknown(presenceId: any): (state: any) => boolean; |
| 13525 | export function makeGetIsPresenceUnknown(presenceId: any): ((state: any) => boolean) & { | |
| 13526 | clearCache: () => void; | |
| 13527 | resultsCount: () => number; | |
| 13528 | resetResultsCount: () => void; | |
| 13529 | } & { | |
| 13530 | resultFunc: (resultFuncArgs_0: string[]) => boolean; | |
| 13531 | memoizedResultFunc: ((resultFuncArgs_0: string[]) => boolean) & { | |
| 13532 | clearCache: () => void; | |
| 13533 | resultsCount: () => number; | |
| 13534 | resetResultsCount: () => void; | |
| 13535 | }; | |
| 13536 | lastResult: () => boolean; | |
| 13537 | dependencies: [((state: any) => string[]) & { | |
| 13538 | clearCache: () => void; | |
| 13539 | resultsCount: () => number; | |
| 13540 | resetResultsCount: () => void; | |
| 13541 | } & { | |
| 13542 | resultFunc: (resultFuncArgs_0: any) => string[]; | |
| 13543 | memoizedResultFunc: ((resultFuncArgs_0: any) => string[]) & { | |
| 13544 | clearCache: () => void; | |
| 13545 | resultsCount: () => number; | |
| 13546 | resetResultsCount: () => void; | |
| 13547 | }; | |
| 13548 | lastResult: () => string[]; | |
| 13549 | dependencies: [(state: any) => any]; | |
| 13550 | recomputations: () => number; | |
| 13551 | resetRecomputations: () => void; | |
| 13552 | dependencyRecomputations: () => number; | |
| 13553 | resetDependencyRecomputations: () => void; | |
| 13554 | } & { | |
| 13555 | memoize: typeof import("reselect").weakMapMemoize; | |
| 13556 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 13557 | }]; | |
| 13558 | recomputations: () => number; | |
| 13559 | resetRecomputations: () => void; | |
| 13560 | dependencyRecomputations: () => number; | |
| 13561 | resetDependencyRecomputations: () => void; | |
| 13562 | } & { | |
| 13563 | memoize: typeof import("reselect").weakMapMemoize; | |
| 13564 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 13565 | }; | |
| 13215 | 13566 | export function getCallPresenceSwarmByMemberIds(state: any): any; |
| 13216 | 13567 | export function getCallRemoteMediaById(id: any): (state: any) => any; |
| 13217 | 13568 | export function getCallPresenceById(id: any): (state: any) => any; |
| … | … | @@ -13383,19 +13734,19 @@ declare module "store/call/call.reducer" { |
| 13383 | 13734 | argsMemoize: typeof import("reselect").weakMapMemoize; |
| 13384 | 13735 | }; |
| 13385 | 13736 | export function getHasScreenSharingStreams(state: any): boolean; |
| 13386 | export const getActivePresences: ((state: any) => any) & { | |
| 13737 | export const getActivePresences: ((state: any) => readonly any[]) & { | |
| 13387 | 13738 | clearCache: () => void; |
| 13388 | 13739 | resultsCount: () => number; |
| 13389 | 13740 | resetResultsCount: () => void; |
| 13390 | 13741 | } & { |
| 13391 | resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any) => any; | |
| 13392 | memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any) => any) & { | |
| 13742 | resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any, resultFuncArgs_2: any) => readonly any[]; | |
| 13743 | memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any, resultFuncArgs_2: any) => readonly any[]) & { | |
| 13393 | 13744 | clearCache: () => void; |
| 13394 | 13745 | resultsCount: () => number; |
| 13395 | 13746 | resetResultsCount: () => void; |
| 13396 | 13747 | }; |
| 13397 | lastResult: () => any; | |
| 13398 | dependencies: [(state: any) => any, (state: any) => any]; | |
| 13748 | lastResult: () => readonly any[]; | |
| 13749 | dependencies: [(state: any) => any, (state: any) => any, (state: any) => any]; | |
| 13399 | 13750 | recomputations: () => number; |
| 13400 | 13751 | resetRecomputations: () => void; |
| 13401 | 13752 | dependencyRecomputations: () => number; |
| … | … | @@ -13404,35 +13755,79 @@ declare module "store/call/call.reducer" { |
| 13404 | 13755 | memoize: typeof import("reselect").weakMapMemoize; |
| 13405 | 13756 | argsMemoize: typeof import("reselect").weakMapMemoize; |
| 13406 | 13757 | }; |
| 13407 | export function makeGetPositionPreservedActiveSwarmIds(): ((state: any, limit: any) => any) & { | |
| 13758 | export function getIsPresenceOffline(swarmId: any): (state: any) => boolean; | |
| 13759 | export function makeGetIsPresenceOffline(swarmId: any): ((state: any) => boolean) & { | |
| 13408 | 13760 | clearCache: () => void; |
| 13409 | 13761 | resultsCount: () => number; |
| 13410 | 13762 | resetResultsCount: () => void; |
| 13411 | 13763 | } & { |
| 13412 | resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any) => any; | |
| 13413 | memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any) => any) & { | |
| 13764 | resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: string[]) => boolean; | |
| 13765 | memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: string[]) => boolean) & { | |
| 13414 | 13766 | clearCache: () => void; |
| 13415 | 13767 | resultsCount: () => number; |
| 13416 | 13768 | resetResultsCount: () => void; |
| 13417 | 13769 | }; |
| 13418 | lastResult: () => any; | |
| 13419 | dependencies: [((state: any) => any) & { | |
| 13420 | clearCache: () => void; | |
| 13421 | resultsCount: () => number; | |
| 13422 | resetResultsCount: () => void; | |
| 13423 | } & { | |
| 13424 | resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any) => any; | |
| 13425 | memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any) => any) & { | |
| 13426 | clearCache: () => void; | |
| 13427 | resultsCount: () => number; | |
| 13428 | resetResultsCount: () => void; | |
| 13429 | }; | |
| 13430 | lastResult: () => any; | |
| 13431 | dependencies: [(state: any) => any, (state: any) => any]; | |
| 13432 | recomputations: () => number; | |
| 13433 | resetRecomputations: () => void; | |
| 13434 | dependencyRecomputations: () => number; | |
| 13435 | resetDependencyRecomputations: () => void; | |
| 13770 | lastResult: () => boolean; | |
| 13771 | dependencies: [(state: any) => any, (state: any) => string[]]; | |
| 13772 | recomputations: () => number; | |
| 13773 | resetRecomputations: () => void; | |
| 13774 | dependencyRecomputations: () => number; | |
| 13775 | resetDependencyRecomputations: () => void; | |
| 13776 | } & { | |
| 13777 | memoize: typeof import("reselect").weakMapMemoize; | |
| 13778 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 13779 | }; | |
| 13780 | export function getHasCallMemberConnected(memberId: any): (state: any) => boolean; | |
| 13781 | export function makeGetHasCallMemberConnected(memberId: any): ((state: any) => boolean) & { | |
| 13782 | clearCache: () => void; | |
| 13783 | resultsCount: () => number; | |
| 13784 | resetResultsCount: () => void; | |
| 13785 | } & { | |
| 13786 | resultFunc: (resultFuncArgs_0: any) => boolean; | |
| 13787 | memoizedResultFunc: ((resultFuncArgs_0: any) => boolean) & { | |
| 13788 | clearCache: () => void; | |
| 13789 | resultsCount: () => number; | |
| 13790 | resetResultsCount: () => void; | |
| 13791 | }; | |
| 13792 | lastResult: () => boolean; | |
| 13793 | dependencies: [(state: any) => any]; | |
| 13794 | recomputations: () => number; | |
| 13795 | resetRecomputations: () => void; | |
| 13796 | dependencyRecomputations: () => number; | |
| 13797 | resetDependencyRecomputations: () => void; | |
| 13798 | } & { | |
| 13799 | memoize: typeof import("reselect").weakMapMemoize; | |
| 13800 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 13801 | }; | |
| 13802 | export function makeGetPositionPreservedActiveSwarmIds(): ((state: any, limit: any) => any) & { | |
| 13803 | clearCache: () => void; | |
| 13804 | resultsCount: () => number; | |
| 13805 | resetResultsCount: () => void; | |
| 13806 | } & { | |
| 13807 | resultFunc: (resultFuncArgs_0: readonly any[], resultFuncArgs_1: any) => any; | |
| 13808 | memoizedResultFunc: ((resultFuncArgs_0: readonly any[], resultFuncArgs_1: any) => any) & { | |
| 13809 | clearCache: () => void; | |
| 13810 | resultsCount: () => number; | |
| 13811 | resetResultsCount: () => void; | |
| 13812 | }; | |
| 13813 | lastResult: () => any; | |
| 13814 | dependencies: [((state: any) => readonly any[]) & { | |
| 13815 | clearCache: () => void; | |
| 13816 | resultsCount: () => number; | |
| 13817 | resetResultsCount: () => void; | |
| 13818 | } & { | |
| 13819 | resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any, resultFuncArgs_2: any) => readonly any[]; | |
| 13820 | memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any, resultFuncArgs_2: any) => readonly any[]) & { | |
| 13821 | clearCache: () => void; | |
| 13822 | resultsCount: () => number; | |
| 13823 | resetResultsCount: () => void; | |
| 13824 | }; | |
| 13825 | lastResult: () => readonly any[]; | |
| 13826 | dependencies: [(state: any) => any, (state: any) => any, (state: any) => any]; | |
| 13827 | recomputations: () => number; | |
| 13828 | resetRecomputations: () => void; | |
| 13829 | dependencyRecomputations: () => number; | |
| 13830 | resetDependencyRecomputations: () => void; | |
| 13436 | 13831 | } & { |
| 13437 | 13832 | memoize: typeof import("reselect").weakMapMemoize; |
| 13438 | 13833 | argsMemoize: typeof import("reselect").weakMapMemoize; |
| … | … | @@ -13801,6 +14196,7 @@ declare module "store/ui-desktop/ui.constants" { |
| 13801 | 14196 | let REPORTED_MEMBERS_LIST: "reportedMembersList"; |
| 13802 | 14197 | let DM_REQUEST_MEMBER: "dmRequestMember"; |
| 13803 | 14198 | let DEBUG: "debug"; |
| 14199 | let DEV_TOOLS: "devTools"; | |
| 13804 | 14200 | let GROUP_SETTINGS: "groupSettings"; |
| 13805 | 14201 | } |
| 13806 | 14202 | export namespace PROFILE_SECTIONS { |
| … | … | @@ -13845,12 +14241,12 @@ declare module "store/ui-desktop/ui.constants" { |
| 13845 | 14241 | export type UIPanel = "chat" | "call" | "profile" | "rooms" | "roomInfo" | "feed" | "identityProfile" | "callParticipants"; |
| 13846 | 14242 | export type RoomListTab = "joined" | "pairing" | "dm-requests" | "discovering"; |
| 13847 | 14243 | export type UIChatEventModalType = "" | "REMOVE" | "REPORT"; |
| 13848 | export type RoomInfoSectionType = "settings" | "member" | "files" | "roomInfo" | "members" | "mutedMembers" | "adminsModerators" | "manageMember" | "reportedMessagesList" | "membersReportedList" | "reportedMessage" | "reportedMembersList" | "dmRequestMember" | "debug" | "groupSettings"; | |
| 14244 | export type RoomInfoSectionType = "settings" | "member" | "files" | "roomInfo" | "members" | "mutedMembers" | "adminsModerators" | "manageMember" | "reportedMessagesList" | "membersReportedList" | "reportedMessage" | "reportedMembersList" | "dmRequestMember" | "debug" | "devTools" | "groupSettings"; | |
| 13849 | 14245 | export type RoomInfoSection = { |
| 13850 | 14246 | section: RoomInfoSectionType; |
| 13851 | 14247 | sectionParams: any; |
| 13852 | 14248 | }; |
| 13853 | export type ProfileSection = "" | "settings" | "notifications" | "devices" | "callRingtone" | "notificationSound" | "version" | "debug" | "devices-add" | "network-status" | "network-settings" | "language" | "privacySecurity" | "recover" | "recoveryPhraseRequest" | "recoveryPhraseView" | "resetApp" | "resetAppRequest" | "qr" | "feedback" | "about-us" | "performance" | "wallet" | "wallet-configuration" | "wallet-import-configuration" | "error-log" | "error-log-details" | "error-log-report" | "error-log-syslog" | "error-log-time-stats"; | |
| 14249 | export type ProfileSection = "" | "settings" | "notifications" | "devices" | "version" | "callRingtone" | "notificationSound" | "debug" | "devices-add" | "network-status" | "network-settings" | "language" | "privacySecurity" | "recover" | "recoveryPhraseRequest" | "recoveryPhraseView" | "resetApp" | "resetAppRequest" | "qr" | "feedback" | "about-us" | "performance" | "wallet" | "wallet-configuration" | "wallet-import-configuration" | "error-log" | "error-log-details" | "error-log-report" | "error-log-syslog" | "error-log-time-stats"; | |
| 13854 | 14250 | } |
| 13855 | 14251 | declare module "store/ui-desktop/ui-modal.reducer" { |
| 13856 | 14252 | /** |
| … | … | @@ -15378,6 +15774,9 @@ declare module "store/app/app.saga" { |
| 15378 | 15774 | }> | import("redux-saga/effects").SelectEffect | Generator<Generator<any, any, any> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").PutEffect<{ |
| 15379 | 15775 | payload: import("store/notification").ErrorNotificationParam; |
| 15380 | 15776 | type: string; |
| 15777 | }> | import("redux-saga/effects").PutEffect<{ | |
| 15778 | payload: boolean; | |
| 15779 | type: "chat/set-input-is-processing"; | |
| 15381 | 15780 | }> | import("redux-saga/effects").PutEffect<{ |
| 15382 | 15781 | payload: { |
| 15383 | 15782 | roomId: string; |
| … | … | @@ -15386,6 +15785,9 @@ declare module "store/app/app.saga" { |
| 15386 | 15785 | }> | import("redux-saga/effects").PutEffect<{ |
| 15387 | 15786 | payload: import("store/chat").SendChatFilesPayload; |
| 15388 | 15787 | type: "chat/sendChatFiles"; |
| 15788 | }> | import("redux-saga/effects").PutEffect<{ | |
| 15789 | payload: boolean; | |
| 15790 | type: "chat/set-input-clear-requested"; | |
| 15389 | 15791 | }>, void, any>, void, string & Record<string, { |
| 15390 | 15792 | url: string; |
| 15391 | 15793 | } & InvitationPreview> & RoomConfig>; |
| … | … | @@ -15553,11 +15955,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15553 | 15955 | appActive: boolean; |
| 15554 | 15956 | shareContent: any[]; |
| 15555 | 15957 | shareRoomId: string; |
| 15556 | callAudioCurrentOutput: string; | |
| 15557 | callAudioOutputs: any[]; | |
| 15558 | callSpeakerOn: boolean; | |
| 15559 | isCallLoading: boolean; | |
| 15560 | nativeCallRinging: boolean; | |
| 15958 | call: { | |
| 15959 | audioCurrentOutput: string; | |
| 15960 | audioOutputs: any[]; | |
| 15961 | speakerOn: boolean; | |
| 15962 | isLoading: boolean; | |
| 15963 | nativeCallRinging: boolean; | |
| 15964 | screenVideoTrackId: any; | |
| 15965 | }; | |
| 15561 | 15966 | deviceIsOnSilentMode: boolean; |
| 15562 | 15967 | onboarding: { |
| 15563 | 15968 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15606,11 +16011,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15606 | 16011 | appActive: boolean; |
| 15607 | 16012 | shareContent: any[]; |
| 15608 | 16013 | shareRoomId: string; |
| 15609 | callAudioCurrentOutput: string; | |
| 15610 | callAudioOutputs: any[]; | |
| 15611 | callSpeakerOn: boolean; | |
| 15612 | isCallLoading: boolean; | |
| 15613 | nativeCallRinging: boolean; | |
| 16014 | call: { | |
| 16015 | audioCurrentOutput: string; | |
| 16016 | audioOutputs: any[]; | |
| 16017 | speakerOn: boolean; | |
| 16018 | isLoading: boolean; | |
| 16019 | nativeCallRinging: boolean; | |
| 16020 | screenVideoTrackId: any; | |
| 16021 | }; | |
| 15614 | 16022 | deviceIsOnSilentMode: boolean; |
| 15615 | 16023 | onboarding: { |
| 15616 | 16024 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15662,11 +16070,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15662 | 16070 | appActive: boolean; |
| 15663 | 16071 | shareContent: any[]; |
| 15664 | 16072 | shareRoomId: string; |
| 15665 | callAudioCurrentOutput: string; | |
| 15666 | callAudioOutputs: any[]; | |
| 15667 | callSpeakerOn: boolean; | |
| 15668 | isCallLoading: boolean; | |
| 15669 | nativeCallRinging: boolean; | |
| 16073 | call: { | |
| 16074 | audioCurrentOutput: string; | |
| 16075 | audioOutputs: any[]; | |
| 16076 | speakerOn: boolean; | |
| 16077 | isLoading: boolean; | |
| 16078 | nativeCallRinging: boolean; | |
| 16079 | screenVideoTrackId: any; | |
| 16080 | }; | |
| 15670 | 16081 | deviceIsOnSilentMode: boolean; |
| 15671 | 16082 | onboarding: { |
| 15672 | 16083 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15718,11 +16129,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15718 | 16129 | appActive: boolean; |
| 15719 | 16130 | shareContent: any[]; |
| 15720 | 16131 | shareRoomId: string; |
| 15721 | callAudioCurrentOutput: string; | |
| 15722 | callAudioOutputs: any[]; | |
| 15723 | callSpeakerOn: boolean; | |
| 15724 | isCallLoading: boolean; | |
| 15725 | nativeCallRinging: boolean; | |
| 16132 | call: { | |
| 16133 | audioCurrentOutput: string; | |
| 16134 | audioOutputs: any[]; | |
| 16135 | speakerOn: boolean; | |
| 16136 | isLoading: boolean; | |
| 16137 | nativeCallRinging: boolean; | |
| 16138 | screenVideoTrackId: any; | |
| 16139 | }; | |
| 15726 | 16140 | deviceIsOnSilentMode: boolean; |
| 15727 | 16141 | onboarding: { |
| 15728 | 16142 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15774,11 +16188,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15774 | 16188 | appActive: boolean; |
| 15775 | 16189 | shareContent: any[]; |
| 15776 | 16190 | shareRoomId: string; |
| 15777 | callAudioCurrentOutput: string; | |
| 15778 | callAudioOutputs: any[]; | |
| 15779 | callSpeakerOn: boolean; | |
| 15780 | isCallLoading: boolean; | |
| 15781 | nativeCallRinging: boolean; | |
| 16191 | call: { | |
| 16192 | audioCurrentOutput: string; | |
| 16193 | audioOutputs: any[]; | |
| 16194 | speakerOn: boolean; | |
| 16195 | isLoading: boolean; | |
| 16196 | nativeCallRinging: boolean; | |
| 16197 | screenVideoTrackId: any; | |
| 16198 | }; | |
| 15782 | 16199 | deviceIsOnSilentMode: boolean; |
| 15783 | 16200 | onboarding: { |
| 15784 | 16201 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15827,11 +16244,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15827 | 16244 | appActive: boolean; |
| 15828 | 16245 | shareContent: any[]; |
| 15829 | 16246 | shareRoomId: string; |
| 15830 | callAudioCurrentOutput: string; | |
| 15831 | callAudioOutputs: any[]; | |
| 15832 | callSpeakerOn: boolean; | |
| 15833 | isCallLoading: boolean; | |
| 15834 | nativeCallRinging: boolean; | |
| 16247 | call: { | |
| 16248 | audioCurrentOutput: string; | |
| 16249 | audioOutputs: any[]; | |
| 16250 | speakerOn: boolean; | |
| 16251 | isLoading: boolean; | |
| 16252 | nativeCallRinging: boolean; | |
| 16253 | screenVideoTrackId: any; | |
| 16254 | }; | |
| 15835 | 16255 | deviceIsOnSilentMode: boolean; |
| 15836 | 16256 | onboarding: { |
| 15837 | 16257 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15883,11 +16303,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15883 | 16303 | appActive: boolean; |
| 15884 | 16304 | shareContent: any[]; |
| 15885 | 16305 | shareRoomId: string; |
| 15886 | callAudioCurrentOutput: string; | |
| 15887 | callAudioOutputs: any[]; | |
| 15888 | callSpeakerOn: boolean; | |
| 15889 | isCallLoading: boolean; | |
| 15890 | nativeCallRinging: boolean; | |
| 16306 | call: { | |
| 16307 | audioCurrentOutput: string; | |
| 16308 | audioOutputs: any[]; | |
| 16309 | speakerOn: boolean; | |
| 16310 | isLoading: boolean; | |
| 16311 | nativeCallRinging: boolean; | |
| 16312 | screenVideoTrackId: any; | |
| 16313 | }; | |
| 15891 | 16314 | deviceIsOnSilentMode: boolean; |
| 15892 | 16315 | onboarding: { |
| 15893 | 16316 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15939,11 +16362,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15939 | 16362 | appActive: boolean; |
| 15940 | 16363 | shareContent: any[]; |
| 15941 | 16364 | shareRoomId: string; |
| 15942 | callAudioCurrentOutput: string; | |
| 15943 | callAudioOutputs: any[]; | |
| 15944 | callSpeakerOn: boolean; | |
| 15945 | isCallLoading: boolean; | |
| 15946 | nativeCallRinging: boolean; | |
| 16365 | call: { | |
| 16366 | audioCurrentOutput: string; | |
| 16367 | audioOutputs: any[]; | |
| 16368 | speakerOn: boolean; | |
| 16369 | isLoading: boolean; | |
| 16370 | nativeCallRinging: boolean; | |
| 16371 | screenVideoTrackId: any; | |
| 16372 | }; | |
| 15947 | 16373 | deviceIsOnSilentMode: boolean; |
| 15948 | 16374 | onboarding: { |
| 15949 | 16375 | showWalkthroughTooltip: boolean; |
| … | … | @@ -15995,11 +16421,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 15995 | 16421 | appActive: boolean; |
| 15996 | 16422 | shareContent: any[]; |
| 15997 | 16423 | shareRoomId: string; |
| 15998 | callAudioCurrentOutput: string; | |
| 15999 | callAudioOutputs: any[]; | |
| 16000 | callSpeakerOn: boolean; | |
| 16001 | isCallLoading: boolean; | |
| 16002 | nativeCallRinging: boolean; | |
| 16424 | call: { | |
| 16425 | audioCurrentOutput: string; | |
| 16426 | audioOutputs: any[]; | |
| 16427 | speakerOn: boolean; | |
| 16428 | isLoading: boolean; | |
| 16429 | nativeCallRinging: boolean; | |
| 16430 | screenVideoTrackId: any; | |
| 16431 | }; | |
| 16003 | 16432 | deviceIsOnSilentMode: boolean; |
| 16004 | 16433 | onboarding: { |
| 16005 | 16434 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16051,11 +16480,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16051 | 16480 | appActive: boolean; |
| 16052 | 16481 | shareContent: any[]; |
| 16053 | 16482 | shareRoomId: string; |
| 16054 | callAudioCurrentOutput: string; | |
| 16055 | callAudioOutputs: any[]; | |
| 16056 | callSpeakerOn: boolean; | |
| 16057 | isCallLoading: boolean; | |
| 16058 | nativeCallRinging: boolean; | |
| 16483 | call: { | |
| 16484 | audioCurrentOutput: string; | |
| 16485 | audioOutputs: any[]; | |
| 16486 | speakerOn: boolean; | |
| 16487 | isLoading: boolean; | |
| 16488 | nativeCallRinging: boolean; | |
| 16489 | screenVideoTrackId: any; | |
| 16490 | }; | |
| 16059 | 16491 | deviceIsOnSilentMode: boolean; |
| 16060 | 16492 | onboarding: { |
| 16061 | 16493 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16107,11 +16539,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16107 | 16539 | appActive: boolean; |
| 16108 | 16540 | shareContent: any[]; |
| 16109 | 16541 | shareRoomId: string; |
| 16110 | callAudioCurrentOutput: string; | |
| 16111 | callAudioOutputs: any[]; | |
| 16112 | callSpeakerOn: boolean; | |
| 16113 | isCallLoading: boolean; | |
| 16114 | nativeCallRinging: boolean; | |
| 16542 | call: { | |
| 16543 | audioCurrentOutput: string; | |
| 16544 | audioOutputs: any[]; | |
| 16545 | speakerOn: boolean; | |
| 16546 | isLoading: boolean; | |
| 16547 | nativeCallRinging: boolean; | |
| 16548 | screenVideoTrackId: any; | |
| 16549 | }; | |
| 16115 | 16550 | deviceIsOnSilentMode: boolean; |
| 16116 | 16551 | onboarding: { |
| 16117 | 16552 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16163,11 +16598,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16163 | 16598 | appActive: boolean; |
| 16164 | 16599 | shareContent: any[]; |
| 16165 | 16600 | shareRoomId: string; |
| 16166 | callAudioCurrentOutput: string; | |
| 16167 | callAudioOutputs: any[]; | |
| 16168 | callSpeakerOn: boolean; | |
| 16169 | isCallLoading: boolean; | |
| 16170 | nativeCallRinging: boolean; | |
| 16601 | call: { | |
| 16602 | audioCurrentOutput: string; | |
| 16603 | audioOutputs: any[]; | |
| 16604 | speakerOn: boolean; | |
| 16605 | isLoading: boolean; | |
| 16606 | nativeCallRinging: boolean; | |
| 16607 | screenVideoTrackId: any; | |
| 16608 | }; | |
| 16171 | 16609 | deviceIsOnSilentMode: boolean; |
| 16172 | 16610 | onboarding: { |
| 16173 | 16611 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16219,11 +16657,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16219 | 16657 | appActive: boolean; |
| 16220 | 16658 | shareContent: any[]; |
| 16221 | 16659 | shareRoomId: string; |
| 16222 | callAudioCurrentOutput: string; | |
| 16223 | callAudioOutputs: any[]; | |
| 16224 | callSpeakerOn: boolean; | |
| 16225 | isCallLoading: boolean; | |
| 16226 | nativeCallRinging: boolean; | |
| 16660 | call: { | |
| 16661 | audioCurrentOutput: string; | |
| 16662 | audioOutputs: any[]; | |
| 16663 | speakerOn: boolean; | |
| 16664 | isLoading: boolean; | |
| 16665 | nativeCallRinging: boolean; | |
| 16666 | screenVideoTrackId: any; | |
| 16667 | }; | |
| 16227 | 16668 | deviceIsOnSilentMode: boolean; |
| 16228 | 16669 | onboarding: { |
| 16229 | 16670 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16275,11 +16716,73 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16275 | 16716 | appActive: boolean; |
| 16276 | 16717 | shareContent: any[]; |
| 16277 | 16718 | shareRoomId: string; |
| 16278 | callAudioCurrentOutput: string; | |
| 16279 | callAudioOutputs: any[]; | |
| 16280 | callSpeakerOn: boolean; | |
| 16281 | isCallLoading: boolean; | |
| 16282 | nativeCallRinging: boolean; | |
| 16719 | call: { | |
| 16720 | audioCurrentOutput: string; | |
| 16721 | audioOutputs: any[]; | |
| 16722 | speakerOn: boolean; | |
| 16723 | isLoading: boolean; | |
| 16724 | nativeCallRinging: boolean; | |
| 16725 | screenVideoTrackId: any; | |
| 16726 | }; | |
| 16727 | deviceIsOnSilentMode: boolean; | |
| 16728 | onboarding: { | |
| 16729 | showWalkthroughTooltip: boolean; | |
| 16730 | walkthroughStep: number; | |
| 16731 | }; | |
| 16732 | appModal: { | |
| 16733 | showModal: boolean; | |
| 16734 | queue: any[]; | |
| 16735 | }; | |
| 16736 | appNavigator: { | |
| 16737 | currentRoute: string; | |
| 16738 | isMounted: boolean; | |
| 16739 | isInitialized: boolean; | |
| 16740 | }; | |
| 16741 | stats: { | |
| 16742 | showStats: boolean; | |
| 16743 | collapseStats: boolean; | |
| 16744 | statsExpanded: boolean; | |
| 16745 | statsVisible: boolean; | |
| 16746 | }; | |
| 16747 | bottomSheet: { | |
| 16748 | showBottomSheet: boolean; | |
| 16749 | sheetType: number; | |
| 16750 | }; | |
| 16751 | voiceMessage: { | |
| 16752 | currentSoundUri: string; | |
| 16753 | uri: string; | |
| 16754 | audioSamples: any[]; | |
| 16755 | duration: number; | |
| 16756 | isLocked: boolean; | |
| 16757 | isStopped: boolean; | |
| 16758 | isRecording: boolean; | |
| 16759 | }; | |
| 16760 | room: { | |
| 16761 | chatBarHeight: number; | |
| 16762 | isShowEmojiKeyboard: boolean; | |
| 16763 | isShowPhotoPicker: boolean; | |
| 16764 | isShowInputExtras: boolean; | |
| 16765 | }; | |
| 16766 | passcode: { | |
| 16767 | isAuthenticated: boolean; | |
| 16768 | }; | |
| 16769 | }>, action: { | |
| 16770 | payload: any; | |
| 16771 | type: string; | |
| 16772 | }) => void; | |
| 16773 | setUICallScreenVideoTrackId: (state: import("immer").WritableDraft<{ | |
| 16774 | appState: "init"; | |
| 16775 | appActive: boolean; | |
| 16776 | shareContent: any[]; | |
| 16777 | shareRoomId: string; | |
| 16778 | call: { | |
| 16779 | audioCurrentOutput: string; | |
| 16780 | audioOutputs: any[]; | |
| 16781 | speakerOn: boolean; | |
| 16782 | isLoading: boolean; | |
| 16783 | nativeCallRinging: boolean; | |
| 16784 | screenVideoTrackId: any; | |
| 16785 | }; | |
| 16283 | 16786 | deviceIsOnSilentMode: boolean; |
| 16284 | 16787 | onboarding: { |
| 16285 | 16788 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16331,11 +16834,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16331 | 16834 | appActive: boolean; |
| 16332 | 16835 | shareContent: any[]; |
| 16333 | 16836 | shareRoomId: string; |
| 16334 | callAudioCurrentOutput: string; | |
| 16335 | callAudioOutputs: any[]; | |
| 16336 | callSpeakerOn: boolean; | |
| 16337 | isCallLoading: boolean; | |
| 16338 | nativeCallRinging: boolean; | |
| 16837 | call: { | |
| 16838 | audioCurrentOutput: string; | |
| 16839 | audioOutputs: any[]; | |
| 16840 | speakerOn: boolean; | |
| 16841 | isLoading: boolean; | |
| 16842 | nativeCallRinging: boolean; | |
| 16843 | screenVideoTrackId: any; | |
| 16844 | }; | |
| 16339 | 16845 | deviceIsOnSilentMode: boolean; |
| 16340 | 16846 | onboarding: { |
| 16341 | 16847 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16384,11 +16890,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16384 | 16890 | appActive: boolean; |
| 16385 | 16891 | shareContent: any[]; |
| 16386 | 16892 | shareRoomId: string; |
| 16387 | callAudioCurrentOutput: string; | |
| 16388 | callAudioOutputs: any[]; | |
| 16389 | callSpeakerOn: boolean; | |
| 16390 | isCallLoading: boolean; | |
| 16391 | nativeCallRinging: boolean; | |
| 16893 | call: { | |
| 16894 | audioCurrentOutput: string; | |
| 16895 | audioOutputs: any[]; | |
| 16896 | speakerOn: boolean; | |
| 16897 | isLoading: boolean; | |
| 16898 | nativeCallRinging: boolean; | |
| 16899 | screenVideoTrackId: any; | |
| 16900 | }; | |
| 16392 | 16901 | deviceIsOnSilentMode: boolean; |
| 16393 | 16902 | onboarding: { |
| 16394 | 16903 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16437,11 +16946,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16437 | 16946 | appActive: boolean; |
| 16438 | 16947 | shareContent: any[]; |
| 16439 | 16948 | shareRoomId: string; |
| 16440 | callAudioCurrentOutput: string; | |
| 16441 | callAudioOutputs: any[]; | |
| 16442 | callSpeakerOn: boolean; | |
| 16443 | isCallLoading: boolean; | |
| 16444 | nativeCallRinging: boolean; | |
| 16949 | call: { | |
| 16950 | audioCurrentOutput: string; | |
| 16951 | audioOutputs: any[]; | |
| 16952 | speakerOn: boolean; | |
| 16953 | isLoading: boolean; | |
| 16954 | nativeCallRinging: boolean; | |
| 16955 | screenVideoTrackId: any; | |
| 16956 | }; | |
| 16445 | 16957 | deviceIsOnSilentMode: boolean; |
| 16446 | 16958 | onboarding: { |
| 16447 | 16959 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16493,11 +17005,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16493 | 17005 | appActive: boolean; |
| 16494 | 17006 | shareContent: any[]; |
| 16495 | 17007 | shareRoomId: string; |
| 16496 | callAudioCurrentOutput: string; | |
| 16497 | callAudioOutputs: any[]; | |
| 16498 | callSpeakerOn: boolean; | |
| 16499 | isCallLoading: boolean; | |
| 16500 | nativeCallRinging: boolean; | |
| 17008 | call: { | |
| 17009 | audioCurrentOutput: string; | |
| 17010 | audioOutputs: any[]; | |
| 17011 | speakerOn: boolean; | |
| 17012 | isLoading: boolean; | |
| 17013 | nativeCallRinging: boolean; | |
| 17014 | screenVideoTrackId: any; | |
| 17015 | }; | |
| 16501 | 17016 | deviceIsOnSilentMode: boolean; |
| 16502 | 17017 | onboarding: { |
| 16503 | 17018 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16549,11 +17064,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16549 | 17064 | appActive: boolean; |
| 16550 | 17065 | shareContent: any[]; |
| 16551 | 17066 | shareRoomId: string; |
| 16552 | callAudioCurrentOutput: string; | |
| 16553 | callAudioOutputs: any[]; | |
| 16554 | callSpeakerOn: boolean; | |
| 16555 | isCallLoading: boolean; | |
| 16556 | nativeCallRinging: boolean; | |
| 17067 | call: { | |
| 17068 | audioCurrentOutput: string; | |
| 17069 | audioOutputs: any[]; | |
| 17070 | speakerOn: boolean; | |
| 17071 | isLoading: boolean; | |
| 17072 | nativeCallRinging: boolean; | |
| 17073 | screenVideoTrackId: any; | |
| 17074 | }; | |
| 16557 | 17075 | deviceIsOnSilentMode: boolean; |
| 16558 | 17076 | onboarding: { |
| 16559 | 17077 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16602,11 +17120,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16602 | 17120 | appActive: boolean; |
| 16603 | 17121 | shareContent: any[]; |
| 16604 | 17122 | shareRoomId: string; |
| 16605 | callAudioCurrentOutput: string; | |
| 16606 | callAudioOutputs: any[]; | |
| 16607 | callSpeakerOn: boolean; | |
| 16608 | isCallLoading: boolean; | |
| 16609 | nativeCallRinging: boolean; | |
| 17123 | call: { | |
| 17124 | audioCurrentOutput: string; | |
| 17125 | audioOutputs: any[]; | |
| 17126 | speakerOn: boolean; | |
| 17127 | isLoading: boolean; | |
| 17128 | nativeCallRinging: boolean; | |
| 17129 | screenVideoTrackId: any; | |
| 17130 | }; | |
| 16610 | 17131 | deviceIsOnSilentMode: boolean; |
| 16611 | 17132 | onboarding: { |
| 16612 | 17133 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16655,11 +17176,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16655 | 17176 | appActive: boolean; |
| 16656 | 17177 | shareContent: any[]; |
| 16657 | 17178 | shareRoomId: string; |
| 16658 | callAudioCurrentOutput: string; | |
| 16659 | callAudioOutputs: any[]; | |
| 16660 | callSpeakerOn: boolean; | |
| 16661 | isCallLoading: boolean; | |
| 16662 | nativeCallRinging: boolean; | |
| 17179 | call: { | |
| 17180 | audioCurrentOutput: string; | |
| 17181 | audioOutputs: any[]; | |
| 17182 | speakerOn: boolean; | |
| 17183 | isLoading: boolean; | |
| 17184 | nativeCallRinging: boolean; | |
| 17185 | screenVideoTrackId: any; | |
| 17186 | }; | |
| 16663 | 17187 | deviceIsOnSilentMode: boolean; |
| 16664 | 17188 | onboarding: { |
| 16665 | 17189 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16711,11 +17235,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16711 | 17235 | appActive: boolean; |
| 16712 | 17236 | shareContent: any[]; |
| 16713 | 17237 | shareRoomId: string; |
| 16714 | callAudioCurrentOutput: string; | |
| 16715 | callAudioOutputs: any[]; | |
| 16716 | callSpeakerOn: boolean; | |
| 16717 | isCallLoading: boolean; | |
| 16718 | nativeCallRinging: boolean; | |
| 17238 | call: { | |
| 17239 | audioCurrentOutput: string; | |
| 17240 | audioOutputs: any[]; | |
| 17241 | speakerOn: boolean; | |
| 17242 | isLoading: boolean; | |
| 17243 | nativeCallRinging: boolean; | |
| 17244 | screenVideoTrackId: any; | |
| 17245 | }; | |
| 16719 | 17246 | deviceIsOnSilentMode: boolean; |
| 16720 | 17247 | onboarding: { |
| 16721 | 17248 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16767,11 +17294,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16767 | 17294 | appActive: boolean; |
| 16768 | 17295 | shareContent: any[]; |
| 16769 | 17296 | shareRoomId: string; |
| 16770 | callAudioCurrentOutput: string; | |
| 16771 | callAudioOutputs: any[]; | |
| 16772 | callSpeakerOn: boolean; | |
| 16773 | isCallLoading: boolean; | |
| 16774 | nativeCallRinging: boolean; | |
| 17297 | call: { | |
| 17298 | audioCurrentOutput: string; | |
| 17299 | audioOutputs: any[]; | |
| 17300 | speakerOn: boolean; | |
| 17301 | isLoading: boolean; | |
| 17302 | nativeCallRinging: boolean; | |
| 17303 | screenVideoTrackId: any; | |
| 17304 | }; | |
| 16775 | 17305 | deviceIsOnSilentMode: boolean; |
| 16776 | 17306 | onboarding: { |
| 16777 | 17307 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16823,11 +17353,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16823 | 17353 | appActive: boolean; |
| 16824 | 17354 | shareContent: any[]; |
| 16825 | 17355 | shareRoomId: string; |
| 16826 | callAudioCurrentOutput: string; | |
| 16827 | callAudioOutputs: any[]; | |
| 16828 | callSpeakerOn: boolean; | |
| 16829 | isCallLoading: boolean; | |
| 16830 | nativeCallRinging: boolean; | |
| 17356 | call: { | |
| 17357 | audioCurrentOutput: string; | |
| 17358 | audioOutputs: any[]; | |
| 17359 | speakerOn: boolean; | |
| 17360 | isLoading: boolean; | |
| 17361 | nativeCallRinging: boolean; | |
| 17362 | screenVideoTrackId: any; | |
| 17363 | }; | |
| 16831 | 17364 | deviceIsOnSilentMode: boolean; |
| 16832 | 17365 | onboarding: { |
| 16833 | 17366 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16879,11 +17412,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16879 | 17412 | appActive: boolean; |
| 16880 | 17413 | shareContent: any[]; |
| 16881 | 17414 | shareRoomId: string; |
| 16882 | callAudioCurrentOutput: string; | |
| 16883 | callAudioOutputs: any[]; | |
| 16884 | callSpeakerOn: boolean; | |
| 16885 | isCallLoading: boolean; | |
| 16886 | nativeCallRinging: boolean; | |
| 17415 | call: { | |
| 17416 | audioCurrentOutput: string; | |
| 17417 | audioOutputs: any[]; | |
| 17418 | speakerOn: boolean; | |
| 17419 | isLoading: boolean; | |
| 17420 | nativeCallRinging: boolean; | |
| 17421 | screenVideoTrackId: any; | |
| 17422 | }; | |
| 16887 | 17423 | deviceIsOnSilentMode: boolean; |
| 16888 | 17424 | onboarding: { |
| 16889 | 17425 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16935,11 +17471,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16935 | 17471 | appActive: boolean; |
| 16936 | 17472 | shareContent: any[]; |
| 16937 | 17473 | shareRoomId: string; |
| 16938 | callAudioCurrentOutput: string; | |
| 16939 | callAudioOutputs: any[]; | |
| 16940 | callSpeakerOn: boolean; | |
| 16941 | isCallLoading: boolean; | |
| 16942 | nativeCallRinging: boolean; | |
| 17474 | call: { | |
| 17475 | audioCurrentOutput: string; | |
| 17476 | audioOutputs: any[]; | |
| 17477 | speakerOn: boolean; | |
| 17478 | isLoading: boolean; | |
| 17479 | nativeCallRinging: boolean; | |
| 17480 | screenVideoTrackId: any; | |
| 17481 | }; | |
| 16943 | 17482 | deviceIsOnSilentMode: boolean; |
| 16944 | 17483 | onboarding: { |
| 16945 | 17484 | showWalkthroughTooltip: boolean; |
| … | … | @@ -16991,11 +17530,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 16991 | 17530 | appActive: boolean; |
| 16992 | 17531 | shareContent: any[]; |
| 16993 | 17532 | shareRoomId: string; |
| 16994 | callAudioCurrentOutput: string; | |
| 16995 | callAudioOutputs: any[]; | |
| 16996 | callSpeakerOn: boolean; | |
| 16997 | isCallLoading: boolean; | |
| 16998 | nativeCallRinging: boolean; | |
| 17533 | call: { | |
| 17534 | audioCurrentOutput: string; | |
| 17535 | audioOutputs: any[]; | |
| 17536 | speakerOn: boolean; | |
| 17537 | isLoading: boolean; | |
| 17538 | nativeCallRinging: boolean; | |
| 17539 | screenVideoTrackId: any; | |
| 17540 | }; | |
| 16999 | 17541 | deviceIsOnSilentMode: boolean; |
| 17000 | 17542 | onboarding: { |
| 17001 | 17543 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17047,11 +17589,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17047 | 17589 | appActive: boolean; |
| 17048 | 17590 | shareContent: any[]; |
| 17049 | 17591 | shareRoomId: string; |
| 17050 | callAudioCurrentOutput: string; | |
| 17051 | callAudioOutputs: any[]; | |
| 17052 | callSpeakerOn: boolean; | |
| 17053 | isCallLoading: boolean; | |
| 17054 | nativeCallRinging: boolean; | |
| 17592 | call: { | |
| 17593 | audioCurrentOutput: string; | |
| 17594 | audioOutputs: any[]; | |
| 17595 | speakerOn: boolean; | |
| 17596 | isLoading: boolean; | |
| 17597 | nativeCallRinging: boolean; | |
| 17598 | screenVideoTrackId: any; | |
| 17599 | }; | |
| 17055 | 17600 | deviceIsOnSilentMode: boolean; |
| 17056 | 17601 | onboarding: { |
| 17057 | 17602 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17103,11 +17648,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17103 | 17648 | appActive: boolean; |
| 17104 | 17649 | shareContent: any[]; |
| 17105 | 17650 | shareRoomId: string; |
| 17106 | callAudioCurrentOutput: string; | |
| 17107 | callAudioOutputs: any[]; | |
| 17108 | callSpeakerOn: boolean; | |
| 17109 | isCallLoading: boolean; | |
| 17110 | nativeCallRinging: boolean; | |
| 17651 | call: { | |
| 17652 | audioCurrentOutput: string; | |
| 17653 | audioOutputs: any[]; | |
| 17654 | speakerOn: boolean; | |
| 17655 | isLoading: boolean; | |
| 17656 | nativeCallRinging: boolean; | |
| 17657 | screenVideoTrackId: any; | |
| 17658 | }; | |
| 17111 | 17659 | deviceIsOnSilentMode: boolean; |
| 17112 | 17660 | onboarding: { |
| 17113 | 17661 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17159,11 +17707,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17159 | 17707 | appActive: boolean; |
| 17160 | 17708 | shareContent: any[]; |
| 17161 | 17709 | shareRoomId: string; |
| 17162 | callAudioCurrentOutput: string; | |
| 17163 | callAudioOutputs: any[]; | |
| 17164 | callSpeakerOn: boolean; | |
| 17165 | isCallLoading: boolean; | |
| 17166 | nativeCallRinging: boolean; | |
| 17710 | call: { | |
| 17711 | audioCurrentOutput: string; | |
| 17712 | audioOutputs: any[]; | |
| 17713 | speakerOn: boolean; | |
| 17714 | isLoading: boolean; | |
| 17715 | nativeCallRinging: boolean; | |
| 17716 | screenVideoTrackId: any; | |
| 17717 | }; | |
| 17167 | 17718 | deviceIsOnSilentMode: boolean; |
| 17168 | 17719 | onboarding: { |
| 17169 | 17720 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17215,11 +17766,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17215 | 17766 | appActive: boolean; |
| 17216 | 17767 | shareContent: any[]; |
| 17217 | 17768 | shareRoomId: string; |
| 17218 | callAudioCurrentOutput: string; | |
| 17219 | callAudioOutputs: any[]; | |
| 17220 | callSpeakerOn: boolean; | |
| 17221 | isCallLoading: boolean; | |
| 17222 | nativeCallRinging: boolean; | |
| 17769 | call: { | |
| 17770 | audioCurrentOutput: string; | |
| 17771 | audioOutputs: any[]; | |
| 17772 | speakerOn: boolean; | |
| 17773 | isLoading: boolean; | |
| 17774 | nativeCallRinging: boolean; | |
| 17775 | screenVideoTrackId: any; | |
| 17776 | }; | |
| 17223 | 17777 | deviceIsOnSilentMode: boolean; |
| 17224 | 17778 | onboarding: { |
| 17225 | 17779 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17271,11 +17825,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17271 | 17825 | appActive: boolean; |
| 17272 | 17826 | shareContent: any[]; |
| 17273 | 17827 | shareRoomId: string; |
| 17274 | callAudioCurrentOutput: string; | |
| 17275 | callAudioOutputs: any[]; | |
| 17276 | callSpeakerOn: boolean; | |
| 17277 | isCallLoading: boolean; | |
| 17278 | nativeCallRinging: boolean; | |
| 17828 | call: { | |
| 17829 | audioCurrentOutput: string; | |
| 17830 | audioOutputs: any[]; | |
| 17831 | speakerOn: boolean; | |
| 17832 | isLoading: boolean; | |
| 17833 | nativeCallRinging: boolean; | |
| 17834 | screenVideoTrackId: any; | |
| 17835 | }; | |
| 17279 | 17836 | deviceIsOnSilentMode: boolean; |
| 17280 | 17837 | onboarding: { |
| 17281 | 17838 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17327,11 +17884,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17327 | 17884 | appActive: boolean; |
| 17328 | 17885 | shareContent: any[]; |
| 17329 | 17886 | shareRoomId: string; |
| 17330 | callAudioCurrentOutput: string; | |
| 17331 | callAudioOutputs: any[]; | |
| 17332 | callSpeakerOn: boolean; | |
| 17333 | isCallLoading: boolean; | |
| 17334 | nativeCallRinging: boolean; | |
| 17887 | call: { | |
| 17888 | audioCurrentOutput: string; | |
| 17889 | audioOutputs: any[]; | |
| 17890 | speakerOn: boolean; | |
| 17891 | isLoading: boolean; | |
| 17892 | nativeCallRinging: boolean; | |
| 17893 | screenVideoTrackId: any; | |
| 17894 | }; | |
| 17335 | 17895 | deviceIsOnSilentMode: boolean; |
| 17336 | 17896 | onboarding: { |
| 17337 | 17897 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17383,11 +17943,14 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17383 | 17943 | appActive: boolean; |
| 17384 | 17944 | shareContent: any[]; |
| 17385 | 17945 | shareRoomId: string; |
| 17386 | callAudioCurrentOutput: string; | |
| 17387 | callAudioOutputs: any[]; | |
| 17388 | callSpeakerOn: boolean; | |
| 17389 | isCallLoading: boolean; | |
| 17390 | nativeCallRinging: boolean; | |
| 17946 | call: { | |
| 17947 | audioCurrentOutput: string; | |
| 17948 | audioOutputs: any[]; | |
| 17949 | speakerOn: boolean; | |
| 17950 | isLoading: boolean; | |
| 17951 | nativeCallRinging: boolean; | |
| 17952 | screenVideoTrackId: any; | |
| 17953 | }; | |
| 17391 | 17954 | deviceIsOnSilentMode: boolean; |
| 17392 | 17955 | onboarding: { |
| 17393 | 17956 | showWalkthroughTooltip: boolean; |
| … | … | @@ -17442,6 +18005,7 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17442 | 18005 | export function getUICallSpeaker(state: any): any; |
| 17443 | 18006 | export function getUIIsCallLoading(state: any): any; |
| 17444 | 18007 | export function getUINativeCallRinging(state: any): any; |
| 18008 | export function getUIScreenVideoTrackId(state: any): any; | |
| 17445 | 18009 | export function getUIShareContent(state: any): any; |
| 17446 | 18010 | export function getUIShareRoomId(state: any): any; |
| 17447 | 18011 | export function getUIPushNotificationPermissionsGranted(state: any): any; |
| … | … | @@ -17508,6 +18072,7 @@ declare module "store/ui-mobile/ui.reducer" { |
| 17508 | 18072 | export const setUIIsCallLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "ui-mobile/setUIIsCallLoading">; |
| 17509 | 18073 | export const setUIUserAuthenticationStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "ui-mobile/setUIUserAuthenticationStatus">; |
| 17510 | 18074 | export const setUINativeCallRinging: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "ui-mobile/setUINativeCallRinging">; |
| 18075 | export const setUICallScreenVideoTrackId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "ui-mobile/setUICallScreenVideoTrackId">; | |
| 17511 | 18076 | } |
| 17512 | 18077 | declare module "store/ui-mobile/ui.action" { |
| 17513 | 18078 | /** @type {ActionCreatorWithoutPayload} */ |
| … | … | @@ -18096,128 +18661,6 @@ declare module "store/app/index" { |
| 18096 | 18661 | export * from "store/app/saga/app-call.saga"; |
| 18097 | 18662 | export * from "store/app/saga/mobile-room-notifications.saga"; |
| 18098 | 18663 | } |
| 18099 | declare module "store/network/network.constants" { | |
| 18100 | export namespace NETWORK_CONFIG { | |
| 18101 | let NETWORK_UPDATE_DURATION: number; | |
| 18102 | } | |
| 18103 | export namespace NETWORK_STATUS { | |
| 18104 | let ONLINE: "online"; | |
| 18105 | let OFFLINE: "offline"; | |
| 18106 | let TRICKY: "tricky"; | |
| 18107 | let UNKNOWN: "unknown"; | |
| 18108 | } | |
| 18109 | export type NetworkStatusData = { | |
| 18110 | host: string; | |
| 18111 | port: number; | |
| 18112 | online: boolean; | |
| 18113 | degraded: boolean; | |
| 18114 | loaded: boolean; | |
| 18115 | connections: number; | |
| 18116 | peers: string[]; | |
| 18117 | }; | |
| 18118 | export type NetworkSettingsValues = { | |
| 18119 | concurrency: number; | |
| 18120 | maxWindow: number; | |
| 18121 | randomPunchInterval: number; | |
| 18122 | connectionKeepAlive: number; | |
| 18123 | }; | |
| 18124 | export type NetworkSettings = { | |
| 18125 | default: NetworkSettingsValues; | |
| 18126 | values: NetworkSettingsValues; | |
| 18127 | isCustom: boolean; | |
| 18128 | isLoaded: boolean; | |
| 18129 | }; | |
| 18130 | export type NetworkConfig = typeof NETWORK_CONFIG; | |
| 18131 | export type NetworkState = { | |
| 18132 | config: NetworkConfig; | |
| 18133 | status: NetworkStatusData; | |
| 18134 | settings: NetworkSettings; | |
| 18135 | }; | |
| 18136 | export type NetworkStatus = (typeof NETWORK_STATUS)[keyof typeof NETWORK_STATUS]; | |
| 18137 | } | |
| 18138 | declare module "store/network/network.model" { | |
| 18139 | export function calcNetworkStatus(data: NetworkStatusData): "unknown" | "online" | "offline" | "tricky"; | |
| 18140 | export function isNetworkStatusChanged(a: NetworkStatusData, b: NetworkStatusData): boolean; | |
| 18141 | import type { NetworkStatusData } from "store/network/network.constants"; | |
| 18142 | } | |
| 18143 | declare module "store/network/network.reducer" { | |
| 18144 | export const NETWORK_STATE_KEY: "network"; | |
| 18145 | /** @type {NetworkState} */ | |
| 18146 | export const NETWORK_INITIAL_STATE: NetworkState; | |
| 18147 | export const networkSlice: import("@reduxjs/toolkit").Slice<NetworkState, { | |
| 18148 | setNetworkData: (state: import("immer").WritableDraft<NetworkState>, { payload: { host, port, online, degraded, connections, peers, loaded, }, }: { | |
| 18149 | payload: any; | |
| 18150 | type: string; | |
| 18151 | }) => void; | |
| 18152 | setNetworkSettingsDefault: (state: import("immer").WritableDraft<NetworkState>, { payload: { concurrency, maxWindow, randomPunchInterval, connectionKeepAlive, }, }: { | |
| 18153 | payload: any; | |
| 18154 | type: string; | |
| 18155 | }) => void; | |
| 18156 | setNetworkSettings: (state: import("immer").WritableDraft<NetworkState>, { payload: { concurrency, maxWindow, randomPunchInterval, connectionKeepAlive, isLoaded, }, }: { | |
| 18157 | payload: any; | |
| 18158 | type: string; | |
| 18159 | }) => void; | |
| 18160 | setNetworkSettingsIsCustom: (state: import("immer").WritableDraft<NetworkState>, { payload }: { | |
| 18161 | payload: any; | |
| 18162 | type: string; | |
| 18163 | }) => void; | |
| 18164 | resetNetworkSettings: (state: import("immer").WritableDraft<NetworkState>) => void; | |
| 18165 | }, "network", "network", import("@reduxjs/toolkit").SliceSelectors<NetworkState>>; | |
| 18166 | export function getNetworkState(state: any): NetworkState; | |
| 18167 | export function getNetworkConfig(state: any): { | |
| 18168 | NETWORK_UPDATE_DURATION: number; | |
| 18169 | }; | |
| 18170 | export function getNetworkStatusState(state: any): NetworkStatusData; | |
| 18171 | export function getNetworkIp(state: any): string; | |
| 18172 | export function getNetworkPort(state: any): number; | |
| 18173 | export function getNetworkLoaded(state: any): boolean; | |
| 18174 | export function getNetworkOnline(state: any): boolean; | |
| 18175 | export function getNetworkDegraded(state: any): boolean; | |
| 18176 | export function getNetworkPeerCount(state: any): number; | |
| 18177 | export function getNetworkPeers(state: any): string[]; | |
| 18178 | export function getNetworkSettings(state: any): import("store/network").NetworkSettings; | |
| 18179 | export function getNetworkSettingsDefault(state: any): NetworkSettingsValues; | |
| 18180 | export function getNetworkSettingsValues(state: any): NetworkSettingsValues; | |
| 18181 | export function getNetworkSettingsLoading(state: any): boolean; | |
| 18182 | export const getNetworkSettingsIsCustom: ((state: any) => boolean) & { | |
| 18183 | clearCache: () => void; | |
| 18184 | resultsCount: () => number; | |
| 18185 | resetResultsCount: () => void; | |
| 18186 | } & { | |
| 18187 | resultFunc: (resultFuncArgs_0: import("store/network").NetworkSettings) => boolean; | |
| 18188 | memoizedResultFunc: ((resultFuncArgs_0: import("store/network").NetworkSettings) => boolean) & { | |
| 18189 | clearCache: () => void; | |
| 18190 | resultsCount: () => number; | |
| 18191 | resetResultsCount: () => void; | |
| 18192 | }; | |
| 18193 | lastResult: () => boolean; | |
| 18194 | dependencies: [(state: any) => import("store/network").NetworkSettings]; | |
| 18195 | recomputations: () => number; | |
| 18196 | resetRecomputations: () => void; | |
| 18197 | dependencyRecomputations: () => number; | |
| 18198 | resetDependencyRecomputations: () => void; | |
| 18199 | } & { | |
| 18200 | memoize: typeof import("reselect").weakMapMemoize; | |
| 18201 | argsMemoize: typeof import("reselect").weakMapMemoize; | |
| 18202 | }; | |
| 18203 | export function getNetworkStatus(state: any): "unknown" | "online" | "offline" | "tricky"; | |
| 18204 | export const setNetworkData: ActionCreatorWithPayload<any, "network/setNetworkData">; | |
| 18205 | export const setNetworkSettings: ActionCreatorWithPayload<any, "network/setNetworkSettings">; | |
| 18206 | export const setNetworkSettingsDefault: ActionCreatorWithPayload<any, "network/setNetworkSettingsDefault">; | |
| 18207 | export const setNetworkSettingsIsCustom: ActionCreatorWithPayload<any, "network/setNetworkSettingsIsCustom">; | |
| 18208 | export const resetNetworkSettings: ActionCreatorWithoutPayload<"network/resetNetworkSettings">; | |
| 18209 | export const getAppInitialState: () => NetworkState; | |
| 18210 | export const appReducer: import("redux").Reducer<NetworkState>; | |
| 18211 | /** @type {ActionCreatorWithoutPayload} */ | |
| 18212 | export const loadNetworkSettings: ActionCreatorWithoutPayload; | |
| 18213 | /** @type {ActionCreatorWithPayload<NetworkSettingsValues, 'network/update-settings'>} */ | |
| 18214 | export const updateNetworkSettings: ActionCreatorWithPayload<NetworkSettingsValues, "network/update-settings">; | |
| 18215 | import type { NetworkState } from "store/network/network.constants"; | |
| 18216 | import type { NetworkStatusData } from "store/network/network.constants"; | |
| 18217 | import type { NetworkSettingsValues } from "store/network/network.constants"; | |
| 18218 | import type { ActionCreatorWithPayload } from "@reduxjs/toolkit"; | |
| 18219 | import type { ActionCreatorWithoutPayload } from "@reduxjs/toolkit"; | |
| 18220 | } | |
| 18221 | 18664 | declare module "store/network/network.saga" { |
| 18222 | 18665 | export function networkStatusSaga(): Generator<Generator<any, any, any> | import("redux-saga/effects").CancelEffect | import("redux-saga/effects").PutEffect<{ |
| 18223 | 18666 | payload: any; |
| … | … | @@ -18342,7 +18785,6 @@ declare module "store/debug/debug.reducer" { |
| 18342 | 18785 | * @prop {boolean} suspendDisabled |
| 18343 | 18786 | * @prop {DebugFlag[]} flags |
| 18344 | 18787 | * @prop {AuditState} audit |
| 18345 | * @prop {string} profileVersion | |
| 18346 | 18788 | */ |
| 18347 | 18789 | export const DEBUG_STATE_KEY: "debug"; |
| 18348 | 18790 | /** @type {DebugState} */ |
| … | … | @@ -18385,12 +18827,6 @@ declare module "store/debug/debug.reducer" { |
| 18385 | 18827 | * @param {PayloadAction<boolean>} action |
| 18386 | 18828 | */ |
| 18387 | 18829 | setSuspendDisabled: (state: DebugState, { payload }: PayloadAction<boolean>) => void; |
| 18388 | /** | |
| 18389 | * | |
| 18390 | * @param {DebugState} state | |
| 18391 | * @param {PayloadAction<string>} param | |
| 18392 | */ | |
| 18393 | setProfileVersion: (state: DebugState, { payload }: PayloadAction<string>) => void; | |
| 18394 | 18830 | /** |
| 18395 | 18831 | * @param {DebugState} state |
| 18396 | 18832 | */ |
| … | … | @@ -18411,7 +18847,6 @@ declare module "store/debug/debug.reducer" { |
| 18411 | 18847 | export function getIsOffline(state: any): boolean; |
| 18412 | 18848 | export function getDebugFlags(state: any): DebugFlag[]; |
| 18413 | 18849 | export function getAuditResult(state: any): AuditState; |
| 18414 | export function getProfileVersion(state: any): string; | |
| 18415 | 18850 | export function getLocalDbCompact(state: any): LocalDbCompactState; |
| 18416 | 18851 | export function getIsLocalDbCompacting(state: any): boolean; |
| 18417 | 18852 | export function getLocalDbCompactSuccess(state: any): boolean; |
| … | … | @@ -18424,7 +18859,6 @@ declare module "store/debug/debug.reducer" { |
| 18424 | 18859 | export const setStartAudit: ActionCreatorWithoutPayload<"debug/setStartAudit">; |
| 18425 | 18860 | export const setAuditReport: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<AuditResponse, "debug/setAuditReport">; |
| 18426 | 18861 | export const setAuditError: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<string, "debug/setAuditError">; |
| 18427 | export const setProfileVersion: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<string, "debug/setProfileVersion">; | |
| 18428 | 18862 | export const setLocalDbCompacting: ActionCreatorWithoutPayload<"debug/setLocalDbCompacting">; |
| 18429 | 18863 | export const setLocalDbCompactError: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<string, "debug/setLocalDbCompactError">; |
| 18430 | 18864 | export const setLocalDbCompactSuccess: ActionCreatorWithoutPayload<"debug/setLocalDbCompactSuccess">; |
| … | … | @@ -18444,8 +18878,6 @@ declare module "store/debug/debug.reducer" { |
| 18444 | 18878 | export const startLocalDbCompact: ActionCreatorWithoutPayload<"debug/start-local-db-compact">; |
| 18445 | 18879 | /** @type {ActionCreatorWithoutPayload<'debug/upgrade-private-profile'>} */ |
| 18446 | 18880 | export const upgradePrivateProfile: ActionCreatorWithoutPayload<"debug/upgrade-private-profile">; |
| 18447 | /** @type {ActionCreatorWithPayload<boolean, 'debug/subscribe-profile-version-cmd'>} */ | |
| 18448 | export const subscribeProfileVersionCmd: ActionCreatorWithPayload<boolean, "debug/subscribe-profile-version-cmd">; | |
| 18449 | 18881 | export type UpdateDebugFlagPayload = { |
| 18450 | 18882 | key: string; |
| 18451 | 18883 | value: boolean; |
| … | … | @@ -18485,7 +18917,6 @@ declare module "store/debug/debug.reducer" { |
| 18485 | 18917 | suspendDisabled: boolean; |
| 18486 | 18918 | flags: DebugFlag[]; |
| 18487 | 18919 | audit: AuditState; |
| 18488 | profileVersion: string; | |
| 18489 | 18920 | }; |
| 18490 | 18921 | import type { PayloadAction } from "@reduxjs/toolkit"; |
| 18491 | 18922 | import type { ActionCreatorWithoutPayload } from "@reduxjs/toolkit"; |
| … | … | @@ -19509,15 +19940,7 @@ declare module "store/debug/debug.saga" { |
| 19509 | 19940 | onError: any; |
| 19510 | 19941 | } & { |
| 19511 | 19942 | consoleWarn: any; |
| 19512 | }> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").PutEffect<{ | |
| 19513 | payload: any; | |
| 19514 | type: "identity/setPrivateProfileVersion"; | |
| 19515 | }>, void, { | |
| 19516 | version: any; | |
| 19517 | }>; | |
| 19518 | export function subscribeProfileVersionSaga({ payload: startSubscription }: { | |
| 19519 | payload: any; | |
| 19520 | }): Generator<Generator<any, void, unknown> | import("redux-saga/effects").SelectEffect, void, unknown>; | |
| 19943 | }> | import("redux-saga/effects").SelectEffect, void, unknown>; | |
| 19521 | 19944 | export function debugMobileSaga(): Generator<import("redux-saga/effects").ForkEffect<Generator<Generator<any, any, any> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").TakeEffect | import("redux-saga/effects").PutEffect<{ |
| 19522 | 19945 | payload: boolean; |
| 19523 | 19946 | type: "debug/setSuspendDisabled"; |
| … | … | @@ -20182,6 +20605,7 @@ declare module "store/desktop" { |
| 20182 | 20605 | activeCalls: any; |
| 20183 | 20606 | activeCallMemberIds: any; |
| 20184 | 20607 | mediaBySwarmId: {}; |
| 20608 | connectedMemberIds: {}; | |
| 20185 | 20609 | peersCounter: {}; |
| 20186 | 20610 | showConfirmLeave: boolean; |
| 20187 | 20611 | showAutoEndPopup: boolean; |
| … | … | @@ -20575,11 +20999,14 @@ declare module "store/mobile" { |
| 20575 | 20999 | appActive: boolean; |
| 20576 | 21000 | shareContent: any[]; |
| 20577 | 21001 | shareRoomId: string; |
| 20578 | callAudioCurrentOutput: string; | |
| 20579 | callAudioOutputs: any[]; | |
| 20580 | callSpeakerOn: boolean; | |
| 20581 | isCallLoading: boolean; | |
| 20582 | nativeCallRinging: boolean; | |
| 21002 | call: { | |
| 21003 | audioCurrentOutput: string; | |
| 21004 | audioOutputs: any[]; | |
| 21005 | speakerOn: boolean; | |
| 21006 | isLoading: boolean; | |
| 21007 | nativeCallRinging: boolean; | |
| 21008 | screenVideoTrackId: any; | |
| 21009 | }; | |
| 20583 | 21010 | deviceIsOnSilentMode: boolean; |
| 20584 | 21011 | onboarding: { |
| 20585 | 21012 | showWalkthroughTooltip: boolean; |
| … | … | @@ -20717,11 +21144,14 @@ declare module "store/mobile" { |
| 20717 | 21144 | appActive: boolean; |
| 20718 | 21145 | shareContent: any[]; |
| 20719 | 21146 | shareRoomId: string; |
| 20720 | callAudioCurrentOutput: string; | |
| 20721 | callAudioOutputs: any[]; | |
| 20722 | callSpeakerOn: boolean; | |
| 20723 | isCallLoading: boolean; | |
| 20724 | nativeCallRinging: boolean; | |
| 21147 | call: { | |
| 21148 | audioCurrentOutput: string; | |
| 21149 | audioOutputs: any[]; | |
| 21150 | speakerOn: boolean; | |
| 21151 | isLoading: boolean; | |
| 21152 | nativeCallRinging: boolean; | |
| 21153 | screenVideoTrackId: any; | |
| 21154 | }; | |
| 20725 | 21155 | deviceIsOnSilentMode: boolean; |
| 20726 | 21156 | onboarding: { |
| 20727 | 21157 | showWalkthroughTooltip: boolean; |
| … | … | @@ -20798,6 +21228,7 @@ declare module "store/mobile" { |
| 20798 | 21228 | activeCalls: any; |
| 20799 | 21229 | activeCallMemberIds: any; |
| 20800 | 21230 | mediaBySwarmId: {}; |
| 21231 | connectedMemberIds: {}; | |
| 20801 | 21232 | peersCounter: {}; |
| 20802 | 21233 | showConfirmLeave: boolean; |
| 20803 | 21234 | showAutoEndPopup: boolean; |
| … | … | @@ -20882,6 +21313,22 @@ declare module "store/ui-mobile/ui-call.saga" { |
| 20882 | 21313 | webRTC: any; |
| 20883 | 21314 | localeManager: any; |
| 20884 | 21315 | }>; |
| 21316 | export function screenStreamUpdateSaga(action: any): Generator<Generator<import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").PutEffect<{ | |
| 21317 | payload: any; | |
| 21318 | type: string; | |
| 21319 | }> | Generator<import("redux-saga/effects").CallEffect<any>, Error, any>, void, { | |
| 21320 | isTest: any; | |
| 21321 | onError: any; | |
| 21322 | } & { | |
| 21323 | consoleWarn: any; | |
| 21324 | }> | import("redux-saga/effects").SelectEffect | import("redux-saga/effects").PutEffect<{ | |
| 21325 | payload: any; | |
| 21326 | type: "ui-mobile/setUICallScreenVideoTrackId"; | |
| 21327 | }>, void, unknown>; | |
| 21328 | export function screenStreamRemoveSaga(action: any): Generator<import("redux-saga/effects").PutEffect<{ | |
| 21329 | payload: any; | |
| 21330 | type: "ui-mobile/setUICallScreenVideoTrackId"; | |
| 21331 | }>, void, unknown>; | |
| 20885 | 21332 | export function uiCallSaga(): Generator<import("redux-saga/effects").ForkEffect<never>, void, unknown>; |
| 20886 | 21333 | export const MAX_ACTIVE_CALL_WAIT: 20000; |
| 20887 | 21334 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Manage member", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Max pins reached.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "ي", |
| 1114 | 1115 | "your-node-socket:8080": "مقبس العقدة الخاص بك:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Manage member", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manuelle Einrichtung", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Max. Pins erreicht.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "j", |
| 1114 | 1115 | "your-node-socket:8080": "Ihr-Node-Socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Administrar miembro", |
| 457 | 457 | "Manage messages, files, and settings": "Administra mensajes, archivos y configuraciones", |
| 458 | 458 | "Manual setup": "Configuración manual", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Petición concurrente máxima por cliente", |
| 460 | 461 | "Max pins reached.": "Máximo de mensajes anclados.", |
| 461 | 462 | "Max window for congestion": "Ventana máx para la congestión", |
| … | … | @@ -617,7 +618,7 @@ |
| 617 | 618 | "QR code copied.": "Código QR copiado.", |
| 618 | 619 | "Quality": "Calidad", |
| 619 | 620 | "Quick setup": "Configuración rápida", |
| 620 | "RESET APP": "RESTABLECER LA APP", | |
| 621 | "RESET APP": "RESET APP", | |
| 621 | 622 | "Random Holepunch interval (ms)": "Intervalo aleatorio de perforación (ms)", |
| 622 | 623 | "Re-enter your seed phrase": "Vuelve a introducir tu frase semilla", |
| 623 | 624 | "ReSync private profile": "ReSync perfil privado", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "fueron retirados del grupo.", |
| 1113 | 1114 | "y": "a", |
| 1114 | 1115 | "your-node-socket:8080": "tu-nodo-enchufe:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Gérer le membre", |
| 457 | 457 | "Manage messages, files, and settings": "Gérer les messages, les fichiers et les paramètres", |
| 458 | 458 | "Manual setup": "Configuration manuelle", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Nombre maximal de demandes simultanées par client", |
| 460 | 461 | "Max pins reached.": "Nombre maximal de messages épinglés atteint.", |
| 461 | 462 | "Max window for congestion": "Fenêtre maximale pour la congestion", |
| … | … | @@ -617,7 +618,7 @@ |
| 617 | 618 | "QR code copied.": "Code QR copié.", |
| 618 | 619 | "Quality": "Qualité", |
| 619 | 620 | "Quick setup": "Configuration rapide", |
| 620 | "RESET APP": "RÉINITIALISER L'APPLICATION", | |
| 621 | "RESET APP": "RESET APP", | |
| 621 | 622 | "Random Holepunch interval (ms)": "Intervalle Holepunch aléatoire (ms)", |
| 622 | 623 | "Re-enter your seed phrase": "Saisissez à nouveau votre phrase de récupération", |
| 623 | 624 | "ReSync private profile": "Resynchroniser le profil privé", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "ont été retiré(e)s du groupe.", |
| 1113 | 1114 | "y": "a", |
| 1114 | 1115 | "your-node-socket:8080": "socket-du-nœud:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "मेंबर मैनेज करें", |
| 457 | 457 | "Manage messages, files, and settings": "मैसेज, फ़ाइलें और सेटिंग मैनेज करें", |
| 458 | 458 | "Manual setup": "मैनुअल सेटअप", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "एक क्लाइंट के लिए एक साथ अधिकतम रिक्वेस्ट सीमा", |
| 460 | 461 | "Max pins reached.": "पिन करने की लिमिट पूरी हुई।", |
| 461 | 462 | "Max window for congestion": "व्यस्तता की अधिकतम विंडो", |
| … | … | @@ -617,7 +618,7 @@ |
| 617 | 618 | "QR code copied.": "QR कोड कॉपी किया।", |
| 618 | 619 | "Quality": "क्वलिटी", |
| 619 | 620 | "Quick setup": "क्विक सेटअप", |
| 620 | "RESET APP": "ऐप रीसेट करें", | |
| 621 | "RESET APP": "RESET APP", | |
| 621 | 622 | "Random Holepunch interval (ms)": "रैंडम Holepunch इंटरवल (ms)", |
| 622 | 623 | "Re-enter your seed phrase": "अपना सीड फ़्रेज़ दोबारा डालें", |
| 623 | 624 | "ReSync private profile": "प्राइवेट प्रोफ़ाइल री-सिंक करें", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "को ग्रुप से हटा दिया गया है।", |
| 1113 | 1114 | "y": "साल", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Gestire i membri", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Raggiunto il numero massimo di messaggi fissati.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "y", |
| 1114 | 1115 | "your-node-socket:8080": "il tuo nodo-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "მართე წევრი", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": " pin-ების მაქსიმუმი მიღწეულია. ", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "Y", |
| 1114 | 1115 | "your-node-socket:8080": "" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Manage member", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Max pins reached.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "j", |
| 1114 | 1115 | "your-node-socket:8080": "uw-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Manage member", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Máximo de Chats Fixados atingido.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "a", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Gestionați membrul", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Numărul maxim de pini atins.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "y", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -7,7 +7,7 @@ |
| 7 | 7 | "${0} messages blocked": "Заблокированных сообщений: ${0}", |
| 8 | 8 | "(edited)": "(изменено)", |
| 9 | 9 | "+10 new messages": "+10 новых сообщений", |
| 10 | "0 characters left": "0 characters left", | |
| 10 | "0 characters left": "Осталось 0 символов", | |
| 11 | 11 | "1 audio": "1 аудио", |
| 12 | 12 | "1 file": "1 файл", |
| 13 | 13 | "1 image": "1 изображение", |
| … | … | @@ -15,7 +15,7 @@ |
| 15 | 15 | "1 video": "1 видео", |
| 16 | 16 | "1 voice message": "1 голосовое сообщение", |
| 17 | 17 | "3 characters min.": "Не менее 3 символов.", |
| 18 | "A ${0} invitation link is copied to clipboard. ${1}": "Ссылка-приглашение ${0} скопирована в буфер обмена. ${1}", | |
| 18 | "A ${0} invitation link is copied to clipboard. ${1}": "Пригласительна ссылка ${0} скопирована в буфер обмена. ${1}", | |
| 19 | 19 | "A few simple rules:": "Несколько простых правил:", |
| 20 | 20 | "A few steps below to help you getting started.": "Ниже приведены несколько шагов, которые помогут вам начать.", |
| 21 | 21 | "A group for larger communities and organizations, in which you can create Live space, make announcements and more.": "Группа для крупных сообществ и организаций, в которой вы можете создавать live-пространство, делать объявления и многое другое.", |
| … | … | @@ -44,7 +44,7 @@ |
| 44 | 44 | "Admin dashboard": "Панель администратора", |
| 45 | 45 | "Admin invites are single-use only": "Приглашения для администратора являются одноразовыми", |
| 46 | 46 | "Admin role": "Роль администратора", |
| 47 | "Admins must be frequently online": "Admins must be frequently online", | |
| 47 | "Admins must be frequently online": "Администраторы должны часто быть в сети", | |
| 48 | 48 | "Advanced": "Расширенные", |
| 49 | 49 | "Advanced Settings": "Расширенные настройки", |
| 50 | 50 | "Alert type": "Тип оповещения", |
| … | … | @@ -61,7 +61,7 @@ |
| 61 | 61 | "Amount": "Сумма", |
| 62 | 62 | "An error has occurred and the recovery was not completed. Ensure you have the correct recovery phrase and try again later.": "Произошла ошибка. Восстановление не было завершено. Убедитесь, что вы используете правильную фразу для восстановления, и повторите попытку позже.", |
| 63 | 63 | "Animals & Nature": "Животные и природа", |
| 64 | "Any members can start a call.": "Any members can start a call.", | |
| 64 | "Any members can start a call.": "Любой участник может начать звонок.", | |
| 65 | 65 | "App will restart in:": "Приложение перезапустится через:", |
| 66 | 66 | "Apply changes": "Применить изменения", |
| 67 | 67 | "Approve it there to link this device.": "Одобрите его там, чтобы привязать это устройство.", |
| … | … | @@ -71,7 +71,7 @@ |
| 71 | 71 | "Are you sure you want to remove this device?": "Вы действительно хотите удалить это устройство?", |
| 72 | 72 | "Are you sure you want to reset Keet?": "Вы действительно хотите сбросить Keet?", |
| 73 | 73 | "As Group Admin, you help keep the group active and organized.": "Как администратор группы, вы помогаете поддерживать активность и организованность группы.", |
| 74 | "Assign role": "Assign role", | |
| 74 | "Assign role": "Назначить роль", | |
| 75 | 75 | "Assigning admin role": "Назначение роли администратора", |
| 76 | 76 | "Attach a file": "Прикрепить файл", |
| 77 | 77 | "Audio": "Аудио", |
| … | … | @@ -105,8 +105,8 @@ |
| 105 | 105 | "Call ringtone": "Рингтон", |
| 106 | 106 | "Calls are disabled in this group.": "В этой группе отключены звонки.", |
| 107 | 107 | "Camera": "Камера", |
| 108 | "Can't send message with files as file sharing has been disabled by group admin.": "Can't send message with files as file sharing has been disabled by group admin.", | |
| 109 | "Can't send message with links as link sharing has been disabled by group admin.": "Can't send message with links as link sharing has been disabled by group admin.", | |
| 108 | "Can't send message with files as file sharing has been disabled by group admin.": "Невозможно отправить файл, отправка медиа отключена администратором.", | |
| 109 | "Can't send message with links as link sharing has been disabled by group admin.": "Невозможно отправить ссылку, отправка ссылок отключена администратором.", | |
| 110 | 110 | "Cancel": "Отмена", |
| 111 | 111 | "Cancel request": "Отменить запрос", |
| 112 | 112 | "Caution: You're generating a secure invitation to sync another device with your profile. Treat this invite with the same confidentiality as your password.": "Внимание! Вы генерируете безопасное приглашение для синхронизации другого устройства с вашим профилем. Соблюдайте для этого приглашения тот же уровень конфиденциальности, что и для пароля.", |
| … | … | @@ -115,7 +115,7 @@ |
| 115 | 115 | "Chat": "Чат", |
| 116 | 116 | "Chat Options": "Опции чата", |
| 117 | 117 | "Chat privately with friends and family, start video calls, transfer money and much more!": "Приватно общайтесь с друзьями и семьей, совершайте видеозвонки, переводите деньги и не только!", |
| 118 | "Chat settings": "Chat settings", | |
| 118 | "Chat settings": "Настройки чата", | |
| 119 | 119 | "Checking availability...": "Проверяем доступность…", |
| 120 | 120 | "Choose": "Выберите", |
| 121 | 121 | "Choose Photo": "Выберите фотографию", |
| … | … | @@ -123,7 +123,7 @@ |
| 123 | 123 | "Choose a unique username so others can find you more easily. This is optional and can be changed anytime.": "Выберите уникальное имя пользователя, чтобы другие пользователи могли легко найти вас. Это необязательно. Вы можете изменить имя в любое время.", |
| 124 | 124 | "Choose a username so your friends can easily find you and start chatting!": "Выберите имя пользователя, чтобы ваши друзья могли легко найти вас и начать общение!", |
| 125 | 125 | "Choose what you want to do:": "Выберите, что вы хотите сделать:", |
| 126 | "Choose your default skin tone": "Choose your default skin tone", | |
| 126 | "Choose your default skin tone": "Выберите тон кожи по умолчанию", | |
| 127 | 127 | "Clear": "Очистить", |
| 128 | 128 | "Clear Cache": "Очистить кэш", |
| 129 | 129 | "Clear Search": "Очистить поиск", |
| … | … | @@ -132,10 +132,10 @@ |
| 132 | 132 | "Clear cache": "Очистить кэш", |
| 133 | 133 | "Clear cached file": "Очистить кэшированный файл", |
| 134 | 134 | "Clear cached files": "Очистить кэшированные файлы", |
| 135 | "Clear files": "Clear files", | |
| 136 | "Clear old local files": "Clear old local files", | |
| 137 | "Clear old local files?": "Clear old local files?", | |
| 138 | "Cleared ${0} of old local files": "Cleared ${0} of old local files", | |
| 135 | "Clear files": "Очистить файлы", | |
| 136 | "Clear old local files": "Очистить устаревшие файлы", | |
| 137 | "Clear old local files?": "Очистить устаревшие файлы на данном устройстве?", | |
| 138 | "Cleared ${0} of old local files": "Удалено ${0} устаревших файлов", | |
| 139 | 139 | "Click the button bellow to upgrade this group to the latest version.": "Нажмите на кнопку ниже, чтобы обновить эту группу до последней версии.", |
| 140 | 140 | "Click to copy information": "Нажмите, чтобы скопировать информацию", |
| 141 | 141 | "Click to copy username": "Нажмите, чтобы скопировать имя пользователя", |
| … | … | @@ -185,7 +185,7 @@ |
| 185 | 185 | "Create a unique username to make it easy for other members to find you and send chat requests or group invitations.": "Создайте уникальное имя пользователя, чтобы другие пользователи могли легко найти вас и отправить запрос на общение в чате или приглашение в группу.", |
| 186 | 186 | "Create group chat": "Создать групповой чат", |
| 187 | 187 | "Create your recovery seed phrase": "Создайте сид-фразу для восстановления", |
| 188 | "Current": "Current", | |
| 188 | "Current": "Текущий", | |
| 189 | 189 | "Current group base length": "Текущая длина базового состояния группы", |
| 190 | 190 | "Current group hash": "Текущий хеш группы", |
| 191 | 191 | "Currently, to make a member a group Admin or upgrade a Moderator to Admin, create an Admin invite from the invite tab.": "Чтобы сделать участника администратором группы или повысить статус модератора до администратора, создайте приглашение на роль администратора на вкладке \"Приглашения\".", |
| … | … | @@ -217,7 +217,7 @@ |
| 217 | 217 | "Device removal failed": "Не удалось удалить устройство", |
| 218 | 218 | "Device removed from your profile": "Устройство удалено из вашего профиля", |
| 219 | 219 | "Device removed successfully": "Устройство успешно удалено", |
| 220 | "Device storage may take a moment to update": "Device storage may take a moment to update", | |
| 220 | "Device storage may take a moment to update": "Обновление хранилища может занять некоторое время", | |
| 221 | 221 | "Device successfully linked!": "Устройство успешно привязано!", |
| 222 | 222 | "Direct Messaging:": "Личные сообщения:", |
| 223 | 223 | "Disable rate limit": "Отключить ограничение частоты", |
| … | … | @@ -242,8 +242,8 @@ |
| 242 | 242 | "Editing message": "Редактирование сообщения", |
| 243 | 243 | "Emoji": "Эмодзи", |
| 244 | 244 | "Enable calls": "Разрешить звонки", |
| 245 | "Enable file sharing": "Enable file sharing", | |
| 246 | "Enable link sharing": "Enable link sharing", | |
| 245 | "Enable file sharing": "Разрешить отправку файлов", | |
| 246 | "Enable link sharing": "Разрешить отправку ссылок", | |
| 247 | 247 | "Enable messages": "Разрешить сообщения", |
| 248 | 248 | "Enable toggle permission for Keet": "Разрешить переключение разрешений для Keet", |
| 249 | 249 | "End call for all?": "Завершить звонок для всех?", |
| … | … | @@ -281,10 +281,10 @@ |
| 281 | 281 | "File details": "Сведения о файле", |
| 282 | 282 | "File loading is queued, and will automatically show when loading is complete": "Загрузка файла поставлена в очередь, файл будет автоматически показан после завершения загрузки", |
| 283 | 283 | "File removed from Keet (${0})": "Файл удален мз Keet (${0})", |
| 284 | "File sharing has been disabled by group admin.": "File sharing has been disabled by group admin.", | |
| 285 | "File sharing has been disabled for this group by group admin.": "File sharing has been disabled for this group by group admin.", | |
| 284 | "File sharing has been disabled by group admin.": "Отправка файлов отключена администратором группы.", | |
| 285 | "File sharing has been disabled for this group by group admin.": "Отправка ссылок отключена администратором группы.", | |
| 286 | 286 | "Filepath": "Путь к файлу", |
| 287 | "Files you haven’t used in the last 7 days will be removed from this device. You can download them later again.": "Files you haven’t used in the last 7 days will be removed from this device. You can download them later again.", | |
| 287 | "Files you haven’t used in the last 7 days will be removed from this device. You can download them later again.": "Файлы, которые вы не использовали более 7 дней, будут удалены с этого устройства. Вы сможете снова загрузить их позже.", | |
| 288 | 288 | "Find out what exciting features and updates await you in this version.": "Узнайте, какие интересные функции и обновления ждут вас в этой версии.", |
| 289 | 289 | "Finish": "Завершить", |
| 290 | 290 | "Finish Setup": "Завершить настройку", |
| … | … | @@ -320,7 +320,7 @@ |
| 320 | 320 | "Group Stats": "Статистика группы", |
| 321 | 321 | "Group invitation created": "Приглашение в группу создано", |
| 322 | 322 | "Group name": "Название группы", |
| 323 | "Group settings": "Group settings", | |
| 323 | "Group settings": "Параметры группы", | |
| 324 | 324 | "Group type": "Тип группы", |
| 325 | 325 | "Group version": "Версия группы", |
| 326 | 326 | "Have you tried these options first?": "Вы уже попробовали эти варианты?", |
| … | … | @@ -337,7 +337,7 @@ |
| 337 | 337 | "I already use Keet ": "Я уже использую Keet ", |
| 338 | 338 | "I have read and agree to the Keet Application Terms of Use and understand that Quick setup generates and stores my recovery phrase on my device, while Manual setup requires me to manage it myself.": "Я прочитала(-а) Условия использования приложения Keet, соглашаюсь с ними и понимаю, что при быстрой настройке фраза для восстановления генерируется и хранится на устройстве, а при ручной настройке я самостоятельно создаю фразу для восстановления и управляю ею.", |
| 339 | 339 | "I lost access to my device": "У меня нет доступа к моему устройству", |
| 340 | "I understand all data will be erased and irreversible without my recovery phrase.": "Я понимаю, что если я не укажу фразу для восстановления, все данные будут стерты без возможности восстановления.", | |
| 340 | "I understand all data will be erased and irreversible without my recovery phrase.": "Я понимаю, что все данные будут стерты с данного устройства и не смогут быть восстановлены без сид-фразы.", | |
| 341 | 341 | "I understand that if I continue without a recovery phrase, all chats on this device will be merged.": "Я понимаю, что если я продолжу без фразы для восстановления, все чаты на этом устройстве будут объединены.", |
| 342 | 342 | "I want to be called..": "Я хочу, чтобы мне звонили..", |
| 343 | 343 | "I want to be searchable as..": "Я хочу, чтобы меня могли найти как..", |
| … | … | @@ -366,7 +366,7 @@ |
| 366 | 366 | "Information copied to clipboard.": "Информация скопирована в буфер обмена.", |
| 367 | 367 | "Input your recovery phrase": "Введите фразу для восстановления", |
| 368 | 368 | "Insert short message": "Вставьте короткое сообщение", |
| 369 | "Internal": "Internal", | |
| 369 | "Internal": "Внутренний", | |
| 370 | 370 | "Invalid attestation": "Недействительная аттестация", |
| 371 | 371 | "Invalid group command arguments": "Недопустимые аргументы команды группы", |
| 372 | 372 | "Invalid password": "Неправильный пароль", |
| … | … | @@ -447,7 +447,7 @@ |
| 447 | 447 | "Loading...": "Загрузка...", |
| 448 | 448 | "Low": "Низкое", |
| 449 | 449 | "Maintain a positive and respectful online atmosphere by overseeing and managing the group and its peers.": "Поддерживайте позитивную и уважительную атмосферу в сети, контролируя и управляя группой и ее участниками.", |
| 450 | "Make": "Make", | |
| 450 | "Make": "Сделать", | |
| 451 | 451 | "Make group admin": "Назначить администратором группы", |
| 452 | 452 | "Make group moderator": "Назначить модератором группы", |
| 453 | 453 | "Make sure you're in a secure location before viewing your recovery phrase:": "Прежде чем просматривать фразу для восстановления, убедитесь, что вы находитесь в безопасном месте:", |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Управление участником", |
| 457 | 457 | "Manage messages, files, and settings": "Управляйте сообщениями, файлами и настройками", |
| 458 | 458 | "Manual setup": "Ручная настройка", |
| 459 | "Mark as unread": "Пометить как непрочитанное", | |
| 459 | 460 | "Max concurrent request per client": "Максимальное количество одновременных запросов для одного клиента", |
| 460 | 461 | "Max pins reached.": "Закреплено максимальное количество сообщений.", |
| 461 | 462 | "Max window for congestion": "Максимальный размер окна перегрузки", |
| … | … | @@ -469,12 +470,12 @@ |
| 469 | 470 | "Message deleted": "Сообщение удалено", |
| 470 | 471 | "Message render error: ": "Ошибка воспроизведения сообщения: ", |
| 471 | 472 | "Message requests": "Запросы на сообщение", |
| 472 | "Messages are disabled in this ${0}": "В группе \"${0}\" отключена функция сообщений", | |
| 473 | "Messages are disabled in this ${0}": "Сообщения в ${0} отключены", | |
| 473 | 474 | "Microphone": "Микрофон", |
| 474 | 475 | "Migrating Keet database...": "Выполняем перенос базы данных Keet…", |
| 475 | 476 | "Minimize": "Минимизировать", |
| 476 | 477 | "Mod": "Модератор", |
| 477 | "Moderation": "Moderation", | |
| 478 | "Moderation": "Модерация", | |
| 478 | 479 | "Moderator": "Модератор", |
| 479 | 480 | "Moderator and indexer groups": "Группы модератора и индексатора", |
| 480 | 481 | "Moderator groups": "Группы модератора", |
| … | … | @@ -486,8 +487,8 @@ |
| 486 | 487 | "Move indexer to this device": "Переместите индексатор на это устройство", |
| 487 | 488 | "Multiple chats detected": "Обнаружено несколько чатов", |
| 488 | 489 | "Must be at least 3 characters and include at least 1 letter and 1 number. Only letters, numbers, and underscores are allowed.": "Должен содержать не менее 3 символов и включать как минимум 1 букву и 1 цифру. Можно использовать только буквы, цифры и символ подчеркивания.", |
| 489 | "Mute": "Запретить отправку сообщений", | |
| 490 | "Mute member": "Запретить участнику отправку сообщений", | |
| 490 | "Mute": "Микрофон", | |
| 491 | "Mute member": "Запретить отправку сообщений", | |
| 491 | 492 | "Muted member": "Этот участник не может отправлять сообщения", |
| 492 | 493 | "My devices": "Мои устройства", |
| 493 | 494 | "Name": "Имя", |
| … | … | @@ -502,7 +503,7 @@ |
| 502 | 503 | "News": "Новости", |
| 503 | 504 | "Next": "Далее", |
| 504 | 505 | "No audio files": "Нет аудиофайлов", |
| 505 | "No emojis": "No emojis", | |
| 506 | "No emojis": "Нет эмодзи", | |
| 506 | 507 | "No error logs found": "Журналы ошибок не найдены", |
| 507 | 508 | "No expiry": "Без срока годности", |
| 508 | 509 | "No favorites yet": "В избранном пока пусто", |
| … | … | @@ -530,7 +531,7 @@ |
| 530 | 531 | "Not a valid image file.": "Недопустимый файл изображения.", |
| 531 | 532 | "Not now": "Не сейчас", |
| 532 | 533 | "Note that Keet cannot see the content of any communications.": "Напоминаем что Keet не имеет доступа к содержимому сообщений.", |
| 533 | "Nothing to clear now. All files have been used in the last 7 days": "Nothing to clear now. All files have been used in the last 7 days", | |
| 534 | "Nothing to clear now. All files have been used in the last 7 days": "Нечего удалять. Все файлы были использованы за последние 7 дней", | |
| 534 | 535 | "Notification sound": "Звук уведомлений", |
| 535 | 536 | "Notifications": "Уведомления", |
| 536 | 537 | "Notifications Off": "Уведомления выключены", |
| … | … | @@ -550,7 +551,7 @@ |
| 550 | 551 | "Once removed that device will no longer access this profile and you will need to link devices to restore your groups on that device.": "Удалив это устройство, вы больше не сможете использовать его для доступа к этому профилю. Чтобы восстановить группы на этом устройстве, вам нужно будет выполнить привязку устройства.", |
| 551 | 552 | "One or more fields below failed to validate. Check if they are correct and try again.": "Одно или несколько полей ниже не прошли проверку. Убедитесь, что в них содержится правильная информация, и повторите попытку.", |
| 552 | 553 | "Only Latin letters (a–z), numbers and underscores are allowed": "Допускаются только латинские буквы (a–z), цифры и символ подчеркивания", |
| 553 | "Only one person can share their screen at a time.": "Only one person can share their screen at a time.", | |
| 554 | "Only one person can share their screen at a time.": "Только один участник может выполнять демонстрацию экрана.", | |
| 554 | 555 | "Only when mentioned": "Только при упоминании", |
| 555 | 556 | "Oops! The group invitation you're trying to use has expired. To join the group, please request a new invitation from the group host.": "Упс! Срок действия приглашения в группу, которое вы пытаетесь использовать, истек. Чтобы присоединиться к группе, запросите новое приглашение у ведущего группы.", |
| 556 | 557 | "Oops! You seem to be offline.": "Ой! Кажется, вы не в сети.", |
| … | … | @@ -617,7 +618,7 @@ |
| 617 | 618 | "QR code copied.": "QR-код скопирован.", |
| 618 | 619 | "Quality": "Качество", |
| 619 | 620 | "Quick setup": "Быстрая настройка", |
| 620 | "RESET APP": "СБРОСИТЬ ПРИЛОЖЕНИЕ", | |
| 621 | "RESET APP": "RESET APP", | |
| 621 | 622 | "Random Holepunch interval (ms)": "Случайный интервал Holepunch (мс)", |
| 622 | 623 | "Re-enter your seed phrase": "Введите свою сид-фразу еще раз", |
| 623 | 624 | "ReSync private profile": "Повторная синхронизация личного профиля", |
| … | … | @@ -640,7 +641,7 @@ |
| 640 | 641 | "Remove content": "Удалить содержимое", |
| 641 | 642 | "Remove device": "Удалить устройство", |
| 642 | 643 | "Remove favorite": "Удалить из избранного", |
| 643 | "Remove files saved on this device that you haven’t used in the last 7 days to free up space.": "Remove files saved on this device that you haven’t used in the last 7 days to free up space.", | |
| 644 | "Remove files saved on this device that you haven’t used in the last 7 days to free up space.": "Чтобы освободить место на данном устройстве, удалите файлы, которые вы не использовали в течение последних 7 дней.", | |
| 644 | 645 | "Remove member": "Удалить участника", |
| 645 | 646 | "Remove these files from your device? Others may be still able to see and load them. If other peers still have then in their devices, you’ll also be able to see and load them again.": "Удалить эти файлы с вашего устройства? Другие пользователи смогут по-прежнему просматривать и загружать их. Если эти файлы все еще есть на устройствах других пользователей, вы также сможете просмотреть и загрузить эти файлы.", |
| 646 | 647 | "Remove this file from your device? Others may be still able to see and load it. If other peers still have it in their devices, you’ll also be able to see and load it again.": "Удалить этот файл с вашего устройства? Другие пользователи смогут по-прежнему просматривать и загружать его. Если этот файл все еще есть на устройствах других пользователей, вы также сможете просмотреть и загрузить этот файл.", |
| … | … | @@ -680,7 +681,7 @@ |
| 680 | 681 | "Roles in Keet": "Роли в Keet", |
| 681 | 682 | "Rotate Writer": "Сменить узел записи", |
| 682 | 683 | "Same as above": "То же, что и выше", |
| 683 | "Same as moderator": "Same as moderator", | |
| 684 | "Same as moderator": "Те же, что и у модератора", | |
| 684 | 685 | "Save": "Сохранить", |
| 685 | 686 | "Save or write down the 24 secret words below and store them in a secure location. These words are essential for recovering your profile if you ever lose access to your device.": "Сохраните или запишите 24 секретных слова, приведенных ниже, и храните их в надежном месте. Эти слова необходимы для восстановления профиля, если вы потеряете доступ к устройству.", |
| 686 | 687 | "Save to files": "Сохранить в файлах", |
| … | … | @@ -689,7 +690,7 @@ |
| 689 | 690 | "Screen share permissions": "Разрешения на демонстрацию экрана", |
| 690 | 691 | "Scroll to latest message": "Прокрутить до последнего сообщения", |
| 691 | 692 | "Search contacts or groups": "Поиск контактов или групп", |
| 692 | "Search emojis": "Search emojis", | |
| 693 | "Search emojis": "Поиск эмодзи", | |
| 693 | 694 | "Search or join with a link": "Найти или присоединиться по ссылке", |
| 694 | 695 | "Search this chat": "Поиск по этому чату", |
| 695 | 696 | "Searching groups": "Поиск групп", |
| … | … | @@ -763,7 +764,7 @@ |
| 763 | 764 | "Show time stats": "Показать статистику времени", |
| 764 | 765 | "Shutting down": "Выключение", |
| 765 | 766 | "Simple Setup:": "Простая настройка:", |
| 766 | "Skin tone": "Skin tone", | |
| 767 | "Skin tone": "Тон кожи", | |
| 767 | 768 | "Skip": "Пропустить", |
| 768 | 769 | "Skip and do this later": "Пропустить и сделать это позже", |
| 769 | 770 | "Skip for now": "Пропустить", |
| … | … | @@ -810,7 +811,7 @@ |
| 810 | 811 | "The character limit is ${0}.": "Максимальное количество символов — ${0}.", |
| 811 | 812 | "The file has been cleared. Click to reload": "Файл очищен. Нажмите, чтобы перезагрузить.", |
| 812 | 813 | "The group performance is not optimal at the moment. Please tag an Admin to come online to enhance performance.": "Производительность группы в данный момент не оптимальна. Пожалуйста, отметьте администратора, чтобы он вошел в сеть для повышения производительности.", |
| 813 | "The link is not a valid link": "The link is not a valid link", | |
| 814 | "The link is not a valid link": "Ссылка недействительна", | |
| 814 | 815 | "The name does not conform to the requirements": "Имя не соответствует требованиям", |
| 815 | 816 | "The name is already taken": "Это имя уже используется", |
| 816 | 817 | "The registry already contains an entry for the name": "В реестре уже есть запись с таким именем", |
| … | … | @@ -830,7 +831,7 @@ |
| 830 | 831 | "This device was unlinked from your profile.\nTo use it again, you can sync your devices or create a new profile.": "Это устройство отвязано от вашего профиля.\nЧтобы использовать его снова, синхронизируйте устройства или создайте новый профиль.", |
| 831 | 832 | "This device’s QR code": "QR-код этого устройства", |
| 832 | 833 | "This file is not supported for preview": "Предварительный просмотр этого файла не поддерживается", |
| 833 | "This group chat is on an old version that no longer supports calls; please ask admins or moderators to come online and upgrade it.": "This group chat is on an old version that no longer supports calls; please ask admins or moderators to come online and upgrade it.", | |
| 834 | "This group chat is on an old version that no longer supports calls; please ask admins or moderators to come online and upgrade it.": "Звонки не поддерживаются в текущей версии группы. Попросите администраторов зайти в группу и, тем самым, обновить ее версию.", | |
| 834 | 835 | "This group is unindexed.": "Эта группа не индексируется.", |
| 835 | 836 | "This group is unindexed...": "Эта группа не индексируется…", |
| 836 | 837 | "This is a space to chat, share and connect. Let's make it a great place for everyone.": "Здесь можно общаться, делиться и заводить новые знакомства. Давайте сделаем это пространство комфортным для всех.", |
| … | … | @@ -841,7 +842,7 @@ |
| 841 | 842 | "This member will now be visible to others.": "Профиль этого участника теперь будут видеть другие участники.", |
| 842 | 843 | "This member won't be notified, and they can't send more requests unless you send them a message request.": "Пользователь не получит уведомление об этом. Он не сможет отправлять вам новые запросы до тех пор, пока вы не отправите ему запрос на сообщение.", |
| 843 | 844 | "This member's role will be downgraded to Moderator, giving them Moderator capabilities.": "Роль этого пользователя будет понижена до модератора. Пользователь сможет выполнять функции модератора.", |
| 844 | "This message contains links. Link sharing has been disabled by group admin": "This message contains links. Link sharing has been disabled by group admin", | |
| 845 | "This message contains links. Link sharing has been disabled by group admin": "Это сообщение содержит ссылки. Обмен ссылками отключен администратором группы", | |
| 845 | 846 | "This message was reported by users": "На это сообщение пожаловались пользователи", |
| 846 | 847 | "This might take a moment...": "Это может занять некоторое время...", |
| 847 | 848 | "This name has been reserved": "Это имя зарезервировано", |
| … | … | @@ -910,7 +911,7 @@ |
| 910 | 911 | "Unsupported file": "Неподдерживаемый файл", |
| 911 | 912 | "Update App": "Обновить", |
| 912 | 913 | "Update Group": "Обновить группу", |
| 913 | "Update Keet to enable calls.": "Update Keet to enable calls.", | |
| 914 | "Update Keet to enable calls.": "Обновите Keet, чтобы совершать звонки.", | |
| 914 | 915 | "Updating App": "Приложения обновляется", |
| 915 | 916 | "Updating your username...": "Обновление имени пользователя…", |
| 916 | 917 | "Upgrade Group": "Повысить уровень группы", |
| … | … | @@ -994,7 +995,7 @@ |
| 994 | 995 | "You can pin a maximum of ${0} messages. To pin this one, you need to unpin an older message.": "Максимальное количество сообщений, которые вы можете закрепить, — ${0}. Чтобы закрепить это сообщение, открепите более старое.", |
| 995 | 996 | "You can safely leave this conversation anytime.": "Вы можете покинуть этот разговор в любое время.", |
| 996 | 997 | "You can send more messages, which will be visible once your request has been accepted.": "Вы можете отправить больше сообщений. Пользователь увидит их, как только примет ваш запрос.", |
| 997 | "You can unmute them at any time in ": "Вы можете разрешить отправку сообщений этим участником в любое время здесь: ", | |
| 998 | "You can unmute them at any time in ": "Вы можете разрешить им отправку сообщений здесь: ", | |
| 998 | 999 | "You cannot reuse a previous used username.": "Повторно использовать ранее использованное имя пользователя нельзя.", |
| 999 | 1000 | "You don't have any transactions yet. Send or receive money and it will show here.": "У вас пока нет транзакций. Как только вы отправите или получите средства, вы увидите информацию о транзакции здесь.", |
| 1000 | 1001 | "You have been removed from the room": "Вас удалили из комнаты", |
| … | … | @@ -1010,7 +1011,7 @@ |
| 1010 | 1011 | "You will join the group automatically when ${0} is online.": "Вы присоединитесь к группе автоматически, как только ${0} появится в сети.", |
| 1011 | 1012 | "You're about to create an admin invite. Remember, a few active admins are better than many inactive ones. A stable majority of frequently online admins is key to a smooth chat group. Keep your admin invites limited for the best experience.": "Вы собираетесь создать приглашение для администратора. Помните, что несколько активных администраторов лучше, чем много неактивных. Стабильное присутствие в сети большинства администраторов — залог слаженной работы чат-группы. Для наилучшей эффективности приглашайте ограниченное количество администраторов.", |
| 1012 | 1013 | "You're offline...": "Вы не в сети…", |
| 1013 | "You've been muted by the group's admin due to inappropriate content.": "Администратор группы запретил вам отправлять сообщения, поскольку ваши сообщения содержали неприемлемый контент.", | |
| 1014 | "You've been muted by the group's admin due to inappropriate content.": "Администратор группы запретил вам отправлять сообщения, поскольку они содержали неприемлемый контент.", | |
| 1014 | 1015 | "Your Keet Profile": "Ваш профиль Keet", |
| 1015 | 1016 | "Your Keet profile is ready to go.": "Ваш профиль Keet готов к использованию.", |
| 1016 | 1017 | "Your device name can't have special characters and must be under ${0} characters.": "Имя вашего устройства не должно содержать специальных символов. Максимальное количество символов в имени — ${0}.", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "удалены из группы.", |
| 1113 | 1114 | "y": "гг", |
| 1114 | 1115 | "your-node-socket:8080": "сокет-вашего-узла: 8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Üyeyi yönet", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Maksimum sabitleme sayısına ulaşıldı.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "y", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Налаштування учасника", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Налаштувати вручну", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Досягнута максимальна кількість пінів.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -486,7 +487,7 @@ |
| 486 | 487 | "Move indexer to this device": "Move indexer to this device", |
| 487 | 488 | "Multiple chats detected": "Multiple chats detected", |
| 488 | 489 | "Must be at least 3 characters and include at least 1 letter and 1 number. Only letters, numbers, and underscores are allowed.": "Must be at least 3 characters and include at least 1 letter and 1 number. Only letters, numbers, and underscores are allowed.", |
| 489 | "Mute": "Вимкнути звук", | |
| 490 | "Mute": "Мікрофон", | |
| 490 | 491 | "Mute member": "Обмежити повідомлення від користувача", |
| 491 | 492 | "Muted member": "Muted member", |
| 492 | 493 | "My devices": "Мої пристрої", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "р", |
| 1114 | 1115 | "your-node-socket:8080": "сокет-вашего-вузла: 8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "Quản lý thành viên", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "Đã ghim ở mức tối đa.", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "y", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "管理成员", |
| 457 | 457 | "Manage messages, files, and settings": "管理消息、文件和设置", |
| 458 | 458 | "Manual setup": "手动设置", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "每个客户端的最大并发请求数", |
| 460 | 461 | "Max pins reached.": "达到最大固定数。", |
| 461 | 462 | "Max window for congestion": "拥堵的最大窗口", |
| … | … | @@ -617,7 +618,7 @@ |
| 617 | 618 | "QR code copied.": "二维码已复制。", |
| 618 | 619 | "Quality": "质量", |
| 619 | 620 | "Quick setup": "快速设置", |
| 620 | "RESET APP": "重置应用", | |
| 621 | "RESET APP": "RESET APP", | |
| 621 | 622 | "Random Holepunch interval (ms)": "随机打孔间隔 (ms)", |
| 622 | 623 | "Re-enter your seed phrase": "重新输入助记词", |
| 623 | 624 | "ReSync private profile": "重新同步不公开个人资料", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "已被移出群组。", |
| 1113 | 1114 | "y": "年", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -456,6 +456,7 @@ |
| 456 | 456 | "Manage member": "管理成員", |
| 457 | 457 | "Manage messages, files, and settings": "Manage messages, files, and settings", |
| 458 | 458 | "Manual setup": "Manual setup", |
| 459 | "Mark as unread": "Mark as unread", | |
| 459 | 460 | "Max concurrent request per client": "Max concurrent request per client", |
| 460 | 461 | "Max pins reached.": "已達最高釘選數。", |
| 461 | 462 | "Max window for congestion": "Max window for congestion", |
| … | … | @@ -1112,4 +1113,4 @@ |
| 1112 | 1113 | "were removed from the group.": "were removed from the group.", |
| 1113 | 1114 | "y": "年", |
| 1114 | 1115 | "your-node-socket:8080": "your-node-socket:8080" |
| 1115 | } | |
| 1116 | } |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-translations", |
| 3 | "version": "2.5.0", | |
| 3 | "version": "2.5.2", | |
| 4 | 4 | "type": "module", |
| 5 | 5 | "description": "Keet translations", |
| 6 | 6 | "main": "index.js", |
| … | … | @@ -0,0 +1 @@ |
| 1 | "prettier-config-holepunch" |
| … | … | @@ -1,12 +1 @@ |
| 1 | const e = require("hyperschema"), | |
| 2 | n = e.from("./spec/hyperschema"), | |
| 3 | t = n.namespace("keet-unreads") | |
| 4 | ;(t.register({ | |
| 5 | name: "unread-anchors", | |
| 6 | fields: [ | |
| 7 | { name: "timestamp", type: "uint" }, | |
| 8 | { name: "length", type: "uint" }, | |
| 9 | ], | |
| 10 | }), | |
| 11 | t.register({ name: "info", fields: [{ name: "updated", type: "uint" }] }), | |
| 12 | e.toDisk(n)) | |
| 1 | const e=require("hyperschema"),n=e.from("./spec/hyperschema"),t=n.namespace("keet-unreads");t.register({name:"unread-anchors",fields:[{name:"timestamp",type:"uint"},{name:"length",type:"uint"}]}),t.register({name:"info",fields:[{name:"updated",type:"uint"}]}),e.toDisk(n); |
| … | … | @@ -1,156 +1 @@ |
| 1 | const t = require("hyperbee2"), | |
| 2 | e = require("ready-resource"), | |
| 3 | s = require("b4a"), | |
| 4 | i = require("compact-encoding"), | |
| 5 | { getEncoding: n } = require("./spec/hyperschema"), | |
| 6 | a = s.from([0]), | |
| 7 | o = n("@keet-unreads/unread-anchors"), | |
| 8 | r = n("@keet-unreads/info"), | |
| 9 | h = 5e3, | |
| 10 | c = 2, | |
| 11 | l = 0 | |
| 12 | class u { | |
| 13 | constructor(t) { | |
| 14 | ;((this.unreads = t), (this.ops = [])) | |
| 15 | } | |
| 16 | tryPut(t, { timestamp: e = Date.now(), length: s = 0 }) { | |
| 17 | this.ops.push({ key: t, value: { timestamp: e, length: s } }) | |
| 18 | } | |
| 19 | tryDelete(t) { | |
| 20 | this.ops.push({ key: t, value: null }) | |
| 21 | } | |
| 22 | async flush() { | |
| 23 | if (!this.ops.length) return | |
| 24 | await this.unreads.ready() | |
| 25 | const t = await this.unreads._getHead(), | |
| 26 | e = this.unreads.db.write({ ...t, type: 0, timeout: h }) | |
| 27 | for (const { key: t, value: n } of this.ops) { | |
| 28 | const a = s.concat([s.from([1]), t]) | |
| 29 | n ? e.tryPut(a, i.encode(o, n)) : e.tryDelete(a) | |
| 30 | } | |
| 31 | ;(e.tryPut(a, i.encode(r, { updated: Date.now() })), await e.flush()) | |
| 32 | } | |
| 33 | } | |
| 34 | function d() { | |
| 35 | return null | |
| 36 | } | |
| 37 | module.exports = class extends e { | |
| 38 | constructor(e, s = [], i = {}) { | |
| 39 | super() | |
| 40 | const { | |
| 41 | encryptionKey: n, | |
| 42 | encryption: a = n ? { key: n } : null, | |
| 43 | name: o = "local-unread", | |
| 44 | local: r = e.get({ name: o, encryption: a }), | |
| 45 | blindPeering: h = null, | |
| 46 | target: c = null, | |
| 47 | } = i | |
| 48 | ;((this.store = e), | |
| 49 | (this.blindPeering = h), | |
| 50 | (this.target = c), | |
| 51 | (this.encryption = a), | |
| 52 | (this.keys = s.slice(0)), | |
| 53 | (this.local = r), | |
| 54 | (this.db = new t(this.store, { core: this.local, encryption: this.encryption, t: 5 })), | |
| 55 | (this.views = [])) | |
| 56 | } | |
| 57 | async addWriter(t) { | |
| 58 | if ((this.opened || (await this.ready()), s.equals(t, this.local.key))) return | |
| 59 | for (const e of this.keys) if (s.equals(e, t)) return | |
| 60 | this.keys.push(t) | |
| 61 | const e = this.db.checkout({ key: t, length: 0 }) | |
| 62 | ;(this.views.push(e), await this._initView(e)) | |
| 63 | } | |
| 64 | async removeWriter(t) { | |
| 65 | this.opened || (await this.ready()) | |
| 66 | for (let e = 0; e < this.keys.length; e++) { | |
| 67 | const i = this.keys[e], | |
| 68 | n = this.views[e] | |
| 69 | s.equals(i, t) && (this.keys.splice(e, 1), this.views.splice(e, 1), await n.close()) | |
| 70 | } | |
| 71 | } | |
| 72 | async _initView(t) { | |
| 73 | ;(await t.ready(), | |
| 74 | t.core.on("append", () => { | |
| 75 | ;(t.update(), this.emit("update"), t.core !== this.local && this.emit("remote-update")) | |
| 76 | }), | |
| 77 | t.update()) | |
| 78 | } | |
| 79 | async _open() { | |
| 80 | ;(await this.local.ready(), this.views.push(this.db)) | |
| 81 | const t = new Set([s.toString(this.db.core.key, "hex")]) | |
| 82 | for (const e of this.keys) { | |
| 83 | const i = s.toString(e, "hex") | |
| 84 | t.has(i) || (t.add(i), this.views.push(this.db.checkout({ key: e, length: 0 }))) | |
| 85 | } | |
| 86 | for (const t of this.views) await this._initView(t) | |
| 87 | if (this.blindPeering) { | |
| 88 | const t = await this.target | |
| 89 | this.blindPeering.addCoreBackground(this.local, { target: t, pick: 2 }) | |
| 90 | } | |
| 91 | } | |
| 92 | async _close() { | |
| 93 | for (let t = this.views.length - 1; t >= 0; t--) await this.views[t].close() | |
| 94 | ;(await this.local.close(), await this.store.close()) | |
| 95 | } | |
| 96 | write() { | |
| 97 | return new u(this) | |
| 98 | } | |
| 99 | async get(t) { | |
| 100 | this.opened || (await this.ready()) | |
| 101 | const e = s.concat([s.from([1]), t]), | |
| 102 | n = new Array(this.views.length) | |
| 103 | for (let t = 0; t < n.length; t++) { | |
| 104 | const s = this.views[t] | |
| 105 | n[t] = s.get(e, { timeout: h }).catch(d) | |
| 106 | } | |
| 107 | const a = await Promise.all(n) | |
| 108 | let r = null | |
| 109 | for (const t of a) { | |
| 110 | if (!t) continue | |
| 111 | const e = i.decode(o, t.value) | |
| 112 | ;(!r || r.timestamp < e.timestamp) && (r = e) | |
| 113 | } | |
| 114 | return r | |
| 115 | } | |
| 116 | async reset() { | |
| 117 | this.opened || (await this.ready()) | |
| 118 | const t = this.db.write({ key: this.local.key, length: 0, type: 0, timeout: h }) | |
| 119 | ;(t.tryPut(a, i.encode(r, { updated: Date.now() })), await t.flush()) | |
| 120 | } | |
| 121 | async put(t, { timestamp: e = Date.now(), length: n = 0 }) { | |
| 122 | this.opened || (await this.ready()) | |
| 123 | const c = await this._getHead(), | |
| 124 | l = await this.get(t) | |
| 125 | if (l && l.length >= n) return | |
| 126 | const u = this.db.write({ ...c, type: 0, timeout: h }), | |
| 127 | d = s.concat([s.from([1]), t]) | |
| 128 | ;(u.tryPut(d, i.encode(o, { timestamp: e, length: n })), | |
| 129 | u.tryPut(a, i.encode(r, { updated: Date.now() })), | |
| 130 | await u.flush()) | |
| 131 | } | |
| 132 | async delete(t) { | |
| 133 | this.opened || (await this.ready()) | |
| 134 | const e = await this._getHead() | |
| 135 | if (!(await this.get(t))) return | |
| 136 | const n = this.db.write({ ...e, type: 0, timeout: h }), | |
| 137 | o = s.concat([s.from([1]), t]) | |
| 138 | return (n.tryDelete(o), n.tryPut(a, i.encode(r, { updated: Date.now() })), n.flush()) | |
| 139 | } | |
| 140 | async _getHead() { | |
| 141 | const t = new Array(this.views.length) | |
| 142 | for (let e = 0; e < t.length; e++) { | |
| 143 | const s = this.views[e] | |
| 144 | t[e] = s.get(a, { timeout: h }).catch(d) | |
| 145 | } | |
| 146 | let e = null, | |
| 147 | s = { key: this.local.key, length: this.local.length } | |
| 148 | const n = await Promise.all(t) | |
| 149 | for (const t of n) { | |
| 150 | if (!t) continue | |
| 151 | const n = i.decode(r, t.value) | |
| 152 | ;(!e || e.updated < n.updated) && ((e = n), (s.key = t.core.key), (s.length = t.core.length)) | |
| 153 | } | |
| 154 | return s | |
| 155 | } | |
| 156 | } | |
| 1 | const t=require("hyperbee2"),e=require("ready-resource"),s=require("b4a"),i=require("compact-encoding"),{getEncoding:a}=require("./spec/hyperschema"),n=s.from([4]),o=a("@keet-unreads/unread-anchors"),r=a("@keet-unreads/info"),h=5e3,c=2,l=1;class u{constructor(t){this.unreads=t,this.ops=[]}tryPut(t,{timestamp:e=Date.now(),length:s=0}){this.ops.push({key:t,value:{timestamp:e,length:s}})}tryDelete(t){this.ops.push({key:t,value:null})}async flush(){if(!this.ops.length)return;await this.unreads.ready();const t=await this.unreads._getHead(),e=this.unreads.db.write({...t,type:1,timeout:h});for(const{key:t,value:a}of this.ops){const n=s.concat([s.from([1]),t]);a?e.tryPut(n,i.encode(o,a)):e.tryDelete(n)}e.tryPut(n,i.encode(r,{updated:Date.now()})),await e.flush()}}function d(){return null}module.exports=class extends e{constructor(e,s=[],i={}){super();const{encryptionKey:a,encryption:n=(a?{key:a}:null),name:o="local-unread",local:r=e.get({name:o,encryption:n}),blindPeering:h=null,target:c=null}=i;this.store=e,this.blindPeering=h,this.target=c,this.encryption=n,this.keys=s.slice(0),this.local=r,this.db=new t(this.store,{core:this.local,encryption:this.encryption,t:5}),this.views=[]}async addWriter(t){if(this.opened||await this.ready(),s.equals(t,this.local.key))return;for(const e of this.keys)if(s.equals(e,t))return;this.keys.push(t);const e=this.db.checkout({key:t,length:0});this.views.push(e),await this._initView(e)}async removeWriter(t){this.opened||await this.ready();for(let e=0;e<this.keys.length;e++){const i=this.keys[e],a=this.views[e];s.equals(i,t)&&(this.keys.splice(e,1),this.views.splice(e,1),await a.close())}}async _initView(t){await t.ready(),t.core.on("append",()=>{t.update(),this.emit("update"),t.core!==this.local&&this.emit("remote-update")}),t.update()}async _open(){await this.local.ready(),0===await this.db.compat()&&await this._reset(),this.views.push(this.db);const t=new Set([s.toString(this.db.core.key,"hex")]);for(const e of this.keys){const i=s.toString(e,"hex");t.has(i)||(t.add(i),this.views.push(this.db.checkout({key:e,length:0})))}for(const t of this.views)await this._initView(t);if(this.blindPeering){const t=await this.target;this.blindPeering.addCoreBackground(this.local,{target:t,pick:2})}}async _close(){for(let t=this.views.length-1;t>=0;t--)await this.views[t].close();await this.local.close(),await this.store.close()}write(){return new u(this)}async get(t){this.opened||await this.ready();const e=s.concat([s.from([1]),t]),a=new Array(this.views.length);for(let t=0;t<a.length;t++){const s=this.views[t];a[t]=s.get(e,{timeout:h}).catch(d)}const n=await Promise.all(a);let r=null;for(const t of n){if(!t)continue;const e=i.decode(o,t.value);(!r||r.timestamp<e.timestamp)&&(r=e)}return r}async reset(){this.opened||await this.ready(),await this._reset()}async _reset(){const t=this.db.write({key:this.local.key,length:0,type:1,timeout:h});t.tryPut(n,i.encode(r,{updated:Date.now()})),await t.flush()}async put(t,{timestamp:e=Date.now(),length:a=0}){this.opened||await this.ready();const c=await this._getHead(),l=await this.get(t);if(l&&l.length>=a)return;const u=this.db.write({...c,type:1,timeout:h}),d=s.concat([s.from([1]),t]);u.tryPut(d,i.encode(o,{timestamp:e,length:a})),u.tryPut(n,i.encode(r,{updated:Date.now()})),await u.flush()}async delete(t){this.opened||await this.ready();const e=await this._getHead();if(!await this.get(t))return;const a=this.db.write({...e,type:1,timeout:h}),o=s.concat([s.from([1]),t]);return a.tryDelete(o),a.tryPut(n,i.encode(r,{updated:Date.now()})),a.flush()}async _getHead(){const t=new Array(this.views.length);for(let e=0;e<t.length;e++){const s=this.views[e];t[e]=s.get(n,{timeout:h}).catch(d)}let e=null,s={key:this.local.key,length:0};const a=await Promise.all(t);for(const t of a){if(!t)continue;const a=i.decode(r,t.value);(!e||e.updated<a.updated)&&(e=a,s.key=t.core.key,s.length=t.core.length)}return s}}; |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "@holepunchto/keet-unread-anchors", |
| 3 | "version": "2.0.0", | |
| 3 | "version": "2.1.2", | |
| 4 | 4 | "description": "Unread anchors", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "dependencies": { |
| … | … | @@ -1,75 +1 @@ |
| 1 | const { c: e } = require("hyperschema/runtime"), | |
| 2 | n = 1 | |
| 3 | let t = 1 | |
| 4 | const d = { | |
| 5 | preencode(n, t) { | |
| 6 | ;(n.end++, | |
| 7 | t.timestamp && e.uint.preencode(n, t.timestamp), | |
| 8 | t.length && e.uint.preencode(n, t.length)) | |
| 9 | }, | |
| 10 | encode(n, t) { | |
| 11 | const d = (t.timestamp ? 1 : 0) | (t.length ? 2 : 0) | |
| 12 | ;(e.uint.encode(n, d), | |
| 13 | t.timestamp && e.uint.encode(n, t.timestamp), | |
| 14 | t.length && e.uint.encode(n, t.length)) | |
| 15 | }, | |
| 16 | decode(n) { | |
| 17 | const t = e.uint.decode(n) | |
| 18 | return { timestamp: 1 & t ? e.uint.decode(n) : 0, length: 2 & t ? e.uint.decode(n) : 0 } | |
| 19 | }, | |
| 20 | }, | |
| 21 | o = { | |
| 22 | preencode(n, t) { | |
| 23 | ;(n.end++, t.updated && e.uint.preencode(n, t.updated)) | |
| 24 | }, | |
| 25 | encode(n, t) { | |
| 26 | const d = t.updated ? 1 : 0 | |
| 27 | ;(e.uint.encode(n, d), t.updated && e.uint.encode(n, t.updated)) | |
| 28 | }, | |
| 29 | decode: (n) => ({ updated: 1 & e.uint.decode(n) ? e.uint.decode(n) : 0 }), | |
| 30 | } | |
| 31 | function c(e) { | |
| 32 | t = e | |
| 33 | } | |
| 34 | function u(n, d, o = 1) { | |
| 35 | return ((t = o), e.encode(s(n), d)) | |
| 36 | } | |
| 37 | function r(n, d, o = 1) { | |
| 38 | return ((t = o), e.decode(s(n), d)) | |
| 39 | } | |
| 40 | function i(e) { | |
| 41 | throw new Error("Enum not found " + e) | |
| 42 | } | |
| 43 | function s(e) { | |
| 44 | switch (e) { | |
| 45 | case "@keet-unreads/unread-anchors": | |
| 46 | return d | |
| 47 | case "@keet-unreads/info": | |
| 48 | return o | |
| 49 | default: | |
| 50 | throw new Error("Encoder not found " + e) | |
| 51 | } | |
| 52 | } | |
| 53 | function p(e, n = 1) { | |
| 54 | const d = s(e) | |
| 55 | return { | |
| 56 | preencode(e, o) { | |
| 57 | ;((t = n), d.preencode(e, o)) | |
| 58 | }, | |
| 59 | encode(e, o) { | |
| 60 | ;((t = n), d.encode(e, o)) | |
| 61 | }, | |
| 62 | decode: (e) => ((t = n), d.decode(e)), | |
| 63 | } | |
| 64 | } | |
| 65 | const a = p | |
| 66 | module.exports = { | |
| 67 | resolveStruct: a, | |
| 68 | getStruct: p, | |
| 69 | getEnum: i, | |
| 70 | getEncoding: s, | |
| 71 | encode: u, | |
| 72 | decode: r, | |
| 73 | setVersion: c, | |
| 74 | version: t, | |
| 75 | } | |
| 1 | const{c:e}=require("hyperschema/runtime"),n=1;let t=1;const d={preencode(n,t){n.end++,t.timestamp&&e.uint.preencode(n,t.timestamp),t.length&&e.uint.preencode(n,t.length)},encode(n,t){const d=(t.timestamp?1:0)|(t.length?2:0);e.uint.encode(n,d),t.timestamp&&e.uint.encode(n,t.timestamp),t.length&&e.uint.encode(n,t.length)},decode(n){const t=e.uint.decode(n);return{timestamp:1&t?e.uint.decode(n):0,length:2&t?e.uint.decode(n):0}}},o={preencode(n,t){n.end++,t.updated&&e.uint.preencode(n,t.updated)},encode(n,t){const d=t.updated?1:0;e.uint.encode(n,d),t.updated&&e.uint.encode(n,t.updated)},decode:n=>({updated:1&e.uint.decode(n)?e.uint.decode(n):0})};function c(e){t=e}function u(n,d,o=1){return t=o,e.encode(s(n),d)}function r(n,d,o=1){return t=o,e.decode(s(n),d)}function i(e){throw new Error("Enum not found "+e)}function s(e){switch(e){case"@keet-unreads/unread-anchors":return d;case"@keet-unreads/info":return o;default:throw new Error("Encoder not found "+e)}}function p(e,n=1){const d=s(e);return{preencode(e,o){t=n,d.preencode(e,o)},encode(e,o){t=n,d.encode(e,o)},decode:e=>(t=n,d.decode(e))}}const a=p;module.exports={resolveStruct:a,getStruct:p,getEnum:i,getEncoding:s,encode:u,decode:r,setVersion:c,version:t}; |
| … | … | @@ -1,32 +1 @@ |
| 1 | const e = require("./lib/schema-builder"), | |
| 2 | i = require("./lib/keet"), | |
| 3 | r = require("./lib/internal"), | |
| 4 | a = require("./lib/config"), | |
| 5 | l = require("./lib/chat"), | |
| 6 | c = require("./lib/members"), | |
| 7 | m = require("./lib/reactions"), | |
| 8 | b = require("./lib/invitations"), | |
| 9 | t = require("./lib/devices"), | |
| 10 | u = require("./lib/mailbox"), | |
| 11 | o = require("./lib/private-mailbox"), | |
| 12 | h = require("./lib/private-rooms"), | |
| 13 | n = require("./lib/private-devices"), | |
| 14 | q = require("./lib/plugins"), | |
| 15 | S = require("./lib/plugins/private-profile") | |
| 16 | module.exports = { | |
| 17 | SchemaBuilder: e, | |
| 18 | KeetSchema: i, | |
| 19 | InternalSchema: r, | |
| 20 | ConfigSchema: a, | |
| 21 | ChatSchema: l, | |
| 22 | MemberSchema: c, | |
| 23 | ReactionSchema: m, | |
| 24 | InvitationSchema: b, | |
| 25 | DeviceSchema: t, | |
| 26 | MailboxSchema: u, | |
| 27 | PluginSchema: q, | |
| 28 | PrivateProfileSchema: S, | |
| 29 | PrivateMailboxSchema: o, | |
| 30 | PrivateRoomSchema: h, | |
| 31 | PrivateDeviceSchema: n, | |
| 32 | } | |
| 1 | const e=require("./lib/schema-builder"),i=require("./lib/keet"),r=require("./lib/internal"),a=require("./lib/config"),l=require("./lib/chat"),c=require("./lib/members"),m=require("./lib/reactions"),b=require("./lib/invitations"),t=require("./lib/devices"),u=require("./lib/mailbox"),o=require("./lib/private-mailbox"),h=require("./lib/private-rooms"),n=require("./lib/private-devices"),q=require("./lib/plugins"),S=require("./lib/plugins/private-profile");module.exports={SchemaBuilder:e,KeetSchema:i,InternalSchema:r,ConfigSchema:a,ChatSchema:l,MemberSchema:c,ReactionSchema:m,InvitationSchema:b,DeviceSchema:t,MailboxSchema:u,PluginSchema:q,PrivateProfileSchema:S,PrivateMailboxSchema:o,PrivateRoomSchema:h,PrivateDeviceSchema:n}; |
| … | … | @@ -1,39 +1 @@ |
| 1 | const e = require("@holepunchto/hyperindex"), | |
| 2 | { IndexMemberId: n } = require("../members/messages"), | |
| 3 | { | |
| 4 | PRIMARY_THREAD_ID: t, | |
| 5 | IndexEventId: a, | |
| 6 | IndexMessageId: i, | |
| 7 | ClockIndexEncoding: o, | |
| 8 | EventIdValueEncoding: d, | |
| 9 | EventRecord: s, | |
| 10 | } = require("./messages"), | |
| 11 | { | |
| 12 | AddChatMessageOperation: r, | |
| 13 | UpdateChatMessageOperation: c, | |
| 14 | RemoveChatMessageOperation: p, | |
| 15 | AddGenericEventOperation: g, | |
| 16 | RemoveGenericEventOperation: E, | |
| 17 | AddFileOperation: v, | |
| 18 | RemoveFileOperation: R, | |
| 19 | } = require("./ops") | |
| 20 | module.exports = class { | |
| 21 | static Record = s | |
| 22 | static Messages = { PRIMARY_THREAD_ID: t } | |
| 23 | static Operations = { | |
| 24 | AddChatMessageOperation: r, | |
| 25 | UpdateChatMessageOperation: c, | |
| 26 | RemoveChatMessageOperation: p, | |
| 27 | AddGenericEventOperation: g, | |
| 28 | RemoveGenericEventOperation: E, | |
| 29 | AddFileOperation: v, | |
| 30 | RemoveFileOperation: R, | |
| 31 | } | |
| 32 | static ChatCollection = { keyEncoding: a, valueEncoding: s } | |
| 33 | static ChatIndexes = [ | |
| 34 | { keyEncoding: i, valueEncoding: d }, | |
| 35 | { keyEncoding: o, valueEncoding: d }, | |
| 36 | { keyEncoding: [n, ...a] }, | |
| 37 | { keyEncoding: [e.STRING, e.BUFFER, e.UINT] }, | |
| 38 | ] | |
| 39 | } | |
| 1 | const e=require("@holepunchto/hyperindex"),{IndexMemberId:n}=require("../members/messages"),{PRIMARY_THREAD_ID:t,IndexEventId:a,IndexMessageId:i,ClockIndexEncoding:o,EventIdValueEncoding:d,EventRecord:s}=require("./messages"),{AddChatMessageOperation:r,UpdateChatMessageOperation:c,RemoveChatMessageOperation:p,AddGenericEventOperation:g,RemoveGenericEventOperation:E,AddFileOperation:v,RemoveFileOperation:R}=require("./ops");module.exports=class{static Record=s;static Messages={PRIMARY_THREAD_ID:t};static Operations={AddChatMessageOperation:r,UpdateChatMessageOperation:c,RemoveChatMessageOperation:p,AddGenericEventOperation:g,RemoveGenericEventOperation:E,AddFileOperation:v,RemoveFileOperation:R};static ChatCollection={keyEncoding:a,valueEncoding:s};static ChatIndexes=[{keyEncoding:i,valueEncoding:d},{keyEncoding:o,valueEncoding:d},{keyEncoding:[n,...a]},{keyEncoding:[e.STRING,e.BUFFER,e.UINT]}]}; |
| … | … | @@ -1,445 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | d = require("@holepunchto/hyperindex"), | |
| 3 | { GENERIC_EVENTS: n, DISPLAY_TYPES: o } = require("@holepunchto/keet-core-api"), | |
| 4 | c = 0, | |
| 5 | t = [d.UINT, d.UINT], | |
| 6 | r = [d.BUFFER, d.UINT], | |
| 7 | i = e.fixed32, | |
| 8 | p = d.UINT, | |
| 9 | u = { | |
| 10 | preencode(d, n) { | |
| 11 | ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.seq)) | |
| 12 | }, | |
| 13 | encode(d, n) { | |
| 14 | ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.seq)) | |
| 15 | }, | |
| 16 | decode: (d) => ({ key: e.fixed32.decode(d), seq: e.uint.decode(d) }), | |
| 17 | }, | |
| 18 | s = { | |
| 19 | preencode(d, n) { | |
| 20 | ;(e.uint.preencode(d, n[0]), e.uint.preencode(d, n[1])) | |
| 21 | }, | |
| 22 | encode(d, n) { | |
| 23 | ;(e.uint.encode(d, n[0]), e.uint.encode(d, n[1])) | |
| 24 | }, | |
| 25 | decode: (d) => [e.uint.decode(d), e.uint.decode(d)], | |
| 26 | }, | |
| 27 | l = { | |
| 28 | TYPE: o.MENTION, | |
| 29 | preencode(e, d) { | |
| 30 | ;(i.preencode(e, d.memberId), I.preencode(e, d)) | |
| 31 | }, | |
| 32 | encode(e, d) { | |
| 33 | ;(i.encode(e, d.memberId), I.encode(e, d)) | |
| 34 | }, | |
| 35 | decode: (e) => ({ memberId: i.decode(e), ...I.decode(e) }), | |
| 36 | }, | |
| 37 | a = { | |
| 38 | preencode(d, n) { | |
| 39 | let o = 0 | |
| 40 | ;(n.title && (o |= 1), | |
| 41 | n.description && (o |= 2), | |
| 42 | n.file && (o |= 4), | |
| 43 | e.uint.preencode(d, o), | |
| 44 | e.string.preencode(d, n.url), | |
| 45 | n.title && e.string.preencode(d, n.title), | |
| 46 | n.description && e.string.preencode(d, n.description), | |
| 47 | n.file && L.preencode(d, n.file)) | |
| 48 | }, | |
| 49 | encode(d, n) { | |
| 50 | let o = 0 | |
| 51 | ;(n.title && (o |= 1), | |
| 52 | n.description && (o |= 2), | |
| 53 | n.file && (o |= 4), | |
| 54 | e.uint.encode(d, o), | |
| 55 | e.string.encode(d, n.url), | |
| 56 | n.title && e.string.encode(d, n.title), | |
| 57 | n.description && e.string.encode(d, n.description), | |
| 58 | n.file && L.encode(d, n.file)) | |
| 59 | }, | |
| 60 | decode(d) { | |
| 61 | const n = e.uint.decode(d) | |
| 62 | return { | |
| 63 | url: e.string.decode(d), | |
| 64 | title: 1 & n ? e.string.decode(d) : null, | |
| 65 | description: 2 & n ? e.string.decode(d) : null, | |
| 66 | file: 4 & n ? L.decode(d) : null, | |
| 67 | } | |
| 68 | }, | |
| 69 | }, | |
| 70 | E = { | |
| 71 | TYPE: o.HTTP_LINK, | |
| 72 | preencode(d, n) { | |
| 73 | let o = 0 | |
| 74 | ;(n.preview && (o |= 1), | |
| 75 | e.uint.preencode(d, o), | |
| 76 | h.preencode(d, n), | |
| 77 | n.preview && a.preencode(d, n.preview)) | |
| 78 | }, | |
| 79 | encode(d, n) { | |
| 80 | let o = 0 | |
| 81 | ;(n.preview && (o |= 1), | |
| 82 | e.uint.encode(d, o), | |
| 83 | h.encode(d, n), | |
| 84 | n.preview && a.encode(d, n.preview)) | |
| 85 | }, | |
| 86 | decode(d) { | |
| 87 | const n = e.uint.decode(d) | |
| 88 | return { ...h.decode(d), preview: 1 & n ? a.decode(d) : null } | |
| 89 | }, | |
| 90 | }, | |
| 91 | v = { | |
| 92 | TYPE: o.PEAR_LINK, | |
| 93 | preencode(d, n) { | |
| 94 | let o = 0 | |
| 95 | ;(n.preview && (o |= 1), | |
| 96 | e.uint.preencode(d, o), | |
| 97 | h.preencode(d, n), | |
| 98 | n.preview && a.preencode(d, n.preview)) | |
| 99 | }, | |
| 100 | encode(d, n) { | |
| 101 | let o = 0 | |
| 102 | ;(n.preview && (o |= 1), | |
| 103 | e.uint.encode(d, o), | |
| 104 | h.encode(d, n), | |
| 105 | n.preview && a.encode(d, n.preview)) | |
| 106 | }, | |
| 107 | decode(d) { | |
| 108 | const n = e.uint.decode(d) | |
| 109 | return { ...h.decode(d), preview: 1 & n ? a.decode(d) : null } | |
| 110 | }, | |
| 111 | }, | |
| 112 | y = { | |
| 113 | TYPE: o.CODE, | |
| 114 | preencode(e, d) { | |
| 115 | I.preencode(e, d) | |
| 116 | }, | |
| 117 | encode(e, d) { | |
| 118 | I.encode(e, d) | |
| 119 | }, | |
| 120 | decode: (e) => I.decode(e), | |
| 121 | }, | |
| 122 | T = { | |
| 123 | TYPE: o.CODE_BLOCK, | |
| 124 | preencode(e, d) { | |
| 125 | I.preencode(e, d) | |
| 126 | }, | |
| 127 | encode(e, d) { | |
| 128 | I.encode(e, d) | |
| 129 | }, | |
| 130 | decode: (e) => I.decode(e), | |
| 131 | }, | |
| 132 | f = { | |
| 133 | TYPE: o.BOLD, | |
| 134 | preencode(e, d) { | |
| 135 | I.preencode(e, d) | |
| 136 | }, | |
| 137 | encode(e, d) { | |
| 138 | I.encode(e, d) | |
| 139 | }, | |
| 140 | decode: (e) => I.decode(e), | |
| 141 | }, | |
| 142 | w = { | |
| 143 | TYPE: o.ITALIC, | |
| 144 | preencode(e, d) { | |
| 145 | I.preencode(e, d) | |
| 146 | }, | |
| 147 | encode(e, d) { | |
| 148 | I.encode(e, d) | |
| 149 | }, | |
| 150 | decode: (e) => I.decode(e), | |
| 151 | }, | |
| 152 | g = { | |
| 153 | TYPE: o.STRIKE_THROUGH, | |
| 154 | preencode(e, d) { | |
| 155 | I.preencode(e, d) | |
| 156 | }, | |
| 157 | encode(e, d) { | |
| 158 | I.encode(e, d) | |
| 159 | }, | |
| 160 | decode: (e) => I.decode(e), | |
| 161 | }, | |
| 162 | m = { | |
| 163 | TYPE: o.EMOJI, | |
| 164 | preencode(e, d) { | |
| 165 | h.preencode(e, d) | |
| 166 | }, | |
| 167 | encode(e, d) { | |
| 168 | h.encode(e, d) | |
| 169 | }, | |
| 170 | decode: (e) => h.decode(e), | |
| 171 | }, | |
| 172 | h = { | |
| 173 | preencode(d, n) { | |
| 174 | ;(e.string.preencode(d, n.content), I.preencode(d, n)) | |
| 175 | }, | |
| 176 | encode(d, n) { | |
| 177 | ;(e.string.encode(d, n.content), I.encode(d, n)) | |
| 178 | }, | |
| 179 | decode: (d) => ({ content: e.string.decode(d), ...I.decode(d) }), | |
| 180 | }, | |
| 181 | I = { | |
| 182 | preencode(d, n) { | |
| 183 | ;(e.uint.preencode(d, n.start), e.uint.preencode(d, n.length)) | |
| 184 | }, | |
| 185 | encode(d, n) { | |
| 186 | ;(e.uint.encode(d, n.start), e.uint.encode(d, n.length)) | |
| 187 | }, | |
| 188 | decode: (d) => ({ start: e.uint.decode(d), length: e.uint.decode(d) }), | |
| 189 | } | |
| 190 | function P(e) { | |
| 191 | switch (e) { | |
| 192 | case l.TYPE: | |
| 193 | return l | |
| 194 | case E.TYPE: | |
| 195 | return E | |
| 196 | case v.TYPE: | |
| 197 | return v | |
| 198 | case f.TYPE: | |
| 199 | return f | |
| 200 | case w.TYPE: | |
| 201 | return w | |
| 202 | case y.TYPE: | |
| 203 | return y | |
| 204 | case T.TYPE: | |
| 205 | return T | |
| 206 | case g.TYPE: | |
| 207 | return g | |
| 208 | case m.TYPE: | |
| 209 | return m | |
| 210 | default: | |
| 211 | return null | |
| 212 | } | |
| 213 | } | |
| 214 | const Y = { | |
| 215 | preencode(d, n) { | |
| 216 | const o = P(n.type) | |
| 217 | if (!o) throw new Error("Unsupported display type") | |
| 218 | ;(e.uint.preencode(d, n.type), o.preencode(d, n.value)) | |
| 219 | }, | |
| 220 | encode(d, n) { | |
| 221 | const o = P(n.type) | |
| 222 | if (!o) throw new Error("Unsupported display type") | |
| 223 | ;(e.uint.encode(d, n.type), o.encode(d, n.value)) | |
| 224 | }, | |
| 225 | decode(d) { | |
| 226 | const n = e.uint.decode(d), | |
| 227 | o = P(n) | |
| 228 | if (!o) throw new Error("Unsupported display type") | |
| 229 | return { type: n, value: o.decode(d) } | |
| 230 | }, | |
| 231 | }, | |
| 232 | R = e.array(Y), | |
| 233 | x = { | |
| 234 | preencode(d, n) { | |
| 235 | ;(d.end++, e.string.preencode(d, n.text)) | |
| 236 | }, | |
| 237 | encode(d, n) { | |
| 238 | const o = d.start++ | |
| 239 | e.string.encode(d, n.text) | |
| 240 | let c = 0 | |
| 241 | ;(n.edited && (c |= 1), (d.buffer[o] = c)) | |
| 242 | }, | |
| 243 | decode(d) { | |
| 244 | const n = e.uint.decode(d) | |
| 245 | return { text: e.string.decode(d), edited: !!(1 & n) } | |
| 246 | }, | |
| 247 | }, | |
| 248 | _ = { | |
| 249 | preencode(e, d) { | |
| 250 | L.preencode(e, d) | |
| 251 | }, | |
| 252 | encode(e, d) { | |
| 253 | L.encode(e, d) | |
| 254 | }, | |
| 255 | decode: (e) => L.decode(e), | |
| 256 | } | |
| 257 | function N(d) { | |
| 258 | switch (d) { | |
| 259 | case n.MEMBER_JOINED: | |
| 260 | case n.CALL_STARTED: | |
| 261 | case n.ROOM_AVATAR_CHANGED: | |
| 262 | case n.INVITATION_CREATED: | |
| 263 | case n.MEMBER_LEFT: | |
| 264 | return M | |
| 265 | case n.MEMBER_REMOVED: | |
| 266 | return k | |
| 267 | case n.ROOM_TITLE_CHANGED: | |
| 268 | return O | |
| 269 | default: | |
| 270 | return e.buffer | |
| 271 | } | |
| 272 | } | |
| 273 | const A = { | |
| 274 | preencode(d, n) { | |
| 275 | e.uint.preencode(d, n.type) | |
| 276 | const o = N(n.type) | |
| 277 | o.preencode && o.preencode(d, n.value) | |
| 278 | }, | |
| 279 | encode(d, n) { | |
| 280 | e.uint.encode(d, n.type) | |
| 281 | const o = N(n.type) | |
| 282 | o.preencode && o.encode(d, n.value) | |
| 283 | }, | |
| 284 | decode(d) { | |
| 285 | const n = e.uint.decode(d), | |
| 286 | o = N(n) | |
| 287 | return o.preencode ? { type: n, value: o.decode(d) } : { type: n, value: null } | |
| 288 | }, | |
| 289 | }, | |
| 290 | M = {}, | |
| 291 | O = { | |
| 292 | preencode(d, n) { | |
| 293 | ;(e.string.preencode(d, n.from), e.string.preencode(d, n.to)) | |
| 294 | }, | |
| 295 | encode(d, n) { | |
| 296 | ;(e.string.encode(d, n.from), e.string.encode(d, n.to)) | |
| 297 | }, | |
| 298 | decode: (d) => ({ from: e.string.decode(d), to: e.string.decode(d) }), | |
| 299 | }, | |
| 300 | k = { | |
| 301 | preencode(d, n) { | |
| 302 | e.fixed32.preencode(d, n.memberKey) | |
| 303 | }, | |
| 304 | encode(d, n) { | |
| 305 | e.fixed32.encode(d, n.memberKey) | |
| 306 | }, | |
| 307 | decode: (d) => ({ memberKey: e.fixed32.decode(d) }), | |
| 308 | }, | |
| 309 | D = { | |
| 310 | preencode(d, n) { | |
| 311 | let o = 0 | |
| 312 | ;(n.deleted && (o |= 1), | |
| 313 | n.timestamp && (o |= 2), | |
| 314 | n.chat && (o |= 4), | |
| 315 | n.file && (o |= 8), | |
| 316 | n.display && (o |= 16), | |
| 317 | n.event && (o |= 32), | |
| 318 | n.parent && (o |= 64), | |
| 319 | n.replyTo && (o |= 128), | |
| 320 | e.uint.preencode(d, o), | |
| 321 | e.uint.preencode(d, n.clock), | |
| 322 | u.preencode(d, n.id), | |
| 323 | n.timestamp && e.uint.preencode(d, n.timestamp), | |
| 324 | n.chat && x.preencode(d, n.chat), | |
| 325 | n.file && _.preencode(d, n.file), | |
| 326 | n.display && R.preencode(d, n.display), | |
| 327 | n.event && A.preencode(d, n.event), | |
| 328 | n.parent && u.preencode(d, n.parent), | |
| 329 | n.replyTo && u.preencode(d, n.replyTo)) | |
| 330 | }, | |
| 331 | encode(d, n) { | |
| 332 | let o = 0 | |
| 333 | ;(n.deleted && (o |= 1), | |
| 334 | n.timestamp && (o |= 2), | |
| 335 | n.chat && (o |= 4), | |
| 336 | n.file && (o |= 8), | |
| 337 | n.display && (o |= 16), | |
| 338 | n.event && (o |= 32), | |
| 339 | n.parent && (o |= 64), | |
| 340 | n.replyTo && (o |= 128), | |
| 341 | e.uint.encode(d, o), | |
| 342 | e.uint.encode(d, n.clock), | |
| 343 | u.encode(d, n.id), | |
| 344 | n.timestamp && e.uint.encode(d, n.timestamp), | |
| 345 | n.chat && x.encode(d, n.chat), | |
| 346 | n.file && _.encode(d, n.file), | |
| 347 | n.display && R.encode(d, n.display), | |
| 348 | n.event && A.encode(d, n.event), | |
| 349 | n.parent && u.encode(d, n.parent), | |
| 350 | n.replyTo && u.encode(d, n.replyTo)) | |
| 351 | }, | |
| 352 | decode(d) { | |
| 353 | const n = e.uint.decode(d) | |
| 354 | return { | |
| 355 | clock: e.uint.decode(d), | |
| 356 | id: u.decode(d), | |
| 357 | deleted: !!(1 & n), | |
| 358 | timestamp: 2 & n ? e.uint.decode(d) : null, | |
| 359 | chat: 4 & n ? x.decode(d) : null, | |
| 360 | file: 8 & n ? _.decode(d) : null, | |
| 361 | display: 16 & n ? R.decode(d) : null, | |
| 362 | event: 32 & n ? A.decode(d) : null, | |
| 363 | parent: 64 & n ? u.decode(d) : null, | |
| 364 | replyTo: 128 & n ? u.decode(d) : null, | |
| 365 | } | |
| 366 | }, | |
| 367 | }, | |
| 368 | b = { | |
| 369 | preencode(d, n) { | |
| 370 | ;(e.fixed32.preencode(d, n.key), | |
| 371 | e.string.preencode(d, n.path), | |
| 372 | e.uint.preencode(d, n.version)) | |
| 373 | }, | |
| 374 | encode(d, n) { | |
| 375 | ;(e.fixed32.encode(d, n.key), e.string.encode(d, n.path), e.uint.encode(d, n.version)) | |
| 376 | }, | |
| 377 | decode: (d) => ({ | |
| 378 | key: e.fixed32.decode(d), | |
| 379 | path: e.string.decode(d), | |
| 380 | version: e.uint.decode(d), | |
| 381 | }), | |
| 382 | }, | |
| 383 | C = { | |
| 384 | preencode(d, n) { | |
| 385 | ;(e.uint.preencode(d, n.width), e.uint.preencode(d, n.height)) | |
| 386 | }, | |
| 387 | encode(d, n) { | |
| 388 | ;(e.uint.encode(d, n.width), e.uint.encode(d, n.height)) | |
| 389 | }, | |
| 390 | decode: (d) => ({ width: e.uint.decode(d), height: e.uint.decode(d) }), | |
| 391 | }, | |
| 392 | L = { | |
| 393 | preencode(d, n) { | |
| 394 | let o = 0 | |
| 395 | ;(n.type && (o |= 1), | |
| 396 | n.dimensions && (o |= 2), | |
| 397 | n.preview && (o |= 4), | |
| 398 | n.previewPointer && (o |= 8), | |
| 399 | e.uint.preencode(d, o), | |
| 400 | b.preencode(d, n), | |
| 401 | n.type && e.string.preencode(d, n.type), | |
| 402 | n.dimensions && C.preencode(d, n.dimensions), | |
| 403 | n.preview && e.buffer.preencode(d, n.preview), | |
| 404 | n.previewPointer && b.preencode(d, n.previewPointer)) | |
| 405 | }, | |
| 406 | encode(d, n) { | |
| 407 | let o = 0 | |
| 408 | ;(n.type && (o |= 1), | |
| 409 | n.dimensions && (o |= 2), | |
| 410 | n.preview && (o |= 4), | |
| 411 | n.previewPointer && (o |= 8), | |
| 412 | e.uint.encode(d, o), | |
| 413 | b.encode(d, n), | |
| 414 | n.type && e.string.encode(d, n.type), | |
| 415 | n.dimensions && C.encode(d, n.dimensions), | |
| 416 | n.preview && e.buffer.encode(d, n.preview), | |
| 417 | n.previewPointer && b.encode(d, n.previewPointer)) | |
| 418 | }, | |
| 419 | decode(d) { | |
| 420 | const n = e.uint.decode(d), | |
| 421 | { key: o, path: c, version: t } = b.decode(d) | |
| 422 | return { | |
| 423 | key: o, | |
| 424 | path: c, | |
| 425 | version: t, | |
| 426 | type: 1 & n ? e.string.decode(d) : null, | |
| 427 | dimensions: 2 & n ? C.decode(d) : null, | |
| 428 | preview: 4 & n ? e.buffer.decode(d) : null, | |
| 429 | previewPointer: 8 & n ? b.decode(d) : null, | |
| 430 | } | |
| 431 | }, | |
| 432 | } | |
| 433 | module.exports = { | |
| 434 | PRIMARY_THREAD_ID: 0, | |
| 435 | IndexEventId: t, | |
| 436 | IndexMessageId: r, | |
| 437 | ClockIndexEncoding: p, | |
| 438 | MessageId: u, | |
| 439 | EventIdValueEncoding: s, | |
| 440 | GenericEvent: A, | |
| 441 | DisplayEvent: R, | |
| 442 | ChatEvent: x, | |
| 443 | EventRecord: D, | |
| 444 | FileRecord: L, | |
| 445 | } | |
| 1 | const e=require("compact-encoding"),d=require("@holepunchto/hyperindex"),{GENERIC_EVENTS:n,DISPLAY_TYPES:o}=require("@holepunchto/keet-core-api"),c=0,t=[d.UINT,d.UINT],r=[d.BUFFER,d.UINT],i=e.fixed32,p=d.UINT,u={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.seq)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},s={preencode(d,n){e.uint.preencode(d,n[0]),e.uint.preencode(d,n[1])},encode(d,n){e.uint.encode(d,n[0]),e.uint.encode(d,n[1])},decode:d=>[e.uint.decode(d),e.uint.decode(d)]},l={TYPE:o.MENTION,preencode(e,d){i.preencode(e,d.memberId),I.preencode(e,d)},encode(e,d){i.encode(e,d.memberId),I.encode(e,d)},decode:e=>({memberId:i.decode(e),...I.decode(e)})},a={preencode(d,n){let o=0;n.title&&(o|=1),n.description&&(o|=2),n.file&&(o|=4),e.uint.preencode(d,o),e.string.preencode(d,n.url),n.title&&e.string.preencode(d,n.title),n.description&&e.string.preencode(d,n.description),n.file&&L.preencode(d,n.file)},encode(d,n){let o=0;n.title&&(o|=1),n.description&&(o|=2),n.file&&(o|=4),e.uint.encode(d,o),e.string.encode(d,n.url),n.title&&e.string.encode(d,n.title),n.description&&e.string.encode(d,n.description),n.file&&L.encode(d,n.file)},decode(d){const n=e.uint.decode(d);return{url:e.string.decode(d),title:1&n?e.string.decode(d):null,description:2&n?e.string.decode(d):null,file:4&n?L.decode(d):null}}},E={TYPE:o.HTTP_LINK,preencode(d,n){let o=0;n.preview&&(o|=1),e.uint.preencode(d,o),h.preencode(d,n),n.preview&&a.preencode(d,n.preview)},encode(d,n){let o=0;n.preview&&(o|=1),e.uint.encode(d,o),h.encode(d,n),n.preview&&a.encode(d,n.preview)},decode(d){const n=e.uint.decode(d);return{...h.decode(d),preview:1&n?a.decode(d):null}}},v={TYPE:o.PEAR_LINK,preencode(d,n){let o=0;n.preview&&(o|=1),e.uint.preencode(d,o),h.preencode(d,n),n.preview&&a.preencode(d,n.preview)},encode(d,n){let o=0;n.preview&&(o|=1),e.uint.encode(d,o),h.encode(d,n),n.preview&&a.encode(d,n.preview)},decode(d){const n=e.uint.decode(d);return{...h.decode(d),preview:1&n?a.decode(d):null}}},y={TYPE:o.CODE,preencode(e,d){I.preencode(e,d)},encode(e,d){I.encode(e,d)},decode:e=>I.decode(e)},T={TYPE:o.CODE_BLOCK,preencode(e,d){I.preencode(e,d)},encode(e,d){I.encode(e,d)},decode:e=>I.decode(e)},f={TYPE:o.BOLD,preencode(e,d){I.preencode(e,d)},encode(e,d){I.encode(e,d)},decode:e=>I.decode(e)},w={TYPE:o.ITALIC,preencode(e,d){I.preencode(e,d)},encode(e,d){I.encode(e,d)},decode:e=>I.decode(e)},g={TYPE:o.STRIKE_THROUGH,preencode(e,d){I.preencode(e,d)},encode(e,d){I.encode(e,d)},decode:e=>I.decode(e)},m={TYPE:o.EMOJI,preencode(e,d){h.preencode(e,d)},encode(e,d){h.encode(e,d)},decode:e=>h.decode(e)},h={preencode(d,n){e.string.preencode(d,n.content),I.preencode(d,n)},encode(d,n){e.string.encode(d,n.content),I.encode(d,n)},decode:d=>({content:e.string.decode(d),...I.decode(d)})},I={preencode(d,n){e.uint.preencode(d,n.start),e.uint.preencode(d,n.length)},encode(d,n){e.uint.encode(d,n.start),e.uint.encode(d,n.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})};function P(e){switch(e){case l.TYPE:return l;case E.TYPE:return E;case v.TYPE:return v;case f.TYPE:return f;case w.TYPE:return w;case y.TYPE:return y;case T.TYPE:return T;case g.TYPE:return g;case m.TYPE:return m;default:return null}}const Y={preencode(d,n){const o=P(n.type);if(!o)throw new Error("Unsupported display type");e.uint.preencode(d,n.type),o.preencode(d,n.value)},encode(d,n){const o=P(n.type);if(!o)throw new Error("Unsupported display type");e.uint.encode(d,n.type),o.encode(d,n.value)},decode(d){const n=e.uint.decode(d),o=P(n);if(!o)throw new Error("Unsupported display type");return{type:n,value:o.decode(d)}}},R=e.array(Y),x={preencode(d,n){d.end++,e.string.preencode(d,n.text)},encode(d,n){const o=d.start++;e.string.encode(d,n.text);let c=0;n.edited&&(c|=1),d.buffer[o]=c},decode(d){const n=e.uint.decode(d);return{text:e.string.decode(d),edited:!!(1&n)}}},_={preencode(e,d){L.preencode(e,d)},encode(e,d){L.encode(e,d)},decode:e=>L.decode(e)};function N(d){switch(d){case n.MEMBER_JOINED:case n.CALL_STARTED:case n.ROOM_AVATAR_CHANGED:case n.INVITATION_CREATED:case n.MEMBER_LEFT:return M;case n.MEMBER_REMOVED:return k;case n.ROOM_TITLE_CHANGED:return O;default:return e.buffer}}const A={preencode(d,n){e.uint.preencode(d,n.type);const o=N(n.type);o.preencode&&o.preencode(d,n.value)},encode(d,n){e.uint.encode(d,n.type);const o=N(n.type);o.preencode&&o.encode(d,n.value)},decode(d){const n=e.uint.decode(d),o=N(n);return o.preencode?{type:n,value:o.decode(d)}:{type:n,value:null}}},M={},O={preencode(d,n){e.string.preencode(d,n.from),e.string.preencode(d,n.to)},encode(d,n){e.string.encode(d,n.from),e.string.encode(d,n.to)},decode:d=>({from:e.string.decode(d),to:e.string.decode(d)})},k={preencode(d,n){e.fixed32.preencode(d,n.memberKey)},encode(d,n){e.fixed32.encode(d,n.memberKey)},decode:d=>({memberKey:e.fixed32.decode(d)})},D={preencode(d,n){let o=0;n.deleted&&(o|=1),n.timestamp&&(o|=2),n.chat&&(o|=4),n.file&&(o|=8),n.display&&(o|=16),n.event&&(o|=32),n.parent&&(o|=64),n.replyTo&&(o|=128),e.uint.preencode(d,o),e.uint.preencode(d,n.clock),u.preencode(d,n.id),n.timestamp&&e.uint.preencode(d,n.timestamp),n.chat&&x.preencode(d,n.chat),n.file&&_.preencode(d,n.file),n.display&&R.preencode(d,n.display),n.event&&A.preencode(d,n.event),n.parent&&u.preencode(d,n.parent),n.replyTo&&u.preencode(d,n.replyTo)},encode(d,n){let o=0;n.deleted&&(o|=1),n.timestamp&&(o|=2),n.chat&&(o|=4),n.file&&(o|=8),n.display&&(o|=16),n.event&&(o|=32),n.parent&&(o|=64),n.replyTo&&(o|=128),e.uint.encode(d,o),e.uint.encode(d,n.clock),u.encode(d,n.id),n.timestamp&&e.uint.encode(d,n.timestamp),n.chat&&x.encode(d,n.chat),n.file&&_.encode(d,n.file),n.display&&R.encode(d,n.display),n.event&&A.encode(d,n.event),n.parent&&u.encode(d,n.parent),n.replyTo&&u.encode(d,n.replyTo)},decode(d){const n=e.uint.decode(d);return{clock:e.uint.decode(d),id:u.decode(d),deleted:!!(1&n),timestamp:2&n?e.uint.decode(d):null,chat:4&n?x.decode(d):null,file:8&n?_.decode(d):null,display:16&n?R.decode(d):null,event:32&n?A.decode(d):null,parent:64&n?u.decode(d):null,replyTo:128&n?u.decode(d):null}}},b={preencode(d,n){e.fixed32.preencode(d,n.key),e.string.preencode(d,n.path),e.uint.preencode(d,n.version)},encode(d,n){e.fixed32.encode(d,n.key),e.string.encode(d,n.path),e.uint.encode(d,n.version)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d)})},C={preencode(d,n){e.uint.preencode(d,n.width),e.uint.preencode(d,n.height)},encode(d,n){e.uint.encode(d,n.width),e.uint.encode(d,n.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},L={preencode(d,n){let o=0;n.type&&(o|=1),n.dimensions&&(o|=2),n.preview&&(o|=4),n.previewPointer&&(o|=8),e.uint.preencode(d,o),b.preencode(d,n),n.type&&e.string.preencode(d,n.type),n.dimensions&&C.preencode(d,n.dimensions),n.preview&&e.buffer.preencode(d,n.preview),n.previewPointer&&b.preencode(d,n.previewPointer)},encode(d,n){let o=0;n.type&&(o|=1),n.dimensions&&(o|=2),n.preview&&(o|=4),n.previewPointer&&(o|=8),e.uint.encode(d,o),b.encode(d,n),n.type&&e.string.encode(d,n.type),n.dimensions&&C.encode(d,n.dimensions),n.preview&&e.buffer.encode(d,n.preview),n.previewPointer&&b.encode(d,n.previewPointer)},decode(d){const n=e.uint.decode(d),{key:o,path:c,version:t}=b.decode(d);return{key:o,path:c,version:t,type:1&n?e.string.decode(d):null,dimensions:2&n?C.decode(d):null,preview:4&n?e.buffer.decode(d):null,previewPointer:8&n?b.decode(d):null}}};module.exports={PRIMARY_THREAD_ID:0,IndexEventId:t,IndexMessageId:r,ClockIndexEncoding:p,MessageId:u,EventIdValueEncoding:s,GenericEvent:A,DisplayEvent:R,ChatEvent:x,EventRecord:D,FileRecord:L}; |
| … | … | @@ -1,125 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | { | |
| 3 | MessageId: d, | |
| 4 | ChatEvent: o, | |
| 5 | DisplayEvent: n, | |
| 6 | GenericEvent: c, | |
| 7 | FileRecord: i, | |
| 8 | } = require("./messages"), | |
| 9 | r = { | |
| 10 | TYPE: 3, | |
| 11 | preencode(c, i) { | |
| 12 | let r = 0 | |
| 13 | ;(i.display && (r |= 1), | |
| 14 | i.replyTo && (r |= 2), | |
| 15 | e.uint.preencode(c, r), | |
| 16 | o.preencode(c, i), | |
| 17 | i.display && n.preencode(c, i.display), | |
| 18 | i.replyTo && d.preencode(c, i.replyTo)) | |
| 19 | }, | |
| 20 | encode(c, i) { | |
| 21 | let r = 0 | |
| 22 | ;(i.display && (r |= 1), | |
| 23 | i.replyTo && (r |= 2), | |
| 24 | e.uint.encode(c, r), | |
| 25 | o.encode(c, i), | |
| 26 | i.display && n.encode(c, i.display), | |
| 27 | i.replyTo && d.encode(c, i.replyTo)) | |
| 28 | }, | |
| 29 | decode(c) { | |
| 30 | const i = e.uint.decode(c) | |
| 31 | return { | |
| 32 | ...o.decode(c), | |
| 33 | display: 1 & i ? n.decode(c) : null, | |
| 34 | replyTo: 2 & i ? d.decode(c) : null, | |
| 35 | } | |
| 36 | }, | |
| 37 | }, | |
| 38 | p = { | |
| 39 | TYPE: 4, | |
| 40 | preencode(c, i) { | |
| 41 | let r = 0 | |
| 42 | ;(i.display && (r |= 1), | |
| 43 | i.replyTo && (r |= 2), | |
| 44 | e.uint.preencode(c, r), | |
| 45 | d.preencode(c, i.id), | |
| 46 | o.preencode(c, i), | |
| 47 | i.display && n.preencode(c, i.display), | |
| 48 | i.replyTo && d.preencode(c, i.replyTo)) | |
| 49 | }, | |
| 50 | encode(c, i) { | |
| 51 | let r = 0 | |
| 52 | ;(i.display && (r |= 1), | |
| 53 | i.replyTo && (r |= 2), | |
| 54 | e.uint.encode(c, r), | |
| 55 | d.encode(c, i.id), | |
| 56 | o.encode(c, i), | |
| 57 | i.display && n.encode(c, i.display), | |
| 58 | i.replyTo && d.encode(c, i.replyTo)) | |
| 59 | }, | |
| 60 | decode(c) { | |
| 61 | const i = e.uint.decode(c) | |
| 62 | return { | |
| 63 | id: d.decode(c), | |
| 64 | ...o.decode(c), | |
| 65 | display: 1 & i ? n.decode(c) : null, | |
| 66 | replyTo: 2 & i ? d.decode(c) : null, | |
| 67 | } | |
| 68 | }, | |
| 69 | }, | |
| 70 | l = { | |
| 71 | TYPE: 5, | |
| 72 | preencode(e, o) { | |
| 73 | d.preencode(e, o.id) | |
| 74 | }, | |
| 75 | encode(e, o) { | |
| 76 | d.encode(e, o.id) | |
| 77 | }, | |
| 78 | decode: (e) => ({ id: d.decode(e) }), | |
| 79 | }, | |
| 80 | t = { TYPE: 6, ...c }, | |
| 81 | s = { | |
| 82 | TYPE: 7, | |
| 83 | preencode(e, o) { | |
| 84 | d.preencode(e, o.id) | |
| 85 | }, | |
| 86 | encode(e, o) { | |
| 87 | d.encode(e, o.id) | |
| 88 | }, | |
| 89 | decode: (e) => ({ id: d.decode(e) }), | |
| 90 | }, | |
| 91 | a = { | |
| 92 | TYPE: 1, | |
| 93 | preencode(d, o) { | |
| 94 | ;(d.end++, i.preencode(d, o.file), o.description && e.string.preencode(d, o.description)) | |
| 95 | }, | |
| 96 | encode(d, o) { | |
| 97 | const n = d.start++ | |
| 98 | i.encode(d, o.file) | |
| 99 | let c = 0 | |
| 100 | ;(o.description && ((c |= 1), e.string.encode(d, o.description)), (d.buffer[n] = c)) | |
| 101 | }, | |
| 102 | decode(d) { | |
| 103 | const o = e.uint.decode(d) | |
| 104 | return { file: i.decode(d), description: 1 & o ? e.string.decode(d) : null } | |
| 105 | }, | |
| 106 | }, | |
| 107 | y = { | |
| 108 | TYPE: 2, | |
| 109 | preencode(e, o) { | |
| 110 | d.preencode(e, o.id) | |
| 111 | }, | |
| 112 | encode(e, o) { | |
| 113 | d.encode(e, o.id) | |
| 114 | }, | |
| 115 | decode: (e) => ({ id: d.decode(e) }), | |
| 116 | } | |
| 117 | module.exports = { | |
| 118 | AddChatMessageOperation: r, | |
| 119 | UpdateChatMessageOperation: p, | |
| 120 | RemoveChatMessageOperation: l, | |
| 121 | AddGenericEventOperation: t, | |
| 122 | RemoveGenericEventOperation: s, | |
| 123 | AddFileOperation: a, | |
| 124 | RemoveFileOperation: y, | |
| 125 | } | |
| 1 | const e=require("compact-encoding"),{MessageId:d,ChatEvent:o,DisplayEvent:n,GenericEvent:c,FileRecord:i}=require("./messages"),r={TYPE:3,preencode(c,i){let r=0;i.display&&(r|=1),i.replyTo&&(r|=2),e.uint.preencode(c,r),o.preencode(c,i),i.display&&n.preencode(c,i.display),i.replyTo&&d.preencode(c,i.replyTo)},encode(c,i){let r=0;i.display&&(r|=1),i.replyTo&&(r|=2),e.uint.encode(c,r),o.encode(c,i),i.display&&n.encode(c,i.display),i.replyTo&&d.encode(c,i.replyTo)},decode(c){const i=e.uint.decode(c);return{...o.decode(c),display:1&i?n.decode(c):null,replyTo:2&i?d.decode(c):null}}},p={TYPE:4,preencode(c,i){let r=0;i.display&&(r|=1),i.replyTo&&(r|=2),e.uint.preencode(c,r),d.preencode(c,i.id),o.preencode(c,i),i.display&&n.preencode(c,i.display),i.replyTo&&d.preencode(c,i.replyTo)},encode(c,i){let r=0;i.display&&(r|=1),i.replyTo&&(r|=2),e.uint.encode(c,r),d.encode(c,i.id),o.encode(c,i),i.display&&n.encode(c,i.display),i.replyTo&&d.encode(c,i.replyTo)},decode(c){const i=e.uint.decode(c);return{id:d.decode(c),...o.decode(c),display:1&i?n.decode(c):null,replyTo:2&i?d.decode(c):null}}},l={TYPE:5,preencode(e,o){d.preencode(e,o.id)},encode(e,o){d.encode(e,o.id)},decode:e=>({id:d.decode(e)})},t={TYPE:6,...c},s={TYPE:7,preencode(e,o){d.preencode(e,o.id)},encode(e,o){d.encode(e,o.id)},decode:e=>({id:d.decode(e)})},a={TYPE:1,preencode(d,o){d.end++,i.preencode(d,o.file),o.description&&e.string.preencode(d,o.description)},encode(d,o){const n=d.start++;i.encode(d,o.file);let c=0;o.description&&(c|=1,e.string.encode(d,o.description)),d.buffer[n]=c},decode(d){const o=e.uint.decode(d);return{file:i.decode(d),description:1&o?e.string.decode(d):null}}},y={TYPE:2,preencode(e,o){d.preencode(e,o.id)},encode(e,o){d.encode(e,o.id)},decode:e=>({id:d.decode(e)})};module.exports={AddChatMessageOperation:r,UpdateChatMessageOperation:p,RemoveChatMessageOperation:l,AddGenericEventOperation:t,RemoveGenericEventOperation:s,AddFileOperation:a,RemoveFileOperation:y}; |
| … | … | @@ -1,44 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | { CONFIG: a } = require("@holepunchto/keet-core-api"), | |
| 3 | r = require("../internal"), | |
| 4 | { UpdateConfigOperationV1: t, UpdateConfigOperationV2: s } = require("./ops"), | |
| 5 | { MirrorRecord: n } = require("./messages.js"), | |
| 6 | { MessageId: c } = require("../chat/messages.js") | |
| 7 | module.exports = class i { | |
| 8 | static Encoding = r.ConfigEncoding | |
| 9 | static Operations = { UpdateConfigOperationV1: t, UpdateConfigOperationV2: s } | |
| 10 | static Collection = { keyEncoding: e.uint, valueEncoding: e.any } | |
| 11 | static PinnedMessages = e.array(c) | |
| 12 | static Mirrors = e.array(n) | |
| 13 | static getValue(e) { | |
| 14 | if (!e || !e.value) return null | |
| 15 | const { key: a, value: r } = e | |
| 16 | return i.decodeValue(a, r) | |
| 17 | } | |
| 18 | static decodeValue(e, a) { | |
| 19 | return i.encodeValue(e, a, !0) | |
| 20 | } | |
| 21 | static encodeValue(r, t, s = !1) { | |
| 22 | const n = s ? e.decode : e.encode | |
| 23 | switch (r) { | |
| 24 | case a.ID_PUBLIC_KEY: | |
| 25 | case a.ID_SHARED_INVITE_SEED: | |
| 26 | case a.ID_RECOVERY_PHRASE: | |
| 27 | case a.ROOM_TITLE: | |
| 28 | case a.ROOM_DESCRIPTION: | |
| 29 | case a.ROOM_AVATAR: | |
| 30 | case a.ROOM_TYPE: | |
| 31 | case a.ROOM_CAN_CALL: | |
| 32 | return n(e.string, t) | |
| 33 | case a.PINNED_MESSAGES: | |
| 34 | return n(i.PinnedMessages, t) | |
| 35 | case a.ROOM_MIRRORS: | |
| 36 | return n(i.Mirrors, t) | |
| 37 | case a.ROOM_LOCKED: | |
| 38 | case a.DISABLE_MEMBERSHIP_EVENTS: | |
| 39 | return n(e.uint, t) | |
| 40 | default: | |
| 41 | return n(e.string, t) | |
| 42 | } | |
| 43 | } | |
| 44 | } | |
| 1 | const e=require("compact-encoding"),{CONFIG:a}=require("@holepunchto/keet-core-api"),r=require("../internal"),{UpdateConfigOperationV1:t,UpdateConfigOperationV2:s}=require("./ops"),{MirrorRecord:n}=require("./messages.js"),{MessageId:c}=require("../chat/messages.js");module.exports=class i{static Encoding=r.ConfigEncoding;static Operations={UpdateConfigOperationV1:t,UpdateConfigOperationV2:s};static Collection={keyEncoding:e.uint,valueEncoding:e.any};static PinnedMessages=e.array(c);static Mirrors=e.array(n);static getValue(e){if(!e||!e.value)return null;const{key:a,value:r}=e;return i.decodeValue(a,r)}static decodeValue(e,a){return i.encodeValue(e,a,!0)}static encodeValue(r,t,s=!1){const n=s?e.decode:e.encode;switch(r){case a.ID_PUBLIC_KEY:case a.ID_SHARED_INVITE_SEED:case a.ID_RECOVERY_PHRASE:case a.ROOM_TITLE:case a.ROOM_DESCRIPTION:case a.ROOM_AVATAR:case a.ROOM_TYPE:case a.ROOM_CAN_CALL:return n(e.string,t);case a.PINNED_MESSAGES:return n(i.PinnedMessages,t);case a.ROOM_MIRRORS:return n(i.Mirrors,t);case a.ROOM_LOCKED:case a.DISABLE_MEMBERSHIP_EVENTS:return n(e.uint,t);default:return n(e.string,t)}}}; |
| … | … | @@ -1,30 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | n = { | |
| 3 | preencode(n, t) { | |
| 4 | let d = 0 | |
| 5 | ;(t.type && (d |= 1), | |
| 6 | t.signature && (d |= 2), | |
| 7 | e.uint.preencode(n, d), | |
| 8 | e.fixed32.preencode(n, t.key), | |
| 9 | t.type && e.uint.preencode(n, t.type), | |
| 10 | t.signature && e.buffer.preencode(n, t.signature)) | |
| 11 | }, | |
| 12 | encode(n, t) { | |
| 13 | let d = 0 | |
| 14 | ;(t.type && (d |= 1), | |
| 15 | t.signature && (d |= 2), | |
| 16 | e.uint.encode(n, d), | |
| 17 | e.fixed32.encode(n, t.key), | |
| 18 | t.type && e.uint.encode(n, t.type), | |
| 19 | t.signature && e.buffer.encode(n, t.signature)) | |
| 20 | }, | |
| 21 | decode(n) { | |
| 22 | const t = e.uint.decode(n) | |
| 23 | return { | |
| 24 | key: e.fixed32.decode(n), | |
| 25 | type: 1 & t ? e.uint.decode(n) : 0, | |
| 26 | signature: 2 & t ? e.buffer.decode(n) : null, | |
| 27 | } | |
| 28 | }, | |
| 29 | } | |
| 30 | module.exports = { MirrorRecord: n } | |
| 1 | const e=require("compact-encoding"),n={preencode(n,t){let d=0;t.type&&(d|=1),t.signature&&(d|=2),e.uint.preencode(n,d),e.fixed32.preencode(n,t.key),t.type&&e.uint.preencode(n,t.type),t.signature&&e.buffer.preencode(n,t.signature)},encode(n,t){let d=0;t.type&&(d|=1),t.signature&&(d|=2),e.uint.encode(n,d),e.fixed32.encode(n,t.key),t.type&&e.uint.encode(n,t.type),t.signature&&e.buffer.encode(n,t.signature)},decode(n){const t=e.uint.decode(n);return{key:e.fixed32.decode(n),type:1&t?e.uint.decode(n):0,signature:2&t?e.buffer.decode(n):null}}};module.exports={MirrorRecord:n}; |
| … | … | @@ -1,28 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | n = { | |
| 3 | TYPE: 11, | |
| 4 | preencode(n, d) { | |
| 5 | ;(n.end++, e.string.preencode(n, d.key), d.value && e.string.preencode(n, d.value)) | |
| 6 | }, | |
| 7 | encode(n, d) { | |
| 8 | const o = n.start++ | |
| 9 | e.string.encode(n, d.key) | |
| 10 | let r = 0 | |
| 11 | ;(d.value && ((r |= 1), e.string.encode(n, d.value)), (n.buffer[o] = r)) | |
| 12 | }, | |
| 13 | decode(n) { | |
| 14 | const d = e.uint.decode(n) | |
| 15 | return { key: e.string.decode(n), value: 1 & d ? e.string.decode(n) : null } | |
| 16 | }, | |
| 17 | }, | |
| 18 | d = { | |
| 19 | TYPE: 26, | |
| 20 | preencode(n, d) { | |
| 21 | ;(e.string.preencode(n, d.key), e.buffer.preencode(n, d.value)) | |
| 22 | }, | |
| 23 | encode(n, d) { | |
| 24 | ;(e.string.encode(n, d.key), e.buffer.encode(n, d.value)) | |
| 25 | }, | |
| 26 | decode: (n) => ({ key: e.string.decode(n), value: e.buffer.decode(n) }), | |
| 27 | } | |
| 28 | module.exports = { UpdateConfigOperationV1: n, UpdateConfigOperationV2: d } | |
| 1 | const e=require("compact-encoding"),n={TYPE:11,preencode(n,d){n.end++,e.string.preencode(n,d.key),d.value&&e.string.preencode(n,d.value)},encode(n,d){const o=n.start++;e.string.encode(n,d.key);let r=0;d.value&&(r|=1,e.string.encode(n,d.value)),n.buffer[o]=r},decode(n){const d=e.uint.decode(n);return{key:e.string.decode(n),value:1&d?e.string.decode(n):null}}},d={TYPE:26,preencode(n,d){e.string.preencode(n,d.key),e.buffer.preencode(n,d.value)},encode(n,d){e.string.encode(n,d.key),e.buffer.encode(n,d.value)},decode:n=>({key:e.string.decode(n),value:e.buffer.decode(n)})};module.exports={UpdateConfigOperationV1:n,UpdateConfigOperationV2:d}; |
| … | … | @@ -1,27 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | i = require("@holepunchto/hyperindex"), | |
| 3 | { IndexMemberId: n } = require("../members/messages"), | |
| 4 | { DeviceRecord: o } = require("./messages"), | |
| 5 | { | |
| 6 | AddDeviceOperationV1: c, | |
| 7 | AddDeviceOperationV2: t, | |
| 8 | UpdateDeviceOperation: a, | |
| 9 | RemoveDeviceOperationV1: r, | |
| 10 | RemoveDeviceOperationV2: d, | |
| 11 | } = require("./ops") | |
| 12 | module.exports = class { | |
| 13 | static Messages = {} | |
| 14 | static Operations = { | |
| 15 | AddDeviceOperationV1: c, | |
| 16 | AddDeviceOperationV2: t, | |
| 17 | UpdateDeviceOperation: a, | |
| 18 | RemoveDeviceOperationV1: r, | |
| 19 | RemoveDeviceOperationV2: d, | |
| 20 | } | |
| 21 | static DevicesCollection = { keyEncoding: n, valueEncoding: o } | |
| 22 | static DevicesIndexes = [ | |
| 23 | { keyEncoding: i.BUFFER, valueEncoding: n }, | |
| 24 | { keyEncoding: i.UINT, valueEncoding: e.uint }, | |
| 25 | { keyEncoding: i.UINT, valueEncoding: e.uint }, | |
| 26 | ] | |
| 27 | } | |
| 1 | const e=require("compact-encoding"),i=require("@holepunchto/hyperindex"),{IndexMemberId:n}=require("../members/messages"),{DeviceRecord:o}=require("./messages"),{AddDeviceOperationV1:c,AddDeviceOperationV2:t,UpdateDeviceOperation:a,RemoveDeviceOperationV1:r,RemoveDeviceOperationV2:d}=require("./ops");module.exports=class{static Messages={};static Operations={AddDeviceOperationV1:c,AddDeviceOperationV2:t,UpdateDeviceOperation:a,RemoveDeviceOperationV1:r,RemoveDeviceOperationV2:d};static DevicesCollection={keyEncoding:n,valueEncoding:o};static DevicesIndexes=[{keyEncoding:i.BUFFER,valueEncoding:n},{keyEncoding:i.UINT,valueEncoding:e.uint},{keyEncoding:i.UINT,valueEncoding:e.uint}]}; |
| … | … | @@ -1,34 +1 @@ |
| 1 | const e = require("compact-encoding"), | |
| 2 | i = { | |
| 3 | preencode(i, c) { | |
| 4 | ;(i.end++, | |
| 5 | e.fixed32.preencode(i, c.key), | |
| 6 | e.fixed32.preencode(i, c.noisePublicKey), | |
| 7 | e.uint.preencode(i, c.capabilities), | |
| 8 | c.receipt && e.buffer.preencode(i, c.receipt), | |
| 9 | c.name && e.string.preencode(i, c.name)) | |
| 10 | }, | |
| 11 | encode(i, c) { | |
| 12 | const d = i.start++ | |
| 13 | ;(e.fixed32.encode(i, c.key), | |
| 14 | e.fixed32.encode(i, c.noisePublicKey), | |
| 15 | e.uint.encode(i, c.capabilities)) | |
| 16 | let n = 0 | |
| 17 | ;(c.receipt && ((n |= 1), e.buffer.encode(i, c.receipt)), | |
| 18 | c.isMobile && (n |= 2), | |
| 19 | c.name && ((n |= 4), e.string.encode(i, c.name)), | |
| 20 | (i.buffer[d] = n)) | |
| 21 | }, | |
| 22 | decode(i) { | |
| 23 | const c = e.uint.decode(i) | |
| 24 | return { | |
| 25 | key: e.fixed32.decode(i), | |
| 26 | noisePublicKey: e.fixed32.decode(i), | |
| 27 | capabilities: e.uint.decode(i), | |
| 28 | receipt: 1 & c ? e.buffer.decode(i) : null, | |
| 29 | isMobile: !!(2 & c), | |
| 30 | name: 4 & c ? e.string.decode(i) : null, | |
| 31 | } | |
| 32 | }, | |
| 33 | } | |
| 34 | module.exports = { DeviceRecord: i } | |
| 1 | const e=require("compact-encoding"),i={preencode(i,c){i.end++,e.fixed32.preencode(i,c.key),e.fixed32.preencode(i,c.noisePublicKey),e.uint.preencode(i,c.capabilities),c.receipt&&e.buffer.preencode(i,c.receipt),c.name&&e.string.preencode(i,c.name)},encode(i,c){const d=i.start++;e.fixed32.encode(i,c.key),e.fixed32.encode(i,c.noisePublicKey),e.uint.encode(i,c.capabilities);let n=0;c.receipt&&(n|=1,e.buffer.encode(i,c.receipt)),c.isMobile&&(n|=2),c.name&&(n|=4,e.string.encode(i,c.name)),i.buffer[d]=n},decode(i){const c=e.uint.decode(i);return{key:e.fixed32.decode(i),noisePublicKey:e.fixed32.decode(i),capabilities:e.uint.decode(i),receipt:1&c?e.buffer.decode(i):null,isMobile:!!(2&c),name:4&c?e.string.decode(i):null}}};module.exports={DeviceRecord:i}; |
| … | … | @@ -0,0 +1 @@ |
| 1 | * text=auto eol=lf |
| … | … | @@ -0,0 +1,23 @@ |
| 1 | name: Build Status | |
| 2 | on: | |
| 3 | push: | |
| 4 | branches: | |
| 5 | - main | |
| 6 | pull_request: | |
| 7 | branches: | |
| 8 | - main | |
| 9 | jobs: | |
| 10 | build: | |
| 11 | strategy: | |
| 12 | matrix: | |
| 13 | node-version: [lts/*] | |
| 14 | os: [ubuntu-latest, macos-latest, windows-latest] | |
| 15 | runs-on: ${{ matrix.os }} | |
| 16 | steps: | |
| 17 | - uses: actions/checkout@v2 | |
| 18 | - name: Use Node.js ${{ matrix.node-version }} | |
| 19 | uses: actions/setup-node@v2 | |
| 20 | with: | |
| 21 | node-version: ${{ matrix.node-version }} | |
| 22 | - run: npm install | |
| 23 | - run: npm test |
| … | … | @@ -0,0 +1 @@ |
| 1 | prettier-config-holepunch |
| … | … | @@ -0,0 +1,201 @@ |
| 1 | Apache License | |
| 2 | Version 2.0, January 2004 | |
| 3 | http://www.apache.org/licenses/ | |
| 4 | ||
| 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |
| 6 | ||
| 7 | 1. Definitions. | |
| 8 | ||
| 9 | "License" shall mean the terms and conditions for use, reproduction, | |
| 10 | and distribution as defined by Sections 1 through 9 of this document. | |
| 11 | ||
| 12 | "Licensor" shall mean the copyright owner or entity authorized by | |
| 13 | the copyright owner that is granting the License. | |
| 14 | ||
| 15 | "Legal Entity" shall mean the union of the acting entity and all | |
| 16 | other entities that control, are controlled by, or are under common | |
| 17 | control with that entity. For the purposes of this definition, | |
| 18 | "control" means (i) the power, direct or indirect, to cause the | |
| 19 | direction or management of such entity, whether by contract or | |
| 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the | |
| 21 | outstanding shares, or (iii) beneficial ownership of such entity. | |
| 22 | ||
| 23 | "You" (or "Your") shall mean an individual or Legal Entity | |
| 24 | exercising permissions granted by this License. | |
| 25 | ||
| 26 | "Source" form shall mean the preferred form for making modifications, | |
| 27 | including but not limited to software source code, documentation | |
| 28 | source, and configuration files. | |
| 29 | ||
| 30 | "Object" form shall mean any form resulting from mechanical | |
| 31 | transformation or translation of a Source form, including but | |
| 32 | not limited to compiled object code, generated documentation, | |
| 33 | and conversions to other media types. | |
| 34 | ||
| 35 | "Work" shall mean the work of authorship, whether in Source or | |
| 36 | Object form, made available under the License, as indicated by a | |
| 37 | copyright notice that is included in or attached to the work | |
| 38 | (an example is provided in the Appendix below). | |
| 39 | ||
| 40 | "Derivative Works" shall mean any work, whether in Source or Object | |
| 41 | form, that is based on (or derived from) the Work and for which the | |
| 42 | editorial revisions, annotations, elaborations, or other modifications | |
| 43 | represent, as a whole, an original work of authorship. For the purposes | |
| 44 | of this License, Derivative Works shall not include works that remain | |
| 45 | separable from, or merely link (or bind by name) to the interfaces of, | |
| 46 | the Work and Derivative Works thereof. | |
| 47 | ||
| 48 | "Contribution" shall mean any work of authorship, including | |
| 49 | the original version of the Work and any modifications or additions | |
| 50 | to that Work or Derivative Works thereof, that is intentionally | |
| 51 | submitted to Licensor for inclusion in the Work by the copyright owner | |
| 52 | or by an individual or Legal Entity authorized to submit on behalf of | |
| 53 | the copyright owner. For the purposes of this definition, "submitted" | |
| 54 | means any form of electronic, verbal, or written communication sent | |
| 55 | to the Licensor or its representatives, including but not limited to | |
| 56 | communication on electronic mailing lists, source code control systems, | |
| 57 | and issue tracking systems that are managed by, or on behalf of, the | |
| 58 | Licensor for the purpose of discussing and improving the Work, but | |
| 59 | excluding communication that is conspicuously marked or otherwise | |
| 60 | designated in writing by the copyright owner as "Not a Contribution." | |
| 61 | ||
| 62 | "Contributor" shall mean Licensor and any individual or Legal Entity | |
| 63 | on behalf of whom a Contribution has been received by Licensor and | |
| 64 | subsequently incorporated within the Work. | |
| 65 | ||
| 66 | 2. Grant of Copyright License. Subject to the terms and conditions of | |
| 67 | this License, each Contributor hereby grants to You a perpetual, | |
| 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
| 69 | copyright license to reproduce, prepare Derivative Works of, | |
| 70 | publicly display, publicly perform, sublicense, and distribute the | |
| 71 | Work and such Derivative Works in Source or Object form. | |
| 72 | ||
| 73 | 3. Grant of Patent License. Subject to the terms and conditions of | |
| 74 | this License, each Contributor hereby grants to You a perpetual, | |
| 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
| 76 | (except as stated in this section) patent license to make, have made, | |
| 77 | use, offer to sell, sell, import, and otherwise transfer the Work, | |
| 78 | where such license applies only to those patent claims licensable | |
| 79 | by such Contributor that are necessarily infringed by their | |
| 80 | Contribution(s) alone or by combination of their Contribution(s) | |
| 81 | with the Work to which such Contribution(s) was submitted. If You | |
| 82 | institute patent litigation against any entity (including a | |
| 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work | |
| 84 | or a Contribution incorporated within the Work constitutes direct | |
| 85 | or contributory patent infringement, then any patent licenses | |
| 86 | granted to You under this License for that Work shall terminate | |
| 87 | as of the date such litigation is filed. | |
| 88 | ||
| 89 | 4. Redistribution. You may reproduce and distribute copies of the | |
| 90 | Work or Derivative Works thereof in any medium, with or without | |
| 91 | modifications, and in Source or Object form, provided that You | |
| 92 | meet the following conditions: | |
| 93 | ||
| 94 | (a) You must give any other recipients of the Work or | |
| 95 | Derivative Works a copy of this License; and | |
| 96 | ||
| 97 | (b) You must cause any modified files to carry prominent notices | |
| 98 | stating that You changed the files; and | |
| 99 | ||
| 100 | (c) You must retain, in the Source form of any Derivative Works | |
| 101 | that You distribute, all copyright, patent, trademark, and | |
| 102 | attribution notices from the Source form of the Work, | |
| 103 | excluding those notices that do not pertain to any part of | |
| 104 | the Derivative Works; and | |
| 105 | ||
| 106 | (d) If the Work includes a "NOTICE" text file as part of its | |
| 107 | distribution, then any Derivative Works that You distribute must | |
| 108 | include a readable copy of the attribution notices contained | |
| 109 | within such NOTICE file, excluding those notices that do not | |
| 110 | pertain to any part of the Derivative Works, in at least one | |
| 111 | of the following places: within a NOTICE text file distributed | |
| 112 | as part of the Derivative Works; within the Source form or | |
| 113 | documentation, if provided along with the Derivative Works; or, | |
| 114 | within a display generated by the Derivative Works, if and | |
| 115 | wherever such third-party notices normally appear. The contents | |
| 116 | of the NOTICE file are for informational purposes only and | |
| 117 | do not modify the License. You may add Your own attribution | |
| 118 | notices within Derivative Works that You distribute, alongside | |
| 119 | or as an addendum to the NOTICE text from the Work, provided | |
| 120 | that such additional attribution notices cannot be construed | |
| 121 | as modifying the License. | |
| 122 | ||
| 123 | You may add Your own copyright statement to Your modifications and | |
| 124 | may provide additional or different license terms and conditions | |
| 125 | for use, reproduction, or distribution of Your modifications, or | |
| 126 | for any such Derivative Works as a whole, provided Your use, | |
| 127 | reproduction, and distribution of the Work otherwise complies with | |
| 128 | the conditions stated in this License. | |
| 129 | ||
| 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, | |
| 131 | any Contribution intentionally submitted for inclusion in the Work | |
| 132 | by You to the Licensor shall be under the terms and conditions of | |
| 133 | this License, without any additional terms or conditions. | |
| 134 | Notwithstanding the above, nothing herein shall supersede or modify | |
| 135 | the terms of any separate license agreement you may have executed | |
| 136 | with Licensor regarding such Contributions. | |
| 137 | ||
| 138 | 6. Trademarks. This License does not grant permission to use the trade | |
| 139 | names, trademarks, service marks, or product names of the Licensor, | |
| 140 | except as required for reasonable and customary use in describing the | |
| 141 | origin of the Work and reproducing the content of the NOTICE file. | |
| 142 | ||
| 143 | 7. Disclaimer of Warranty. Unless required by applicable law or | |
| 144 | agreed to in writing, Licensor provides the Work (and each | |
| 145 | Contributor provides its Contributions) on an "AS IS" BASIS, | |
| 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |
| 147 | implied, including, without limitation, any warranties or conditions | |
| 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |
| 149 | PARTICULAR PURPOSE. You are solely responsible for determining the | |
| 150 | appropriateness of using or redistributing the Work and assume any | |
| 151 | risks associated with Your exercise of permissions under this License. | |
| 152 | ||
| 153 | 8. Limitation of Liability. In no event and under no legal theory, | |
| 154 | whether in tort (including negligence), contract, or otherwise, | |
| 155 | unless required by applicable law (such as deliberate and grossly | |
| 156 | negligent acts) or agreed to in writing, shall any Contributor be | |
| 157 | liable to You for damages, including any direct, indirect, special, | |
| 158 | incidental, or consequential damages of any character arising as a | |
| 159 | result of this License or out of the use or inability to use the | |
| 160 | Work (including but not limited to damages for loss of goodwill, | |
| 161 | work stoppage, computer failure or malfunction, or any and all | |
| 162 | other commercial damages or losses), even if such Contributor | |
| 163 | has been advised of the possibility of such damages. | |
| 164 | ||
| 165 | 9. Accepting Warranty or Additional Liability. While redistributing | |
| 166 | the Work or Derivative Works thereof, You may choose to offer, | |
| 167 | and charge a fee for, acceptance of support, warranty, indemnity, | |
| 168 | or other liability obligations and/or rights consistent with this | |
| 169 | License. However, in accepting such obligations, You may act only | |
| 170 | on Your own behalf and on Your sole responsibility, not on behalf | |
| 171 | of any other Contributor, and only if You agree to indemnify, | |
| 172 | defend, and hold each Contributor harmless for any liability | |
| 173 | incurred by, or claims asserted against, such Contributor by reason | |
| 174 | of your accepting any such warranty or additional liability. | |
| 175 | ||
| 176 | END OF TERMS AND CONDITIONS | |
| 177 | ||
| 178 | APPENDIX: How to apply the Apache License to your work. | |
| 179 | ||
| 180 | To apply the Apache License to your work, attach the following | |
| 181 | boilerplate notice, with the fields enclosed by brackets "[]" | |
| 182 | replaced with your own identifying information. (Don't include | |
| 183 | the brackets!) The text should be enclosed in the appropriate | |
| 184 | comment syntax for the file format. We also recommend that a | |
| 185 | file or class name and description of purpose be included on the | |
| 186 | same "printed page" as the copyright notice for easier | |
| 187 | identification within third-party archives. | |
| 188 | ||
| 189 | Copyright [yyyy] [name of copyright owner] | |
| 190 | ||
| 191 | Licensed under the Apache License, Version 2.0 (the "License"); | |
| 192 | you may not use this file except in compliance with the License. | |
| 193 | You may obtain a copy of the License at | |
| 194 | ||
| 195 | http://www.apache.org/licenses/LICENSE-2.0 | |
| 196 | ||
| 197 | Unless required by applicable law or agreed to in writing, software | |
| 198 | distributed under the License is distributed on an "AS IS" BASIS, | |
| 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 200 | See the License for the specific language governing permissions and | |
| 201 | limitations under the License. |
| … | … | @@ -0,0 +1,13 @@ |
| 1 | Copyright 2023 Holepunch Inc | |
| 2 | ||
| 3 | Licensed under the Apache License, Version 2.0 (the "License"); | |
| 4 | you may not use this file except in compliance with the License. | |
| 5 | You may obtain a copy of the License at | |
| 6 | ||
| 7 | http://www.apache.org/licenses/LICENSE-2.0 | |
| 8 | ||
| 9 | Unless required by applicable law or agreed to in writing, software | |
| 10 | distributed under the License is distributed on an "AS IS" BASIS, | |
| 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 12 | See the License for the specific language governing permissions and | |
| 13 | limitations under the License. |
| … | … | @@ -0,0 +1,165 @@ |
| 1 | # compact-encoding | |
| 2 | ||
| 3 | A series of compact encoding schemes for building small and fast parsers and serializers | |
| 4 | ||
| 5 | ``` | |
| 6 | npm install compact-encoding | |
| 7 | ``` | |
| 8 | ||
| 9 | ## Usage | |
| 10 | ||
| 11 | ```js | |
| 12 | const cenc = require('compact-encoding') | |
| 13 | ||
| 14 | const state = cenc.state() | |
| 15 | ||
| 16 | // use preencode to figure out how big a buffer is needed | |
| 17 | cenc.uint.preencode(state, 42) | |
| 18 | cenc.string.preencode(state, 'hi') | |
| 19 | ||
| 20 | console.log(state) // { start: 0, end: 4, buffer: null } | |
| 21 | ||
| 22 | state.buffer = Buffer.allocUnsafe(state.end) | |
| 23 | ||
| 24 | // then use encode to actually encode it to the buffer | |
| 25 | cenc.uint.encode(state, 42) | |
| 26 | cenc.string.encode(state, 'hi') | |
| 27 | ||
| 28 | // to decode it simply use decode instead | |
| 29 | ||
| 30 | state.start = 0 | |
| 31 | cenc.uint.decode(state) // 42 | |
| 32 | cenc.string.decode(state) // 'hi' | |
| 33 | ``` | |
| 34 | ||
| 35 | ## Encoder API | |
| 36 | ||
| 37 | #### `state` | |
| 38 | ||
| 39 | Should be an object that looks like this `{ start, end, buffer }`. | |
| 40 | ||
| 41 | You can also get a blank state object using `cenc.state()`. | |
| 42 | ||
| 43 | - `start` is the byte offset to start encoding/decoding at. | |
| 44 | - `end` is the byte offset indicating the end of the buffer. | |
| 45 | - `buffer` should be either a Node.js Buffer or Uint8Array. | |
| 46 | ||
| 47 | #### `enc.preencode(state, val)` | |
| 48 | ||
| 49 | Does a fast preencode dry-run that only sets state.end. | |
| 50 | Use this to figure out how big of a buffer you need. | |
| 51 | ||
| 52 | #### `enc.encode(state, val)` | |
| 53 | ||
| 54 | Encodes `val` into `state.buffer` at position `state.start`. | |
| 55 | Updates `state.start` to point after the encoded value when done. | |
| 56 | ||
| 57 | #### `val = enc.decode(state)` | |
| 58 | ||
| 59 | Decodes a value from `state.buffer` as position `state.start`. | |
| 60 | Updates `state.start` to point after the decoded value when done in the buffer. | |
| 61 | ||
| 62 | ## Helpers | |
| 63 | ||
| 64 | If you are just encoding to a buffer or decoding from one you can use the `encode` and `decode` helpers | |
| 65 | to reduce your boilerplate | |
| 66 | ||
| 67 | ```js | |
| 68 | const buf = cenc.encode(cenc.bool, true) | |
| 69 | const bool = cenc.decode(cenc.bool, buf) | |
| 70 | ``` | |
| 71 | ||
| 72 | ## Bundled encodings | |
| 73 | ||
| 74 | The following encodings are bundled as they are primitives that can be used | |
| 75 | to build others on top. Feel free to PR more that are missing. | |
| 76 | ||
| 77 | - `cenc.raw` - Pass through encodes a buffer, i.e. a basic copy. | |
| 78 | - `cenc.uint` - Encodes a uint using the smallest fixed size encoding with a prefix to signal which one. Useful for uints that can be a wide range of values. | |
| 79 | - `cenc.uint8` - Encodes a fixed size uint8. | |
| 80 | - `cenc.uint16` - Encodes a fixed size uint16. Useful for things like ports. | |
| 81 | - `cenc.uint24` - Encodes a fixed size uint24. Useful for message framing. | |
| 82 | - `cenc.uint32` - Encodes a fixed size uint32. Useful for very large message framing. | |
| 83 | - `cenc.uint40` - Encodes a fixed size uint40. | |
| 84 | - `cenc.uint48` - Encodes a fixed size uint48. | |
| 85 | - `cenc.uint56` - Encodes a fixed size uint56. | |
| 86 | - `cenc.uint64` - Encodes a fixed size uint64. | |
| 87 | - `cenc.int` - Encodes an int using `cenc.uint` with ZigZag encoding. | |
| 88 | - `cenc.int8` - Encodes a fixed size int8 using `cenc.uint8` with ZigZag encoding. | |
| 89 | - `cenc.int16` - Encodes a fixed size int16 using `cenc.uint16` with ZigZag encoding. | |
| 90 | - `cenc.int24` - Encodes a fixed size int24 using `cenc.uint24` with ZigZag encoding. | |
| 91 | - `cenc.int32` - Encodes a fixed size int32 using `cenc.uint32` with ZigZag encoding. | |
| 92 | - `cenc.int40` - Encodes a fixed size int40 using `cenc.uint40` with ZigZag encoding. | |
| 93 | - `cenc.int48` - Encodes a fixed size int48 using `cenc.uint48` with ZigZag encoding. | |
| 94 | - `cenc.int56` - Encodes a fixed size int56 using `cenc.uint56` with ZigZag encoding. | |
| 95 | - `cenc.int64` - Encodes a fixed size int64 using `cenc.uint64` with ZigZag encoding. | |
| 96 | - `cenc.biguint64` - Encodes a fixed size biguint64. | |
| 97 | - `cenc.bigint64` - Encodes a fixed size bigint64 using `cenc.biguint64` with ZigZag encoding. | |
| 98 | - `cenc.biguint` - Encodes a biguint with its word count uint prefixed. | |
| 99 | - `cenc.bigint` - Encodes a bigint using `cenc.biguint` with ZigZag encoding. | |
| 100 | - `cenc.float32` - Encodes a fixed size float32. | |
| 101 | - `cenc.float64` - Encodes a fixed size float64. | |
| 102 | - `cenc.buffer` - Encodes a buffer with its length uint prefixed. When decoding an empty buffer, `null` is returned. | |
| 103 | - `cenc.raw.buffer` - Encodes a buffer without a length prefixed. | |
| 104 | - `cenc.arraybuffer` - Encodes an arraybuffer with its length uint prefixed. | |
| 105 | - `cenc.raw.arraybuffer` - Encodes an arraybuffer without a length prefixed. | |
| 106 | - `cenc.uint8array` - Encodes a uint8array with its element length uint prefixed. | |
| 107 | - `cenc.raw.uint8array` - Encodes a uint8array without a length prefixed. | |
| 108 | - `cenc.uint16array` - Encodes a uint16array with its element length uint prefixed. | |
| 109 | - `cenc.raw.uint16array` - Encodes a uint16array without a length prefixed. | |
| 110 | - `cenc.uint32array` - Encodes a uint32array with its element length uint prefixed. | |
| 111 | - `cenc.raw.uint32array` - Encodes a uint32array without a length prefixed. | |
| 112 | - `cenc.int8array` - Encodes a int8array with its element length uint prefixed. | |
| 113 | - `cenc.raw.int8array` - Encodes a int8array without a length prefixed. | |
| 114 | - `cenc.int16array` - Encodes a int16array with its element length uint prefixed. | |
| 115 | - `cenc.raw.int16array` - Encodes a int16array without a length prefixed. | |
| 116 | - `cenc.int32array` - Encodes a int32array with its element length uint prefixed. | |
| 117 | - `cenc.raw.int32array` - Encodes a int32array without a length prefixed. | |
| 118 | - `cenc.biguint64array` - Encodes a biguint64array with its element length uint prefixed. | |
| 119 | - `cenc.raw.biguint64array` - Encodes a biguint64array without a length prefixed. | |
| 120 | - `cenc.bigint64array` - Encodes a bigint64array with its element length uint prefixed. | |
| 121 | - `cenc.raw.bigint64array` - Encodes a bigint64array without a length prefixed. | |
| 122 | - `cenc.float32array` - Encodes a float32array with its element length uint prefixed. | |
| 123 | - `cenc.raw.float32array` - Encodes a float32array without a length prefixed. | |
| 124 | - `cenc.float64array` - Encodes a float64array with its element length uint prefixed. | |
| 125 | - `cenc.raw.float64array` - Encodes a float64array without a length prefixed. | |
| 126 | - `cenc.bool` - Encodes a boolean as 1 or 0. | |
| 127 | - `cenc.string`, `cenc.utf8` - Encodes a utf-8 string, similar to buffer. | |
| 128 | - `cenc.raw.string`, `cenc.raw.utf8` - Encodes a utf-8 string without a length prefixed. | |
| 129 | - `cenc.string.fixed(n)`, `cenc.utf8.fixed(n)` - Encodes a fixed sized utf-8 string. | |
| 130 | - `cenc.ascii` - Encodes an ascii string. | |
| 131 | - `cenc.raw.ascii` - Encodes an ascii string without a length prefixed. | |
| 132 | - `cenc.ascii.fixed(n)` - Encodes a fixed size ascii string. | |
| 133 | - `cenc.hex` - Encodes a hex string. | |
| 134 | - `cenc.raw.hex` - Encodes a hex string without a length prefixed. | |
| 135 | - `cenc.hex.fixed(n)` - Encodes a fixed size hex string. | |
| 136 | - `cenc.base64` - Encodes a base64 string. | |
| 137 | - `cenc.raw.base64` - Encodes a base64 string without a length prefixed. | |
| 138 | - `cenc.base64.fixed(n)` - Encodes a fixed size base64 string. | |
| 139 | - `cenc.utf16le`, `cenc.ucs2` - Encodes a utf16le string. | |
| 140 | - `cenc.raw.utf16le`, `cenc.raw.ucs2` - Encodes a utf16le string without a length prefixed. | |
| 141 | - `cenc.utf16le.fixed(n)`, `cenc.ucs2.fixed(n)` - Encodes a fixed size utf16le string. | |
| 142 | - `cenc.fixed32` - Encodes a fixed 32 byte buffer. | |
| 143 | - `cenc.fixed64` - Encodes a fixed 64 byte buffer. | |
| 144 | - `cenc.fixed(n)` - Makes a fixed sized encoder. | |
| 145 | - `cenc.date(d)` - Encodes a date object. | |
| 146 | - `cenc.array(enc)` - Makes an array encoder from another encoder. Arrays are uint prefixed with their length. | |
| 147 | - `cenc.raw.array(enc)` - Makes an array encoder from another encoder, without a length prefixed. | |
| 148 | - `cenc.json` - Encodes a JSON value as utf-8. | |
| 149 | - `cenc.raw.json` - Encodes a JSON value as utf-8 without a length prefixed. | |
| 150 | - `cenc.ndjson` - Encodes a JSON value as newline delimited utf-8. | |
| 151 | - `cenc.raw.ndjson` - Encodes a JSON value as newline delimited utf-8 without a length prefixed. | |
| 152 | - `cenc.any` - Encodes any JSON representable value into a self described buffer. Like JSON + buffer, but using compact types. Useful for schemaless codecs. | |
| 153 | - `cenc.port` - Encodes a port number for network addresses. | |
| 154 | - `cenc.ipv4` - Encodes an IPv4 network address. | |
| 155 | - `cenc.ipv4Address` Encodes an IPv4 network address and a port number. | |
| 156 | - `cenc.ipv6` - Encodes an IPv6 network address. | |
| 157 | - `cenc.ipv6Address` Encodes an IPv6 network address and a port number. | |
| 158 | - `cenc.ip` - Encodes a dual IPv4/6 network address. | |
| 159 | - `cenc.ipAddress` Encodes a dual IPv4/6 network address and a port number. | |
| 160 | - `cenc.from(enc)` - Makes a compact encoder from a [codec](https://github.com/mafintosh/codecs) or [abstract-encoding](https://github.com/mafintosh/abstract-encoding). | |
| 161 | - `cenc.none` - Helper for when you want to just express nothing | |
| 162 | ||
| 163 | ## License | |
| 164 | ||
| 165 | Apache 2.0 |
| … | … | @@ -0,0 +1 @@ |
| 1 | const r=exports.LE=255===new Uint8Array(new Uint16Array([255]).buffer)[0];exports.BE=!r; |
| … | … | @@ -0,0 +1 @@ |
| 1 | const e=require("b4a"),{BE:t}=require("./endian");exports.state=function(e=0,t=0,r=null){return{start:e,end:t,buffer:r}};const r=exports.raw=require("./raw"),n=exports.uint={preencode(e,t){e.end+=t<=252?1:t<=65535?3:t<=4294967295?5:9},encode(e,t){t<=252?o.encode(e,t):t<=65535?(e.buffer[e.start++]=253,d.encode(e,t)):t<=4294967295?(e.buffer[e.start++]=254,c.encode(e,t)):(e.buffer[e.start++]=255,i.encode(e,t))},decode(e){const t=o.decode(e);return t<=252?t:253===t?d.decode(e):254===t?c.decode(e):i.decode(e)}},o=exports.uint8={preencode(e,t){e.end+=1},encode(e,t){R(t),e.buffer[e.start++]=t},decode(e){if(e.start>=e.end)throw new Error("Out of bounds");return e.buffer[e.start++]}},d=exports.uint16={preencode(e,t){e.end+=2},encode(e,t){R(t),e.buffer[e.start++]=t,e.buffer[e.start++]=t>>>8},decode(e){if(e.end-e.start<2)throw new Error("Out of bounds");return e.buffer[e.start++]+256*e.buffer[e.start++]}},s=exports.uint24={preencode(e,t){e.end+=3},encode(e,t){R(t),e.buffer[e.start++]=t,e.buffer[e.start++]=t>>>8,e.buffer[e.start++]=t>>>16},decode(e){if(e.end-e.start<3)throw new Error("Out of bounds");return e.buffer[e.start++]+256*e.buffer[e.start++]+65536*e.buffer[e.start++]}},c=exports.uint32={preencode(e,t){e.end+=4},encode(e,t){R(t),e.buffer[e.start++]=t,e.buffer[e.start++]=t>>>8,e.buffer[e.start++]=t>>>16,e.buffer[e.start++]=t>>>24},decode(e){if(e.end-e.start<4)throw new Error("Out of bounds");return e.buffer[e.start++]+256*e.buffer[e.start++]+65536*e.buffer[e.start++]+16777216*e.buffer[e.start++]}},f=exports.uint40={preencode(e,t){e.end+=5},encode(e,t){R(t);const r=Math.floor(t/256);o.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<5)throw new Error("Out of bounds");return o.decode(e)+256*c.decode(e)}},u=exports.uint48={preencode(e,t){e.end+=6},encode(e,t){R(t);const r=Math.floor(t/65536);d.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<6)throw new Error("Out of bounds");return d.decode(e)+65536*c.decode(e)}},a=exports.uint56={preencode(e,t){e.end+=7},encode(e,t){R(t);const r=Math.floor(t/16777216);s.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<7)throw new Error("Out of bounds");return s.decode(e)+16777216*c.decode(e)}},i=exports.uint64={preencode(e,t){e.end+=8},encode(e,t){R(t);const r=Math.floor(t/4294967296);c.encode(e,t),c.encode(e,r)},decode(e){if(e.end-e.start<8)throw new Error("Out of bounds");return c.decode(e)+4294967296*c.decode(e)}},p=exports.int=k(n);exports.int8=k(o),exports.int16=k(d),exports.int24=k(s),exports.int32=k(c),exports.int40=k(f),exports.int48=k(u),exports.int56=k(a),exports.int64=k(i);const b=exports.biguint64={preencode(e,t){e.end+=8},encode(e,t){new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).setBigUint64(0,t,!0),e.start+=8},decode(e){if(e.end-e.start<8)throw new Error("Out of bounds");const t=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).getBigUint64(0,!0);return e.start+=8,t}};exports.bigint64=q(b);const l=exports.biguint={preencode(e,t){let r=0;for(let e=t;e;e>>=64n)r++;n.preencode(e,r),e.end+=8*r},encode(e,t){let r=0;for(let e=t;e;e>>=64n)r++;n.encode(e,r);const o=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8*r);for(let e=t,r=0;e;e>>=64n,r+=8)o.setBigUint64(r,BigInt.asUintN(64,e),!0);e.start+=8*r},decode(e){const t=n.decode(e);if(e.end-e.start<8*t)throw new Error("Out of bounds");const r=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8*t);let o=0n;for(let e=t-1;e>=0;e--)o=(o<<64n)+r.getBigUint64(8*e,!0);return e.start+=8*t,o}};exports.bigint=q(l),exports.lexint=require("./lexint"),exports.float32={preencode(e,t){e.end+=4},encode(e,t){new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,4).setFloat32(0,t,!0),e.start+=4},decode(e){if(e.end-e.start<4)throw new Error("Out of bounds");const t=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,4).getFloat32(0,!0);return e.start+=4,t}},exports.float64={preencode(e,t){e.end+=8},encode(e,t){new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).setFloat64(0,t,!0),e.start+=8},decode(e){if(e.end-e.start<8)throw new Error("Out of bounds");const t=new DataView(e.buffer.buffer,e.start+e.buffer.byteOffset,8).getFloat64(0,!0);return e.start+=8,t}};const x=exports.buffer={preencode(e,t){t?y.preencode(e,t):e.end++},encode(e,t){t?y.encode(e,t):e.buffer[e.start++]=0},decode(e){const t=n.decode(e);if(0===t)return null;if(e.end-e.start<t)throw new Error("Out of bounds");return e.buffer.subarray(e.start,e.start+=t)}};function w(e,r){const o=e.BYTES_PER_ELEMENT;return{preencode(e,t){n.preencode(e,t.length),e.end+=t.byteLength},encode(e,o){n.encode(e,o.length);const d=new Uint8Array(o.buffer,o.byteOffset,o.byteLength);t&&r&&r(d),e.buffer.set(d,e.start),e.start+=o.byteLength},decode(d){const s=n.decode(d);let c=d.buffer.subarray(d.start,d.start+=s*o);if(c.byteLength!==s*o)throw new Error("Out of bounds");return c.byteOffset%o!==0&&(c=new Uint8Array(c)),t&&r&&r(c),new e(c.buffer,c.byteOffset,c.byteLength/o)}}}exports.binary={...x,preencode(e,t){"string"==typeof t?g.preencode(e,t):x.preencode(e,t)},encode(e,t){"string"==typeof t?g.encode(e,t):x.encode(e,t)}},exports.arraybuffer={preencode(e,t){n.preencode(e,t.byteLength),e.end+=t.byteLength},encode(e,t){n.encode(e,t.byteLength);const r=new Uint8Array(t);e.buffer.set(r,e.start),e.start+=t.byteLength},decode(e){const t=n.decode(e),r=new ArrayBuffer(t);return new Uint8Array(r).set(e.buffer.subarray(e.start,e.start+=t)),r}};const y=exports.uint8array=w(Uint8Array);function h(t){return{preencode(r,o){const d=e.byteLength(o,t);n.preencode(r,d),r.end+=d},encode(r,o){const d=e.byteLength(o,t);n.encode(r,d),e.write(r.buffer,o,r.start,t),r.start+=d},decode(r){const o=n.decode(r);if(r.end-r.start<o)throw new Error("Out of bounds");return e.toString(r.buffer,t,r.start,r.start+=o)},fixed:r=>({preencode(e){e.end+=r},encode(n,o){e.write(n.buffer,o,n.start,r,t),n.start+=r},decode(n){if(n.end-n.start<r)throw new Error("Out of bounds");return e.toString(n.buffer,t,n.start,n.start+=r)}})}}exports.uint16array=w(Uint16Array,e.swap16),exports.uint32array=w(Uint32Array,e.swap32),exports.int8array=w(Int8Array),exports.int16array=w(Int16Array,e.swap16),exports.int32array=w(Int32Array,e.swap32),exports.biguint64array=w(BigUint64Array,e.swap64),exports.bigint64array=w(BigInt64Array,e.swap64),exports.float32array=w(Float32Array,e.swap32),exports.float64array=w(Float64Array,e.swap64);const g=exports.string=exports.utf8=h("utf-8");exports.ascii=h("ascii"),exports.hex=h("hex"),exports.base64=h("base64"),exports.ucs2=exports.utf16le=h("utf16le"),exports.bool={preencode(e,t){e.end++},encode(e,t){e.buffer[e.start++]=t?1:0},decode(e){if(e.start>=e.end)throw Error("Out of bounds");return 1===e.buffer[e.start++]}};const O=exports.fixed=function(e){return{preencode(t,r){if(r.byteLength!==e)throw new Error("Incorrect buffer size");t.end+=e},encode(t,r){t.buffer.set(r,t.start),t.start+=e},decode(t){if(t.end-t.start<e)throw new Error("Out of bounds");return t.buffer.subarray(t.start,t.start+=e)}}};exports.fixed32=O(32),exports.fixed64=O(64),exports.array=function(e){return{preencode(t,r){n.preencode(t,r.length);for(let n=0;n<r.length;n++)e.preencode(t,r[n])},encode(t,r){n.encode(t,r.length);for(let n=0;n<r.length;n++)e.encode(t,r[n])},decode(t){const r=n.decode(t);if(r>1048576)throw new Error("Array is too big");const o=new Array(r);for(let n=0;n<r;n++)o[n]=e.decode(t);return o}}},exports.frame=function(e){const t=exports.state();return{preencode(t,r){const o=t.end;e.preencode(t,r),n.preencode(t,t.end-o)},encode(r,o){t.end=0,e.preencode(t,o),n.encode(r,t.end),e.encode(r,o)},decode(t){const r=t.end,o=n.decode(t);t.end=t.start+o;const d=e.decode(t);return t.start=t.end,t.end=r,d}}},exports.date={preencode(e,t){p.preencode(e,t.getTime())},encode(e,t){p.encode(e,t.getTime())},decode:(e,t)=>new Date(p.decode(e))},exports.json={preencode(e,t){g.preencode(e,JSON.stringify(t))},encode(e,t){g.encode(e,JSON.stringify(t))},decode:e=>JSON.parse(g.decode(e))},exports.ndjson={preencode(e,t){g.preencode(e,JSON.stringify(t)+"\n")},encode(e,t){g.encode(e,JSON.stringify(t)+"\n")},decode:e=>JSON.parse(g.decode(e))},exports.none={preencode(e,t){},encode(e,t){},decode:e=>null};const E={preencode(e,t){n.preencode(e,t.length);for(let r=0;r<t.length;r++)S.preencode(e,t[r])},encode(e,t){n.encode(e,t.length);for(let r=0;r<t.length;r++)S.encode(e,t[r])},decode(e){const t=[];let r=n.decode(e);for(;r-- >0;)t.push(S.decode(e));return t}},A={preencode(e,t){const r=Object.keys(t);n.preencode(e,r.length);for(const n of r)g.preencode(e,n),S.preencode(e,t[n])},encode(e,t){const r=Object.keys(t);n.encode(e,r.length);for(const n of r)g.encode(e,n),S.encode(e,t[n])},decode(e){let t=n.decode(e);const r={};for(;t-- >0;)r[g.decode(e)]=S.decode(e);return r}},L=[exports.none,exports.bool,exports.string,exports.buffer,exports.uint,exports.int,exports.float64,E,A,exports.date],S=exports.any={preencode(e,t){const r=V(t);n.preencode(e,r),L[r].preencode(e,t)},encode(e,t){const r=V(t);n.encode(e,r),L[r].encode(e,t)},decode(e){const t=n.decode(e);if(t>=L.length)throw new Error("Unknown type: "+t);return L[t].decode(e)}},U=exports.port=d,j=(e,t)=>({preencode(t,r){e.preencode(t,r.host),U.preencode(t,r.port)},encode(t,r){e.encode(t,r.host),U.encode(t,r.port)},decode:r=>({host:e.decode(r),family:t,port:U.decode(r)})}),B=exports.ipv4={preencode(e){e.end+=4},encode(e,t){const r=e.start+4;let n=0;for(;n<t.length;){let r,o=0;for(;n<t.length&&46!==(r=t.charCodeAt(n++));)o=10*o+(r-48);e.buffer[e.start++]=o}e.start=r},decode(e){if(e.end-e.start<4)throw new Error("Out of bounds");return e.buffer[e.start++]+"."+e.buffer[e.start++]+"."+e.buffer[e.start++]+"."+e.buffer[e.start++]}};exports.ipv4Address=j(B,4);const D=exports.ipv6={preencode(e){e.end+=16},encode(e,t){const r=e.start+16;let n=0,o=null;for(;n<t.length;){let r,d=0;for(;n<t.length&&58!==(r=t.charCodeAt(n++));)r>=48&&r<=57?d=16*d+(r-48):r>=65&&r<=70?d=16*d+(r-65+10):r>=97&&r<=102&&(d=16*d+(r-97+10));e.buffer[e.start++]=d>>>8,e.buffer[e.start++]=d,n<t.length&&58===t.charCodeAt(n)&&(n++,o=e.start)}if(null!==o){const t=r-e.start;e.buffer.copyWithin(o+t,o).fill(0,o,o+t)}e.start=r},decode(e){if(e.end-e.start<16)throw new Error("Out of bounds");return(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)+":"+(256*e.buffer[e.start++]+e.buffer[e.start++]).toString(16)}};exports.ipv6Address=j(D,6);const m=exports.ip={preencode(e,t){const r=t.includes(":")?6:4;o.preencode(e,r),4===r?B.preencode(e):D.preencode(e)},encode(e,t){const r=t.includes(":")?6:4;o.encode(e,r),4===r?B.encode(e,t):D.encode(e,t)},decode:e=>4===o.decode(e)?B.decode(e):D.decode(e)};exports.ipAddress={preencode(e,t){m.preencode(e,t.host),U.preencode(e,t.port)},encode(e,t){m.encode(e,t.host),U.encode(e,t.port)},decode(e){const t=o.decode(e);return{host:4===t?B.decode(e):D.decode(e),family:t,port:U.decode(e)}}};const N=exports.record=function(e,t){return{preencode(r,o){const d=Object.keys(o);n.preencode(r,d.length);for(const n of d)e.preencode(r,n),t.preencode(r,o[n])},encode(r,o){const d=Object.keys(o);n.encode(r,d.length);for(const n of d)e.encode(r,n),t.encode(r,o[n])},decode(r){const o=Object.create(null),d=n.decode(r);for(let n=0;n<d;n++)o[e.decode(r)]=t.decode(r);return o}}};function V(t){if(null==t)return 0;if("boolean"==typeof t)return 1;if("string"==typeof t)return 2;if(e.isBuffer(t))return 3;if("number"==typeof t)return Number.isInteger(t)?t>=0?4:5:6;if(Array.isArray(t))return 7;if(t instanceof Date)return 9;if("object"==typeof t)return 8;throw new Error("Unsupported type for "+t)}function I(e){switch(e){case"ascii":return r.ascii;case"utf-8":case"utf8":return r.utf8;case"hex":return r.hex;case"base64":return r.base64;case"utf16-le":case"utf16le":case"ucs-2":case"ucs2":return r.ucs2;case"ndjson":return r.ndjson;case"json":return r.json;default:return r.binary}}function F(e){let t=null,n=null;return{preencode(r,o){t=o,n=e.encode(o),r.end+=n.byteLength},encode(o,d){r.encode(o,d===t?n:e.encode(d)),t=n=null},decode:t=>e.decode(r.decode(t))}}function J(e){return{preencode(t,r){t.end+=e.encodingLength(r)},encode(t,r){e.encode(r,t.buffer,t.start),t.start+=e.encode.bytes},decode(t){const r=e.decode(t.buffer,t.start,t.end);return t.start+=e.decode.bytes,r}}}function k(e){return{preencode(t,r){e.preencode(t,M(r))},encode(t,r){e.encode(t,M(r))},decode:t=>v(e.decode(t))}}function v(e){return 0===e?e:1&e?-(e+1)/2:e/2}function M(e){return e<0?2*-e-1:0===e?0:2*e}function q(e){return{preencode(t,r){e.preencode(t,C(r))},encode(t,r){e.encode(t,C(r))},decode:t=>T(e.decode(t))}}function T(e){return 0n===e?e:0n==(1n&e)?e/2n:-(e+1n)/2n}function C(e){return e<0n?2n*-e-1n:0n===e?0n:2n*e}function R(e){if(e>=0==0)throw new Error("uint must be positive")}exports.stringRecord=N(g,g),exports.from=function(e){return"string"==typeof e?I(e):e.preencode?e:e.encodingLength?J(e):F(e)},exports.encode=function(t,r){const n=exports.state();return t.preencode(n,r),n.buffer=e.allocUnsafe(n.end),t.encode(n,r),n.buffer},exports.decode=function(e,t){return e.decode(exports.state(0,t.byteLength,t))}; |
| … | … | @@ -0,0 +1 @@ |
| 1 | function t(r,f){f<251?r.end++:f<256?r.end+=2:f<65536?r.end+=3:f<16777216?r.end+=4:f<4294967296?r.end+=5:(r.end++,t(r,Math.floor(Math.log(f)/Math.log(2))-32),r.end+=6)}function r(t,f){const e=f-251;if(f<251)t.buffer[t.start++]=f;else if(f<256)t.buffer[t.start++]=251,t.buffer[t.start++]=e;else if(f<65536)t.buffer[t.start++]=252,t.buffer[t.start++]=e>>8&255,t.buffer[t.start++]=255&e;else if(f<16777216)t.buffer[t.start++]=253,t.buffer[t.start++]=e>>16,t.buffer[t.start++]=e>>8&255,t.buffer[t.start++]=255&e;else if(f<4294967296)t.buffer[t.start++]=254,t.buffer[t.start++]=e>>24,t.buffer[t.start++]=e>>16&255,t.buffer[t.start++]=e>>8&255,t.buffer[t.start++]=255&e;else{const f=Math.floor(Math.log(e)/Math.log(2))-32;t.buffer[t.start++]=255,r(t,f);const s=e/Math.pow(2,f-11);for(let r=5;r>=0;r--)t.buffer[t.start++]=s/Math.pow(2,8*r)&255}}function f(t){const r=251;if(t.end-t.start<1)throw new Error("Out of bounds");const e=t.buffer[t.start++];if(e<r)return e;if(t.end-t.start<e-r+1)throw new Error("Out of bounds.");if(e<252)return t.buffer[t.start++]+r;if(e<253)return(t.buffer[t.start++]<<8)+t.buffer[t.start++]+r;if(e<254)return(t.buffer[t.start++]<<16)+(t.buffer[t.start++]<<8)+t.buffer[t.start++]+r;if(e<255)return 16777216*t.buffer[t.start++]+(t.buffer[t.start++]<<16)+(t.buffer[t.start++]<<8)+t.buffer[t.start++]+r;const s=f(t);if(t.end-t.start<6)throw new Error("Out of bounds");let u=0;for(let r=5;r>=0;r--)u+=t.buffer[t.start++]*Math.pow(2,8*r);return u*Math.pow(2,s-11)+r}module.exports={preencode:t,encode:r,decode:f}; |
| … | … | @@ -0,0 +1,28 @@ |
| 1 | { | |
| 2 | "name": "compact-encoding", | |
| 3 | "version": "2.19.2", | |
| 4 | "description": "A series of compact encoding schemes for building small and fast parsers and serializers", | |
| 5 | "main": "index.js", | |
| 6 | "dependencies": { | |
| 7 | "b4a": "^1.3.0" | |
| 8 | }, | |
| 9 | "devDependencies": { | |
| 10 | "brittle": "^3.0.0", | |
| 11 | "prettier": "^3.6.2", | |
| 12 | "prettier-config-holepunch": "^1.0.0" | |
| 13 | }, | |
| 14 | "scripts": { | |
| 15 | "format": "prettier . --write", | |
| 16 | "test": "prettier . --check && brittle test.js" | |
| 17 | }, | |
| 18 | "repository": { | |
| 19 | "type": "git", | |
| 20 | "url": "https://github.com/holepunchto/compact-encoding.git" | |
| 21 | }, | |
| 22 | "author": "Mathias Buus (@mafintosh)", | |
| 23 | "license": "Apache-2.0", | |
| 24 | "bugs": { | |
| 25 | "url": "https://github.com/holepunchto/compact-encoding/issues" | |
| 26 | }, | |
| 27 | "homepage": "https://github.com/holepunchto/compact-encoding" | |
| 28 | } |
| … | … | @@ -0,0 +1 @@ |
| 1 | const e=require("b4a"),{BE:r}=require("./endian");exports=module.exports={preencode(e,r){e.end+=r.byteLength},encode(e,r){e.buffer.set(r,e.start),e.start+=r.byteLength},decode(e){const r=e.buffer.subarray(e.start,e.end);return e.start=e.end,r}};const t=exports.buffer={preencode(e,r){r?o.preencode(e,r):e.end++},encode(e,r){r?o.encode(e,r):e.buffer[e.start++]=0},decode(e){const r=e.buffer.subarray(e.start);return 0===r.byteLength?null:(e.start=e.end,r)}};function n(e,t){const n=e.BYTES_PER_ELEMENT;return{preencode(e,r){e.end+=r.byteLength},encode(e,n){const o=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);r&&t&&t(o),e.buffer.set(o,e.start),e.start+=n.byteLength},decode(o){let s=o.buffer.subarray(o.start);return s.byteOffset%n!==0&&(s=new Uint8Array(s)),r&&t&&t(s),o.start=o.end,new e(s.buffer,s.byteOffset,s.byteLength/n)}}}exports.binary={...t,preencode(e,r){"string"==typeof r?a.preencode(e,r):t.preencode(e,r)},encode(e,r){"string"==typeof r?a.encode(e,r):t.encode(e,r)}},exports.arraybuffer={preencode(e,r){e.end+=r.byteLength},encode(e,r){const t=new Uint8Array(r);e.buffer.set(t,e.start),e.start+=r.byteLength},decode(e){const r=new ArrayBuffer(e.end-e.start);return new Uint8Array(r).set(e.buffer.subarray(e.start)),e.start=e.end,r}};const o=exports.uint8array=n(Uint8Array);function s(r){return{preencode(t,n){t.end+=e.byteLength(n,r)},encode(t,n){t.start+=e.write(t.buffer,n,t.start,r)},decode(t){const n=e.toString(t.buffer,r,t.start);return t.start=t.end,n}}}exports.uint16array=n(Uint16Array,e.swap16),exports.uint32array=n(Uint32Array,e.swap32),exports.int8array=n(Int8Array),exports.int16array=n(Int16Array,e.swap16),exports.int32array=n(Int32Array,e.swap32),exports.biguint64array=n(BigUint64Array,e.swap64),exports.bigint64array=n(BigInt64Array,e.swap64),exports.float32array=n(Float32Array,e.swap32),exports.float64array=n(Float64Array,e.swap64);const a=exports.string=exports.utf8=s("utf-8");exports.ascii=s("ascii"),exports.hex=s("hex"),exports.base64=s("base64"),exports.ucs2=exports.utf16le=s("utf16le"),exports.array=function(e){return{preencode(r,t){for(const n of t)e.preencode(r,n)},encode(r,t){for(const n of t)e.encode(r,n)},decode(r){const t=[];for(;r.start<r.end;)t.push(e.decode(r));return t}}},exports.json={preencode(e,r){a.preencode(e,JSON.stringify(r))},encode(e,r){a.encode(e,JSON.stringify(r))},decode:e=>JSON.parse(a.decode(e))},exports.ndjson={preencode(e,r){a.preencode(e,JSON.stringify(r)+"\n")},encode(e,r){a.encode(e,JSON.stringify(r)+"\n")},decode:e=>JSON.parse(a.decode(e))}; |
| … | … | @@ -0,0 +1 @@ |
| 1 | const e=require("./"),t=require("brittle"),a=require("b4a");t("uint",function(t){const n=e.state();e.uint.preencode(n,42),t.alike(n,e.state(0,1)),e.uint.preencode(n,4200),t.alike(n,e.state(0,4)),e.uint.preencode(n,Number.MAX_SAFE_INTEGER),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.uint.encode(n,42),t.alike(n,e.state(1,13,a.from([42,0,0,0,0,0,0,0,0,0,0,0,0]))),e.uint.encode(n,4200),t.alike(n,e.state(4,13,a.from([42,253,104,16,0,0,0,0,0,0,0,0,0]))),e.uint.encode(n,Number.MAX_SAFE_INTEGER),t.alike(n,e.state(13,13,a.from([42,253,104,16,255,255,255,255,255,255,255,31,0]))),n.start=0,t.is(e.uint.decode(n),42),t.is(e.uint.decode(n),4200),t.is(e.uint.decode(n),Number.MAX_SAFE_INTEGER),t.is(n.start,n.end),t.exception(()=>e.uint.decode(n))}),t("int",function(t){const n=e.state();e.int.preencode(n,42),t.alike(n,e.state(0,1)),e.int.preencode(n,-4200),t.alike(n,e.state(0,4)),n.buffer=a.alloc(n.end),e.int.encode(n,42),t.alike(n,e.state(1,4,a.from([84,0,0,0]))),e.int.encode(n,-4200),t.alike(n,e.state(4,4,a.from([84,253,207,32]))),n.start=0,t.is(e.int.decode(n),42),t.is(e.int.decode(n),-4200),t.is(n.start,n.end),t.exception(()=>e.int.decode(n))}),t("float64",function(t){const n=e.state();e.float64.preencode(n,162.2377294),t.alike(n,e.state(0,8)),n.buffer=a.alloc(n.end),t.alike(n,e.state(0,8,a.from([0,0,0,0,0,0,0,0]))),e.float64.encode(n,162.2377294),t.alike(n,e.state(8,8,a.from([135,201,175,122,155,71,100,64]))),n.start=0,t.is(e.float64.decode(n),162.2377294),t.is(n.start,n.end),t.exception(()=>e.float64.decode(n)),n.start=0,n.end=0,n.buffer=null,e.int.preencode(n,0),e.float64.preencode(n,162.2377294),t.alike(n,e.state(0,9)),n.buffer=a.alloc(n.end),t.alike(n,e.state(0,9,a.from([0,0,0,0,0,0,0,0,0]))),e.int.encode(n,0),e.float64.encode(n,162.2377294),t.alike(n,e.state(9,9,a.from([0,135,201,175,122,155,71,100,64]))),n.start=0,t.is(e.int.decode(n),0),t.is(e.float64.decode(n),162.2377294),t.is(n.start,n.end);const o=a.alloc(10);n.start=0,n.buffer=o.subarray(1),t.alike(n,e.state(0,9,a.from([0,0,0,0,0,0,0,0,0]))),e.int.encode(n,0),e.float64.encode(n,162.2377294),t.alike(n,e.state(9,9,a.from([0,135,201,175,122,155,71,100,64]))),t.alike(o,a.from([0,0,135,201,175,122,155,71,100,64])),n.start=0,t.is(e.int.decode(n),0),t.is(e.float64.decode(n),162.2377294),t.is(n.start,n.end),n.start=0,n.end=0,n.buffer=null,e.float64.preencode(n,162.2377294),n.buffer=a.alloc(n.end),e.float64.encode(n,0),t.alike(n,e.state(8,8,a.from([0,0,0,0,0,0,0,0]))),n.start=0,t.is(e.float64.decode(n),0),t.is(n.start,n.end),n.start=0,n.end=0,n.buffer=null,e.float64.preencode(n,1/0),n.buffer=a.alloc(n.end),e.float64.encode(n,1/0),t.alike(n,e.state(8,8,a.from([0,0,0,0,0,0,240,127]))),n.start=0,t.is(e.float64.decode(n),1/0),t.is(n.start,n.end),n.start=0,n.end=0,n.buffer=null,e.float64.preencode(n,.1+.2),n.buffer=a.alloc(n.end),e.float64.encode(n,.1+.2),t.alike(n,e.state(8,8,a.from([52,51,51,51,51,51,211,63]))),n.start=0,t.is(e.float64.decode(n),.1+.2),t.is(n.start,n.end)}),t("biguint64",function(t){const n=e.state(),o=0x0102030405060708n;e.biguint64.preencode(n,o),t.alike(n,e.state(0,8)),n.buffer=a.alloc(n.end),e.biguint64.encode(n,o),t.alike(n,e.state(8,8,a.from([8,7,6,5,4,3,2,1]))),n.start=0,t.is(e.biguint64.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.biguint64.decode(n))}),t("bigint64",function(t){const n=e.state(),o=-0x0102030405060708n;e.bigint64.preencode(n,o),t.alike(n,e.state(0,8)),n.buffer=a.alloc(n.end),e.bigint64.encode(n,o),t.alike(n,e.state(8,8,a.from([15,14,12,10,8,6,4,2]))),n.start=0,t.is(e.bigint64.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.bigint64.decode(n))}),t("biguint",function(t){const n=e.state(),o=0x0102030405060708090a0b0cn;e.biguint.preencode(n,o),t.alike(n,e.state(0,17)),n.buffer=a.alloc(n.end),e.biguint.encode(n,o),t.alike(n,e.state(17,17,a.from([2,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0]))),n.start=0,t.is(e.biguint.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.biguint.decode(n))}),t("bigint",function(t){const n=e.state(),o=-0x0102030405060708090a0b0cn;e.bigint.preencode(n,o),t.alike(n,e.state(0,17)),n.buffer=a.alloc(n.end),e.bigint.encode(n,o),t.alike(n,e.state(17,17,a.from([2,23,22,20,18,16,14,12,10,8,6,4,2,0,0,0,0]))),n.start=0,t.is(e.bigint.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.bigint.decode(n))}),t("buffer",function(t){const n=e.state();e.buffer.preencode(n,a.from("hi")),t.alike(n,e.state(0,3)),e.buffer.preencode(n,a.from("hello")),t.alike(n,e.state(0,9)),e.buffer.preencode(n,null),t.alike(n,e.state(0,10)),n.buffer=a.alloc(n.end),e.buffer.encode(n,a.from("hi")),t.alike(n,e.state(3,10,a.from("hi\0\0\0\0\0\0\0"))),e.buffer.encode(n,a.from("hello")),t.alike(n,e.state(9,10,a.from("hihello\0"))),e.buffer.encode(n,null),t.alike(n,e.state(10,10,a.from("hihello\0"))),n.start=0,t.alike(e.buffer.decode(n),a.from("hi")),t.alike(e.buffer.decode(n),a.from("hello")),t.is(e.buffer.decode(n),null),t.is(n.start,n.end),t.exception(()=>e.buffer.decode(n))}),t("arraybuffer",function(t){const n=e.state(),o=new ArrayBuffer(4);a.from(o).fill("a");const r=new ArrayBuffer(8);a.from(r).fill("b"),e.arraybuffer.preencode(n,o),t.alike(n,e.state(0,5)),e.arraybuffer.preencode(n,r),t.alike(n,e.state(0,14)),n.buffer=a.alloc(n.end),e.arraybuffer.encode(n,o),t.alike(n,e.state(5,14,a.from("aaaa\0\0\0\0\0\0\0\0\0"))),e.arraybuffer.encode(n,r),t.alike(n,e.state(14,14,a.from("aaaa\bbbbbbbbb"))),n.start=0,t.alike(e.arraybuffer.decode(n),o),t.alike(e.arraybuffer.decode(n),r),t.is(n.start,n.end),t.exception(()=>e.arraybuffer.decode(n))}),t("raw",function(t){const n=e.state();e.raw.preencode(n,a.from("hi")),t.alike(n,e.state(0,2)),n.buffer=a.alloc(n.end),e.raw.encode(n,a.from("hi")),t.alike(n,e.state(2,2,a.from("hi"))),n.start=0,t.alike(e.raw.decode(n),a.from("hi")),t.is(n.start,n.end)}),t("raw uint8array",function(t){const n=e.state();e.raw.uint8array.preencode(n,Uint8Array.of(1,2)),t.alike(n,e.state(0,2)),e.raw.uint8array.preencode(n,Uint8Array.of(3,4)),t.alike(n,e.state(0,4)),n.buffer=a.alloc(n.end),e.raw.uint8array.encode(n,Uint8Array.of(1,2)),t.alike(n,e.state(2,4,a.from([1,2,0,0]))),e.raw.uint8array.encode(n,Uint8Array.of(3,4)),t.alike(n,e.state(4,4,a.from([1,2,3,4]))),n.start=0,t.alike(e.raw.uint8array.decode(n),Uint8Array.of(1,2,3,4)),t.alike(e.raw.uint8array.decode(n),Uint8Array.of())}),t("uint16array",function(t){const n=e.state();e.uint16array.preencode(n,new Uint16Array([1,2,3])),t.alike(n,e.state(0,7)),n.buffer=a.alloc(n.end),e.uint16array.encode(n,new Uint16Array([1,2,3])),t.alike(n,e.state(7,7,a.from([3,1,0,2,0,3,0]))),n.start=0,t.alike(e.uint16array.decode(n),new Uint16Array([1,2,3])),t.is(n.start,n.end),t.exception(()=>e.uint16array.decode(n))}),t("uint32array",function(t){const n=e.state();e.uint32array.preencode(n,new Uint32Array([1])),t.alike(n,e.state(0,5)),e.uint32array.preencode(n,new Uint32Array([42,43])),t.alike(n,e.state(0,14)),n.buffer=a.alloc(n.end),e.uint32array.encode(n,new Uint32Array([1])),t.alike(n,e.state(5,14,a.from([1,1,0,0,0,0,0,0,0,0,0,0,0,0]))),e.uint32array.encode(n,new Uint32Array([42,43])),t.alike(n,e.state(14,14,a.from([1,1,0,0,0,2,42,0,0,0,43,0,0,0]))),n.start=0,t.alike(e.uint32array.decode(n),new Uint32Array([1])),t.alike(e.uint32array.decode(n),new Uint32Array([42,43])),t.is(n.start,n.end),t.exception(()=>e.uint32array.decode(n))}),t("int16array",function(t){const n=e.state();e.int16array.preencode(n,new Int16Array([1,-2,3])),t.alike(n,e.state(0,7)),n.buffer=a.alloc(n.end),e.int16array.encode(n,new Int16Array([1,-2,3])),t.alike(n,e.state(7,7,a.from([3,1,0,254,255,3,0]))),n.start=0,t.alike(e.int16array.decode(n),new Int16Array([1,-2,3])),t.is(n.start,n.end),t.exception(()=>e.int16array.decode(n))}),t("int32array",function(t){const n=e.state();e.int32array.preencode(n,new Int32Array([1,-2,3])),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.int32array.encode(n,new Int32Array([1,-2,3])),t.alike(n,e.state(13,13,a.from([3,1,0,0,0,254,255,255,255,3,0,0,0]))),n.start=0,t.alike(e.int32array.decode(n),new Int32Array([1,-2,3])),t.is(n.start,n.end),t.exception(()=>e.int32array.decode(n))}),t("biguint64array",function(t){const n=e.state(),o=new BigUint64Array([0x01020304n,0x05060708n,0x090a0b0cn]);e.biguint64array.preencode(n,o),t.alike(n,e.state(0,25)),n.buffer=a.alloc(n.end),e.biguint64array.encode(n,o),t.alike(n,e.state(25,25,a.from([3,4,3,2,1,0,0,0,0,8,7,6,5,0,0,0,0,12,11,10,9,0,0,0,0]))),n.start=0,t.alike(e.biguint64array.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.biguint64array.decode(n))}),t("bigint64array",function(t){const n=e.state(),o=new BigInt64Array([-0x01020304n,0x05060708n,-0x090a0b0cn]);e.bigint64array.preencode(n,o),t.alike(n,e.state(0,25)),n.buffer=a.alloc(n.end),e.bigint64array.encode(n,o),t.alike(n,e.state(25,25,a.from([3,252,252,253,254,255,255,255,255,8,7,6,5,0,0,0,0,244,244,245,246,255,255,255,255]))),n.start=0,t.alike(e.bigint64array.decode(n),o),t.is(n.start,n.end),t.exception(()=>e.bigint64array.decode(n))}),t("float32array",function(t){const n=e.state();e.float32array.preencode(n,new Float32Array([1.1,-2.2,3.3])),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.float32array.encode(n,new Float32Array([1.1,-2.2,3.3])),t.alike(n,e.state(13,13,a.from([3,205,204,140,63,205,204,12,192,51,51,83,64]))),n.start=0,t.alike(e.float32array.decode(n),new Float32Array([1.1,-2.2,3.3])),t.is(n.start,n.end),t.exception(()=>e.float32array.decode(n))}),t("float64array",function(t){const n=e.state();e.float64array.preencode(n,new Float64Array([1.1,-2.2,3.3])),t.alike(n,e.state(0,25)),n.buffer=a.alloc(n.end),e.float64array.encode(n,new Float64Array([1.1,-2.2,3.3])),t.alike(n,e.state(25,25,a.from([3,154,153,153,153,153,153,241,63,154,153,153,153,153,153,1,192,102,102,102,102,102,102,10,64]))),n.start=0,t.alike(e.float64array.decode(n),new Float64Array([1.1,-2.2,3.3])),t.is(n.start,n.end),t.exception(()=>e.float64array.decode(n))}),t("string",function(t){const n=e.state();e.string.preencode(n,"🌾"),t.alike(n,e.state(0,5)),e.string.preencode(n,"høsten er fin"),t.alike(n,e.state(0,20)),n.buffer=a.alloc(n.end),e.string.encode(n,"🌾"),t.alike(n,e.state(5,20,a.from("🌾\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"))),e.string.encode(n,"høsten er fin"),t.alike(n,e.state(20,20,a.from("🌾høsten er fin"))),n.start=0,t.is(e.string.decode(n),"🌾"),t.is(e.string.decode(n),"høsten er fin"),t.is(n.start,n.end),t.exception(()=>e.string.decode(n))}),t("raw string",function(t){const n=e.state();e.raw.string.preencode(n,"hello"),t.alike(n,e.state(0,5)),e.raw.string.preencode(n," world"),t.alike(n,e.state(0,11)),n.buffer=a.alloc(n.end),e.raw.string.encode(n,"hello"),e.raw.string.encode(n," world"),t.alike(n,e.state(11,11,a.from("hello world"))),n.start=0,t.is(e.raw.string.decode(n),"hello world"),t.is(e.raw.string.decode(n),"")}),t("fixed32",function(t){const n=e.state();e.fixed32.preencode(n,a.alloc(32).fill("a")),t.alike(n,e.state(0,32)),e.fixed32.preencode(n,a.alloc(32).fill("b")),t.alike(n,e.state(0,64)),n.buffer=a.alloc(n.end),e.fixed32.encode(n,a.alloc(32).fill("a")),t.alike(n,e.state(32,64,a.alloc(64).fill("a",0,32))),e.fixed32.encode(n,a.alloc(32).fill("b")),t.alike(n,e.state(64,64,a.alloc(64).fill("a",0,32).fill("b",32,64))),n.start=0,t.alike(e.fixed32.decode(n),a.alloc(32).fill("a")),t.alike(e.fixed32.decode(n),a.alloc(32).fill("b")),t.is(n.start,n.end),t.exception(()=>e.fixed32.decode(n))}),t("fixed64",function(t){const n=e.state();e.fixed64.preencode(n,a.alloc(64).fill("a")),t.alike(n,e.state(0,64)),e.fixed64.preencode(n,a.alloc(64).fill("b")),t.alike(n,e.state(0,128)),n.buffer=a.alloc(n.end),e.fixed64.encode(n,a.alloc(64).fill("a")),t.alike(n,e.state(64,128,a.alloc(128).fill("a",0,64))),e.fixed64.encode(n,a.alloc(64).fill("b")),t.alike(n,e.state(128,128,a.alloc(128).fill("a",0,64).fill("b",64,128))),n.start=0,t.alike(e.fixed64.decode(n),a.alloc(64).fill("a")),t.alike(e.fixed64.decode(n),a.alloc(64).fill("b")),t.is(n.start,n.end),t.exception(()=>e.fixed64.decode(n))}),t("fixed n",function(t){const n=e.state(),o=e.fixed(3);o.preencode(n,a.alloc(3).fill("a")),t.alike(n,e.state(0,3)),o.preencode(n,a.alloc(3).fill("b")),t.alike(n,e.state(0,6)),n.buffer=a.alloc(n.end),o.encode(n,a.alloc(3).fill("a")),t.alike(n,e.state(3,6,a.alloc(6).fill("a",0,3))),o.encode(n,a.alloc(3).fill("b")),t.alike(n,e.state(6,6,a.alloc(6).fill("a",0,3).fill("b",3,6))),n.start=0,t.alike(o.decode(n),a.alloc(3).fill("a")),t.alike(o.decode(n),a.alloc(3).fill("b")),t.is(n.start,n.end),t.exception(()=>o.decode(n)),n.start=4,t.exception(()=>o.decode(n))}),t("error for incorrect buffer sizes when encoding fixed-length buffers",function(t){const n=a.from("aa","hex"),o=a.from("aa".repeat(500),"hex");t.exception(()=>e.encode(e.fixed32,n),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed64,n),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed(100),n),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed32,o),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed64,o),/Incorrect buffer size/),t.exception(()=>e.encode(e.fixed(100),o),/Incorrect buffer size/)}),t("array",function(t){const n=e.state(),o=e.array(e.bool);o.preencode(n,[!0,!1,!0]),t.alike(n,e.state(0,4)),o.preencode(n,[!1,!1,!0,!0]),t.alike(n,e.state(0,9)),n.buffer=a.alloc(n.end),o.encode(n,[!0,!1,!0]),t.alike(n,e.state(4,9,a.from([3,1,0,1,0,0,0,0,0]))),o.encode(n,[!1,!1,!0,!0]),t.alike(n,e.state(9,9,a.from([3,1,0,1,4,0,0,1,1]))),n.start=0,t.alike(o.decode(n),[!0,!1,!0]),t.alike(o.decode(n),[!1,!1,!0,!0]),t.is(n.start,n.end),t.exception(()=>o.decode(n))}),t("raw array",function(t){const n=e.state(),o=e.raw.array(e.bool);o.preencode(n,[!0]),t.alike(n,e.state(0,1)),o.preencode(n,[!0]),t.alike(n,e.state(0,2)),n.buffer=a.alloc(n.end),o.encode(n,[!0]),t.alike(n,e.state(1,2,a.from([1,0]))),o.encode(n,[!0]),t.alike(n,e.state(2,2,a.from([1,1]))),n.start=0,t.alike(o.decode(n),[!0,!0]),t.alike(o.decode(n),[])}),t("json",function(t){const n=e.state();e.json.preencode(n,{a:1,b:2}),t.alike(n,e.state(0,14)),n.buffer=a.alloc(n.end),e.json.encode(n,{a:1,b:2}),t.alike(n,e.state(14,14,a.concat([a.from([13]),a.from('{"a":1,"b":2}')]))),n.start=0,t.alike(e.json.decode(n),{a:1,b:2}),t.exception(()=>e.json.decode(n))}),t("raw json",function(t){const n=e.state();e.raw.json.preencode(n,{a:1,b:2}),t.alike(n,e.state(0,13)),n.buffer=a.alloc(n.end),e.raw.json.encode(n,{a:1,b:2}),t.alike(n,e.state(13,13,a.from('{"a":1,"b":2}'))),n.start=0,t.alike(e.raw.json.decode(n),{a:1,b:2}),t.exception(()=>e.json.decode(n))}),t("lexint: big numbers",function(t){t.plan(1);let n,o=e.encode(e.lexint,0),r=1;for(n=1;n<Number.MAX_VALUE;n+=r){const t=e.encode(e.lexint,n);if(a.compare(t,o)<1)break;o=t,r=1+Math.pow(245,Math.ceil(Math.log(n)/Math.log(256)))}t.is(n,1/0)}),t("lexint: range precision",function(t){t.plan(2);const a=1e55,n=10000000000001e42,o=e.encode(e.lexint,a).toString("hex"),r=e.encode(e.lexint,n).toString("hex");t.not(a,n),t.not(o,r)}),t("lexint: range precision",function(t){let n=e.encode(e.lexint,0);for(let o=0,r=1e55;o<1e3;r=1e55+1e46*++o){const o=e.encode(e.lexint,r);a.compare(o,n)<1&&t.fail("cur <= prev"),n=o}t.ok(!0),t.end()}),t("lexint: small numbers",function(t){let n=e.encode(e.lexint,0);for(let o=1;o<1048576;o++){const r=e.encode(e.lexint,o);a.compare(r,n)<1&&t.fail("cur <= prev"),n=r}t.ok(!0),t.end()}),t("lexint: throws",function(t){t.exception(()=>{e.decode(e.lexint,a.alloc(1,251))});let n=252;const o=e.state();e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n<<=8,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n<<=8,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n*=256,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),n*=65536,o.start=0,o.end=0,o.buffer=null,e.lexint.preencode(o,n),o.buffer=a.alloc(o.end-o.start),e.lexint.encode(o,n),t.exception(()=>{e.decode(e.lexint,o.buffer.subarray(0,o.buffer.byteLength-2))}),t.end()}),t("lexint: unpack",function(t){let a,n=1;for(a=1;a<Number.MAX_VALUE;a+=n){const t=e.encode(e.lexint,a);o(a,e.decode(e.lexint,t)),n=1+Math.pow(245,Math.ceil(Math.log(a)/Math.log(256)))}function o(e,a){const n=e+" !=~ "+a;/e\+\d+$/.test(e)||/e\+\d+$/.test(a)?String(e).slice(0,8)===String(a).slice(0,8)&&/e\+(\d+)$/.exec(e)[1]===/e\+(\d+)$/.exec(a)[1]||t.fail(n):String(e).slice(0,8)===String(a).slice(0,8)&&String(e).length===String(a).length||t.fail(n)}t.is(a,1/0),t.end()}),t("date",function(t){const a=new Date;t.alike(e.decode(e.date,e.encode(e.date,a)),a)}),t("any",function(t){const a={hello:"world",num:42,neg:-42,arr:[{yes:1},{no:!1}],nest:{},today:new Date,float:.54};t.alike(e.decode(e.any,e.encode(e.any,a)),a);const n=new Array(3);t.alike(e.decode(e.any,e.encode(e.any,n)),[null,null,null])}),t("framed",function(t){const n=e.frame(e.uint);t.alike(e.encode(n,42),a.from([1,42])),t.alike(e.decode(n,a.from([1,42])),42),t.alike(e.encode(n,4200),a.from([3,253,104,16])),t.alike(e.decode(n,a.from([3,253,104,16])),4200)}),t("port",function(t){const a=Buffer.from([52,18]);t.alike(e.encode(e.port,4660),a),t.alike(e.decode(e.port,a),4660)}),t("ipv4",function(t){const a="1.2.3.4",n=Buffer.from([1,2,3,4]);t.alike(e.encode(e.ipv4,a),n),t.alike(e.decode(e.ipv4,n),a)}),t("ipv4 + port",function(t){const a="1.2.3.4";t.alike(e.decode(e.ipv4Address,e.encode(e.ipv4Address,{host:a,port:1234})),{host:a,family:4,port:1234})}),t("ipv6",function(t){const a="1:2:3:4:5:6:7:8",n=Buffer.from([0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8]);t.alike(e.encode(e.ipv6,a),n),t.alike(e.decode(e.ipv6,n),a),t.test("abbreviated",function(t){const a=Buffer.from([0,1,0,2,0,0,0,0,0,0,0,0,0,7,0,8]);t.alike(e.encode(e.ipv6,"1:2::7:8"),a),t.alike(e.decode(e.ipv6,a),"1:2:0:0:0:0:7:8")}),t.test("prefix abbreviated",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,5,0,6,0,7,0,8]);t.alike(e.encode(e.ipv6,"::5:6:7:8"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:5:6:7:8")}),t.test("suffix abbreviated",function(t){const a=Buffer.from([0,1,0,2,0,3,0,4,0,0,0,0,0,0,0,0]);t.alike(e.encode(e.ipv6,"1:2:3:4::"),a),t.alike(e.decode(e.ipv6,a),"1:2:3:4:0:0:0:0")}),t.test("any",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);t.alike(e.encode(e.ipv6,"::"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:0:0:0:0")}),t.test("lowercase hex",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,205]);t.alike(e.encode(e.ipv6,"::abcd"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:0:0:0:abcd")}),t.test("uppercase hex",function(t){const a=Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,205]);t.alike(e.encode(e.ipv6,"::ABCD"),a),t.alike(e.decode(e.ipv6,a),"0:0:0:0:0:0:0:abcd")})}),t("ipv6 + port",function(t){const a="1:2:3:4:5:6:7:8";t.alike(e.decode(e.ipv6Address,e.encode(e.ipv6Address,{host:a,port:1234})),{host:a,family:6,port:1234})}),t("dual ip",function(t){{const a="1.2.3.4";t.alike(e.decode(e.ip,e.encode(e.ip,a)),a,"ipv4")}{const a="1:2:3:4:5:6:7:8";t.alike(e.decode(e.ip,e.encode(e.ip,a)),a,"ipv6")}}),t("dual ip + port",function(t){const a=1234;{const n="1.2.3.4";t.alike(e.decode(e.ipAddress,e.encode(e.ipAddress,{host:n,port:a})),{host:n,family:4,port:a},"ipv4")}{const n="1:2:3:4:5:6:7:8";t.alike(e.decode(e.ipAddress,e.encode(e.ipAddress,{host:n,port:a})),{host:n,family:6,port:a},"ipv6")}}),t("record",function(t){const a=e.record(e.string,e.string);t.alike(e.decode(a,e.encode(a,{a:"hello",b:"world"})),Object.assign(Object.create(null),{a:"hello",b:"world"}))}),t("record - nested",function(t){const a=e.record(e.string,e.record(e.string,e.string));t.alike(e.decode(a,e.encode(a,{a:{b:"record"},c:{d:"nested",e:"test"}})),Object.assign(Object.create(null),{a:Object.assign(Object.create(null),{b:"record"}),c:Object.assign(Object.create(null),{d:"nested",e:"test"})}))}),t("stringRecord",function(t){t.alike(e.decode(e.stringRecord,e.encode(e.stringRecord,{a:"hello",b:"world"})),Object.assign(Object.create(null),{a:"hello",b:"world"}))}); |
| … | … | @@ -1,35 +1,34 @@ |
| 1 | 1 | # Keet 4.x audit — package manifest |
| 2 | 2 | |
| 3 | Captured: 2026-05-11T19:05:06.071Z | |
| 4 | Source: /tmp/.mount_Keet.AjtX4HI/resources/app/node_modules | |
| 5 | AppImage app version: 4.14.1 | |
| 3 | Captured: 2026-05-14T21:08:27.965Z | |
| 4 | Source: /tmp/.mount_Keet.AqNht9x/resources/app/node_modules | |
| 5 | AppImage app version: 4.15.0 | |
| 6 | 6 | |
| 7 | 7 | | Package | Version | Description | |
| 8 | 8 | |---|---|---| |
| 9 | 9 | | `@holepunchto/broadcast-call` | 2.0.0 | | |
| 10 | 10 | | `@holepunchto/emojis` | 3.2.0 | HolePunch Emojis | |
| 11 | | `@holepunchto/hyperdiscovery` | 1.1.1 | Peer discovery powered by HyperDHT | | |
| 12 | | `@holepunchto/hyperindex` | 2.3.5 | Indexing and aggregation on Hyperbee | | |
| 13 | | `@holepunchto/keet-call` | 10.3.3 | Track management and relaying for Keet | | |
| 14 | | `@holepunchto/keet-core` | 4.14.4 | A version of keet-core built with rocksdb and hyperdb | | |
| 11 | | `@holepunchto/hyperdiscovery` | 1.2.0 | Peer discovery powered by HyperDHT | | |
| 12 | | `@holepunchto/hyperindex` | 2.4.0 | Indexing and aggregation on Hyperbee | | |
| 13 | | `@holepunchto/keet-call` | 10.3.4 | Track management and relaying for Keet | | |
| 14 | | `@holepunchto/keet-core` | 4.15.7 | A version of keet-core built with rocksdb and hyperdb | | |
| 15 | 15 | | `@holepunchto/keet-core-api` | 2.14.2 | API definitions and structured error types for Keet Core | |
| 16 | 16 | | `@holepunchto/keet-core-schemas` | 2.17.0 | Database schemas used by keet-indexing | |
| 17 | 17 | | `@holepunchto/keet-debug-helper` | 2.0.3 | | |
| 18 | 18 | | `@holepunchto/keet-default-config` | 3.1.0 | Default config values for launching a Keep app | |
| 19 | | `@holepunchto/keet-editor` | 3.17.2 | A rich text editor for Keet | | |
| 19 | | `@holepunchto/keet-editor` | 3.17.4 | A rich text editor for Keet | | |
| 20 | 20 | | `@holepunchto/keet-editor-parser` | 4.0.2 | Parser for keet-editor | |
| 21 | | `@holepunchto/keet-indexing` | 6.3.2 | Indexing logic for Keet's Autobase DB | | |
| 21 | | `@holepunchto/keet-indexing` | 6.4.0 | Indexing logic for Keet's Autobase DB | | |
| 22 | 22 | | `@holepunchto/keet-link-preview` | 1.2.5 | Return the link preview information from a url | |
| 23 | 23 | | `@holepunchto/keet-media` | 2.4.1 | | |
| 24 | | `@holepunchto/keet-package` | 3.0.3 | Automatically obfuscated private Holepunch repositories and produce a bundle | | |
| 25 | | `@holepunchto/keet-push` | 4.2.0 | Push notifications for Keet | | |
| 26 | | `@holepunchto/keet-registry` | 3.7.0 | Name service for Keet identities | | |
| 27 | | `@holepunchto/keet-registry-client` | 5.1.1 | Client for keet-registry-service | | |
| 24 | | `@holepunchto/keet-push` | 4.3.0 | Push notifications for Keet | | |
| 25 | | `@holepunchto/keet-registry` | 3.9.0 | Name service for Keet identities | | |
| 26 | | `@holepunchto/keet-registry-client` | 5.2.0 | Client for keet-registry-service | | |
| 28 | 27 | | `@holepunchto/keet-registry-schema` | 3.4.0 | Schemas and encodings for keet-registry-service | |
| 29 | 28 | | `@holepunchto/keet-schemas` | 1.24.14 | | |
| 30 | | `@holepunchto/keet-store` | 6.14.30 | Keet shared store | | |
| 31 | | `@holepunchto/keet-translations` | 2.5.0 | Keet translations | | |
| 32 | | `@holepunchto/keet-unread-anchors` | 2.0.0 | Unread anchors | | |
| 29 | | `@holepunchto/keet-store` | 6.15.28 | Keet shared store | | |
| 30 | | `@holepunchto/keet-translations` | 2.5.2 | Keet translations | | |
| 31 | | `@holepunchto/keet-unread-anchors` | 2.1.2 | Unread anchors | | |
| 33 | 32 | | `@holepunchto/legacy-keet-core-schemas` | 2.17.0 | Database schemas used by keet-indexing | |
| 34 | | `keet-identity-key` | 3.1.0 | Hierarchical Deterministic Keys for Keet Identities | | |
| 33 | | `keet-identity-key` | 3.2.0 | Hierarchical Deterministic Keys for Keet Identities | | |
| 35 | 34 |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "keet-identity-key", |
| 3 | "version": "3.1.0", | |
| 3 | "version": "3.2.0", | |
| 4 | 4 | "description": "Hierarchical Deterministic Keys for Keet Identities", |
| 5 | 5 | "main": "index.js", |
| 6 | 6 | "scripts": { |
| … | … | @@ -14,9 +14,9 @@ |
| 14 | 14 | "standard": "^17.1.0" |
| 15 | 15 | }, |
| 16 | 16 | "dependencies": { |
| 17 | "bip39-mnemonic": "^2.2.0", | |
| 18 | 17 | "b4a": "^1.6.4", |
| 19 | "compact-encoding": "^2.13.0", | |
| 18 | "bip39-mnemonic": "^2.2.0", | |
| 19 | "compact-encoding": "^3.0.0", | |
| 20 | 20 | "nanoassert": "^2.0.0", |
| 21 | 21 | "sodium-hmac": "^2.0.1", |
| 22 | 22 | "sodium-universal": "^5.0.1" |