slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.2.7__cp311-cp311-manylinux_2_36_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of slidge-whatsapp might be problematic. Click here for more details.

Files changed (357) hide show
  1. slidge_whatsapp/config.py +3 -0
  2. slidge_whatsapp/event.go +31 -26
  3. slidge_whatsapp/gateway.go +13 -9
  4. slidge_whatsapp/gateway.py +2 -2
  5. slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.h +170 -170
  6. slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
  7. slidge_whatsapp/generated/build.py +135 -135
  8. slidge_whatsapp/generated/whatsapp.c +1496 -1496
  9. slidge_whatsapp/generated/whatsapp.go +1137 -1137
  10. slidge_whatsapp/generated/whatsapp.py +1216 -1216
  11. slidge_whatsapp/generated/whatsapp_go.h +170 -170
  12. slidge_whatsapp/go.mod +15 -12
  13. slidge_whatsapp/go.sum +35 -29
  14. slidge_whatsapp/media/media.go +21 -11
  15. slidge_whatsapp/session.go +73 -66
  16. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
  17. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
  18. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
  19. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
  20. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
  21. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
  22. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
  23. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
  24. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
  25. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
  26. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
  27. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
  28. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
  29. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
  30. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
  31. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
  32. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
  33. slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
  34. slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
  35. slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
  36. slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
  37. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
  38. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
  39. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
  40. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
  41. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
  42. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
  43. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
  44. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
  45. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
  46. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
  47. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
  48. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
  49. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
  50. slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
  51. slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
  52. slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
  53. slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
  54. slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
  55. slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
  56. slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
  57. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
  58. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
  59. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
  60. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
  61. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
  62. slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
  63. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
  64. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
  65. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
  66. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
  67. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
  68. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
  69. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
  70. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
  71. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
  72. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
  73. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
  74. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
  75. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
  76. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
  77. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
  78. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
  79. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
  80. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
  81. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
  82. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
  83. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
  84. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
  85. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
  86. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
  87. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
  88. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
  89. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
  90. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
  91. slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +76 -0
  92. slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
  93. slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
  94. slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
  95. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
  96. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
  97. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
  98. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
  99. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
  100. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
  101. slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
  102. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
  103. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
  104. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
  105. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
  106. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +40 -7
  107. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
  108. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
  109. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +1 -1
  110. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +119 -37
  111. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +29 -11
  112. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
  113. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +74 -34
  114. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
  115. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +61 -31
  116. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +188 -152
  117. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
  118. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
  119. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
  120. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +444 -135
  121. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
  122. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +78 -42
  123. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
  124. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
  125. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
  126. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
  127. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
  128. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
  129. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
  130. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
  131. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
  132. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
  133. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
  134. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
  135. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
  136. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
  137. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
  138. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
  139. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
  140. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
  141. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
  142. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
  143. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
  144. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
  145. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
  146. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
  147. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
  148. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
  149. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
  150. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
  151. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
  152. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
  153. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
  154. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
  155. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
  156. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
  157. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
  158. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
  159. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
  160. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
  161. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
  162. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
  163. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +184 -89
  164. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +2 -1
  165. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
  166. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
  167. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
  168. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7428 -2151
  169. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +373 -44
  170. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
  171. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
  172. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
  173. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
  174. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
  175. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
  176. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
  177. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
  178. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
  179. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
  180. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
  181. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
  182. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
  183. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
  184. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +800 -0
  185. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +72 -0
  186. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1344 -438
  187. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +52 -0
  188. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
  189. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
  190. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
  191. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
  192. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
  193. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
  194. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +25 -9
  195. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
  196. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
  197. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
  198. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +261 -75
  199. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
  200. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
  201. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
  202. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
  203. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
  204. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
  205. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
  206. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
  207. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
  208. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
  209. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
  210. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
  211. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
  212. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
  213. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
  214. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
  215. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
  216. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +107 -56
  217. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
  218. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +13 -2
  219. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
  220. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
  221. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
  222. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
  223. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
  224. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +47 -29
  225. slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
  226. slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
  227. slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
  228. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
  229. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
  230. slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
  231. slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
  232. slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  233. slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
  234. slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
  235. slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
  236. slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
  237. slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
  238. slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
  239. slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
  240. slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
  241. slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  242. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
  243. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
  244. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
  245. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
  246. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
  247. slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
  248. slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
  249. slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
  250. slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
  251. slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
  252. slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
  253. slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
  254. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
  255. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
  256. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
  257. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
  258. slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
  259. slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
  260. slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
  261. slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
  262. slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
  263. slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
  264. slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
  265. slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
  266. slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
  267. slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
  268. slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
  269. slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
  270. slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
  271. slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
  272. slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
  273. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  274. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  275. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
  276. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
  277. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
  278. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
  279. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
  280. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
  281. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
  282. slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
  283. slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
  284. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
  285. slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
  286. slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
  287. slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
  288. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
  289. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
  290. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
  291. slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
  292. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
  293. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  294. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
  295. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  296. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
  297. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
  298. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
  299. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
  300. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
  301. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
  302. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
  303. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
  304. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
  305. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  306. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
  307. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
  308. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  309. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
  310. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
  311. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
  312. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
  313. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
  314. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
  315. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  316. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  317. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
  318. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
  319. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
  320. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
  321. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
  322. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
  323. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
  324. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
  325. slidge_whatsapp/vendor/modules.txt +52 -13
  326. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/METADATA +1 -1
  327. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/RECORD +330 -184
  328. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/WHEEL +1 -1
  329. slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
  330. slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
  331. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
  332. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
  333. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
  334. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
  335. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
  336. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
  337. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
  338. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
  339. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
  340. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
  341. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
  342. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
  343. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
  344. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
  345. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
  346. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
  347. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
  348. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
  349. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
  350. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
  351. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
  352. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
  353. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
  354. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
  355. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
  356. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/LICENSE +0 -0
  357. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,610 @@
