{"kind":"update","valid":true,"payload":"AQMBACcBBG1ldGEFdGl0bGUBBwtRMyBwbGFubmluZwEBBW5vdGVzCIMBCA5idWRnZXQsIGhpcmluZwEBAQEH","sample":true,"totalBytes":63,"blockBytes":58,"deleteSetBytes":5,"clients":[{"client":"1","fromClock":0,"toClock":23,"blocks":[{"clock":0,"length":1,"content":"Any","parent":"root 'meta'","key":"title","preview":"[\"Q3 planning\"]","bytes":27},{"clock":1,"length":8,"content":"Deleted","parent":"root 'notes'","preview":"deleted content, dropped","bytes":9},{"clock":9,"length":14,"content":"String","origin":"1@8","preview":"\"budget, hiring\"","bytes":18}],"blockCount":3,"bytes":57}],"deleteSet":[{"client":"1","clock":1,"length":8}],"stateVector":{"1":23},"notes":["No payload was passed, so this decoded a sample made by the real engine: a map key set, a text typed and partly deleted. Pass any update or message as base64 - what BcrdtDocument.Updated hands out, what a store holds, what crosses a transport - or as hex prefixed with 0x.","3 block(s) from 1 client(s), and 1 deleted range(s). Applying it is idempotent and order-insensitive: content a replica already holds is skipped by its clock, and a block whose origin has not arrived waits in the pending queue until it does.","The delete set names the deleted clock ranges per client; it is sent whole with every sync response, because a deletion does not advance a state vector and re-sending the set is how a lost one is repaired.","stateVector is what the update implies: per client, how far it holds an unbroken history from clock 0. A store or relay can answer a sync request from it - BcrdtUpdateOperations.Diff(update, remoteStateVector) - without building a document.","These bytes also decode as a AwarenessUpdate message, though not one the library would have written. Pass readAs: \"message\" to read them that way."]}