github.com/mre-fog/trillianxx@v1.1.2-0.20180615153820-ae375a99d36a/trillian.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: trillian.proto 3 4 package trillian 5 6 import proto "github.com/golang/protobuf/proto" 7 import fmt "fmt" 8 import math "math" 9 import keyspb "github.com/google/trillian/crypto/keyspb" 10 import sigpb "github.com/google/trillian/crypto/sigpb" 11 import google_protobuf2 "github.com/golang/protobuf/ptypes/any" 12 import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" 13 import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" 14 15 // Reference imports to suppress errors if they are not otherwise used. 16 var _ = proto.Marshal 17 var _ = fmt.Errorf 18 var _ = math.Inf 19 20 // LogRootFormat specifies the fields that are covered by the 21 // SignedLogRoot signature, as well as their ordering and formats. 22 type LogRootFormat int32 23 24 const ( 25 LogRootFormat_LOG_ROOT_FORMAT_UNKNOWN LogRootFormat = 0 26 LogRootFormat_LOG_ROOT_FORMAT_V1 LogRootFormat = 1 27 ) 28 29 var LogRootFormat_name = map[int32]string{ 30 0: "LOG_ROOT_FORMAT_UNKNOWN", 31 1: "LOG_ROOT_FORMAT_V1", 32 } 33 var LogRootFormat_value = map[string]int32{ 34 "LOG_ROOT_FORMAT_UNKNOWN": 0, 35 "LOG_ROOT_FORMAT_V1": 1, 36 } 37 38 func (x LogRootFormat) String() string { 39 return proto.EnumName(LogRootFormat_name, int32(x)) 40 } 41 func (LogRootFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } 42 43 // MapRootFormat specifies the fields that are covered by the 44 // SignedMapRoot signature, as well as their ordering and formats. 45 type MapRootFormat int32 46 47 const ( 48 MapRootFormat_MAP_ROOT_FORMAT_UNKNOWN MapRootFormat = 0 49 MapRootFormat_MAP_ROOT_FORMAT_V1 MapRootFormat = 1 50 ) 51 52 var MapRootFormat_name = map[int32]string{ 53 0: "MAP_ROOT_FORMAT_UNKNOWN", 54 1: "MAP_ROOT_FORMAT_V1", 55 } 56 var MapRootFormat_value = map[string]int32{ 57 "MAP_ROOT_FORMAT_UNKNOWN": 0, 58 "MAP_ROOT_FORMAT_V1": 1, 59 } 60 61 func (x MapRootFormat) String() string { 62 return proto.EnumName(MapRootFormat_name, int32(x)) 63 } 64 func (MapRootFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } 65 66 // Defines the way empty / node / leaf hashes are constructed incorporating 67 // preimage protection, which can be application specific. 68 type HashStrategy int32 69 70 const ( 71 // Hash strategy cannot be determined. Included to enable detection of 72 // mismatched proto versions being used. Represents an invalid value. 73 HashStrategy_UNKNOWN_HASH_STRATEGY HashStrategy = 0 74 // Certificate Transparency strategy: leaf hash prefix = 0x00, node prefix = 75 // 0x01, empty hash is digest([]byte{}), as defined in the specification. 76 HashStrategy_RFC6962_SHA256 HashStrategy = 1 77 // Sparse Merkle Tree strategy: leaf hash prefix = 0x00, node prefix = 0x01, 78 // empty branch is recursively computed from empty leaf nodes. 79 // NOT secure in a multi tree environment. For testing only. 80 HashStrategy_TEST_MAP_HASHER HashStrategy = 2 81 // Append-only log strategy where leaf nodes are defined as the ObjectHash. 82 // All other properties are equal to RFC6962_SHA256. 83 HashStrategy_OBJECT_RFC6962_SHA256 HashStrategy = 3 84 // The CONIKS sparse tree hasher with SHA512_256 as the hash algorithm. 85 HashStrategy_CONIKS_SHA512_256 HashStrategy = 4 86 ) 87 88 var HashStrategy_name = map[int32]string{ 89 0: "UNKNOWN_HASH_STRATEGY", 90 1: "RFC6962_SHA256", 91 2: "TEST_MAP_HASHER", 92 3: "OBJECT_RFC6962_SHA256", 93 4: "CONIKS_SHA512_256", 94 } 95 var HashStrategy_value = map[string]int32{ 96 "UNKNOWN_HASH_STRATEGY": 0, 97 "RFC6962_SHA256": 1, 98 "TEST_MAP_HASHER": 2, 99 "OBJECT_RFC6962_SHA256": 3, 100 "CONIKS_SHA512_256": 4, 101 } 102 103 func (x HashStrategy) String() string { 104 return proto.EnumName(HashStrategy_name, int32(x)) 105 } 106 func (HashStrategy) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } 107 108 // State of the tree. 109 type TreeState int32 110 111 const ( 112 // Tree state cannot be determined. Included to enable detection of 113 // mismatched proto versions being used. Represents an invalid value. 114 TreeState_UNKNOWN_TREE_STATE TreeState = 0 115 // Active trees are able to respond to both read and write requests. 116 TreeState_ACTIVE TreeState = 1 117 // Frozen trees are only able to respond to read requests, writing to a frozen 118 // tree is forbidden. Trees should not be frozen when there are entries 119 // in the queue that have not yet been integrated. See the DRAINING 120 // state for this case. 121 TreeState_FROZEN TreeState = 2 122 // Deprecated: now tracked in Tree.deleted. 123 TreeState_DEPRECATED_SOFT_DELETED TreeState = 3 124 // Deprecated: now tracked in Tree.deleted. 125 TreeState_DEPRECATED_HARD_DELETED TreeState = 4 126 // A tree that is draining will continue to integrate queued entries. 127 // No new entries should be accepted. 128 TreeState_DRAINING TreeState = 5 129 ) 130 131 var TreeState_name = map[int32]string{ 132 0: "UNKNOWN_TREE_STATE", 133 1: "ACTIVE", 134 2: "FROZEN", 135 3: "DEPRECATED_SOFT_DELETED", 136 4: "DEPRECATED_HARD_DELETED", 137 5: "DRAINING", 138 } 139 var TreeState_value = map[string]int32{ 140 "UNKNOWN_TREE_STATE": 0, 141 "ACTIVE": 1, 142 "FROZEN": 2, 143 "DEPRECATED_SOFT_DELETED": 3, 144 "DEPRECATED_HARD_DELETED": 4, 145 "DRAINING": 5, 146 } 147 148 func (x TreeState) String() string { 149 return proto.EnumName(TreeState_name, int32(x)) 150 } 151 func (TreeState) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{3} } 152 153 // Type of the tree. 154 type TreeType int32 155 156 const ( 157 // Tree type cannot be determined. Included to enable detection of mismatched 158 // proto versions being used. Represents an invalid value. 159 TreeType_UNKNOWN_TREE_TYPE TreeType = 0 160 // Tree represents a verifiable log. 161 TreeType_LOG TreeType = 1 162 // Tree represents a verifiable map. 163 TreeType_MAP TreeType = 2 164 // Tree represents a verifiable pre-ordered log, i.e., a log whose entries are 165 // placed according to sequence numbers assigned outside of Trillian. 166 TreeType_PREORDERED_LOG TreeType = 3 167 ) 168 169 var TreeType_name = map[int32]string{ 170 0: "UNKNOWN_TREE_TYPE", 171 1: "LOG", 172 2: "MAP", 173 3: "PREORDERED_LOG", 174 } 175 var TreeType_value = map[string]int32{ 176 "UNKNOWN_TREE_TYPE": 0, 177 "LOG": 1, 178 "MAP": 2, 179 "PREORDERED_LOG": 3, 180 } 181 182 func (x TreeType) String() string { 183 return proto.EnumName(TreeType_name, int32(x)) 184 } 185 func (TreeType) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{4} } 186 187 // Represents a tree, which may be either a verifiable log or map. 188 // Readonly attributes are assigned at tree creation, after which they may not 189 // be modified. 190 // 191 // Note: Many APIs within the rest of the code require these objects to 192 // be provided. For safety they should be obtained via Admin API calls and 193 // not created dynamically. 194 type Tree struct { 195 // ID of the tree. 196 // Readonly. 197 TreeId int64 `protobuf:"varint,1,opt,name=tree_id,json=treeId" json:"tree_id,omitempty"` 198 // State of the tree. 199 // Trees are ACTIVE after creation. At any point the tree may transition 200 // between ACTIVE, DRAINING and FROZEN states. 201 TreeState TreeState `protobuf:"varint,2,opt,name=tree_state,json=treeState,enum=trillian.TreeState" json:"tree_state,omitempty"` 202 // Type of the tree. 203 // Readonly after Tree creation. Exception: Can be switched from 204 // PREORDERED_LOG to LOG if the Tree is and remains in the FROZEN state. 205 TreeType TreeType `protobuf:"varint,3,opt,name=tree_type,json=treeType,enum=trillian.TreeType" json:"tree_type,omitempty"` 206 // Hash strategy to be used by the tree. 207 // Readonly. 208 HashStrategy HashStrategy `protobuf:"varint,4,opt,name=hash_strategy,json=hashStrategy,enum=trillian.HashStrategy" json:"hash_strategy,omitempty"` 209 // Hash algorithm to be used by the tree. 210 // Readonly. 211 HashAlgorithm sigpb.DigitallySigned_HashAlgorithm `protobuf:"varint,5,opt,name=hash_algorithm,json=hashAlgorithm,enum=sigpb.DigitallySigned_HashAlgorithm" json:"hash_algorithm,omitempty"` 212 // Signature algorithm to be used by the tree. 213 // Readonly. 214 SignatureAlgorithm sigpb.DigitallySigned_SignatureAlgorithm `protobuf:"varint,6,opt,name=signature_algorithm,json=signatureAlgorithm,enum=sigpb.DigitallySigned_SignatureAlgorithm" json:"signature_algorithm,omitempty"` 215 // Display name of the tree. 216 // Optional. 217 DisplayName string `protobuf:"bytes,8,opt,name=display_name,json=displayName" json:"display_name,omitempty"` 218 // Description of the tree, 219 // Optional. 220 Description string `protobuf:"bytes,9,opt,name=description" json:"description,omitempty"` 221 // Identifies the private key used for signing tree heads and entry 222 // timestamps. 223 // This can be any type of message to accommodate different key management 224 // systems, e.g. PEM files, HSMs, etc. 225 // Private keys are write-only: they're never returned by RPCs. 226 // The private_key message can be changed after a tree is created, but the 227 // underlying key must remain the same - this is to enable migrating a key 228 // from one provider to another. 229 PrivateKey *google_protobuf2.Any `protobuf:"bytes,12,opt,name=private_key,json=privateKey" json:"private_key,omitempty"` 230 // Storage-specific settings. 231 // Varies according to the storage implementation backing Trillian. 232 StorageSettings *google_protobuf2.Any `protobuf:"bytes,13,opt,name=storage_settings,json=storageSettings" json:"storage_settings,omitempty"` 233 // The public key used for verifying tree heads and entry timestamps. 234 // Readonly. 235 PublicKey *keyspb.PublicKey `protobuf:"bytes,14,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` 236 // Interval after which a new signed root is produced even if there have been 237 // no submission. If zero, this behavior is disabled. 238 MaxRootDuration *google_protobuf3.Duration `protobuf:"bytes,15,opt,name=max_root_duration,json=maxRootDuration" json:"max_root_duration,omitempty"` 239 // Time of tree creation. 240 // Readonly. 241 CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,16,opt,name=create_time,json=createTime" json:"create_time,omitempty"` 242 // Time of last tree update. 243 // Readonly (automatically assigned on updates). 244 UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,17,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` 245 // If true, the tree has been deleted. 246 // Deleted trees may be undeleted during a certain time window, after which 247 // they're permanently deleted (and unrecoverable). 248 // Readonly. 249 Deleted bool `protobuf:"varint,19,opt,name=deleted" json:"deleted,omitempty"` 250 // Time of tree deletion, if any. 251 // Readonly. 252 DeleteTime *google_protobuf1.Timestamp `protobuf:"bytes,20,opt,name=delete_time,json=deleteTime" json:"delete_time,omitempty"` 253 } 254 255 func (m *Tree) Reset() { *m = Tree{} } 256 func (m *Tree) String() string { return proto.CompactTextString(m) } 257 func (*Tree) ProtoMessage() {} 258 func (*Tree) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } 259 260 func (m *Tree) GetTreeId() int64 { 261 if m != nil { 262 return m.TreeId 263 } 264 return 0 265 } 266 267 func (m *Tree) GetTreeState() TreeState { 268 if m != nil { 269 return m.TreeState 270 } 271 return TreeState_UNKNOWN_TREE_STATE 272 } 273 274 func (m *Tree) GetTreeType() TreeType { 275 if m != nil { 276 return m.TreeType 277 } 278 return TreeType_UNKNOWN_TREE_TYPE 279 } 280 281 func (m *Tree) GetHashStrategy() HashStrategy { 282 if m != nil { 283 return m.HashStrategy 284 } 285 return HashStrategy_UNKNOWN_HASH_STRATEGY 286 } 287 288 func (m *Tree) GetHashAlgorithm() sigpb.DigitallySigned_HashAlgorithm { 289 if m != nil { 290 return m.HashAlgorithm 291 } 292 return sigpb.DigitallySigned_NONE 293 } 294 295 func (m *Tree) GetSignatureAlgorithm() sigpb.DigitallySigned_SignatureAlgorithm { 296 if m != nil { 297 return m.SignatureAlgorithm 298 } 299 return sigpb.DigitallySigned_ANONYMOUS 300 } 301 302 func (m *Tree) GetDisplayName() string { 303 if m != nil { 304 return m.DisplayName 305 } 306 return "" 307 } 308 309 func (m *Tree) GetDescription() string { 310 if m != nil { 311 return m.Description 312 } 313 return "" 314 } 315 316 func (m *Tree) GetPrivateKey() *google_protobuf2.Any { 317 if m != nil { 318 return m.PrivateKey 319 } 320 return nil 321 } 322 323 func (m *Tree) GetStorageSettings() *google_protobuf2.Any { 324 if m != nil { 325 return m.StorageSettings 326 } 327 return nil 328 } 329 330 func (m *Tree) GetPublicKey() *keyspb.PublicKey { 331 if m != nil { 332 return m.PublicKey 333 } 334 return nil 335 } 336 337 func (m *Tree) GetMaxRootDuration() *google_protobuf3.Duration { 338 if m != nil { 339 return m.MaxRootDuration 340 } 341 return nil 342 } 343 344 func (m *Tree) GetCreateTime() *google_protobuf1.Timestamp { 345 if m != nil { 346 return m.CreateTime 347 } 348 return nil 349 } 350 351 func (m *Tree) GetUpdateTime() *google_protobuf1.Timestamp { 352 if m != nil { 353 return m.UpdateTime 354 } 355 return nil 356 } 357 358 func (m *Tree) GetDeleted() bool { 359 if m != nil { 360 return m.Deleted 361 } 362 return false 363 } 364 365 func (m *Tree) GetDeleteTime() *google_protobuf1.Timestamp { 366 if m != nil { 367 return m.DeleteTime 368 } 369 return nil 370 } 371 372 type SignedEntryTimestamp struct { 373 TimestampNanos int64 `protobuf:"varint,1,opt,name=timestamp_nanos,json=timestampNanos" json:"timestamp_nanos,omitempty"` 374 LogId int64 `protobuf:"varint,2,opt,name=log_id,json=logId" json:"log_id,omitempty"` 375 Signature *sigpb.DigitallySigned `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"` 376 } 377 378 func (m *SignedEntryTimestamp) Reset() { *m = SignedEntryTimestamp{} } 379 func (m *SignedEntryTimestamp) String() string { return proto.CompactTextString(m) } 380 func (*SignedEntryTimestamp) ProtoMessage() {} 381 func (*SignedEntryTimestamp) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } 382 383 func (m *SignedEntryTimestamp) GetTimestampNanos() int64 { 384 if m != nil { 385 return m.TimestampNanos 386 } 387 return 0 388 } 389 390 func (m *SignedEntryTimestamp) GetLogId() int64 { 391 if m != nil { 392 return m.LogId 393 } 394 return 0 395 } 396 397 func (m *SignedEntryTimestamp) GetSignature() *sigpb.DigitallySigned { 398 if m != nil { 399 return m.Signature 400 } 401 return nil 402 } 403 404 // SignedLogRoot represents a commitment by a Log to a particular tree. 405 type SignedLogRoot struct { 406 // Deprecated: TimestampNanos moved to LogRoot. 407 TimestampNanos int64 `protobuf:"varint,1,opt,name=timestamp_nanos,json=timestampNanos" json:"timestamp_nanos,omitempty"` 408 // Deprecated: RootHash moved to LogRoot. 409 RootHash []byte `protobuf:"bytes,2,opt,name=root_hash,json=rootHash,proto3" json:"root_hash,omitempty"` 410 // Deprecated: TreeSize moved to LogRoot. 411 TreeSize int64 `protobuf:"varint,3,opt,name=tree_size,json=treeSize" json:"tree_size,omitempty"` 412 // Deprecated: TreeRevision moved to LogRoot. 413 TreeRevision int64 `protobuf:"varint,6,opt,name=tree_revision,json=treeRevision" json:"tree_revision,omitempty"` 414 // key_hint is a hint to identify the public key for signature verification. 415 // key_hint is not authenticated and may be incorrect or missing, in which 416 // case all known public keys may be used to verify the signature. 417 // When directly communicating with a Trillian gRPC server, the key_hint will 418 // typically contain the LogID encoded as a big-endian 64-bit integer; 419 // however, in other contexts the key_hint is likely to have different 420 // contents (e.g. it could be a GUID, a URL + TreeID, or it could be 421 // derived from the public key itself). 422 KeyHint []byte `protobuf:"bytes,7,opt,name=key_hint,json=keyHint,proto3" json:"key_hint,omitempty"` 423 // log_root holds the TLS-serialization of the following structure (described 424 // in RFC5246 notation): Clients should validate log_root_signature with 425 // VerifySignedLogRoot before deserializing log_root. 426 // enum { v1(1), (65535)} Version; 427 // struct { 428 // uint64 tree_size; 429 // opaque root_hash<0..128>; 430 // uint64 timestamp_nanos; 431 // uint64 revision; 432 // opaque metadata<0..65535>; 433 // } LogRootV1; 434 // struct { 435 // Version version; 436 // select(version) { 437 // case v1: LogRootV1; 438 // } 439 // } LogRoot; 440 LogRoot []byte `protobuf:"bytes,8,opt,name=log_root,json=logRoot,proto3" json:"log_root,omitempty"` 441 // log_root_signature is the raw signature over log_root. 442 LogRootSignature []byte `protobuf:"bytes,9,opt,name=log_root_signature,json=logRootSignature,proto3" json:"log_root_signature,omitempty"` 443 } 444 445 func (m *SignedLogRoot) Reset() { *m = SignedLogRoot{} } 446 func (m *SignedLogRoot) String() string { return proto.CompactTextString(m) } 447 func (*SignedLogRoot) ProtoMessage() {} 448 func (*SignedLogRoot) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } 449 450 func (m *SignedLogRoot) GetTimestampNanos() int64 { 451 if m != nil { 452 return m.TimestampNanos 453 } 454 return 0 455 } 456 457 func (m *SignedLogRoot) GetRootHash() []byte { 458 if m != nil { 459 return m.RootHash 460 } 461 return nil 462 } 463 464 func (m *SignedLogRoot) GetTreeSize() int64 { 465 if m != nil { 466 return m.TreeSize 467 } 468 return 0 469 } 470 471 func (m *SignedLogRoot) GetTreeRevision() int64 { 472 if m != nil { 473 return m.TreeRevision 474 } 475 return 0 476 } 477 478 func (m *SignedLogRoot) GetKeyHint() []byte { 479 if m != nil { 480 return m.KeyHint 481 } 482 return nil 483 } 484 485 func (m *SignedLogRoot) GetLogRoot() []byte { 486 if m != nil { 487 return m.LogRoot 488 } 489 return nil 490 } 491 492 func (m *SignedLogRoot) GetLogRootSignature() []byte { 493 if m != nil { 494 return m.LogRootSignature 495 } 496 return nil 497 } 498 499 // SignedMapRoot represents a commitment by a Map to a particular tree. 500 type SignedMapRoot struct { 501 // map_root holds the TLS-serialization of the following structure (described 502 // in RFC5246 notation): Clients should validate signature with 503 // VerifySignedMapRoot before deserializing map_root. 504 // enum { v1(1), (65535)} Version; 505 // struct { 506 // opaque root_hash<0..128>; 507 // uint64 timestamp_nanos; 508 // uint64 revision; 509 // opaque metadata<0..65535>; 510 // } MapRootV1; 511 // struct { 512 // Version version; 513 // select(version) { 514 // case v1: MapRootV1; 515 // } 516 // } MapRoot; 517 MapRoot []byte `protobuf:"bytes,9,opt,name=map_root,json=mapRoot,proto3" json:"map_root,omitempty"` 518 // Signature is the raw signature over MapRoot. 519 Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` 520 } 521 522 func (m *SignedMapRoot) Reset() { *m = SignedMapRoot{} } 523 func (m *SignedMapRoot) String() string { return proto.CompactTextString(m) } 524 func (*SignedMapRoot) ProtoMessage() {} 525 func (*SignedMapRoot) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{3} } 526 527 func (m *SignedMapRoot) GetMapRoot() []byte { 528 if m != nil { 529 return m.MapRoot 530 } 531 return nil 532 } 533 534 func (m *SignedMapRoot) GetSignature() []byte { 535 if m != nil { 536 return m.Signature 537 } 538 return nil 539 } 540 541 func init() { 542 proto.RegisterType((*Tree)(nil), "trillian.Tree") 543 proto.RegisterType((*SignedEntryTimestamp)(nil), "trillian.SignedEntryTimestamp") 544 proto.RegisterType((*SignedLogRoot)(nil), "trillian.SignedLogRoot") 545 proto.RegisterType((*SignedMapRoot)(nil), "trillian.SignedMapRoot") 546 proto.RegisterEnum("trillian.LogRootFormat", LogRootFormat_name, LogRootFormat_value) 547 proto.RegisterEnum("trillian.MapRootFormat", MapRootFormat_name, MapRootFormat_value) 548 proto.RegisterEnum("trillian.HashStrategy", HashStrategy_name, HashStrategy_value) 549 proto.RegisterEnum("trillian.TreeState", TreeState_name, TreeState_value) 550 proto.RegisterEnum("trillian.TreeType", TreeType_name, TreeType_value) 551 } 552 553 func init() { proto.RegisterFile("trillian.proto", fileDescriptor3) } 554 555 var fileDescriptor3 = []byte{ 556 // 1097 bytes of a gzipped FileDescriptorProto 557 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xdb, 0x6f, 0xdb, 0x36, 558 0x17, 0xaf, 0x6c, 0xc5, 0x96, 0xe9, 0x4b, 0x18, 0xa6, 0x17, 0xd9, 0xfd, 0xf0, 0xd5, 0xcb, 0x06, 559 0x2c, 0x2b, 0x06, 0x67, 0xf5, 0xd6, 0x02, 0x43, 0x1f, 0x06, 0x35, 0x56, 0x62, 0x3b, 0x89, 0x6d, 560 0x50, 0x5a, 0x87, 0xe6, 0x85, 0x90, 0x6d, 0x4e, 0x16, 0xa2, 0x1b, 0x24, 0xba, 0xa8, 0xfa, 0x3c, 561 0x60, 0x18, 0xb6, 0x3f, 0x7a, 0x20, 0x45, 0xd9, 0x89, 0xb3, 0xae, 0x7b, 0x49, 0x78, 0xce, 0xef, 562 0xc2, 0x23, 0xf2, 0x1c, 0xc9, 0xa0, 0xc5, 0x12, 0xcf, 0xf7, 0x3d, 0x27, 0xec, 0xc5, 0x49, 0xc4, 563 0x22, 0xa4, 0x15, 0x71, 0xa7, 0xb3, 0x48, 0xb2, 0x98, 0x45, 0x27, 0x37, 0x34, 0x4b, 0xe3, 0xb9, 564 0xfc, 0x97, 0xb3, 0x3a, 0xba, 0xc4, 0x52, 0xcf, 0x8d, 0xe7, 0xf9, 0x5f, 0x89, 0xb4, 0xdd, 0x28, 565 0x72, 0x7d, 0x7a, 0x22, 0xa2, 0xf9, 0xfa, 0xd7, 0x13, 0x27, 0xcc, 0x24, 0xf4, 0xff, 0x5d, 0x68, 566 0xb9, 0x4e, 0x1c, 0xe6, 0x45, 0x72, 0xeb, 0xce, 0xb3, 0x5d, 0x9c, 0x79, 0x01, 0x4d, 0x99, 0x13, 567 0xc4, 0x39, 0xe1, 0xe8, 0x8f, 0x2a, 0x50, 0xed, 0x84, 0x52, 0xf4, 0x04, 0x54, 0x59, 0x42, 0x29, 568 0xf1, 0x96, 0xba, 0xd2, 0x55, 0x8e, 0xcb, 0xb8, 0xc2, 0xc3, 0xd1, 0x12, 0xf5, 0x01, 0x10, 0x40, 569 0xca, 0x1c, 0x46, 0xf5, 0x52, 0x57, 0x39, 0x6e, 0xf5, 0x0f, 0x7b, 0x9b, 0x47, 0xe4, 0x62, 0x8b, 570 0x43, 0xb8, 0xc6, 0x8a, 0x25, 0x3a, 0x01, 0x22, 0x20, 0x2c, 0x8b, 0xa9, 0x5e, 0x16, 0x12, 0x74, 571 0x57, 0x62, 0x67, 0x31, 0xc5, 0x1a, 0x93, 0x2b, 0xf4, 0x1a, 0x34, 0x57, 0x4e, 0xba, 0x22, 0x29, 572 0x4b, 0x1c, 0x46, 0xdd, 0x4c, 0x57, 0x85, 0xe8, 0xf1, 0x56, 0x34, 0x74, 0xd2, 0x95, 0x25, 0x51, 573 0xdc, 0x58, 0xdd, 0x8a, 0xd0, 0x05, 0x68, 0x09, 0xb1, 0xe3, 0xbb, 0x51, 0xe2, 0xb1, 0x55, 0xa0, 574 0xef, 0x09, 0xf5, 0x57, 0xbd, 0xfc, 0x14, 0x07, 0x9e, 0xeb, 0x31, 0xc7, 0xf7, 0x33, 0xcb, 0x73, 575 0x43, 0xba, 0x14, 0x56, 0x46, 0xc1, 0xc5, 0x62, 0xe3, 0x4d, 0x88, 0xae, 0xc1, 0x61, 0xea, 0xb9, 576 0xa1, 0xc3, 0xd6, 0x09, 0xbd, 0xe5, 0x58, 0x11, 0x8e, 0xdf, 0x7c, 0xc2, 0xd1, 0x2a, 0x14, 0x5b, 577 0x5b, 0x94, 0xde, 0xcb, 0xa1, 0x2f, 0x40, 0x63, 0xe9, 0xa5, 0xb1, 0xef, 0x64, 0x24, 0x74, 0x02, 578 0xaa, 0x6b, 0x5d, 0xe5, 0xb8, 0x86, 0xeb, 0x32, 0x37, 0x71, 0x02, 0x8a, 0xba, 0xa0, 0xbe, 0xa4, 579 0xe9, 0x22, 0xf1, 0x62, 0x7e, 0x8b, 0x7a, 0x4d, 0x32, 0xb6, 0x29, 0xf4, 0x12, 0xd4, 0xe3, 0xc4, 580 0x7b, 0xef, 0x30, 0x4a, 0x6e, 0x68, 0xa6, 0x37, 0xba, 0xca, 0x71, 0xbd, 0xff, 0xb0, 0x97, 0x5f, 581 0x74, 0xaf, 0xb8, 0xe8, 0x9e, 0x11, 0x66, 0x18, 0x48, 0xe2, 0x05, 0xcd, 0xd0, 0x4f, 0x00, 0xa6, 582 0x2c, 0x4a, 0x1c, 0x97, 0x92, 0x94, 0x32, 0xe6, 0x85, 0x6e, 0xaa, 0x37, 0xff, 0x45, 0xbb, 0x2f, 583 0xd9, 0x96, 0x24, 0xa3, 0xef, 0x00, 0x88, 0xd7, 0x73, 0xdf, 0x5b, 0x88, 0x6d, 0x5b, 0x42, 0x7a, 584 0xd0, 0x93, 0x2d, 0x3c, 0x13, 0xc8, 0x05, 0xcd, 0x70, 0x2d, 0x2e, 0x96, 0xc8, 0x04, 0x07, 0x81, 585 0xf3, 0x81, 0x24, 0x51, 0xc4, 0x48, 0xd1, 0x97, 0xfa, 0xbe, 0x10, 0xb6, 0xef, 0xed, 0x39, 0x90, 586 0x04, 0xbc, 0x1f, 0x38, 0x1f, 0x70, 0x14, 0xb1, 0x22, 0x81, 0x5e, 0x83, 0xfa, 0x22, 0xa1, 0xfc, 587 0x79, 0x79, 0xf3, 0xea, 0x50, 0x18, 0x74, 0xee, 0x19, 0xd8, 0x45, 0x67, 0x63, 0x90, 0xd3, 0x79, 588 0x82, 0x8b, 0xd7, 0xf1, 0x72, 0x23, 0x3e, 0xf8, 0xbc, 0x38, 0xa7, 0x0b, 0xb1, 0x0e, 0xaa, 0x4b, 589 0xea, 0x53, 0x46, 0x97, 0xfa, 0x61, 0x57, 0x39, 0xd6, 0x70, 0x11, 0x72, 0xdb, 0x7c, 0x99, 0xdb, 590 0x3e, 0xfc, 0xbc, 0x6d, 0x4e, 0xe7, 0x89, 0xb1, 0xaa, 0x21, 0x78, 0x38, 0x56, 0xb5, 0x2a, 0xd4, 591 0xc6, 0xaa, 0x06, 0x60, 0x7d, 0xac, 0x6a, 0x75, 0xd8, 0x38, 0xfa, 0x4b, 0x01, 0x0f, 0xf3, 0x86, 592 0x32, 0x43, 0x96, 0x64, 0x1b, 0x31, 0xfa, 0x1a, 0xec, 0x6f, 0xe6, 0x96, 0x84, 0x4e, 0x18, 0xa5, 593 0x72, 0x46, 0x5b, 0x9b, 0xf4, 0x84, 0x67, 0xd1, 0x23, 0x50, 0xf1, 0x23, 0x97, 0xcf, 0x70, 0x49, 594 0xe0, 0x7b, 0x7e, 0xe4, 0x8e, 0x96, 0xe8, 0x07, 0x50, 0xdb, 0x74, 0xa3, 0x18, 0xc7, 0x7a, 0xff, 595 0xf1, 0x3f, 0x77, 0x32, 0xde, 0x12, 0x8f, 0x7e, 0x2f, 0x81, 0x66, 0x9e, 0xbd, 0x8c, 0x5c, 0x7e, 596 0x23, 0xff, 0xbd, 0x8e, 0xa7, 0xa0, 0x26, 0x6e, 0x9d, 0x8f, 0x96, 0x28, 0xa5, 0x81, 0x35, 0x9e, 597 0xe0, 0x93, 0xc7, 0xc1, 0xfc, 0x85, 0xe2, 0x7d, 0xcc, 0xab, 0x29, 0xe7, 0x2f, 0x02, 0xcb, 0xfb, 598 0x48, 0xd1, 0x97, 0xa0, 0x29, 0xc0, 0x84, 0xbe, 0xf7, 0x52, 0xde, 0x2f, 0x15, 0x41, 0x68, 0xf0, 599 0x24, 0x96, 0x39, 0xd4, 0x06, 0xda, 0x0d, 0xcd, 0xc8, 0xca, 0x0b, 0x99, 0x5e, 0x15, 0xee, 0xd5, 600 0x1b, 0x9a, 0x0d, 0xbd, 0x90, 0x71, 0x88, 0x9f, 0x00, 0xdf, 0x4c, 0x8c, 0x57, 0x03, 0x57, 0x7d, 601 0x59, 0xfd, 0xb7, 0x00, 0x15, 0x10, 0xd9, 0x1e, 0x47, 0x4d, 0x90, 0xa0, 0x24, 0x6d, 0x06, 0x79, 602 0xac, 0x6a, 0x2a, 0xdc, 0x1b, 0xab, 0xda, 0x1e, 0xac, 0x1c, 0x25, 0xc5, 0x41, 0x5c, 0x39, 0xb1, 603 0xb0, 0x6a, 0x03, 0x2d, 0x70, 0xe2, 0x7c, 0x97, 0xdc, 0xa0, 0x1a, 0x48, 0xe8, 0x7f, 0xb7, 0xcf, 604 0x5a, 0x15, 0xd8, 0x36, 0x31, 0x56, 0x35, 0x05, 0x96, 0xc6, 0xaa, 0x56, 0x82, 0xe5, 0xb1, 0xaa, 605 0x95, 0xa1, 0x9a, 0xef, 0x30, 0x56, 0xb5, 0x0a, 0xac, 0x6e, 0x5a, 0x42, 0x83, 0xb5, 0xe7, 0x03, 606 0xd0, 0x94, 0xc7, 0x7e, 0x16, 0x25, 0x81, 0xc3, 0xd0, 0x53, 0xf0, 0xe4, 0x72, 0x7a, 0x4e, 0xf0, 607 0x74, 0x6a, 0x93, 0xb3, 0x29, 0xbe, 0x32, 0x6c, 0xf2, 0xf3, 0xe4, 0x62, 0x32, 0xfd, 0x65, 0x02, 608 0x1f, 0xa0, 0xc7, 0x00, 0xed, 0x82, 0x6f, 0x5f, 0x40, 0x85, 0xbb, 0xc8, 0x9a, 0xb7, 0x2e, 0x57, 609 0xc6, 0xec, 0xd3, 0x2e, 0xbb, 0xa0, 0x70, 0xf9, 0x4d, 0x01, 0x8d, 0xdb, 0xef, 0x5f, 0xd4, 0x06, 610 0x8f, 0xa4, 0x8a, 0x0c, 0x0d, 0x6b, 0x48, 0x2c, 0x1b, 0x1b, 0xb6, 0x79, 0xfe, 0x0e, 0x3e, 0x40, 611 0x08, 0xb4, 0xf0, 0xd9, 0xe9, 0xab, 0x1f, 0x5f, 0xf5, 0x89, 0x35, 0x34, 0xfa, 0x2f, 0x5f, 0x41, 612 0x05, 0x1d, 0x82, 0x7d, 0xdb, 0xb4, 0x6c, 0xc2, 0xcd, 0x39, 0xdf, 0xc4, 0xb0, 0xc4, 0x3d, 0xa6, 613 0x6f, 0xc6, 0xe6, 0xa9, 0x4d, 0x76, 0xf8, 0x65, 0xf4, 0x08, 0x1c, 0x9c, 0x4e, 0x27, 0xa3, 0x0b, 614 0x8b, 0xa7, 0x5e, 0xbe, 0xe8, 0x13, 0x9e, 0x56, 0x9f, 0xff, 0xa9, 0x80, 0xda, 0xe6, 0x73, 0xc3, 615 0x8b, 0x2d, 0x6a, 0xb0, 0xb1, 0x69, 0x12, 0xcb, 0x36, 0x6c, 0x13, 0x3e, 0x40, 0x00, 0x54, 0x8c, 616 0x53, 0x7b, 0xf4, 0xd6, 0x84, 0x0a, 0x5f, 0x9f, 0xe1, 0xe9, 0xb5, 0x39, 0x81, 0x25, 0xf4, 0x0c, 617 0x3c, 0x19, 0x98, 0x33, 0x6c, 0x9e, 0x1a, 0xb6, 0x39, 0x20, 0xd6, 0xf4, 0xcc, 0x26, 0x03, 0xf3, 618 0xd2, 0xb4, 0xcd, 0x01, 0x2c, 0x77, 0x4a, 0x9a, 0xb2, 0x43, 0x18, 0x1a, 0x78, 0xb0, 0x21, 0xa8, 619 0x82, 0xd0, 0x00, 0xda, 0x00, 0x1b, 0xa3, 0xc9, 0x68, 0x72, 0x0e, 0xf7, 0x9e, 0x9f, 0x03, 0xad, 620 0xf8, 0x90, 0xf1, 0x82, 0xef, 0xd4, 0x62, 0xbf, 0x9b, 0xf1, 0x52, 0xaa, 0xa0, 0x7c, 0x39, 0x3d, 621 0x87, 0x0a, 0x5f, 0x5c, 0x19, 0x33, 0x58, 0xe2, 0xa7, 0x33, 0xc3, 0xe6, 0x14, 0x0f, 0x4c, 0x6c, 622 0x0e, 0x08, 0x07, 0xcb, 0x6f, 0x86, 0xa0, 0xbd, 0x88, 0x82, 0xe2, 0xdd, 0x71, 0xf7, 0xb7, 0xc3, 623 0x9b, 0xa6, 0x2d, 0xe3, 0x19, 0x0f, 0x67, 0xca, 0x75, 0xc7, 0xf5, 0xd8, 0x6a, 0x3d, 0xef, 0x2d, 624 0xa2, 0xe0, 0x44, 0x7e, 0xdc, 0x0b, 0xc9, 0xbc, 0x22, 0x34, 0xdf, 0xff, 0x1d, 0x00, 0x00, 0xff, 625 0xff, 0x19, 0x4e, 0xf0, 0x51, 0x81, 0x08, 0x00, 0x00, 626 }