1
+ // Copyright 2011 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // Note: the file data_test.go that is generated should not be checked in.
6
+ //go:generate go run maketables.go triegen.go
7
+ //go:generate go test -tags test
8
+
9
+ // Package norm contains types and functions for normalizing Unicode strings.
10
+ package norm // import "golang.org/x/text/unicode/norm"
11
+
12
+ import (
13
+ "unicode/utf8"
14
+
15
+ "golang.org/x/text/transform"
16
+ )
17
+
18
+ // A Form denotes a canonical representation of Unicode code points.
19
+ // The Unicode-defined normalization and equivalence forms are:
20
+ //
21
+ // NFC Unicode Normalization Form C
22
+ // NFD Unicode Normalization Form D
23
+ // NFKC Unicode Normalization Form KC
24
+ // NFKD Unicode Normalization Form KD
25
+ //
26
+ // For a Form f, this documentation uses the notation f(x) to mean
27
+ // the bytes or string x converted to the given form.
28
+ // A position n in x is called a boundary if conversion to the form can
29
+ // proceed independently on both sides:
30
+ //
31
+ // f(x) == append(f(x[0:n]), f(x[n:])...)
32
+ //
33
+ // References: https://unicode.org/reports/tr15/ and
34
+ // https://unicode.org/notes/tn5/.
35
+ type Form int
36
+
37
+ const (
38
+ NFC Form = iota
39
+ NFD
40
+ NFKC
41
+ NFKD
42
+ )
43
+
44
+ // Bytes returns f(b). May return b if f(b) = b.
45
+ func (f Form) Bytes(b []byte) []byte {
46
+ src := inputBytes(b)
47
+ ft := formTable[f]
48
+ n, ok := ft.quickSpan(src, 0, len(b), true)
49
+ if ok {
50
+ return b
51
+ }
52
+ out := make([]byte, n, len(b))
53
+ copy(out, b[0:n])
54
+ rb := reorderBuffer{f: *ft, src: src, nsrc: len(b), out: out, flushF: appendFlush}
55
+ return doAppendInner(&rb, n)
56
+ }
57
+
58
+ // String returns f(s).
59
+ func (f Form) String(s string) string {
60
+ src := inputString(s)
61
+ ft := formTable[f]
62
+ n, ok := ft.quickSpan(src, 0, len(s), true)
63
+ if ok {
64
+ return s
65
+ }
66
+ out := make([]byte, n, len(s))
67
+ copy(out, s[0:n])
68
+ rb := reorderBuffer{f: *ft, src: src, nsrc: len(s), out: out, flushF: appendFlush}
69
+ return string(doAppendInner(&rb, n))
70
+ }
71
+
72
+ // IsNormal returns true if b == f(b).
73
+ func (f Form) IsNormal(b []byte) bool {
74
+ src := inputBytes(b)
75
+ ft := formTable[f]
76
+ bp, ok := ft.quickSpan(src, 0, len(b), true)
77
+ if ok {
78
+ return true
79
+ }
80
+ rb := reorderBuffer{f: *ft, src: src, nsrc: len(b)}
81
+ rb.setFlusher(nil, cmpNormalBytes)
82
+ for bp < len(b) {
83
+ rb.out = b[bp:]
84
+ if bp = decomposeSegment(&rb, bp, true); bp < 0 {
85
+ return false
86
+ }
87
+ bp, _ = rb.f.quickSpan(rb.src, bp, len(b), true)
88
+ }
89
+ return true
90
+ }
91
+
92
+ func cmpNormalBytes(rb *reorderBuffer) bool {
93
+ b := rb.out
94
+ for i := 0; i < rb.nrune; i++ {
95
+ info := rb.rune[i]
96
+ if int(info.size) > len(b) {
97
+ return false
98
+ }
99
+ p := info.pos
100
+ pe := p + info.size
101
+ for ; p < pe; p++ {
102
+ if b[0] != rb.byte[p] {
103
+ return false
104
+ }
105
+ b = b[1:]
106
+ }
107
+ }
108
+ return true
109
+ }
110
+
111
+ // IsNormalString returns true if s == f(s).
112
+ func (f Form) IsNormalString(s string) bool {
113
+ src := inputString(s)
114
+ ft := formTable[f]
115
+ bp, ok := ft.quickSpan(src, 0, len(s), true)
116
+ if ok {
117
+ return true
118
+ }
119
+ rb := reorderBuffer{f: *ft, src: src, nsrc: len(s)}
120
+ rb.setFlusher(nil, func(rb *reorderBuffer) bool {
121
+ for i := 0; i < rb.nrune; i++ {
122
+ info := rb.rune[i]
123
+ if bp+int(info.size) > len(s) {
124
+ return false
125
+ }
126
+ p := info.pos
127
+ pe := p + info.size
128
+ for ; p < pe; p++ {
129
+ if s[bp] != rb.byte[p] {
130
+ return false
131
+ }
132
+ bp++
133
+ }
134
+ }
135
+ return true
136
+ })
137
+ for bp < len(s) {
138
+ if bp = decomposeSegment(&rb, bp, true); bp < 0 {
139
+ return false
140
+ }
141
+ bp, _ = rb.f.quickSpan(rb.src, bp, len(s), true)
142
+ }
143
+ return true
144
+ }
145
+
146
+ // patchTail fixes a case where a rune may be incorrectly normalized
147
+ // if it is followed by illegal continuation bytes. It returns the
148
+ // patched buffer and whether the decomposition is still in progress.
149
+ func patchTail(rb *reorderBuffer) bool {
150
+ info, p := lastRuneStart(&rb.f, rb.out)
151
+ if p == -1 || info.size == 0 {
152
+ return true
153
+ }
154
+ end := p + int(info.size)
155
+ extra := len(rb.out) - end
156
+ if extra > 0 {
157
+ // Potentially allocating memory. However, this only
158
+ // happens with ill-formed UTF-8.
159
+ x := make([]byte, 0)
160
+ x = append(x, rb.out[len(rb.out)-extra:]...)
161
+ rb.out = rb.out[:end]
162
+ decomposeToLastBoundary(rb)
163
+ rb.doFlush()
164
+ rb.out = append(rb.out, x...)
165
+ return false
166
+ }
167
+ buf := rb.out[p:]
168
+ rb.out = rb.out[:p]
169
+ decomposeToLastBoundary(rb)
170
+ if s := rb.ss.next(info); s == ssStarter {
171
+ rb.doFlush()
172
+ rb.ss.first(info)
173
+ } else if s == ssOverflow {
174
+ rb.doFlush()
175
+ rb.insertCGJ()
176
+ rb.ss = 0
177
+ }
178
+ rb.insertUnsafe(inputBytes(buf), 0, info)
179
+ return true
180
+ }
181
+
182
+ func appendQuick(rb *reorderBuffer, i int) int {
183
+ if rb.nsrc == i {
184
+ return i
185
+ }
186
+ end, _ := rb.f.quickSpan(rb.src, i, rb.nsrc, true)
187
+ rb.out = rb.src.appendSlice(rb.out, i, end)
188
+ return end
189
+ }
190
+
191
+ // Append returns f(append(out, b...)).
192
+ // The buffer out must be nil, empty, or equal to f(out).
193
+ func (f Form) Append(out []byte, src ...byte) []byte {
194
+ return f.doAppend(out, inputBytes(src), len(src))
195
+ }
196
+
197
+ func (f Form) doAppend(out []byte, src input, n int) []byte {
198
+ if n == 0 {
199
+ return out
200
+ }
201
+ ft := formTable[f]
202
+ // Attempt to do a quickSpan first so we can avoid initializing the reorderBuffer.
203
+ if len(out) == 0 {
204
+ p, _ := ft.quickSpan(src, 0, n, true)
205
+ out = src.appendSlice(out, 0, p)
206
+ if p == n {
207
+ return out
208
+ }
209
+ rb := reorderBuffer{f: *ft, src: src, nsrc: n, out: out, flushF: appendFlush}
210
+ return doAppendInner(&rb, p)
211
+ }
212
+ rb := reorderBuffer{f: *ft, src: src, nsrc: n}
213
+ return doAppend(&rb, out, 0)
214
+ }
215
+
216
+ func doAppend(rb *reorderBuffer, out []byte, p int) []byte {
217
+ rb.setFlusher(out, appendFlush)
218
+ src, n := rb.src, rb.nsrc
219
+ doMerge := len(out) > 0
220
+ if q := src.skipContinuationBytes(p); q > p {
221
+ // Move leading non-starters to destination.
222
+ rb.out = src.appendSlice(rb.out, p, q)
223
+ p = q
224
+ doMerge = patchTail(rb)
225
+ }
226
+ fd := &rb.f
227
+ if doMerge {
228
+ var info Properties
229
+ if p < n {
230
+ info = fd.info(src, p)
231
+ if !info.BoundaryBefore() || info.nLeadingNonStarters() > 0 {
232
+ if p == 0 {
233
+ decomposeToLastBoundary(rb)
234
+ }
235
+ p = decomposeSegment(rb, p, true)
236
+ }
237
+ }
238
+ if info.size == 0 {
239
+ rb.doFlush()
240
+ // Append incomplete UTF-8 encoding.
241
+ return src.appendSlice(rb.out, p, n)
242
+ }
243
+ if rb.nrune > 0 {
244
+ return doAppendInner(rb, p)
245
+ }
246
+ }
247
+ p = appendQuick(rb, p)
248
+ return doAppendInner(rb, p)
249
+ }
250
+
251
+ func doAppendInner(rb *reorderBuffer, p int) []byte {
252
+ for n := rb.nsrc; p < n; {
253
+ p = decomposeSegment(rb, p, true)
254
+ p = appendQuick(rb, p)
255
+ }
256
+ return rb.out
257
+ }
258
+
259
+ // AppendString returns f(append(out, []byte(s))).
260
+ // The buffer out must be nil, empty, or equal to f(out).
261
+ func (f Form) AppendString(out []byte, src string) []byte {
262
+ return f.doAppend(out, inputString(src), len(src))
263
+ }
264
+
265
+ // QuickSpan returns a boundary n such that b[0:n] == f(b[0:n]).
266
+ // It is not guaranteed to return the largest such n.
267
+ func (f Form) QuickSpan(b []byte) int {
268
+ n, _ := formTable[f].quickSpan(inputBytes(b), 0, len(b), true)
269
+ return n
270
+ }
271
+
272
+ // Span implements transform.SpanningTransformer. It returns a boundary n such
273
+ // that b[0:n] == f(b[0:n]). It is not guaranteed to return the largest such n.
274
+ func (f Form) Span(b []byte, atEOF bool) (n int, err error) {
275
+ n, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), atEOF)
276
+ if n < len(b) {
277
+ if !ok {
278
+ err = transform.ErrEndOfSpan
279
+ } else {
280
+ err = transform.ErrShortSrc
281
+ }
282
+ }
283
+ return n, err
284
+ }
285
+
286
+ // SpanString returns a boundary n such that s[0:n] == f(s[0:n]).
287
+ // It is not guaranteed to return the largest such n.
288
+ func (f Form) SpanString(s string, atEOF bool) (n int, err error) {
289
+ n, ok := formTable[f].quickSpan(inputString(s), 0, len(s), atEOF)
290
+ if n < len(s) {
291
+ if !ok {
292
+ err = transform.ErrEndOfSpan
293
+ } else {
294
+ err = transform.ErrShortSrc
295
+ }
296
+ }
297
+ return n, err
298
+ }
299
+
300
+ // quickSpan returns a boundary n such that src[0:n] == f(src[0:n]) and
301
+ // whether any non-normalized parts were found. If atEOF is false, n will
302
+ // not point past the last segment if this segment might be become
303
+ // non-normalized by appending other runes.
304
+ func (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) {
305
+ var lastCC uint8
306
+ ss := streamSafe(0)
307
+ lastSegStart := i
308
+ for n = end; i < n; {
309
+ if j := src.skipASCII(i, n); i != j {
310
+ i = j
311
+ lastSegStart = i - 1
312
+ lastCC = 0
313
+ ss = 0
314
+ continue
315
+ }
316
+ info := f.info(src, i)
317
+ if info.size == 0 {
318
+ if atEOF {
319
+ // include incomplete runes
320
+ return n, true
321
+ }
322
+ return lastSegStart, true
323
+ }
324
+ // This block needs to be before the next, because it is possible to
325
+ // have an overflow for runes that are starters (e.g. with U+FF9E).
326
+ switch ss.next(info) {
327
+ case ssStarter:
328
+ lastSegStart = i
329
+ case ssOverflow:
330
+ return lastSegStart, false
331
+ case ssSuccess:
332
+ if lastCC > info.ccc {
333
+ return lastSegStart, false
334
+ }
335
+ }
336
+ if f.composing {
337
+ if !info.isYesC() {
338
+ break
339
+ }
340
+ } else {
341
+ if !info.isYesD() {
342
+ break
343
+ }
344
+ }
345
+ lastCC = info.ccc
346
+ i += int(info.size)
347
+ }
348
+ if i == n {
349
+ if !atEOF {
350
+ n = lastSegStart
351
+ }
352
+ return n, true
353
+ }
354
+ return lastSegStart, false
355
+ }
356
+
357
+ // QuickSpanString returns a boundary n such that s[0:n] == f(s[0:n]).
358
+ // It is not guaranteed to return the largest such n.
359
+ func (f Form) QuickSpanString(s string) int {
360
+ n, _ := formTable[f].quickSpan(inputString(s), 0, len(s), true)
361
+ return n
362
+ }
363
+
364
+ // FirstBoundary returns the position i of the first boundary in b
365
+ // or -1 if b contains no boundary.
366
+ func (f Form) FirstBoundary(b []byte) int {
367
+ return f.firstBoundary(inputBytes(b), len(b))
368
+ }
369
+
370
+ func (f Form) firstBoundary(src input, nsrc int) int {
371
+ i := src.skipContinuationBytes(0)
372
+ if i >= nsrc {
373
+ return -1
374
+ }
375
+ fd := formTable[f]
376
+ ss := streamSafe(0)
377
+ // We should call ss.first here, but we can't as the first rune is
378
+ // skipped already. This means FirstBoundary can't really determine
379
+ // CGJ insertion points correctly. Luckily it doesn't have to.
380
+ for {
381
+ info := fd.info(src, i)
382
+ if info.size == 0 {
383
+ return -1
384
+ }
385
+ if s := ss.next(info); s != ssSuccess {
386
+ return i
387
+ }
388
+ i += int(info.size)
389
+ if i >= nsrc {
390
+ if !info.BoundaryAfter() && !ss.isMax() {
391
+ return -1
392
+ }
393
+ return nsrc
394
+ }
395
+ }
396
+ }
397
+
398
+ // FirstBoundaryInString returns the position i of the first boundary in s
399
+ // or -1 if s contains no boundary.
400
+ func (f Form) FirstBoundaryInString(s string) int {
401
+ return f.firstBoundary(inputString(s), len(s))
402
+ }
403
+
404
+ // NextBoundary reports the index of the boundary between the first and next
405
+ // segment in b or -1 if atEOF is false and there are not enough bytes to
406
+ // determine this boundary.
407
+ func (f Form) NextBoundary(b []byte, atEOF bool) int {
408
+ return f.nextBoundary(inputBytes(b), len(b), atEOF)
409
+ }
410
+
411
+ // NextBoundaryInString reports the index of the boundary between the first and
412
+ // next segment in b or -1 if atEOF is false and there are not enough bytes to
413
+ // determine this boundary.
414
+ func (f Form) NextBoundaryInString(s string, atEOF bool) int {
415
+ return f.nextBoundary(inputString(s), len(s), atEOF)
416
+ }
417
+
418
+ func (f Form) nextBoundary(src input, nsrc int, atEOF bool) int {
419
+ if nsrc == 0 {
420
+ if atEOF {
421
+ return 0
422
+ }
423
+ return -1
424
+ }
425
+ fd := formTable[f]
426
+ info := fd.info(src, 0)
427
+ if info.size == 0 {
428
+ if atEOF {
429
+ return 1
430
+ }
431
+ return -1
432
+ }
433
+ ss := streamSafe(0)
434
+ ss.first(info)
435
+
436
+ for i := int(info.size); i < nsrc; i += int(info.size) {
437
+ info = fd.info(src, i)
438
+ if info.size == 0 {
439
+ if atEOF {
440
+ return i
441
+ }
442
+ return -1
443
+ }
444
+ // TODO: Using streamSafe to determine the boundary isn't the same as
445
+ // using BoundaryBefore. Determine which should be used.
446
+ if s := ss.next(info); s != ssSuccess {
447
+ return i
448
+ }
449
+ }
450
+ if !atEOF && !info.BoundaryAfter() && !ss.isMax() {
451
+ return -1
452
+ }
453
+ return nsrc
454
+ }
455
+
456
+ // LastBoundary returns the position i of the last boundary in b
457
+ // or -1 if b contains no boundary.
458
+ func (f Form) LastBoundary(b []byte) int {
459
+ return lastBoundary(formTable[f], b)
460
+ }
461
+
462
+ func lastBoundary(fd *formInfo, b []byte) int {
463
+ i := len(b)
464
+ info, p := lastRuneStart(fd, b)
465
+ if p == -1 {
466
+ return -1
467
+ }
468
+ if info.size == 0 { // ends with incomplete rune
469
+ if p == 0 { // starts with incomplete rune
470
+ return -1
471
+ }
472
+ i = p
473
+ info, p = lastRuneStart(fd, b[:i])
474
+ if p == -1 { // incomplete UTF-8 encoding or non-starter bytes without a starter
475
+ return i
476
+ }
477
+ }
478
+ if p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8
479
+ return i
480
+ }
481
+ if info.BoundaryAfter() {
482
+ return i
483
+ }
484
+ ss := streamSafe(0)
485
+ v := ss.backwards(info)
486
+ for i = p; i >= 0 && v != ssStarter; i = p {
487
+ info, p = lastRuneStart(fd, b[:i])
488
+ if v = ss.backwards(info); v == ssOverflow {
489
+ break
490
+ }
491
+ if p+int(info.size) != i {
492
+ if p == -1 { // no boundary found
493
+ return -1
494
+ }
495
+ return i // boundary after an illegal UTF-8 encoding
496
+ }
497
+ }
498
+ return i
499
+ }
500
+
501
+ // decomposeSegment scans the first segment in src into rb. It inserts 0x034f
502
+ // (Grapheme Joiner) when it encounters a sequence of more than 30 non-starters
503
+ // and returns the number of bytes consumed from src or iShortDst or iShortSrc.
504
+ func decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int {
505
+ // Force one character to be consumed.
506
+ info := rb.f.info(rb.src, sp)
507
+ if info.size == 0 {
508
+ return 0
509
+ }
510
+ if s := rb.ss.next(info); s == ssStarter {
511
+ // TODO: this could be removed if we don't support merging.
512
+ if rb.nrune > 0 {
513
+ goto end
514
+ }
515
+ } else if s == ssOverflow {
516
+ rb.insertCGJ()
517
+ goto end
518
+ }
519
+ if err := rb.insertFlush(rb.src, sp, info); err != iSuccess {
520
+ return int(err)
521
+ }
522
+ for {
523
+ sp += int(info.size)
524
+ if sp >= rb.nsrc {
525
+ if !atEOF && !info.BoundaryAfter() {
526
+ return int(iShortSrc)
527
+ }
528
+ break
529
+ }
530
+ info = rb.f.info(rb.src, sp)
531
+ if info.size == 0 {
532
+ if !atEOF {
533
+ return int(iShortSrc)
534
+ }
535
+ break
536
+ }
537
+ if s := rb.ss.next(info); s == ssStarter {
538
+ break
539
+ } else if s == ssOverflow {
540
+ rb.insertCGJ()
541
+ break
542
+ }
543
+ if err := rb.insertFlush(rb.src, sp, info); err != iSuccess {
544
+ return int(err)
545
+ }
546
+ }
547
+ end:
548
+ if !rb.doFlush() {
549
+ return int(iShortDst)
550
+ }
551
+ return sp
552
+ }
553
+
554
+ // lastRuneStart returns the runeInfo and position of the last
555
+ // rune in buf or the zero runeInfo and -1 if no rune was found.
556
+ func lastRuneStart(fd *formInfo, buf []byte) (Properties, int) {
557
+ p := len(buf) - 1
558
+ for ; p >= 0 && !utf8.RuneStart(buf[p]); p-- {
559
+ }
560
+ if p < 0 {
561
+ return Properties{}, -1
562
+ }
563
+ return fd.info(inputBytes(buf), p), p
564
+ }
565
+
566
+ // decomposeToLastBoundary finds an open segment at the end of the buffer
567
+ // and scans it into rb. Returns the buffer minus the last segment.
568
+ func decomposeToLastBoundary(rb *reorderBuffer) {
569
+ fd := &rb.f
570
+ info, i := lastRuneStart(fd, rb.out)
571
+ if int(info.size) != len(rb.out)-i {
572
+ // illegal trailing continuation bytes
573
+ return
574
+ }
575
+ if info.BoundaryAfter() {
576
+ return
577
+ }
578
+ var add [maxNonStarters + 1]Properties // stores runeInfo in reverse order
579
+ padd := 0
580
+ ss := streamSafe(0)
581
+ p := len(rb.out)
582
+ for {
583
+ add[padd] = info
584
+ v := ss.backwards(info)
585
+ if v == ssOverflow {
586
+ // Note that if we have an overflow, it the string we are appending to
587
+ // is not correctly normalized. In this case the behavior is undefined.
588
+ break
589
+ }
590
+ padd++
591
+ p -= int(info.size)
592
+ if v == ssStarter || p < 0 {
593
+ break
594
+ }
595
+ info, i = lastRuneStart(fd, rb.out[:p])
596
+ if int(info.size) != p-i {
597
+ break
598
+ }
599
+ }
600
+ rb.ss = ss
601
+ // Copy bytes for insertion as we may need to overwrite rb.out.
602
+ var buf [maxBufferSize * utf8.UTFMax]byte
603
+ cp := buf[:copy(buf[:], rb.out[p:])]
604
+ rb.out = rb.out[:p]
605
+ for padd--; padd >= 0; padd-- {
606
+ info = add[padd]
607
+ rb.insertUnsafe(inputBytes(cp), 0, info)
608
+ cp = cp[info.size:]
609
+ }
610
+ }