diff --git a/admin/client.go b/admin/client.go index bfe39ffa3..5b1e295db 100644 --- a/admin/client.go +++ b/admin/client.go @@ -230,7 +230,7 @@ func (c *Client) ListChangeSummaries( ctx context.Context, projectName string, key key.Key, - previousSeq uint64, + previousSeq int64, pageSize int32, isForward bool, ) ([]*types.ChangeSummary, error) { @@ -252,7 +252,7 @@ func (c *Client) ListChangeSummaries( } lastSeq := changes[len(changes)-1].ID().ServerSeq() - from, _ := types.GetChangesRange(types.Paging[uint64]{ + from, _ := types.GetChangesRange(types.Paging[int64]{ Offset: previousSeq, PageSize: int(pageSize), IsForward: isForward, diff --git a/api/admin.pb.go b/api/admin.pb.go index 74d34cc91..c171fa6bf 100644 --- a/api/admin.pb.go +++ b/api/admin.pb.go @@ -829,7 +829,7 @@ func (m *GetDocumentResponse) GetDocument() *DocumentSummary { type GetSnapshotMetaRequest struct { ProjectName string `protobuf:"bytes,1,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` DocumentKey string `protobuf:"bytes,2,opt,name=document_key,json=documentKey,proto3" json:"document_key,omitempty"` - ServerSeq uint64 `protobuf:"varint,3,opt,name=server_seq,json=serverSeq,proto3" json:"server_seq,omitempty"` + ServerSeq int64 `protobuf:"varint,3,opt,name=server_seq,json=serverSeq,proto3" json:"server_seq,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -882,7 +882,7 @@ func (m *GetSnapshotMetaRequest) GetDocumentKey() string { return "" } -func (m *GetSnapshotMetaRequest) GetServerSeq() uint64 { +func (m *GetSnapshotMetaRequest) GetServerSeq() int64 { if m != nil { return m.ServerSeq } @@ -891,7 +891,7 @@ func (m *GetSnapshotMetaRequest) GetServerSeq() uint64 { type GetSnapshotMetaResponse struct { Snapshot []byte `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` - Lamport uint64 `protobuf:"varint,2,opt,name=lamport,proto3" json:"lamport,omitempty"` + Lamport int64 `protobuf:"varint,2,opt,name=lamport,proto3" json:"lamport,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -937,7 +937,7 @@ func (m *GetSnapshotMetaResponse) GetSnapshot() []byte { return nil } -func (m *GetSnapshotMetaResponse) GetLamport() uint64 { +func (m *GetSnapshotMetaResponse) GetLamport() int64 { if m != nil { return m.Lamport } @@ -1065,7 +1065,7 @@ func (m *SearchDocumentsResponse) GetDocuments() []*DocumentSummary { type ListChangesRequest struct { ProjectName string `protobuf:"bytes,1,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` DocumentKey string `protobuf:"bytes,2,opt,name=document_key,json=documentKey,proto3" json:"document_key,omitempty"` - PreviousSeq uint64 `protobuf:"varint,3,opt,name=previous_seq,json=previousSeq,proto3" json:"previous_seq,omitempty"` + PreviousSeq int64 `protobuf:"varint,3,opt,name=previous_seq,json=previousSeq,proto3" json:"previous_seq,omitempty"` PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` IsForward bool `protobuf:"varint,5,opt,name=is_forward,json=isForward,proto3" json:"is_forward,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1120,7 +1120,7 @@ func (m *ListChangesRequest) GetDocumentKey() string { return "" } -func (m *ListChangesRequest) GetPreviousSeq() uint64 { +func (m *ListChangesRequest) GetPreviousSeq() int64 { if m != nil { return m.PreviousSeq } @@ -1216,62 +1216,62 @@ func init() { func init() { proto.RegisterFile("admin.proto", fileDescriptor_73a7fc70dcc2027c) } var fileDescriptor_73a7fc70dcc2027c = []byte{ - // 876 bytes of a gzipped FileDescriptorProto + // 877 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6e, 0xdb, 0x46, - 0x10, 0x36, 0x65, 0x31, 0x96, 0x86, 0x72, 0xd2, 0xac, 0x65, 0x9b, 0xa1, 0x53, 0x45, 0x5e, 0xc0, + 0x10, 0x36, 0x25, 0x31, 0x96, 0x86, 0x72, 0xd2, 0xac, 0x65, 0x9b, 0xa1, 0x53, 0x45, 0x5e, 0xc0, 0xad, 0xd0, 0x83, 0x6b, 0x28, 0xd7, 0x00, 0x69, 0xed, 0xd6, 0x6a, 0x90, 0x34, 0x28, 0x48, 0xf8, 0xd2, 0x1e, 0x84, 0x8d, 0xb8, 0x91, 0xd9, 0x48, 0x24, 0xb5, 0x4b, 0x26, 0x70, 0x6e, 0x7d, 0x89, 0xa2, 0x2f, 0xd3, 0x7b, 0x8f, 0x7d, 0x84, 0xc2, 0x7d, 0x8d, 0x1e, 0x0a, 0xee, 0x0f, 0xcd, 0xbf, - 0x06, 0x76, 0xe3, 0x9b, 0xf8, 0xcd, 0xec, 0x37, 0xf3, 0xed, 0xce, 0x8f, 0xc0, 0x22, 0xfe, 0x32, - 0x08, 0x0f, 0x63, 0x16, 0x25, 0x11, 0x5a, 0x27, 0x71, 0xe0, 0xdc, 0x63, 0x94, 0x47, 0x29, 0x9b, - 0x51, 0x2e, 0x51, 0x3c, 0x81, 0x4d, 0x2f, 0x98, 0x87, 0x67, 0xb1, 0x4b, 0x57, 0x29, 0xe5, 0x09, - 0x72, 0xa0, 0x93, 0x72, 0xca, 0x42, 0xb2, 0xa4, 0xb6, 0x31, 0x34, 0x46, 0x5d, 0x37, 0xff, 0xce, - 0x6c, 0x31, 0xe1, 0xfc, 0x5d, 0xc4, 0x7c, 0xbb, 0x25, 0x6d, 0xfa, 0x1b, 0x7f, 0x09, 0x77, 0x35, - 0x11, 0x8f, 0xa3, 0x90, 0x53, 0xf4, 0x29, 0xb4, 0xb3, 0x93, 0x82, 0xc5, 0x1a, 0x77, 0x0f, 0x49, - 0x1c, 0x1c, 0x9e, 0x71, 0xca, 0x5c, 0x01, 0xe3, 0x53, 0xe8, 0xbd, 0x88, 0xe6, 0xcf, 0xc2, 0x8f, - 0x0d, 0x7c, 0x00, 0x9b, 0x8a, 0x47, 0xc5, 0xed, 0x83, 0x99, 0x44, 0x6f, 0x68, 0xa8, 0x58, 0xe4, - 0x07, 0xfe, 0x02, 0xfa, 0x27, 0x8c, 0x92, 0x84, 0xfe, 0xc0, 0xa2, 0x9f, 0xe9, 0x2c, 0xd1, 0x61, - 0x11, 0xb4, 0x0b, 0x21, 0xc5, 0x6f, 0xfc, 0x14, 0xb6, 0x2b, 0xbe, 0x8a, 0xfa, 0x33, 0xd8, 0x88, - 0x25, 0xa4, 0x54, 0xf5, 0x84, 0x2a, 0xed, 0xa6, 0x8d, 0xf8, 0x73, 0xb8, 0x3f, 0xa1, 0xc9, 0x35, - 0x22, 0x3d, 0x01, 0x54, 0x74, 0xbc, 0x61, 0x98, 0x6d, 0xd8, 0x7a, 0x11, 0x70, 0x7d, 0x9c, 0xab, - 0x40, 0xf8, 0x2b, 0xe8, 0x97, 0x61, 0x45, 0x3b, 0x82, 0x8e, 0x3a, 0xc9, 0x6d, 0x63, 0xb8, 0x5e, - 0xe3, 0xcd, 0xad, 0xf8, 0x27, 0xe8, 0x9f, 0xc5, 0x7e, 0xfd, 0xb2, 0xee, 0x42, 0x2b, 0xf0, 0x95, - 0x80, 0x56, 0xe0, 0xa3, 0xc7, 0x70, 0xe7, 0x75, 0x40, 0x17, 0x3e, 0x17, 0xaf, 0x62, 0x8d, 0xf7, - 0xe4, 0x23, 0x67, 0x47, 0xc9, 0xab, 0x85, 0x3e, 0x7d, 0x2a, 0x5c, 0x5c, 0xe5, 0x9a, 0xdd, 0x6e, - 0x85, 0xfc, 0x86, 0xb2, 0x7f, 0x35, 0xa4, 0xc0, 0x6f, 0xa2, 0x59, 0xba, 0xa4, 0x61, 0x2e, 0x1c, - 0xed, 0x43, 0x4f, 0xf9, 0x4c, 0x0b, 0x37, 0x6d, 0x29, 0xec, 0x65, 0x56, 0x49, 0x8f, 0xc0, 0x8a, - 0x19, 0x7d, 0x1b, 0x44, 0x29, 0x9f, 0x06, 0xba, 0x98, 0x40, 0x43, 0xcf, 0x7c, 0xb4, 0x07, 0xdd, - 0x98, 0xcc, 0xe9, 0x94, 0x07, 0xef, 0xa9, 0xbd, 0x3e, 0x34, 0x46, 0x66, 0x56, 0x6b, 0x73, 0xea, - 0x05, 0xef, 0xb3, 0x92, 0x86, 0x80, 0x4f, 0x5f, 0x47, 0xec, 0x1d, 0x61, 0xbe, 0xdd, 0x1e, 0x1a, - 0xa3, 0x8e, 0xdb, 0x0d, 0xf8, 0xa9, 0x04, 0xf0, 0x73, 0xd8, 0xae, 0xe4, 0xa5, 0x94, 0x8d, 0xa1, - 0xeb, 0x6b, 0x50, 0x5d, 0x7d, 0x5f, 0x68, 0xd3, 0xae, 0x5e, 0xba, 0x5c, 0x12, 0x76, 0xe1, 0x5e, - 0xb9, 0xe1, 0x1f, 0x45, 0x69, 0x68, 0x87, 0x1b, 0x48, 0xdc, 0x87, 0x9e, 0x66, 0x99, 0xbe, 0xa1, - 0x17, 0x4a, 0xa3, 0xa5, 0xb1, 0xe7, 0xf4, 0x02, 0x4f, 0x60, 0xab, 0xc4, 0xad, 0xd2, 0x3c, 0x82, - 0x8e, 0xf6, 0x52, 0x2f, 0xd0, 0x9c, 0x65, 0xee, 0x85, 0x7f, 0x31, 0x60, 0x67, 0x42, 0x13, 0x2f, - 0x24, 0x31, 0x3f, 0x8f, 0x92, 0xef, 0x69, 0x42, 0x6e, 0x35, 0x53, 0xb4, 0x0f, 0xc0, 0x29, 0x7b, - 0x4b, 0xd9, 0x94, 0xd3, 0x95, 0x78, 0x8f, 0xf6, 0x71, 0xeb, 0xc8, 0x70, 0xbb, 0x12, 0xf5, 0xe8, - 0x0a, 0x7b, 0xb0, 0x5b, 0x4b, 0x41, 0x09, 0x72, 0xa0, 0xc3, 0x15, 0x2e, 0xe2, 0xf7, 0xdc, 0xfc, - 0x1b, 0x3d, 0x84, 0x8d, 0x05, 0x59, 0xc6, 0x11, 0x4b, 0x44, 0x5c, 0x49, 0xab, 0x21, 0x1c, 0xc2, - 0x8e, 0x47, 0x09, 0x9b, 0x9d, 0xff, 0x9f, 0x22, 0xeb, 0x83, 0xb9, 0x4a, 0x29, 0xd3, 0x82, 0xe4, - 0xc7, 0x07, 0x2b, 0x0b, 0x87, 0xb0, 0x5b, 0x8b, 0xa7, 0x44, 0x3c, 0x02, 0x2b, 0x89, 0x12, 0xb2, - 0x98, 0xce, 0xa2, 0x54, 0x3d, 0x8c, 0xe9, 0x82, 0x80, 0x4e, 0x32, 0xa4, 0x5c, 0x5d, 0xad, 0xeb, - 0x55, 0xd7, 0xef, 0x06, 0xa0, 0xac, 0x56, 0x4f, 0xce, 0x49, 0x38, 0xa7, 0xfc, 0x76, 0x1f, 0xed, - 0x20, 0x63, 0x51, 0x4d, 0x56, 0x7e, 0xb6, 0xbc, 0xf9, 0x3c, 0xba, 0x2a, 0x5f, 0x48, 0xfb, 0x83, - 0xad, 0x66, 0x56, 0x5b, 0xed, 0x89, 0x1c, 0x7d, 0x79, 0xfa, 0xea, 0xae, 0x0e, 0x60, 0x63, 0x26, - 0x21, 0xd5, 0x66, 0x96, 0xb8, 0x08, 0xe9, 0xe6, 0x6a, 0xdb, 0xf8, 0x1f, 0x13, 0xcc, 0xaf, 0xb3, - 0xdd, 0x98, 0x4d, 0x30, 0xb9, 0xb6, 0x10, 0x12, 0x9e, 0xa5, 0x65, 0xe8, 0x6c, 0x95, 0x30, 0x19, - 0x03, 0xaf, 0xa1, 0x23, 0x30, 0xc5, 0xca, 0x41, 0xf7, 0x85, 0xbd, 0xb8, 0xc6, 0x1c, 0x54, 0x84, - 0xf2, 0x13, 0xdf, 0xc1, 0x66, 0x69, 0xa3, 0xa0, 0x07, 0x32, 0xaf, 0x86, 0x8d, 0xe4, 0x38, 0x4d, - 0xa6, 0x9c, 0xe9, 0x5b, 0xe8, 0x15, 0x87, 0x3b, 0xb2, 0x65, 0xbc, 0xfa, 0x1a, 0x70, 0x1e, 0x34, - 0x58, 0x72, 0x9a, 0xa7, 0x00, 0x57, 0x8b, 0x07, 0xed, 0x08, 0xd7, 0xda, 0xca, 0x72, 0x76, 0x6b, - 0x78, 0x51, 0x51, 0x69, 0x8a, 0x2b, 0x45, 0x4d, 0x6b, 0x43, 0x29, 0x6a, 0x1c, 0xfa, 0x92, 0xa9, - 0x34, 0x35, 0xd1, 0x55, 0xe2, 0xd5, 0xe6, 0x53, 0x4c, 0x8d, 0x43, 0x16, 0xaf, 0xa1, 0x63, 0xb0, - 0x0a, 0x63, 0x0d, 0xe5, 0xd9, 0x57, 0x86, 0xa8, 0x63, 0xd7, 0x0d, 0x39, 0xc7, 0x4b, 0xb8, 0x57, - 0x99, 0x26, 0x68, 0x4f, 0xbb, 0x37, 0x8c, 0x39, 0xe7, 0x61, 0xb3, 0xb1, 0xc8, 0x57, 0x69, 0x6c, - 0xc5, 0xd7, 0x3c, 0x5e, 0x14, 0xdf, 0x7f, 0xcc, 0x02, 0xa9, 0xb1, 0x50, 0xf8, 0x4a, 0x63, 0xbd, - 0x93, 0x1d, 0xbb, 0x6e, 0xd0, 0x1c, 0xc7, 0x9f, 0xfc, 0x71, 0x39, 0x30, 0xfe, 0xbc, 0x1c, 0x18, - 0x7f, 0x5d, 0x0e, 0x8c, 0xdf, 0xfe, 0x1e, 0xac, 0xbd, 0xba, 0x23, 0xfe, 0x0d, 0x3e, 0xfe, 0x37, - 0x00, 0x00, 0xff, 0xff, 0x9d, 0xb6, 0x96, 0xad, 0x32, 0x0a, 0x00, 0x00, + 0x06, 0x71, 0x93, 0x9b, 0xf8, 0xcd, 0xec, 0x37, 0xf3, 0xed, 0xce, 0x8f, 0xc0, 0x22, 0xfe, 0x2a, + 0x08, 0x8f, 0x62, 0x16, 0x25, 0x11, 0x6a, 0x93, 0x38, 0x70, 0xee, 0x30, 0xca, 0xa3, 0x94, 0xcd, + 0x29, 0x97, 0x28, 0x9e, 0xc2, 0x96, 0x17, 0x2c, 0xc2, 0xf3, 0xd8, 0xa5, 0xeb, 0x94, 0xf2, 0x04, + 0x39, 0xd0, 0x4d, 0x39, 0x65, 0x21, 0x59, 0x51, 0xdb, 0x18, 0x19, 0xe3, 0x9e, 0x9b, 0x7f, 0x67, + 0xb6, 0x98, 0x70, 0xfe, 0x26, 0x62, 0xbe, 0xdd, 0x92, 0x36, 0xfd, 0x8d, 0xbf, 0x84, 0xdb, 0x9a, + 0x88, 0xc7, 0x51, 0xc8, 0x29, 0xfa, 0x14, 0x3a, 0xd9, 0x49, 0xc1, 0x62, 0x4d, 0x7a, 0x47, 0x24, + 0x0e, 0x8e, 0xce, 0x39, 0x65, 0xae, 0x80, 0xf1, 0x19, 0xf4, 0x9f, 0x45, 0x8b, 0x27, 0xe1, 0x87, + 0x06, 0x3e, 0x84, 0x2d, 0xc5, 0xa3, 0xe2, 0x0e, 0xc0, 0x4c, 0xa2, 0x57, 0x34, 0x54, 0x2c, 0xf2, + 0x03, 0x7f, 0x01, 0x83, 0x53, 0x46, 0x49, 0x42, 0x7f, 0x60, 0xd1, 0xcf, 0x74, 0x9e, 0xe8, 0xb0, + 0x08, 0x3a, 0x85, 0x90, 0xe2, 0x37, 0x7e, 0x0c, 0x3b, 0x15, 0x5f, 0x45, 0xfd, 0x19, 0x6c, 0xc6, + 0x12, 0x52, 0xaa, 0xfa, 0x42, 0x95, 0x76, 0xd3, 0x46, 0xfc, 0x39, 0xdc, 0x9d, 0xd2, 0xe4, 0x3d, + 0x22, 0x3d, 0x02, 0x54, 0x74, 0xbc, 0x61, 0x98, 0x1d, 0xd8, 0x7e, 0x16, 0x70, 0x7d, 0x9c, 0xab, + 0x40, 0xf8, 0x2b, 0x18, 0x94, 0x61, 0x45, 0x3b, 0x86, 0xae, 0x3a, 0xc9, 0x6d, 0x63, 0xd4, 0xae, + 0xf1, 0xe6, 0x56, 0xfc, 0x13, 0x0c, 0xce, 0x63, 0xbf, 0x7e, 0x59, 0xb7, 0xa1, 0x15, 0xf8, 0x4a, + 0x40, 0x2b, 0xf0, 0xd1, 0x43, 0xb8, 0xf5, 0x32, 0xa0, 0x4b, 0x9f, 0x8b, 0x57, 0xb1, 0x26, 0xfb, + 0xf2, 0x91, 0xb3, 0xa3, 0xe4, 0xc5, 0x52, 0x9f, 0x3e, 0x13, 0x2e, 0xae, 0x72, 0xcd, 0x6e, 0xb7, + 0x42, 0x7e, 0x43, 0xd9, 0xbf, 0x1a, 0x52, 0xe0, 0x37, 0xd1, 0x3c, 0x5d, 0xd1, 0x30, 0x17, 0x8e, + 0x0e, 0xa0, 0xaf, 0x7c, 0x66, 0x85, 0x9b, 0xb6, 0x14, 0xf6, 0x3c, 0xab, 0xa4, 0x07, 0x60, 0xc5, + 0x8c, 0xbe, 0x0e, 0xa2, 0x94, 0xcf, 0x02, 0x5d, 0x4c, 0xa0, 0xa1, 0x27, 0x3e, 0xda, 0x87, 0x5e, + 0x4c, 0x16, 0x74, 0xc6, 0x83, 0xb7, 0xd4, 0x6e, 0x8f, 0x8c, 0xb1, 0x99, 0xd5, 0xda, 0x82, 0x7a, + 0xc1, 0xdb, 0xac, 0xa4, 0x21, 0xe0, 0xb3, 0x97, 0x11, 0x7b, 0x43, 0x98, 0x6f, 0x77, 0x46, 0xc6, + 0xb8, 0xeb, 0xf6, 0x02, 0x7e, 0x26, 0x01, 0xfc, 0x14, 0x76, 0x2a, 0x79, 0x29, 0x65, 0x13, 0xe8, + 0xf9, 0x1a, 0x54, 0x57, 0x3f, 0x10, 0xda, 0xb4, 0xab, 0x97, 0xae, 0x56, 0x84, 0x5d, 0xba, 0xd7, + 0x6e, 0xf8, 0x47, 0x51, 0x1a, 0xda, 0xe1, 0x06, 0x12, 0x0f, 0xa0, 0xaf, 0x59, 0x66, 0xaf, 0xe8, + 0xa5, 0xd2, 0x68, 0x69, 0xec, 0x29, 0xbd, 0xc4, 0x53, 0xd8, 0x2e, 0x71, 0xab, 0x34, 0x8f, 0xa1, + 0xab, 0xbd, 0xd4, 0x0b, 0x34, 0x67, 0x99, 0x7b, 0xe1, 0x5f, 0x0c, 0xd8, 0x9d, 0xd2, 0xc4, 0x0b, + 0x49, 0xcc, 0x2f, 0xa2, 0xe4, 0x7b, 0x9a, 0x90, 0x8f, 0x9a, 0x29, 0x3a, 0x00, 0xe0, 0x94, 0xbd, + 0xa6, 0x6c, 0xc6, 0xe9, 0x5a, 0xbc, 0x47, 0xfb, 0xa4, 0x75, 0x6c, 0xb8, 0x3d, 0x89, 0x7a, 0x74, + 0x8d, 0x3d, 0xd8, 0xab, 0xa5, 0xa0, 0x04, 0x39, 0xd0, 0xe5, 0x0a, 0x17, 0xf1, 0xfb, 0x6e, 0xfe, + 0x8d, 0xee, 0xc3, 0xe6, 0x92, 0xac, 0xe2, 0x88, 0x25, 0x22, 0xae, 0xa4, 0xd5, 0x10, 0x0e, 0x61, + 0xd7, 0xa3, 0x84, 0xcd, 0x2f, 0xfe, 0x4f, 0x91, 0x0d, 0xc0, 0x5c, 0xa7, 0x94, 0x69, 0x41, 0xf2, + 0xe3, 0x9d, 0x95, 0x85, 0x43, 0xd8, 0xab, 0xc5, 0x53, 0x22, 0x1e, 0x80, 0x95, 0x44, 0x09, 0x59, + 0xce, 0xe6, 0x51, 0xaa, 0x1e, 0xc6, 0x74, 0x41, 0x40, 0xa7, 0x19, 0x52, 0xae, 0xae, 0xd6, 0xfb, + 0x55, 0xd7, 0xef, 0x06, 0xa0, 0xac, 0x56, 0x4f, 0x2f, 0x48, 0xb8, 0xa0, 0xfc, 0xe3, 0x3e, 0xda, + 0x61, 0xc6, 0xa2, 0x9a, 0xac, 0xfc, 0x6c, 0x79, 0xf3, 0x79, 0x74, 0x5d, 0xbe, 0x90, 0xce, 0x3b, + 0x5b, 0xcd, 0xac, 0xb6, 0xda, 0x23, 0x39, 0xfa, 0xf2, 0xf4, 0xd5, 0x5d, 0x1d, 0xc2, 0xe6, 0x5c, + 0x42, 0xaa, 0xcd, 0x2c, 0x71, 0x11, 0xd2, 0xcd, 0xd5, 0xb6, 0xc9, 0x3f, 0x26, 0x98, 0x5f, 0x67, + 0xbb, 0x31, 0x9b, 0x60, 0x72, 0x6d, 0x21, 0x24, 0x3c, 0x4b, 0xcb, 0xd0, 0xd9, 0x2e, 0x61, 0x32, + 0x06, 0xde, 0x40, 0xc7, 0x60, 0x8a, 0x95, 0x83, 0xee, 0x0a, 0x7b, 0x71, 0x8d, 0x39, 0xa8, 0x08, + 0xe5, 0x27, 0xbe, 0x83, 0xad, 0xd2, 0x46, 0x41, 0xf7, 0x64, 0x5e, 0x0d, 0x1b, 0xc9, 0x71, 0x9a, + 0x4c, 0x39, 0xd3, 0xb7, 0xd0, 0x2f, 0x0e, 0x77, 0x64, 0xcb, 0x78, 0xf5, 0x35, 0xe0, 0xdc, 0x6b, + 0xb0, 0xe4, 0x34, 0x8f, 0x01, 0xae, 0x17, 0x0f, 0xda, 0x15, 0xae, 0xb5, 0x95, 0xe5, 0xec, 0xd5, + 0xf0, 0xa2, 0xa2, 0xd2, 0x14, 0x57, 0x8a, 0x9a, 0xd6, 0x86, 0x52, 0xd4, 0x38, 0xf4, 0x25, 0x53, + 0x69, 0x6a, 0xa2, 0xeb, 0xc4, 0xab, 0xcd, 0xa7, 0x98, 0x1a, 0x87, 0x2c, 0xde, 0x40, 0x27, 0x60, + 0x15, 0xc6, 0x1a, 0xca, 0xb3, 0xaf, 0x0c, 0x51, 0xc7, 0xae, 0x1b, 0x72, 0x8e, 0xe7, 0x70, 0xa7, + 0x32, 0x4d, 0xd0, 0xbe, 0x76, 0x6f, 0x18, 0x73, 0xce, 0xfd, 0x66, 0x63, 0x91, 0xaf, 0xd2, 0xd8, + 0x8a, 0xaf, 0x79, 0xbc, 0x28, 0xbe, 0xff, 0x98, 0x05, 0x52, 0x63, 0xa1, 0xf0, 0x95, 0xc6, 0x7a, + 0x27, 0x3b, 0x76, 0xdd, 0xa0, 0x39, 0x4e, 0x3e, 0xf9, 0xe3, 0x6a, 0x68, 0xfc, 0x79, 0x35, 0x34, + 0xfe, 0xba, 0x1a, 0x1a, 0xbf, 0xfd, 0x3d, 0xdc, 0x78, 0x71, 0x4b, 0xfc, 0x1b, 0x7c, 0xf8, 0x6f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x79, 0xe9, 0x6f, 0x1e, 0x32, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -4686,7 +4686,7 @@ func (m *GetSnapshotMetaRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ServerSeq |= uint64(b&0x7F) << shift + m.ServerSeq |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -4790,7 +4790,7 @@ func (m *GetSnapshotMetaResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Lamport |= uint64(b&0x7F) << shift + m.Lamport |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -5162,7 +5162,7 @@ func (m *ListChangesRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PreviousSeq |= uint64(b&0x7F) << shift + m.PreviousSeq |= int64(b&0x7F) << shift if b < 0x80 { break } diff --git a/api/admin.proto b/api/admin.proto index b23bd6d3f..b531bdb3c 100644 --- a/api/admin.proto +++ b/api/admin.proto @@ -109,12 +109,12 @@ message GetDocumentResponse { message GetSnapshotMetaRequest { string project_name = 1; string document_key = 2; - uint64 server_seq = 3 [jstype = JS_STRING]; + int64 server_seq = 3 [jstype = JS_STRING]; } message GetSnapshotMetaResponse { bytes snapshot = 1; - uint64 lamport = 2 [jstype = JS_STRING]; + int64 lamport = 2 [jstype = JS_STRING]; } message SearchDocumentsRequest { @@ -131,11 +131,11 @@ message SearchDocumentsResponse { message ListChangesRequest { string project_name = 1; string document_key = 2; - uint64 previous_seq = 3 [jstype = JS_STRING]; + int64 previous_seq = 3 [jstype = JS_STRING]; int32 page_size = 4; bool is_forward = 5; } message ListChangesResponse { repeated Change changes = 1; -} \ No newline at end of file +} diff --git a/api/resources.pb.go b/api/resources.pb.go index fe36cc863..b20166414 100644 --- a/api/resources.pb.go +++ b/api/resources.pb.go @@ -262,8 +262,8 @@ func (m *Change) GetOperations() []*Operation { type ChangeID struct { ClientSeq uint32 `protobuf:"varint,1,opt,name=client_seq,json=clientSeq,proto3" json:"client_seq,omitempty"` - ServerSeq uint64 `protobuf:"varint,2,opt,name=server_seq,json=serverSeq,proto3" json:"server_seq,omitempty"` - Lamport uint64 `protobuf:"varint,3,opt,name=lamport,proto3" json:"lamport,omitempty"` + ServerSeq int64 `protobuf:"varint,2,opt,name=server_seq,json=serverSeq,proto3" json:"server_seq,omitempty"` + Lamport int64 `protobuf:"varint,3,opt,name=lamport,proto3" json:"lamport,omitempty"` ActorId []byte `protobuf:"bytes,4,opt,name=actor_id,json=actorId,proto3" json:"actor_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -310,14 +310,14 @@ func (m *ChangeID) GetClientSeq() uint32 { return 0 } -func (m *ChangeID) GetServerSeq() uint64 { +func (m *ChangeID) GetServerSeq() int64 { if m != nil { return m.ServerSeq } return 0 } -func (m *ChangeID) GetLamport() uint64 { +func (m *ChangeID) GetLamport() int64 { if m != nil { return m.Lamport } @@ -2745,7 +2745,7 @@ func (m *Clients) GetClients() []*Client { } type Checkpoint struct { - ServerSeq uint64 `protobuf:"varint,1,opt,name=server_seq,json=serverSeq,proto3" json:"server_seq,omitempty"` + ServerSeq int64 `protobuf:"varint,1,opt,name=server_seq,json=serverSeq,proto3" json:"server_seq,omitempty"` ClientSeq uint32 `protobuf:"varint,2,opt,name=client_seq,json=clientSeq,proto3" json:"client_seq,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -2785,7 +2785,7 @@ func (m *Checkpoint) XXX_DiscardUnknown() { var xxx_messageInfo_Checkpoint proto.InternalMessageInfo -func (m *Checkpoint) GetServerSeq() uint64 { +func (m *Checkpoint) GetServerSeq() int64 { if m != nil { return m.ServerSeq } @@ -2863,7 +2863,7 @@ func (m *TextNodePos) GetRelativeOffset() int32 { } type TimeTicket struct { - Lamport uint64 `protobuf:"varint,1,opt,name=lamport,proto3" json:"lamport,omitempty"` + Lamport int64 `protobuf:"varint,1,opt,name=lamport,proto3" json:"lamport,omitempty"` Delimiter uint32 `protobuf:"varint,2,opt,name=delimiter,proto3" json:"delimiter,omitempty"` ActorId []byte `protobuf:"bytes,3,opt,name=actor_id,json=actorId,proto3" json:"actor_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -2904,7 +2904,7 @@ func (m *TimeTicket) XXX_DiscardUnknown() { var xxx_messageInfo_TimeTicket proto.InternalMessageInfo -func (m *TimeTicket) GetLamport() uint64 { +func (m *TimeTicket) GetLamport() int64 { if m != nil { return m.Lamport } @@ -3066,120 +3066,120 @@ var fileDescriptor_cf1b13971fe4c19d = []byte{ 0x8b, 0x3d, 0x3d, 0xb0, 0x1c, 0xdb, 0x2f, 0xa5, 0xa9, 0xa5, 0xab, 0x54, 0x40, 0x27, 0x9c, 0x56, 0x23, 0x88, 0xca, 0xaf, 0x05, 0xc8, 0x87, 0xa2, 0xd1, 0x6d, 0x00, 0x63, 0x60, 0x11, 0x8f, 0xfa, 0xf8, 0x39, 0xd5, 0xbe, 0xa2, 0xca, 0x6c, 0xa6, 0x8b, 0x9f, 0xa3, 0x3b, 0x00, 0x3e, 0xf6, 0xce, - 0xb0, 0x47, 0xc9, 0x44, 0xb1, 0xb4, 0x23, 0x6e, 0x0b, 0xaa, 0xcc, 0x66, 0x09, 0xe4, 0x16, 0xe4, - 0x06, 0xfa, 0xd0, 0x75, 0x3c, 0xe6, 0x40, 0x46, 0x0f, 0xa7, 0xd0, 0x5b, 0x90, 0xd7, 0x8d, 0xc0, - 0xf1, 0x34, 0xcb, 0x2c, 0x49, 0xd4, 0xbf, 0x39, 0x3a, 0xde, 0x33, 0x2b, 0x5f, 0xde, 0x00, 0x79, - 0x62, 0x21, 0xfa, 0x2e, 0xa4, 0x7d, 0x1c, 0xf0, 0xf5, 0xa3, 0xb8, 0xf9, 0xd5, 0x2e, 0x0e, 0x5a, - 0x29, 0x95, 0x00, 0x08, 0x4e, 0x37, 0x4d, 0x1e, 0xda, 0x24, 0xae, 0x66, 0x9a, 0x04, 0xa7, 0x9b, - 0x26, 0xba, 0x0f, 0xd2, 0xd0, 0x39, 0xc3, 0xd4, 0xa6, 0xc2, 0xa3, 0xab, 0x09, 0xe0, 0x13, 0xe7, - 0x0c, 0xb7, 0x52, 0x2a, 0x85, 0xa0, 0x2d, 0xc8, 0x7a, 0x98, 0x82, 0x25, 0x0a, 0xbe, 0x9e, 0x00, - 0xab, 0x94, 0xd8, 0x4a, 0xa9, 0x1c, 0x46, 0x64, 0x63, 0xd3, 0x0a, 0x83, 0x9c, 0x94, 0xdd, 0x34, - 0x2d, 0x62, 0x2d, 0x85, 0x10, 0xd9, 0x3e, 0x1e, 0x60, 0x23, 0x28, 0x65, 0xe7, 0xca, 0xee, 0x52, - 0x22, 0x91, 0xcd, 0x60, 0xe8, 0x87, 0x20, 0x7b, 0x96, 0x71, 0xa2, 0x51, 0x05, 0x39, 0xca, 0x73, - 0x33, 0x69, 0x8f, 0x65, 0x9c, 0x70, 0x25, 0x79, 0x8f, 0x7f, 0xa3, 0x87, 0x90, 0xf1, 0x83, 0xf1, - 0x00, 0x97, 0xf2, 0x94, 0xe7, 0x5a, 0x52, 0x0f, 0xa1, 0xb5, 0x52, 0x2a, 0x03, 0xa1, 0x1f, 0x40, - 0xde, 0xb2, 0x0d, 0x0f, 0xeb, 0x3e, 0x2e, 0xc9, 0x73, 0x95, 0xec, 0x71, 0x32, 0x51, 0x12, 0x42, - 0xcb, 0x7f, 0x14, 0x20, 0xdd, 0xc5, 0x01, 0x49, 0x79, 0x57, 0xf7, 0x48, 0xd6, 0x10, 0x42, 0x80, - 0x4d, 0x4d, 0x0f, 0x43, 0x37, 0x9b, 0xf2, 0x0c, 0x59, 0x67, 0xc0, 0x5a, 0x80, 0x14, 0x48, 0x93, - 0xdd, 0xcb, 0xb2, 0x98, 0x7c, 0x12, 0xdb, 0xcf, 0xf4, 0xc1, 0x28, 0x0c, 0xd6, 0x0d, 0x2a, 0xe2, - 0xe3, 0x6e, 0xa7, 0xdd, 0x1c, 0x60, 0xb2, 0xb3, 0xbb, 0xd6, 0xd0, 0x1d, 0x60, 0x95, 0x81, 0xd0, - 0x36, 0x14, 0xf0, 0x0b, 0x6c, 0x8c, 0xb8, 0x5a, 0x69, 0xbe, 0x5a, 0x08, 0x31, 0xb5, 0xa0, 0xfc, - 0x2f, 0x01, 0xd2, 0x35, 0xd3, 0xbc, 0x98, 0xd9, 0xef, 0xc3, 0x9a, 0xeb, 0xe1, 0xb3, 0x28, 0xab, - 0x38, 0x9f, 0x75, 0x85, 0xe0, 0xa6, 0x8c, 0xff, 0xeb, 0xd5, 0xfd, 0x5b, 0x00, 0x89, 0xe4, 0xf3, - 0xb7, 0xb4, 0xbc, 0x2a, 0x40, 0x84, 0x27, 0x3d, 0x9f, 0x47, 0x36, 0x26, 0xf8, 0xe5, 0x17, 0xf8, - 0x85, 0x00, 0x59, 0xb6, 0x07, 0x2f, 0xb6, 0xc4, 0xb8, 0xa5, 0xe2, 0xb2, 0x96, 0xa6, 0x17, 0x5b, - 0xfa, 0xbb, 0x34, 0x48, 0x74, 0x37, 0x5e, 0xc8, 0xce, 0x77, 0x41, 0x3a, 0xf2, 0x9c, 0x21, 0xb7, - 0x50, 0x61, 0x78, 0xfc, 0x22, 0x68, 0x3b, 0x26, 0x3e, 0x70, 0x7c, 0x95, 0x52, 0xd1, 0x06, 0x88, - 0x81, 0xc3, 0x8d, 0x9a, 0xc5, 0x88, 0x81, 0x83, 0xfa, 0x70, 0x73, 0xaa, 0x5d, 0x1b, 0xea, 0xae, - 0xd6, 0x1f, 0x6b, 0xb4, 0xfa, 0xf2, 0xf3, 0xec, 0xe1, 0x9c, 0xca, 0x55, 0x9d, 0xd8, 0xf1, 0x44, - 0x77, 0x77, 0xc6, 0x35, 0x02, 0x6f, 0xda, 0x81, 0x37, 0x56, 0xaf, 0x1a, 0xb3, 0x14, 0x72, 0x2c, - 0x19, 0x8e, 0x1d, 0x60, 0x9b, 0x55, 0x43, 0x59, 0x0d, 0x87, 0x49, 0xef, 0x65, 0x17, 0x7b, 0xef, - 0x29, 0x94, 0xce, 0x53, 0x1e, 0x16, 0x0d, 0x61, 0x5a, 0x34, 0xee, 0x86, 0xdb, 0xea, 0x9c, 0x40, - 0x32, 0xea, 0x87, 0xe2, 0x07, 0x42, 0xf9, 0xa5, 0x00, 0x59, 0x56, 0x68, 0x2f, 0x47, 0x60, 0x96, - 0xdf, 0x02, 0x9f, 0x4b, 0x90, 0x0f, 0xcb, 0xfe, 0xe5, 0x58, 0xc3, 0xd1, 0xa2, 0xe4, 0xda, 0x3e, - 0xe7, 0xd4, 0xfa, 0xc6, 0x12, 0x6c, 0x17, 0x40, 0x0f, 0x02, 0xcf, 0xea, 0x8f, 0x02, 0xec, 0x97, - 0xb2, 0x54, 0xe9, 0xbd, 0xf3, 0x94, 0xd6, 0x26, 0x48, 0xa6, 0x2b, 0xc2, 0x9a, 0x0c, 0x47, 0xee, - 0x5b, 0xcc, 0xd4, 0x1f, 0xc3, 0x5a, 0xc2, 0xd2, 0x39, 0xf2, 0xae, 0x45, 0xe5, 0xc9, 0x51, 0xf6, - 0xbf, 0x89, 0x90, 0xa1, 0x27, 0xfd, 0xe5, 0xc8, 0x91, 0x46, 0x2c, 0x42, 0x2c, 0x2d, 0xde, 0x9d, - 0xd7, 0x98, 0x2c, 0x13, 0x9e, 0xcc, 0xe2, 0xf0, 0x5c, 0xd0, 0x8b, 0x5f, 0x08, 0x90, 0x0f, 0xdb, - 0x9f, 0x8b, 0x39, 0xf2, 0x61, 0x3c, 0xf2, 0xcb, 0x1d, 0xfd, 0x8b, 0xcf, 0x9b, 0x9d, 0x2c, 0x48, - 0x7d, 0xc7, 0x1c, 0x57, 0xfe, 0x29, 0xc0, 0x95, 0x19, 0xb1, 0x89, 0xf3, 0x4e, 0x58, 0x78, 0xde, - 0x3d, 0x80, 0x3c, 0x39, 0x64, 0x5f, 0x77, 0x3a, 0xe6, 0x28, 0x80, 0x9d, 0xa5, 0xac, 0x19, 0x7e, - 0xed, 0xa9, 0xcf, 0x21, 0xb5, 0x00, 0x55, 0x40, 0x0a, 0xc6, 0x2e, 0xeb, 0xb0, 0x57, 0xf9, 0xf5, - 0xe4, 0xa7, 0x64, 0xd5, 0xbd, 0xb1, 0x8b, 0x55, 0x4a, 0x9b, 0x46, 0x24, 0x43, 0x2f, 0x0a, 0x6c, - 0x50, 0xf9, 0x6d, 0x11, 0x0a, 0x91, 0xb5, 0xa1, 0x9f, 0x40, 0xe1, 0x99, 0xef, 0xd8, 0x9a, 0xd3, - 0x7f, 0x46, 0xda, 0x6a, 0xb6, 0xac, 0xef, 0x24, 0x3d, 0x4b, 0xbf, 0x3b, 0x14, 0xd2, 0x4a, 0xa9, - 0x40, 0x38, 0xd8, 0x08, 0x3d, 0x06, 0x3a, 0xd2, 0x74, 0xcf, 0xd3, 0xc7, 0x7c, 0x9d, 0xe5, 0xb9, - 0xec, 0x35, 0x82, 0x68, 0xa5, 0x54, 0x99, 0xe0, 0xe9, 0x00, 0x7d, 0x08, 0xb2, 0xeb, 0x59, 0x43, - 0x2b, 0xb0, 0x26, 0x57, 0x8b, 0x59, 0xde, 0x83, 0x10, 0x41, 0x78, 0x27, 0x70, 0xf4, 0x1e, 0x48, - 0x01, 0x7e, 0x11, 0xc4, 0x2e, 0x19, 0x51, 0x36, 0xb2, 0x7b, 0xc8, 0xbd, 0x81, 0x80, 0xd0, 0x07, - 0xfc, 0x1a, 0x40, 0x39, 0x58, 0xca, 0xbf, 0x35, 0xc3, 0x41, 0xaa, 0x1b, 0xe7, 0xa2, 0x17, 0x01, - 0xf2, 0x8d, 0xbe, 0x4f, 0x0a, 0xe6, 0xc8, 0x0e, 0xb0, 0xc7, 0xcf, 0xdc, 0xd2, 0x0c, 0x5f, 0x9d, - 0xd1, 0x5b, 0x29, 0x35, 0x84, 0x96, 0xff, 0x22, 0x00, 0x4c, 0x5d, 0x86, 0x2a, 0x90, 0xb1, 0x1d, - 0x13, 0xfb, 0x25, 0x81, 0x6e, 0xda, 0x22, 0x15, 0xa1, 0xb6, 0x7a, 0x64, 0x77, 0xab, 0x8c, 0xb4, - 0x74, 0x3b, 0x15, 0x4d, 0xaf, 0xf4, 0x52, 0xe9, 0x25, 0x2d, 0x4a, 0xaf, 0xf2, 0x9f, 0x05, 0x90, - 0x27, 0x21, 0x3b, 0xc7, 0xfa, 0xdd, 0xda, 0x65, 0xb5, 0xfe, 0x1f, 0x02, 0xc8, 0x93, 0xa4, 0x99, - 0x6c, 0x15, 0xe1, 0x4d, 0xb6, 0x8a, 0x18, 0xd9, 0x2a, 0x4b, 0xb7, 0xe2, 0xd1, 0x35, 0x49, 0x4b, - 0xad, 0x29, 0xb3, 0x70, 0x4d, 0x7f, 0x12, 0x40, 0xa2, 0xf9, 0xf8, 0x4e, 0x3c, 0x18, 0x2b, 0xb1, - 0x93, 0xe2, 0x32, 0x46, 0xe3, 0xa5, 0xc0, 0x7a, 0x2d, 0x6a, 0xfd, 0xbd, 0xb8, 0xf5, 0x57, 0x58, - 0x2a, 0x71, 0xea, 0x65, 0x5d, 0xc1, 0x57, 0x02, 0xe4, 0xf8, 0x1e, 0xff, 0xff, 0xc8, 0x26, 0x72, - 0xd0, 0xed, 0x90, 0x83, 0x6e, 0x17, 0x72, 0xbc, 0x0a, 0xcd, 0x39, 0xd1, 0x1f, 0x40, 0x0e, 0xb3, - 0x0a, 0x17, 0xeb, 0x5c, 0x22, 0x95, 0x4f, 0x0d, 0x01, 0x95, 0xa7, 0x90, 0xe3, 0x05, 0x01, 0x6d, - 0x80, 0x64, 0x93, 0x2a, 0xcb, 0x4e, 0x92, 0x78, 0xb1, 0xa0, 0x94, 0xa5, 0x04, 0xff, 0x41, 0x80, - 0x7c, 0x98, 0x1b, 0xe8, 0xed, 0xc8, 0x3f, 0xbd, 0xb5, 0x58, 0xe2, 0xf3, 0xbf, 0x7a, 0x73, 0x9b, - 0x90, 0xa5, 0x0f, 0xd7, 0x2d, 0x28, 0x58, 0xb6, 0xaf, 0xd1, 0xfb, 0x3b, 0xff, 0xcf, 0x36, 0x47, - 0x9f, 0x6c, 0xd9, 0xfe, 0x81, 0x87, 0xcf, 0xf6, 0xcc, 0xca, 0x33, 0x50, 0xa2, 0x39, 0x4c, 0x9a, - 0xa5, 0x37, 0xed, 0x90, 0x88, 0x71, 0x23, 0xd7, 0x5c, 0x94, 0x16, 0x1c, 0x52, 0x0b, 0x2a, 0x2f, - 0x45, 0x28, 0x46, 0x95, 0x2d, 0x76, 0x4a, 0x2d, 0xd6, 0x36, 0x8a, 0x74, 0xe3, 0xdd, 0x99, 0xd9, - 0x78, 0xaf, 0xed, 0x19, 0xaf, 0x45, 0xff, 0xb9, 0x9c, 0xe3, 0x57, 0x69, 0x59, 0xbf, 0x66, 0x16, - 0xf9, 0xb5, 0xdc, 0x7b, 0x93, 0xc6, 0xf3, 0xbd, 0x78, 0x53, 0x78, 0x7d, 0x66, 0x65, 0x44, 0x44, - 0xa4, 0x1f, 0xad, 0xf4, 0x00, 0xa6, 0xea, 0x96, 0xee, 0xea, 0x6e, 0x40, 0xd6, 0x39, 0x3a, 0xf2, - 0x31, 0xcb, 0xdd, 0x8c, 0xca, 0x47, 0x95, 0x21, 0x48, 0x87, 0x3e, 0xf6, 0xd0, 0xea, 0x24, 0x1c, - 0x32, 0xf5, 0x7e, 0x19, 0xf2, 0x23, 0x1f, 0x7b, 0xb6, 0x3e, 0x0c, 0x03, 0x3f, 0x19, 0xa3, 0x1f, - 0xcd, 0x29, 0x09, 0xe5, 0x2a, 0xfb, 0x8b, 0x5f, 0x0d, 0xff, 0xe2, 0x53, 0x3b, 0xe8, 0x6f, 0xfe, - 0x88, 0x19, 0x95, 0xbf, 0x8a, 0x90, 0x3b, 0xf0, 0x1c, 0xda, 0x5d, 0x24, 0x55, 0x22, 0x90, 0x22, - 0xea, 0xe8, 0x37, 0xba, 0x0d, 0xe0, 0x8e, 0xfa, 0x03, 0xcb, 0xa0, 0xbf, 0xfa, 0x59, 0x18, 0x65, - 0x36, 0xf3, 0x09, 0x1e, 0x13, 0xb2, 0x8f, 0x0d, 0x0f, 0xb3, 0x97, 0x00, 0x89, 0x91, 0xd9, 0x0c, - 0x21, 0x6f, 0x82, 0xa2, 0x8f, 0x82, 0x13, 0xed, 0x33, 0xdc, 0x3f, 0x71, 0x9c, 0x53, 0x6d, 0xe4, - 0x0d, 0xf8, 0xf5, 0x71, 0x95, 0xcc, 0x3f, 0x65, 0xd3, 0x87, 0xde, 0x00, 0x6d, 0xc3, 0xb5, 0x18, - 0x72, 0x88, 0x83, 0x13, 0xc7, 0x64, 0xf7, 0x49, 0x59, 0x45, 0x11, 0xf4, 0x13, 0x46, 0x49, 0x38, - 0x21, 0xb7, 0x84, 0x13, 0x08, 0x6b, 0x64, 0xef, 0xe4, 0x17, 0xb3, 0x4e, 0xb7, 0xd1, 0xe7, 0x22, - 0xdc, 0x38, 0x24, 0x23, 0xbd, 0x3f, 0xc0, 0xdc, 0x91, 0x1f, 0x59, 0x78, 0x60, 0x92, 0x0b, 0x12, - 0x73, 0x1f, 0xcb, 0x85, 0x5b, 0x33, 0xf2, 0xba, 0x81, 0x67, 0xd9, 0xc7, 0xb4, 0xe8, 0x73, 0xe7, - 0x7e, 0x34, 0xc7, 0x3d, 0xe2, 0x1b, 0x70, 0x27, 0x9d, 0xf7, 0xf3, 0x73, 0x9c, 0xc7, 0x32, 0xa3, - 0x4a, 0xb3, 0x72, 0xbe, 0xd1, 0xd5, 0xda, 0x8c, 0x63, 0xe7, 0x39, 0xbb, 0x5c, 0x05, 0x34, 0x8b, - 0x64, 0x8f, 0x21, 0x4c, 0x95, 0x40, 0xe3, 0x14, 0x0e, 0x2b, 0xbf, 0x12, 0x61, 0xad, 0xc1, 0x1f, - 0x84, 0xba, 0xa3, 0xe1, 0x50, 0xf7, 0xc6, 0x33, 0xe9, 0x36, 0xfb, 0x03, 0x3a, 0xf9, 0x0a, 0x24, - 0x47, 0x5e, 0x81, 0xe2, 0xe1, 0x96, 0x96, 0x09, 0xf7, 0x63, 0x28, 0xe8, 0x86, 0x81, 0x7d, 0x3f, - 0x7a, 0xcc, 0xbd, 0x8e, 0x17, 0x42, 0xf8, 0x4c, 0xae, 0x64, 0x97, 0xc9, 0x95, 0xdf, 0x08, 0x90, - 0x3f, 0xf0, 0xb0, 0x8f, 0x6d, 0x83, 0x1e, 0xee, 0xc6, 0xc0, 0x31, 0x4e, 0xa9, 0x03, 0x32, 0x2a, - 0x1b, 0x90, 0xcb, 0x08, 0x09, 0x0b, 0xaf, 0xae, 0xec, 0xe7, 0x7f, 0xc8, 0x52, 0x6d, 0xe8, 0x81, - 0xce, 0x6a, 0x2a, 0x05, 0x95, 0xdf, 0x07, 0x79, 0x32, 0xb5, 0xcc, 0x4d, 0xba, 0x52, 0x87, 0x6c, - 0x9d, 0xbe, 0x25, 0x45, 0x62, 0x50, 0xa4, 0x31, 0xb8, 0x0f, 0x79, 0x97, 0xab, 0xe3, 0x99, 0xb7, - 0x12, 0xb3, 0x41, 0x9d, 0x90, 0x2b, 0xdb, 0x90, 0x63, 0x42, 0x7c, 0xfa, 0x22, 0xc7, 0x3e, 0x79, - 0x3f, 0xc6, 0x5f, 0xe4, 0xe8, 0x9c, 0x1a, 0xd2, 0x2a, 0x6d, 0x80, 0xe9, 0x73, 0x5f, 0xe2, 0x0d, - 0x4b, 0x98, 0xf7, 0x86, 0x15, 0x7f, 0x05, 0x13, 0x13, 0xaf, 0x60, 0x95, 0x5f, 0x40, 0x21, 0xf2, - 0x6b, 0xe3, 0x9b, 0xaa, 0xc0, 0xe8, 0x1e, 0xac, 0x79, 0x78, 0xa0, 0x93, 0xa6, 0x5f, 0xe3, 0x80, - 0x34, 0x05, 0xac, 0x86, 0xd3, 0x1d, 0x56, 0xaa, 0x0d, 0x80, 0xa9, 0xe4, 0xe8, 0x83, 0x9b, 0x30, - 0xfb, 0xe0, 0x76, 0x0b, 0x64, 0x13, 0x0f, 0xc8, 0x5d, 0x02, 0x7b, 0xe1, 0x4a, 0x26, 0x13, 0xb1, - 0xe7, 0xb8, 0x74, 0xfc, 0x39, 0xee, 0x97, 0x02, 0xe4, 0x1b, 0x8e, 0xd1, 0x3c, 0x23, 0xe1, 0xba, - 0x1b, 0xeb, 0x1a, 0x59, 0xd7, 0x1b, 0x12, 0x23, 0x8d, 0xe3, 0x7d, 0x60, 0x25, 0xd9, 0x3f, 0xe1, - 0xca, 0x12, 0x11, 0x99, 0x52, 0xd1, 0x3b, 0xb0, 0x12, 0x7d, 0xbc, 0x65, 0x0f, 0x95, 0xb2, 0x5a, - 0x8c, 0xbc, 0xde, 0xfa, 0x0f, 0xbe, 0x12, 0x40, 0x9e, 0x34, 0xa7, 0x28, 0x0f, 0x52, 0xfb, 0x70, - 0x7f, 0x5f, 0x49, 0xa1, 0x02, 0xe4, 0x76, 0x3a, 0x9d, 0xfd, 0x66, 0xad, 0xad, 0x08, 0x64, 0xb0, - 0xd7, 0xee, 0x35, 0x77, 0x9b, 0xaa, 0x22, 0x12, 0xcc, 0x7e, 0xa7, 0xbd, 0xab, 0xa4, 0x11, 0x40, - 0xb6, 0xd1, 0x39, 0xdc, 0xd9, 0x6f, 0x2a, 0x12, 0xf9, 0xee, 0xf6, 0xd4, 0xbd, 0xf6, 0xae, 0x92, - 0x41, 0x32, 0x64, 0x76, 0x3e, 0xed, 0x35, 0xbb, 0x4a, 0x96, 0x80, 0x1b, 0xb5, 0x5e, 0x53, 0xc9, - 0xa1, 0x35, 0xf6, 0x4f, 0x41, 0xeb, 0xec, 0x7c, 0xdc, 0xac, 0xf7, 0x94, 0x3c, 0x5a, 0x65, 0xd7, - 0x5f, 0xad, 0xa6, 0xaa, 0xb5, 0x4f, 0x15, 0x99, 0x40, 0x7b, 0xcd, 0x9f, 0xf5, 0x14, 0x40, 0x2b, - 0x20, 0xab, 0x7b, 0xf5, 0x96, 0x46, 0x87, 0x05, 0xc2, 0xc9, 0xb5, 0x6b, 0xf5, 0x76, 0x4f, 0x29, - 0xa2, 0x22, 0xe4, 0x89, 0x05, 0x74, 0xb4, 0x42, 0xe4, 0x30, 0x2b, 0xe8, 0x78, 0xf5, 0xc1, 0x29, - 0x14, 0xa3, 0x7e, 0x43, 0xd7, 0xe1, 0x4a, 0xa3, 0x53, 0x3f, 0x7c, 0xd2, 0x6c, 0xf7, 0xba, 0x5a, - 0xbd, 0x55, 0x6b, 0xef, 0x36, 0x1b, 0x4a, 0x2a, 0x3e, 0xfd, 0xb4, 0xd6, 0xab, 0xb7, 0x9a, 0x0d, - 0x45, 0x40, 0x37, 0xe1, 0xea, 0x74, 0xfa, 0xb0, 0x1d, 0x12, 0x44, 0x74, 0x0d, 0x94, 0x03, 0xb5, - 0xd9, 0x6d, 0xb6, 0xeb, 0xcd, 0x89, 0x94, 0xf4, 0x8e, 0xf2, 0xe5, 0xab, 0x75, 0xe1, 0xef, 0xaf, - 0xd6, 0x85, 0xaf, 0x5f, 0xad, 0x0b, 0xbf, 0xff, 0xcf, 0x7a, 0xaa, 0x9f, 0xa5, 0x85, 0xe2, 0x7b, - 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x81, 0x1a, 0x54, 0x88, 0xa1, 0x1f, 0x00, 0x00, + 0xb0, 0x47, 0xc9, 0x44, 0x71, 0x7a, 0x47, 0xdc, 0x16, 0x54, 0x99, 0xcd, 0x12, 0xc8, 0x2d, 0xc8, + 0x0d, 0xf4, 0xa1, 0xeb, 0x78, 0xcc, 0x81, 0x8c, 0x1e, 0x4e, 0xa1, 0xb7, 0x20, 0xaf, 0x1b, 0x81, + 0xe3, 0x69, 0x96, 0x59, 0x92, 0xa8, 0x7f, 0x73, 0x74, 0xbc, 0x67, 0x56, 0xbe, 0xbc, 0x01, 0xf2, + 0xc4, 0x42, 0xf4, 0x5d, 0x48, 0xfb, 0x38, 0xe0, 0xeb, 0x47, 0x71, 0xf3, 0xab, 0x5d, 0x1c, 0xb4, + 0x52, 0x2a, 0x01, 0x10, 0x9c, 0x6e, 0x9a, 0x3c, 0xb4, 0x49, 0x5c, 0xcd, 0x34, 0x09, 0x4e, 0x37, + 0x4d, 0x74, 0x1f, 0xa4, 0xa1, 0x73, 0x86, 0xa9, 0x4d, 0x85, 0x47, 0x57, 0x13, 0xc0, 0x27, 0xce, + 0x19, 0x6e, 0xa5, 0x54, 0x0a, 0x41, 0x5b, 0x90, 0xf5, 0x30, 0x05, 0x4b, 0x14, 0x7c, 0x3d, 0x01, + 0x56, 0x29, 0xb1, 0x95, 0x52, 0x39, 0x8c, 0xc8, 0xc6, 0xa6, 0x15, 0x06, 0x39, 0x29, 0xbb, 0x69, + 0x5a, 0xc4, 0x5a, 0x0a, 0x21, 0xb2, 0x7d, 0x3c, 0xc0, 0x46, 0x50, 0xca, 0xce, 0x95, 0xdd, 0xa5, + 0x44, 0x22, 0x9b, 0xc1, 0xd0, 0x0f, 0x41, 0xf6, 0x2c, 0xe3, 0x44, 0xa3, 0x0a, 0x72, 0x94, 0xe7, + 0x66, 0xd2, 0x1e, 0xcb, 0x38, 0xe1, 0x4a, 0xf2, 0x1e, 0xff, 0x46, 0x0f, 0x21, 0xe3, 0x07, 0xe3, + 0x01, 0x2e, 0xe5, 0x29, 0xcf, 0xb5, 0xa4, 0x1e, 0x42, 0x6b, 0xa5, 0x54, 0x06, 0x42, 0x3f, 0x80, + 0xbc, 0x65, 0x1b, 0x1e, 0xd6, 0x7d, 0x5c, 0x92, 0xe7, 0x2a, 0xd9, 0xe3, 0x64, 0xa2, 0x24, 0x84, + 0x96, 0xff, 0x28, 0x40, 0xba, 0x8b, 0x03, 0x92, 0xf2, 0xae, 0xee, 0x91, 0xac, 0x21, 0x84, 0x00, + 0x9b, 0x9a, 0x1e, 0x86, 0x6e, 0x36, 0xe5, 0x19, 0xb2, 0xce, 0x80, 0xb5, 0x00, 0x29, 0x90, 0x26, + 0xbb, 0x97, 0x65, 0x31, 0xf9, 0x24, 0xb6, 0x9f, 0xe9, 0x83, 0x51, 0x18, 0xac, 0x1b, 0x54, 0xc4, + 0xc7, 0xdd, 0x4e, 0xbb, 0x39, 0xc0, 0x64, 0x67, 0x77, 0xad, 0xa1, 0x3b, 0xc0, 0x2a, 0x03, 0xa1, + 0x6d, 0x28, 0xe0, 0x17, 0xd8, 0x18, 0x71, 0xb5, 0xd2, 0x7c, 0xb5, 0x10, 0x62, 0x6a, 0x41, 0xf9, + 0x5f, 0x02, 0xa4, 0x6b, 0xa6, 0x79, 0x31, 0xb3, 0xdf, 0x87, 0x35, 0xd7, 0xc3, 0x67, 0x51, 0x56, + 0x71, 0x3e, 0xeb, 0x0a, 0xc1, 0x4d, 0x19, 0xff, 0xd7, 0xab, 0xfb, 0xb7, 0x00, 0x12, 0xc9, 0xe7, + 0x6f, 0x69, 0x79, 0x55, 0x80, 0x08, 0x4f, 0x7a, 0x3e, 0x8f, 0x6c, 0x4c, 0xf0, 0xcb, 0x2f, 0xf0, + 0x0b, 0x01, 0xb2, 0x6c, 0x0f, 0x5e, 0x6c, 0x89, 0x71, 0x4b, 0xc5, 0x65, 0x2d, 0x4d, 0x2f, 0xb6, + 0xf4, 0x77, 0x69, 0x90, 0xe8, 0x6e, 0xbc, 0x90, 0x9d, 0xef, 0x82, 0x74, 0xe4, 0x39, 0x43, 0x6e, + 0xa1, 0xc2, 0xf0, 0xf8, 0x45, 0xd0, 0x76, 0x4c, 0x7c, 0xe0, 0xf8, 0x2a, 0xa5, 0xa2, 0x0d, 0x10, + 0x03, 0x87, 0x1b, 0x35, 0x8b, 0x11, 0x03, 0x07, 0xf5, 0xe1, 0xe6, 0x54, 0xbb, 0x36, 0xd4, 0x5d, + 0xad, 0x3f, 0xd6, 0x68, 0xf5, 0xe5, 0xe7, 0xd9, 0xc3, 0x39, 0x95, 0xab, 0x3a, 0xb1, 0xe3, 0x89, + 0xee, 0xee, 0x8c, 0x6b, 0x04, 0xde, 0xb4, 0x03, 0x6f, 0xac, 0x5e, 0x35, 0x66, 0x29, 0xe4, 0x58, + 0x32, 0x1c, 0x3b, 0xc0, 0x36, 0xab, 0x86, 0xb2, 0x1a, 0x0e, 0x93, 0xde, 0xcb, 0x2e, 0xf6, 0xde, + 0x53, 0x28, 0x9d, 0xa7, 0x3c, 0x2c, 0x1a, 0xc2, 0xb4, 0x68, 0xdc, 0x0d, 0xb7, 0xd5, 0x39, 0x81, + 0x64, 0xd4, 0x0f, 0xc5, 0x0f, 0x84, 0xf2, 0x4b, 0x01, 0xb2, 0xac, 0xd0, 0x5e, 0x8e, 0xc0, 0x2c, + 0xbf, 0x05, 0x3e, 0x97, 0x20, 0x1f, 0x96, 0xfd, 0xcb, 0xb1, 0x86, 0xa3, 0x45, 0xc9, 0xb5, 0x7d, + 0xce, 0xa9, 0xf5, 0x8d, 0x25, 0xd8, 0x2e, 0x80, 0x1e, 0x04, 0x9e, 0xd5, 0x1f, 0x05, 0xd8, 0x2f, + 0x65, 0xa9, 0xd2, 0x7b, 0xe7, 0x29, 0xad, 0x4d, 0x90, 0x4c, 0x57, 0x84, 0x35, 0x19, 0x8e, 0xdc, + 0xb7, 0x98, 0xa9, 0x3f, 0x86, 0xb5, 0x84, 0xa5, 0x73, 0xe4, 0x5d, 0x8b, 0xca, 0x93, 0xa3, 0xec, + 0x7f, 0x13, 0x21, 0x43, 0x4f, 0xfa, 0xcb, 0x91, 0x23, 0x8d, 0x58, 0x84, 0x58, 0x5a, 0xbc, 0x3b, + 0xaf, 0x31, 0x59, 0x26, 0x3c, 0x99, 0xc5, 0xe1, 0xb9, 0xa0, 0x17, 0xbf, 0x10, 0x20, 0x1f, 0xb6, + 0x3f, 0x17, 0x73, 0xe4, 0xc3, 0x78, 0xe4, 0x97, 0x3b, 0xfa, 0x17, 0x9f, 0x37, 0x3b, 0x59, 0x90, + 0xfa, 0x8e, 0x39, 0xae, 0xfc, 0x53, 0x80, 0x2b, 0x33, 0x62, 0x13, 0xe7, 0x9d, 0xb0, 0xf0, 0xbc, + 0x7b, 0x00, 0x79, 0x72, 0xc8, 0xbe, 0xee, 0x74, 0xcc, 0x51, 0x00, 0x3b, 0x4b, 0x59, 0x33, 0xfc, + 0xda, 0x53, 0x9f, 0x43, 0x6a, 0x01, 0xaa, 0x80, 0x14, 0x8c, 0x5d, 0xd6, 0x61, 0xaf, 0xf2, 0xeb, + 0xc9, 0x4f, 0xc9, 0xaa, 0x7b, 0x63, 0x17, 0xab, 0x94, 0x36, 0x8d, 0x48, 0x86, 0x5e, 0x14, 0xd8, + 0xa0, 0xf2, 0xdb, 0x22, 0x14, 0x22, 0x6b, 0x43, 0x3f, 0x81, 0xc2, 0x33, 0xdf, 0xb1, 0x35, 0xa7, + 0xff, 0x8c, 0xb4, 0xd5, 0x6c, 0x59, 0xdf, 0x49, 0x7a, 0x96, 0x7e, 0x77, 0x28, 0xa4, 0x95, 0x52, + 0x81, 0x70, 0xb0, 0x11, 0x7a, 0x0c, 0x74, 0xa4, 0xe9, 0x9e, 0xa7, 0x8f, 0xf9, 0x3a, 0xcb, 0x73, + 0xd9, 0x6b, 0x04, 0xd1, 0x4a, 0xa9, 0x32, 0xc1, 0xd3, 0x01, 0xfa, 0x10, 0x64, 0xd7, 0xb3, 0x86, + 0x56, 0x60, 0x4d, 0xae, 0x16, 0xb3, 0xbc, 0x07, 0x21, 0x82, 0xf0, 0x4e, 0xe0, 0xe8, 0x3d, 0x90, + 0x02, 0xfc, 0x22, 0x88, 0x5d, 0x32, 0xa2, 0x6c, 0x64, 0xf7, 0x90, 0x7b, 0x03, 0x01, 0xa1, 0x0f, + 0xf8, 0x35, 0x80, 0x72, 0xb0, 0x94, 0x7f, 0x6b, 0x86, 0x83, 0x54, 0x37, 0xce, 0x45, 0x2f, 0x02, + 0xe4, 0x1b, 0x7d, 0x9f, 0x14, 0xcc, 0x91, 0x1d, 0x60, 0x8f, 0x9f, 0xb9, 0xa5, 0x19, 0xbe, 0x3a, + 0xa3, 0xb7, 0x52, 0x6a, 0x08, 0x2d, 0xff, 0x45, 0x00, 0x98, 0xba, 0x0c, 0x55, 0x20, 0x63, 0x3b, + 0x26, 0xf6, 0x4b, 0x02, 0xdd, 0xb4, 0x45, 0x2a, 0x42, 0x6d, 0xf5, 0xc8, 0xee, 0x56, 0x19, 0x69, + 0xe9, 0x76, 0x2a, 0x9a, 0x5e, 0xe9, 0xa5, 0xd2, 0x4b, 0x5a, 0x94, 0x5e, 0xe5, 0x3f, 0x0b, 0x20, + 0x4f, 0x42, 0x76, 0x8e, 0xf5, 0xbb, 0xb5, 0xcb, 0x6a, 0xfd, 0x3f, 0x04, 0x90, 0x27, 0x49, 0x33, + 0xd9, 0x2a, 0xc2, 0x9b, 0x6c, 0x15, 0x31, 0xb2, 0x55, 0x96, 0x6e, 0xc5, 0xa3, 0x6b, 0x92, 0x96, + 0x5a, 0x53, 0x66, 0xe1, 0x9a, 0xfe, 0x24, 0x80, 0x44, 0xf3, 0xf1, 0x9d, 0x78, 0x30, 0x56, 0x62, + 0x27, 0xc5, 0x65, 0x8c, 0xc6, 0x4b, 0x81, 0xf5, 0x5a, 0xd4, 0xfa, 0x7b, 0x71, 0xeb, 0xaf, 0xb0, + 0x54, 0xe2, 0xd4, 0xcb, 0xba, 0x82, 0xaf, 0x04, 0xc8, 0xf1, 0x3d, 0xfe, 0xff, 0x91, 0x4d, 0xe4, + 0xa0, 0xdb, 0x21, 0x07, 0xdd, 0x2e, 0xe4, 0x78, 0x15, 0x9a, 0x73, 0xa2, 0x3f, 0x80, 0x1c, 0x66, + 0x15, 0x2e, 0xd6, 0xb9, 0x44, 0x2a, 0x9f, 0x1a, 0x02, 0x2a, 0x4f, 0x21, 0xc7, 0x0b, 0x02, 0xda, + 0x00, 0xc9, 0x26, 0x55, 0x96, 0x9d, 0x24, 0xf1, 0x62, 0x41, 0x29, 0x4b, 0x09, 0xfe, 0x83, 0x00, + 0xf9, 0x30, 0x37, 0xd0, 0xdb, 0x91, 0x7f, 0x7a, 0x6b, 0xb1, 0xc4, 0xe7, 0x7f, 0xf5, 0xe6, 0x36, + 0x21, 0x4b, 0x1f, 0xae, 0x5b, 0x50, 0xb0, 0x6c, 0x5f, 0xa3, 0xf7, 0x77, 0xfe, 0x9f, 0x6d, 0x8e, + 0x3e, 0xd9, 0xb2, 0xfd, 0x03, 0x0f, 0x9f, 0xed, 0x99, 0x95, 0x67, 0xa0, 0x44, 0x73, 0x98, 0x34, + 0x4b, 0x6f, 0xda, 0x21, 0x11, 0xe3, 0x46, 0xae, 0xb9, 0x28, 0x2d, 0x38, 0xa4, 0x16, 0x54, 0x5e, + 0x8a, 0x50, 0x8c, 0x2a, 0x5b, 0xec, 0x94, 0x5a, 0xac, 0x6d, 0x14, 0xe9, 0xc6, 0xbb, 0x33, 0xb3, + 0xf1, 0x5e, 0xdb, 0x33, 0x5e, 0x8b, 0xfe, 0x73, 0x39, 0xc7, 0xaf, 0xd2, 0xb2, 0x7e, 0xcd, 0x2c, + 0xf2, 0x6b, 0xb9, 0xf7, 0x26, 0x8d, 0xe7, 0x7b, 0xf1, 0xa6, 0xf0, 0xfa, 0xcc, 0xca, 0x88, 0x88, + 0x48, 0x3f, 0x5a, 0xe9, 0x01, 0x4c, 0xd5, 0x2d, 0xdd, 0xd5, 0xdd, 0x80, 0xac, 0x73, 0x74, 0xe4, + 0x63, 0x96, 0xbb, 0x19, 0x95, 0x8f, 0x2a, 0x43, 0x90, 0x0e, 0x7d, 0xec, 0xa1, 0xd5, 0x49, 0x38, + 0x64, 0xea, 0xfd, 0x32, 0xe4, 0x47, 0x3e, 0xf6, 0x6c, 0x7d, 0x18, 0x06, 0x7e, 0x32, 0x46, 0x3f, + 0x9a, 0x53, 0x12, 0xca, 0x55, 0xf6, 0x17, 0xbf, 0x1a, 0xfe, 0xc5, 0xa7, 0x76, 0xd0, 0xdf, 0xfc, + 0x11, 0x33, 0x2a, 0x7f, 0x15, 0x21, 0x77, 0xe0, 0x39, 0xb4, 0xbb, 0x48, 0xaa, 0x44, 0x20, 0x45, + 0xd4, 0xd1, 0x6f, 0x74, 0x1b, 0xc0, 0x1d, 0xf5, 0x07, 0x96, 0x41, 0x7f, 0xf5, 0xb3, 0x30, 0xca, + 0x6c, 0xe6, 0x13, 0x3c, 0x26, 0x64, 0x1f, 0x1b, 0x1e, 0x66, 0x2f, 0x01, 0x12, 0x23, 0xb3, 0x19, + 0x42, 0xde, 0x04, 0x45, 0x1f, 0x05, 0x27, 0xda, 0x67, 0xb8, 0x7f, 0xe2, 0x38, 0xa7, 0xda, 0xc8, + 0x1b, 0xf0, 0xeb, 0xe3, 0x2a, 0x99, 0x7f, 0xca, 0xa6, 0x0f, 0xbd, 0x01, 0xda, 0x86, 0x6b, 0x31, + 0xe4, 0x10, 0x07, 0x27, 0x8e, 0xc9, 0xee, 0x93, 0xb2, 0x8a, 0x22, 0xe8, 0x27, 0x8c, 0x92, 0x70, + 0x42, 0x6e, 0x09, 0x27, 0x10, 0xd6, 0xc8, 0xde, 0xc9, 0x2f, 0x66, 0x9d, 0x6e, 0xa3, 0xcf, 0x45, + 0xb8, 0x71, 0x48, 0x46, 0x7a, 0x7f, 0x80, 0xb9, 0x23, 0x3f, 0xb2, 0xf0, 0xc0, 0x24, 0x17, 0x24, + 0xe6, 0x3e, 0x96, 0x0b, 0xb7, 0x66, 0xe4, 0x75, 0x03, 0xcf, 0xb2, 0x8f, 0x69, 0xd1, 0xe7, 0xce, + 0xfd, 0x68, 0x8e, 0x7b, 0xc4, 0x37, 0xe0, 0x4e, 0x3a, 0xef, 0xe7, 0xe7, 0x38, 0x8f, 0x65, 0x46, + 0x95, 0x66, 0xe5, 0x7c, 0xa3, 0xab, 0xb5, 0x19, 0xc7, 0xce, 0x73, 0x76, 0xb9, 0x0a, 0x68, 0x16, + 0xc9, 0x1e, 0x43, 0x98, 0x2a, 0x81, 0xc6, 0x29, 0x1c, 0x56, 0x7e, 0x25, 0xc2, 0x5a, 0x83, 0x3f, + 0x08, 0x75, 0x47, 0xc3, 0xa1, 0xee, 0x8d, 0x67, 0xd2, 0x6d, 0xf6, 0x07, 0x74, 0xf2, 0x15, 0x48, + 0x8e, 0xbc, 0x02, 0xc5, 0xc3, 0x2d, 0x2d, 0x13, 0xee, 0xc7, 0x50, 0xd0, 0x0d, 0x03, 0xfb, 0x7e, + 0xf4, 0x98, 0x7b, 0x1d, 0x2f, 0x84, 0xf0, 0x99, 0x5c, 0xc9, 0x2e, 0x93, 0x2b, 0xbf, 0x11, 0x20, + 0x7f, 0xe0, 0x61, 0x1f, 0xdb, 0x06, 0x3d, 0xdc, 0x8d, 0x81, 0x63, 0x9c, 0x52, 0x07, 0x64, 0x54, + 0x36, 0x20, 0x97, 0x11, 0x12, 0x16, 0x5e, 0x5d, 0xd9, 0xcf, 0xff, 0x90, 0xa5, 0xda, 0xd0, 0x03, + 0x9d, 0xd5, 0x54, 0x0a, 0x2a, 0xbf, 0x0f, 0xf2, 0x64, 0x6a, 0x99, 0x9b, 0x74, 0xa5, 0x0e, 0xd9, + 0x3a, 0x7d, 0x4b, 0x8a, 0xc4, 0xa0, 0x48, 0x63, 0x70, 0x1f, 0xf2, 0x2e, 0x57, 0xc7, 0x33, 0x6f, + 0x25, 0x66, 0x83, 0x3a, 0x21, 0x57, 0xb6, 0x21, 0xc7, 0x84, 0xf8, 0xf4, 0x45, 0x8e, 0x7d, 0xf2, + 0x7e, 0x8c, 0xbf, 0xc8, 0xd1, 0x39, 0x35, 0xa4, 0x55, 0xda, 0x00, 0xd3, 0xe7, 0xbe, 0xc4, 0x1b, + 0x96, 0x30, 0xef, 0x0d, 0x2b, 0xfe, 0x0a, 0x26, 0x26, 0x5e, 0xc1, 0x2a, 0xbf, 0x80, 0x42, 0xe4, + 0xd7, 0xc6, 0x37, 0x55, 0x81, 0xd1, 0x3d, 0x58, 0xf3, 0xf0, 0x40, 0x27, 0x4d, 0xbf, 0xc6, 0x01, + 0x69, 0x0a, 0x58, 0x0d, 0xa7, 0x3b, 0xac, 0x54, 0x1b, 0x00, 0x53, 0xc9, 0xd1, 0x07, 0x37, 0x61, + 0xf6, 0xc1, 0xed, 0x16, 0xc8, 0x26, 0x1e, 0x90, 0xbb, 0x04, 0xf6, 0xc2, 0x95, 0x4c, 0x26, 0x62, + 0xcf, 0x71, 0xe9, 0xf8, 0x73, 0xdc, 0x2f, 0x05, 0xc8, 0x37, 0x1c, 0xa3, 0x79, 0x46, 0xc2, 0x75, + 0x37, 0xd6, 0x35, 0xb2, 0xae, 0x37, 0x24, 0x46, 0x1a, 0xc7, 0xfb, 0xc0, 0x4a, 0xb2, 0x7f, 0xc2, + 0x95, 0x25, 0x22, 0x32, 0xa5, 0xa2, 0x77, 0x60, 0x25, 0xfa, 0x78, 0xcb, 0x1e, 0x2a, 0x65, 0xb5, + 0x18, 0x79, 0xbd, 0xf5, 0x1f, 0x7c, 0x25, 0x80, 0x3c, 0x69, 0x4e, 0x51, 0x1e, 0xa4, 0xf6, 0xe1, + 0xfe, 0xbe, 0x92, 0x42, 0x05, 0xc8, 0xed, 0x74, 0x3a, 0xfb, 0xcd, 0x5a, 0x5b, 0x11, 0xc8, 0x60, + 0xaf, 0xdd, 0x6b, 0xee, 0x36, 0x55, 0x45, 0x24, 0x98, 0xfd, 0x4e, 0x7b, 0x57, 0x49, 0x23, 0x80, + 0x6c, 0xa3, 0x73, 0xb8, 0xb3, 0xdf, 0x54, 0x24, 0xf2, 0xdd, 0xed, 0xa9, 0x7b, 0xed, 0x5d, 0x25, + 0x83, 0x64, 0xc8, 0xec, 0x7c, 0xda, 0x6b, 0x76, 0x95, 0x2c, 0x01, 0x37, 0x6a, 0xbd, 0xa6, 0x92, + 0x43, 0x6b, 0xec, 0x9f, 0x82, 0xd6, 0xd9, 0xf9, 0xb8, 0x59, 0xef, 0x29, 0x79, 0xb4, 0xca, 0xae, + 0xbf, 0x5a, 0x4d, 0x55, 0x6b, 0x9f, 0x2a, 0x32, 0x81, 0xf6, 0x9a, 0x3f, 0xeb, 0x29, 0x80, 0x56, + 0x40, 0x56, 0xf7, 0xea, 0x2d, 0x8d, 0x0e, 0x0b, 0x84, 0x93, 0x6b, 0xd7, 0xea, 0xed, 0x9e, 0x52, + 0x44, 0x45, 0xc8, 0x13, 0x0b, 0xe8, 0x68, 0x85, 0xc8, 0x61, 0x56, 0xd0, 0xf1, 0xea, 0x83, 0x53, + 0x28, 0x46, 0xfd, 0x86, 0xae, 0xc3, 0x95, 0x46, 0xa7, 0x7e, 0xf8, 0xa4, 0xd9, 0xee, 0x75, 0xb5, + 0x7a, 0xab, 0xd6, 0xde, 0x6d, 0x36, 0x94, 0x54, 0x7c, 0xfa, 0x69, 0xad, 0x57, 0x6f, 0x35, 0x1b, + 0x8a, 0x80, 0x6e, 0xc2, 0xd5, 0xe9, 0xf4, 0x61, 0x3b, 0x24, 0x88, 0xe8, 0x1a, 0x28, 0x07, 0x6a, + 0xb3, 0xdb, 0x6c, 0xd7, 0x9b, 0x13, 0x29, 0xe9, 0x1d, 0xe5, 0xcb, 0x57, 0xeb, 0xc2, 0xdf, 0x5f, + 0xad, 0x0b, 0x5f, 0xbf, 0x5a, 0x17, 0x7e, 0xff, 0x9f, 0xf5, 0x54, 0x3f, 0x4b, 0x0b, 0xc5, 0xf7, + 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x25, 0x00, 0x49, 0xa1, 0x1f, 0x00, 0x00, } func (m *ChangePack) Marshal() (dAtA []byte, err error) { @@ -7757,7 +7757,7 @@ func (m *ChangeID) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ServerSeq |= uint64(b&0x7F) << shift + m.ServerSeq |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -7776,7 +7776,7 @@ func (m *ChangeID) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Lamport |= uint64(b&0x7F) << shift + m.Lamport |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -14546,7 +14546,7 @@ func (m *Checkpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ServerSeq |= uint64(b&0x7F) << shift + m.ServerSeq |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -14760,7 +14760,7 @@ func (m *TimeTicket) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Lamport |= uint64(b&0x7F) << shift + m.Lamport |= int64(b&0x7F) << shift if b < 0x80 { break } diff --git a/api/resources.proto b/api/resources.proto index 62f6a3afe..0e4084e63 100644 --- a/api/resources.proto +++ b/api/resources.proto @@ -40,8 +40,8 @@ message Change { message ChangeID { uint32 client_seq = 1; - uint64 server_seq = 2 [jstype = JS_STRING]; - uint64 lamport = 3 [jstype = JS_STRING]; + int64 server_seq = 2 [jstype = JS_STRING]; + int64 lamport = 3 [jstype = JS_STRING]; bytes actor_id = 4; } @@ -271,7 +271,7 @@ message Clients { } message Checkpoint { - uint64 server_seq = 1 [jstype = JS_STRING]; + int64 server_seq = 1 [jstype = JS_STRING]; uint32 client_seq = 2; } @@ -282,7 +282,7 @@ message TextNodePos { } message TimeTicket { - uint64 lamport = 1 [jstype = JS_STRING]; + int64 lamport = 1 [jstype = JS_STRING]; uint32 delimiter = 2; bytes actor_id = 3; } diff --git a/api/types/change_summary.go b/api/types/change_summary.go index fc1d4c0a9..9e0430688 100644 --- a/api/types/change_summary.go +++ b/api/types/change_summary.go @@ -16,16 +16,16 @@ type ChangeSummary struct { // GetChangesRange returns a range of changes. func GetChangesRange( - paging Paging[uint64], - lastSeq uint64, -) (uint64, uint64) { + paging Paging[int64], + lastSeq int64, +) (int64, int64) { if paging.Offset == 0 && paging.PageSize == 0 { return 1, lastSeq } - size := uint64(paging.PageSize) + size := int64(paging.PageSize) prevSeq := paging.Offset - var from, to uint64 + var from, to int64 if paging.IsForward { if prevSeq == 0 { from = 1 diff --git a/api/types/change_summary_test.go b/api/types/change_summary_test.go index ca1b375da..7a9a729d5 100644 --- a/api/types/change_summary_test.go +++ b/api/types/change_summary_test.go @@ -26,103 +26,103 @@ import ( func TestChangeSummary(t *testing.T) { t.Run("get changes range test", func(t *testing.T) { - lastSeq := uint64(10) - var from, to uint64 + lastSeq := int64(10) + var from, to int64 - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 0, PageSize: 0, IsForward: false, }, lastSeq) - assert.Equal(t, uint64(1), from) - assert.Equal(t, uint64(10), to) + assert.Equal(t, int64(1), from) + assert.Equal(t, int64(10), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 0, PageSize: 0, IsForward: true, }, lastSeq) - assert.Equal(t, uint64(1), from) - assert.Equal(t, uint64(10), to) + assert.Equal(t, int64(1), from) + assert.Equal(t, int64(10), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 4, PageSize: 3, IsForward: false, }, lastSeq) - assert.Equal(t, uint64(1), from) - assert.Equal(t, uint64(3), to) + assert.Equal(t, int64(1), from) + assert.Equal(t, int64(3), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 4, PageSize: 3, IsForward: true, }, lastSeq) - assert.Equal(t, uint64(5), from) - assert.Equal(t, uint64(7), to) + assert.Equal(t, int64(5), from) + assert.Equal(t, int64(7), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 4, PageSize: 100, IsForward: false, }, lastSeq) - assert.Equal(t, uint64(1), from) - assert.Equal(t, uint64(3), to) + assert.Equal(t, int64(1), from) + assert.Equal(t, int64(3), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 4, PageSize: 100, IsForward: true, }, lastSeq) - assert.Equal(t, uint64(5), from) - assert.Equal(t, uint64(10), to) + assert.Equal(t, int64(5), from) + assert.Equal(t, int64(10), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 4, PageSize: 0, IsForward: false, }, lastSeq) - assert.Equal(t, uint64(1), from) - assert.Equal(t, uint64(3), to) + assert.Equal(t, int64(1), from) + assert.Equal(t, int64(3), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 4, PageSize: 0, IsForward: true, }, lastSeq) - assert.Equal(t, uint64(5), from) - assert.Equal(t, uint64(10), to) + assert.Equal(t, int64(5), from) + assert.Equal(t, int64(10), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 0, PageSize: 2, IsForward: false, }, lastSeq) - assert.Equal(t, uint64(9), from) - assert.Equal(t, uint64(10), to) + assert.Equal(t, int64(9), from) + assert.Equal(t, int64(10), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 0, PageSize: 2, IsForward: true, }, lastSeq) - assert.Equal(t, uint64(1), from) - assert.Equal(t, uint64(2), to) + assert.Equal(t, int64(1), from) + assert.Equal(t, int64(2), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 14, PageSize: 3, IsForward: false, }, lastSeq) - assert.Equal(t, uint64(8), from) - assert.Equal(t, uint64(10), to) + assert.Equal(t, int64(8), from) + assert.Equal(t, int64(10), to) - from, to = types.GetChangesRange(types.Paging[uint64]{ + from, to = types.GetChangesRange(types.Paging[int64]{ Offset: 14, PageSize: 3, IsForward: true, }, lastSeq) - assert.Equal(t, uint64(lastSeq+1), from) - assert.Equal(t, uint64(lastSeq+1), to) + assert.Equal(t, int64(lastSeq+1), from) + assert.Equal(t, int64(lastSeq+1), to) }) } diff --git a/cmd/yorkie/history.go b/cmd/yorkie/history.go index 9337d471a..39ad70be0 100644 --- a/cmd/yorkie/history.go +++ b/cmd/yorkie/history.go @@ -29,7 +29,7 @@ import ( ) var ( - previousSeq uint64 + previousSeq int64 pageSize int32 isForward bool ) @@ -90,7 +90,7 @@ func newHistoryCmd() *cobra.Command { func init() { cmd := newHistoryCmd() - cmd.Flags().Uint64Var( + cmd.Flags().Int64Var( &previousSeq, "previous-seq", 0, diff --git a/cmd/yorkie/server.go b/cmd/yorkie/server.go index a604d43f1..03a43a599 100644 --- a/cmd/yorkie/server.go +++ b/cmd/yorkie/server.go @@ -295,14 +295,14 @@ func init() { "Whether to use the default project. Even if public key is not provided from the client, "+ "the default project will be used for the request.", ) - cmd.Flags().Uint64Var( + cmd.Flags().Int64Var( &conf.Backend.SnapshotThreshold, "backend-snapshot-threshold", server.DefaultSnapshotThreshold, "Threshold that determines if changes should be sent with snapshot when the number "+ "of changes is greater than this value.", ) - cmd.Flags().Uint64Var( + cmd.Flags().Int64Var( &conf.Backend.SnapshotInterval, "backend-snapshot-interval", server.DefaultSnapshotInterval, diff --git a/pkg/document/change/change.go b/pkg/document/change/change.go index 4da6f740f..d156303bb 100644 --- a/pkg/document/change/change.go +++ b/pkg/document/change/change.go @@ -69,7 +69,7 @@ func (c *Change) Operations() []operations.Operation { } // ServerSeq returns the serverSeq of this change. -func (c *Change) ServerSeq() uint64 { +func (c *Change) ServerSeq() int64 { return c.id.ServerSeq() } @@ -79,7 +79,7 @@ func (c *Change) ClientSeq() uint32 { } // SetServerSeq sets the given serverSeq. -func (c *Change) SetServerSeq(serverSeq uint64) { +func (c *Change) SetServerSeq(serverSeq int64) { c.id = c.id.SetServerSeq(serverSeq) } diff --git a/pkg/document/change/checkpoint.go b/pkg/document/change/checkpoint.go index fc8abe551..6fe51d622 100644 --- a/pkg/document/change/checkpoint.go +++ b/pkg/document/change/checkpoint.go @@ -33,7 +33,7 @@ const ( var InitialCheckpoint = NewCheckpoint(InitialServerSeq, InitialClientSeq) // MaxCheckpoint is the maximum value of Checkpoint. -var MaxCheckpoint = NewCheckpoint(math.MaxUint64, math.MaxUint32) +var MaxCheckpoint = NewCheckpoint(math.MaxInt64, math.MaxUint32) // Checkpoint is used to determine the client received changes. // It is not meant to be used to determine the logical order of changes. @@ -41,7 +41,7 @@ type Checkpoint struct { // serverSeq is the sequence of the change on the server. We can find the // change with serverSeq and documentID in the server. If the change is not // stored on the server, serverSeq is 0. - ServerSeq uint64 + ServerSeq int64 // clientSeq is the sequence of the change within the client that made the // change. @@ -49,7 +49,7 @@ type Checkpoint struct { } // NewCheckpoint creates a new instance of Checkpoint. -func NewCheckpoint(serverSeq uint64, clientSeq uint32) Checkpoint { +func NewCheckpoint(serverSeq int64, clientSeq uint32) Checkpoint { return Checkpoint{ ServerSeq: serverSeq, ClientSeq: clientSeq, @@ -57,7 +57,7 @@ func NewCheckpoint(serverSeq uint64, clientSeq uint32) Checkpoint { } // NextServerSeq creates a new instance with next server sequence. -func (cp Checkpoint) NextServerSeq(serverSeq uint64) Checkpoint { +func (cp Checkpoint) NextServerSeq(serverSeq int64) Checkpoint { if cp.ServerSeq == serverSeq { return cp } diff --git a/pkg/document/change/id.go b/pkg/document/change/id.go index dc0ef64ea..cc64acf1f 100644 --- a/pkg/document/change/id.go +++ b/pkg/document/change/id.go @@ -40,10 +40,10 @@ type ID struct { // serverSeq is the sequence of the change on the server. We can find the // change with serverSeq and documentID in the server. If the change is not // stored on the server, serverSeq is 0. - serverSeq uint64 + serverSeq int64 // lamport is lamport timestamp. - lamport uint64 + lamport int64 // actorID is actorID of this ID. If the actor is not set, it has initial // value. @@ -53,8 +53,8 @@ type ID struct { // NewID creates a new instance of ID. func NewID( clientSeq uint32, - serverSeq uint64, - lamport uint64, + serverSeq int64, + lamport int64, actorID *time.ActorID, ) ID { return ID{ @@ -85,7 +85,7 @@ func (id ID) NewTimeTicket(delimiter uint32) *time.Ticket { // SyncLamport syncs lamport timestamp with the given ID. // - receiving: https://en.wikipedia.org/wiki/Lamport_timestamps#Algorithm -func (id ID) SyncLamport(otherLamport uint64) ID { +func (id ID) SyncLamport(otherLamport int64) ID { if id.lamport < otherLamport { return NewID(id.clientSeq, InitialServerSeq, otherLamport, id.actorID) } @@ -99,7 +99,7 @@ func (id ID) SetActor(actor *time.ActorID) ID { } // SetServerSeq sets server sequence of this ID. -func (id ID) SetServerSeq(serverSeq uint64) ID { +func (id ID) SetServerSeq(serverSeq int64) ID { return NewID(id.clientSeq, serverSeq, id.lamport, id.actorID) } @@ -109,12 +109,12 @@ func (id ID) ClientSeq() uint32 { } // ServerSeq returns the server sequence of this ID. -func (id ID) ServerSeq() uint64 { +func (id ID) ServerSeq() int64 { return id.serverSeq } // Lamport returns the lamport clock of this ID. -func (id ID) Lamport() uint64 { +func (id ID) Lamport() int64 { return id.lamport } diff --git a/pkg/document/internal_document.go b/pkg/document/internal_document.go index 07bef0e1b..d57ce9230 100644 --- a/pkg/document/internal_document.go +++ b/pkg/document/internal_document.go @@ -62,8 +62,8 @@ func NewInternalDocument(k key.Key) *InternalDocument { // NewInternalDocumentFromSnapshot creates a new instance of InternalDocument with the snapshot. func NewInternalDocumentFromSnapshot( k key.Key, - serverSeq uint64, - lamport uint64, + serverSeq int64, + lamport int64, snapshot []byte, ) (*InternalDocument, error) { obj, err := converter.BytesToObject(snapshot) @@ -160,7 +160,7 @@ func (d *InternalDocument) SetActor(actor *time.ActorID) { } // Lamport returns the Lamport clock of this document. -func (d *InternalDocument) Lamport() uint64 { +func (d *InternalDocument) Lamport() int64 { return d.changeID.Lamport() } @@ -189,7 +189,7 @@ func (d *InternalDocument) RootObject() *json.Object { return d.root.Object() } -func (d *InternalDocument) applySnapshot(snapshot []byte, serverSeq uint64) error { +func (d *InternalDocument) applySnapshot(snapshot []byte, serverSeq int64) error { rootObj, err := converter.BytesToObject(snapshot) if err != nil { return err diff --git a/pkg/document/time/ticket.go b/pkg/document/time/ticket.go index e4ce8e4c8..b6938b2bd 100644 --- a/pkg/document/time/ticket.go +++ b/pkg/document/time/ticket.go @@ -24,7 +24,7 @@ import ( const ( // MaxLamport is the maximum value stored in lamport. - MaxLamport = math.MaxUint64 + MaxLamport = math.MaxInt64 // MaxDelimiter is the maximum value stored in delimiter. MaxDelimiter = math.MaxUint32 @@ -49,7 +49,7 @@ var ( // Ticket is a timestamp of the logical clock. Ticket is immutable. // It is created by change.ID. type Ticket struct { - lamport uint64 + lamport int64 delimiter uint32 actorID *ActorID @@ -59,7 +59,7 @@ type Ticket struct { // NewTicket creates an instance of Ticket. func NewTicket( - lamport uint64, + lamport int64, delimiter uint32, actorID *ActorID, ) *Ticket { @@ -81,9 +81,9 @@ func (t *Ticket) AnnotatedString() string { // Key returns the key string for this Ticket. func (t *Ticket) Key() string { if t.cachedKey == "" { - t.cachedKey = strconv.FormatUint(t.lamport, 10) + + t.cachedKey = strconv.FormatInt(t.lamport, 10) + ":" + - strconv.FormatUint(uint64(t.delimiter), 10) + + strconv.FormatInt(int64(t.delimiter), 10) + ":" + t.actorID.String() @@ -93,7 +93,7 @@ func (t *Ticket) Key() string { } // Lamport returns the lamport value. -func (t *Ticket) Lamport() uint64 { +func (t *Ticket) Lamport() int64 { return t.lamport } diff --git a/pkg/document/time/ticket_test.go b/pkg/document/time/ticket_test.go index 9c7c7c9f0..00f0e8c8b 100644 --- a/pkg/document/time/ticket_test.go +++ b/pkg/document/time/ticket_test.go @@ -25,7 +25,7 @@ func TestTicket(t *testing.T) { t.Run("constructor and getter method test", func(t *testing.T) { actorID, _ := time.ActorIDFromHex("0123456789abcdef01234567") ticket := time.NewTicket(0, 1, actorID) - assert.Equal(t, uint64(0), ticket.Lamport()) + assert.Equal(t, int64(0), ticket.Lamport()) assert.Equal(t, uint32(1), ticket.Delimiter()) assert.Equal(t, actorID, ticket.ActorID()) diff --git a/server/admin/server.go b/server/admin/server.go index a4dc03846..dfa1e0adc 100644 --- a/server/admin/server.go +++ b/server/admin/server.go @@ -431,7 +431,7 @@ func (s *Server) ListChanges( } lastSeq := docInfo.ServerSeq - from, to := types.GetChangesRange(types.Paging[uint64]{ + from, to := types.GetChangesRange(types.Paging[int64]{ Offset: req.PreviousSeq, PageSize: int(req.PageSize), IsForward: req.IsForward, diff --git a/server/backend/config.go b/server/backend/config.go index 275a8c13b..5bf37b6aa 100644 --- a/server/backend/config.go +++ b/server/backend/config.go @@ -30,10 +30,10 @@ type Config struct { // SnapshotThreshold is the threshold that determines if changes should be // sent with snapshot when the number of changes is greater than this value. - SnapshotThreshold uint64 `yaml:"SnapshotThreshold"` + SnapshotThreshold int64 `yaml:"SnapshotThreshold"` // SnapshotInterval is the interval of changes to create a snapshot. - SnapshotInterval uint64 `yaml:"SnapshotInterval"` + SnapshotInterval int64 `yaml:"SnapshotInterval"` // AuthWebhookMaxRetries is the max count that retries the authorization webhook. AuthWebhookMaxRetries uint64 `yaml:"AuthWebhookMaxRetries"` diff --git a/server/backend/database/change_info.go b/server/backend/database/change_info.go index a3e990242..1138286bb 100644 --- a/server/backend/database/change_info.go +++ b/server/backend/database/change_info.go @@ -34,9 +34,9 @@ var ErrEncodeOperationFailed = errors.New("encode operations failed") type ChangeInfo struct { ID types.ID `bson:"_id"` DocID types.ID `bson:"doc_id"` - ServerSeq uint64 `bson:"server_seq"` + ServerSeq int64 `bson:"server_seq"` ClientSeq uint32 `bson:"client_seq"` - Lamport uint64 `bson:"lamport"` + Lamport int64 `bson:"lamport"` ActorID types.ID `bson:"actor_id"` Message string `bson:"message"` Operations [][]byte `bson:"operations"` diff --git a/server/backend/database/client_info.go b/server/backend/database/client_info.go index b8049d4d7..793660f73 100644 --- a/server/backend/database/client_info.go +++ b/server/backend/database/client_info.go @@ -47,7 +47,7 @@ const ( // attached to the client. type ClientDocInfo struct { Status string `bson:"status"` - ServerSeq uint64 `bson:"server_seq"` + ServerSeq int64 `bson:"server_seq"` ClientSeq uint32 `bson:"client_seq"` } diff --git a/server/backend/database/database.go b/server/backend/database/database.go index 0881d5fcd..3e80b0767 100644 --- a/server/backend/database/database.go +++ b/server/backend/database/database.go @@ -144,7 +144,7 @@ type Database interface { ctx context.Context, projectID types.ID, docInfo *DocInfo, - initialServerSeq uint64, + initialServerSeq int64, changes []*change.Change, ) error @@ -152,23 +152,23 @@ type Database interface { FindChangesBetweenServerSeqs( ctx context.Context, docID types.ID, - from uint64, - to uint64, + from int64, + to int64, ) ([]*change.Change, error) // FindChangeInfosBetweenServerSeqs returns the changeInfos between two server sequences. FindChangeInfosBetweenServerSeqs( ctx context.Context, docID types.ID, - from uint64, - to uint64, + from int64, + to int64, ) ([]*ChangeInfo, error) // CreateSnapshotInfo stores the snapshot of the given document. CreateSnapshotInfo(ctx context.Context, docID types.ID, doc *document.InternalDocument) error // FindClosestSnapshotInfo finds the closest snapshot info in a given serverSeq. - FindClosestSnapshotInfo(ctx context.Context, docID types.ID, serverSeq uint64) (*SnapshotInfo, error) + FindClosestSnapshotInfo(ctx context.Context, docID types.ID, serverSeq int64) (*SnapshotInfo, error) // UpdateAndFindMinSyncedTicket updates the given serverSeq of the given client // and returns the min synced ticket. @@ -176,7 +176,7 @@ type Database interface { ctx context.Context, clientInfo *ClientInfo, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*time.Ticket, error) // UpdateSyncedSeq updates the syncedSeq of the given client. @@ -184,7 +184,7 @@ type Database interface { ctx context.Context, clientInfo *ClientInfo, docID types.ID, - serverSeq uint64, + serverSeq int64, ) error // FindDocInfosByPaging returns the documentInfos of the given paging. diff --git a/server/backend/database/doc_info.go b/server/backend/database/doc_info.go index 6a23a8592..206d9346c 100644 --- a/server/backend/database/doc_info.go +++ b/server/backend/database/doc_info.go @@ -35,7 +35,7 @@ type DocInfo struct { Key key.Key `bson:"key"` // ServerSeq is the sequence number of the last change of the document on the server. - ServerSeq uint64 `bson:"server_seq"` + ServerSeq int64 `bson:"server_seq"` // Owner is the owner(ID of the client) of the document. Owner types.ID `bson:"owner"` @@ -51,7 +51,7 @@ type DocInfo struct { } // IncreaseServerSeq increases server sequence of the document. -func (info *DocInfo) IncreaseServerSeq() uint64 { +func (info *DocInfo) IncreaseServerSeq() int64 { info.ServerSeq++ return info.ServerSeq } diff --git a/server/backend/database/memory/database.go b/server/backend/database/memory/database.go index 747e30771..a89dd1e2b 100644 --- a/server/backend/database/memory/database.go +++ b/server/backend/database/memory/database.go @@ -610,7 +610,7 @@ func (d *DB) CreateChangeInfos( ctx context.Context, projectID types.ID, docInfo *database.DocInfo, - initialServerSeq uint64, + initialServerSeq int64, changes []*change.Change, ) error { txn := d.db.Txn(true) @@ -662,8 +662,8 @@ func (d *DB) CreateChangeInfos( func (d *DB) FindChangesBetweenServerSeqs( ctx context.Context, docID types.ID, - from uint64, - to uint64, + from int64, + to int64, ) ([]*change.Change, error) { infos, err := d.FindChangeInfosBetweenServerSeqs(ctx, docID, from, to) if err != nil { @@ -686,8 +686,8 @@ func (d *DB) FindChangesBetweenServerSeqs( func (d *DB) FindChangeInfosBetweenServerSeqs( ctx context.Context, docID types.ID, - from uint64, - to uint64, + from int64, + to int64, ) ([]*database.ChangeInfo, error) { txn := d.db.Txn(false) defer txn.Abort() @@ -746,7 +746,7 @@ func (d *DB) CreateSnapshotInfo( func (d *DB) FindClosestSnapshotInfo( ctx context.Context, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*database.SnapshotInfo, error) { txn := d.db.Txn(false) defer txn.Abort() @@ -783,7 +783,7 @@ func (d *DB) UpdateAndFindMinSyncedTicket( ctx context.Context, clientInfo *database.ClientInfo, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*time.Ticket, error) { if err := d.UpdateSyncedSeq(ctx, clientInfo, docID, serverSeq); err != nil { return nil, err @@ -796,7 +796,7 @@ func (d *DB) UpdateAndFindMinSyncedTicket( tblSyncedSeqs, "doc_id_lamport_actor_id", docID.String(), - uint64(0), + int64(0), time.InitialActorID.String(), ) if err != nil { @@ -832,7 +832,7 @@ func (d *DB) UpdateSyncedSeq( ctx context.Context, clientInfo *database.ClientInfo, docID types.ID, - serverSeq uint64, + serverSeq int64, ) error { txn := d.db.Txn(true) defer txn.Abort() @@ -986,7 +986,7 @@ func (d *DB) FindDocInfosByQuery( func (d *DB) findTicketByServerSeq( txn *memdb.Txn, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*time.Ticket, error) { if serverSeq == change.InitialServerSeq { return time.InitialTicket, nil diff --git a/server/backend/database/memory/database_test.go b/server/backend/database/memory/database_test.go index 633a3e864..648b3f17f 100644 --- a/server/backend/database/memory/database_test.go +++ b/server/backend/database/memory/database_test.go @@ -192,7 +192,7 @@ func TestDB(t *testing.T) { } pack := doc.CreateChangePack() for idx, c := range pack.Changes { - c.SetServerSeq(uint64(idx)) + c.SetServerSeq(int64(idx)) } // Store changes @@ -230,26 +230,26 @@ func TestDB(t *testing.T) { assert.NoError(t, db.CreateSnapshotInfo(ctx, docInfo.ID, doc.InternalDocument())) snapshot, err := db.FindClosestSnapshotInfo(ctx, docInfo.ID, change.MaxCheckpoint.ServerSeq) assert.NoError(t, err) - assert.Equal(t, uint64(0), snapshot.ServerSeq) + assert.Equal(t, int64(0), snapshot.ServerSeq) pack := change.NewPack(doc.Key(), doc.Checkpoint().NextServerSeq(1), nil, nil) assert.NoError(t, doc.ApplyChangePack(pack)) assert.NoError(t, db.CreateSnapshotInfo(ctx, docInfo.ID, doc.InternalDocument())) snapshot, err = db.FindClosestSnapshotInfo(ctx, docInfo.ID, change.MaxCheckpoint.ServerSeq) assert.NoError(t, err) - assert.Equal(t, uint64(1), snapshot.ServerSeq) + assert.Equal(t, int64(1), snapshot.ServerSeq) pack = change.NewPack(doc.Key(), doc.Checkpoint().NextServerSeq(2), nil, nil) assert.NoError(t, doc.ApplyChangePack(pack)) assert.NoError(t, db.CreateSnapshotInfo(ctx, docInfo.ID, doc.InternalDocument())) snapshot, err = db.FindClosestSnapshotInfo(ctx, docInfo.ID, change.MaxCheckpoint.ServerSeq) assert.NoError(t, err) - assert.Equal(t, uint64(2), snapshot.ServerSeq) + assert.Equal(t, int64(2), snapshot.ServerSeq) assert.NoError(t, db.CreateSnapshotInfo(ctx, docInfo.ID, doc.InternalDocument())) snapshot, err = db.FindClosestSnapshotInfo(ctx, docInfo.ID, 1) assert.NoError(t, err) - assert.Equal(t, uint64(1), snapshot.ServerSeq) + assert.Equal(t, int64(1), snapshot.ServerSeq) }) t.Run("docInfo pagination test", func(t *testing.T) { diff --git a/server/backend/database/memory/indexes.go b/server/backend/database/memory/indexes.go index 26d764f5f..16f4d6c4d 100644 --- a/server/backend/database/memory/indexes.go +++ b/server/backend/database/memory/indexes.go @@ -143,7 +143,7 @@ var schema = &memdb.DBSchema{ Indexer: &memdb.CompoundIndex{ Indexes: []memdb.Indexer{ &memdb.StringFieldIndex{Field: "DocID"}, - &memdb.UintFieldIndex{Field: "ServerSeq"}, + &memdb.IntFieldIndex{Field: "ServerSeq"}, }, }, }, @@ -163,7 +163,7 @@ var schema = &memdb.DBSchema{ Indexer: &memdb.CompoundIndex{ Indexes: []memdb.Indexer{ &memdb.StringFieldIndex{Field: "DocID"}, - &memdb.UintFieldIndex{Field: "ServerSeq"}, + &memdb.IntFieldIndex{Field: "ServerSeq"}, }, }, }, @@ -192,7 +192,7 @@ var schema = &memdb.DBSchema{ Indexer: &memdb.CompoundIndex{ Indexes: []memdb.Indexer{ &memdb.StringFieldIndex{Field: "DocID"}, - &memdb.UintFieldIndex{Field: "Lamport"}, + &memdb.IntFieldIndex{Field: "Lamport"}, &memdb.StringFieldIndex{Field: "ActorID"}, }, }, diff --git a/server/backend/database/mongo/client.go b/server/backend/database/mongo/client.go index 848c89595..6d28464a0 100644 --- a/server/backend/database/mongo/client.go +++ b/server/backend/database/mongo/client.go @@ -699,7 +699,7 @@ func (c *Client) CreateChangeInfos( ctx context.Context, projectID types.ID, docInfo *database.DocInfo, - initialServerSeq uint64, + initialServerSeq int64, changes []*change.Change, ) error { encodedDocID, err := encodeID(docInfo.ID) @@ -761,8 +761,8 @@ func (c *Client) CreateChangeInfos( func (c *Client) FindChangesBetweenServerSeqs( ctx context.Context, docID types.ID, - from uint64, - to uint64, + from int64, + to int64, ) ([]*change.Change, error) { infos, err := c.FindChangeInfosBetweenServerSeqs(ctx, docID, from, to) if err != nil { @@ -785,8 +785,8 @@ func (c *Client) FindChangesBetweenServerSeqs( func (c *Client) FindChangeInfosBetweenServerSeqs( ctx context.Context, docID types.ID, - from uint64, - to uint64, + from int64, + to int64, ) ([]*database.ChangeInfo, error) { encodedDocID, err := encodeID(docID) if err != nil { @@ -847,7 +847,7 @@ func (c *Client) CreateSnapshotInfo( func (c *Client) FindClosestSnapshotInfo( ctx context.Context, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*database.SnapshotInfo, error) { encodedDocID, err := encodeID(docID) if err != nil { @@ -886,7 +886,7 @@ func (c *Client) UpdateAndFindMinSyncedTicket( ctx context.Context, clientInfo *database.ClientInfo, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*time.Ticket, error) { if err := c.UpdateSyncedSeq(ctx, clientInfo, docID, serverSeq); err != nil { return nil, err @@ -1027,7 +1027,7 @@ func (c *Client) UpdateSyncedSeq( ctx context.Context, clientInfo *database.ClientInfo, docID types.ID, - serverSeq uint64, + serverSeq int64, ) error { encodedDocID, err := encodeID(docID) if err != nil { @@ -1090,7 +1090,7 @@ func (c *Client) UpdateSyncedSeq( func (c *Client) findTicketByServerSeq( ctx context.Context, docID types.ID, - serverSeq uint64, + serverSeq int64, ) (*time.Ticket, error) { if serverSeq == change.InitialServerSeq { return time.InitialTicket, nil diff --git a/server/backend/database/snapshot_info.go b/server/backend/database/snapshot_info.go index a509ddb76..f7bd17870 100644 --- a/server/backend/database/snapshot_info.go +++ b/server/backend/database/snapshot_info.go @@ -31,10 +31,10 @@ type SnapshotInfo struct { DocID types.ID `bson:"doc_id"` // ServerSeq is the sequence number of the server which the snapshot belongs to. - ServerSeq uint64 `bson:"server_seq"` + ServerSeq int64 `bson:"server_seq"` // Lamport is the Lamport timestamp of the snapshot. - Lamport uint64 `bson:"lamport"` + Lamport int64 `bson:"lamport"` // Snapshot is the snapshot data. Snapshot []byte `bson:"snapshot"` diff --git a/server/backend/database/synced_seq_info.go b/server/backend/database/synced_seq_info.go index ab03f400f..608521a76 100644 --- a/server/backend/database/synced_seq_info.go +++ b/server/backend/database/synced_seq_info.go @@ -24,7 +24,7 @@ type SyncedSeqInfo struct { ID types.ID `bson:"_id"` DocID types.ID `bson:"doc_id"` ClientID types.ID `bson:"client_id"` - Lamport uint64 `bson:"lamport"` + Lamport int64 `bson:"lamport"` ActorID types.ID `bson:"actor_id"` - ServerSeq uint64 `bson:"server_seq"` + ServerSeq int64 `bson:"server_seq"` } diff --git a/server/config_test.go b/server/config_test.go index 9e83d7507..2d6bc353a 100644 --- a/server/config_test.go +++ b/server/config_test.go @@ -37,8 +37,8 @@ func TestNewConfigFromFile(t *testing.T) { assert.Equal(t, conf.RPC.CertFile, "") assert.Equal(t, conf.RPC.KeyFile, "") - assert.Equal(t, conf.Backend.SnapshotThreshold, uint64(server.DefaultSnapshotThreshold)) - assert.Equal(t, conf.Backend.SnapshotInterval, uint64(server.DefaultSnapshotInterval)) + assert.Equal(t, conf.Backend.SnapshotThreshold, int64(server.DefaultSnapshotThreshold)) + assert.Equal(t, conf.Backend.SnapshotInterval, int64(server.DefaultSnapshotInterval)) assert.Nil(t, conf.ETCD) }) @@ -61,8 +61,8 @@ func TestNewConfigFromFile(t *testing.T) { pingTimeout, err := time.ParseDuration(conf.Mongo.PingTimeout) assert.NoError(t, err) assert.Equal(t, pingTimeout, server.DefaultMongoPingTimeout) - assert.Equal(t, conf.Backend.SnapshotThreshold, uint64(server.DefaultSnapshotThreshold)) - assert.Equal(t, conf.Backend.SnapshotInterval, uint64(server.DefaultSnapshotInterval)) + assert.Equal(t, conf.Backend.SnapshotThreshold, int64(server.DefaultSnapshotThreshold)) + assert.Equal(t, conf.Backend.SnapshotInterval, int64(server.DefaultSnapshotInterval)) assert.Equal(t, conf.Backend.AuthWebhookMaxRetries, uint64(server.DefaultAuthWebhookMaxRetries)) authWebhookMaxWaitInterval, err := time.ParseDuration(conf.Backend.AuthWebhookMaxWaitInterval) diff --git a/server/documents/documents.go b/server/documents/documents.go index 96f178727..2c72ffb65 100644 --- a/server/documents/documents.go +++ b/server/documents/documents.go @@ -110,7 +110,7 @@ func GetDocumentByServerSeq( be *backend.Backend, project *types.Project, k key.Key, - serverSeq uint64, + serverSeq int64, ) (*document.InternalDocument, error) { docInfo, err := be.DB.FindDocInfoByKeyAndOwner( ctx, diff --git a/server/packs/history.go b/server/packs/history.go index 0d0cb2c94..20151c839 100644 --- a/server/packs/history.go +++ b/server/packs/history.go @@ -29,8 +29,8 @@ func FindChanges( ctx context.Context, be *backend.Backend, docInfo *database.DocInfo, - from uint64, - to uint64, + from int64, + to int64, ) ([]*change.Change, error) { changes, err := be.DB.FindChangesBetweenServerSeqs( ctx, diff --git a/server/packs/packs.go b/server/packs/packs.go index bae84b012..54442bf17 100644 --- a/server/packs/packs.go +++ b/server/packs/packs.go @@ -165,7 +165,7 @@ func BuildDocumentForServerSeq( ctx context.Context, be *backend.Backend, docInfo *database.DocInfo, - serverSeq uint64, + serverSeq int64, ) (*document.InternalDocument, error) { snapshotInfo, err := be.DB.FindClosestSnapshotInfo(ctx, docInfo.ID, serverSeq) if err != nil { diff --git a/server/packs/pushpull.go b/server/packs/pushpull.go index 59c4c2d87..9d98ecb51 100644 --- a/server/packs/pushpull.go +++ b/server/packs/pushpull.go @@ -40,7 +40,7 @@ func pushChanges( clientInfo *database.ClientInfo, docInfo *database.DocInfo, reqPack *change.Pack, - initialServerSeq uint64, + initialServerSeq int64, ) (change.Checkpoint, []*change.Change) { cp := clientInfo.Checkpoint(docInfo.ID) @@ -85,7 +85,7 @@ func pullPack( docInfo *database.DocInfo, reqPack *change.Pack, cpAfterPush change.Checkpoint, - initialServerSeq uint64, + initialServerSeq int64, ) (*ServerPack, error) { if initialServerSeq < reqPack.Checkpoint.ServerSeq { return nil, fmt.Errorf( @@ -124,7 +124,7 @@ func pullSnapshot( docInfo *database.DocInfo, reqPack *change.Pack, cpAfterPush change.Checkpoint, - initialServerSeq uint64, + initialServerSeq int64, ) (*ServerPack, error) { // Build document from DB if the size of changes for the response is greater than the snapshot threshold. doc, err := BuildDocumentForServerSeq(ctx, be, docInfo, initialServerSeq) @@ -169,7 +169,7 @@ func pullChangeInfos( docInfo *database.DocInfo, reqPack *change.Pack, cpAfterPush change.Checkpoint, - initialServerSeq uint64, + initialServerSeq int64, ) (change.Checkpoint, []*database.ChangeInfo, error) { pulledChanges, err := be.DB.FindChangeInfosBetweenServerSeqs( ctx, diff --git a/test/helper/helper.go b/test/helper/helper.go index 321336d53..296d35cad 100644 --- a/test/helper/helper.go +++ b/test/helper/helper.go @@ -54,7 +54,7 @@ var ( HousekeepingDeactivateThreshold = 1 * gotime.Minute HousekeepingCandidatesLimit = 10 - SnapshotThreshold = uint64(10) + SnapshotThreshold = int64(10) AuthWebhookMaxWaitInterval = 3 * gotime.Millisecond AuthWebhookSize = 100 AuthWebhookCacheAuthTTL = 10 * gotime.Second