diff --git a/go.mod b/go.mod index 164d295..befe9d2 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/rs/zerolog v1.33.0 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e go.mau.fi/mautrix-gmessages/libgm v0.4.3 - go.mau.fi/util v0.6.0 + go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b golang.org/x/exp v0.0.0-20240707233637-46b078467d37 google.golang.org/protobuf v1.34.2 maunium.net/go/mautrix v0.19.0 diff --git a/go.sum b/go.sum index ff4fa65..079496d 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= -go.mau.fi/util v0.6.0 h1:W6SyB3Bm/GjenQ5iq8Z8WWdN85Gy2xS6L0wmnR7SVjg= -go.mau.fi/util v0.6.0/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= +go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b h1:8s3uTMPZts03evXLqdTJ0WXB0YWZDNSovpd6oFfCFvY= +go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= go.mau.fi/zeroconfig v0.1.3 h1:As9wYDKmktjmNZW5i1vn8zvJlmGKHeVxHVIBMXsm4kM= go.mau.fi/zeroconfig v0.1.3/go.mod h1:NcSJkf180JT+1IId76PcMuLTNa1CzsFFZ0nBygIQM70= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= diff --git a/libgm/gmtest/go.mod b/libgm/gmtest/go.mod index 227ec39..da0c97f 100644 --- a/libgm/gmtest/go.mod +++ b/libgm/gmtest/go.mod @@ -11,7 +11,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - go.mau.fi/util v0.6.0 // indirect + go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b // indirect golang.org/x/crypto v0.25.0 // indirect golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect golang.org/x/sys v0.22.0 // indirect diff --git a/libgm/gmtest/go.sum b/libgm/gmtest/go.sum index cc1ecbb..b9a3e9a 100644 --- a/libgm/gmtest/go.sum +++ b/libgm/gmtest/go.sum @@ -20,8 +20,8 @@ github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.mau.fi/util v0.6.0 h1:W6SyB3Bm/GjenQ5iq8Z8WWdN85Gy2xS6L0wmnR7SVjg= -go.mau.fi/util v0.6.0/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= +go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b h1:8s3uTMPZts03evXLqdTJ0WXB0YWZDNSovpd6oFfCFvY= +go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w= diff --git a/libgm/go.mod b/libgm/go.mod index f912da3..3b7be7e 100644 --- a/libgm/go.mod +++ b/libgm/go.mod @@ -6,7 +6,7 @@ require ( github.com/google/uuid v1.6.0 github.com/rs/zerolog v1.33.0 github.com/stretchr/testify v1.9.0 - go.mau.fi/util v0.6.0 + go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b golang.org/x/crypto v0.25.0 golang.org/x/exp v0.0.0-20240707233637-46b078467d37 google.golang.org/protobuf v1.34.2 diff --git a/libgm/go.sum b/libgm/go.sum index 54fa58e..4e9d51f 100644 --- a/libgm/go.sum +++ b/libgm/go.sum @@ -19,8 +19,8 @@ github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.mau.fi/util v0.6.0 h1:W6SyB3Bm/GjenQ5iq8Z8WWdN85Gy2xS6L0wmnR7SVjg= -go.mau.fi/util v0.6.0/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= +go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b h1:8s3uTMPZts03evXLqdTJ0WXB0YWZDNSovpd6oFfCFvY= +go.mau.fi/util v0.6.1-0.20240722085753-2d7945696c9b/go.mod h1:ljYdq3sPfpICc3zMU+/mHV/sa4z0nKxc67hSBwnrk8U= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w= diff --git a/libgm/pair_google.go b/libgm/pair_google.go index ce9244d..4241ef7 100644 --- a/libgm/pair_google.go +++ b/libgm/pair_google.go @@ -37,6 +37,7 @@ import ( "github.com/google/uuid" "github.com/rs/zerolog" + "go.mau.fi/util/exslices" "go.mau.fi/util/exsync" "go.mau.fi/util/random" "golang.org/x/crypto/hkdf" @@ -183,14 +184,14 @@ func doHKDF(key, salt, info []byte) []byte { } var encryptionKeyInfo = []byte{130, 170, 85, 160, 211, 151, 248, 131, 70, 202, 28, 238, 141, 57, 9, 185, 95, 19, 250, 125, 235, 29, 74, 179, 131, 118, 184, 37, 109, 168, 85, 16} -var pairingEmojisV0 = []string{"๐Ÿ˜", "๐Ÿ˜…", "๐Ÿคฃ", "๐Ÿซ ", "๐Ÿฅฐ", "๐Ÿ˜‡", "๐Ÿคฉ", "๐Ÿ˜˜", "๐Ÿ˜œ", "๐Ÿค—", "๐Ÿค”", "๐Ÿค", "๐Ÿ˜ด", "๐Ÿฅถ", "๐Ÿคฏ", "๐Ÿค ", "๐Ÿฅณ", "๐Ÿฅธ", "๐Ÿ˜Ž", "๐Ÿค“", "๐Ÿง", "๐Ÿฅน", "๐Ÿ˜ญ", "๐Ÿ˜ฑ", "๐Ÿ˜–", "๐Ÿฅฑ", "๐Ÿ˜ฎ\u200d๐Ÿ’จ", "๐Ÿคก", "๐Ÿ’ฉ", "๐Ÿ‘ป", "๐Ÿ‘ฝ", "๐Ÿค–", "๐Ÿ˜ป", "๐Ÿ’Œ", "๐Ÿ’˜", "๐Ÿ’•", "โค", "๐Ÿ’ข", "๐Ÿ’ฅ", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ—ฏ", "๐Ÿ’ค", "๐Ÿ‘‹", "๐Ÿ™Œ", "๐Ÿ™", "โœ", "๐Ÿฆถ", "๐Ÿ‘‚", "๐Ÿง ", "๐Ÿฆด", "๐Ÿ‘€", "๐Ÿง‘", "๐Ÿงš", "๐Ÿง", "๐Ÿ‘ฃ", "๐Ÿต", "๐Ÿถ", "๐Ÿบ", "๐ŸฆŠ", "๐Ÿฆ", "๐Ÿฏ", "๐Ÿฆ“", "๐Ÿฆ„", "๐Ÿ‘", "๐Ÿฎ", "๐Ÿท", "๐Ÿฟ", "๐Ÿฐ", "๐Ÿฆ‡", "๐Ÿป", "๐Ÿจ", "๐Ÿผ", "๐Ÿฆฅ", "๐Ÿพ", "๐Ÿ”", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿ•Š", "๐Ÿฆ†", "๐Ÿฆ‰", "๐Ÿชถ", "๐Ÿฆฉ", "๐Ÿธ", "๐Ÿข", "๐ŸฆŽ", "๐Ÿ", "๐Ÿณ", "๐Ÿฌ", "๐Ÿฆญ", "๐Ÿ ", "๐Ÿก", "๐Ÿฆˆ", "๐Ÿชธ", "๐ŸŒ", "๐Ÿฆ‹", "๐Ÿ›", "๐Ÿ", "๐Ÿž", "๐Ÿชฑ", "๐Ÿ’", "๐ŸŒธ", "๐ŸŒน", "๐ŸŒป", "๐ŸŒฑ", "๐ŸŒฒ", "๐ŸŒด", "๐ŸŒต", "๐ŸŒพ", "โ˜˜", "๐Ÿ", "๐Ÿ‚", "๐Ÿ„", "๐Ÿชบ", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ’", "๐Ÿ“", "๐Ÿฅ", "๐Ÿฅฅ", "๐Ÿฅ‘", "๐Ÿฅ•", "๐ŸŒฝ", "๐ŸŒถ", "๐Ÿซ‘", "๐Ÿฅฆ", "๐Ÿฅœ", "๐Ÿž", "๐Ÿฅ", "๐Ÿฅจ", "๐Ÿง€", "๐Ÿ—", "๐Ÿ”", "๐ŸŸ", "๐Ÿ•", "๐ŸŒญ", "๐ŸŒฎ", "๐Ÿฅ—", "๐Ÿฅฃ", "๐Ÿฟ", "๐Ÿฆ€", "๐Ÿฆ‘", "๐Ÿฆ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฐ", "๐Ÿฌ", "๐Ÿญ", "โ˜•", "๐Ÿซ–", "๐Ÿน", "๐Ÿฅค", "๐ŸงŠ", "๐Ÿฅข", "๐Ÿฝ", "๐Ÿฅ„", "๐Ÿงญ", "๐Ÿ”", "๐ŸŒ‹", "๐Ÿ•", "๐Ÿ–", "๐Ÿชต", "๐Ÿ—", "๐Ÿก", "๐Ÿฐ", "๐Ÿ›", "๐Ÿš‚", "๐Ÿ›ต", "๐Ÿ›ด", "๐Ÿ›ผ", "๐Ÿšฅ", "โš“", "๐Ÿ›Ÿ", "โ›ต", "โœˆ", "๐Ÿš€", "๐Ÿ›ธ", "๐Ÿงณ", "โฐ", "๐ŸŒ™", "๐ŸŒก", "๐ŸŒž", "๐Ÿช", "๐ŸŒ ", "๐ŸŒง", "๐ŸŒ€", "๐ŸŒˆ", "โ˜‚", "โšก", "โ„", "โ›„", "๐Ÿ”ฅ", "๐ŸŽ‡", "๐Ÿงจ", "โœจ", "๐ŸŽˆ", "๐ŸŽ‰", "๐ŸŽ", "๐Ÿ†", "๐Ÿ…", "โšฝ", "โšพ", "๐Ÿ€", "๐Ÿ", "๐Ÿˆ", "๐ŸŽพ", "๐ŸŽณ", "๐Ÿ“", "๐ŸฅŠ", "โ›ณ", "โ›ธ", "๐ŸŽฏ", "๐Ÿช", "๐Ÿ”ฎ", "๐ŸŽฎ", "๐Ÿงฉ", "๐Ÿงธ", "๐Ÿชฉ", "๐Ÿ–ผ", "๐ŸŽจ", "๐Ÿงต", "๐Ÿงถ", "๐Ÿฆบ", "๐Ÿงฃ", "๐Ÿงค", "๐Ÿงฆ", "๐ŸŽ’", "๐Ÿฉด", "๐Ÿ‘Ÿ", "๐Ÿ‘‘", "๐Ÿ‘’", "๐ŸŽฉ", "๐Ÿงข", "๐Ÿ’Ž", "๐Ÿ””", "๐ŸŽค", "๐Ÿ“ป", "๐ŸŽท", "๐Ÿช—", "๐ŸŽธ", "๐ŸŽบ", "๐ŸŽป", "๐Ÿฅ", "๐Ÿ“บ", "๐Ÿ”‹", "๐Ÿ’ป", "๐Ÿ’ฟ", "โ˜Ž", "๐Ÿ•ฏ", "๐Ÿ’ก", "๐Ÿ“–", "๐Ÿ“š", "๐Ÿ“ฌ", "โœ", "โœ’", "๐Ÿ–Œ", "๐Ÿ–", "๐Ÿ“", "๐Ÿ’ผ", "๐Ÿ“‹", "๐Ÿ“Œ", "๐Ÿ“Ž", "๐Ÿ”‘", "๐Ÿ”ง", "๐Ÿงฒ", "๐Ÿชœ", "๐Ÿงฌ", "๐Ÿ”ญ", "๐Ÿฉน", "๐Ÿฉบ", "๐Ÿชž", "๐Ÿ›‹", "๐Ÿช‘", "๐Ÿ›", "๐Ÿงน", "๐Ÿงบ", "๐Ÿ”ฑ", "๐Ÿ", "๐Ÿช", "๐Ÿ˜", "๐Ÿฆƒ", "๐Ÿž", "๐Ÿœ", "๐Ÿ ", "๐Ÿš˜", "๐Ÿคฟ", "๐Ÿƒ", "๐Ÿ‘•", "๐Ÿ“ธ", "๐Ÿท", "โœ‚", "๐Ÿงช", "๐Ÿšช", "๐Ÿงด", "๐Ÿงป", "๐Ÿชฃ", "๐Ÿงฝ", "๐Ÿšธ"} +var pairingEmojisV0 = []string{"๐Ÿ˜", "๐Ÿ˜…", "๐Ÿคฃ", "๐Ÿซ ", "๐Ÿฅฐ", "๐Ÿ˜‡", "๐Ÿคฉ", "๐Ÿ˜˜", "๐Ÿ˜œ", "๐Ÿค—", "๐Ÿค”", "๐Ÿค", "๐Ÿ˜ด", "๐Ÿฅถ", "๐Ÿคฏ", "๐Ÿค ", "๐Ÿฅณ", "๐Ÿฅธ", "๐Ÿ˜Ž", "๐Ÿค“", "๐Ÿง", "๐Ÿฅน", "๐Ÿ˜ญ", "๐Ÿ˜ฑ", "๐Ÿ˜–", "๐Ÿฅฑ", "๐Ÿ˜ฎโ€๐Ÿ’จ", "๐Ÿคก", "๐Ÿ’ฉ", "๐Ÿ‘ป", "๐Ÿ‘ฝ", "๐Ÿค–", "๐Ÿ˜ป", "๐Ÿ’Œ", "๐Ÿ’˜", "๐Ÿ’•", "โค", "๐Ÿ’ข", "๐Ÿ’ฅ", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ—ฏ", "๐Ÿ’ค", "๐Ÿ‘‹", "๐Ÿ™Œ", "๐Ÿ™", "โœ", "๐Ÿฆถ", "๐Ÿ‘‚", "๐Ÿง ", "๐Ÿฆด", "๐Ÿ‘€", "๐Ÿง‘", "๐Ÿงš", "๐Ÿง", "๐Ÿ‘ฃ", "๐Ÿต", "๐Ÿถ", "๐Ÿบ", "๐ŸฆŠ", "๐Ÿฆ", "๐Ÿฏ", "๐Ÿฆ“", "๐Ÿฆ„", "๐Ÿ‘", "๐Ÿฎ", "๐Ÿท", "๐Ÿฟ", "๐Ÿฐ", "๐Ÿฆ‡", "๐Ÿป", "๐Ÿจ", "๐Ÿผ", "๐Ÿฆฅ", "๐Ÿพ", "๐Ÿ”", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿ•Š", "๐Ÿฆ†", "๐Ÿฆ‰", "๐Ÿชถ", "๐Ÿฆฉ", "๐Ÿธ", "๐Ÿข", "๐ŸฆŽ", "๐Ÿ", "๐Ÿณ", "๐Ÿฌ", "๐Ÿฆญ", "๐Ÿ ", "๐Ÿก", "๐Ÿฆˆ", "๐Ÿชธ", "๐ŸŒ", "๐Ÿฆ‹", "๐Ÿ›", "๐Ÿ", "๐Ÿž", "๐Ÿชฑ", "๐Ÿ’", "๐ŸŒธ", "๐ŸŒน", "๐ŸŒป", "๐ŸŒฑ", "๐ŸŒฒ", "๐ŸŒด", "๐ŸŒต", "๐ŸŒพ", "โ˜˜", "๐Ÿ", "๐Ÿ‚", "๐Ÿ„", "๐Ÿชบ", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ’", "๐Ÿ“", "๐Ÿฅ", "๐Ÿฅฅ", "๐Ÿฅ‘", "๐Ÿฅ•", "๐ŸŒฝ", "๐ŸŒถ", "๐Ÿซ‘", "๐Ÿฅฆ", "๐Ÿฅœ", "๐Ÿž", "๐Ÿฅ", "๐Ÿฅจ", "๐Ÿง€", "๐Ÿ—", "๐Ÿ”", "๐ŸŸ", "๐Ÿ•", "๐ŸŒญ", "๐ŸŒฎ", "๐Ÿฅ—", "๐Ÿฅฃ", "๐Ÿฟ", "๐Ÿฆ€", "๐Ÿฆ‘", "๐Ÿฆ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฐ", "๐Ÿฌ", "๐Ÿญ", "โ˜•", "๐Ÿซ–", "๐Ÿน", "๐Ÿฅค", "๐ŸงŠ", "๐Ÿฅข", "๐Ÿฝ", "๐Ÿฅ„", "๐Ÿงญ", "๐Ÿ”", "๐ŸŒ‹", "๐Ÿ•", "๐Ÿ–", "๐Ÿชต", "๐Ÿ—", "๐Ÿก", "๐Ÿฐ", "๐Ÿ›", "๐Ÿš‚", "๐Ÿ›ต", "๐Ÿ›ด", "๐Ÿ›ผ", "๐Ÿšฅ", "โš“", "๐Ÿ›Ÿ", "โ›ต", "โœˆ", "๐Ÿš€", "๐Ÿ›ธ", "๐Ÿงณ", "โฐ", "๐ŸŒ™", "๐ŸŒก", "๐ŸŒž", "๐Ÿช", "๐ŸŒ ", "๐ŸŒง", "๐ŸŒ€", "๐ŸŒˆ", "โ˜‚", "โšก", "โ„", "โ›„", "๐Ÿ”ฅ", "๐ŸŽ‡", "๐Ÿงจ", "โœจ", "๐ŸŽˆ", "๐ŸŽ‰", "๐ŸŽ", "๐Ÿ†", "๐Ÿ…", "โšฝ", "โšพ", "๐Ÿ€", "๐Ÿ", "๐Ÿˆ", "๐ŸŽพ", "๐ŸŽณ", "๐Ÿ“", "๐ŸฅŠ", "โ›ณ", "โ›ธ", "๐ŸŽฏ", "๐Ÿช", "๐Ÿ”ฎ", "๐ŸŽฎ", "๐Ÿงฉ", "๐Ÿงธ", "๐Ÿชฉ", "๐Ÿ–ผ", "๐ŸŽจ", "๐Ÿงต", "๐Ÿงถ", "๐Ÿฆบ", "๐Ÿงฃ", "๐Ÿงค", "๐Ÿงฆ", "๐ŸŽ’", "๐Ÿฉด", "๐Ÿ‘Ÿ", "๐Ÿ‘‘", "๐Ÿ‘’", "๐ŸŽฉ", "๐Ÿงข", "๐Ÿ’Ž", "๐Ÿ””", "๐ŸŽค", "๐Ÿ“ป", "๐ŸŽท", "๐Ÿช—", "๐ŸŽธ", "๐ŸŽบ", "๐ŸŽป", "๐Ÿฅ", "๐Ÿ“บ", "๐Ÿ”‹", "๐Ÿ’ป", "๐Ÿ’ฟ", "โ˜Ž", "๐Ÿ•ฏ", "๐Ÿ’ก", "๐Ÿ“–", "๐Ÿ“š", "๐Ÿ“ฌ", "โœ", "โœ’", "๐Ÿ–Œ", "๐Ÿ–", "๐Ÿ“", "๐Ÿ’ผ", "๐Ÿ“‹", "๐Ÿ“Œ", "๐Ÿ“Ž", "๐Ÿ”‘", "๐Ÿ”ง", "๐Ÿงฒ", "๐Ÿชœ", "๐Ÿงฌ", "๐Ÿ”ญ", "๐Ÿฉน", "๐Ÿฉบ", "๐Ÿชž", "๐Ÿ›‹", "๐Ÿช‘", "๐Ÿ›", "๐Ÿงน", "๐Ÿงบ", "๐Ÿ”ฑ", "๐Ÿ", "๐Ÿช", "๐Ÿ˜", "๐Ÿฆƒ", "๐Ÿž", "๐Ÿœ", "๐Ÿ ", "๐Ÿš˜", "๐Ÿคฟ", "๐Ÿƒ", "๐Ÿ‘•", "๐Ÿ“ธ", "๐Ÿท", "โœ‚", "๐Ÿงช", "๐Ÿšช", "๐Ÿงด", "๐Ÿงป", "๐Ÿชฃ", "๐Ÿงฝ", "๐Ÿšธ"} var pairingEmojisV1 []string func init() { pairingEmojisAddedV1 := []string{"๐Ÿ‹โ€๐ŸŸฉ", "๐Ÿฆโ€๐Ÿ”ฅ", "๐Ÿฒ", "๐Ÿช…", "๐Ÿฆœ", "๐Ÿบ", "๐Ÿ—ฟ", "๐Ÿซ", "โ›ฝ", "๐Ÿฑ", "๐Ÿฅก", "๐Ÿง‹", "๐Ÿผ", "๐Ÿ“"} pairingEmojisRemovedV1 := exsync.NewSetWithItems([]string{"๐Ÿ’ป", "๐Ÿค—", "๐Ÿ’ฌ", "๐Ÿ‘‹", "๐Ÿ˜", "๐Ÿ˜Ž", "๐Ÿ˜‡", "๐Ÿฅฐ", "๐Ÿค“", "๐Ÿคฉ"}) - pairingEmojisV1 = append([]string{}, pairingEmojisV0...) + pairingEmojisV1 = exslices.DeduplicateUnsorted(pairingEmojisV0) pairingEmojisV1 = append(pairingEmojisV1, pairingEmojisAddedV1...) pairingEmojisV1 = slices.DeleteFunc(pairingEmojisV1, func(s string) bool { return pairingEmojisRemovedV1.Has(s)