[VOL-4627] Add COMBO pon support with configuration file
Change-Id: Ib7eec5640dfd5e5eb39e722ec7d2c8ee2b59f060
diff --git a/VERSION b/VERSION
index 3e5a73e..1cac385 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.10.5-dev
+1.11.0
diff --git a/api/bbsim/bbsim.pb.go b/api/bbsim/bbsim.pb.go
index ce9f1ce..b31a4db 100644
--- a/api/bbsim/bbsim.pb.go
+++ b/api/bbsim/bbsim.pb.go
@@ -197,6 +197,7 @@
// these are the stored resource IDs as reported via OMCI
AllocatedGemPorts []*PonAllocatedResources `protobuf:"bytes,6,rep,name=AllocatedGemPorts,proto3" json:"AllocatedGemPorts,omitempty"`
AllocatedAllocIds []*PonAllocatedResources `protobuf:"bytes,7,rep,name=AllocatedAllocIds,proto3" json:"AllocatedAllocIds,omitempty"`
+ Technology string `protobuf:"bytes,8,opt,name=Technology,proto3" json:"Technology,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -276,6 +277,13 @@
return nil
}
+func (m *PONPort) GetTechnology() string {
+ if m != nil {
+ return m.Technology
+ }
+ return ""
+}
+
type PonAllocatedResources struct {
SerialNumber string `protobuf:"bytes,1,opt,name=SerialNumber,proto3" json:"SerialNumber,omitempty"`
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"`
@@ -1902,148 +1910,149 @@
func init() { proto.RegisterFile("api/bbsim/bbsim.proto", fileDescriptor_ef7750073d18011b) }
var fileDescriptor_ef7750073d18011b = []byte{
- // 2256 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdd, 0x6e, 0xdb, 0xc8,
+ // 2272 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x6e, 0xdb, 0xc8,
0x15, 0xb6, 0xfe, 0x2c, 0xe9, 0xc8, 0x92, 0xe8, 0x49, 0xec, 0x25, 0x1c, 0xef, 0xc6, 0xe0, 0x66,
0x17, 0x4e, 0xb0, 0xeb, 0x6c, 0x92, 0xee, 0x36, 0xb9, 0x94, 0x25, 0x5a, 0xe1, 0x5a, 0x26, 0x89,
- 0xa1, 0xe4, 0x20, 0xed, 0x85, 0x40, 0x8b, 0x63, 0x99, 0x28, 0x45, 0x2a, 0x24, 0x65, 0xd7, 0x0f,
- 0xd0, 0x67, 0xe8, 0xe5, 0x02, 0x7d, 0x80, 0xbe, 0x47, 0xef, 0x7a, 0x5f, 0xa0, 0xbd, 0xea, 0x7b,
- 0x14, 0x33, 0x1c, 0x52, 0xa4, 0x44, 0x3b, 0xce, 0x55, 0x6f, 0x04, 0x9e, 0xef, 0xfc, 0xcc, 0x99,
- 0xf3, 0x33, 0x73, 0x46, 0xb0, 0x63, 0xce, 0xed, 0x97, 0x17, 0x17, 0x81, 0x3d, 0x8b, 0x7e, 0x8f,
- 0xe6, 0xbe, 0x17, 0x7a, 0xa8, 0xc2, 0x88, 0xbd, 0x27, 0xd7, 0x9e, 0x13, 0x5e, 0x99, 0x63, 0x06,
- 0x06, 0x2f, 0xbd, 0x39, 0x71, 0x3d, 0x27, 0x8c, 0x64, 0xf6, 0x0e, 0xb2, 0xcc, 0x90, 0x4c, 0xae,
- 0xe8, 0xf7, 0xa5, 0xed, 0x90, 0x48, 0x42, 0xfa, 0x4f, 0x11, 0xaa, 0xba, 0xa6, 0xea, 0x9e, 0x1f,
- 0xa2, 0x16, 0x14, 0x95, 0x9e, 0x58, 0x38, 0x28, 0x1c, 0x56, 0x70, 0x51, 0xe9, 0xa1, 0x7d, 0xa8,
- 0x6b, 0x73, 0xe2, 0x1b, 0xa1, 0x19, 0x12, 0xb1, 0x78, 0x50, 0x38, 0xac, 0xe3, 0x25, 0x80, 0x9e,
- 0x41, 0x53, 0x71, 0x43, 0xe2, 0xbb, 0xa6, 0x13, 0x49, 0x94, 0x98, 0x44, 0x16, 0x44, 0x07, 0xd0,
- 0xd0, 0xcd, 0xc9, 0x9f, 0x48, 0xd8, 0xf5, 0x16, 0x6e, 0x28, 0x96, 0x0f, 0x0a, 0x87, 0x65, 0x9c,
- 0x86, 0xd0, 0x09, 0xb4, 0x3b, 0x8e, 0xe3, 0x4d, 0xcc, 0x90, 0x58, 0x9a, 0xbb, 0x50, 0xac, 0x40,
- 0xac, 0x1c, 0x94, 0x0e, 0x1b, 0xaf, 0xf7, 0x8f, 0xa2, 0xed, 0xea, 0x9e, 0x9b, 0x08, 0x60, 0x12,
- 0x78, 0x0b, 0x7f, 0x42, 0x02, 0xbc, 0xaa, 0x84, 0x7e, 0x85, 0xed, 0x04, 0xea, 0x93, 0x19, 0xdd,
- 0x51, 0x20, 0x6e, 0x3e, 0xc0, 0xd2, 0xba, 0x5a, 0xc6, 0x16, 0xfb, 0xa0, 0x5e, 0x55, 0xbf, 0xc8,
- 0x56, 0xac, 0x26, 0x9d, 0xc2, 0x4e, 0xae, 0x2c, 0x92, 0x60, 0xcb, 0x20, 0xbe, 0x6d, 0x3a, 0xea,
- 0x62, 0x76, 0x41, 0x7c, 0x16, 0xf8, 0x3a, 0xce, 0x60, 0x2c, 0x25, 0x16, 0x8b, 0x3d, 0x4d, 0x89,
- 0x25, 0xfd, 0x1e, 0xaa, 0xaa, 0xaa, 0x7c, 0x79, 0xb6, 0xa4, 0xff, 0x16, 0xa0, 0xa4, 0x39, 0xeb,
- 0x5a, 0xab, 0x4e, 0x14, 0x73, 0x9c, 0xc8, 0x58, 0x2e, 0x7d, 0xb6, 0x0e, 0xca, 0x79, 0x75, 0x40,
- 0xd7, 0xd5, 0xc5, 0x2a, 0x63, 0x15, 0x15, 0x1d, 0xbd, 0x80, 0x1a, 0xdf, 0x48, 0x9c, 0xee, 0x16,
- 0x0f, 0x2c, 0x87, 0x71, 0xc2, 0xa7, 0xb2, 0xbc, 0x44, 0xe3, 0x84, 0xc6, 0xb2, 0x1c, 0xc6, 0x09,
- 0x5f, 0xfa, 0x4b, 0x01, 0x44, 0xcd, 0x09, 0xd7, 0xc2, 0x3d, 0xbc, 0x9d, 0x13, 0xf4, 0x16, 0xca,
- 0xe1, 0xed, 0x9c, 0xb0, 0xed, 0xb7, 0x5e, 0x3f, 0xe3, 0x46, 0xee, 0x12, 0x3f, 0xa2, 0x3f, 0x98,
- 0x69, 0x48, 0x2f, 0xa1, 0xcc, 0x2c, 0x34, 0xa0, 0x3a, 0x52, 0x4f, 0x55, 0xed, 0x83, 0x2a, 0x6c,
- 0xa0, 0x2d, 0xa8, 0x75, 0x06, 0x03, 0xad, 0x3b, 0x56, 0x7a, 0x42, 0x81, 0x52, 0x7d, 0xf9, 0x6c,
- 0xac, 0x6b, 0x78, 0x28, 0x14, 0xa5, 0xbf, 0x17, 0xe0, 0x71, 0x9e, 0x61, 0x84, 0x22, 0x4b, 0x3c,
- 0xdb, 0x91, 0xd5, 0x7d, 0xa8, 0xeb, 0x9e, 0x4b, 0x37, 0xc0, 0x93, 0xdd, 0xc4, 0x4b, 0x00, 0x3d,
- 0x86, 0x0a, 0x2b, 0x71, 0x16, 0xfa, 0x26, 0x8e, 0x08, 0xb4, 0x0b, 0x9b, 0x94, 0xaf, 0x7a, 0x2c,
- 0xde, 0x4d, 0xcc, 0x29, 0xf4, 0x0d, 0x40, 0xbc, 0x96, 0x62, 0x89, 0x15, 0x96, 0xe8, 0x14, 0x42,
- 0xf5, 0x4e, 0x1c, 0xef, 0x46, 0xb1, 0xc4, 0x4d, 0xd6, 0x8b, 0x9c, 0x92, 0x30, 0xec, 0xe4, 0xf9,
- 0x1b, 0xa0, 0x77, 0x50, 0xf7, 0x63, 0x42, 0x2c, 0xb0, 0xf0, 0x3f, 0xb9, 0x27, 0x72, 0x78, 0x29,
- 0x2d, 0xfd, 0x56, 0x86, 0x92, 0xa6, 0x8e, 0xfe, 0x6f, 0x45, 0x97, 0x8a, 0x6b, 0x8f, 0x87, 0x62,
- 0x09, 0xa0, 0x03, 0xa8, 0xbf, 0xbf, 0xe9, 0x58, 0x96, 0x4f, 0x82, 0x40, 0xac, 0x51, 0xfd, 0xe3,
- 0xa2, 0x58, 0xc0, 0x4b, 0x10, 0xed, 0x25, 0x31, 0xae, 0x53, 0x65, 0xc6, 0x8e, 0xe3, 0x7c, 0x04,
- 0xb5, 0x80, 0xf8, 0xd7, 0x36, 0x8d, 0x0a, 0x64, 0x8a, 0xd2, 0x88, 0x60, 0x26, 0x9d, 0xc8, 0xa0,
- 0x1e, 0x7c, 0xad, 0xcc, 0xcc, 0x29, 0x31, 0xbc, 0xcb, 0xf0, 0xc6, 0xf4, 0x89, 0xfc, 0xe7, 0x39,
- 0x99, 0x84, 0xc4, 0x32, 0xc8, 0x24, 0xb4, 0x3d, 0x37, 0x10, 0x1b, 0xcc, 0xbf, 0xfb, 0x85, 0xd6,
- 0xac, 0x60, 0x32, 0x21, 0xf6, 0x75, 0xca, 0xca, 0x56, 0x8e, 0x95, 0x55, 0x21, 0xf4, 0x13, 0x3c,
- 0xea, 0x4c, 0x42, 0xfb, 0x9a, 0x30, 0x31, 0xd9, 0x0d, 0xed, 0xf0, 0x56, 0xb1, 0xc4, 0x26, 0xd3,
- 0xcd, 0x63, 0xa1, 0x5f, 0x60, 0xb7, 0xeb, 0xcd, 0x66, 0x76, 0x18, 0x12, 0x2b, 0xab, 0xd4, 0x62,
- 0x4a, 0x77, 0x70, 0xd1, 0x37, 0x50, 0x5e, 0xb8, 0x76, 0x20, 0xb6, 0x59, 0x84, 0x80, 0x47, 0x68,
- 0xa4, 0x2a, 0x98, 0xe1, 0xd2, 0xbf, 0x0a, 0x50, 0x1a, 0xa9, 0xca, 0x5a, 0x85, 0xf0, 0x9a, 0xef,
- 0xf1, 0xa3, 0x2f, 0x22, 0x38, 0x6a, 0xb8, 0xbc, 0x1e, 0x22, 0x82, 0x76, 0xd4, 0x19, 0x51, 0x7a,
- 0xbc, 0x0f, 0xd8, 0x77, 0xb6, 0x7a, 0x2a, 0xab, 0xd5, 0xb3, 0xec, 0x9d, 0x4d, 0x66, 0x3e, 0xce,
- 0xe9, 0x8b, 0x54, 0x4e, 0xab, 0x79, 0x39, 0x4d, 0xe5, 0x53, 0xe2, 0x7d, 0x5c, 0x63, 0x67, 0x49,
- 0x2c, 0x37, 0x72, 0xed, 0xe8, 0xd4, 0xa0, 0xbf, 0xd2, 0x3f, 0x2a, 0x50, 0xe5, 0x9a, 0xd4, 0x4b,
- 0xd5, 0x9c, 0x25, 0x7d, 0x4f, 0xbf, 0xa9, 0x97, 0xcb, 0x0a, 0xe4, 0x47, 0xf6, 0xb2, 0xfa, 0xee,
- 0xdc, 0xad, 0x31, 0x34, 0xa7, 0x6c, 0xb7, 0x15, 0xcc, 0xbe, 0x29, 0xd6, 0xa5, 0x58, 0x54, 0xe2,
- 0xec, 0x9b, 0x9e, 0x03, 0x2a, 0x21, 0x56, 0x20, 0x9b, 0x73, 0xcf, 0x61, 0xfb, 0xac, 0xe1, 0x14,
- 0x42, 0xd7, 0x66, 0x54, 0xef, 0x6a, 0x32, 0x67, 0xe7, 0x72, 0x0d, 0x2f, 0x81, 0x84, 0xab, 0x4c,
- 0x67, 0x73, 0xb6, 0xc5, 0x98, 0x4b, 0x01, 0x24, 0x42, 0x95, 0x5f, 0x95, 0x51, 0x63, 0xe0, 0x98,
- 0xa4, 0xab, 0x32, 0xf3, 0x51, 0xe0, 0x81, 0x39, 0x9e, 0x42, 0xa8, 0x5d, 0x6a, 0x3f, 0x62, 0x37,
- 0xa2, 0x1d, 0x27, 0xc0, 0x7a, 0x57, 0x6f, 0xdd, 0xd1, 0xd5, 0x4a, 0xff, 0x4c, 0x8f, 0x24, 0x9a,
- 0x91, 0x8d, 0x04, 0xa0, 0x51, 0x1b, 0xb9, 0x36, 0x2f, 0xcc, 0x26, 0x8e, 0x08, 0x3a, 0x86, 0xd0,
- 0xd4, 0x98, 0xd3, 0x33, 0x33, 0x9c, 0x5c, 0x89, 0x6d, 0xe6, 0x75, 0x1a, 0x42, 0xdf, 0x43, 0x6b,
- 0x14, 0xd0, 0xc8, 0xe9, 0xbe, 0xed, 0xf9, 0x76, 0x78, 0x2b, 0x0a, 0xcc, 0xc0, 0x0a, 0x1a, 0xc9,
- 0x19, 0x69, 0xb9, 0xed, 0x58, 0xce, 0x58, 0x91, 0xeb, 0x65, 0xed, 0xa1, 0x48, 0xae, 0xb7, 0x66,
- 0xaf, 0x97, 0xb5, 0xf7, 0x28, 0x96, 0xcb, 0xd8, 0x8b, 0xf3, 0xa9, 0xeb, 0xba, 0x27, 0x8b, 0x8f,
- 0x53, 0xf9, 0x64, 0x08, 0xed, 0xe9, 0xae, 0xe7, 0x5e, 0xda, 0xd3, 0x85, 0x4f, 0xce, 0xcc, 0x49,
- 0x5c, 0x55, 0x3b, 0x4c, 0x30, 0x8f, 0x85, 0x7e, 0x80, 0x6d, 0xd9, 0x35, 0x2f, 0x1c, 0x8a, 0x0d,
- 0x88, 0xe9, 0xbb, 0xb6, 0x3b, 0x15, 0x77, 0x99, 0xfc, 0x3a, 0x43, 0x32, 0xe1, 0xb1, 0xa6, 0x8e,
- 0x86, 0xbe, 0x79, 0x79, 0x69, 0x4f, 0x8c, 0xc9, 0x15, 0xb1, 0x16, 0x0e, 0xf1, 0x03, 0xa4, 0x40,
- 0x3b, 0xa4, 0xe0, 0x12, 0x62, 0x25, 0xde, 0x78, 0xfd, 0xf4, 0x28, 0x33, 0x6e, 0xae, 0x69, 0xe2,
- 0x55, 0x3d, 0xe9, 0x10, 0xca, 0x9a, 0x3a, 0x0a, 0xd0, 0x01, 0x54, 0xec, 0x90, 0xcc, 0xe2, 0xdb,
- 0x26, 0x3e, 0x35, 0x34, 0x75, 0x84, 0x23, 0x86, 0xf4, 0x13, 0xd4, 0x8c, 0xb8, 0x11, 0x9f, 0x65,
- 0xa5, 0x57, 0x3b, 0x96, 0x6b, 0x1c, 0x42, 0x79, 0xa4, 0x2a, 0x77, 0xda, 0xa6, 0x27, 0x52, 0x62,
- 0x1b, 0xe8, 0x4a, 0xe4, 0xd3, 0x82, 0x04, 0xe1, 0x43, 0x86, 0x34, 0xe9, 0x05, 0x80, 0xae, 0xa9,
- 0xb1, 0x46, 0xe6, 0x32, 0x2f, 0xac, 0x5c, 0xe6, 0xd2, 0x00, 0x80, 0xae, 0xc5, 0x65, 0x0f, 0xa1,
- 0x4d, 0xbb, 0x7a, 0x7d, 0x81, 0x55, 0x38, 0x2e, 0xeb, 0x1e, 0x3f, 0x26, 0x22, 0x42, 0xfa, 0x77,
- 0x09, 0xea, 0x1d, 0xc7, 0xf4, 0x67, 0xec, 0xb8, 0xf9, 0x67, 0x09, 0x2a, 0xf4, 0x23, 0x40, 0x55,
- 0x28, 0x0d, 0x34, 0x43, 0xd8, 0x40, 0x2d, 0x80, 0xde, 0x47, 0x45, 0xed, 0x8f, 0xfb, 0x1d, 0x43,
- 0x17, 0x0a, 0xa8, 0x09, 0x75, 0x4d, 0x1d, 0x8d, 0x3b, 0x83, 0x0e, 0x3e, 0x13, 0x8a, 0xe8, 0x2b,
- 0x78, 0x44, 0x49, 0x63, 0xd8, 0xc1, 0xc3, 0x91, 0x3e, 0x3e, 0xe9, 0x28, 0x83, 0x11, 0x96, 0x85,
- 0x12, 0xda, 0x05, 0xc4, 0x18, 0x4a, 0x5f, 0xed, 0x0c, 0xc6, 0x3d, 0xb9, 0x8f, 0x3b, 0x3d, 0x59,
- 0x28, 0xc7, 0x0a, 0x3d, 0xac, 0x9c, 0x0c, 0xc7, 0xda, 0xc9, 0xf8, 0x83, 0xa2, 0xf6, 0xb4, 0x0f,
- 0x42, 0x05, 0xed, 0x83, 0x48, 0x19, 0x03, 0xcd, 0x30, 0x28, 0xae, 0x9d, 0x75, 0x95, 0x71, 0xf7,
- 0x7d, 0x47, 0x55, 0xe5, 0x81, 0xb0, 0x99, 0xac, 0xc3, 0xcc, 0x19, 0xc9, 0x3a, 0x55, 0xf4, 0x1c,
- 0xbe, 0xa3, 0x8c, 0x21, 0xee, 0xa8, 0xc6, 0x99, 0x62, 0x18, 0x8a, 0xa6, 0x8e, 0x15, 0x75, 0x28,
- 0xe3, 0x13, 0x19, 0xcb, 0x6a, 0x57, 0x1e, 0x7f, 0xe8, 0x60, 0x55, 0x51, 0xfb, 0x42, 0x0d, 0xed,
- 0xc1, 0x2e, 0x73, 0xbd, 0x3b, 0x54, 0xce, 0x3b, 0x43, 0x2a, 0x18, 0x9b, 0xa9, 0x23, 0x91, 0x15,
- 0xe7, 0x58, 0xc7, 0x5a, 0x57, 0x36, 0x0c, 0xba, 0x5f, 0x19, 0x63, 0x0d, 0x0b, 0x80, 0x0e, 0x60,
- 0x3f, 0xed, 0xd7, 0xa9, 0xfc, 0x71, 0x6c, 0x7c, 0x54, 0xbb, 0x89, 0x6e, 0x03, 0xed, 0xc0, 0x36,
- 0x95, 0x50, 0x86, 0xa3, 0xb1, 0xae, 0xa9, 0x34, 0x16, 0x43, 0x43, 0xd8, 0x42, 0xdb, 0xd0, 0x4c,
- 0x22, 0x45, 0xd5, 0x85, 0xe6, 0x2a, 0x74, 0x2c, 0xb4, 0xe2, 0x8d, 0xc5, 0x90, 0xde, 0x1d, 0xd3,
- 0x5d, 0x08, 0xed, 0x38, 0x1e, 0x19, 0x46, 0x97, 0x7b, 0x25, 0x20, 0x04, 0xad, 0x34, 0xf7, 0x44,
- 0x11, 0xb6, 0xd1, 0x23, 0x68, 0xa7, 0xb1, 0xce, 0x99, 0x22, 0x20, 0xe9, 0x2d, 0xb4, 0x58, 0x7e,
- 0x75, 0xd3, 0x37, 0x67, 0x24, 0x24, 0x3e, 0x12, 0xa0, 0x74, 0x4a, 0x6e, 0x79, 0x99, 0xd0, 0x4f,
- 0x5a, 0x1a, 0xe7, 0xa6, 0xb3, 0x88, 0x87, 0xfe, 0x88, 0x90, 0xfe, 0x56, 0x60, 0xf6, 0x98, 0x76,
- 0xaa, 0x34, 0x93, 0x6a, 0xe1, 0x16, 0x96, 0xc0, 0x83, 0xa6, 0xb2, 0x5d, 0xd8, 0xa4, 0xc7, 0xec,
- 0x22, 0xe0, 0x97, 0x12, 0xa7, 0xd0, 0xcf, 0x00, 0x89, 0x8b, 0x81, 0x58, 0x66, 0xbd, 0xb5, 0xc3,
- 0x7b, 0x2b, 0xbb, 0x01, 0x9c, 0x12, 0x94, 0x3e, 0x41, 0x5b, 0x1b, 0x0c, 0x33, 0x3e, 0x1e, 0x40,
- 0x83, 0x1d, 0xf7, 0x97, 0xe6, 0x84, 0xf0, 0x91, 0xa0, 0x89, 0xd3, 0x50, 0x72, 0x4b, 0x50, 0x92,
- 0xed, 0xa4, 0x98, 0xba, 0x25, 0x62, 0xf0, 0x2e, 0x4f, 0xe9, 0x03, 0xa1, 0x79, 0x4e, 0xfc, 0xc0,
- 0xf6, 0x5c, 0xbe, 0x27, 0x11, 0xaa, 0xd7, 0x11, 0xc0, 0x63, 0x12, 0x93, 0x34, 0x5e, 0x17, 0x0b,
- 0xdb, 0xb1, 0x86, 0xf6, 0x2c, 0x79, 0x52, 0x25, 0x00, 0x3d, 0x91, 0x27, 0x6c, 0xea, 0x79, 0x6f,
- 0x06, 0x57, 0x7c, 0x95, 0x14, 0x42, 0xb5, 0xa7, 0x76, 0xc8, 0x9d, 0x88, 0xe6, 0xd3, 0x25, 0x20,
- 0xbd, 0x85, 0xda, 0xc0, 0x9b, 0x0e, 0xc8, 0x35, 0x71, 0x68, 0x06, 0x1d, 0xfa, 0xc1, 0xd7, 0x8f,
- 0x08, 0xba, 0x83, 0x89, 0xe9, 0x38, 0x3c, 0x13, 0x35, 0xcc, 0x29, 0x49, 0x86, 0x1a, 0x26, 0xc1,
- 0xdc, 0x73, 0x03, 0x82, 0x9e, 0x42, 0x23, 0x60, 0xf6, 0xc6, 0x13, 0xcf, 0x22, 0x7c, 0x80, 0x82,
- 0x08, 0xea, 0x7a, 0x16, 0xa1, 0x9b, 0x9b, 0x91, 0x20, 0x30, 0xa7, 0xf1, 0x06, 0x62, 0x52, 0xfa,
- 0x6b, 0x01, 0x1a, 0xf4, 0x36, 0x8f, 0x03, 0xff, 0x1c, 0x36, 0x35, 0x77, 0x81, 0xc9, 0x27, 0x7e,
- 0x7e, 0x6f, 0xa7, 0x8e, 0xdd, 0x48, 0x04, 0x73, 0x01, 0xf4, 0x0e, 0xb6, 0x8c, 0xc5, 0x45, 0x87,
- 0x4d, 0x93, 0xe7, 0xa6, 0xc3, 0x2c, 0xb7, 0x92, 0x7c, 0x27, 0x2c, 0x76, 0x16, 0xe1, 0x8c, 0x28,
- 0x2d, 0xb2, 0xbe, 0xef, 0x2d, 0xe6, 0xf1, 0xfd, 0x14, 0x85, 0x2d, 0x83, 0x49, 0xa7, 0x50, 0xa1,
- 0x8f, 0x92, 0x00, 0x7d, 0x0d, 0x70, 0xe9, 0x78, 0x37, 0xe3, 0x09, 0xfb, 0xef, 0x80, 0x9f, 0xa5,
- 0x14, 0x89, 0xfe, 0x39, 0xf8, 0x16, 0x2a, 0x94, 0xa0, 0xa3, 0x13, 0xad, 0xb7, 0xe6, 0x51, 0xfc,
- 0xe7, 0x07, 0xd5, 0xc6, 0x11, 0x4f, 0x7a, 0x0a, 0x55, 0x9a, 0x2d, 0x6f, 0x11, 0xd2, 0x30, 0x5b,
- 0xc4, 0x31, 0x6f, 0xb9, 0xa5, 0x88, 0x90, 0xaa, 0x50, 0x91, 0x67, 0xf3, 0xf0, 0xf6, 0xc5, 0x3e,
- 0x54, 0xf9, 0xf8, 0x46, 0xcf, 0x4f, 0x79, 0xf8, 0x5e, 0xd8, 0x40, 0x35, 0x28, 0xeb, 0xda, 0xd0,
- 0x10, 0x0a, 0x2f, 0x5e, 0x41, 0x2b, 0xbb, 0x31, 0xca, 0xfb, 0x55, 0x53, 0xe8, 0x43, 0xb0, 0x0e,
- 0x95, 0x81, 0xdc, 0x39, 0x97, 0x85, 0x02, 0x02, 0xd8, 0xa4, 0xe0, 0xf9, 0x1b, 0xa1, 0xf8, 0xfa,
- 0xb7, 0x2d, 0xa8, 0x1c, 0x1f, 0x1b, 0xf6, 0x0c, 0xbd, 0x84, 0x2a, 0xaf, 0x39, 0xb4, 0xc5, 0xa3,
- 0xc4, 0xd6, 0xdc, 0x7b, 0xcc, 0xa9, 0x4c, 0x45, 0x4a, 0x1b, 0xe8, 0x15, 0x34, 0x0c, 0x12, 0x26,
- 0x05, 0xd2, 0xe6, 0x62, 0x31, 0xb0, 0xb7, 0x0a, 0x48, 0x1b, 0xe8, 0x19, 0x6c, 0xf6, 0x49, 0x48,
- 0xdf, 0xf8, 0xd9, 0x25, 0x60, 0xf9, 0x58, 0x93, 0x36, 0xd0, 0x1f, 0x41, 0x8c, 0xa4, 0x72, 0x5e,
- 0x7a, 0x4f, 0x3f, 0xf3, 0x20, 0xde, 0xdb, 0xbf, 0x47, 0x20, 0x90, 0x36, 0xd0, 0x8f, 0x00, 0xba,
- 0x77, 0x43, 0x7c, 0xcf, 0x5d, 0x77, 0x23, 0xf6, 0x38, 0x2e, 0x5d, 0x69, 0x03, 0x1d, 0x41, 0xc3,
- 0xb8, 0x5a, 0x84, 0x96, 0x77, 0xf3, 0x30, 0xf9, 0x1f, 0xa0, 0x8e, 0xc9, 0x85, 0xe7, 0x85, 0x0f,
- 0x92, 0xa6, 0x09, 0x0b, 0xbd, 0xf9, 0x14, 0xeb, 0x5d, 0x3a, 0x0b, 0x10, 0xff, 0xf3, 0x2a, 0xaf,
- 0xa1, 0x6d, 0x84, 0xa6, 0x1f, 0x7e, 0x89, 0xce, 0x2f, 0xb0, 0x8d, 0x49, 0xb0, 0xa2, 0x15, 0x0f,
- 0x21, 0xbc, 0xf2, 0xf2, 0xf4, 0x9e, 0x47, 0xe9, 0x52, 0x47, 0x68, 0xbd, 0xd1, 0xf6, 0x52, 0x23,
- 0x8f, 0xb4, 0x81, 0xbe, 0xa7, 0xe3, 0x76, 0xc8, 0x46, 0xa3, 0xac, 0x3b, 0x8d, 0xa5, 0x18, 0x0d,
- 0xff, 0x1b, 0x68, 0xf4, 0x49, 0x98, 0x0c, 0x46, 0xdb, 0xa9, 0xd9, 0x86, 0xdb, 0x6d, 0x67, 0x87,
- 0xa3, 0x80, 0x25, 0x01, 0xa8, 0x71, 0x77, 0x31, 0x72, 0xed, 0x20, 0xcf, 0x97, 0xc6, 0xd2, 0x0c,
- 0x5f, 0x24, 0x49, 0x5a, 0xbe, 0xf3, 0x77, 0x04, 0x96, 0x2b, 0x75, 0x1c, 0x27, 0x67, 0x27, 0x39,
- 0x3a, 0xef, 0x60, 0x3b, 0xb5, 0x50, 0xa0, 0xb9, 0xba, 0xa6, 0x26, 0xcb, 0x2d, 0xe7, 0xad, 0xfc,
- 0xe5, 0x92, 0x3a, 0x7c, 0xb0, 0x8b, 0xaf, 0xa0, 0xc5, 0x75, 0x1e, 0xec, 0xe1, 0x5b, 0x10, 0x96,
- 0xcb, 0x7c, 0x91, 0x83, 0xbf, 0x83, 0x2d, 0x5e, 0x34, 0xd1, 0x63, 0xec, 0x9e, 0x54, 0xa5, 0xb4,
- 0xde, 0x40, 0x83, 0x6b, 0xb1, 0x37, 0xda, 0xc3, 0x94, 0x8e, 0x61, 0xc7, 0x60, 0xf9, 0x65, 0xb7,
- 0xac, 0xe2, 0x5a, 0xf6, 0xc4, 0xa4, 0x67, 0x18, 0xda, 0x5d, 0x86, 0x25, 0x7d, 0x01, 0xdf, 0x63,
- 0x83, 0x76, 0xfd, 0x1d, 0x36, 0xb2, 0x97, 0x78, 0x9e, 0x8d, 0x1f, 0xa1, 0xd6, 0x27, 0x61, 0x74,
- 0xae, 0xe7, 0x64, 0x24, 0x0e, 0x36, 0x13, 0x60, 0xb1, 0x6d, 0x77, 0xaf, 0x4c, 0x77, 0x4a, 0xe8,
- 0x15, 0x15, 0xbd, 0xec, 0x10, 0x17, 0x49, 0x5d, 0x5a, 0x79, 0x0b, 0x9d, 0xc2, 0x57, 0x51, 0x41,
- 0xaf, 0xbf, 0x55, 0x72, 0xd6, 0x7d, 0xb2, 0x84, 0xd6, 0xe4, 0x93, 0xd6, 0x63, 0xad, 0x91, 0xdf,
- 0x7a, 0xbc, 0x2b, 0x7e, 0xa6, 0x33, 0xc9, 0xb5, 0xe9, 0xd8, 0x96, 0x19, 0x92, 0x33, 0x2b, 0x78,
- 0x58, 0xd1, 0x1d, 0x7f, 0xf7, 0x87, 0x6f, 0xa7, 0x76, 0x78, 0xb5, 0xb8, 0x38, 0x9a, 0x78, 0x33,
- 0xf6, 0xdf, 0xfd, 0xc4, 0xf3, 0x2d, 0xfe, 0x67, 0x7f, 0xf2, 0xb7, 0xff, 0xc5, 0x26, 0xfb, 0xaf,
- 0xfe, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb6, 0xf0, 0x65, 0x56, 0x0a, 0x18, 0x00, 0x00,
+ 0xa1, 0xe4, 0x20, 0xed, 0x85, 0x40, 0x93, 0x63, 0x99, 0x28, 0x45, 0x2a, 0x24, 0x65, 0xd7, 0x0f,
+ 0xd0, 0x67, 0xe8, 0xe5, 0x02, 0x7d, 0x80, 0xbe, 0x47, 0xef, 0x7a, 0x5f, 0xa0, 0x77, 0x7d, 0x8e,
+ 0x16, 0x33, 0x1c, 0x52, 0xa4, 0x24, 0x3b, 0xce, 0x55, 0x6f, 0x0c, 0x9e, 0xef, 0xfc, 0xcc, 0x99,
+ 0xf3, 0x33, 0x73, 0x46, 0x86, 0x1d, 0x73, 0xe6, 0xbc, 0xbc, 0xb8, 0x08, 0x9d, 0x69, 0xfc, 0xf7,
+ 0x68, 0x16, 0xf8, 0x91, 0x8f, 0x2a, 0x8c, 0xd8, 0x7b, 0x72, 0xed, 0xbb, 0xd1, 0x95, 0x39, 0x66,
+ 0x60, 0xf8, 0xd2, 0x9f, 0x11, 0xcf, 0x77, 0xa3, 0x58, 0x66, 0xef, 0x20, 0xcf, 0x8c, 0x88, 0x75,
+ 0x45, 0xbf, 0x2f, 0x1d, 0x97, 0xc4, 0x12, 0xd2, 0x7f, 0x8b, 0x50, 0xd5, 0x35, 0x55, 0xf7, 0x83,
+ 0x08, 0xb5, 0xa0, 0xa8, 0xf4, 0xc4, 0xc2, 0x41, 0xe1, 0xb0, 0x82, 0x8b, 0x4a, 0x0f, 0xed, 0x43,
+ 0x5d, 0x9b, 0x91, 0xc0, 0x88, 0xcc, 0x88, 0x88, 0xc5, 0x83, 0xc2, 0x61, 0x1d, 0x2f, 0x00, 0xf4,
+ 0x0c, 0x9a, 0x8a, 0x17, 0x91, 0xc0, 0x33, 0xdd, 0x58, 0xa2, 0xc4, 0x24, 0xf2, 0x20, 0x3a, 0x80,
+ 0x86, 0x6e, 0x5a, 0x7f, 0x22, 0x51, 0xd7, 0x9f, 0x7b, 0x91, 0x58, 0x3e, 0x28, 0x1c, 0x96, 0x71,
+ 0x16, 0x42, 0x27, 0xd0, 0xee, 0xb8, 0xae, 0x6f, 0x99, 0x11, 0xb1, 0x35, 0x6f, 0xae, 0xd8, 0xa1,
+ 0x58, 0x39, 0x28, 0x1d, 0x36, 0x5e, 0xef, 0x1f, 0xc5, 0xdb, 0xd5, 0x7d, 0x2f, 0x15, 0xc0, 0x24,
+ 0xf4, 0xe7, 0x81, 0x45, 0x42, 0xbc, 0xac, 0x84, 0x7e, 0x85, 0xed, 0x14, 0xea, 0x93, 0x29, 0xdd,
+ 0x51, 0x28, 0x6e, 0x3e, 0xc0, 0xd2, 0xaa, 0x5a, 0xce, 0x16, 0xfb, 0xa0, 0x5e, 0x55, 0xbf, 0xc8,
+ 0x56, 0xa2, 0x86, 0xbe, 0x01, 0x18, 0x12, 0xeb, 0xca, 0xf3, 0x5d, 0x7f, 0x72, 0x2b, 0xd6, 0x58,
+ 0x90, 0x32, 0x88, 0x74, 0x0a, 0x3b, 0x6b, 0x6d, 0x21, 0x09, 0xb6, 0x0c, 0x12, 0x38, 0xa6, 0xab,
+ 0xce, 0xa7, 0x17, 0x24, 0x60, 0x89, 0xa9, 0xe3, 0x1c, 0xc6, 0x52, 0x66, 0xb3, 0xdc, 0xd0, 0x94,
+ 0xd9, 0xd2, 0xef, 0xa1, 0xaa, 0xaa, 0xca, 0x97, 0x67, 0x53, 0xfa, 0x4f, 0x01, 0x4a, 0x9a, 0xbb,
+ 0xaa, 0xb5, 0xec, 0x44, 0x71, 0x8d, 0x13, 0x39, 0xcb, 0xa5, 0xcf, 0xd6, 0x49, 0x79, 0x5d, 0x9d,
+ 0xd0, 0x75, 0x75, 0xb1, 0xca, 0x58, 0x45, 0x45, 0x47, 0x2f, 0xa0, 0xc6, 0x37, 0x92, 0x94, 0x43,
+ 0x8b, 0x07, 0x9e, 0xc3, 0x38, 0xe5, 0x53, 0x59, 0x5e, 0xc2, 0x49, 0xc2, 0x13, 0x59, 0x0e, 0xe3,
+ 0x94, 0x2f, 0xfd, 0xa5, 0x00, 0xa2, 0xe6, 0x46, 0x2b, 0xe1, 0x1e, 0xde, 0xce, 0x08, 0x7a, 0x0b,
+ 0xe5, 0xe8, 0x76, 0x46, 0xd8, 0xf6, 0x5b, 0xaf, 0x9f, 0x71, 0x23, 0x77, 0x89, 0x1f, 0xd1, 0x3f,
+ 0x98, 0x69, 0x48, 0x2f, 0xa1, 0xcc, 0x2c, 0x34, 0xa0, 0x3a, 0x52, 0x4f, 0x55, 0xed, 0x83, 0x2a,
+ 0x6c, 0xa0, 0x2d, 0xa8, 0x75, 0x06, 0x03, 0xad, 0x3b, 0x56, 0x7a, 0x42, 0x81, 0x52, 0x7d, 0xf9,
+ 0x6c, 0xac, 0x6b, 0x78, 0x28, 0x14, 0xa5, 0xbf, 0x17, 0xe0, 0xf1, 0x3a, 0xc3, 0x08, 0xc5, 0x96,
+ 0x78, 0xb6, 0x63, 0xab, 0xfb, 0x50, 0xd7, 0x7d, 0x8f, 0x6e, 0x80, 0x27, 0xbb, 0x89, 0x17, 0x00,
+ 0x7a, 0x0c, 0x15, 0xd6, 0x02, 0x2c, 0xf4, 0x4d, 0x1c, 0x13, 0x68, 0x17, 0x36, 0x29, 0x5f, 0xf5,
+ 0x59, 0xbc, 0x9b, 0x98, 0x53, 0xb4, 0x1c, 0x93, 0xb5, 0x14, 0x5b, 0xac, 0xb0, 0x44, 0x67, 0x10,
+ 0xaa, 0x77, 0xe2, 0xfa, 0x37, 0x8a, 0x2d, 0x6e, 0xb2, 0x5e, 0xe5, 0x94, 0x84, 0x61, 0x67, 0x9d,
+ 0xbf, 0x21, 0x7a, 0x07, 0xf5, 0x20, 0x21, 0xc4, 0x02, 0x0b, 0xff, 0x93, 0x7b, 0x22, 0x87, 0x17,
+ 0xd2, 0xd2, 0x6f, 0x65, 0x28, 0x69, 0xea, 0xe8, 0xff, 0x56, 0x74, 0x99, 0xb8, 0xf6, 0x78, 0x28,
+ 0x16, 0x00, 0x3a, 0x80, 0xfa, 0xfb, 0x9b, 0x8e, 0x6d, 0x07, 0x24, 0x0c, 0xe3, 0xbe, 0x3d, 0x2e,
+ 0x8a, 0x05, 0xbc, 0x00, 0xd1, 0x5e, 0x1a, 0xe3, 0x3a, 0x55, 0x66, 0xec, 0x24, 0xce, 0x47, 0x50,
+ 0x0b, 0x49, 0x70, 0xed, 0xd0, 0xa8, 0x40, 0xae, 0x28, 0x8d, 0x18, 0x66, 0xd2, 0xa9, 0x0c, 0xea,
+ 0xc1, 0xd7, 0xca, 0xd4, 0x9c, 0x10, 0xc3, 0xbf, 0x8c, 0x6e, 0xcc, 0x80, 0xc8, 0x7f, 0x9e, 0x11,
+ 0x2b, 0x22, 0xb6, 0x41, 0xac, 0xc8, 0xf1, 0xbd, 0x50, 0x6c, 0x30, 0xff, 0xee, 0x17, 0x5a, 0xb1,
+ 0x82, 0x89, 0x45, 0x9c, 0xeb, 0x8c, 0x95, 0xad, 0x35, 0x56, 0x96, 0x85, 0xd0, 0x4f, 0xf0, 0xa8,
+ 0x63, 0x45, 0xce, 0x35, 0x61, 0x62, 0xb2, 0x17, 0x39, 0xd1, 0xad, 0x62, 0x8b, 0x4d, 0xa6, 0xbb,
+ 0x8e, 0x85, 0x7e, 0x81, 0xdd, 0xae, 0x3f, 0x9d, 0x3a, 0x51, 0x44, 0xec, 0xbc, 0x52, 0x8b, 0x29,
+ 0xdd, 0xc1, 0x45, 0xdf, 0x40, 0x79, 0xee, 0x39, 0xa1, 0xd8, 0x66, 0x11, 0x02, 0x1e, 0xa1, 0x91,
+ 0xaa, 0x60, 0x86, 0x4b, 0xff, 0x2a, 0x40, 0x69, 0xa4, 0x2a, 0x2b, 0x15, 0xc2, 0x6b, 0xbe, 0xc7,
+ 0x8f, 0xbe, 0x98, 0xe0, 0xa8, 0xe1, 0xf1, 0x7a, 0x88, 0x09, 0xda, 0x51, 0x67, 0x44, 0xe9, 0xf1,
+ 0x3e, 0x60, 0xdf, 0xf9, 0xea, 0xa9, 0x2c, 0x57, 0xcf, 0xa2, 0x77, 0x36, 0x99, 0xf9, 0x24, 0xa7,
+ 0x2f, 0x32, 0x39, 0xad, 0xae, 0xcb, 0x69, 0x26, 0x9f, 0x12, 0xef, 0xe3, 0x1a, 0x3b, 0x4b, 0x12,
+ 0xb9, 0x91, 0xe7, 0xc4, 0xa7, 0x06, 0xfd, 0x2b, 0xfd, 0xa3, 0x02, 0x55, 0xae, 0x49, 0xbd, 0x54,
+ 0xcd, 0x69, 0xda, 0xf7, 0xf4, 0x9b, 0x7a, 0xb9, 0xa8, 0x40, 0x7e, 0x64, 0x2f, 0xaa, 0xef, 0xce,
+ 0xdd, 0x1a, 0x43, 0x73, 0xc2, 0x76, 0x5b, 0xc1, 0xec, 0x9b, 0x62, 0x5d, 0x8a, 0xc5, 0x25, 0xce,
+ 0xbe, 0xe9, 0x39, 0xa0, 0x12, 0x62, 0x87, 0xb2, 0x39, 0xf3, 0x5d, 0xb6, 0xcf, 0x1a, 0xce, 0x20,
+ 0x74, 0x6d, 0x46, 0xf5, 0xae, 0xac, 0x19, 0x3b, 0x97, 0x6b, 0x78, 0x01, 0xa4, 0x5c, 0x65, 0x32,
+ 0x9d, 0xb1, 0x2d, 0x26, 0x5c, 0x0a, 0x20, 0x11, 0xaa, 0xfc, 0x2a, 0x8d, 0x1b, 0x03, 0x27, 0x24,
+ 0x5d, 0x95, 0x99, 0x8f, 0x03, 0x0f, 0xf1, 0x65, 0xb8, 0x40, 0xa8, 0x5d, 0x6a, 0x3f, 0x66, 0x37,
+ 0xe2, 0x1d, 0xa7, 0xc0, 0x6a, 0x57, 0x6f, 0xdd, 0xd1, 0xd5, 0x4a, 0xff, 0x4c, 0x8f, 0x25, 0x9a,
+ 0xb1, 0x8d, 0x14, 0xa0, 0x51, 0x1b, 0x79, 0x0e, 0x2f, 0xcc, 0x26, 0x8e, 0x09, 0x3a, 0xa6, 0xd0,
+ 0xd4, 0x98, 0x93, 0x33, 0x33, 0xb2, 0xae, 0xc4, 0x36, 0xf3, 0x3a, 0x0b, 0xa1, 0xef, 0xa1, 0x35,
+ 0x0a, 0x69, 0xe4, 0xf4, 0xc0, 0xf1, 0x03, 0x27, 0xba, 0x15, 0x05, 0x66, 0x60, 0x09, 0x8d, 0xe5,
+ 0x8c, 0xac, 0xdc, 0x76, 0x22, 0x67, 0x2c, 0xc9, 0xf5, 0xf2, 0xf6, 0x50, 0x2c, 0xd7, 0x5b, 0xb1,
+ 0xd7, 0xcb, 0xdb, 0x7b, 0x94, 0xc8, 0xe5, 0xec, 0x25, 0xf9, 0xd4, 0x75, 0xdd, 0x97, 0xc5, 0xc7,
+ 0x99, 0x7c, 0x32, 0x84, 0xf6, 0x74, 0xd7, 0xf7, 0x2e, 0x9d, 0xc9, 0x3c, 0x20, 0x67, 0xa6, 0x95,
+ 0x54, 0xd5, 0x0e, 0x13, 0x5c, 0xc7, 0x42, 0x3f, 0xc0, 0xb6, 0xec, 0x99, 0x17, 0x2e, 0xc5, 0x06,
+ 0xc4, 0x0c, 0x3c, 0xc7, 0x9b, 0x88, 0xbb, 0x4c, 0x7e, 0x95, 0x21, 0x99, 0xf0, 0x58, 0x53, 0x47,
+ 0xc3, 0xc0, 0xbc, 0xbc, 0x74, 0x2c, 0xc3, 0xba, 0x22, 0xf6, 0xdc, 0x25, 0x41, 0x88, 0x14, 0x68,
+ 0x47, 0x14, 0x5c, 0x40, 0xac, 0xc4, 0x1b, 0xaf, 0x9f, 0x1e, 0xe5, 0xc6, 0xd1, 0x15, 0x4d, 0xbc,
+ 0xac, 0x27, 0x1d, 0x42, 0x59, 0x53, 0x47, 0x21, 0x3a, 0x80, 0x8a, 0x13, 0x91, 0x69, 0x72, 0xdb,
+ 0x24, 0xa7, 0x86, 0xa6, 0x8e, 0x70, 0xcc, 0x90, 0x7e, 0x82, 0x9a, 0x91, 0x34, 0xe2, 0xb3, 0xbc,
+ 0xf4, 0x72, 0xc7, 0x72, 0x8d, 0x43, 0x28, 0x8f, 0x54, 0xe5, 0x4e, 0xdb, 0xf4, 0x44, 0x4a, 0x6d,
+ 0x03, 0x5d, 0x89, 0x7c, 0x9a, 0x93, 0x30, 0x7a, 0xc8, 0x90, 0x26, 0xbd, 0x00, 0xd0, 0x35, 0x35,
+ 0xd1, 0xc8, 0x5d, 0xe6, 0x85, 0xa5, 0xcb, 0x5c, 0x1a, 0x00, 0xd0, 0xb5, 0xb8, 0xec, 0x21, 0xb4,
+ 0x69, 0x57, 0xaf, 0x2e, 0xb0, 0x0c, 0x27, 0x65, 0xdd, 0xe3, 0xc7, 0x44, 0x4c, 0x48, 0xff, 0x2e,
+ 0x41, 0xbd, 0xe3, 0x9a, 0xc1, 0x94, 0x1d, 0x37, 0xff, 0x2c, 0x41, 0x85, 0x7e, 0x84, 0xa8, 0x0a,
+ 0xa5, 0x81, 0x66, 0x08, 0x1b, 0xa8, 0x05, 0xd0, 0xfb, 0xa8, 0xa8, 0xfd, 0x71, 0xbf, 0x63, 0xe8,
+ 0x42, 0x01, 0x35, 0xa1, 0xae, 0xa9, 0xa3, 0x71, 0x67, 0xd0, 0xc1, 0x67, 0x42, 0x11, 0x7d, 0x05,
+ 0x8f, 0x28, 0x69, 0x0c, 0x3b, 0x78, 0x38, 0xd2, 0xc7, 0x27, 0x1d, 0x65, 0x30, 0xc2, 0xb2, 0x50,
+ 0x42, 0xbb, 0x80, 0x18, 0x43, 0xe9, 0xab, 0x9d, 0xc1, 0xb8, 0x27, 0xf7, 0x71, 0xa7, 0x27, 0x0b,
+ 0xe5, 0x44, 0xa1, 0x87, 0x95, 0x93, 0xe1, 0x58, 0x3b, 0x19, 0x7f, 0x50, 0xd4, 0x9e, 0xf6, 0x41,
+ 0xa8, 0xa0, 0x7d, 0x10, 0x29, 0x63, 0xa0, 0x19, 0x06, 0xc5, 0xb5, 0xb3, 0xae, 0x32, 0xee, 0xbe,
+ 0xef, 0xa8, 0xaa, 0x3c, 0x10, 0x36, 0xd3, 0x75, 0x98, 0x39, 0x23, 0x5d, 0xa7, 0x8a, 0x9e, 0xc3,
+ 0x77, 0x94, 0x31, 0xc4, 0x1d, 0xd5, 0x38, 0x53, 0x0c, 0x43, 0xd1, 0xd4, 0xb1, 0xa2, 0x0e, 0x65,
+ 0x7c, 0x22, 0x63, 0x59, 0xed, 0xca, 0xe3, 0x0f, 0x1d, 0xac, 0x2a, 0x6a, 0x5f, 0xa8, 0xa1, 0x3d,
+ 0xd8, 0x65, 0xae, 0x77, 0x87, 0xca, 0x79, 0x67, 0x48, 0x05, 0x13, 0x33, 0x75, 0x24, 0xb2, 0xe2,
+ 0x1c, 0xeb, 0x58, 0xeb, 0xca, 0x86, 0x41, 0xf7, 0x2b, 0x63, 0xac, 0x61, 0x01, 0xd0, 0x01, 0xec,
+ 0x67, 0xfd, 0x3a, 0x95, 0x3f, 0x8e, 0x8d, 0x8f, 0x6a, 0x37, 0xd5, 0x6d, 0xa0, 0x1d, 0xd8, 0xa6,
+ 0x12, 0xca, 0x70, 0x34, 0xd6, 0x35, 0x95, 0xc6, 0x62, 0x68, 0x08, 0x5b, 0x68, 0x1b, 0x9a, 0x69,
+ 0xa4, 0xa8, 0xba, 0xd0, 0x5c, 0x86, 0x8e, 0x85, 0x56, 0xb2, 0xb1, 0x04, 0xd2, 0xbb, 0x63, 0xba,
+ 0x0b, 0xa1, 0x9d, 0xc4, 0x23, 0xc7, 0xe8, 0x72, 0xaf, 0x04, 0x84, 0xa0, 0x95, 0xe5, 0x9e, 0x28,
+ 0xc2, 0x36, 0x7a, 0x04, 0xed, 0x2c, 0xd6, 0x39, 0x53, 0x04, 0x24, 0xbd, 0x85, 0x16, 0xcb, 0xaf,
+ 0x6e, 0x06, 0xe6, 0x94, 0x44, 0x24, 0x40, 0x02, 0x94, 0x4e, 0xc9, 0x2d, 0x2f, 0x13, 0xfa, 0x49,
+ 0x4b, 0xe3, 0xdc, 0x74, 0xe7, 0xc9, 0xd0, 0x1f, 0x13, 0xd2, 0xdf, 0x0a, 0xcc, 0x1e, 0xd3, 0xce,
+ 0x94, 0x66, 0x5a, 0x2d, 0xdc, 0xc2, 0x02, 0x78, 0xd0, 0x54, 0xb6, 0x0b, 0x9b, 0xf4, 0x98, 0x9d,
+ 0x87, 0xfc, 0x52, 0xe2, 0x14, 0xfa, 0x19, 0x20, 0x75, 0x31, 0x14, 0xcb, 0xac, 0xb7, 0x76, 0x78,
+ 0x6f, 0xe5, 0x37, 0x80, 0x33, 0x82, 0xd2, 0x27, 0x68, 0x6b, 0x83, 0x61, 0xce, 0xc7, 0x03, 0x68,
+ 0xb0, 0xe3, 0xfe, 0xd2, 0xb4, 0x08, 0x1f, 0x09, 0x9a, 0x38, 0x0b, 0xa5, 0xb7, 0x04, 0x25, 0xd9,
+ 0x4e, 0x8a, 0x99, 0x5b, 0x22, 0x01, 0xef, 0xf2, 0x94, 0x3e, 0x10, 0x9a, 0xe7, 0x24, 0x08, 0x1d,
+ 0xdf, 0xe3, 0x7b, 0x12, 0xa1, 0x7a, 0x1d, 0x03, 0x3c, 0x26, 0x09, 0x49, 0xe3, 0x75, 0x31, 0x77,
+ 0x5c, 0x7b, 0xe8, 0x4c, 0xd3, 0x27, 0x55, 0x0a, 0xd0, 0x13, 0xd9, 0x62, 0x53, 0xcf, 0x7b, 0x33,
+ 0xbc, 0xe2, 0xab, 0x64, 0x10, 0xaa, 0x3d, 0x71, 0x22, 0xee, 0x44, 0x3c, 0x9f, 0x2e, 0x00, 0xe9,
+ 0x2d, 0xd4, 0x06, 0xfe, 0x64, 0x40, 0xae, 0x89, 0x4b, 0x33, 0xe8, 0xd2, 0x0f, 0xbe, 0x7e, 0x4c,
+ 0xd0, 0x1d, 0x58, 0xa6, 0xeb, 0xf2, 0x4c, 0xd4, 0x30, 0xa7, 0x24, 0x19, 0x6a, 0x98, 0x84, 0x33,
+ 0xdf, 0x0b, 0x09, 0x7a, 0x0a, 0x8d, 0x90, 0xd9, 0x1b, 0x5b, 0xbe, 0x4d, 0xf8, 0x00, 0x05, 0x31,
+ 0xd4, 0xf5, 0x6d, 0x42, 0x37, 0x37, 0x25, 0x61, 0x68, 0x4e, 0x92, 0x0d, 0x24, 0xa4, 0xf4, 0xd7,
+ 0x02, 0x34, 0xe8, 0x6d, 0x9e, 0x04, 0xfe, 0x39, 0x6c, 0x6a, 0xde, 0x1c, 0x93, 0x4f, 0xfc, 0xfc,
+ 0xde, 0xce, 0x1c, 0xbb, 0xb1, 0x08, 0xe6, 0x02, 0xe8, 0x1d, 0x6c, 0x19, 0xf3, 0x8b, 0x0e, 0x9b,
+ 0x26, 0xcf, 0x4d, 0x97, 0x59, 0x6e, 0xa5, 0xf9, 0x4e, 0x59, 0xec, 0x2c, 0xc2, 0x39, 0x51, 0x5a,
+ 0x64, 0xfd, 0xc0, 0x9f, 0xcf, 0x92, 0xfb, 0x29, 0x0e, 0x5b, 0x0e, 0x93, 0x4e, 0xa1, 0x42, 0x1f,
+ 0x25, 0x21, 0xfa, 0x1a, 0xe0, 0xd2, 0xf5, 0x6f, 0xc6, 0x16, 0xfb, 0x6d, 0x81, 0x9f, 0xa5, 0x14,
+ 0x89, 0x7f, 0x59, 0xf8, 0x16, 0x2a, 0x94, 0xa0, 0xa3, 0x13, 0xad, 0xb7, 0xe6, 0x51, 0xf2, 0xe3,
+ 0x08, 0xd5, 0xc6, 0x31, 0x4f, 0x7a, 0x0a, 0x55, 0x9a, 0x2d, 0x7f, 0x1e, 0xd1, 0x30, 0xdb, 0xc4,
+ 0x35, 0x6f, 0xb9, 0xa5, 0x98, 0x90, 0xaa, 0x50, 0x91, 0xa7, 0xb3, 0xe8, 0xf6, 0xc5, 0x3e, 0x54,
+ 0xf9, 0xf8, 0x46, 0xcf, 0x4f, 0x79, 0xf8, 0x5e, 0xd8, 0x40, 0x35, 0x28, 0xeb, 0xda, 0xd0, 0x10,
+ 0x0a, 0x2f, 0x5e, 0x41, 0x2b, 0xbf, 0x31, 0xca, 0xfb, 0x55, 0x53, 0xe8, 0x43, 0xb0, 0x0e, 0x95,
+ 0x81, 0xdc, 0x39, 0x97, 0x85, 0x02, 0x02, 0xd8, 0xa4, 0xe0, 0xf9, 0x1b, 0xa1, 0xf8, 0xfa, 0xb7,
+ 0x2d, 0xa8, 0x1c, 0x1f, 0x1b, 0xce, 0x14, 0xbd, 0x84, 0x2a, 0xaf, 0x39, 0xb4, 0xc5, 0xa3, 0xc4,
+ 0xd6, 0xdc, 0x7b, 0xcc, 0xa9, 0x5c, 0x45, 0x4a, 0x1b, 0xe8, 0x15, 0x34, 0x0c, 0x12, 0xa5, 0x05,
+ 0xd2, 0xe6, 0x62, 0x09, 0xb0, 0xb7, 0x0c, 0x48, 0x1b, 0xe8, 0x19, 0x6c, 0xf6, 0x49, 0x44, 0xdf,
+ 0xf8, 0xf9, 0x25, 0x60, 0xf1, 0x58, 0x93, 0x36, 0xd0, 0x1f, 0x41, 0x8c, 0xa5, 0xd6, 0xbc, 0xf4,
+ 0x9e, 0x7e, 0xe6, 0x41, 0xbc, 0xb7, 0x7f, 0x8f, 0x40, 0x28, 0x6d, 0xa0, 0x1f, 0x01, 0x74, 0xff,
+ 0x86, 0x04, 0xbe, 0xb7, 0xea, 0x46, 0xe2, 0x71, 0x52, 0xba, 0xd2, 0x06, 0x3a, 0x82, 0x86, 0x71,
+ 0x35, 0x8f, 0x6c, 0xff, 0xe6, 0x61, 0xf2, 0x3f, 0x40, 0x1d, 0x93, 0x0b, 0xdf, 0x8f, 0x1e, 0x24,
+ 0x4d, 0x13, 0x16, 0xf9, 0xb3, 0x09, 0xd6, 0xbb, 0x74, 0x16, 0x20, 0xc1, 0xe7, 0x55, 0x5e, 0x43,
+ 0xdb, 0x88, 0xcc, 0x20, 0xfa, 0x12, 0x9d, 0x5f, 0x60, 0x1b, 0x93, 0x70, 0x49, 0x2b, 0x19, 0x42,
+ 0x78, 0xe5, 0xad, 0xd3, 0x7b, 0x1e, 0xa7, 0x4b, 0x1d, 0xa1, 0xd5, 0x46, 0xdb, 0xcb, 0x8c, 0x3c,
+ 0xd2, 0x06, 0xfa, 0x9e, 0x8e, 0xdb, 0x11, 0x1b, 0x8d, 0xf2, 0xee, 0x34, 0x16, 0x62, 0x34, 0xfc,
+ 0x6f, 0xa0, 0xd1, 0x27, 0x51, 0x3a, 0x18, 0x6d, 0x67, 0x66, 0x1b, 0x6e, 0xb7, 0x9d, 0x1f, 0x8e,
+ 0x42, 0x96, 0x04, 0xa0, 0xc6, 0xbd, 0xf9, 0xc8, 0x73, 0xc2, 0x75, 0xbe, 0x34, 0x16, 0x66, 0xf8,
+ 0x22, 0x69, 0xd2, 0xd6, 0x3b, 0x7f, 0x47, 0x60, 0xb9, 0x52, 0xc7, 0x75, 0xd7, 0xec, 0x64, 0x8d,
+ 0xce, 0x3b, 0xd8, 0xce, 0x2c, 0x14, 0x6a, 0x9e, 0xae, 0xa9, 0xe9, 0x72, 0x8b, 0x79, 0x6b, 0xfd,
+ 0x72, 0x69, 0x1d, 0x3e, 0xd8, 0xc5, 0x57, 0xd0, 0xe2, 0x3a, 0x0f, 0xf6, 0xf0, 0x2d, 0x08, 0x8b,
+ 0x65, 0xbe, 0xc8, 0xc1, 0xdf, 0xc1, 0x16, 0x2f, 0x9a, 0xf8, 0x31, 0x76, 0x4f, 0xaa, 0x32, 0x5a,
+ 0x6f, 0xa0, 0xc1, 0xb5, 0xd8, 0x1b, 0xed, 0x61, 0x4a, 0xc7, 0xb0, 0x63, 0xb0, 0xfc, 0xb2, 0x5b,
+ 0x56, 0xf1, 0x6c, 0xc7, 0x32, 0xe9, 0x19, 0x86, 0x76, 0x17, 0x61, 0xc9, 0x5e, 0xc0, 0xf7, 0xd8,
+ 0xa0, 0x5d, 0x7f, 0x87, 0x8d, 0xfc, 0x25, 0xbe, 0xce, 0xc6, 0x8f, 0x50, 0xeb, 0x93, 0x28, 0x3e,
+ 0xd7, 0xd7, 0x64, 0x24, 0x09, 0x36, 0x13, 0x60, 0xb1, 0x6d, 0x77, 0xaf, 0x4c, 0x6f, 0x42, 0xe8,
+ 0x15, 0x15, 0xbf, 0xec, 0x10, 0x17, 0xc9, 0x5c, 0x5a, 0xeb, 0x16, 0x3a, 0x85, 0xaf, 0xe2, 0x82,
+ 0x5e, 0x7d, 0xab, 0xac, 0x59, 0xf7, 0xc9, 0x02, 0x5a, 0x91, 0x4f, 0x5b, 0x8f, 0xb5, 0xc6, 0xfa,
+ 0xd6, 0xe3, 0x5d, 0xf1, 0x33, 0x9d, 0x49, 0xae, 0x4d, 0xd7, 0xb1, 0xcd, 0x88, 0x9c, 0xd9, 0xe1,
+ 0xc3, 0x8a, 0xee, 0xf8, 0xbb, 0x3f, 0x7c, 0x3b, 0x71, 0xa2, 0xab, 0xf9, 0xc5, 0x91, 0xe5, 0x4f,
+ 0xd9, 0x6f, 0xfb, 0x96, 0x1f, 0xd8, 0xfc, 0x9f, 0x01, 0xe9, 0xbf, 0x05, 0x2e, 0x36, 0xd9, 0x6f,
+ 0xf9, 0x6f, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x64, 0x8c, 0x7f, 0x2a, 0x18, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/api/bbsim/bbsim.proto b/api/bbsim/bbsim.proto
index d990566..8f0ce27 100644
--- a/api/bbsim/bbsim.proto
+++ b/api/bbsim/bbsim.proto
@@ -32,6 +32,7 @@
// these are the stored resource IDs as reported via OMCI
repeated PonAllocatedResources AllocatedGemPorts = 6;
repeated PonAllocatedResources AllocatedAllocIds = 7;
+ string Technology = 8;
}
message PonAllocatedResources {
diff --git a/cmd/bbsim/bbsim.go b/cmd/bbsim/bbsim.go
index 23a00ef..b51ff86 100644
--- a/cmd/bbsim/bbsim.go
+++ b/cmd/bbsim/bbsim.go
@@ -150,6 +150,7 @@
"NumNniPerOlt": common.Config.Olt.NniPorts,
"NumPonPerOlt": common.Config.Olt.PonPorts,
"NumOnuPerPon": common.Config.Olt.OnusPonPort,
+ "PonConfiguration": *common.PonsConfig,
"TotalOnus": common.Config.Olt.PonPorts * common.Config.Olt.OnusPonPort,
"Delay": common.Config.BBSim.Delay,
"Events": common.Config.BBSim.Events,
diff --git a/configs/bbsim.yaml b/configs/bbsim.yaml
index 5d0dfcb..1c55084 100644
--- a/configs/bbsim.yaml
+++ b/configs/bbsim.yaml
@@ -36,14 +36,13 @@
nni_ports: 1
uni_ports: 4
onus_per_port: 1
- technology: "XGS-PON"
id: 0 # OLT-ID of the device
reboot_delay: 10 # reboot delay in seconds
# firmware_version: ""
# device_id: 0a:0a:0a:0a:0a:<id>
port_stats_interval: 20 # in seconds
# omci_response_rate: 10
-
+
# BBR settings
bbr:
log: bbr.log
diff --git a/configs/pon-interfaces.yaml b/configs/pon-interfaces.yaml
new file mode 100644
index 0000000..809ed0d
--- /dev/null
+++ b/configs/pon-interfaces.yaml
@@ -0,0 +1,17 @@
+---
+num_pon_ports: 16
+ranges:
+ -
+ pon_id_range:
+ start: 0
+ end: 15
+ tech: "XGS-PON"
+ onu_id_range:
+ start: 1
+ end: 255
+ alloc_id_range:
+ start: 256
+ end: 1024
+ gemport_id_range:
+ start: 256
+ end: 1024
\ No newline at end of file
diff --git a/docs/source/bbsim_config.rst b/docs/source/bbsim_config.rst
index 240ddaa..78146f9 100644
--- a/docs/source/bbsim_config.rst
+++ b/docs/source/bbsim_config.rst
@@ -57,6 +57,8 @@
IP address:port (default ":50060")
-pon int
Number of PON ports per OLT device to be emulated (default 1)
+ -pon_port_config_file string
+ Pon Interfaces Configuration file path
-pots int
Number of POTS UNI Ports per ONU device to be emulated (default 0)
-rest_api_address string
diff --git a/go.mod b/go.mod
index 9348881..5fe15a1 100644
--- a/go.mod
+++ b/go.mod
@@ -24,13 +24,13 @@
github.com/opencord/cordctl v0.0.0-20190909161711-01e9c1f04bf4
github.com/opencord/device-management-interface v1.2.1
github.com/opencord/omci-lib-go/v2 v2.2.0
- github.com/opencord/voltha-protos/v5 v5.2.1
+ github.com/opencord/voltha-protos/v5 v5.2.3
github.com/pkg/errors v0.8.1 // indirect
github.com/sirupsen/logrus v1.4.2
github.com/stretchr/testify v1.5.1
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
- google.golang.org/genproto v0.0.0-20211207154714-918901c715cf
- google.golang.org/grpc v1.42.0
+ google.golang.org/genproto v0.0.0-20220208230804-65c12eb4c068
+ google.golang.org/grpc v1.44.0
google.golang.org/protobuf v1.27.1
gopkg.in/yaml.v2 v2.3.0
gotest.tools v2.2.0+incompatible
diff --git a/go.sum b/go.sum
index 8eedb00..7172132 100644
--- a/go.sum
+++ b/go.sum
@@ -89,8 +89,8 @@
github.com/opencord/device-management-interface v1.2.1/go.mod h1:G1owSqGBGaqllrwtjxfLTsy9EDsGhdhmqkJM3XOnPD0=
github.com/opencord/omci-lib-go/v2 v2.2.0 h1:9eawwD1+oWHTzEv9Q/JeSN12N/3YSGKoj1dr2Pm434g=
github.com/opencord/omci-lib-go/v2 v2.2.0/go.mod h1:o1S/jhDLHNikFU7uG2TR5UOM5KmKlqwLlVncXi0FBYQ=
-github.com/opencord/voltha-protos/v5 v5.2.1 h1:ijIn+7Jl7vJ/m/f1mtlGvXAN7gps2k2DroeCN2gXUSM=
-github.com/opencord/voltha-protos/v5 v5.2.1/go.mod h1:dvz08S+JLdfjhFtd3Rf38DLeD9jQ6JO1+0K3NTdheRo=
+github.com/opencord/voltha-protos/v5 v5.2.3 h1:G16GLWL3augy9GQUraePumvin4SdTZc0WZAcCuSW/BU=
+github.com/opencord/voltha-protos/v5 v5.2.3/go.mod h1:ZGcyW79kQKIo7AySo1LRu613E6uiozixrCF0yNB/4x8=
github.com/pierrec/lz4 v2.4.1+incompatible h1:mFe7ttWaflA46Mhqh+jUfjp2qTbPYxLB2/OyBppH9dg=
github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
@@ -148,8 +148,8 @@
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20211207154714-918901c715cf h1:PSEM+IQFb9xdsj2CGhfqUTfsZvF8DScCVP1QZb2IiTQ=
-google.golang.org/genproto v0.0.0-20211207154714-918901c715cf/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20220208230804-65c12eb4c068 h1:pwzFiZfBTH/GjBWz1BcDwMBaHBo8mZvpLa7eBKJpFAk=
+google.golang.org/genproto v0.0.0-20220208230804-65c12eb4c068/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
diff --git a/internal/bbsim/api/grpc_api_server.go b/internal/bbsim/api/grpc_api_server.go
index c7d7e38..2500cdd 100644
--- a/internal/bbsim/api/grpc_api_server.go
+++ b/internal/bbsim/api/grpc_api_server.go
@@ -100,6 +100,7 @@
p := bbsim.PONPort{
ID: int32(pon.ID),
+ Technology: pon.Technology.String(),
OperState: pon.OperState.Current(),
InternalState: pon.InternalState.Current(),
PacketCount: pon.PacketCount,
diff --git a/internal/bbsim/devices/flows_test.go b/internal/bbsim/devices/flows_test.go
index 391b39e..512782a 100644
--- a/internal/bbsim/devices/flows_test.go
+++ b/internal/bbsim/devices/flows_test.go
@@ -42,6 +42,20 @@
},
}
+ allocIdPerOnu := uint32(common.Config.Olt.UniPorts * uint32(len(common.Services)))
+ common.PonsConfig = &common.PonPortsConfig{
+ Number: common.Config.Olt.PonPorts,
+ Ranges: []common.PonRangeConfig{
+ {
+ PonRange: common.IdRange{StartId: 0, EndId: common.Config.Olt.PonPorts - 1},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 1 + (common.Config.Olt.OnusPonPort - 1)},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1024 + (common.Config.Olt.OnusPonPort * allocIdPerOnu)},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + common.Config.Olt.OnusPonPort*allocIdPerOnu*8},
+ },
+ },
+ }
+
olt = CreateOLT(*common.Config, common.Services, true)
stream = &mockStream{
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 0a50d59..c9068bd 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -51,14 +51,6 @@
})
const (
- onuIdStart = 1
- allocIdStart = 1024
- gemPortIdPerAllocId = 8
- gemportIdStart = 1024
- // The flow ids are no more necessary by the adapter, but still need to pass something dummy. Pass a very small valid range.
- flowIdStart = 1
- flowIdEnd = flowIdStart + 1
-
//InternalState FSM states and transitions
OltInternalStateCreated = "created"
OltInternalStateInitialized = "initialized"
@@ -108,12 +100,6 @@
OpenoltStream openolt.Openolt_EnableIndicationServer
enablePerf bool
- // resource ranges (only the ones that depends on the topology size)
- onuIdEnd uint32
- allocIdPerOnu uint32
- allocIdEnd uint32
- gemportIdEnd uint32
-
// Allocated Resources
// this data are to verify that the openolt adapter does not duplicate resources
AllocIDsLock sync.RWMutex
@@ -165,12 +151,6 @@
OmciResponseRate: options.Olt.OmciResponseRate,
}
- // create the resource ranges based on the configuration
- olt.onuIdEnd = onuIdStart + (options.Olt.OnusPonPort - 1) // we need one ONU ID available per ONU, but the smaller the range the smaller the pool created in the openolt adapter
- olt.allocIdPerOnu = uint32(olt.NumUni * len(common.Services)) // 1 allocId per Service * UNI
- olt.allocIdEnd = allocIdStart + (options.Olt.OnusPonPort * olt.allocIdPerOnu) // 1 allocId per Service * UNI * ONU
- olt.gemportIdEnd = gemportIdStart + (options.Olt.OnusPonPort * olt.allocIdPerOnu * gemPortIdPerAllocId) // up to 8 gemport-id per tcont/alloc-id
-
if val, ok := ControlledActivationModes[options.BBSim.ControlledActivation]; ok {
olt.ControlledActivation = val
} else {
@@ -218,14 +198,38 @@
// create PON ports
for i := 0; i < olt.NumPon; i++ {
+ ponConf, err := common.GetPonConfigById(uint32(i))
+ if err != nil {
+ oltLogger.WithFields(log.Fields{
+ "Err": err,
+ "IntfId": i,
+ }).Fatal("cannot-get-pon-configuration")
+ }
+
+ tech, err := common.PonTechnologyFromString(ponConf.Technology)
+ if err != nil {
+ oltLogger.WithFields(log.Fields{
+ "Err": err,
+ "IntfId": i,
+ }).Fatal("unkown-pon-port-technology")
+ }
// initialize the resource maps for every PON Ports
olt.AllocIDs[uint32(i)] = make(map[uint32]map[uint32]map[int32]map[uint64]bool)
olt.GemPortIDs[uint32(i)] = make(map[uint32]map[uint32]map[int32]map[uint64]bool)
- p := CreatePonPort(&olt, uint32(i))
+ p := CreatePonPort(&olt, uint32(i), tech)
// create ONU devices
+ if (ponConf.OnuRange.EndId - ponConf.OnuRange.StartId + 1) < uint32(olt.NumOnuPerPon) {
+ oltLogger.WithFields(log.Fields{
+ "OnuRange": ponConf.OnuRange,
+ "RangeSize": ponConf.OnuRange.EndId - ponConf.OnuRange.StartId + 1,
+ "NumOnuPerPon": olt.NumOnuPerPon,
+ "IntfId": i,
+ }).Fatal("onus-per-pon-bigger-than-resource-range-size")
+ }
+
for j := 0; j < olt.NumOnuPerPon; j++ {
delay := time.Duration(olt.Delay*j) * time.Millisecond
o := CreateONU(&olt, p, uint32(j+1), delay, nextCtag, nextStag, isMock)
@@ -1278,62 +1282,48 @@
}
func (o *OltDevice) GetDeviceInfo(context.Context, *openolt.Empty) (*openolt.DeviceInfo, error) {
-
- intfIDs := []uint32{}
- for i := 0; i < o.NumPon; i++ {
- intfIDs = append(intfIDs, uint32(i))
- }
-
devinfo := &openolt.DeviceInfo{
Vendor: common.Config.Olt.Vendor,
Model: common.Config.Olt.Model,
HardwareVersion: common.Config.Olt.HardwareVersion,
FirmwareVersion: common.Config.Olt.FirmwareVersion,
- Technology: common.Config.Olt.Technology,
PonPorts: uint32(o.NumPon),
- OnuIdStart: onuIdStart,
- OnuIdEnd: o.onuIdEnd,
- AllocIdStart: allocIdStart,
- AllocIdEnd: o.allocIdEnd,
- GemportIdStart: gemportIdStart,
- GemportIdEnd: o.gemportIdEnd,
- FlowIdStart: flowIdStart,
- FlowIdEnd: flowIdEnd,
DeviceSerialNumber: o.SerialNumber,
DeviceId: common.Config.Olt.DeviceId,
PreviouslyConnected: o.PreviouslyConnected,
- Ranges: []*openolt.DeviceInfo_DeviceResourceRanges{
- {
- IntfIds: intfIDs,
- Technology: common.Config.Olt.Technology,
- Pools: []*openolt.DeviceInfo_DeviceResourceRanges_Pool{
- {
- Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID,
- Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF,
- Start: onuIdStart,
- End: o.onuIdEnd,
- },
- {
- Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID,
- Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF,
- Start: allocIdStart,
- End: o.allocIdEnd,
- },
- {
- Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID,
- Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF,
- Start: gemportIdStart,
- End: o.gemportIdEnd,
- },
- {
- Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID,
- Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH,
- Start: flowIdStart,
- End: flowIdEnd,
- },
+ Ranges: []*openolt.DeviceInfo_DeviceResourceRanges{},
+ }
+
+ for _, resRange := range common.PonsConfig.Ranges {
+ intfIDs := []uint32{}
+ for i := resRange.PonRange.StartId; i <= resRange.PonRange.EndId; i++ {
+ intfIDs = append(intfIDs, uint32(i))
+ }
+
+ devinfo.Ranges = append(devinfo.Ranges, &openolt.DeviceInfo_DeviceResourceRanges{
+ IntfIds: intfIDs,
+ Technology: resRange.Technology,
+ Pools: []*openolt.DeviceInfo_DeviceResourceRanges_Pool{
+ {
+ Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID,
+ Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF,
+ Start: resRange.OnuRange.StartId,
+ End: resRange.OnuRange.EndId,
+ },
+ {
+ Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID,
+ Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF,
+ Start: resRange.AllocIdRange.StartId,
+ End: resRange.AllocIdRange.EndId,
+ },
+ {
+ Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID,
+ Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF,
+ Start: resRange.GemportRange.StartId,
+ End: resRange.GemportRange.EndId,
},
},
- },
+ })
}
oltLogger.WithFields(log.Fields{
@@ -1341,16 +1331,7 @@
"Model": devinfo.Model,
"HardwareVersion": devinfo.HardwareVersion,
"FirmwareVersion": devinfo.FirmwareVersion,
- "Technology": devinfo.Technology,
"PonPorts": devinfo.PonPorts,
- "OnuIdStart": devinfo.OnuIdStart,
- "OnuIdEnd": devinfo.OnuIdEnd,
- "AllocIdStart": devinfo.AllocIdStart,
- "AllocIdEnd": devinfo.AllocIdEnd,
- "GemportIdStart": devinfo.GemportIdStart,
- "GemportIdEnd": devinfo.GemportIdEnd,
- "FlowIdStart": devinfo.FlowIdStart,
- "FlowIdEnd": devinfo.FlowIdEnd,
"DeviceSerialNumber": devinfo.DeviceSerialNumber,
"DeviceId": devinfo.DeviceId,
"PreviouslyConnected": devinfo.PreviouslyConnected,
diff --git a/internal/bbsim/devices/olt_test.go b/internal/bbsim/devices/olt_test.go
index e442d54..ee80e05 100644
--- a/internal/bbsim/devices/olt_test.go
+++ b/internal/bbsim/devices/olt_test.go
@@ -19,15 +19,16 @@
import (
"context"
"fmt"
+ "net"
+ "sync"
+ "testing"
+
"github.com/looplab/fsm"
"github.com/opencord/bbsim/internal/bbsim/types"
bbsim "github.com/opencord/bbsim/internal/bbsim/types"
"github.com/opencord/bbsim/internal/common"
"github.com/opencord/voltha-protos/v5/go/openolt"
"github.com/stretchr/testify/assert"
- "net"
- "sync"
- "testing"
)
func createMockOlt(numPon int, numOnu int, numUni int, services []ServiceIf) *OltDevice {
@@ -111,6 +112,20 @@
},
}
+ allocIdPerOnu := uint32(common.Config.Olt.UniPorts * uint32(len(common.Services)))
+ common.PonsConfig = &common.PonPortsConfig{
+ Number: common.Config.Olt.PonPorts,
+ Ranges: []common.PonRangeConfig{
+ {
+ PonRange: common.IdRange{StartId: 0, EndId: common.Config.Olt.PonPorts - 1},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 1 + (common.Config.Olt.OnusPonPort - 1)},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1024 + (common.Config.Olt.OnusPonPort * allocIdPerOnu)},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + common.Config.Olt.OnusPonPort*allocIdPerOnu*8},
+ },
+ },
+ }
+
olt := CreateOLT(*common.Config, common.Services, true)
assert.Equal(t, len(olt.Pons), int(common.Config.Olt.PonPorts))
@@ -191,21 +206,96 @@
},
}
+ common.PonsConfig = &common.PonPortsConfig{
+ Number: 16,
+ Ranges: []common.PonRangeConfig{
+ {
+ PonRange: common.IdRange{StartId: 0, EndId: 1},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1024 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 2, EndId: 2},
+ Technology: common.GPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 3, EndId: 3},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 4, EndId: 6},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 7, EndId: 8},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 9, EndId: 9},
+ Technology: common.GPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 10, EndId: 10},
+ Technology: common.GPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ {
+ PonRange: common.IdRange{StartId: 11, EndId: 15},
+ Technology: common.XGSPON.String(),
+ OnuRange: common.IdRange{StartId: 1, EndId: 4},
+ AllocIdRange: common.IdRange{StartId: 1024, EndId: 1028 + 4},
+ GemportRange: common.IdRange{StartId: 1024, EndId: 1024 + 32},
+ },
+ },
+ }
+
olt := CreateOLT(*common.Config, common.Services, true)
res, err := olt.GetDeviceInfo(context.Background(), &openolt.Empty{})
assert.NoError(t, err, "GetDeviceInfo returned error")
- fmt.Println(res)
- fmt.Println(res.OnuIdEnd - res.OnuIdStart + 1)
+ assert.Equal(t, len(res.Ranges), len(common.PonsConfig.Ranges))
- assert.Equal(t, onuIdStart+(onusPerPon-1), res.OnuIdEnd)
- assert.Equal(t, onuIdStart+(onusPerPon-1), res.Ranges[0].Pools[0].End)
- assert.Equal(t, onusPerPon, res.OnuIdEnd-res.OnuIdStart+1, "The ONU ID range size is different that the number of ONUs per PON")
+ for _, resRange := range res.Ranges {
+ for _, ponId := range resRange.IntfIds {
+ conf, err := common.GetPonConfigById(ponId)
+ assert.NoError(t, err, fmt.Sprintf("Cannot get pon configuration by id %d", ponId))
- assert.Equal(t, uint32(allocIdStart+(olt.NumOnuPerPon*olt.NumUni*len(common.Services))), res.AllocIdEnd)
- assert.Equal(t, uint32(gemportIdStart+(olt.NumOnuPerPon*olt.NumUni*len(common.Services))*gemPortIdPerAllocId), res.GemportIdEnd)
+ for _, pool := range resRange.Pools {
+ switch pool.Type {
+ case openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID:
+ assert.Equal(t, pool.Start, conf.OnuRange.StartId)
+ assert.Equal(t, pool.End, conf.OnuRange.EndId)
+ case openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID:
+ assert.Equal(t, pool.Start, conf.AllocIdRange.StartId)
+ assert.Equal(t, pool.End, conf.AllocIdRange.EndId)
+ case openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID:
+ assert.Equal(t, pool.Start, conf.GemportRange.StartId)
+ assert.Equal(t, pool.End, conf.GemportRange.EndId)
+ }
+ }
+ }
+ }
}
func Test_Olt_FindOnuBySn_Success(t *testing.T) {
diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index e6e4e58..b99d918 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -356,7 +356,7 @@
o.PotsPorts = append(o.PotsPorts, pots)
}
- mibDb, err := omcilib.GenerateMibDatabase(len(o.UniPorts), len(o.PotsPorts))
+ mibDb, err := omcilib.GenerateMibDatabase(len(o.UniPorts), len(o.PotsPorts), o.PonPort.Technology)
if err != nil {
onuLogger.WithFields(log.Fields{
"OnuId": o.ID,
diff --git a/internal/bbsim/devices/onu_test_helpers.go b/internal/bbsim/devices/onu_test_helpers.go
index ba04b57..287b3a9 100644
--- a/internal/bbsim/devices/onu_test_helpers.go
+++ b/internal/bbsim/devices/onu_test_helpers.go
@@ -19,11 +19,12 @@
import (
"context"
"errors"
+ "time"
+
bbsim_common "github.com/opencord/bbsim/internal/common"
omcilib "github.com/opencord/bbsim/internal/common/omci"
"github.com/opencord/voltha-protos/v5/go/extension"
log "github.com/sirupsen/logrus"
- "time"
"github.com/opencord/bbsim/internal/bbsim/types"
"github.com/opencord/voltha-protos/v5/go/ext/config"
@@ -183,7 +184,7 @@
OmciResponseRate: 10,
}
- pon := CreatePonPort(&olt, 1)
+ pon := CreatePonPort(&olt, 1, bbsim_common.XGSPON)
onu := CreateONU(&olt, pon, 1, time.Duration(1*time.Millisecond), nextCtag, nextStag, true)
// NOTE we need this in order to create the OnuChannel
diff --git a/internal/bbsim/devices/pon.go b/internal/bbsim/devices/pon.go
index c1b3257..068a250 100644
--- a/internal/bbsim/devices/pon.go
+++ b/internal/bbsim/devices/pon.go
@@ -22,6 +22,7 @@
"sync"
"github.com/looplab/fsm"
+ "github.com/opencord/bbsim/internal/common"
"github.com/opencord/voltha-protos/v5/go/openolt"
log "github.com/sirupsen/logrus"
)
@@ -44,6 +45,7 @@
type PonPort struct {
// BBSIM Internals
ID uint32
+ Technology common.PonTechnology
NumOnu int
Onus []*Onu
Olt *OltDevice
@@ -66,11 +68,11 @@
}
// CreatePonPort creates pon port object
-func CreatePonPort(olt *OltDevice, id uint32) *PonPort {
-
+func CreatePonPort(olt *OltDevice, id uint32, tech common.PonTechnology) *PonPort {
ponPort := PonPort{
NumOnu: olt.NumOnuPerPon,
ID: id,
+ Technology: tech,
Type: "pon",
Olt: olt,
Onus: []*Onu{},
diff --git a/internal/bbsim/dmiserver/dmi_hw_mgmt.go b/internal/bbsim/dmiserver/dmi_hw_mgmt.go
index 848ac21..9f4a6ee 100755
--- a/internal/bbsim/dmiserver/dmi_hw_mgmt.go
+++ b/internal/bbsim/dmiserver/dmi_hw_mgmt.go
@@ -87,7 +87,7 @@
trans := dmi.Component{
Name: transName,
Class: dmi.ComponentType_COMPONENT_TYPE_TRANSCEIVER,
- Description: "XGS-PON",
+ Description: olt.Pons[i].Technology.String(),
Uuid: &dmi.Uuid{
Uuid: dms.ponTransceiverUuids[i],
},
diff --git a/internal/bbsimctl/commands/olt.go b/internal/bbsimctl/commands/olt.go
index 1789c86..d2e72a5 100644
--- a/internal/bbsimctl/commands/olt.go
+++ b/internal/bbsimctl/commands/olt.go
@@ -36,7 +36,7 @@
DEFAULT_OLT_DEVICE_HEADER_FORMAT = "table{{ .ID }}\t{{ .SerialNumber }}\t{{ .OperState }}\t{{ .InternalState }}\t{{ .IP }}"
DEFAULT_OLT_RESOURCES_HEADER_FORMAT = "table{{ .Type }}\t{{ .PonPortId }}\t{{ .OnuId }}\t{{ .PortNo }}\t{{ .ResourceId }}\t{{ .FlowId }}"
DEFAULT_NNI_PORT_HEADER_FORMAT = "table{{ .ID }}\t{{ .OperState }}\t{{ .InternalState }}\t{{ .PacketCount }}"
- DEFAULT_PON_PORT_HEADER_FORMAT = "table{{ .ID }}\t{{ .OperState }}\t{{ .InternalState }}\t{{ .PacketCount }}\t{{ .AllocatedOnuIds }}\t{{ .AllocatedGemPorts }}\t{{ .AllocatedAllocIds }}"
+ DEFAULT_PON_PORT_HEADER_FORMAT = "table{{ .ID }}\t{{ .Technology }}\t{{ .OperState }}\t{{ .InternalState }}\t{{ .PacketCount }}\t{{ .AllocatedOnuIds }}\t{{ .AllocatedGemPorts }}\t{{ .AllocatedAllocIds }}"
)
type OltGet struct{}
diff --git a/internal/common/omci/onu_mib_db.go b/internal/common/omci/onu_mib_db.go
index e9fabed..2902fd2 100644
--- a/internal/common/omci/onu_mib_db.go
+++ b/internal/common/omci/onu_mib_db.go
@@ -21,6 +21,7 @@
"encoding/binary"
"encoding/hex"
+ "github.com/opencord/bbsim/internal/common"
me "github.com/opencord/omci-lib-go/v2/generated"
)
@@ -70,6 +71,7 @@
cardHolderOnuType byte = 0x01 // ONU is a single piece of integrated equipment
ethernetUnitType byte = 0x2f // Ethernet BASE-T
xgsPonUnitType byte = 0xee // XG-PON10G10
+ gPonUnitType byte = 0xf5 // GPON12441244
potsUnitType byte = 0x20 // POTS
cardHolderSlotID byte = 0x01
tcontSlotId byte = 0x80 // why is this not the same as the cardHolderSlotID, it does not point to anything
@@ -92,7 +94,7 @@
// creates a MIB database for a ONU
// CircuitPack and CardHolder are static, everything else can be configured
-func GenerateMibDatabase(ethUniPortCount int, potsUniPortCount int) (*MibDb, error) {
+func GenerateMibDatabase(ethUniPortCount int, potsUniPortCount int, technology common.PonTechnology) (*MibDb, error) {
mibDb := MibDb{
items: []MibDbEntry{},
@@ -116,12 +118,21 @@
// },
//})
- // circuitPack XG-PON10G10
+ // ANI circuitPack
+ var aniCPType byte
+
+ switch technology {
+ case common.XGSPON:
+ aniCPType = xgsPonUnitType
+ case common.GPON:
+ aniCPType = gPonUnitType
+ }
+
mibDb.items = append(mibDb.items, MibDbEntry{
me.CircuitPackClassID,
circuitPackEntityID,
me.AttributeValueMap{
- me.CircuitPack_Type: xgsPonUnitType,
+ me.CircuitPack_Type: aniCPType,
me.CircuitPack_NumberOfPorts: 1, // NOTE is this the ANI port? must be
me.CircuitPack_SerialNumber: ToOctets("BBSM-Circuit-Pack-ani", 20),
me.CircuitPack_Version: ToOctets("v0.0.1", 20),
diff --git a/internal/common/omci/onu_mib_db_test.go b/internal/common/omci/onu_mib_db_test.go
index 378ac6e..2794aa4 100644
--- a/internal/common/omci/onu_mib_db_test.go
+++ b/internal/common/omci/onu_mib_db_test.go
@@ -19,6 +19,7 @@
import (
"testing"
+ "github.com/opencord/bbsim/internal/common"
"github.com/opencord/omci-lib-go/v2"
me "github.com/opencord/omci-lib-go/v2/generated"
"github.com/stretchr/testify/assert"
@@ -56,7 +57,7 @@
func Test_GenerateMibDatabase(t *testing.T) {
const uniPortCount = 4
- mibDb, err := GenerateMibDatabase(uniPortCount, 0)
+ mibDb, err := GenerateMibDatabase(uniPortCount, 0, common.XGSPON)
expectedItems := 9 //ONU-G + 2 Circuit Packs (4 messages each)
expectedItems += 2 * uniPortCount // 1 PPTP and 1 UniG per UNI
@@ -94,7 +95,7 @@
func Test_GenerateMibDatabase_withPots(t *testing.T) {
const uniPortCount = 4
const potsPortCount = 1
- mibDb, err := GenerateMibDatabase(uniPortCount, potsPortCount)
+ mibDb, err := GenerateMibDatabase(uniPortCount, potsPortCount, common.XGSPON)
expectedItems := 13 //ONU-G + 3 Circuit Packs (4 messages each)
expectedItems += 2 * (uniPortCount + potsPortCount) // 1 PPTP and 1 UniG per UNI
diff --git a/internal/common/option_test.go b/internal/common/option_test.go
index 2a57624..bf8d139 100644
--- a/internal/common/option_test.go
+++ b/internal/common/option_test.go
@@ -17,8 +17,11 @@
package common
import (
- "gotest.tools/assert"
+ "fmt"
"testing"
+
+ "github.com/imdario/mergo"
+ "gotest.tools/assert"
)
func TestLoadBBSimServices(t *testing.T) {
@@ -36,3 +39,186 @@
assert.Equal(t, services[0].NeedsIgmp, false)
assert.Equal(t, services[0].TechnologyProfileID, 64)
}
+
+func TestLoadPonsConfigDefaults(t *testing.T) {
+ Config = getDefaultOps()
+ // The default options define 1 PON per OLT
+ // and 1 ONU per PON
+
+ Services = []ServiceYaml{
+ {
+ Name: "test",
+ },
+ }
+
+ ponsConf, err := getDefaultPonsConfig()
+
+ assert.NilError(t, err, "Can't get defaults")
+
+ assert.Equal(t, ponsConf.Number, uint32(1))
+ assert.Equal(t, len(ponsConf.Ranges), 1)
+
+ ranges := ponsConf.Ranges
+
+ //The default should replicate the old way bbsim used to compute ranges
+ assert.Equal(t, ranges[0].PonRange, IdRange{0, 0})
+ assert.Equal(t, ranges[0].Technology, XGSPON.String())
+ assert.Equal(t, ranges[0].OnuRange, IdRange{defaultOnuIdStart, defaultOnuIdStart})
+ assert.Equal(t, ranges[0].AllocIdRange, IdRange{defaultAllocIdStart, defaultAllocIdStart + 4})
+ assert.Equal(t, ranges[0].GemportRange, IdRange{defaultGemportIdStart, defaultGemportIdStart + 32})
+
+ assert.NilError(t, validatePonsConfig(ponsConf), "Configuration is not valid")
+}
+
+func TestLoadPonsConfigFile(t *testing.T) {
+
+ Config = getDefaultOps()
+
+ Services = []ServiceYaml{
+ {
+ Name: "test",
+ },
+ }
+
+ ponsConf, err := getDefaultPonsConfig()
+
+ assert.NilError(t, err, "Can't get defaults")
+
+ yamlConf, err := loadBBSimPons("../../configs/pon-interfaces.yaml")
+
+ assert.NilError(t, err, "Can't read config file")
+
+ // merging Yaml and Default Values
+ err = mergo.Merge(ponsConf, yamlConf, mergo.WithOverride)
+ assert.NilError(t, err, "Can't merge YAML and Config")
+
+ assert.Equal(t, ponsConf.Number, uint32(16))
+ assert.Equal(t, len(ponsConf.Ranges), 1)
+
+ ranges := ponsConf.Ranges
+
+ assert.Equal(t, ranges[0].PonRange, IdRange{0, 15})
+ assert.Equal(t, ranges[0].Technology, XGSPON.String())
+ assert.Equal(t, ranges[0].OnuRange, IdRange{1, 255})
+ assert.Equal(t, ranges[0].AllocIdRange, IdRange{256, 1024})
+ assert.Equal(t, ranges[0].GemportRange, IdRange{256, 1024})
+
+ assert.NilError(t, validatePonsConfig(ponsConf), "Configuration is not valid")
+}
+
+func getTestPonsConfiguration() *PonPortsConfig {
+ return &PonPortsConfig{
+ Number: 16,
+ Ranges: []PonRangeConfig{
+ {
+ PonRange: IdRange{0, 7},
+ Technology: GPON.String(),
+ OnuRange: IdRange{defaultOnuIdStart, defaultOnuIdStart},
+ AllocIdRange: IdRange{defaultAllocIdStart, defaultAllocIdStart + 4},
+ GemportRange: IdRange{defaultGemportIdStart, defaultGemportIdStart + 32},
+ },
+ {
+ PonRange: IdRange{8, 15},
+ Technology: XGSPON.String(),
+ OnuRange: IdRange{defaultOnuIdStart, defaultOnuIdStart},
+ AllocIdRange: IdRange{defaultAllocIdStart, defaultAllocIdStart + 4},
+ GemportRange: IdRange{defaultGemportIdStart, defaultGemportIdStart + 32},
+ },
+ },
+ }
+}
+
+func TestPonsValidationTechnology(t *testing.T) {
+ ponsConf := getTestPonsConfiguration()
+ assert.NilError(t, validatePonsConfig(ponsConf), "Test configuration is not valid")
+
+ ponsConf.Ranges[0].Technology = XGSPON.String()
+ assert.NilError(t, validatePonsConfig(ponsConf), "Correct technology considered invalid")
+
+ ponsConf.Ranges[0].Technology = GPON.String()
+ assert.NilError(t, validatePonsConfig(ponsConf), "Correct technology considered invalid")
+
+ ponsConf.Ranges[0].Technology = "TEST"
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "technology", "Incorrect technology considered valid")
+}
+
+func TestPonsValidationPortsInRanges(t *testing.T) {
+ ponsConf := getTestPonsConfiguration()
+ assert.NilError(t, validatePonsConfig(ponsConf), "Test configuration is not valid")
+
+ //The second range now misses pon 8
+ ponsConf.Ranges[1].PonRange.StartId = 9
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "not-defined", "Missing pon definition considered valid")
+
+ //The second range defines pon 7 a second time
+ ponsConf.Ranges[1].PonRange.StartId = 7
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "duplicate", "Duplicate pon definition considered valid")
+
+ //Get back to a known good configuration
+ ponsConf = getTestPonsConfiguration()
+ //The second range uses an Id that is out of range
+ ponsConf.Ranges[1].PonRange.EndId = 16
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "max", "Out of range pon definition considered valid")
+
+ //Fix the start of the second range
+ ponsConf.Ranges[1].PonRange.EndId = 15
+
+ ponsConf.Number = 0
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "no-pon-ports", "Zero pons considered valid")
+}
+
+func TestPonsValidationRangeLimits(t *testing.T) {
+ ponsConf := getTestPonsConfiguration()
+ assert.NilError(t, validatePonsConfig(ponsConf), "Test configuration is not valid")
+
+ ponsConf.Ranges[0].PonRange = IdRange{0, 0}
+ ponsConf.Ranges[1].PonRange = IdRange{1, 15}
+
+ assert.NilError(t, validatePonsConfig(ponsConf), "Single pon range considered invalid")
+
+ //Get back to a known good configuration
+ ponsConf = getTestPonsConfiguration()
+ ponsConf.Ranges[0].PonRange = IdRange{5, 4}
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "limits", "Invalid pons range limits considered valid")
+
+ ponsConf = getTestPonsConfiguration()
+ ponsConf.Ranges[0].OnuRange = IdRange{5, 4}
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "limits", "Invalid onus range limits considered valid")
+
+ ponsConf = getTestPonsConfiguration()
+ ponsConf.Ranges[0].AllocIdRange = IdRange{5, 4}
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "limits", "Invalid alloc-ids range limits considered valid")
+
+ ponsConf = getTestPonsConfiguration()
+ ponsConf.Ranges[0].GemportRange = IdRange{5, 4}
+
+ assert.ErrorContains(t, validatePonsConfig(ponsConf), "limits", "Invalid gemports range limits considered valid")
+}
+
+func TestGetPonConfigById(t *testing.T) {
+ PonsConfig = getTestPonsConfiguration()
+
+ for id := uint32(0); id < PonsConfig.Number-1; id++ {
+ conf, err := GetPonConfigById(id)
+ assert.NilError(t, err, fmt.Sprintf("Cannot get configuration for pon %d", id))
+
+ if id > conf.PonRange.EndId || id < conf.PonRange.StartId {
+ assert.NilError(t, err, fmt.Sprintf("Got wrong configuration for pon %d", id))
+ }
+ }
+
+ _, err := GetPonConfigById(16)
+
+ assert.Assert(t, err != nil, "Invalid pon id returned configuration")
+
+ _, err = GetPonConfigById(100)
+
+ assert.Assert(t, err != nil, "Invalid pon id returned configuration")
+}
diff --git a/internal/common/options.go b/internal/common/options.go
index 000a8dc..58cec20 100644
--- a/internal/common/options.go
+++ b/internal/common/options.go
@@ -88,7 +88,6 @@
NniPorts uint32 `yaml:"nni_ports"`
NniSpeed uint32 `yaml:"nni_speed"`
OnusPonPort uint32 `yaml:"onus_per_port"`
- Technology string `yaml:"technology"`
ID int `yaml:"id"`
OltRebootDelay int `yaml:"reboot_delay"`
PortStatsInterval int `yaml:"port_stats_interval"`
@@ -97,9 +96,77 @@
PotsPorts uint32 `yaml:"pots_ports"`
}
+type PonPortsConfig struct {
+ Number uint32 `yaml:"num_pon_ports"`
+ Ranges []PonRangeConfig `yaml:"ranges"`
+}
+
+type IdRange struct {
+ StartId uint32 `yaml:"start"`
+ EndId uint32 `yaml:"end"`
+}
+
+type PonTechnology int
+
+var ponTechnologyValues = []string{
+ "GPON", "XGS-PON",
+}
+
+func (t PonTechnology) String() string {
+ return ponTechnologyValues[t]
+}
+
+const (
+ GPON PonTechnology = iota
+ XGSPON
+)
+
+func PonTechnologyFromString(s string) (PonTechnology, error) {
+ for i, val := range ponTechnologyValues {
+ if val == s {
+ return PonTechnology(i), nil
+ }
+ }
+ log.WithFields(log.Fields{
+ "ValidValues": strings.Join(ponTechnologyValues[:], ", "),
+ }).Errorf("%s-is-not-a-valid-pon-technology", s)
+ return -1, fmt.Errorf("%s-is-not-a-valid-pon-technology", s)
+}
+
+//Constants for default allocation ranges
+const (
+ defaultOnuIdStart = 1
+ defaultAllocIdStart = 1024
+ defaultGemPortIdPerAllocId = 8
+ defaultGemportIdStart = 1024
+)
+
+type PonRangeConfig struct {
+ PonRange IdRange `yaml:"pon_id_range"`
+ Technology string `yaml:"tech"`
+ OnuRange IdRange `yaml:"onu_id_range"`
+ AllocIdRange IdRange `yaml:"alloc_id_range"`
+ GemportRange IdRange `yaml:"gemport_id_range"`
+}
+
+func GetPonConfigById(id uint32) (*PonRangeConfig, error) {
+ if PonsConfig == nil {
+ return nil, fmt.Errorf("pons-config-nil")
+ }
+
+ for _, r := range PonsConfig.Ranges {
+ if id >= r.PonRange.StartId && id <= r.PonRange.EndId {
+ return &r, nil
+ }
+ }
+
+ return nil, fmt.Errorf("pon-config-for-id-%d-not-found", id)
+}
+
type BBSimConfig struct {
ConfigFile string
ServiceConfigFile string
+ PonsConfigFile string
DhcpRetry bool `yaml:"dhcp_retry"`
AuthRetry bool `yaml:"auth_retry"`
LogLevel string `yaml:"log_level"`
@@ -172,8 +239,9 @@
}
var (
- Config *GlobalConfig
- Services []ServiceYaml
+ Config *GlobalConfig
+ Services []ServiceYaml
+ PonsConfig *PonPortsConfig
)
// Load the BBSim configuration. This is a combination of CLI parameters and YAML files
@@ -221,6 +289,31 @@
Services = services
+ //A blank filename means we should fall back to bbsim defaults
+ if Config.BBSim.PonsConfigFile == "" {
+ PonsConfig, err = getDefaultPonsConfig()
+ if err != nil {
+ log.WithFields(log.Fields{
+ "err": err,
+ }).Fatal("Can't load Pon interfaces defaults.")
+ }
+ } else {
+ PonsConfig, err = loadBBSimPons(Config.BBSim.PonsConfigFile)
+
+ if err != nil {
+ log.WithFields(log.Fields{
+ "file": Config.BBSim.PonsConfigFile,
+ "err": err,
+ }).Fatal("Can't read services file")
+ }
+ }
+
+ if err := validatePonsConfig(PonsConfig); err != nil {
+ log.WithFields(log.Fields{
+ "file": Config.BBSim.PonsConfigFile,
+ "err": err,
+ }).Fatal("Invalid Pon interfaces configuration")
+ }
}
func readCliParams() *GlobalConfig {
@@ -229,6 +322,7 @@
configFile := flag.String("config", conf.BBSim.ConfigFile, "Configuration file path")
servicesFile := flag.String("services", conf.BBSim.ServiceConfigFile, "Service Configuration file path")
+ ponsFile := flag.String("pon_port_config_file", conf.BBSim.PonsConfigFile, "Pon Interfaces Configuration file path")
sadisBpFormat := flag.String("bp_format", conf.BBSim.BandwidthProfileFormat, "Bandwidth profile format, 'mef' or 'ietf'")
olt_id := flag.Int("olt_id", conf.Olt.ID, "OLT device ID")
@@ -275,6 +369,7 @@
conf.Olt.OmciResponseRate = uint8(*omci_response_rate)
conf.BBSim.ConfigFile = *configFile
conf.BBSim.ServiceConfigFile = *servicesFile
+ conf.BBSim.PonsConfigFile = *ponsFile
conf.BBSim.CpuProfile = profileCpu
conf.BBSim.LogLevel = *logLevel
conf.BBSim.LogCaller = *logCaller
@@ -309,8 +404,12 @@
c := &GlobalConfig{
BBSimConfig{
- ConfigFile: "configs/bbsim.yaml",
- ServiceConfigFile: "configs/att-services.yaml",
+ ConfigFile: "configs/bbsim.yaml",
+ ServiceConfigFile: "configs/att-services.yaml",
+ // PonsConfigFile is left intentionally blank here
+ // to use the default values computed at runtime depending
+ // on the loaded Services
+ PonsConfigFile: "",
LogLevel: "debug",
LogCaller: false,
Delay: 200,
@@ -341,7 +440,6 @@
NniPorts: 1,
NniSpeed: 10000, //Mbps
OnusPonPort: 1,
- Technology: "XGS-PON",
ID: 0,
OltRebootDelay: 60,
PortStatsInterval: 20,
@@ -357,6 +455,35 @@
return c
}
+func getDefaultPonsConfig() (*PonPortsConfig, error) {
+
+ if Config == nil {
+ return nil, fmt.Errorf("Config is nil")
+ }
+ if Services == nil {
+ return nil, fmt.Errorf("Services is nil")
+ }
+
+ //The default should replicate the old way bbsim used to compute resource ranges based on the configuration
+ // 1 allocId per Service * UNI
+ allocIdPerOnu := uint32(Config.Olt.UniPorts * uint32(len(Services)))
+ return &PonPortsConfig{
+ Number: Config.Olt.PonPorts,
+ Ranges: []PonRangeConfig{
+ {
+ PonRange: IdRange{0, Config.Olt.PonPorts - 1},
+ Technology: XGSPON.String(),
+ // we need one ONU ID available per ONU, but the smaller the range the smaller the pool created in the openolt adapter
+ OnuRange: IdRange{defaultOnuIdStart, defaultOnuIdStart + (Config.Olt.OnusPonPort - 1)},
+ // 1 allocId per Service * UNI * ONU
+ AllocIdRange: IdRange{defaultAllocIdStart, defaultAllocIdStart + (Config.Olt.OnusPonPort * allocIdPerOnu)},
+ // up to 8 gemport-id per tcont/alloc-id
+ GemportRange: IdRange{defaultGemportIdStart, defaultGemportIdStart + Config.Olt.OnusPonPort*allocIdPerOnu*defaultGemPortIdPerAllocId},
+ },
+ },
+ }, nil
+}
+
// LoadBBSimConf loads the BBSim configuration from a YAML file
func loadBBSimConf(filename string) (*GlobalConfig, error) {
yamlConfig := getDefaultOps()
@@ -378,6 +505,84 @@
return yamlConfig, nil
}
+// loadBBSimPons loads the configuration of PON interfaces from a YAML file
+func loadBBSimPons(filename string) (*PonPortsConfig, error) {
+ yamlPonsConfig, err := getDefaultPonsConfig()
+ if err != nil {
+ log.WithFields(log.Fields{
+ "err": err,
+ }).Error("Can't load Pon interfaces defaults.")
+ return nil, err
+ }
+
+ yamlFile, err := ioutil.ReadFile(filename)
+ if err != nil {
+ log.WithFields(log.Fields{
+ "err": err,
+ "filename": filename,
+ }).Error("Cannot load Pon interfaces configuration file. Using defaults.")
+ return yamlPonsConfig, nil
+ }
+
+ err = yaml.Unmarshal(yamlFile, yamlPonsConfig)
+ if err != nil {
+ return nil, err
+ }
+
+ return yamlPonsConfig, nil
+}
+
+// validatePonsConfig checks if the configuration to use for the definition of Pon interfaces is valid
+func validatePonsConfig(pons *PonPortsConfig) error {
+
+ if pons.Number == 0 {
+ return fmt.Errorf("no-pon-ports")
+ }
+
+ definedPorts := make([]int, pons.Number)
+
+ for rIndex, resRange := range pons.Ranges {
+ if _, err := PonTechnologyFromString(resRange.Technology); err != nil {
+ return err
+ }
+
+ if resRange.PonRange.EndId < resRange.PonRange.StartId {
+ return fmt.Errorf("invalid-pon-ports-limits-in-range-%d", rIndex)
+ }
+
+ //Keep track of the defined pons
+ for p := resRange.PonRange.StartId; p <= resRange.PonRange.EndId; p++ {
+ if p > uint32(len(definedPorts)-1) {
+ return fmt.Errorf("pon-port-%d-in-range-%d-but-max-is-%d", p, rIndex, pons.Number-1)
+ }
+ definedPorts[p]++
+
+ if definedPorts[p] > 1 {
+ return fmt.Errorf("pon-port-%d-has-duplicate-definition-in-range-%d", p, rIndex)
+ }
+ }
+
+ if resRange.OnuRange.EndId < resRange.OnuRange.StartId {
+ return fmt.Errorf("invalid-onus-limits-in-range-%d", rIndex)
+ }
+ if resRange.AllocIdRange.EndId < resRange.AllocIdRange.StartId {
+ return fmt.Errorf("invalid-allocid-limits-in-range-%d", rIndex)
+ }
+ if resRange.GemportRange.EndId < resRange.GemportRange.StartId {
+ return fmt.Errorf("invalid-gemport-limits-in-range-%d", rIndex)
+ }
+ }
+
+ //Check if the ranges define all the pons
+ for i, num := range definedPorts {
+ if num < 1 {
+ return fmt.Errorf("pon-port-%d-is-not-defined-in-ranges", i)
+ }
+ }
+
+ return nil
+}
+
// LoadBBSimServices parses a file describing the services that need to be created for each UNI
func loadBBSimServices(filename string) ([]ServiceYaml, error) {
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
index 6dfa875..6ea5a05 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
@@ -1571,17 +1571,7 @@
DeviceSerialNumber string `protobuf:"bytes,17,opt,name=device_serial_number,json=deviceSerialNumber,proto3" json:"device_serial_number,omitempty"`
PreviouslyConnected bool `protobuf:"varint,19,opt,name=previously_connected,json=previouslyConnected,proto3" json:"previously_connected,omitempty"`
// Total number of pon intf ports on the device
- PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
- // If using global per-device technology profile. To be deprecated
- Technology string `protobuf:"bytes,5,opt,name=technology,proto3" json:"technology,omitempty"`
- OnuIdStart uint32 `protobuf:"fixed32,6,opt,name=onu_id_start,json=onuIdStart,proto3" json:"onu_id_start,omitempty"`
- OnuIdEnd uint32 `protobuf:"fixed32,7,opt,name=onu_id_end,json=onuIdEnd,proto3" json:"onu_id_end,omitempty"`
- AllocIdStart uint32 `protobuf:"fixed32,8,opt,name=alloc_id_start,json=allocIdStart,proto3" json:"alloc_id_start,omitempty"`
- AllocIdEnd uint32 `protobuf:"fixed32,9,opt,name=alloc_id_end,json=allocIdEnd,proto3" json:"alloc_id_end,omitempty"`
- GemportIdStart uint32 `protobuf:"fixed32,10,opt,name=gemport_id_start,json=gemportIdStart,proto3" json:"gemport_id_start,omitempty"`
- GemportIdEnd uint32 `protobuf:"fixed32,11,opt,name=gemport_id_end,json=gemportIdEnd,proto3" json:"gemport_id_end,omitempty"`
- FlowIdStart uint32 `protobuf:"fixed32,13,opt,name=flow_id_start,json=flowIdStart,proto3" json:"flow_id_start,omitempty"`
- FlowIdEnd uint32 `protobuf:"fixed32,14,opt,name=flow_id_end,json=flowIdEnd,proto3" json:"flow_id_end,omitempty"`
+ PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
Ranges []*DeviceInfo_DeviceResourceRanges `protobuf:"bytes,15,rep,name=ranges,proto3" json:"ranges,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@@ -1669,69 +1659,6 @@
return 0
}
-func (m *DeviceInfo) GetTechnology() string {
- if m != nil {
- return m.Technology
- }
- return ""
-}
-
-func (m *DeviceInfo) GetOnuIdStart() uint32 {
- if m != nil {
- return m.OnuIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetOnuIdEnd() uint32 {
- if m != nil {
- return m.OnuIdEnd
- }
- return 0
-}
-
-func (m *DeviceInfo) GetAllocIdStart() uint32 {
- if m != nil {
- return m.AllocIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetAllocIdEnd() uint32 {
- if m != nil {
- return m.AllocIdEnd
- }
- return 0
-}
-
-func (m *DeviceInfo) GetGemportIdStart() uint32 {
- if m != nil {
- return m.GemportIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetGemportIdEnd() uint32 {
- if m != nil {
- return m.GemportIdEnd
- }
- return 0
-}
-
-func (m *DeviceInfo) GetFlowIdStart() uint32 {
- if m != nil {
- return m.FlowIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetFlowIdEnd() uint32 {
- if m != nil {
- return m.FlowIdEnd
- }
- return 0
-}
-
func (m *DeviceInfo) GetRanges() []*DeviceInfo_DeviceResourceRanges {
if m != nil {
return m.Ranges
@@ -4715,342 +4642,336 @@
func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
var fileDescriptor_c072e7aa0dfd74d5 = []byte{
- // 5350 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7c, 0x4b, 0x70, 0x1b, 0x49,
- 0x72, 0xb6, 0xc0, 0x07, 0x00, 0x26, 0x1e, 0x04, 0x8b, 0x6f, 0x52, 0x0f, 0xaa, 0x47, 0x33, 0xa3,
- 0x9d, 0xdd, 0x21, 0x45, 0x8e, 0xa8, 0x91, 0xe6, 0xdf, 0x7f, 0x77, 0x28, 0x12, 0x22, 0xe1, 0x21,
- 0x09, 0xba, 0x09, 0x49, 0xde, 0xdd, 0x98, 0x68, 0x37, 0xbb, 0x0b, 0x60, 0x2f, 0x1b, 0x5d, 0x3d,
- 0xdd, 0x05, 0x3e, 0x7c, 0xdc, 0xf0, 0xda, 0x17, 0xdf, 0x36, 0xec, 0x08, 0xfb, 0xe2, 0x70, 0xf8,
- 0xea, 0x8b, 0x6f, 0x8e, 0xf0, 0xd1, 0xe1, 0xf0, 0xc5, 0x37, 0x9f, 0x7d, 0x73, 0xf8, 0xe2, 0x93,
- 0x2f, 0x3e, 0x39, 0x1c, 0x8e, 0xca, 0xaa, 0x7e, 0x01, 0x20, 0x25, 0x8d, 0xe9, 0xf0, 0x45, 0xc1,
- 0xca, 0xfc, 0xf2, 0xcb, 0x7a, 0x64, 0x65, 0x65, 0x77, 0x17, 0x04, 0xcb, 0xe7, 0xcc, 0xe5, 0xa7,
- 0xa6, 0xe1, 0x07, 0x8c, 0xb3, 0x70, 0x8d, 0xf9, 0xd4, 0x63, 0x2e, 0x5f, 0xc5, 0x26, 0x29, 0xa8,
- 0xe6, 0xd2, 0xdd, 0x0e, 0x63, 0x1d, 0x97, 0xae, 0x99, 0xbe, 0xb3, 0x66, 0x7a, 0x1e, 0xe3, 0x26,
- 0x77, 0x98, 0x17, 0x4a, 0xd8, 0xd2, 0x4a, 0x96, 0x83, 0x53, 0xeb, 0x54, 0xfc, 0xdd, 0x76, 0x5c,
- 0xaa, 0x10, 0xf7, 0xb3, 0x08, 0x7a, 0xc9, 0x0d, 0x8b, 0x79, 0x6d, 0xa7, 0x73, 0xad, 0x9e, 0x7a,
- 0x61, 0xe2, 0x41, 0xfb, 0xc7, 0x31, 0x80, 0x86, 0x67, 0x3b, 0x16, 0xfa, 0x25, 0xeb, 0x50, 0x60,
- 0x2e, 0x37, 0x1c, 0xcf, 0x5e, 0xc8, 0xad, 0xe4, 0x1e, 0x97, 0x36, 0xe6, 0x56, 0xa3, 0x8e, 0x37,
- 0x5d, 0x9e, 0x00, 0xf7, 0xee, 0xe8, 0x79, 0x86, 0x02, 0xf2, 0x14, 0x8a, 0x8e, 0xc7, 0xdb, 0x68,
- 0x33, 0x82, 0x36, 0xf3, 0xb1, 0x4d, 0xc3, 0xe3, 0xed, 0x8c, 0x51, 0xc1, 0x91, 0x12, 0xb2, 0x05,
- 0x15, 0xb4, 0x62, 0x3e, 0x0d, 0xd0, 0x74, 0x14, 0x4d, 0x97, 0x33, 0xa6, 0x4d, 0x9f, 0x06, 0x19,
- 0xf3, 0x92, 0x93, 0x48, 0xc9, 0x4f, 0xa0, 0xcc, 0xbc, 0x9e, 0x61, 0x3b, 0xa1, 0x85, 0x0c, 0x63,
- 0xc8, 0xb0, 0x94, 0x74, 0xd8, 0xeb, 0xed, 0x38, 0xa1, 0x95, 0x21, 0x00, 0x16, 0x0b, 0x71, 0xac,
- 0x5e, 0x0f, 0x4d, 0xc7, 0xfb, 0xc7, 0xea, 0xf5, 0xfa, 0xc6, 0x8a, 0x02, 0x31, 0x56, 0xd6, 0xb5,
- 0x1c, 0xb4, 0xc9, 0xf7, 0x8d, 0xb5, 0xd9, 0xb5, 0x9c, 0xec, 0x58, 0x99, 0x94, 0x90, 0xa7, 0x50,
- 0xf0, 0xcf, 0xe4, 0xa4, 0x16, 0xd0, 0x68, 0x31, 0x36, 0x3a, 0x32, 0xad, 0x33, 0xda, 0x37, 0xaf,
- 0xfe, 0x19, 0xce, 0xeb, 0x73, 0x00, 0x9f, 0x05, 0xdc, 0x08, 0xb9, 0xc9, 0xc3, 0x85, 0x62, 0x9f,
- 0xb7, 0x23, 0x16, 0xf0, 0x63, 0x11, 0x2c, 0x21, 0x77, 0xac, 0x70, 0xef, 0x8e, 0x3e, 0xe1, 0x2b,
- 0x49, 0x28, 0x2c, 0xdb, 0x2e, 0xbb, 0x50, 0x96, 0x13, 0x7d, 0x96, 0xaf, 0x5c, 0x76, 0x91, 0xb5,
- 0x6c, 0x2b, 0x49, 0x48, 0xbe, 0x84, 0x09, 0xd3, 0x35, 0x83, 0x2e, 0xf6, 0x15, 0xd0, 0x70, 0x21,
- 0x36, 0xdc, 0x12, 0x9a, 0x4c, 0x57, 0x8b, 0xa6, 0x12, 0xbd, 0xcc, 0xc3, 0x98, 0x6d, 0x72, 0x53,
- 0xfb, 0xb7, 0x0a, 0x4c, 0xf6, 0xe1, 0xc4, 0x3c, 0xbb, 0x2c, 0x1c, 0x1a, 0x53, 0xfb, 0x2c, 0xcc,
- 0x8e, 0xdd, 0x45, 0x01, 0xd9, 0x81, 0xaa, 0x7d, 0xe5, 0x78, 0x1d, 0xa3, 0x63, 0x86, 0x7e, 0x2a,
- 0xb2, 0xee, 0xc6, 0x96, 0x3b, 0x42, 0xbd, 0x6b, 0x86, 0x7e, 0xc6, 0xbe, 0x6c, 0xa7, 0xc4, 0x22,
- 0xc6, 0xc4, 0x02, 0x27, 0x23, 0xea, 0x8f, 0xb1, 0xa6, 0xd7, 0x1b, 0x1c, 0x54, 0x89, 0x25, 0x52,
- 0xf2, 0x16, 0x66, 0x04, 0x45, 0xc8, 0xcd, 0x80, 0xf7, 0x7c, 0xa3, 0x6d, 0x3a, 0x6e, 0x2a, 0xd6,
- 0x1e, 0xa5, 0x99, 0x8e, 0x25, 0xe6, 0x95, 0xe9, 0xb8, 0xbd, 0x80, 0x66, 0x28, 0xa7, 0x58, 0x46,
- 0x2d, 0x88, 0x7f, 0x0e, 0x73, 0x48, 0xec, 0x74, 0x3c, 0xd3, 0x35, 0x6c, 0xda, 0x09, 0x4c, 0x9b,
- 0xa6, 0x62, 0xf1, 0xa3, 0x0c, 0x35, 0xa2, 0x76, 0x24, 0x28, 0xc3, 0x3c, 0xcd, 0x06, 0xb5, 0xe4,
- 0x17, 0x30, 0x8f, 0x1b, 0x23, 0x70, 0xda, 0xdc, 0x60, 0x6d, 0xe3, 0xc2, 0xf1, 0x6c, 0x76, 0x91,
- 0x0a, 0xda, 0x0c, 0xf9, 0x8e, 0x80, 0x35, 0xdb, 0x6f, 0x11, 0x34, 0x40, 0xde, 0xaf, 0x25, 0x2d,
- 0x10, 0xa3, 0x31, 0x5c, 0x16, 0x86, 0x46, 0xbc, 0x17, 0x64, 0x58, 0x7f, 0x9a, 0xa6, 0xdd, 0x67,
- 0x61, 0xd8, 0x6c, 0x8b, 0x4d, 0xb1, 0x7d, 0x6a, 0x7a, 0x1e, 0x75, 0x33, 0xd4, 0x55, 0xa6, 0x10,
- 0x6a, 0x8b, 0x44, 0xf3, 0x8c, 0x43, 0x09, 0x93, 0x79, 0x2e, 0x0e, 0x99, 0x67, 0x89, 0xb9, 0x76,
- 0x9e, 0x13, 0xb5, 0x20, 0x6e, 0xca, 0x24, 0xc1, 0x9d, 0x0b, 0xd9, 0x53, 0xb9, 0x1b, 0x7e, 0x98,
- 0x26, 0x6c, 0x05, 0xa6, 0x17, 0x76, 0x9d, 0x50, 0xa4, 0xc5, 0x86, 0xc7, 0x69, 0xd0, 0xa6, 0x01,
- 0xf5, 0x2c, 0xfa, 0xd6, 0x0c, 0x3c, 0xc7, 0xeb, 0xa8, 0xac, 0xd1, 0x72, 0x2e, 0xb0, 0xa7, 0xbf,
- 0x2b, 0x27, 0xd7, 0xb4, 0xb8, 0x73, 0x8e, 0x7e, 0x93, 0xce, 0xc2, 0xe0, 0x2c, 0x6c, 0xc5, 0xb0,
- 0x61, 0xfd, 0x15, 0x63, 0xce, 0x22, 0xa4, 0x87, 0x05, 0xe1, 0xc1, 0x0f, 0x98, 0x45, 0xc3, 0x50,
- 0xec, 0x02, 0x1a, 0x04, 0x4c, 0x66, 0xc9, 0x12, 0xba, 0xf8, 0x38, 0xed, 0xe2, 0x28, 0xc6, 0xd5,
- 0x05, 0x2c, 0xe3, 0x60, 0x96, 0x0d, 0xd3, 0x13, 0x0a, 0x8b, 0xc9, 0x1a, 0xb6, 0x8d, 0xf0, 0xca,
- 0xb3, 0x92, 0x51, 0x94, 0xd1, 0xc5, 0x67, 0x83, 0x6b, 0xf9, 0x0d, 0xbd, 0x3a, 0xbe, 0xf2, 0xac,
- 0xeb, 0x06, 0x22, 0x41, 0x11, 0x42, 0xb8, 0x79, 0x0d, 0xb3, 0x98, 0x60, 0x79, 0xcf, 0xf0, 0x99,
- 0x27, 0xd3, 0x11, 0xba, 0xa8, 0xa0, 0x8b, 0x87, 0x99, 0x74, 0xcb, 0x7b, 0x47, 0xcc, 0xc3, 0x2c,
- 0x34, 0xb0, 0xa4, 0x59, 0x1d, 0x71, 0xe1, 0x2e, 0x86, 0x37, 0xed, 0x5b, 0x83, 0x5e, 0x20, 0x37,
- 0x50, 0x15, 0xd9, 0x7f, 0x90, 0x89, 0xf1, 0x14, 0x76, 0x58, 0xff, 0xc5, 0x74, 0x0c, 0xc7, 0x90,
- 0xb7, 0x72, 0x10, 0x01, 0xed, 0x32, 0x4e, 0x0d, 0x9b, 0xb6, 0xa9, 0x25, 0x53, 0xf9, 0x24, 0xba,
- 0xd1, 0xd2, 0x6e, 0x74, 0x04, 0xed, 0x20, 0x26, 0xc3, 0x4f, 0xd8, 0x80, 0x92, 0x84, 0x72, 0x18,
- 0xb8, 0x08, 0x1d, 0xda, 0x35, 0x6c, 0xea, 0x3a, 0x1e, 0x95, 0xc3, 0x11, 0xfc, 0x35, 0xe4, 0x5f,
- 0x1f, 0x5c, 0x87, 0xdd, 0xfa, 0x81, 0xda, 0x52, 0x3b, 0x89, 0x49, 0xc6, 0xdd, 0x82, 0x5a, 0x8e,
- 0x5d, 0xda, 0xcd, 0x42, 0xc8, 0x39, 0xac, 0x60, 0x6c, 0x9d, 0x5e, 0x85, 0x8e, 0x65, 0xba, 0x06,
- 0xfd, 0xae, 0xe7, 0xf8, 0x5d, 0xea, 0xf1, 0x54, 0x8c, 0x4d, 0xa1, 0xe3, 0x1f, 0x65, 0x62, 0x4c,
- 0xe1, 0xeb, 0x11, 0x7c, 0x30, 0xd4, 0xc4, 0x60, 0xae, 0x85, 0x91, 0x5f, 0xc0, 0x74, 0x3a, 0xe2,
- 0x4c, 0xeb, 0x0c, 0x5d, 0x91, 0xc1, 0xdd, 0x28, 0xc7, 0xb8, 0x65, 0x9d, 0x79, 0xec, 0xc2, 0xa5,
- 0x76, 0x87, 0x0a, 0x9e, 0x8c, 0xa7, 0x49, 0x96, 0x42, 0x09, 0x72, 0x06, 0xcb, 0xb2, 0x10, 0x68,
- 0xb7, 0x8d, 0x80, 0x9a, 0xd6, 0xa9, 0x41, 0x2f, 0x2d, 0x4a, 0x6d, 0x6a, 0xa3, 0x93, 0x69, 0x74,
- 0xb2, 0x96, 0xad, 0x0b, 0xda, 0xb8, 0xc9, 0xb9, 0x63, 0xba, 0xba, 0xb0, 0xa8, 0x2b, 0x83, 0x8c,
- 0xa3, 0x79, 0x26, 0x91, 0xfd, 0x88, 0xf8, 0xb4, 0x5b, 0x85, 0x4a, 0xa6, 0x2a, 0x22, 0xf7, 0x00,
- 0xb0, 0xa0, 0x11, 0xa1, 0x4e, 0xf1, 0xb4, 0x9b, 0xd0, 0x27, 0x84, 0x44, 0x04, 0x2f, 0xd5, 0xf6,
- 0xa0, 0x9a, 0xad, 0x88, 0xc8, 0x3c, 0x14, 0x64, 0xf1, 0x24, 0xcf, 0xc6, 0x82, 0x9e, 0xc7, 0x02,
- 0xc9, 0xee, 0x63, 0x1a, 0xe9, 0x67, 0x3a, 0x85, 0xa9, 0x81, 0xf2, 0xe6, 0x7a, 0xb2, 0xaf, 0xa0,
- 0x12, 0xd2, 0xc0, 0x31, 0x5d, 0xc3, 0xeb, 0x75, 0x4f, 0x68, 0xa0, 0x4e, 0xd3, 0xd9, 0x78, 0x4a,
- 0x8e, 0x51, 0x7b, 0x88, 0x4a, 0xbd, 0x1c, 0xa6, 0x5a, 0xda, 0x6f, 0xc6, 0xa0, 0x92, 0x29, 0x87,
- 0xae, 0x77, 0x33, 0x0b, 0x79, 0xdc, 0xef, 0xf2, 0xb4, 0x2e, 0xe8, 0xe3, 0x62, 0xef, 0xf6, 0x0f,
- 0x65, 0xb4, 0x6f, 0x28, 0xe4, 0x01, 0x94, 0x4c, 0xbb, 0xeb, 0x78, 0x4a, 0x3f, 0x8e, 0x7a, 0x40,
- 0x91, 0x04, 0x0c, 0xf4, 0x7e, 0xec, 0xbd, 0x7b, 0x4f, 0xf6, 0xa1, 0x84, 0x89, 0x2d, 0xa0, 0x66,
- 0xc8, 0x3c, 0x3c, 0xfe, 0xaa, 0xd9, 0x78, 0x4b, 0x06, 0xb6, 0x9a, 0x4d, 0xc5, 0x3a, 0x9a, 0xe8,
- 0xd0, 0x8e, 0xff, 0xd6, 0xfe, 0x70, 0x04, 0x66, 0x86, 0x81, 0xc8, 0x47, 0xf0, 0xa0, 0x79, 0xf8,
- 0xda, 0xd8, 0xda, 0x6e, 0x35, 0xde, 0x6c, 0xb5, 0x1a, 0xcd, 0x43, 0xe3, 0xd5, 0x56, 0x63, 0xdf,
- 0xd0, 0xeb, 0x5b, 0xc7, 0xcd, 0x43, 0xe3, 0xb0, 0x79, 0x58, 0xaf, 0xdd, 0x21, 0x9f, 0x80, 0x76,
- 0x03, 0x48, 0xdf, 0x3a, 0xdc, 0x6d, 0x1c, 0xee, 0xd6, 0x72, 0xe4, 0x19, 0x6c, 0xdc, 0x80, 0x3b,
- 0xda, 0x3a, 0x3e, 0x7e, 0xdb, 0xd4, 0x77, 0x8c, 0xad, 0xd7, 0xad, 0xbd, 0xfa, 0x61, 0xab, 0xb1,
- 0x8d, 0x98, 0xda, 0x08, 0xd1, 0xe0, 0xfe, 0x0d, 0x76, 0xfb, 0xcd, 0xe3, 0xda, 0x28, 0x79, 0x08,
- 0xf7, 0x86, 0x61, 0x50, 0xb6, 0xbf, 0xa5, 0x1f, 0xd4, 0xc6, 0xae, 0x1b, 0xcb, 0xf1, 0xdb, 0x46,
- 0x6b, 0x7b, 0xcf, 0x68, 0xbe, 0xa9, 0xeb, 0xb5, 0x71, 0xed, 0x1c, 0xc8, 0x60, 0x81, 0x4e, 0x08,
- 0x8c, 0xf1, 0x2b, 0x3f, 0x0a, 0x7c, 0xfc, 0x3b, 0x1d, 0x2d, 0x23, 0x37, 0x44, 0xf8, 0x40, 0x58,
- 0xcc, 0xc0, 0x78, 0xe8, 0x53, 0x2a, 0x4b, 0xad, 0x82, 0x2e, 0x1b, 0x9a, 0x0e, 0xd5, 0x6c, 0x9d,
- 0xfd, 0xc1, 0xd1, 0x58, 0x83, 0x51, 0xff, 0x8c, 0xa3, 0xbf, 0xb2, 0x2e, 0xfe, 0xd4, 0xfe, 0x3d,
- 0x07, 0xb5, 0xfe, 0x3a, 0x9c, 0x2c, 0xc3, 0x04, 0xd2, 0xe2, 0x78, 0x64, 0x4c, 0xe2, 0x63, 0x4e,
- 0xab, 0x6f, 0x4c, 0xd7, 0xf9, 0x2c, 0xa6, 0x7d, 0xce, 0x42, 0xbe, 0xe7, 0x39, 0x42, 0x3c, 0x21,
- 0xc5, 0x3d, 0xcf, 0x91, 0x33, 0xd0, 0xa1, 0x5d, 0x2c, 0xf2, 0xe3, 0x5e, 0x4e, 0x28, 0x49, 0xc3,
- 0x16, 0x5e, 0xb0, 0x8c, 0x77, 0x64, 0xe1, 0x5a, 0xd0, 0xf3, 0xa2, 0x29, 0x15, 0x68, 0xe4, 0x31,
- 0x0c, 0xe8, 0x82, 0x9e, 0x17, 0xcd, 0x43, 0x46, 0xe6, 0x20, 0x6f, 0x31, 0x76, 0xe6, 0x50, 0x2c,
- 0xc8, 0xf2, 0xba, 0x6a, 0x45, 0x63, 0x1e, 0x4b, 0xc6, 0xfc, 0x08, 0x26, 0x64, 0xa9, 0x63, 0x5a,
- 0xd7, 0x0f, 0x47, 0xfb, 0x31, 0x4c, 0xec, 0x51, 0x33, 0xe0, 0x27, 0xd4, 0xe4, 0x64, 0x0d, 0xa6,
- 0x4f, 0xa3, 0x86, 0x2c, 0xd4, 0x78, 0x2f, 0xa0, 0xca, 0x82, 0xc4, 0xaa, 0xe3, 0x48, 0xa3, 0xfd,
- 0x55, 0x0e, 0x46, 0x9b, 0x5e, 0xef, 0x83, 0x57, 0x68, 0x60, 0xbf, 0x8f, 0xbe, 0xff, 0x7e, 0x17,
- 0x23, 0x75, 0x02, 0x15, 0x33, 0xe2, 0x4f, 0xf2, 0x29, 0x4c, 0xb2, 0xae, 0x65, 0x19, 0xd4, 0xb3,
- 0x82, 0x2b, 0x5f, 0xac, 0x2d, 0x2e, 0x67, 0x51, 0xaf, 0x0a, 0x71, 0x3d, 0x96, 0x6a, 0x7f, 0x9d,
- 0x03, 0x82, 0xe7, 0x4f, 0x47, 0x1c, 0x61, 0x3b, 0x4e, 0xc8, 0x4d, 0xcf, 0xa2, 0x1f, 0xdc, 0xfb,
- 0x17, 0xb0, 0xe8, 0x4a, 0x0a, 0x43, 0x3d, 0x9d, 0x22, 0x8f, 0xf1, 0x7b, 0x34, 0x60, 0x6a, 0x1d,
- 0xe7, 0x14, 0x40, 0x66, 0x70, 0x54, 0xff, 0x9c, 0x06, 0x8c, 0x3c, 0x81, 0x99, 0x61, 0xa6, 0x6a,
- 0x34, 0x64, 0xd0, 0x4a, 0xfb, 0x06, 0x0a, 0x62, 0x3b, 0x1c, 0x84, 0x9d, 0x5b, 0xd8, 0x07, 0xbf,
- 0xce, 0xc1, 0x84, 0x38, 0xeb, 0x71, 0x2b, 0x7c, 0x30, 0x5f, 0x2a, 0x28, 0xc7, 0x32, 0x41, 0x99,
- 0x8d, 0xf2, 0xf1, 0xfe, 0x28, 0x1f, 0xec, 0xc7, 0x0b, 0x28, 0xbf, 0xf6, 0x5d, 0xc7, 0x3b, 0x7b,
- 0x57, 0x4f, 0x94, 0xe9, 0x48, 0x62, 0xfa, 0xf7, 0x13, 0x00, 0x3b, 0xf4, 0xdc, 0xb1, 0x68, 0xc3,
- 0x6b, 0xe3, 0x7e, 0x38, 0xa7, 0x9e, 0xcd, 0x02, 0x95, 0x91, 0x54, 0x4b, 0xe4, 0x96, 0x2e, 0xb3,
- 0xa9, 0xab, 0xce, 0x55, 0xd9, 0x20, 0x3f, 0x80, 0xda, 0xa9, 0x19, 0xd8, 0x17, 0x66, 0x40, 0x8d,
- 0x73, 0x1a, 0x88, 0xc7, 0x01, 0x95, 0x96, 0x26, 0x23, 0xf9, 0x1b, 0x29, 0x16, 0xd0, 0xb6, 0x13,
- 0x74, 0x33, 0xd0, 0x31, 0x09, 0x8d, 0xe4, 0x11, 0x74, 0x19, 0x26, 0x6c, 0xec, 0x91, 0xe8, 0x7f,
- 0x4d, 0x26, 0x12, 0x29, 0x68, 0xd8, 0x62, 0xc5, 0x95, 0x32, 0x1b, 0xf1, 0x53, 0x88, 0x23, 0x52,
- 0x97, 0x0e, 0x77, 0xb2, 0x0e, 0x33, 0x7e, 0x40, 0xcf, 0x1d, 0xd6, 0x0b, 0xdd, 0x2b, 0xc3, 0x62,
- 0x9e, 0x47, 0x2d, 0x4e, 0x65, 0x91, 0x53, 0xd4, 0xa7, 0x13, 0xdd, 0x76, 0xa4, 0x12, 0x3d, 0x10,
- 0xe5, 0xb7, 0x98, 0xef, 0x10, 0xab, 0xfb, 0x82, 0x5e, 0xf4, 0x99, 0x77, 0x24, 0xda, 0xe4, 0x3e,
- 0x00, 0xa7, 0xd6, 0xa9, 0xc7, 0x5c, 0xd6, 0xb9, 0x8a, 0x0e, 0xdf, 0x44, 0x42, 0x56, 0xe4, 0xf3,
- 0x93, 0x63, 0xcb, 0x67, 0x60, 0x95, 0x70, 0x00, 0xd7, 0x1c, 0x1f, 0x69, 0xc9, 0x5d, 0x00, 0x85,
- 0xa0, 0xea, 0x49, 0xb0, 0xa0, 0x17, 0x51, 0x5f, 0xf7, 0x6c, 0xf2, 0x08, 0xaa, 0xa6, 0xeb, 0x32,
- 0x2b, 0x61, 0x90, 0x99, 0xb1, 0x8c, 0xd2, 0x88, 0x63, 0x05, 0xca, 0x31, 0x8a, 0x7a, 0x51, 0x9a,
- 0x04, 0x85, 0x11, 0x3c, 0x8f, 0xa1, 0x96, 0x44, 0x91, 0x62, 0x02, 0x44, 0x55, 0xe3, 0x58, 0x92,
- 0x5c, 0x8f, 0xa0, 0x9a, 0x42, 0x52, 0xf5, 0xd0, 0x54, 0xd0, 0xcb, 0x31, 0x4e, 0xf0, 0x69, 0x50,
- 0x51, 0xc9, 0x55, 0x91, 0x55, 0x10, 0x54, 0x92, 0x29, 0x56, 0x32, 0xdd, 0x87, 0x52, 0x84, 0xa1,
- 0xea, 0xb9, 0xa2, 0x20, 0xdf, 0x96, 0x48, 0x8e, 0xaf, 0x21, 0x1f, 0x98, 0x5e, 0x87, 0x86, 0x0b,
- 0x93, 0x2b, 0xa3, 0x8f, 0x4b, 0x1b, 0x8f, 0x93, 0xb7, 0x13, 0x71, 0x0c, 0xaa, 0x3f, 0x75, 0x1a,
- 0xb2, 0x5e, 0x60, 0x51, 0x1d, 0xf1, 0xba, 0xb2, 0x5b, 0xfa, 0xe3, 0x31, 0x98, 0x19, 0x06, 0x20,
- 0x8b, 0xd1, 0x4b, 0x35, 0x3b, 0x5c, 0xc8, 0xad, 0x8c, 0x3e, 0x2e, 0xa8, 0x37, 0x67, 0x76, 0xff,
- 0x8a, 0x8d, 0x0c, 0xac, 0xd8, 0x36, 0x8c, 0xfb, 0x8c, 0xb9, 0xe1, 0xc2, 0x28, 0x76, 0xea, 0xf3,
- 0xf7, 0xed, 0xd4, 0xea, 0x11, 0x63, 0xae, 0x2e, 0x6d, 0x97, 0xfe, 0x73, 0x04, 0xc6, 0x44, 0x9b,
- 0xfc, 0x56, 0xea, 0x48, 0xaf, 0x6e, 0x3c, 0xfb, 0x20, 0x32, 0xfc, 0x47, 0x1c, 0x98, 0xaa, 0x14,
- 0x38, 0x86, 0x42, 0x78, 0x6a, 0x06, 0x8e, 0xd7, 0xc1, 0x6e, 0x57, 0x37, 0x5e, 0x7c, 0x18, 0xdd,
- 0xb1, 0x34, 0x46, 0xc6, 0x88, 0x09, 0xeb, 0x04, 0x5c, 0xc0, 0x51, 0x55, 0x27, 0xe0, 0xd2, 0xd5,
- 0x60, 0x94, 0x7a, 0x51, 0xed, 0x20, 0xfe, 0xd4, 0xb6, 0xa0, 0x18, 0x75, 0x87, 0x00, 0xe4, 0x45,
- 0x89, 0xd3, 0xd8, 0xa9, 0xdd, 0x21, 0x65, 0x28, 0x6e, 0xed, 0xef, 0x37, 0xb7, 0x45, 0x2b, 0x47,
- 0xaa, 0x00, 0xbb, 0xf5, 0x83, 0xa3, 0xa6, 0xde, 0x12, 0xed, 0x11, 0x52, 0x82, 0xc2, 0xab, 0xfd,
- 0xe6, 0x5b, 0xd1, 0x18, 0xd5, 0x4e, 0xa1, 0x94, 0xea, 0x02, 0x99, 0x03, 0xb2, 0x53, 0xdf, 0x11,
- 0xf5, 0x57, 0x7d, 0xc7, 0x38, 0xaa, 0xeb, 0x46, 0xe3, 0xb0, 0xf5, 0xaa, 0x76, 0x87, 0x3c, 0x80,
- 0xe5, 0xe3, 0xbd, 0x2d, 0xbd, 0xbe, 0x63, 0xbc, 0xfc, 0x99, 0xb1, 0xb5, 0xbf, 0x8f, 0x72, 0xfc,
- 0xa3, 0x55, 0xdf, 0xde, 0xab, 0xe5, 0xc8, 0x0a, 0xdc, 0x1d, 0x02, 0x38, 0xde, 0x3a, 0xa8, 0x4b,
- 0xc4, 0x88, 0xf6, 0xfb, 0xa3, 0x00, 0xdb, 0xae, 0x19, 0x86, 0x4e, 0xdb, 0xa1, 0x01, 0xa6, 0x5c,
- 0x83, 0xfb, 0x71, 0x02, 0x1c, 0x67, 0x2d, 0xdf, 0xb1, 0xc9, 0x34, 0x8c, 0x33, 0xe3, 0x3c, 0x4e,
- 0xc4, 0x63, 0xec, 0x8d, 0x83, 0xe9, 0xd9, 0x91, 0x58, 0x35, 0x21, 0x4e, 0x84, 0x75, 0x10, 0x2b,
- 0xa7, 0x64, 0xcc, 0x11, 0xd8, 0x79, 0x28, 0x30, 0xc3, 0x3f, 0x71, 0x78, 0xa8, 0xf2, 0x72, 0x9e,
- 0x1d, 0x89, 0x16, 0xa6, 0x5c, 0xa5, 0x50, 0x15, 0x86, 0x23, 0x15, 0x8b, 0x50, 0xa4, 0xfc, 0x54,
- 0x56, 0x45, 0x72, 0xab, 0x17, 0x28, 0x3f, 0x8d, 0x8a, 0x22, 0x3b, 0xe4, 0x46, 0xd7, 0xb4, 0x70,
- 0x8b, 0x97, 0xf5, 0xbc, 0x1d, 0xf2, 0x03, 0xd3, 0x12, 0x8a, 0x30, 0xb0, 0x50, 0x31, 0x21, 0x15,
- 0x61, 0x60, 0x09, 0x85, 0x08, 0x72, 0x5f, 0xbe, 0x99, 0x56, 0x7b, 0xb9, 0xe0, 0xf8, 0x47, 0xf8,
- 0x7e, 0x7c, 0x16, 0x84, 0xb5, 0xe1, 0xf8, 0x6a, 0xf3, 0x8e, 0xdb, 0x21, 0x6f, 0xf8, 0x42, 0x2c,
- 0xa8, 0x1c, 0x5f, 0xe5, 0xb1, 0xf1, 0x30, 0xb0, 0x1a, 0xbe, 0x20, 0x12, 0x62, 0xb1, 0xbb, 0xd5,
- 0x3e, 0x16, 0x1e, 0x45, 0x82, 0x13, 0x2a, 0x41, 0x84, 0x2a, 0xb9, 0x81, 0x45, 0x2f, 0x51, 0xb5,
- 0x02, 0x65, 0xff, 0x8c, 0x1b, 0xdc, 0xec, 0xc8, 0xf1, 0x4c, 0xca, 0xad, 0xe4, 0x9f, 0xf1, 0x96,
- 0x89, 0x2b, 0xac, 0xfd, 0x7a, 0x14, 0x26, 0x44, 0xbd, 0xcf, 0xbc, 0xed, 0x2e, 0xa6, 0x0c, 0xd3,
- 0xb6, 0x0d, 0xd6, 0xe3, 0x34, 0x10, 0x56, 0xb8, 0x18, 0x45, 0xbd, 0x64, 0xda, 0x76, 0x53, 0xc8,
- 0x5a, 0x66, 0x47, 0xa4, 0xa9, 0x80, 0x76, 0xd9, 0x39, 0x4d, 0xc1, 0x46, 0x64, 0xb9, 0x21, 0xe5,
- 0x31, 0x72, 0x05, 0xca, 0x3c, 0x30, 0x7d, 0x83, 0x33, 0xe3, 0x94, 0x85, 0x32, 0x7c, 0x8b, 0x3a,
- 0x08, 0x59, 0x8b, 0xed, 0xb1, 0x90, 0x93, 0x1f, 0x01, 0x09, 0x68, 0xd7, 0x0c, 0xce, 0x14, 0x97,
- 0x5c, 0x8f, 0x31, 0xc4, 0xd5, 0xa4, 0x06, 0xd9, 0xe4, 0xca, 0x24, 0x68, 0xc7, 0xf3, 0x62, 0xf4,
- 0x78, 0x1a, 0xdd, 0x10, 0x0a, 0x89, 0x56, 0x63, 0x91, 0x50, 0xd1, 0xc9, 0x7c, 0x3c, 0x16, 0x44,
- 0x65, 0xc7, 0x92, 0xc0, 0x0a, 0xe9, 0xb1, 0xc4, 0xc8, 0x55, 0x98, 0xe6, 0x81, 0xe9, 0x85, 0xae,
- 0xc9, 0xd3, 0xe0, 0x22, 0x82, 0xa7, 0x62, 0xd5, 0x70, 0x7c, 0x32, 0x51, 0x13, 0x7d, 0xf8, 0x68,
- 0xae, 0xb4, 0xbf, 0xc9, 0x41, 0x5e, 0xae, 0x03, 0x79, 0x04, 0xa3, 0x56, 0x37, 0x7a, 0x91, 0x4c,
- 0x92, 0x77, 0xd3, 0xd1, 0x2a, 0xe9, 0x42, 0x3d, 0x7c, 0x67, 0xa4, 0xa2, 0x7d, 0x34, 0x13, 0xed,
- 0xc9, 0xf6, 0x1a, 0xeb, 0xdb, 0x5e, 0x72, 0xcb, 0x8c, 0x67, 0xb7, 0xcc, 0xf0, 0x9d, 0x91, 0xec,
- 0xbb, 0x42, 0x6a, 0xdf, 0x69, 0xff, 0x90, 0x87, 0xb1, 0x57, 0x2e, 0xbb, 0xc0, 0x83, 0xd0, 0xb2,
- 0x68, 0x18, 0x1a, 0xe9, 0x62, 0x66, 0x52, 0x2f, 0x4b, 0x69, 0x63, 0x58, 0x71, 0x35, 0x39, 0xf8,
- 0x00, 0x51, 0x92, 0x62, 0xf9, 0x00, 0xd1, 0xf7, 0x84, 0x90, 0x8f, 0x9f, 0x10, 0x3e, 0x83, 0xa9,
- 0xf0, 0xaa, 0xdb, 0xa5, 0x3c, 0x70, 0x2c, 0x23, 0x82, 0x10, 0x84, 0x4c, 0xc6, 0x8a, 0x57, 0x12,
- 0xbb, 0x0c, 0x78, 0xa4, 0xc9, 0x3d, 0x20, 0x8b, 0x98, 0xa2, 0x10, 0xe0, 0xa6, 0x5e, 0x84, 0x62,
- 0x74, 0x30, 0xe3, 0x16, 0x9d, 0xd4, 0x0b, 0xea, 0x50, 0x26, 0x9f, 0xc0, 0xa4, 0x47, 0xf9, 0x05,
- 0xc3, 0x88, 0x93, 0x23, 0x1a, 0x47, 0x44, 0x45, 0x89, 0x1b, 0xf1, 0x73, 0x5e, 0xaa, 0xfe, 0xcb,
- 0x23, 0x24, 0x55, 0xff, 0x7d, 0x01, 0x60, 0xc5, 0x99, 0x4e, 0xbd, 0x48, 0x9e, 0x8e, 0xd7, 0x35,
- 0x49, 0x82, 0x7a, 0x0a, 0x46, 0x3e, 0x85, 0xbc, 0x89, 0x2b, 0xae, 0x5e, 0x10, 0x4f, 0xf6, 0x05,
- 0x82, 0xae, 0xd4, 0x64, 0x09, 0x8a, 0x7e, 0xe0, 0xb0, 0xc0, 0xe1, 0x57, 0x18, 0x5e, 0x93, 0x7a,
- 0xdc, 0x4e, 0x3d, 0x2d, 0x95, 0x33, 0x4f, 0x4b, 0xa9, 0x4a, 0xb6, 0x92, 0xa9, 0x64, 0x17, 0xa1,
- 0xd8, 0x09, 0x58, 0xcf, 0x17, 0xe3, 0x50, 0xb9, 0x04, 0xdb, 0x72, 0x32, 0xd2, 0x1f, 0xe7, 0x04,
- 0x62, 0x12, 0x11, 0x15, 0x21, 0x3e, 0x92, 0xd2, 0x86, 0x4d, 0x3e, 0x86, 0x6a, 0x40, 0x7d, 0x57,
- 0x3c, 0x65, 0x52, 0x5c, 0x18, 0x2c, 0x09, 0x8b, 0x7a, 0x25, 0x96, 0x62, 0xb0, 0xec, 0xc1, 0xa4,
- 0x88, 0x31, 0x91, 0x1c, 0xd4, 0x4c, 0x2d, 0x4c, 0xe1, 0x69, 0xbe, 0x92, 0xf9, 0x8c, 0xb3, 0x2a,
- 0x42, 0xaf, 0xc5, 0x76, 0x25, 0xa4, 0xee, 0xf1, 0xe0, 0x4a, 0xaf, 0xf8, 0x69, 0x19, 0xa9, 0x27,
- 0xd5, 0x10, 0x67, 0x86, 0x49, 0xc3, 0x85, 0x69, 0x24, 0x7a, 0x90, 0x25, 0x52, 0xf0, 0x16, 0xdb,
- 0xa2, 0xa1, 0xe4, 0x89, 0xca, 0x25, 0x14, 0x2d, 0x7d, 0x0d, 0x64, 0xd0, 0x97, 0x38, 0x65, 0xcf,
- 0xe8, 0x95, 0x3a, 0x94, 0xc4, 0x9f, 0xe2, 0x34, 0x3e, 0x37, 0xdd, 0x1e, 0x8d, 0x9e, 0x0d, 0xb0,
- 0xf1, 0xd5, 0xc8, 0xf3, 0xdc, 0xd2, 0x4f, 0x61, 0x6a, 0xc0, 0xc9, 0xbb, 0x08, 0x8a, 0x29, 0x02,
- 0xad, 0x05, 0xe5, 0x4c, 0x25, 0xbc, 0x0c, 0x13, 0xb2, 0x9c, 0x8f, 0xf6, 0x52, 0x59, 0x2f, 0x4a,
- 0x41, 0xc3, 0x16, 0x4f, 0x7d, 0x4a, 0x19, 0xfa, 0xd4, 0x72, 0xda, 0x8e, 0xa5, 0x1e, 0x13, 0xaa,
- 0x52, 0x7c, 0xac, 0xa4, 0xda, 0x7f, 0x95, 0xa0, 0x9a, 0xfd, 0x96, 0x76, 0xfd, 0xf3, 0xc6, 0x22,
- 0x14, 0x83, 0x4b, 0xe3, 0xe4, 0x8a, 0xd3, 0x10, 0xd9, 0xf2, 0x7a, 0x21, 0xb8, 0x7c, 0x29, 0x9a,
- 0x22, 0xc8, 0x83, 0x4b, 0xc3, 0xc7, 0x07, 0x96, 0x50, 0x6d, 0xc6, 0x89, 0xe0, 0x52, 0x3e, 0xc1,
- 0x84, 0x98, 0x4a, 0x2f, 0x8d, 0x9e, 0x65, 0x8a, 0xa3, 0x48, 0x81, 0xc6, 0x10, 0x54, 0x0d, 0x2e,
- 0x5f, 0x0b, 0x71, 0x16, 0xd9, 0xcd, 0x20, 0xc7, 0x23, 0xe4, 0xc1, 0x20, 0xf2, 0x24, 0x83, 0xcc,
- 0x47, 0xc8, 0x97, 0x83, 0x48, 0xf9, 0x82, 0x37, 0x42, 0x16, 0x22, 0x24, 0xbe, 0xa2, 0x8d, 0x90,
- 0xcb, 0x30, 0x11, 0x5c, 0x1a, 0xed, 0xc0, 0xec, 0xd2, 0x10, 0x1f, 0x42, 0xf2, 0x7a, 0x31, 0xb8,
- 0x7c, 0x85, 0x6d, 0x71, 0x62, 0xc5, 0x4a, 0xe3, 0xd9, 0x53, 0x95, 0x4f, 0x20, 0xd2, 0x3f, 0x7b,
- 0x4a, 0x3e, 0x45, 0x47, 0x11, 0x62, 0xd3, 0x58, 0xdf, 0xf8, 0x12, 0x1f, 0x4c, 0xf2, 0x7a, 0x25,
- 0x46, 0x6d, 0xae, 0x6f, 0x7c, 0x49, 0x7e, 0x00, 0x53, 0x09, 0x70, 0x7d, 0xe3, 0xb9, 0xb1, 0xb1,
- 0xb9, 0xb9, 0x30, 0x13, 0x75, 0x49, 0x22, 0xd7, 0x37, 0x9e, 0x6f, 0x6c, 0x6e, 0x66, 0xa1, 0x1b,
- 0x9b, 0xcf, 0x8c, 0xcd, 0xf5, 0xf5, 0x85, 0xd9, 0x2c, 0x74, 0x63, 0xf3, 0xd9, 0xe6, 0xfa, 0x3a,
- 0xf9, 0x21, 0x90, 0x04, 0xba, 0xb9, 0xbe, 0x61, 0xac, 0x3f, 0xd9, 0xf8, 0x62, 0x61, 0x4e, 0xa6,
- 0xbd, 0x08, 0xbb, 0xb9, 0xbe, 0x21, 0xc4, 0xe4, 0x73, 0x98, 0x4e, 0x75, 0xe1, 0xc9, 0xc6, 0x53,
- 0x63, 0x7d, 0x73, 0xfd, 0xf9, 0xc2, 0x3c, 0xa2, 0x6b, 0x71, 0x27, 0x9e, 0x6c, 0x3c, 0x15, 0xf2,
- 0x3e, 0xf8, 0xe6, 0xfa, 0x0b, 0x63, 0xe3, 0xc9, 0xd3, 0x2f, 0x17, 0x16, 0xfa, 0xe0, 0x9b, 0xeb,
- 0x2f, 0x84, 0x3c, 0x0b, 0xdf, 0x78, 0xf2, 0xf4, 0xb9, 0xf1, 0xf4, 0xc9, 0x8b, 0xcd, 0x85, 0xc5,
- 0x2c, 0x5c, 0x28, 0x84, 0x3c, 0x0b, 0x7f, 0xfa, 0xe4, 0xc5, 0x33, 0xe3, 0xc5, 0xc6, 0xfa, 0xb3,
- 0x85, 0xa5, 0x2c, 0x5c, 0x28, 0x84, 0x9c, 0xac, 0xc1, 0x4c, 0x02, 0x7f, 0xb1, 0xb1, 0xfe, 0xa5,
- 0xb1, 0xfe, 0xec, 0x8b, 0xe7, 0x5f, 0x2c, 0x2c, 0x23, 0x7e, 0x2a, 0xc2, 0x0b, 0x0d, 0x2a, 0xc4,
- 0x71, 0x1f, 0x5c, 0x1a, 0x56, 0x60, 0xc9, 0x28, 0x08, 0x31, 0x7d, 0xe5, 0xf5, 0x52, 0x70, 0xb9,
- 0x1d, 0x58, 0x18, 0x01, 0x58, 0xda, 0xf1, 0x28, 0xba, 0x8b, 0x32, 0xba, 0x79, 0x12, 0xdd, 0x3c,
- 0x89, 0xee, 0x09, 0x19, 0xdd, 0x3c, 0x1d, 0xdd, 0xbc, 0x3f, 0xba, 0x41, 0xae, 0x10, 0x1f, 0x88,
- 0x6e, 0xde, 0x1f, 0xdd, 0xa5, 0x08, 0x79, 0x30, 0x88, 0xcc, 0x46, 0x77, 0x39, 0x42, 0xbe, 0x1c,
- 0x44, 0x66, 0xa3, 0xbb, 0x12, 0x21, 0xfb, 0xa3, 0x9b, 0xc7, 0xd1, 0x7d, 0x57, 0x46, 0x37, 0x4f,
- 0x45, 0x37, 0x4f, 0x47, 0xf7, 0x3d, 0x19, 0xdd, 0x3c, 0x13, 0xdd, 0xbc, 0x3f, 0xba, 0xef, 0xcb,
- 0xe8, 0xe6, 0xfd, 0xd1, 0xcd, 0x07, 0xa2, 0xfb, 0x41, 0xd4, 0xa5, 0xfe, 0xe8, 0xe6, 0x03, 0xd1,
- 0xbd, 0x92, 0x85, 0x26, 0xd1, 0xcd, 0x07, 0xa3, 0xfb, 0xa1, 0x8c, 0x6e, 0x3e, 0x18, 0xdd, 0x7c,
- 0x48, 0x74, 0x6b, 0x32, 0xa0, 0xf8, 0x90, 0xe8, 0xe6, 0x43, 0xa2, 0xfb, 0xa3, 0x3e, 0x78, 0x2a,
- 0xba, 0xf9, 0x90, 0xe8, 0x7e, 0x94, 0x85, 0xa7, 0xa3, 0x9b, 0x0f, 0x89, 0xee, 0x8f, 0xb3, 0xf0,
- 0x74, 0x74, 0xf3, 0x61, 0xd1, 0xfd, 0x89, 0x8c, 0x6e, 0x3e, 0x10, 0xdd, 0xf7, 0x00, 0x4e, 0x1c,
- 0x3f, 0x0a, 0xed, 0x49, 0x19, 0x9e, 0x27, 0x8e, 0xaf, 0x02, 0xfb, 0x2e, 0x4c, 0x70, 0xa7, 0x4b,
- 0x43, 0x6e, 0x76, 0x7d, 0x3c, 0x6e, 0x0b, 0x7a, 0x22, 0xd0, 0xfe, 0xb5, 0x80, 0xdf, 0x37, 0xde,
- 0x27, 0xff, 0x5f, 0xf3, 0xe6, 0xeb, 0x63, 0xa8, 0xfa, 0x2c, 0x74, 0xb8, 0x73, 0x4e, 0xe5, 0x37,
- 0x77, 0x95, 0xff, 0x2b, 0x91, 0x14, 0xbf, 0xa1, 0x0b, 0x98, 0x47, 0x3b, 0x66, 0x0a, 0x26, 0x4f,
- 0x80, 0x4a, 0x24, 0x95, 0xb0, 0xe7, 0xb0, 0x60, 0x53, 0xd7, 0xe9, 0x3a, 0xa2, 0x2a, 0xee, 0x3a,
- 0x61, 0x68, 0xd8, 0x94, 0x53, 0x2b, 0x7e, 0x71, 0x99, 0xd7, 0xe7, 0x62, 0xfd, 0x81, 0x13, 0x86,
- 0x3b, 0x91, 0xb6, 0x6f, 0x1a, 0xf2, 0xfd, 0xd3, 0xb0, 0x0c, 0xa2, 0x61, 0xf4, 0x3c, 0x27, 0x4e,
- 0xff, 0xc5, 0x13, 0xc7, 0x7f, 0x2d, 0xda, 0x64, 0x03, 0x66, 0xdb, 0xd4, 0x32, 0x2c, 0x16, 0x04,
- 0xf8, 0xd2, 0xc8, 0x08, 0xaf, 0xba, 0x27, 0xcc, 0x8d, 0x32, 0xc1, 0x74, 0x9b, 0x5a, 0xdb, 0x91,
- 0xee, 0x58, 0xaa, 0xc8, 0x33, 0x98, 0x97, 0x36, 0x36, 0xbd, 0x60, 0x81, 0x1d, 0x26, 0xd6, 0x2a,
- 0x45, 0xcc, 0xa2, 0x95, 0xd2, 0xc6, 0xe6, 0xe4, 0x27, 0xb0, 0x9c, 0xb5, 0xeb, 0x79, 0xca, 0xd2,
- 0x3c, 0x71, 0xa9, 0xca, 0x1c, 0x8b, 0x69, 0xdb, 0xd7, 0x69, 0x00, 0xf9, 0x08, 0x2a, 0x19, 0x7b,
- 0x95, 0x41, 0xca, 0x69, 0x0b, 0xf1, 0x88, 0x91, 0x1d, 0x90, 0x1c, 0xb7, 0x4c, 0x21, 0x53, 0xe9,
- 0xe1, 0xc8, 0x09, 0xf8, 0x04, 0x26, 0x2f, 0x3b, 0xb4, 0x6b, 0x9c, 0xd1, 0xab, 0x68, 0x06, 0x65,
- 0x12, 0xa9, 0x08, 0xf1, 0x37, 0xf4, 0x2a, 0x99, 0x45, 0xc4, 0xb9, 0x2c, 0x8c, 0xb2, 0x68, 0x51,
- 0x08, 0xf6, 0x59, 0x88, 0x24, 0xa2, 0x0a, 0x70, 0x99, 0xd9, 0x0d, 0x25, 0x8b, 0x8a, 0xc6, 0x4a,
- 0x70, 0x79, 0x84, 0x52, 0x64, 0x51, 0x07, 0x95, 0xc2, 0x79, 0xcc, 0x33, 0x1c, 0xdb, 0xa5, 0x18,
- 0x9a, 0x78, 0x50, 0x49, 0xe8, 0x21, 0xf3, 0x1a, 0xb6, 0x8b, 0xe5, 0x68, 0x70, 0x89, 0x57, 0x2d,
- 0xd4, 0x89, 0x9c, 0x0f, 0x2e, 0x9b, 0x5d, 0xcb, 0x21, 0xcf, 0x61, 0x51, 0x29, 0xa2, 0xbc, 0x97,
- 0x64, 0x78, 0x75, 0x38, 0xcf, 0x4a, 0xa8, 0x4a, 0x80, 0x51, 0xae, 0xcf, 0x14, 0x32, 0xd3, 0x37,
- 0x15, 0x32, 0x33, 0xfd, 0x85, 0x4c, 0xfa, 0x90, 0x98, 0xbd, 0xe9, 0x90, 0x98, 0xeb, 0x3f, 0x24,
- 0x1e, 0x42, 0xf9, 0x84, 0x06, 0x46, 0x40, 0x45, 0x09, 0x48, 0x6d, 0x75, 0xd0, 0x96, 0x4e, 0x68,
- 0xa0, 0x2b, 0x11, 0x79, 0x00, 0x25, 0xd7, 0xb2, 0x3b, 0xd1, 0xfc, 0xcb, 0xb3, 0x15, 0x84, 0x48,
- 0x4d, 0xbe, 0xe8, 0x9c, 0xed, 0x44, 0xfa, 0x45, 0xd5, 0x39, 0xdb, 0x19, 0xb6, 0xd1, 0x97, 0xfa,
- 0x37, 0xfa, 0x3f, 0xe7, 0xb0, 0x02, 0x7d, 0xdf, 0x62, 0xef, 0x1d, 0x1f, 0x67, 0xde, 0x51, 0xf0,
- 0xa5, 0x67, 0x78, 0x6c, 0x60, 0x86, 0x53, 0xf3, 0x34, 0xde, 0x3f, 0x4f, 0xe9, 0x19, 0xce, 0x67,
- 0x67, 0xf8, 0xe6, 0xf1, 0xfd, 0x6d, 0x0e, 0xaa, 0xd9, 0xbb, 0x5d, 0xe9, 0xe7, 0xc3, 0x5c, 0xe6,
- 0x0b, 0xd2, 0xf7, 0xaf, 0x64, 0xbf, 0x7f, 0x95, 0x70, 0x73, 0x1a, 0xfe, 0x1a, 0x2a, 0x99, 0xcb,
- 0x60, 0xd7, 0x2f, 0xcc, 0x1c, 0xe4, 0x43, 0x6e, 0xf2, 0x5e, 0xa8, 0xde, 0x7d, 0xaa, 0x96, 0xf6,
- 0x2d, 0x4c, 0x0f, 0xb9, 0x14, 0xf6, 0xc1, 0xd9, 0x3c, 0xa1, 0x1f, 0xcd, 0xd0, 0xff, 0xe5, 0x08,
- 0x7e, 0x1e, 0xea, 0xbf, 0xdc, 0xf6, 0x3d, 0x3e, 0x86, 0xbb, 0x2c, 0x34, 0x32, 0x2e, 0x26, 0x5c,
- 0x16, 0x1e, 0xa3, 0x40, 0xaa, 0x4f, 0x22, 0xf5, 0x58, 0xa4, 0x3e, 0x51, 0xea, 0xc7, 0x50, 0x73,
- 0x99, 0x6f, 0xc9, 0x73, 0x41, 0x81, 0xe4, 0x3b, 0xfb, 0xaa, 0x90, 0x8b, 0xf3, 0x40, 0x21, 0xd7,
- 0x61, 0x56, 0x21, 0x55, 0x46, 0x88, 0xe0, 0x79, 0xf9, 0x69, 0x41, 0xc2, 0x65, 0x3e, 0x50, 0x26,
- 0x62, 0xfb, 0xb1, 0xb6, 0x13, 0x01, 0x0b, 0xf2, 0x75, 0x98, 0x10, 0x29, 0xc0, 0x43, 0x28, 0x8b,
- 0xcc, 0x14, 0x23, 0x8a, 0x88, 0x28, 0xa1, 0x4c, 0x42, 0x34, 0x0a, 0xcb, 0x37, 0x5c, 0x85, 0xbb,
- 0xb5, 0xc5, 0xf8, 0xd3, 0x1c, 0x2c, 0x5d, 0x7f, 0x2f, 0xee, 0xb6, 0xdc, 0x90, 0x2f, 0x60, 0xce,
- 0xf1, 0xce, 0x69, 0x10, 0x52, 0x43, 0x3c, 0x8d, 0xcb, 0x79, 0x0c, 0x4c, 0x1e, 0x7d, 0x92, 0x9b,
- 0x56, 0xda, 0x97, 0x8e, 0xbc, 0xe9, 0xa2, 0x9b, 0x9c, 0x6a, 0xbf, 0x91, 0x7d, 0xbb, 0xe6, 0x5a,
- 0xdd, 0xad, 0xf5, 0x6d, 0x06, 0xc6, 0x93, 0x2a, 0xa2, 0xa0, 0xcb, 0x86, 0x60, 0xf7, 0xe8, 0x85,
- 0x41, 0xbf, 0x8b, 0xde, 0x5a, 0xe5, 0x3d, 0x7a, 0x51, 0xff, 0xce, 0xd6, 0x4e, 0xe1, 0xfe, 0xcd,
- 0x97, 0xf2, 0x6e, 0x6d, 0x6d, 0xfe, 0x2c, 0x27, 0x63, 0xe0, 0x9a, 0x6b, 0x7a, 0xff, 0xb7, 0x8b,
- 0xf3, 0xab, 0x1c, 0x68, 0xef, 0xbe, 0xf2, 0xf7, 0xbf, 0xbb, 0x48, 0xda, 0x77, 0xb8, 0x16, 0x37,
- 0x5c, 0x0d, 0xfc, 0x60, 0xff, 0x0f, 0xb2, 0xd7, 0x5c, 0xe4, 0xeb, 0xcd, 0xf4, 0xcd, 0x95, 0x33,
- 0x78, 0xf8, 0xce, 0x7b, 0x7c, 0xb7, 0x16, 0x01, 0x2d, 0x20, 0xba, 0x3a, 0x94, 0x53, 0xec, 0xa2,
- 0x38, 0x8a, 0x0e, 0x6f, 0xc3, 0x62, 0x3d, 0x8f, 0xa3, 0x17, 0x51, 0x1c, 0x29, 0xf0, 0xb6, 0x10,
- 0x5e, 0x9b, 0xdf, 0xff, 0x24, 0x07, 0x0b, 0xd7, 0x5d, 0x14, 0xfc, 0xe0, 0xae, 0x6f, 0x41, 0x25,
- 0xe9, 0xcc, 0xb0, 0xab, 0xc1, 0x83, 0x03, 0xd8, 0xbb, 0xa3, 0x97, 0x82, 0x44, 0xfa, 0xb2, 0x80,
- 0x1f, 0x9e, 0x78, 0xa8, 0x1d, 0xc2, 0xdd, 0x9b, 0xae, 0x61, 0x7e, 0x68, 0xdf, 0xb4, 0x5f, 0xc2,
- 0xca, 0xbb, 0xae, 0x2c, 0xde, 0xda, 0x52, 0xfd, 0x12, 0x16, 0xaf, 0xbd, 0xb7, 0xf8, 0x7d, 0xce,
- 0xb6, 0x54, 0x79, 0x36, 0xda, 0x57, 0x9e, 0x69, 0x7f, 0x91, 0x83, 0xc7, 0xef, 0x7b, 0x89, 0xf1,
- 0xd6, 0x76, 0xe0, 0xe7, 0x40, 0xd2, 0x17, 0x2b, 0x55, 0xdf, 0xe4, 0x76, 0x9c, 0x4a, 0x69, 0x54,
- 0x1f, 0xbb, 0xf0, 0xd1, 0x7b, 0x5c, 0x77, 0xbc, 0xb5, 0xe9, 0x77, 0x31, 0x1b, 0xbd, 0xe3, 0xca,
- 0xe3, 0xad, 0x79, 0xfb, 0xa3, 0x1c, 0x7c, 0xf2, 0x7e, 0x97, 0x1f, 0x6f, 0x6d, 0xfa, 0x97, 0xa0,
- 0xd8, 0x77, 0x8d, 0x25, 0x6e, 0x6b, 0xff, 0x91, 0x83, 0xd2, 0x6e, 0xc0, 0x7a, 0xfe, 0x01, 0xc5,
- 0x17, 0xba, 0x0f, 0xa1, 0xec, 0x44, 0x77, 0x92, 0x22, 0xc7, 0x15, 0xfc, 0xc9, 0x87, 0x94, 0x35,
- 0x6c, 0xd2, 0x80, 0x6a, 0x02, 0xc1, 0x0f, 0x16, 0xf2, 0x43, 0x72, 0x72, 0x0b, 0x37, 0x45, 0xb8,
- 0x1a, 0xdf, 0x70, 0xc2, 0x2f, 0xc6, 0x15, 0x27, 0xdd, 0x24, 0xf7, 0xa1, 0x24, 0x9e, 0xe3, 0xa2,
- 0x02, 0x7f, 0x14, 0x9d, 0x89, 0x02, 0xff, 0x48, 0x16, 0xf8, 0xe9, 0x2f, 0x07, 0x63, 0xa8, 0x8c,
- 0xdb, 0xda, 0xff, 0x87, 0x4a, 0x86, 0x9b, 0x14, 0x60, 0xf4, 0xa8, 0x79, 0x58, 0xbb, 0x43, 0x6a,
- 0x50, 0xae, 0x1f, 0x35, 0x0f, 0x8d, 0xf5, 0x5d, 0xe3, 0x68, 0xab, 0xb5, 0x57, 0xcb, 0x91, 0x29,
- 0xa8, 0x48, 0xc9, 0x13, 0x25, 0x1a, 0xd1, 0xfe, 0x60, 0x04, 0xc6, 0xb1, 0x9f, 0x99, 0x2f, 0x0a,
- 0x72, 0xb8, 0xf1, 0x17, 0x85, 0x1f, 0x43, 0xc1, 0x62, 0xdd, 0xae, 0xa9, 0x7e, 0xfb, 0x30, 0x30,
- 0xc6, 0xf4, 0x48, 0xc3, 0x6d, 0x89, 0xd4, 0x23, 0x13, 0xb2, 0x0a, 0x85, 0xae, 0x54, 0xa9, 0x6b,
- 0x00, 0x33, 0xc3, 0x66, 0x48, 0x8f, 0x40, 0xa9, 0x0f, 0x2a, 0x63, 0x37, 0x7e, 0x50, 0xd1, 0xbe,
- 0x81, 0xe9, 0x21, 0x8e, 0xc9, 0x24, 0x94, 0xb6, 0x76, 0x76, 0x8c, 0x83, 0xfa, 0xc1, 0xcb, 0xba,
- 0x7e, 0x5c, 0xbb, 0x43, 0x08, 0x54, 0xf5, 0xfa, 0x41, 0xf3, 0x4d, 0x3d, 0x96, 0xe5, 0x04, 0xe8,
- 0xb8, 0xde, 0x8a, 0x05, 0x23, 0xda, 0xb7, 0x00, 0x6f, 0x4c, 0xb7, 0x47, 0x8f, 0xcc, 0xc0, 0xec,
- 0x92, 0xfb, 0x30, 0xca, 0xbc, 0x9e, 0xfa, 0xb4, 0x57, 0xce, 0xdc, 0xab, 0x16, 0x0a, 0xb2, 0x96,
- 0xfe, 0x34, 0x50, 0xdd, 0x58, 0x5c, 0x8d, 0x7f, 0xcc, 0xb4, 0x8a, 0x2c, 0x62, 0x25, 0x56, 0x71,
- 0xa9, 0x25, 0x4e, 0xfb, 0xbb, 0x11, 0xa8, 0x1e, 0x31, 0x4f, 0xbf, 0x3c, 0x62, 0x17, 0x34, 0xd8,
- 0x31, 0xb9, 0x79, 0x6b, 0x71, 0xad, 0x67, 0x0f, 0xdc, 0x31, 0xec, 0xd1, 0x7a, 0xea, 0xd7, 0x39,
- 0x69, 0xaf, 0xab, 0x7a, 0x18, 0x3a, 0x07, 0xd4, 0x0c, 0x7b, 0x01, 0x6e, 0xed, 0xe1, 0xb7, 0x4b,
- 0xd5, 0x9b, 0x6e, 0x5f, 0x58, 0x19, 0x5d, 0x6a, 0x7a, 0x86, 0x7d, 0xd2, 0xc5, 0x2a, 0x2e, 0xa7,
- 0x57, 0x03, 0xc9, 0x76, 0x40, 0x4d, 0x6f, 0xe7, 0xa4, 0x2b, 0xd2, 0xf6, 0xb5, 0x9c, 0x64, 0x06,
- 0x6a, 0x43, 0x6e, 0x9f, 0xde, 0x85, 0x85, 0xac, 0xd4, 0xd8, 0xa9, 0xef, 0x37, 0x0e, 0x1a, 0xad,
- 0xba, 0x5e, 0xcb, 0x91, 0x45, 0x98, 0xed, 0xd3, 0x6e, 0x6d, 0x6f, 0xd7, 0x8f, 0xc5, 0x22, 0x15,
- 0x60, 0xbc, 0xde, 0xf5, 0xf9, 0xd5, 0xc6, 0x9f, 0xcf, 0x40, 0xa1, 0x29, 0x07, 0x48, 0x76, 0x00,
- 0x76, 0x9c, 0xd0, 0x3c, 0x71, 0x69, 0xd3, 0xe5, 0xa4, 0x1a, 0x0f, 0x1c, 0x91, 0x4b, 0x7d, 0x6d,
- 0x6d, 0xee, 0x57, 0xff, 0xf4, 0x2f, 0xbf, 0x19, 0xa9, 0x69, 0xa5, 0xb5, 0xf3, 0xf5, 0x35, 0x65,
- 0xf7, 0x55, 0xee, 0x33, 0xf2, 0x0a, 0x4a, 0x3a, 0xa5, 0xde, 0xfb, 0xd2, 0xcc, 0x23, 0xcd, 0x94,
- 0x56, 0x16, 0x34, 0x91, 0xa1, 0xe0, 0xa9, 0x43, 0x49, 0x55, 0x53, 0xb4, 0xe9, 0xf5, 0x48, 0x26,
- 0x76, 0x06, 0x58, 0x16, 0x90, 0x85, 0x68, 0x15, 0xc1, 0x52, 0x97, 0xce, 0xbd, 0x9e, 0xa0, 0xd9,
- 0x83, 0x4a, 0x7c, 0xea, 0xbe, 0x07, 0xd1, 0x22, 0x12, 0x4d, 0x6b, 0xd5, 0xd4, 0xa8, 0x14, 0xd3,
- 0x36, 0x4c, 0xec, 0x50, 0x97, 0x7e, 0x70, 0x77, 0x62, 0x23, 0x41, 0xd2, 0x00, 0x50, 0x97, 0xfb,
- 0x9a, 0x3d, 0x4e, 0x6a, 0x99, 0x1f, 0x9a, 0x1d, 0x84, 0x9d, 0x9b, 0xfb, 0x93, 0x58, 0x0a, 0xaa,
- 0x26, 0x94, 0xe3, 0x9b, 0x7d, 0x82, 0x8c, 0x64, 0x2e, 0xf7, 0xa3, 0x78, 0x80, 0x6e, 0x19, 0xe9,
- 0x66, 0xb5, 0x1a, 0xd2, 0xa5, 0xac, 0x05, 0xe1, 0xef, 0xc0, 0x64, 0xfa, 0x8e, 0x9e, 0xe0, 0x4c,
- 0xee, 0x67, 0xa6, 0x35, 0x03, 0xb4, 0xf7, 0x91, 0x76, 0x41, 0x9b, 0x16, 0xb4, 0x7d, 0x1c, 0x82,
- 0xf9, 0x6b, 0x28, 0xbc, 0x72, 0xd9, 0xc5, 0x96, 0x6d, 0x93, 0x4a, 0xe6, 0x1b, 0xe5, 0xcd, 0x51,
- 0xa5, 0x6c, 0x64, 0x54, 0x81, 0x68, 0xe9, 0x78, 0x47, 0xe1, 0x5d, 0x24, 0x99, 0x49, 0x4b, 0xcc,
- 0x04, 0xcf, 0x31, 0x54, 0xe3, 0xdb, 0xaf, 0xdb, 0xa7, 0xd4, 0x3a, 0x1b, 0x08, 0xd0, 0x64, 0x1a,
- 0x63, 0xa0, 0x76, 0x0f, 0x09, 0xe7, 0x35, 0x22, 0x08, 0xb3, 0xf6, 0x82, 0xf4, 0x00, 0x4a, 0x32,
- 0xe6, 0x8e, 0x98, 0xd7, 0x68, 0xa7, 0x16, 0x22, 0x3e, 0x50, 0x06, 0xba, 0xb8, 0x84, 0x8c, 0x33,
- 0xda, 0x64, 0x12, 0xb0, 0x68, 0xac, 0x16, 0x56, 0x45, 0xde, 0xfb, 0xf3, 0x65, 0x16, 0x36, 0x6d,
- 0x2d, 0x08, 0x75, 0xa8, 0xec, 0x52, 0x9e, 0xba, 0x43, 0xd9, 0x3f, 0xe6, 0xe9, 0x21, 0x77, 0xb6,
- 0xb4, 0xbb, 0x48, 0x39, 0xa7, 0x4d, 0x09, 0xca, 0x8c, 0xbd, 0xe0, 0xfc, 0x29, 0xe4, 0x75, 0x7a,
- 0xc2, 0xd8, 0xbb, 0x77, 0xf8, 0x2c, 0xf2, 0x4c, 0x6a, 0x20, 0x77, 0xb8, 0xb0, 0x11, 0x04, 0xaf,
- 0x61, 0x6a, 0x9b, 0xb9, 0x2e, 0xb5, 0xd2, 0x6f, 0xee, 0xde, 0xc5, 0xb5, 0x82, 0x5c, 0x4b, 0xda,
- 0xac, 0xe0, 0x1a, 0x30, 0x17, 0xb4, 0x3f, 0x83, 0xda, 0x2e, 0xe5, 0xd9, 0x97, 0xff, 0xd9, 0xcd,
- 0x3a, 0xd7, 0xf7, 0x03, 0x3f, 0x85, 0xd2, 0x1e, 0x20, 0xf7, 0xa2, 0x36, 0xa3, 0xc6, 0x9b, 0xd1,
- 0x0a, 0xea, 0x33, 0x98, 0xd9, 0xa5, 0x7c, 0xf0, 0x75, 0xe3, 0xb0, 0x8d, 0x97, 0xfc, 0x62, 0x75,
- 0x00, 0xaf, 0x7d, 0x84, 0x8e, 0xee, 0x69, 0x0b, 0xca, 0xd1, 0x00, 0x42, 0x38, 0x0b, 0x60, 0x7e,
- 0x3b, 0xa0, 0x26, 0xa7, 0xad, 0xc0, 0x6c, 0xb7, 0x1d, 0xeb, 0xd8, 0x3a, 0xa5, 0x76, 0xcf, 0x15,
- 0xe7, 0xfa, 0x83, 0xd5, 0xcc, 0x6f, 0x86, 0x07, 0x00, 0x03, 0xb3, 0xf6, 0x09, 0x3a, 0x5c, 0xd1,
- 0x96, 0x71, 0xd6, 0x86, 0xb3, 0x2a, 0x9f, 0x72, 0xa7, 0xdc, 0xb6, 0xcf, 0x6b, 0x58, 0x85, 0xcf,
- 0x36, 0x4c, 0x67, 0x7a, 0xf4, 0xdb, 0x3d, 0xda, 0xa3, 0x21, 0x59, 0x1e, 0xea, 0x4f, 0x2a, 0x07,
- 0x7c, 0x69, 0xe8, 0xeb, 0xae, 0x36, 0x3f, 0x30, 0x3e, 0x69, 0xa0, 0xfc, 0x64, 0x7a, 0xf1, 0x3f,
- 0xf6, 0x33, 0x84, 0x4d, 0xf8, 0xf9, 0x7f, 0x50, 0x93, 0xdb, 0x39, 0x55, 0x78, 0x5f, 0xbf, 0xdd,
- 0x12, 0x90, 0x76, 0xe7, 0x49, 0x8e, 0x7c, 0x0b, 0xb3, 0x47, 0x34, 0x68, 0xb3, 0xa0, 0x8b, 0xf5,
- 0x58, 0xd3, 0xa7, 0x41, 0x3f, 0x03, 0x2a, 0x06, 0x7a, 0xf6, 0x08, 0x7b, 0x76, 0x5f, 0x5b, 0x14,
- 0x3d, 0x1b, 0x4a, 0x21, 0x0f, 0x9f, 0x92, 0x3c, 0x8c, 0x64, 0xa1, 0xfa, 0x2e, 0xd2, 0x4c, 0x8e,
- 0x4a, 0x19, 0x0a, 0xaa, 0xb7, 0x50, 0xda, 0xa5, 0xbc, 0x7e, 0xc9, 0xb1, 0x4a, 0x23, 0xc9, 0x88,
- 0x92, 0xda, 0x6f, 0x69, 0x3e, 0x55, 0xcc, 0xe9, 0x94, 0xf7, 0x02, 0x0f, 0x95, 0x61, 0x96, 0x38,
- 0x45, 0x23, 0x88, 0xbf, 0xc5, 0x1f, 0x41, 0xc9, 0x17, 0x02, 0xf8, 0x5e, 0xf6, 0x98, 0x72, 0x32,
- 0xb7, 0xaa, 0x7e, 0xff, 0x9e, 0x55, 0xdd, 0x9c, 0x1e, 0x06, 0x68, 0x04, 0xbd, 0x0f, 0x8b, 0xbb,
- 0x94, 0xef, 0x0f, 0xbf, 0xab, 0x9f, 0xcd, 0x13, 0xcb, 0xd9, 0x5f, 0xb0, 0x65, 0x7e, 0x41, 0xa0,
- 0x3d, 0x46, 0x4f, 0x9a, 0x76, 0x4f, 0x0d, 0x61, 0x38, 0xa3, 0xf0, 0x78, 0x0a, 0xb3, 0x43, 0xf5,
- 0x1f, 0xe2, 0x2d, 0xb3, 0xbc, 0x43, 0xd9, 0x84, 0xa7, 0x16, 0xa6, 0xf9, 0xa4, 0x4c, 0xed, 0xf3,
- 0x30, 0x7f, 0x4d, 0x25, 0x3b, 0x90, 0xe8, 0x13, 0xf5, 0x57, 0xb9, 0xcf, 0x5e, 0x7e, 0x0b, 0xcb,
- 0x2c, 0xe8, 0xa0, 0xad, 0xc5, 0x02, 0x7b, 0x55, 0xfe, 0xdf, 0x03, 0x11, 0xd7, 0xcb, 0xca, 0x1b,
- 0x6c, 0x8b, 0x1a, 0xb2, 0xb9, 0xdf, 0xfa, 0xf9, 0x5a, 0xc7, 0xe1, 0xa7, 0xbd, 0x93, 0x55, 0x8b,
- 0x75, 0xd7, 0x22, 0x93, 0x35, 0x69, 0xf2, 0xb9, 0xfa, 0xef, 0x0a, 0xce, 0x37, 0xd7, 0x3a, 0x2c,
- 0xfa, 0xaf, 0x13, 0x4e, 0xf2, 0x28, 0xfd, 0xe2, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xed,
- 0x77, 0x2e, 0x5a, 0x41, 0x00, 0x00,
+ // 5260 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5c, 0x4d, 0x70, 0x23, 0x49,
+ 0x56, 0x6e, 0xd9, 0xb2, 0x24, 0x3f, 0x59, 0xb2, 0x9c, 0xfe, 0xb7, 0xfb, 0xc7, 0x5d, 0xf3, 0xd7,
+ 0x3b, 0xbb, 0x63, 0xb7, 0x3d, 0xed, 0x9e, 0xee, 0x61, 0xd9, 0x1d, 0xb7, 0xad, 0xb6, 0x35, 0x63,
+ 0x5b, 0xa6, 0xac, 0xee, 0x66, 0x77, 0x63, 0xa2, 0x28, 0x57, 0xa5, 0xe4, 0x5a, 0x97, 0x2a, 0x6b,
+ 0xaa, 0x52, 0xfe, 0xe1, 0xb8, 0xc1, 0xc2, 0x85, 0xdb, 0x06, 0x44, 0x00, 0x07, 0x82, 0xe0, 0xca,
+ 0x85, 0x1b, 0x11, 0x1c, 0x39, 0x70, 0xe1, 0xc6, 0x99, 0x1b, 0xc1, 0x85, 0x13, 0x17, 0x4e, 0x04,
+ 0x41, 0xe4, 0xcb, 0xac, 0x3f, 0x49, 0x76, 0x77, 0x0f, 0x26, 0xb8, 0x74, 0x38, 0xdf, 0xfb, 0xde,
+ 0xf7, 0xf2, 0xe7, 0xe5, 0xcb, 0x57, 0x55, 0xa9, 0x86, 0xe5, 0x73, 0xe6, 0xf2, 0x53, 0xd3, 0xf0,
+ 0x03, 0xc6, 0x59, 0xb8, 0xc6, 0x7c, 0xea, 0x31, 0x97, 0xaf, 0x62, 0x93, 0x14, 0x55, 0x73, 0xe9,
+ 0x6e, 0x87, 0xb1, 0x8e, 0x4b, 0xd7, 0x4c, 0xdf, 0x59, 0x33, 0x3d, 0x8f, 0x71, 0x93, 0x3b, 0xcc,
+ 0x0b, 0x25, 0x6c, 0x69, 0x25, 0xcb, 0xc1, 0xa9, 0x75, 0x2a, 0xfe, 0x6e, 0x3b, 0x2e, 0x55, 0x88,
+ 0xfb, 0x59, 0x04, 0xbd, 0xe4, 0x86, 0xc5, 0xbc, 0xb6, 0xd3, 0xb9, 0x56, 0x4f, 0xbd, 0x30, 0xf1,
+ 0xa0, 0xfd, 0x53, 0x1e, 0xa0, 0xe1, 0xd9, 0x8e, 0x85, 0x7e, 0xc9, 0x3a, 0x14, 0x99, 0xcb, 0x0d,
+ 0xc7, 0xb3, 0x17, 0x72, 0x2b, 0xb9, 0x47, 0xe5, 0x8d, 0xb9, 0xd5, 0xa8, 0xe3, 0x4d, 0x97, 0x27,
+ 0xc0, 0xbd, 0x3b, 0x7a, 0x81, 0xa1, 0x80, 0x3c, 0x81, 0x92, 0xe3, 0xf1, 0x36, 0xda, 0x8c, 0xa0,
+ 0xcd, 0x7c, 0x6c, 0xd3, 0xf0, 0x78, 0x3b, 0x63, 0x54, 0x74, 0xa4, 0x84, 0x6c, 0x41, 0x05, 0xad,
+ 0x98, 0x4f, 0x03, 0x34, 0x1d, 0x45, 0xd3, 0xe5, 0x8c, 0x69, 0xd3, 0xa7, 0x41, 0xc6, 0xbc, 0xec,
+ 0x24, 0x52, 0xf2, 0x13, 0x98, 0x60, 0x5e, 0xcf, 0xb0, 0x9d, 0xd0, 0x42, 0x86, 0x3c, 0x32, 0x2c,
+ 0x25, 0x1d, 0xf6, 0x7a, 0x3b, 0x4e, 0x68, 0x65, 0x08, 0x80, 0xc5, 0x42, 0x1c, 0xab, 0xd7, 0x43,
+ 0xd3, 0xb1, 0xfe, 0xb1, 0x7a, 0xbd, 0xbe, 0xb1, 0xa2, 0x40, 0x8c, 0x95, 0x75, 0x2d, 0x07, 0x6d,
+ 0x0a, 0x7d, 0x63, 0x6d, 0x76, 0x2d, 0x27, 0x3b, 0x56, 0x26, 0x25, 0xe4, 0x09, 0x14, 0xfd, 0x33,
+ 0x39, 0xa9, 0x45, 0x34, 0x5a, 0x8c, 0x8d, 0x8e, 0x4c, 0xeb, 0x8c, 0xf6, 0xcd, 0xab, 0x7f, 0x86,
+ 0xf3, 0xfa, 0x0c, 0xc0, 0x67, 0x01, 0x37, 0x42, 0x6e, 0xf2, 0x70, 0xa1, 0xd4, 0xe7, 0xed, 0x88,
+ 0x05, 0xfc, 0x58, 0x04, 0x4b, 0xc8, 0x1d, 0x2b, 0xdc, 0xbb, 0xa3, 0x8f, 0xfb, 0x4a, 0x12, 0x0a,
+ 0xcb, 0xb6, 0xcb, 0x2e, 0x94, 0xe5, 0x78, 0x9f, 0xe5, 0x4b, 0x97, 0x5d, 0x64, 0x2d, 0xdb, 0x4a,
+ 0x12, 0x92, 0x2f, 0x60, 0xdc, 0x74, 0xcd, 0xa0, 0x8b, 0x7d, 0x05, 0x34, 0x5c, 0x88, 0x0d, 0xb7,
+ 0x84, 0x26, 0xd3, 0xd5, 0x92, 0xa9, 0x44, 0x2f, 0x0a, 0x90, 0xb7, 0x4d, 0x6e, 0x6a, 0xff, 0x5e,
+ 0x81, 0xc9, 0x3e, 0x9c, 0x98, 0x67, 0x97, 0x85, 0x43, 0x63, 0x6a, 0x9f, 0x85, 0xd9, 0xb1, 0xbb,
+ 0x28, 0x20, 0x3b, 0x50, 0xb5, 0xaf, 0x1c, 0xaf, 0x63, 0x74, 0xcc, 0xd0, 0x4f, 0x45, 0xd6, 0xdd,
+ 0xd8, 0x72, 0x47, 0xa8, 0x77, 0xcd, 0xd0, 0xcf, 0xd8, 0x4f, 0xd8, 0x29, 0xb1, 0x88, 0x31, 0xb1,
+ 0xc0, 0xc9, 0x88, 0xfa, 0x63, 0xac, 0xe9, 0xf5, 0x06, 0x07, 0x55, 0x66, 0x89, 0x94, 0xbc, 0x81,
+ 0x19, 0x41, 0x11, 0x72, 0x33, 0xe0, 0x3d, 0xdf, 0x68, 0x9b, 0x8e, 0x9b, 0x8a, 0xb5, 0x0f, 0xd3,
+ 0x4c, 0xc7, 0x12, 0xf3, 0xd2, 0x74, 0xdc, 0x5e, 0x40, 0x33, 0x94, 0x53, 0x2c, 0xa3, 0x16, 0xc4,
+ 0x3f, 0x87, 0x39, 0x24, 0x76, 0x3a, 0x9e, 0xe9, 0x1a, 0x36, 0xed, 0x04, 0xa6, 0x4d, 0x53, 0xb1,
+ 0xf8, 0x41, 0x86, 0x1a, 0x51, 0x3b, 0x12, 0x94, 0x61, 0x9e, 0x66, 0x83, 0x5a, 0xf2, 0x0b, 0x98,
+ 0xc7, 0x8d, 0x11, 0x38, 0x6d, 0x6e, 0xb0, 0xb6, 0x71, 0xe1, 0x78, 0x36, 0xbb, 0x48, 0x05, 0x6d,
+ 0x86, 0x7c, 0x47, 0xc0, 0x9a, 0xed, 0x37, 0x08, 0x1a, 0x20, 0xef, 0xd7, 0x92, 0x16, 0x88, 0xd1,
+ 0x18, 0x2e, 0x0b, 0x43, 0x23, 0xde, 0x0b, 0x32, 0xac, 0x3f, 0x49, 0xd3, 0xee, 0xb3, 0x30, 0x6c,
+ 0xb6, 0xc5, 0xa6, 0xd8, 0x3e, 0x35, 0x3d, 0x8f, 0xba, 0x19, 0xea, 0x2a, 0x53, 0x08, 0xb5, 0x45,
+ 0xa2, 0x79, 0xc6, 0xa1, 0x84, 0xc9, 0x3c, 0x97, 0x86, 0xcc, 0xb3, 0xc4, 0x5c, 0x3b, 0xcf, 0x89,
+ 0x5a, 0x10, 0x37, 0x65, 0x92, 0xe0, 0xce, 0x85, 0xec, 0xa9, 0xdc, 0x0d, 0x3f, 0x4c, 0x13, 0xb6,
+ 0x02, 0xd3, 0x0b, 0xbb, 0x4e, 0x28, 0xd2, 0x62, 0xc3, 0xe3, 0x34, 0x68, 0xd3, 0x80, 0x7a, 0x16,
+ 0x7d, 0x63, 0x06, 0x9e, 0xe3, 0x75, 0x54, 0xd6, 0x68, 0x39, 0x17, 0xd8, 0xd3, 0xdf, 0x93, 0x93,
+ 0x6b, 0x5a, 0xdc, 0x39, 0x47, 0xbf, 0x49, 0x67, 0x61, 0x70, 0x16, 0xb6, 0x62, 0xd8, 0xb0, 0xfe,
+ 0x8a, 0x31, 0x67, 0x11, 0xd2, 0xc3, 0x82, 0xf0, 0xe0, 0x07, 0xcc, 0xa2, 0x61, 0x28, 0x76, 0x01,
+ 0x0d, 0x02, 0x26, 0xb3, 0x64, 0x19, 0x5d, 0x7c, 0x94, 0x76, 0x71, 0x14, 0xe3, 0xea, 0x02, 0x96,
+ 0x71, 0x30, 0xcb, 0x86, 0xe9, 0x09, 0x85, 0xc5, 0x64, 0x0d, 0xdb, 0x46, 0x78, 0xe5, 0x59, 0xc9,
+ 0x28, 0x26, 0xd0, 0xc5, 0xa7, 0x83, 0x6b, 0xf9, 0x0d, 0xbd, 0x3a, 0xbe, 0xf2, 0xac, 0xeb, 0x06,
+ 0x22, 0x41, 0x11, 0x42, 0xb8, 0x79, 0x05, 0xb3, 0x98, 0x60, 0x79, 0xcf, 0xf0, 0x99, 0x27, 0xd3,
+ 0x11, 0xba, 0xa8, 0xa0, 0x8b, 0x87, 0x99, 0x74, 0xcb, 0x7b, 0x47, 0xcc, 0xc3, 0x2c, 0x34, 0xb0,
+ 0xa4, 0x59, 0x1d, 0x71, 0xe1, 0x2e, 0x86, 0x37, 0xed, 0x5b, 0x83, 0x5e, 0x20, 0x37, 0x50, 0x15,
+ 0xd9, 0x7f, 0x90, 0x89, 0xf1, 0x14, 0x76, 0x58, 0xff, 0xc5, 0x74, 0x0c, 0xc7, 0x90, 0x37, 0x72,
+ 0x10, 0x01, 0xed, 0x32, 0x4e, 0x0d, 0x9b, 0xb6, 0xa9, 0x25, 0x53, 0xf9, 0x24, 0xba, 0xd1, 0xd2,
+ 0x6e, 0x74, 0x04, 0xed, 0x20, 0x26, 0xc3, 0x4f, 0xd8, 0x80, 0x92, 0x84, 0x72, 0x18, 0xb8, 0x08,
+ 0x1d, 0xda, 0x35, 0x6c, 0xea, 0x3a, 0x1e, 0x95, 0xc3, 0x11, 0xfc, 0x35, 0xe4, 0x5f, 0x1f, 0x5c,
+ 0x87, 0xdd, 0xfa, 0x81, 0xda, 0x52, 0x3b, 0x89, 0x49, 0xc6, 0xdd, 0x82, 0x5a, 0x8e, 0x5d, 0xda,
+ 0xcd, 0x42, 0xc8, 0x39, 0xac, 0x60, 0x6c, 0x9d, 0x5e, 0x85, 0x8e, 0x65, 0xba, 0x06, 0xfd, 0xae,
+ 0xe7, 0xf8, 0x5d, 0xea, 0xf1, 0x54, 0x8c, 0x4d, 0xa1, 0xe3, 0x1f, 0x65, 0x62, 0x4c, 0xe1, 0xeb,
+ 0x11, 0x7c, 0x30, 0xd4, 0xc4, 0x60, 0xae, 0x85, 0x91, 0x5f, 0xc0, 0x74, 0x3a, 0xe2, 0x4c, 0xeb,
+ 0x0c, 0x5d, 0x91, 0xc1, 0xdd, 0x28, 0xc7, 0xb8, 0x65, 0x9d, 0x79, 0xec, 0xc2, 0xa5, 0x76, 0x87,
+ 0x0a, 0x9e, 0x8c, 0xa7, 0x49, 0x96, 0x42, 0x09, 0x72, 0x06, 0xcb, 0xb2, 0x10, 0x68, 0xb7, 0x8d,
+ 0x80, 0x9a, 0xd6, 0xa9, 0x41, 0x2f, 0x2d, 0x4a, 0x6d, 0x6a, 0xa3, 0x93, 0x69, 0x74, 0xb2, 0x96,
+ 0xad, 0x0b, 0xda, 0xb8, 0xc9, 0xb9, 0x63, 0xba, 0xba, 0xb0, 0xa8, 0x2b, 0x83, 0x8c, 0xa3, 0x79,
+ 0x26, 0x91, 0xfd, 0x88, 0xf8, 0xb4, 0x5b, 0x85, 0x4a, 0xa6, 0x2a, 0x22, 0xf7, 0x00, 0xb0, 0xa0,
+ 0x11, 0xa1, 0x4e, 0xf1, 0xb4, 0x1b, 0xd7, 0xc7, 0x85, 0x44, 0x04, 0x2f, 0xd5, 0xf6, 0xa0, 0x9a,
+ 0xad, 0x88, 0xc8, 0x3c, 0x14, 0x65, 0xf1, 0x24, 0xcf, 0xc6, 0xa2, 0x5e, 0xc0, 0x02, 0xc9, 0xee,
+ 0x63, 0x1a, 0xe9, 0x67, 0x3a, 0x85, 0xa9, 0x81, 0xf2, 0xe6, 0x7a, 0xb2, 0x2f, 0xa1, 0x12, 0xd2,
+ 0xc0, 0x31, 0x5d, 0xc3, 0xeb, 0x75, 0x4f, 0x68, 0xa0, 0x4e, 0xd3, 0xd9, 0x78, 0x4a, 0x8e, 0x51,
+ 0x7b, 0x88, 0x4a, 0x7d, 0x22, 0x4c, 0xb5, 0xb4, 0xdf, 0xe4, 0xa1, 0x92, 0x29, 0x87, 0xae, 0x77,
+ 0x33, 0x0b, 0x05, 0xdc, 0xef, 0xf2, 0xb4, 0x2e, 0xea, 0x63, 0x62, 0xef, 0xf6, 0x0f, 0x65, 0xb4,
+ 0x6f, 0x28, 0xe4, 0x01, 0x94, 0x4d, 0xbb, 0xeb, 0x78, 0x4a, 0x3f, 0x86, 0x7a, 0x40, 0x91, 0x04,
+ 0x0c, 0xf4, 0x3e, 0xff, 0xce, 0xbd, 0x27, 0xfb, 0x50, 0xc6, 0xc4, 0x16, 0x50, 0x33, 0x64, 0x1e,
+ 0x1e, 0x7f, 0xd5, 0x6c, 0xbc, 0x25, 0x03, 0x5b, 0xcd, 0xa6, 0x62, 0x1d, 0x4d, 0x74, 0x68, 0xc7,
+ 0x7f, 0x6b, 0x7f, 0x34, 0x02, 0x33, 0xc3, 0x40, 0xe4, 0x03, 0x78, 0xd0, 0x3c, 0x7c, 0x65, 0x6c,
+ 0x6d, 0xb7, 0x1a, 0xaf, 0xb7, 0x5a, 0x8d, 0xe6, 0xa1, 0xf1, 0x72, 0xab, 0xb1, 0x6f, 0xe8, 0xf5,
+ 0xad, 0xe3, 0xe6, 0xa1, 0x71, 0xd8, 0x3c, 0xac, 0xd7, 0xee, 0x90, 0x8f, 0x41, 0xbb, 0x01, 0xa4,
+ 0x6f, 0x1d, 0xee, 0x36, 0x0e, 0x77, 0x6b, 0x39, 0xf2, 0x14, 0x36, 0x6e, 0xc0, 0x1d, 0x6d, 0x1d,
+ 0x1f, 0xbf, 0x69, 0xea, 0x3b, 0xc6, 0xd6, 0xab, 0xd6, 0x5e, 0xfd, 0xb0, 0xd5, 0xd8, 0x46, 0x4c,
+ 0x6d, 0x84, 0x68, 0x70, 0xff, 0x06, 0xbb, 0xfd, 0xe6, 0x71, 0x6d, 0x94, 0x3c, 0x84, 0x7b, 0xc3,
+ 0x30, 0x28, 0xdb, 0xdf, 0xd2, 0x0f, 0x6a, 0xf9, 0xeb, 0xc6, 0x72, 0xfc, 0xa6, 0xd1, 0xda, 0xde,
+ 0x33, 0x9a, 0xaf, 0xeb, 0x7a, 0x6d, 0x4c, 0x3b, 0x07, 0x32, 0x58, 0xa0, 0x13, 0x02, 0x79, 0x7e,
+ 0xe5, 0x47, 0x81, 0x8f, 0x7f, 0xa7, 0xa3, 0x65, 0xe4, 0x86, 0x08, 0x1f, 0x08, 0x8b, 0x19, 0x18,
+ 0x0b, 0x7d, 0x4a, 0x65, 0xa9, 0x55, 0xd4, 0x65, 0x43, 0xd3, 0xa1, 0x9a, 0xad, 0xb3, 0xdf, 0x3b,
+ 0x1a, 0x6b, 0x30, 0xea, 0x9f, 0x71, 0xf4, 0x37, 0xa1, 0x8b, 0x3f, 0xb5, 0xff, 0xc8, 0x41, 0xad,
+ 0xbf, 0x0e, 0x27, 0xcb, 0x30, 0x8e, 0xb4, 0x38, 0x1e, 0x19, 0x93, 0xf8, 0x98, 0xd3, 0xea, 0x1b,
+ 0xd3, 0x75, 0x3e, 0x4b, 0x69, 0x9f, 0xb3, 0x50, 0xe8, 0x79, 0x8e, 0x10, 0x8f, 0x4b, 0x71, 0xcf,
+ 0x73, 0xe4, 0x0c, 0x74, 0x68, 0x17, 0x8b, 0xfc, 0xb8, 0x97, 0xe3, 0x4a, 0xd2, 0xb0, 0x85, 0x17,
+ 0x2c, 0xe3, 0x1d, 0x59, 0xb8, 0x16, 0xf5, 0x82, 0x68, 0x4a, 0x05, 0x1a, 0x79, 0x0c, 0x03, 0xba,
+ 0xa8, 0x17, 0x44, 0xf3, 0x90, 0x91, 0x39, 0x28, 0x58, 0x8c, 0x9d, 0x39, 0x14, 0x0b, 0xb2, 0x82,
+ 0xae, 0x5a, 0xd1, 0x98, 0xf3, 0xc9, 0x98, 0x3f, 0x84, 0x71, 0x59, 0xea, 0x98, 0xd6, 0xf5, 0xc3,
+ 0xd1, 0x7e, 0x0c, 0xe3, 0x7b, 0xd4, 0x0c, 0xf8, 0x09, 0x35, 0x39, 0x59, 0x83, 0xe9, 0xd3, 0xa8,
+ 0x21, 0x0b, 0x35, 0xde, 0x0b, 0xa8, 0xb2, 0x20, 0xb1, 0xea, 0x38, 0xd2, 0x68, 0x7f, 0x93, 0x83,
+ 0xd1, 0xa6, 0xd7, 0x7b, 0xef, 0x15, 0x1a, 0xd8, 0xef, 0xa3, 0xef, 0xbe, 0xdf, 0xc5, 0x48, 0x9d,
+ 0x40, 0xc5, 0x8c, 0xf8, 0x93, 0x7c, 0x02, 0x93, 0xac, 0x6b, 0x59, 0x06, 0xf5, 0xac, 0xe0, 0xca,
+ 0x17, 0x6b, 0x8b, 0xcb, 0x59, 0xd2, 0xab, 0x42, 0x5c, 0x8f, 0xa5, 0xda, 0xdf, 0xe6, 0x80, 0xe0,
+ 0xf9, 0xd3, 0x11, 0x47, 0xd8, 0x8e, 0x13, 0x72, 0xd3, 0xb3, 0xe8, 0x7b, 0xf7, 0xfe, 0x39, 0x2c,
+ 0xba, 0x92, 0xc2, 0x50, 0x4f, 0xa7, 0xc8, 0x63, 0xfc, 0x3e, 0x0d, 0x98, 0x5a, 0xc7, 0x39, 0x05,
+ 0x90, 0x19, 0x1c, 0xd5, 0x3f, 0xa7, 0x01, 0x23, 0x8f, 0x61, 0x66, 0x98, 0xa9, 0x1a, 0x0d, 0x19,
+ 0xb4, 0xd2, 0xbe, 0x81, 0xa2, 0xd8, 0x0e, 0x07, 0x61, 0xe7, 0x16, 0xf6, 0xc1, 0xaf, 0x73, 0x30,
+ 0x2e, 0xce, 0x7a, 0xdc, 0x0a, 0xef, 0xcd, 0x97, 0x0a, 0xca, 0x7c, 0x26, 0x28, 0xb3, 0x51, 0x3e,
+ 0xd6, 0x1f, 0xe5, 0x83, 0xfd, 0x78, 0x0e, 0x13, 0xaf, 0x7c, 0xd7, 0xf1, 0xce, 0xde, 0xd6, 0x13,
+ 0x65, 0x3a, 0x92, 0x98, 0xfe, 0x45, 0x11, 0x60, 0x87, 0x9e, 0x3b, 0x16, 0x6d, 0x78, 0x6d, 0xdc,
+ 0x0f, 0xe7, 0xd4, 0xb3, 0x59, 0xa0, 0x32, 0x92, 0x6a, 0x89, 0xdc, 0xd2, 0x65, 0x36, 0x75, 0xd5,
+ 0xb9, 0x2a, 0x1b, 0xe4, 0x07, 0x50, 0x3b, 0x35, 0x03, 0xfb, 0xc2, 0x0c, 0xa8, 0x71, 0x4e, 0x03,
+ 0xf1, 0x38, 0xa0, 0xd2, 0xd2, 0x64, 0x24, 0x7f, 0x2d, 0xc5, 0x02, 0xda, 0x76, 0x82, 0x6e, 0x06,
+ 0x9a, 0x97, 0xd0, 0x48, 0x1e, 0x41, 0x97, 0x61, 0xdc, 0xc6, 0x1e, 0x89, 0xfe, 0xd7, 0x64, 0x22,
+ 0x91, 0x82, 0x86, 0x2d, 0x56, 0x5c, 0x29, 0xb3, 0x11, 0x3f, 0x85, 0x38, 0x22, 0x75, 0xe9, 0x70,
+ 0x27, 0xeb, 0x30, 0xe3, 0x07, 0xf4, 0xdc, 0x61, 0xbd, 0xd0, 0xbd, 0x32, 0x2c, 0xe6, 0x79, 0xd4,
+ 0xe2, 0x54, 0x16, 0x39, 0x25, 0x7d, 0x3a, 0xd1, 0x6d, 0x47, 0x2a, 0xd1, 0x03, 0x51, 0x7e, 0x8b,
+ 0xf9, 0x0e, 0xb1, 0xba, 0x2f, 0xea, 0x25, 0x9f, 0x79, 0x47, 0xa2, 0x4d, 0xbe, 0x82, 0x42, 0x60,
+ 0x7a, 0x1d, 0x1a, 0x2e, 0x4c, 0xae, 0x8c, 0x3e, 0x2a, 0x6f, 0x3c, 0x4a, 0x9e, 0xb0, 0xe3, 0x79,
+ 0x54, 0x7f, 0xea, 0x34, 0x64, 0xbd, 0xc0, 0xa2, 0x3a, 0xe2, 0x75, 0x65, 0xb7, 0xf4, 0x27, 0x79,
+ 0x98, 0x19, 0x06, 0x20, 0x8b, 0xd1, 0x8b, 0x21, 0x3b, 0x5c, 0xc8, 0xad, 0x8c, 0x3e, 0x2a, 0xaa,
+ 0xb7, 0x3f, 0x76, 0x48, 0xee, 0x03, 0x70, 0x6a, 0x9d, 0x7a, 0xcc, 0x65, 0x9d, 0x2b, 0xb5, 0x0a,
+ 0x29, 0x09, 0xd9, 0x86, 0x31, 0x9f, 0x31, 0x37, 0x5c, 0x18, 0xc5, 0x4e, 0x7d, 0xf6, 0xae, 0x9d,
+ 0x5a, 0x3d, 0x62, 0xcc, 0xd5, 0xa5, 0xed, 0xd2, 0x7f, 0x8d, 0x40, 0x5e, 0xb4, 0xc9, 0xd7, 0xa9,
+ 0x63, 0xa9, 0xba, 0xf1, 0xf4, 0xbd, 0xc8, 0xf0, 0x1f, 0x91, 0xf4, 0xd5, 0x71, 0x76, 0x0c, 0xc5,
+ 0xf0, 0xd4, 0x0c, 0x1c, 0xaf, 0x83, 0xdd, 0xae, 0x6e, 0x3c, 0x7f, 0x3f, 0xba, 0x63, 0x69, 0x8c,
+ 0x8c, 0x11, 0x13, 0x9e, 0x75, 0xdc, 0x0c, 0xb8, 0xca, 0x0f, 0xb2, 0x21, 0xc2, 0x9b, 0x7a, 0xd1,
+ 0xf9, 0x27, 0xfe, 0xd4, 0xb6, 0xa0, 0x14, 0x75, 0x87, 0x00, 0x14, 0xc4, 0x31, 0xdd, 0xd8, 0xa9,
+ 0xdd, 0x21, 0x13, 0x50, 0xda, 0xda, 0xdf, 0x6f, 0x6e, 0x8b, 0x56, 0x8e, 0x54, 0x01, 0x76, 0xeb,
+ 0x07, 0x47, 0x4d, 0xbd, 0x25, 0xda, 0x23, 0xa4, 0x0c, 0xc5, 0x97, 0xfb, 0xcd, 0x37, 0xa2, 0x31,
+ 0xaa, 0x9d, 0x42, 0x39, 0xd5, 0x05, 0x32, 0x07, 0x64, 0xa7, 0xbe, 0x23, 0x6a, 0x88, 0xfa, 0x8e,
+ 0x71, 0x54, 0xd7, 0x8d, 0xc6, 0x61, 0xeb, 0x65, 0xed, 0x0e, 0x79, 0x00, 0xcb, 0xc7, 0x7b, 0x5b,
+ 0x7a, 0x7d, 0xc7, 0x78, 0xf1, 0x33, 0x63, 0x6b, 0x7f, 0x1f, 0xe5, 0xf8, 0x47, 0xab, 0xbe, 0xbd,
+ 0x57, 0xcb, 0x91, 0x15, 0xb8, 0x3b, 0x04, 0x70, 0xbc, 0x75, 0x50, 0x97, 0x88, 0x91, 0xaf, 0xf3,
+ 0xa5, 0xb1, 0xda, 0xc4, 0xd7, 0xf9, 0x52, 0xa5, 0x56, 0xfd, 0x3a, 0x5f, 0xaa, 0xd6, 0x26, 0xb5,
+ 0x3f, 0x18, 0x05, 0xd8, 0x76, 0xcd, 0x30, 0x74, 0xda, 0x0e, 0x0d, 0x30, 0x91, 0x18, 0xdc, 0x8f,
+ 0xb7, 0xf5, 0x18, 0x6b, 0xf9, 0x8e, 0x4d, 0xa6, 0x61, 0x8c, 0x19, 0xe7, 0x71, 0x7a, 0xc9, 0xb3,
+ 0xd7, 0x0e, 0x26, 0x1d, 0x47, 0x62, 0xd5, 0x14, 0x39, 0x11, 0xd6, 0x41, 0xac, 0x9c, 0xa4, 0xbc,
+ 0x23, 0xb0, 0xf3, 0x50, 0x64, 0x86, 0x7f, 0xe2, 0xf0, 0x50, 0x65, 0x9b, 0x02, 0x3b, 0x12, 0x2d,
+ 0x4c, 0x24, 0x4a, 0xa1, 0xce, 0x4d, 0x47, 0x2a, 0x16, 0xa1, 0x44, 0xf9, 0xa9, 0x3c, 0xeb, 0x8b,
+ 0xa8, 0x29, 0x52, 0x7e, 0x1a, 0x1d, 0xf5, 0x76, 0xc8, 0x8d, 0xae, 0x69, 0xe1, 0x91, 0x3e, 0xa1,
+ 0x17, 0xec, 0x90, 0x1f, 0x98, 0x96, 0x50, 0x84, 0x81, 0x85, 0x8a, 0x71, 0xa9, 0x08, 0x03, 0x4b,
+ 0x28, 0x44, 0xd8, 0xfb, 0xf2, 0x7d, 0x2b, 0xbe, 0x11, 0x10, 0x61, 0xef, 0x1f, 0xe1, 0x5b, 0xdf,
+ 0x59, 0x10, 0xd6, 0x86, 0xe3, 0xe3, 0x73, 0x7c, 0x51, 0x1f, 0xb3, 0x43, 0xde, 0xf0, 0x85, 0x58,
+ 0x50, 0x39, 0xbe, 0xda, 0x9d, 0x63, 0x61, 0x60, 0x35, 0x7c, 0x41, 0x24, 0xc4, 0x62, 0xdf, 0xe2,
+ 0x13, 0x73, 0x51, 0x17, 0x1e, 0xc5, 0xb6, 0x15, 0x2a, 0x41, 0x84, 0xaa, 0xaa, 0x54, 0xd9, 0x21,
+ 0x47, 0xd5, 0x0a, 0x4c, 0xf8, 0x67, 0xdc, 0xe0, 0x66, 0x47, 0x8e, 0x67, 0x52, 0x6e, 0x2e, 0xff,
+ 0x8c, 0xb7, 0x4c, 0x5c, 0x73, 0xed, 0xd7, 0xa3, 0x30, 0x2e, 0xaa, 0x58, 0xe6, 0x6d, 0x77, 0x6d,
+ 0xa2, 0x41, 0xc5, 0xb4, 0x6d, 0x83, 0xf5, 0x38, 0x0d, 0x84, 0x15, 0x2e, 0x46, 0x49, 0x2f, 0x9b,
+ 0xb6, 0xdd, 0x14, 0xb2, 0x96, 0xd9, 0x21, 0x8f, 0xa0, 0x26, 0x9e, 0x7f, 0xcf, 0x69, 0x0a, 0x36,
+ 0x22, 0x0f, 0x51, 0x29, 0x8f, 0x91, 0x2b, 0x30, 0xc1, 0x03, 0xd3, 0x37, 0x38, 0x33, 0x4e, 0x59,
+ 0x28, 0x03, 0xba, 0xa4, 0x83, 0x90, 0xb5, 0xd8, 0x1e, 0x0b, 0x39, 0xf9, 0x11, 0x90, 0x80, 0x76,
+ 0xcd, 0xe0, 0x4c, 0x71, 0xc9, 0xf5, 0xc8, 0x23, 0xae, 0x26, 0x35, 0xc8, 0x26, 0x57, 0x26, 0x41,
+ 0x3b, 0x9e, 0x17, 0xa3, 0xc7, 0xd2, 0xe8, 0x86, 0x50, 0x48, 0xb4, 0x1a, 0x8b, 0x84, 0x8a, 0x4e,
+ 0x16, 0xe2, 0xb1, 0x20, 0x2a, 0x3b, 0x96, 0x04, 0x56, 0x4c, 0x8f, 0x25, 0x46, 0xae, 0xc2, 0x34,
+ 0x0f, 0x4c, 0x2f, 0x74, 0x4d, 0x9e, 0x06, 0x97, 0x10, 0x3c, 0x15, 0xab, 0x86, 0xe3, 0x93, 0x89,
+ 0x1a, 0xef, 0xc3, 0x47, 0x73, 0xa5, 0xfd, 0x5d, 0x0e, 0x0a, 0x72, 0x1d, 0xc8, 0x87, 0x30, 0x6a,
+ 0x75, 0xa3, 0xd7, 0xa3, 0x24, 0x79, 0xe3, 0x1a, 0xad, 0x92, 0x2e, 0xd4, 0xc3, 0x77, 0x46, 0x2a,
+ 0xda, 0x47, 0x33, 0xd1, 0x9e, 0x6c, 0xaf, 0x7c, 0xdf, 0xf6, 0x92, 0x5b, 0x66, 0x2c, 0xbb, 0x65,
+ 0x86, 0xef, 0x8c, 0x64, 0xdf, 0x15, 0x53, 0xfb, 0x4e, 0xfb, 0xc7, 0x02, 0xe4, 0x5f, 0xba, 0xec,
+ 0x82, 0x7c, 0x08, 0x55, 0xd3, 0xb2, 0x68, 0x18, 0x1a, 0xe9, 0x23, 0x7a, 0x52, 0x9f, 0x90, 0xd2,
+ 0xc6, 0xb0, 0x92, 0x61, 0x72, 0xb0, 0x2c, 0x2e, 0x4b, 0xb1, 0x2c, 0x8b, 0xfb, 0xea, 0xde, 0x42,
+ 0x5c, 0xf7, 0x7e, 0x0a, 0x53, 0xe1, 0x55, 0xb7, 0x4b, 0x79, 0xe0, 0x58, 0x46, 0x04, 0x21, 0x08,
+ 0x99, 0x8c, 0x15, 0x2f, 0x25, 0x76, 0x19, 0xf0, 0xb5, 0xb6, 0xdc, 0x03, 0xf2, 0x68, 0x2e, 0x09,
+ 0x01, 0x6e, 0xea, 0x45, 0x28, 0x99, 0xae, 0xcb, 0x2c, 0x61, 0x0f, 0xe8, 0xba, 0x88, 0xed, 0x86,
+ 0x4d, 0x3e, 0x86, 0x49, 0x8f, 0xf2, 0x0b, 0x86, 0x11, 0x27, 0x47, 0x34, 0x86, 0x88, 0x8a, 0x12,
+ 0x37, 0xe2, 0xa7, 0x97, 0x54, 0x55, 0x53, 0x40, 0x48, 0xaa, 0xaa, 0xf9, 0x1c, 0xc0, 0x8a, 0x33,
+ 0x9d, 0x7a, 0x3d, 0x3a, 0x1d, 0xaf, 0x6b, 0x92, 0x04, 0xf5, 0x14, 0x8c, 0x7c, 0x02, 0x05, 0x13,
+ 0x57, 0x5c, 0xbd, 0xf6, 0x9c, 0xec, 0x0b, 0x04, 0x5d, 0xa9, 0xc9, 0x12, 0x94, 0xfc, 0xc0, 0x61,
+ 0x81, 0xc3, 0xaf, 0x30, 0xbc, 0x26, 0xf5, 0xb8, 0x9d, 0x7a, 0x06, 0x98, 0xc8, 0x3c, 0x03, 0xa4,
+ 0xea, 0xb3, 0x4a, 0xa6, 0x3e, 0x5b, 0x84, 0x52, 0x27, 0x60, 0x3d, 0x5f, 0x8c, 0x43, 0xe5, 0x12,
+ 0x6c, 0xcb, 0xc9, 0x48, 0x7f, 0x72, 0x12, 0x88, 0x49, 0x44, 0x54, 0x84, 0xf8, 0x48, 0x4a, 0x1b,
+ 0x36, 0xf9, 0x08, 0xaa, 0x01, 0xf5, 0x5d, 0xf1, 0xec, 0x44, 0x71, 0x61, 0xb0, 0xd0, 0x29, 0xe9,
+ 0x95, 0x58, 0x8a, 0xc1, 0xb2, 0x07, 0x93, 0x22, 0xc6, 0x44, 0x72, 0x50, 0x33, 0xb5, 0x30, 0x85,
+ 0xe7, 0xfb, 0x4a, 0xe6, 0xe3, 0xc4, 0xaa, 0x08, 0xbd, 0x16, 0xdb, 0x95, 0x90, 0xba, 0xc7, 0x83,
+ 0x2b, 0xbd, 0xe2, 0xa7, 0x65, 0xa4, 0x0e, 0xd5, 0x68, 0xf6, 0x39, 0x33, 0x4c, 0x1a, 0x2e, 0x4c,
+ 0x23, 0xd1, 0x83, 0x2c, 0x91, 0x82, 0xb7, 0xd8, 0x16, 0x0d, 0x25, 0xcf, 0x44, 0x27, 0x25, 0x5a,
+ 0xfa, 0x0a, 0xc8, 0xa0, 0x2f, 0x71, 0xee, 0x9e, 0xd1, 0x2b, 0x75, 0x28, 0x89, 0x3f, 0xc5, 0xf9,
+ 0x7c, 0x6e, 0xba, 0x3d, 0x1a, 0x55, 0xbc, 0xd8, 0xf8, 0x72, 0xe4, 0x59, 0x6e, 0xe9, 0xa7, 0x30,
+ 0x35, 0xe0, 0xe4, 0x6d, 0x04, 0xa5, 0x14, 0x81, 0xd6, 0x82, 0x89, 0x4c, 0x7d, 0xb7, 0x0c, 0xe3,
+ 0xb2, 0x48, 0x8d, 0xf6, 0xd2, 0x84, 0x5e, 0x92, 0x82, 0x86, 0x2d, 0x9e, 0x65, 0x94, 0x32, 0xf4,
+ 0xa9, 0xe5, 0xb4, 0x1d, 0x4b, 0x15, 0xbf, 0x55, 0x29, 0x3e, 0x56, 0x52, 0xed, 0xbf, 0xcb, 0x50,
+ 0xcd, 0x7e, 0x21, 0xba, 0xbe, 0x8a, 0x5e, 0x84, 0x52, 0x70, 0x69, 0x9c, 0x5c, 0x71, 0x1a, 0x22,
+ 0x5b, 0x41, 0x2f, 0x06, 0x97, 0x2f, 0x44, 0x53, 0x04, 0x79, 0x70, 0x69, 0xf8, 0x58, 0x86, 0x87,
+ 0x6a, 0x33, 0x8e, 0x07, 0x97, 0xb2, 0x2e, 0x0f, 0x31, 0x95, 0x5e, 0x1a, 0x3d, 0xcb, 0x14, 0x47,
+ 0x91, 0x02, 0xe5, 0x11, 0x54, 0x0d, 0x2e, 0x5f, 0x09, 0x71, 0x16, 0xd9, 0xcd, 0x20, 0xc7, 0x22,
+ 0xe4, 0xc1, 0x20, 0xf2, 0x24, 0x83, 0x2c, 0x44, 0xc8, 0x17, 0x83, 0x48, 0xf9, 0xda, 0x32, 0x42,
+ 0x16, 0x23, 0x24, 0xbe, 0x78, 0x8c, 0x90, 0xcb, 0x30, 0x1e, 0x5c, 0x1a, 0xed, 0xc0, 0xec, 0xd2,
+ 0x10, 0x4b, 0xeb, 0x82, 0x5e, 0x0a, 0x2e, 0x5f, 0x62, 0x5b, 0x9c, 0x58, 0xb1, 0xd2, 0x78, 0xfa,
+ 0x44, 0xe5, 0x13, 0x88, 0xf4, 0x4f, 0x9f, 0x90, 0x4f, 0xd0, 0x51, 0x84, 0xd8, 0x34, 0xd6, 0x37,
+ 0xbe, 0xc0, 0x72, 0xbb, 0xa0, 0x57, 0x62, 0xd4, 0xe6, 0xfa, 0xc6, 0x17, 0xe4, 0x07, 0x30, 0x95,
+ 0x00, 0xd7, 0x37, 0x9e, 0x19, 0x1b, 0x9b, 0x9b, 0x0b, 0x33, 0x51, 0x97, 0x24, 0x72, 0x7d, 0xe3,
+ 0xd9, 0xc6, 0xe6, 0x66, 0x16, 0xba, 0xb1, 0xf9, 0xd4, 0xd8, 0x5c, 0x5f, 0x5f, 0x98, 0xcd, 0x42,
+ 0x37, 0x36, 0x9f, 0x6e, 0xae, 0xaf, 0x93, 0x1f, 0x02, 0x49, 0xa0, 0x9b, 0xeb, 0x1b, 0xc6, 0xfa,
+ 0xe3, 0x8d, 0xcf, 0x17, 0xe6, 0x64, 0xda, 0x8b, 0xb0, 0x9b, 0xeb, 0x1b, 0x42, 0x4c, 0x3e, 0x83,
+ 0xe9, 0x54, 0x17, 0x1e, 0x6f, 0x3c, 0x31, 0xd6, 0x37, 0xd7, 0x9f, 0x2d, 0xcc, 0x23, 0xba, 0x16,
+ 0x77, 0xe2, 0xf1, 0xc6, 0x13, 0x21, 0xef, 0x83, 0x6f, 0xae, 0x3f, 0x37, 0x36, 0x1e, 0x3f, 0xf9,
+ 0x62, 0x61, 0xa1, 0x0f, 0xbe, 0xb9, 0xfe, 0x5c, 0xc8, 0xb3, 0xf0, 0x8d, 0xc7, 0x4f, 0x9e, 0x19,
+ 0x4f, 0x1e, 0x3f, 0xdf, 0x5c, 0x58, 0xcc, 0xc2, 0x85, 0x42, 0xc8, 0xb3, 0xf0, 0x27, 0x8f, 0x9f,
+ 0x3f, 0x35, 0x9e, 0x6f, 0xac, 0x3f, 0x5d, 0x58, 0xca, 0xc2, 0x85, 0x42, 0xc8, 0xc9, 0x1a, 0xcc,
+ 0x24, 0xf0, 0xe7, 0x1b, 0xeb, 0x5f, 0x18, 0xeb, 0x4f, 0x3f, 0x7f, 0xf6, 0xf9, 0xc2, 0x32, 0xe2,
+ 0xa7, 0x22, 0xbc, 0xd0, 0xa0, 0x42, 0x1c, 0xf7, 0xc1, 0xa5, 0x61, 0x05, 0x96, 0x8c, 0x82, 0x10,
+ 0xd3, 0x57, 0x41, 0x2f, 0x07, 0x97, 0xdb, 0x81, 0x85, 0x11, 0x80, 0xa5, 0x1d, 0x8f, 0xa2, 0xbb,
+ 0x24, 0xa3, 0x9b, 0x27, 0xd1, 0xcd, 0x93, 0xe8, 0x1e, 0x97, 0xd1, 0xcd, 0xd3, 0xd1, 0xcd, 0xfb,
+ 0xa3, 0x1b, 0xe4, 0x0a, 0xf1, 0x81, 0xe8, 0xe6, 0xfd, 0xd1, 0x5d, 0x8e, 0x90, 0x07, 0x83, 0xc8,
+ 0x6c, 0x74, 0x4f, 0x44, 0xc8, 0x17, 0x83, 0xc8, 0x6c, 0x74, 0x57, 0x22, 0x64, 0x7f, 0x74, 0xf3,
+ 0x38, 0xba, 0xef, 0xca, 0xe8, 0xe6, 0xa9, 0xe8, 0xe6, 0xe9, 0xe8, 0xbe, 0x27, 0xa3, 0x9b, 0x67,
+ 0xa2, 0x9b, 0xf7, 0x47, 0xf7, 0x7d, 0x19, 0xdd, 0xbc, 0x3f, 0xba, 0xf9, 0x40, 0x74, 0x3f, 0x88,
+ 0xba, 0xd4, 0x1f, 0xdd, 0x7c, 0x20, 0xba, 0x57, 0xb2, 0xd0, 0x24, 0xba, 0xf9, 0x60, 0x74, 0x3f,
+ 0x94, 0xd1, 0xcd, 0x07, 0xa3, 0x9b, 0x0f, 0x89, 0x6e, 0x4d, 0x06, 0x14, 0x1f, 0x12, 0xdd, 0x7c,
+ 0x48, 0x74, 0x7f, 0xd0, 0x07, 0x4f, 0x45, 0x37, 0x1f, 0x12, 0xdd, 0x1f, 0x66, 0xe1, 0xe9, 0xe8,
+ 0xe6, 0x43, 0xa2, 0xfb, 0xa3, 0x2c, 0x3c, 0x1d, 0xdd, 0x7c, 0x58, 0x74, 0x7f, 0x2c, 0xa3, 0x9b,
+ 0x0f, 0x44, 0xf7, 0x3d, 0x80, 0x13, 0xc7, 0x8f, 0x42, 0x7b, 0x52, 0x86, 0xe7, 0x89, 0xe3, 0xab,
+ 0xc0, 0xbe, 0x0b, 0xe3, 0xdc, 0xe9, 0xd2, 0x90, 0x9b, 0x5d, 0x1f, 0x8f, 0xdb, 0xa2, 0x9e, 0x08,
+ 0xb4, 0x7f, 0x2b, 0xe2, 0x5b, 0xfb, 0x77, 0xc9, 0xff, 0xd7, 0xbc, 0xcf, 0xf9, 0x08, 0xaa, 0x3e,
+ 0x0b, 0x1d, 0xee, 0x9c, 0x53, 0xf9, 0x25, 0x59, 0xe5, 0xff, 0x4a, 0x24, 0xc5, 0x2f, 0xc3, 0x02,
+ 0xe6, 0xd1, 0x8e, 0x99, 0x82, 0xc9, 0x13, 0xa0, 0x12, 0x49, 0x25, 0xec, 0x19, 0x2c, 0xd8, 0xd4,
+ 0x75, 0xba, 0x8e, 0xa8, 0x8a, 0xbb, 0x4e, 0x18, 0x1a, 0x36, 0xe5, 0xd4, 0x8a, 0x5f, 0xc7, 0x15,
+ 0xf4, 0xb9, 0x58, 0x7f, 0xe0, 0x84, 0xe1, 0x4e, 0xa4, 0xed, 0x9b, 0x86, 0x42, 0xff, 0x34, 0x2c,
+ 0x83, 0x68, 0x18, 0x3d, 0xcf, 0x89, 0xd3, 0x7f, 0xe9, 0xc4, 0xf1, 0x5f, 0x89, 0x36, 0xd9, 0x80,
+ 0xd9, 0x36, 0xb5, 0x0c, 0x8b, 0x05, 0x01, 0xbe, 0x0a, 0x31, 0xc2, 0xab, 0xee, 0x09, 0x73, 0xa3,
+ 0x4c, 0x30, 0xdd, 0xa6, 0xd6, 0x76, 0xa4, 0x3b, 0x96, 0x2a, 0xf2, 0x14, 0xe6, 0xa5, 0x8d, 0x4d,
+ 0x2f, 0x58, 0x60, 0x87, 0x89, 0xb5, 0x4a, 0x11, 0xb3, 0x68, 0xa5, 0xb4, 0xb1, 0x39, 0xf9, 0x09,
+ 0x2c, 0x67, 0xed, 0x7a, 0x9e, 0xb2, 0x34, 0x4f, 0x5c, 0xaa, 0x32, 0xc7, 0x62, 0xda, 0xf6, 0x55,
+ 0x1a, 0x40, 0x3e, 0x80, 0x4a, 0xc6, 0x5e, 0x65, 0x90, 0x89, 0xb4, 0x85, 0x78, 0xc4, 0xc8, 0x0e,
+ 0x48, 0x8e, 0x5b, 0xa6, 0x90, 0xa9, 0xf4, 0x70, 0xe4, 0x04, 0x7c, 0x0c, 0x93, 0x97, 0x1d, 0xda,
+ 0x35, 0xce, 0xe8, 0x55, 0x34, 0x83, 0x32, 0x89, 0x54, 0x84, 0xf8, 0x1b, 0x7a, 0x95, 0xcc, 0x22,
+ 0xe2, 0x5c, 0x16, 0x46, 0x59, 0xb4, 0x24, 0x04, 0xfb, 0x2c, 0x44, 0x12, 0x51, 0x05, 0xb8, 0xcc,
+ 0xec, 0x86, 0x92, 0x45, 0x45, 0x63, 0x25, 0xb8, 0x3c, 0x42, 0x29, 0xb2, 0xa8, 0x83, 0x4a, 0xe1,
+ 0x3c, 0xe6, 0x19, 0x8e, 0xed, 0x52, 0x0c, 0x4d, 0x3c, 0xa8, 0x24, 0xf4, 0x90, 0x79, 0x0d, 0xdb,
+ 0xc5, 0x72, 0x34, 0xb8, 0xc4, 0x0b, 0x04, 0xea, 0x44, 0x2e, 0x04, 0x97, 0xcd, 0xae, 0xe5, 0x90,
+ 0x67, 0xb0, 0xa8, 0x14, 0x51, 0xde, 0x4b, 0x32, 0xbc, 0x3a, 0x9c, 0x67, 0x25, 0x54, 0x25, 0xc0,
+ 0x28, 0xd7, 0x67, 0x0a, 0x99, 0xe9, 0x9b, 0x0a, 0x99, 0x99, 0xfe, 0x42, 0x26, 0x7d, 0x48, 0xcc,
+ 0xde, 0x74, 0x48, 0xcc, 0xf5, 0x1f, 0x12, 0x0f, 0x61, 0xe2, 0x84, 0x06, 0x46, 0x40, 0x45, 0x09,
+ 0x48, 0x6d, 0x75, 0xd0, 0x96, 0x4f, 0x68, 0xa0, 0x2b, 0x11, 0x79, 0x00, 0x65, 0xd7, 0xb2, 0x3b,
+ 0xd1, 0xfc, 0xcb, 0xb3, 0x15, 0x84, 0x48, 0x4d, 0xbe, 0xe8, 0x9c, 0xed, 0x44, 0xfa, 0x45, 0xd5,
+ 0x39, 0xdb, 0x19, 0xb6, 0xd1, 0x97, 0xfa, 0x37, 0xfa, 0xbf, 0xe4, 0xb0, 0x02, 0x7d, 0xd7, 0x62,
+ 0xef, 0x2d, 0x9f, 0x1c, 0xde, 0x52, 0xf0, 0xa5, 0x67, 0x38, 0x3f, 0x30, 0xc3, 0xa9, 0x79, 0x1a,
+ 0xeb, 0x9f, 0xa7, 0xf4, 0x0c, 0x17, 0xb2, 0x33, 0x7c, 0xf3, 0xf8, 0xfe, 0x3e, 0x07, 0xd5, 0xec,
+ 0x8d, 0xa5, 0xf4, 0xf3, 0x61, 0x2e, 0xf3, 0x5d, 0xe4, 0xfb, 0x57, 0xb2, 0xdf, 0xbf, 0x4a, 0xb8,
+ 0x39, 0x0d, 0x7f, 0x05, 0x95, 0xcc, 0x15, 0xa7, 0xeb, 0x17, 0x66, 0x0e, 0x0a, 0x21, 0x37, 0x79,
+ 0x2f, 0x54, 0x6f, 0x43, 0x55, 0x4b, 0xfb, 0x16, 0xa6, 0x87, 0x5c, 0x75, 0x7a, 0xef, 0x6c, 0x9e,
+ 0xd0, 0x8f, 0x66, 0xe8, 0xff, 0x7a, 0x04, 0x3f, 0x7a, 0xf4, 0x5f, 0xd9, 0xfa, 0x1e, 0x9f, 0x78,
+ 0x5d, 0x16, 0x1a, 0x19, 0x17, 0xe3, 0x2e, 0x0b, 0x8f, 0x51, 0x20, 0xd5, 0x27, 0x91, 0x3a, 0x1f,
+ 0xa9, 0x4f, 0x94, 0xfa, 0x11, 0xd4, 0x5c, 0xe6, 0x5b, 0xf2, 0x5c, 0x50, 0x20, 0xf9, 0xc9, 0xad,
+ 0x2a, 0xe4, 0xe2, 0x3c, 0x50, 0xc8, 0x75, 0x98, 0x55, 0x48, 0x95, 0x11, 0x22, 0x78, 0x41, 0xbe,
+ 0x30, 0x97, 0x70, 0x99, 0x0f, 0x94, 0x89, 0xd8, 0x7e, 0xac, 0xed, 0x44, 0xc0, 0xa2, 0x7c, 0x1d,
+ 0x26, 0x44, 0x0a, 0xf0, 0x10, 0x26, 0x44, 0x66, 0x8a, 0x11, 0x25, 0x44, 0x94, 0x51, 0x26, 0x21,
+ 0x1a, 0x85, 0xe5, 0x1b, 0x2e, 0x78, 0xdd, 0xda, 0x62, 0xfc, 0x59, 0x0e, 0x96, 0xae, 0xbf, 0xed,
+ 0x75, 0x5b, 0x6e, 0xc8, 0xe7, 0x30, 0xe7, 0x78, 0xe7, 0x34, 0x08, 0xa9, 0x21, 0x9e, 0xc6, 0xe5,
+ 0x3c, 0x06, 0x26, 0x8f, 0x3e, 0x34, 0x4d, 0x2b, 0xed, 0x0b, 0x47, 0xde, 0xdf, 0xd0, 0x4d, 0x4e,
+ 0xb5, 0xdf, 0xc8, 0xbe, 0x5d, 0x73, 0x59, 0xec, 0xd6, 0xfa, 0x36, 0x03, 0x63, 0x49, 0x15, 0x51,
+ 0xd4, 0x65, 0x43, 0xb0, 0x7b, 0xf4, 0xc2, 0xa0, 0xdf, 0x45, 0x6f, 0xad, 0x0a, 0x1e, 0xbd, 0xa8,
+ 0x7f, 0x67, 0x6b, 0xa7, 0x70, 0xff, 0xe6, 0xab, 0x66, 0xb7, 0xb6, 0x36, 0x7f, 0x9e, 0x93, 0x31,
+ 0x70, 0xcd, 0xe5, 0xb3, 0xff, 0xdf, 0xc5, 0xf9, 0x55, 0x0e, 0xb4, 0xb7, 0x5f, 0x64, 0xfb, 0xbf,
+ 0x5d, 0x24, 0xed, 0x3b, 0x5c, 0x8b, 0x1b, 0x2e, 0xbc, 0xbd, 0xb7, 0xff, 0x07, 0xd9, 0xcb, 0x1b,
+ 0xf2, 0xf5, 0x66, 0xfa, 0x3e, 0xc6, 0x19, 0x3c, 0x7c, 0xeb, 0xed, 0xb4, 0x5b, 0x8b, 0x80, 0x16,
+ 0x10, 0x5d, 0x1d, 0xca, 0x29, 0x76, 0x51, 0x1c, 0x45, 0x87, 0xb7, 0x61, 0xb1, 0x9e, 0xc7, 0xd1,
+ 0x8b, 0x28, 0x8e, 0x14, 0x78, 0x5b, 0x08, 0xaf, 0xcd, 0xef, 0x7f, 0x9a, 0x83, 0x85, 0xeb, 0xae,
+ 0xbf, 0xbd, 0x77, 0xd7, 0xb7, 0xa0, 0x92, 0x74, 0x66, 0xd8, 0x85, 0xd7, 0xc1, 0x01, 0xec, 0xdd,
+ 0xd1, 0xcb, 0x41, 0x22, 0x7d, 0x51, 0xc4, 0x4f, 0x51, 0x3c, 0xd4, 0x0e, 0xe1, 0xee, 0x4d, 0x97,
+ 0x0b, 0xdf, 0xb7, 0x6f, 0xda, 0x2f, 0x61, 0xe5, 0x6d, 0x17, 0xf1, 0x6e, 0x6d, 0xa9, 0x7e, 0x09,
+ 0x8b, 0xd7, 0xde, 0xc6, 0xfb, 0x3e, 0x67, 0x5b, 0xaa, 0x3c, 0x1b, 0xed, 0x2b, 0xcf, 0xb4, 0xbf,
+ 0xca, 0xc1, 0xa3, 0x77, 0xbd, 0x9a, 0x77, 0x6b, 0x3b, 0xf0, 0x33, 0x20, 0xe9, 0xeb, 0x82, 0xaa,
+ 0x6f, 0x72, 0x3b, 0x4e, 0xa5, 0x34, 0xaa, 0x8f, 0x5d, 0xf8, 0xe0, 0x1d, 0x2e, 0xf1, 0xdd, 0xda,
+ 0xf4, 0xbb, 0x98, 0x8d, 0xde, 0x72, 0x91, 0xef, 0xd6, 0xbc, 0xfd, 0x71, 0x0e, 0x3e, 0x7e, 0xb7,
+ 0x2b, 0x7d, 0xb7, 0x36, 0xfd, 0x4b, 0x50, 0xea, 0xbb, 0x9c, 0x11, 0xb7, 0xb5, 0xff, 0xcc, 0x41,
+ 0x79, 0x37, 0x60, 0x3d, 0xff, 0x80, 0xe2, 0x0b, 0xdd, 0x87, 0x30, 0xe1, 0x44, 0x37, 0x6d, 0x22,
+ 0xc7, 0x15, 0xfc, 0x21, 0x83, 0x94, 0x35, 0x6c, 0xd2, 0x80, 0x6a, 0x02, 0xc1, 0x0f, 0x16, 0xf2,
+ 0xd3, 0x72, 0x72, 0xb7, 0x34, 0x45, 0xb8, 0x1a, 0xdf, 0xdb, 0xc1, 0x6f, 0xc8, 0x15, 0x27, 0xdd,
+ 0x24, 0xf7, 0xa1, 0x2c, 0x9e, 0xe3, 0xa2, 0x02, 0x7f, 0x14, 0x9d, 0x89, 0x02, 0xff, 0x48, 0x16,
+ 0xf8, 0xe9, 0x2f, 0x07, 0x79, 0x54, 0xc6, 0x6d, 0xed, 0xb7, 0xa1, 0x92, 0xe1, 0x26, 0x45, 0x18,
+ 0x3d, 0x6a, 0x1e, 0xd6, 0xee, 0x90, 0x1a, 0x4c, 0xd4, 0x8f, 0x9a, 0x87, 0xc6, 0xfa, 0xae, 0x71,
+ 0xb4, 0xd5, 0xda, 0xab, 0xe5, 0xc8, 0x14, 0x54, 0xa4, 0xe4, 0xb1, 0x12, 0x8d, 0x68, 0x7f, 0x38,
+ 0x02, 0x63, 0xd8, 0xcf, 0xcc, 0x17, 0x05, 0x39, 0xdc, 0xf8, 0x8b, 0xc2, 0x8f, 0xa1, 0x68, 0xb1,
+ 0x6e, 0xd7, 0x54, 0x37, 0xfa, 0x07, 0xc6, 0x98, 0x1e, 0x69, 0xb8, 0x2d, 0x91, 0x7a, 0x64, 0x42,
+ 0x56, 0xa1, 0xd8, 0x95, 0x2a, 0x75, 0x31, 0x60, 0x66, 0xd8, 0x0c, 0xe9, 0x11, 0x28, 0xf5, 0x41,
+ 0x25, 0x7f, 0xe3, 0x07, 0x15, 0xed, 0x1b, 0x98, 0x1e, 0xe2, 0x98, 0x4c, 0x42, 0x79, 0x6b, 0x67,
+ 0xc7, 0x38, 0xa8, 0x1f, 0xbc, 0xa8, 0xeb, 0xc7, 0xb5, 0x3b, 0x84, 0x40, 0x55, 0xaf, 0x1f, 0x34,
+ 0x5f, 0xd7, 0x63, 0x59, 0x4e, 0x80, 0x8e, 0xeb, 0xad, 0x58, 0x30, 0xa2, 0x7d, 0x0b, 0xf0, 0xda,
+ 0x74, 0x7b, 0xf4, 0xc8, 0x0c, 0xcc, 0x2e, 0xb9, 0x0f, 0xa3, 0xcc, 0xeb, 0xa9, 0x4f, 0x7b, 0x13,
+ 0x99, 0xdb, 0xc2, 0x42, 0x41, 0xd6, 0xd2, 0x9f, 0x06, 0xaa, 0x1b, 0x8b, 0xab, 0xf1, 0x4f, 0x74,
+ 0x56, 0x91, 0x45, 0xac, 0xc4, 0x2a, 0x2e, 0xb5, 0xc4, 0x69, 0xff, 0x30, 0x02, 0xd5, 0x23, 0xe6,
+ 0xe9, 0x97, 0x47, 0xec, 0x82, 0x06, 0x3b, 0x26, 0x37, 0x6f, 0x2d, 0xae, 0xf5, 0xec, 0x81, 0x9b,
+ 0xc7, 0x1e, 0xad, 0xa7, 0x7e, 0x73, 0x92, 0xf6, 0xba, 0xaa, 0x87, 0xa1, 0x73, 0x40, 0xcd, 0xb0,
+ 0x17, 0xe0, 0xd6, 0x1e, 0x7e, 0x67, 0x52, 0xbd, 0xe9, 0xf6, 0x85, 0x95, 0xd1, 0xa5, 0xa6, 0x67,
+ 0xd8, 0x27, 0x5d, 0xac, 0xe2, 0x72, 0x7a, 0x35, 0x90, 0x6c, 0x07, 0xd4, 0xf4, 0x76, 0x4e, 0xba,
+ 0x22, 0x6d, 0x5f, 0xcb, 0x49, 0x66, 0xa0, 0x36, 0xe4, 0x4e, 0xe5, 0x5d, 0x58, 0xc8, 0x4a, 0x8d,
+ 0x9d, 0xfa, 0x7e, 0xe3, 0xa0, 0xd1, 0xaa, 0xeb, 0xb5, 0x1c, 0x59, 0x84, 0xd9, 0x3e, 0xed, 0xd6,
+ 0xf6, 0x76, 0xfd, 0x58, 0x2c, 0x52, 0x11, 0xc6, 0xea, 0x5d, 0x9f, 0x5f, 0x6d, 0xfc, 0xe5, 0x0c,
+ 0x14, 0x9b, 0x72, 0x80, 0x64, 0x07, 0x60, 0xc7, 0x09, 0xcd, 0x13, 0x97, 0x36, 0x5d, 0x4e, 0xaa,
+ 0xf1, 0xc0, 0x11, 0xb9, 0xd4, 0xd7, 0xd6, 0xe6, 0x7e, 0xf5, 0xcf, 0xff, 0xfa, 0x9b, 0x91, 0x9a,
+ 0x56, 0x5e, 0x3b, 0x5f, 0x5f, 0x53, 0x76, 0x5f, 0xe6, 0x3e, 0x25, 0x2f, 0xa1, 0xac, 0x53, 0xea,
+ 0xbd, 0x2b, 0xcd, 0x3c, 0xd2, 0x4c, 0x69, 0x13, 0x82, 0x26, 0x32, 0x14, 0x3c, 0x75, 0x28, 0xab,
+ 0x6a, 0x8a, 0x36, 0xbd, 0x1e, 0xc9, 0xc4, 0xce, 0x00, 0xcb, 0x02, 0xb2, 0x10, 0xad, 0x22, 0x58,
+ 0xea, 0xd2, 0xb9, 0xd7, 0x13, 0x34, 0x7b, 0x50, 0x89, 0x4f, 0xdd, 0x77, 0x20, 0x5a, 0x44, 0xa2,
+ 0x69, 0xad, 0x9a, 0x1a, 0x95, 0x62, 0xda, 0x86, 0xf1, 0x1d, 0xea, 0xd2, 0xf7, 0xee, 0x4e, 0x6c,
+ 0x24, 0x48, 0x1a, 0x00, 0xea, 0xca, 0x5a, 0xb3, 0xc7, 0x49, 0x2d, 0xf3, 0xf3, 0xa9, 0x83, 0xb0,
+ 0x73, 0x73, 0x7f, 0x12, 0x4b, 0x41, 0xd5, 0x84, 0x89, 0xf8, 0xbe, 0x9a, 0x20, 0x23, 0x99, 0x2b,
+ 0xeb, 0x28, 0x1e, 0xa0, 0x5b, 0x46, 0xba, 0x59, 0xad, 0x86, 0x74, 0x29, 0x6b, 0x41, 0xf8, 0xbb,
+ 0x30, 0x99, 0xbe, 0x79, 0x26, 0x38, 0x93, 0x5b, 0x87, 0x69, 0xcd, 0x00, 0xed, 0x7d, 0xa4, 0x5d,
+ 0xd0, 0xa6, 0x05, 0x6d, 0x1f, 0x87, 0x60, 0xfe, 0x0a, 0x8a, 0x2f, 0x5d, 0x76, 0xb1, 0x65, 0xdb,
+ 0xa4, 0x92, 0xf9, 0x46, 0x79, 0x73, 0x54, 0x29, 0x1b, 0x19, 0x55, 0x20, 0x5a, 0x3a, 0xde, 0x51,
+ 0x78, 0x1b, 0x49, 0x66, 0xd2, 0x12, 0x33, 0xc1, 0x73, 0x0c, 0xd5, 0xf8, 0x4e, 0xe7, 0xf6, 0x29,
+ 0xb5, 0xce, 0x06, 0x02, 0x34, 0x99, 0xc6, 0x18, 0xa8, 0xdd, 0x43, 0xc2, 0x79, 0x8d, 0x08, 0xc2,
+ 0xac, 0xbd, 0x20, 0x3d, 0x80, 0xb2, 0x8c, 0xb9, 0x23, 0xe6, 0x35, 0xda, 0xa9, 0x85, 0x88, 0x0f,
+ 0x94, 0x81, 0x2e, 0x2e, 0x21, 0xe3, 0x8c, 0x36, 0x99, 0x04, 0x2c, 0x1a, 0xab, 0x85, 0x55, 0x91,
+ 0xf7, 0xee, 0x7c, 0x99, 0x85, 0x4d, 0x5b, 0x0b, 0x42, 0x1d, 0x2a, 0xbb, 0x94, 0xa7, 0x6e, 0x06,
+ 0xf6, 0x8f, 0x79, 0x7a, 0xc8, 0x2d, 0x2e, 0xed, 0x2e, 0x52, 0xce, 0x69, 0x53, 0x82, 0x32, 0x63,
+ 0x2f, 0x38, 0x7f, 0x0a, 0x05, 0x9d, 0x9e, 0x30, 0xf6, 0xf6, 0x1d, 0x3e, 0x8b, 0x3c, 0x93, 0x1a,
+ 0xc8, 0x1d, 0x2e, 0x6c, 0x04, 0xc1, 0x2b, 0x98, 0xda, 0x66, 0xae, 0x4b, 0xad, 0xf4, 0x9b, 0xbb,
+ 0xb7, 0x71, 0xad, 0x20, 0xd7, 0x92, 0x36, 0x2b, 0xb8, 0x06, 0xcc, 0x05, 0xed, 0xcf, 0xa0, 0xb6,
+ 0x4b, 0x79, 0xf6, 0xe5, 0x7f, 0x76, 0xb3, 0xce, 0xf5, 0xfd, 0x6c, 0x4d, 0xa1, 0xb4, 0x07, 0xc8,
+ 0xbd, 0xa8, 0xcd, 0xa8, 0xf1, 0x66, 0xb4, 0x82, 0xfa, 0x0c, 0x66, 0x76, 0x29, 0x1f, 0x7c, 0xdd,
+ 0x38, 0x6c, 0xe3, 0x25, 0xbf, 0xc3, 0x1c, 0xc0, 0x6b, 0x1f, 0xa0, 0xa3, 0x7b, 0xda, 0x82, 0x72,
+ 0x34, 0x80, 0x10, 0xce, 0x02, 0x98, 0xdf, 0x0e, 0xa8, 0xc9, 0x69, 0x2b, 0x30, 0xdb, 0x6d, 0xc7,
+ 0x3a, 0xb6, 0x4e, 0xa9, 0xdd, 0x73, 0xc5, 0xb9, 0xfe, 0x60, 0x35, 0xf3, 0x4b, 0xd8, 0x01, 0xc0,
+ 0xc0, 0xac, 0x7d, 0x8c, 0x0e, 0x57, 0xb4, 0x65, 0x9c, 0xb5, 0xe1, 0xac, 0xca, 0xa7, 0xdc, 0x29,
+ 0xb7, 0xed, 0xf3, 0x1a, 0x56, 0xe1, 0xb3, 0x0d, 0xd3, 0x99, 0x1e, 0xfd, 0x4e, 0x8f, 0xf6, 0x68,
+ 0x48, 0x96, 0x87, 0xfa, 0x93, 0xca, 0x01, 0x5f, 0x1a, 0xfa, 0xba, 0xab, 0xcd, 0x0f, 0x8c, 0x4f,
+ 0x1a, 0x28, 0x3f, 0x99, 0x5e, 0xfc, 0xaf, 0xfd, 0x0c, 0x61, 0x13, 0x7e, 0x7e, 0x0b, 0x6a, 0x72,
+ 0x3b, 0xa7, 0x0a, 0xef, 0xeb, 0xb7, 0x5b, 0x02, 0xd2, 0xee, 0x3c, 0xce, 0x91, 0x6f, 0x61, 0xf6,
+ 0x88, 0x06, 0x6d, 0x16, 0x74, 0xb1, 0x1e, 0x6b, 0xfa, 0x34, 0xe8, 0x67, 0x40, 0xc5, 0x40, 0xcf,
+ 0x3e, 0xc4, 0x9e, 0xdd, 0xd7, 0x16, 0x45, 0xcf, 0x86, 0x52, 0xc8, 0xc3, 0xa7, 0x2c, 0x0f, 0x23,
+ 0x59, 0xa8, 0xbe, 0x8d, 0x34, 0x93, 0xa3, 0x52, 0x86, 0x82, 0xea, 0x0d, 0x94, 0x77, 0x29, 0xaf,
+ 0x5f, 0x72, 0xac, 0xd2, 0x48, 0x32, 0xa2, 0xa4, 0xf6, 0x5b, 0x9a, 0x4f, 0x15, 0x73, 0x3a, 0xe5,
+ 0xbd, 0xc0, 0x43, 0x65, 0x98, 0x25, 0x4e, 0xd1, 0x08, 0xe2, 0x6f, 0xf1, 0xa7, 0x3d, 0xf2, 0x85,
+ 0x00, 0xbe, 0x97, 0x3d, 0xa6, 0x9c, 0xcc, 0xad, 0xaa, 0x5f, 0x75, 0x67, 0x55, 0x37, 0xa7, 0x87,
+ 0x01, 0x1a, 0x41, 0xef, 0xc3, 0xe2, 0x2e, 0xe5, 0xfb, 0xc3, 0x6f, 0xa0, 0x67, 0xf3, 0xc4, 0x72,
+ 0xf6, 0x77, 0x59, 0x99, 0x7b, 0xf1, 0xda, 0x23, 0xf4, 0xa4, 0x69, 0xf7, 0xd4, 0x10, 0x86, 0x33,
+ 0x0a, 0x8f, 0xa7, 0x30, 0x3b, 0x54, 0xff, 0x3e, 0xde, 0x32, 0xcb, 0x3b, 0x94, 0x4d, 0x78, 0x6a,
+ 0x61, 0x9a, 0x4f, 0xca, 0xd4, 0x3e, 0x0f, 0xf3, 0xd7, 0x54, 0xb2, 0x03, 0x89, 0x3e, 0x51, 0x7f,
+ 0x99, 0xfb, 0xf4, 0xc5, 0xb7, 0xb0, 0xcc, 0x82, 0x0e, 0xda, 0x5a, 0x2c, 0xb0, 0x57, 0xe5, 0x2f,
+ 0xea, 0x23, 0xae, 0x17, 0x95, 0xd7, 0xd8, 0x16, 0x35, 0x64, 0x73, 0xbf, 0xf5, 0xf3, 0xb5, 0x8e,
+ 0xc3, 0x4f, 0x7b, 0x27, 0xab, 0x16, 0xeb, 0xae, 0x45, 0x26, 0x6b, 0xd2, 0xe4, 0x33, 0xf5, 0x23,
+ 0xfc, 0xf3, 0xcd, 0xb5, 0x0e, 0x8b, 0xfe, 0x43, 0x80, 0x93, 0x02, 0x4a, 0x3f, 0xff, 0x9f, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0x79, 0x04, 0xa4, 0x52, 0x30, 0x40, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go
index 3571ad6..6515668 100644
--- a/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go
+++ b/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go
@@ -163,11 +163,7 @@
// // For Kubernetes resources, the format is {api group}/{kind}.
// option (google.api.resource) = {
// type: "pubsub.googleapis.com/Topic"
-// name_descriptor: {
-// pattern: "projects/{project}/topics/{topic}"
-// parent_type: "cloudresourcemanager.googleapis.com/Project"
-// parent_name_extractor: "projects/{project}"
-// }
+// pattern: "projects/{project}/topics/{topic}"
// };
// }
//
@@ -175,10 +171,7 @@
//
// resources:
// - type: "pubsub.googleapis.com/Topic"
-// name_descriptor:
-// - pattern: "projects/{project}/topics/{topic}"
-// parent_type: "cloudresourcemanager.googleapis.com/Project"
-// parent_name_extractor: "projects/{project}"
+// pattern: "projects/{project}/topics/{topic}"
//
// Sometimes, resources have multiple patterns, typically because they can
// live under multiple parents.
@@ -188,26 +181,10 @@
// message LogEntry {
// option (google.api.resource) = {
// type: "logging.googleapis.com/LogEntry"
-// name_descriptor: {
-// pattern: "projects/{project}/logs/{log}"
-// parent_type: "cloudresourcemanager.googleapis.com/Project"
-// parent_name_extractor: "projects/{project}"
-// }
-// name_descriptor: {
-// pattern: "folders/{folder}/logs/{log}"
-// parent_type: "cloudresourcemanager.googleapis.com/Folder"
-// parent_name_extractor: "folders/{folder}"
-// }
-// name_descriptor: {
-// pattern: "organizations/{organization}/logs/{log}"
-// parent_type: "cloudresourcemanager.googleapis.com/Organization"
-// parent_name_extractor: "organizations/{organization}"
-// }
-// name_descriptor: {
-// pattern: "billingAccounts/{billing_account}/logs/{log}"
-// parent_type: "billing.googleapis.com/BillingAccount"
-// parent_name_extractor: "billingAccounts/{billing_account}"
-// }
+// pattern: "projects/{project}/logs/{log}"
+// pattern: "folders/{folder}/logs/{log}"
+// pattern: "organizations/{organization}/logs/{log}"
+// pattern: "billingAccounts/{billing_account}/logs/{log}"
// };
// }
//
@@ -215,48 +192,10 @@
//
// resources:
// - type: 'logging.googleapis.com/LogEntry'
-// name_descriptor:
-// - pattern: "projects/{project}/logs/{log}"
-// parent_type: "cloudresourcemanager.googleapis.com/Project"
-// parent_name_extractor: "projects/{project}"
-// - pattern: "folders/{folder}/logs/{log}"
-// parent_type: "cloudresourcemanager.googleapis.com/Folder"
-// parent_name_extractor: "folders/{folder}"
-// - pattern: "organizations/{organization}/logs/{log}"
-// parent_type: "cloudresourcemanager.googleapis.com/Organization"
-// parent_name_extractor: "organizations/{organization}"
-// - pattern: "billingAccounts/{billing_account}/logs/{log}"
-// parent_type: "billing.googleapis.com/BillingAccount"
-// parent_name_extractor: "billingAccounts/{billing_account}"
-//
-// For flexible resources, the resource name doesn't contain parent names, but
-// the resource itself has parents for policy evaluation.
-//
-// Example:
-//
-// message Shelf {
-// option (google.api.resource) = {
-// type: "library.googleapis.com/Shelf"
-// name_descriptor: {
-// pattern: "shelves/{shelf}"
-// parent_type: "cloudresourcemanager.googleapis.com/Project"
-// }
-// name_descriptor: {
-// pattern: "shelves/{shelf}"
-// parent_type: "cloudresourcemanager.googleapis.com/Folder"
-// }
-// };
-// }
-//
-// The ResourceDescriptor Yaml config will look like:
-//
-// resources:
-// - type: 'library.googleapis.com/Shelf'
-// name_descriptor:
-// - pattern: "shelves/{shelf}"
-// parent_type: "cloudresourcemanager.googleapis.com/Project"
-// - pattern: "shelves/{shelf}"
-// parent_type: "cloudresourcemanager.googleapis.com/Folder"
+// pattern: "projects/{project}/logs/{log}"
+// pattern: "folders/{folder}/logs/{log}"
+// pattern: "organizations/{organization}/logs/{log}"
+// pattern: "billingAccounts/{billing_account}/logs/{log}"
type ResourceDescriptor struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
diff --git a/vendor/modules.txt b/vendor/modules.txt
index ebfc83d..8f21a1b 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -79,7 +79,7 @@
# github.com/opencord/omci-lib-go/v2 v2.2.0
github.com/opencord/omci-lib-go/v2
github.com/opencord/omci-lib-go/v2/generated
-# github.com/opencord/voltha-protos/v5 v5.2.1
+# github.com/opencord/voltha-protos/v5 v5.2.3
github.com/opencord/voltha-protos/v5/go/ext/config
github.com/opencord/voltha-protos/v5/go/extension
github.com/opencord/voltha-protos/v5/go/openolt
@@ -117,12 +117,12 @@
golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
-# google.golang.org/genproto v0.0.0-20211207154714-918901c715cf
+# google.golang.org/genproto v0.0.0-20220208230804-65c12eb4c068
google.golang.org/genproto/googleapis/api/annotations
google.golang.org/genproto/googleapis/api/httpbody
google.golang.org/genproto/googleapis/rpc/status
google.golang.org/genproto/protobuf/field_mask
-# google.golang.org/grpc v1.42.0 => google.golang.org/grpc v1.25.1
+# google.golang.org/grpc v1.44.0 => google.golang.org/grpc v1.25.1
google.golang.org/grpc
google.golang.org/grpc/backoff
google.golang.org/grpc/balancer