Compare commits

...

17 Commits

@ -839,6 +839,7 @@ type EnvDependent struct {
CheckedAt *time.Time `protobuf:"bytes,5,opt,name=checked_at,json=checkedAt,proto3,stdtime" json:"checked_at,omitempty"`
Cmd string `protobuf:"bytes,6,opt,name=cmd,proto3" json:"cmd,omitempty"`
IsRequired bool `protobuf:"varint,7,opt,name=is_required,json=isRequired,proto3" json:"is_required,omitempty"`
Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"`
}
func (m *EnvDependent) Reset() { *m = EnvDependent{} }
@ -923,6 +924,13 @@ func (m *EnvDependent) GetIsRequired() bool {
return false
}
func (m *EnvDependent) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
// 依赖项列表
type Envs struct {
Envs []*EnvDependent `protobuf:"bytes,1,rep,name=envs,proto3" json:"envs,omitempty"`
@ -1403,124 +1411,125 @@ func init() {
func init() { proto.RegisterFile("api/v1/config.proto", fileDescriptor_321614cd6c9c1b8a) }
var fileDescriptor_321614cd6c9c1b8a = []byte{
// 1870 bytes of a gzipped FileDescriptorProto
// 1876 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xdd, 0x6f, 0x1b, 0xb9,
0x11, 0x8f, 0xbe, 0x2c, 0x69, 0x24, 0x4b, 0x0e, 0xfd, 0x11, 0x45, 0x49, 0x1d, 0x67, 0x7b, 0xd7,
0xf3, 0x05, 0x85, 0x75, 0x71, 0xbf, 0x80, 0xb6, 0xc0, 0xc1, 0xb1, 0x7d, 0xa9, 0x81, 0xeb, 0xc1,
0xa5, 0xcf, 0xe8, 0xc7, 0xcb, 0x82, 0xde, 0xa5, 0x25, 0xd6, 0xab, 0xe5, 0x1e, 0x49, 0x29, 0x56,
0x5e, 0x8a, 0xde, 0x53, 0x1f, 0xaf, 0x28, 0xd0, 0xfe, 0x4b, 0x2d, 0xfa, 0x72, 0x40, 0x5f, 0xfa,
0xd6, 0x22, 0x69, 0xff, 0x80, 0xfe, 0x05, 0x2d, 0x38, 0xe4, 0xae, 0x24, 0x1b, 0x06, 0x02, 0xf4,
0x8d, 0x33, 0xf3, 0xe3, 0x70, 0x38, 0xf3, 0xe3, 0x90, 0xbb, 0xb0, 0xce, 0x32, 0x31, 0x98, 0x3e,
0x1f, 0x44, 0x32, 0xbd, 0x14, 0xc3, 0xbd, 0x4c, 0x49, 0x23, 0xc9, 0x0a, 0xcb, 0xc4, 0xde, 0xf4,
0x79, 0xff, 0xc9, 0x50, 0xca, 0x61, 0xc2, 0x07, 0xa8, 0xbd, 0x98, 0x5c, 0x0e, 0x8c, 0x18, 0x73,
0x6d, 0xd8, 0x38, 0x73, 0xc0, 0xfe, 0xc6, 0x50, 0x0e, 0x25, 0x0e, 0x07, 0x76, 0xe4, 0xb5, 0x8f,
0xfd, 0x34, 0xeb, 0x9a, 0xa5, 0xa9, 0x34, 0xcc, 0x08, 0x99, 0x6a, 0x6f, 0x7d, 0x74, 0xd3, 0x29,
0x1f, 0x67, 0x66, 0xe6, 0x8c, 0xc1, 0xbf, 0xcb, 0xb0, 0x72, 0x88, 0xa1, 0x90, 0x0e, 0x94, 0x45,
0xdc, 0x2b, 0xed, 0x94, 0x76, 0x2b, 0xb4, 0x2c, 0x62, 0xb2, 0x01, 0xb5, 0x84, 0x5d, 0xf0, 0xa4,
0x57, 0xde, 0x29, 0xed, 0x36, 0xa9, 0x13, 0x08, 0x81, 0x6a, 0xca, 0xc6, 0xbc, 0x57, 0x41, 0x25,
0x8e, 0x2d, 0x72, 0xca, 0x92, 0x09, 0xef, 0x55, 0x1d, 0x12, 0x05, 0xb2, 0x03, 0xad, 0x2c, 0x61,
0x11, 0x1f, 0xc9, 0x24, 0xe6, 0xaa, 0x57, 0x43, 0xdb, 0xa2, 0x8a, 0x7c, 0x03, 0x40, 0xa4, 0xd9,
0xc4, 0x84, 0x66, 0x96, 0xf1, 0xde, 0x0a, 0x02, 0x9a, 0xa8, 0xf9, 0x7c, 0x96, 0x71, 0xd2, 0x87,
0x46, 0xc4, 0x0c, 0x1f, 0x4a, 0x35, 0xeb, 0xd5, 0xd1, 0x58, 0xc8, 0x36, 0x0c, 0x2d, 0x95, 0xe9,
0x35, 0x76, 0x4a, 0xbb, 0x35, 0x8a, 0x63, 0xd2, 0x83, 0xba, 0xcc, 0x70, 0xe7, 0xbd, 0x26, 0xc2,
0x73, 0x91, 0x7c, 0x0c, 0x10, 0x29, 0xce, 0x0c, 0x8f, 0x43, 0x66, 0x7a, 0xb0, 0x53, 0xda, 0x6d,
0xed, 0xf7, 0xf7, 0x5c, 0x5e, 0xf6, 0xf2, 0xbc, 0xec, 0x7d, 0x9e, 0x27, 0xfb, 0x45, 0xf5, 0xab,
0x7f, 0x3c, 0x29, 0xd1, 0xa6, 0x9f, 0x73, 0x60, 0xac, 0x83, 0x49, 0x16, 0xe7, 0x0e, 0x5a, 0xef,
0xea, 0xc0, 0xcf, 0x39, 0x30, 0xc1, 0x00, 0xee, 0x7f, 0x2a, 0xb4, 0x71, 0xa9, 0xa6, 0xfc, 0x8b,
0x09, 0xd7, 0x66, 0x69, 0x83, 0xa5, 0x9d, 0xca, 0xe2, 0x06, 0x83, 0xe7, 0x50, 0x77, 0x60, 0x4d,
0xbe, 0x05, 0x2b, 0x8e, 0x2d, 0x08, 0x6a, 0xed, 0x77, 0xf6, 0x1c, 0x5d, 0xf6, 0xbc, 0x37, 0x6f,
0x0d, 0x04, 0xac, 0x3a, 0xcd, 0x21, 0xcb, 0x4c, 0x34, 0x62, 0x64, 0x0b, 0x56, 0x12, 0x9e, 0x0e,
0xcd, 0x08, 0xab, 0x5a, 0xa3, 0x5e, 0xb2, 0xf5, 0x7a, 0x25, 0x62, 0x33, 0xc2, 0xca, 0xd6, 0xa8,
0x13, 0x2c, 0x7a, 0xc4, 0xc5, 0x70, 0x64, 0xb0, 0xb6, 0x35, 0xea, 0x25, 0x9b, 0x6a, 0xac, 0x8f,
0x2b, 0x2e, 0x8e, 0x83, 0xff, 0x56, 0xa0, 0xed, 0xd6, 0x3a, 0x9b, 0x69, 0xc3, 0xc7, 0x76, 0x72,
0x2c, 0xc7, 0x4c, 0xa4, 0xb8, 0x54, 0x93, 0x7a, 0xc9, 0x2e, 0x65, 0x84, 0x49, 0x78, 0x4e, 0x22,
0x14, 0xec, 0xc6, 0xaf, 0xf8, 0xec, 0x95, 0x54, 0xb1, 0xf6, 0x44, 0x2a, 0x64, 0x4b, 0x9b, 0x98,
0xeb, 0x48, 0x09, 0xac, 0x9d, 0x5f, 0x75, 0x51, 0x65, 0x03, 0x4a, 0xe4, 0x50, 0x7a, 0x46, 0xe1,
0xd8, 0xd6, 0xfe, 0x92, 0x4d, 0x45, 0x24, 0x53, 0xcf, 0xa3, 0x5c, 0x24, 0x6b, 0x50, 0x11, 0x51,
0xe6, 0x09, 0x64, 0x87, 0xe4, 0x31, 0x34, 0x59, 0xca, 0x92, 0x99, 0x11, 0x91, 0x46, 0x02, 0x35,
0xe9, 0x5c, 0x61, 0x63, 0xd3, 0xc2, 0x70, 0x24, 0xb9, 0xa3, 0x51, 0x21, 0x93, 0x8f, 0x60, 0x23,
0x92, 0xd9, 0x4c, 0xd9, 0xbc, 0x84, 0xda, 0x30, 0x65, 0xc2, 0x19, 0x67, 0x0a, 0x19, 0xd5, 0xa4,
0xa4, 0xb0, 0x9d, 0x59, 0xd3, 0x2f, 0x39, 0x53, 0x64, 0x00, 0xeb, 0x8a, 0x0f, 0x85, 0x36, 0x5c,
0x85, 0x17, 0x2c, 0xba, 0x1a, 0x2a, 0x39, 0x49, 0x63, 0x64, 0x50, 0x93, 0x92, 0xdc, 0xf4, 0xa2,
0xb0, 0x90, 0x0f, 0x61, 0x2d, 0x91, 0x43, 0x91, 0x2e, 0xa2, 0xdb, 0x88, 0xee, 0xa2, 0x7e, 0x01,
0xfa, 0x01, 0x74, 0x15, 0x8f, 0xe4, 0x78, 0xcc, 0xd3, 0x38, 0x74, 0xc9, 0x5c, 0x45, 0x16, 0x75,
0x0a, 0xf5, 0xcf, 0x31, 0xa5, 0x3d, 0xa8, 0x4f, 0xb9, 0xd2, 0x36, 0x9d, 0x1d, 0x97, 0x1c, 0x2f,
0x92, 0x27, 0xd0, 0x8a, 0x14, 0x8f, 0x85, 0x09, 0x71, 0xbf, 0x5d, 0xb4, 0x82, 0x53, 0x7d, 0x66,
0x77, 0xfc, 0x00, 0xea, 0x9a, 0x47, 0xa1, 0xcd, 0xe0, 0x9a, 0x2b, 0xac, 0xe6, 0xd1, 0x49, 0x94,
0x05, 0x7f, 0x2c, 0xe5, 0x0c, 0xf8, 0x44, 0x4a, 0xc3, 0x95, 0xad, 0x34, 0xbb, 0x90, 0x13, 0xe3,
0x09, 0xe0, 0x04, 0xbb, 0x74, 0x24, 0x53, 0xc3, 0x22, 0xe3, 0x19, 0x90, 0x8b, 0x58, 0x85, 0xa1,
0xe2, 0x7c, 0xcc, 0x53, 0xe3, 0x49, 0x30, 0x57, 0x58, 0x6b, 0x91, 0x4d, 0xcf, 0x81, 0xb9, 0xc2,
0xd6, 0xe8, 0x92, 0xf3, 0xd8, 0xa6, 0xc8, 0xb3, 0xa0, 0x90, 0x83, 0xdf, 0x97, 0xf3, 0x63, 0x70,
0x24, 0x74, 0x96, 0xb0, 0x19, 0xf9, 0x01, 0xf4, 0xf4, 0x48, 0xbe, 0x0a, 0x8b, 0x42, 0x4c, 0x34,
0x57, 0x61, 0x24, 0x27, 0xa9, 0x0b, 0xb6, 0x41, 0x37, 0xad, 0x9d, 0x7a, 0xf3, 0xb9, 0xe6, 0xea,
0xd0, 0x1a, 0xc9, 0x3e, 0xa0, 0x21, 0x14, 0x69, 0xcc, 0xaf, 0x43, 0x7f, 0x34, 0x05, 0xd7, 0xb8,
0x95, 0x06, 0x5d, 0xb7, 0xc6, 0x13, 0x6b, 0x3b, 0x2c, 0x4c, 0xe4, 0x3d, 0xe8, 0x64, 0x6c, 0xc8,
0x75, 0x98, 0x71, 0x15, 0x2a, 0xce, 0x62, 0x7f, 0x9a, 0xda, 0xa8, 0x3d, 0xe5, 0x8a, 0x72, 0x16,
0x5b, 0x5a, 0x2c, 0x11, 0xc9, 0xb8, 0x34, 0x54, 0x6f, 0xf3, 0xc8, 0x59, 0xc8, 0x8f, 0xa1, 0x8f,
0xa1, 0xc4, 0x32, 0x9a, 0x58, 0x45, 0xb8, 0x70, 0x20, 0x34, 0xe6, 0xa0, 0x41, 0x71, 0x97, 0x47,
0x1e, 0x70, 0xb4, 0x60, 0x0f, 0xfe, 0x54, 0x85, 0x8e, 0x3f, 0xae, 0x3c, 0x9a, 0x28, 0x61, 0x66,
0xe4, 0x21, 0x34, 0x84, 0x0e, 0xa3, 0x44, 0x6a, 0xee, 0x93, 0x50, 0x17, 0xfa, 0xd0, 0x8a, 0x96,
0x57, 0xa8, 0x5f, 0x08, 0xcc, 0xd5, 0xae, 0x83, 0xea, 0x79, 0x50, 0x1f, 0x40, 0x97, 0xa7, 0xec,
0x22, 0xe1, 0x45, 0x6a, 0x71, 0xb3, 0x0d, 0xda, 0x71, 0xea, 0x3c, 0xa3, 0xf6, 0xdc, 0x78, 0x60,
0xe4, 0x5a, 0x53, 0x88, 0x5c, 0xc6, 0xfd, 0x36, 0x28, 0x71, 0x36, 0xdf, 0xb5, 0x3e, 0xb5, 0x16,
0xf2, 0x7d, 0x78, 0x70, 0x63, 0x46, 0xb1, 0x84, 0xdb, 0xec, 0xe6, 0xd2, 0xa4, 0x62, 0xa5, 0xef,
0xc2, 0xd6, 0x8d, 0x79, 0xee, 0x24, 0x18, 0x6c, 0x0b, 0x0d, 0xba, 0xb1, 0x34, 0xed, 0xd0, 0xd9,
0xc8, 0xc7, 0xf0, 0xf8, 0xc6, 0xac, 0x4b, 0x91, 0xc6, 0x61, 0xc6, 0xb4, 0xb6, 0xe7, 0x0a, 0x9b,
0x47, 0x83, 0x3e, 0x5c, 0x9a, 0xfb, 0x89, 0x48, 0xe3, 0x53, 0x0f, 0xb0, 0x4c, 0xb9, 0xe1, 0x60,
0x92, 0x25, 0x92, 0xc5, 0xd8, 0x5e, 0x1a, 0x74, 0x7d, 0x69, 0xe6, 0x39, 0x9a, 0xc8, 0x33, 0xb8,
0x3f, 0x66, 0xd7, 0xf3, 0x8a, 0x6a, 0xf1, 0xda, 0x75, 0x9c, 0x1a, 0xed, 0x8e, 0xd9, 0x75, 0x5e,
0xc8, 0x33, 0xf1, 0x1a, 0x1b, 0x4f, 0x81, 0x63, 0x49, 0x22, 0x5f, 0xf1, 0x38, 0xe4, 0xd7, 0xf6,
0x2a, 0xb3, 0xe7, 0x9d, 0xe4, 0xb6, 0x03, 0x67, 0x3a, 0xbe, 0x36, 0xe4, 0x7d, 0xe8, 0xb8, 0x3e,
0xa2, 0xf8, 0x17, 0x13, 0xa1, 0xb8, 0xeb, 0x39, 0x0d, 0xba, 0x8a, 0x5a, 0xea, 0x95, 0xc1, 0x5f,
0x4b, 0xd0, 0x38, 0xe3, 0xc6, 0x88, 0x74, 0xa8, 0xc9, 0xb7, 0x61, 0x45, 0x63, 0x3b, 0x47, 0x46,
0xb4, 0xf6, 0x37, 0x96, 0x2f, 0x1a, 0xd7, 0xea, 0xa9, 0xc7, 0x58, 0xf4, 0x25, 0x1e, 0x7d, 0x64,
0xc7, 0x2d, 0xb4, 0x6b, 0x0b, 0xd4, 0x63, 0xc8, 0x3e, 0x34, 0xb4, 0xe7, 0x1e, 0x92, 0xa4, 0xb5,
0xbf, 0x75, 0xc3, 0xbb, 0xb7, 0xd2, 0x02, 0x47, 0x06, 0x50, 0x8f, 0xdd, 0x19, 0x46, 0xa6, 0xb4,
0xf6, 0x37, 0x97, 0xa7, 0xf8, 0x03, 0x4e, 0x73, 0x54, 0xf0, 0x9f, 0x12, 0xb4, 0x8f, 0xd3, 0xe9,
0x11, 0xcf, 0x78, 0x1a, 0xdb, 0xc2, 0xe6, 0xaf, 0x95, 0xd2, 0xc2, 0x6b, 0xe5, 0xc6, 0x05, 0x53,
0xbe, 0x7d, 0xc1, 0x3c, 0x85, 0xb6, 0xd0, 0xa1, 0x48, 0xb5, 0x61, 0x49, 0xc2, 0x63, 0x4f, 0xea,
0x96, 0xd0, 0x27, 0xb9, 0xca, 0x76, 0x3b, 0xae, 0x94, 0x54, 0xf9, 0x93, 0x07, 0x05, 0x7c, 0x67,
0x8c, 0x78, 0x74, 0xe5, 0x9e, 0x09, 0xb5, 0x77, 0x7e, 0x67, 0xb8, 0x39, 0x07, 0xc6, 0x5e, 0x56,
0xd1, 0x38, 0xf6, 0x57, 0x98, 0x1d, 0xda, 0x0e, 0x2d, 0xf4, 0xbc, 0x88, 0x8e, 0x89, 0x20, 0x74,
0x51, 0xc1, 0x8f, 0xa0, 0x7a, 0x9c, 0x4e, 0x35, 0xd9, 0x85, 0x2a, 0x4f, 0xa7, 0xda, 0xbf, 0x11,
0x8a, 0x62, 0x2c, 0xa6, 0x83, 0x22, 0x22, 0xf8, 0x5d, 0x05, 0x6a, 0xf6, 0x10, 0x6b, 0xfb, 0x00,
0xbb, 0xd1, 0x0b, 0x2b, 0xb4, 0x39, 0x29, 0xfa, 0xdf, 0xfb, 0xd0, 0x29, 0x58, 0xe7, 0x20, 0x65,
0x84, 0xac, 0xe6, 0xda, 0x02, 0x96, 0x3f, 0x5b, 0x3c, 0xac, 0xe2, 0x60, 0xb9, 0xd6, 0xc1, 0xbe,
0x09, 0xab, 0x4c, 0x19, 0x11, 0xd9, 0x43, 0x82, 0xa8, 0x2a, 0xa2, 0xda, 0x5e, 0x59, 0x80, 0xfc,
0x81, 0xf5, 0xa0, 0x9a, 0x03, 0x79, 0xa5, 0x03, 0x3d, 0x85, 0xf6, 0x05, 0x4b, 0xd3, 0x22, 0xf0,
0x15, 0xc4, 0xb4, 0x9c, 0xce, 0x41, 0x3e, 0x84, 0xb5, 0x4b, 0x25, 0x78, 0x1a, 0x27, 0x22, 0xbd,
0xf2, 0xb0, 0x3a, 0xc2, 0xba, 0x73, 0xbd, 0x83, 0x76, 0xa0, 0x2c, 0xf3, 0x77, 0x40, 0x59, 0x2e,
0xdd, 0x96, 0xcd, 0xe5, 0xdb, 0x92, 0x40, 0x75, 0xc4, 0xf4, 0xc8, 0x5f, 0xf7, 0x38, 0xb6, 0x7d,
0xf4, 0x62, 0x22, 0x92, 0xe2, 0x5d, 0xd8, 0xa4, 0x75, 0x94, 0x0f, 0x30, 0x4c, 0xc5, 0x33, 0xa9,
0xf2, 0xad, 0xb4, 0x5d, 0x98, 0x4e, 0x87, 0x6b, 0x07, 0xbf, 0x86, 0xfa, 0xe1, 0xe9, 0xf9, 0x49,
0x7a, 0x29, 0x2d, 0xa3, 0x22, 0xa9, 0xb8, 0xf6, 0x6f, 0x35, 0x27, 0xd8, 0x0a, 0x8d, 0x65, 0xcc,
0x13, 0x77, 0x3f, 0x3b, 0xae, 0x36, 0x51, 0x83, 0xd7, 0xf3, 0x1a, 0x54, 0xc6, 0xa3, 0xd7, 0x98,
0xef, 0x32, 0xb5, 0x43, 0x1b, 0x7d, 0xc6, 0x55, 0x94, 0xdf, 0x26, 0x65, 0x9a, 0x8b, 0xc1, 0x97,
0x25, 0x80, 0x9f, 0xf2, 0xb1, 0x54, 0xb3, 0x7c, 0x3d, 0x23, 0x0d, 0x4b, 0x7c, 0xd9, 0x9d, 0x80,
0xb7, 0xf2, 0x94, 0x89, 0xc4, 0xb6, 0x2b, 0x5f, 0xed, 0xb9, 0xc2, 0x26, 0x60, 0xa2, 0xfd, 0x81,
0xa8, 0x50, 0x1c, 0x5b, 0xdd, 0xa5, 0xe2, 0xdc, 0x57, 0x13, 0xc7, 0x8b, 0x41, 0xd4, 0x96, 0x83,
0xf8, 0x0d, 0x34, 0x8e, 0x84, 0xbe, 0xc2, 0x08, 0x1e, 0x41, 0x33, 0x16, 0xfa, 0x2a, 0x5c, 0x38,
0xa1, 0x0d, 0xab, 0xf8, 0xcc, 0x7f, 0x53, 0xb8, 0xf0, 0xca, 0x8b, 0xe1, 0xfd, 0xff, 0x01, 0xfc,
0xb6, 0x04, 0x70, 0xc4, 0xa7, 0x22, 0xe2, 0x18, 0xc3, 0x53, 0xa8, 0x44, 0xd9, 0xc4, 0xf7, 0xbb,
0x6e, 0xd1, 0x5e, 0x5c, 0x4d, 0xa8, 0xb5, 0x91, 0x67, 0xb0, 0x32, 0xc6, 0xb4, 0xf9, 0x3e, 0x47,
0x72, 0xd4, 0x3c, 0x99, 0xd4, 0x23, 0xc8, 0x7b, 0x50, 0xb5, 0x3b, 0xe8, 0x55, 0xf0, 0x10, 0xae,
0xe5, 0xc8, 0x7c, 0xcb, 0x14, 0xad, 0xfb, 0x7f, 0xa9, 0x42, 0xd3, 0x75, 0xb0, 0x83, 0xd3, 0x13,
0xf2, 0x33, 0x68, 0xbd, 0xe4, 0xa6, 0x68, 0xc2, 0x5b, 0xb7, 0xfa, 0xc5, 0xb1, 0xfd, 0x5e, 0xeb,
0x17, 0xce, 0x72, 0x64, 0xd0, 0xfb, 0xf2, 0x6f, 0xff, 0xfa, 0x43, 0x99, 0x90, 0xb5, 0x81, 0xff,
0xa6, 0xd4, 0xb9, 0x0f, 0x0a, 0xed, 0x73, 0xfc, 0xf4, 0xf0, 0x9f, 0x76, 0xdd, 0xe5, 0xbe, 0xa9,
0xfb, 0x77, 0x2c, 0x12, 0x3c, 0x44, 0x97, 0xeb, 0xfd, 0xce, 0x60, 0xe9, 0x33, 0xf5, 0x87, 0xa5,
0x67, 0xe4, 0x1c, 0x60, 0xfe, 0x05, 0x43, 0x1e, 0xe6, 0x1e, 0x6f, 0x7d, 0xd5, 0xf4, 0x6f, 0x2e,
0x16, 0x3c, 0x42, 0xa7, 0x9b, 0x64, 0x7d, 0xd9, 0xe9, 0x20, 0x11, 0xda, 0x90, 0x9f, 0x40, 0xc3,
0xee, 0x1e, 0xdb, 0xd1, 0x5d, 0x5b, 0x5f, 0x2d, 0xb6, 0x6e, 0x61, 0xc1, 0x26, 0xfa, 0xeb, 0x92,
0xd5, 0x62, 0xdf, 0x38, 0xfb, 0x18, 0xea, 0x2f, 0xb9, 0xc1, 0x5e, 0x78, 0x97, 0xa3, 0xf6, 0x42,
0x57, 0xd4, 0xc1, 0x06, 0xfa, 0xe9, 0x90, 0x76, 0xee, 0xc7, 0x76, 0x47, 0xf2, 0x0b, 0x58, 0x75,
0xb9, 0x3b, 0x13, 0x86, 0x8f, 0x59, 0x76, 0xa7, 0xb3, 0xbb, 0x72, 0xf8, 0x00, 0xdd, 0xde, 0xef,
0x77, 0x8b, 0xf0, 0xbc, 0xa3, 0x33, 0x58, 0x7d, 0xc9, 0xcd, 0x02, 0xf9, 0xee, 0xf2, 0x5c, 0x30,
0x6c, 0x8e, 0x0d, 0xb6, 0xd0, 0xeb, 0x1a, 0x29, 0x2a, 0x13, 0xa3, 0xed, 0xc5, 0xf7, 0xfe, 0xfc,
0x66, 0xbb, 0xf4, 0xf5, 0x9b, 0xed, 0xd2, 0x3f, 0xdf, 0x6c, 0x97, 0xbe, 0x7a, 0xbb, 0x7d, 0xef,
0xeb, 0xb7, 0xdb, 0xf7, 0xfe, 0xfe, 0x76, 0xfb, 0x1e, 0xf8, 0x9f, 0x0a, 0xa7, 0xa5, 0x5f, 0xdd,
0x1f, 0x4b, 0xc5, 0x63, 0x19, 0xf9, 0xa9, 0x3f, 0x9a, 0x3e, 0xbf, 0x58, 0xc1, 0x25, 0xbf, 0xf3,
0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x79, 0xb7, 0x26, 0x50, 0x8f, 0x10, 0x00, 0x00,
0x5e, 0x8a, 0xde, 0x53, 0x81, 0xbe, 0x5c, 0x51, 0xa0, 0xfd, 0x97, 0x5a, 0xf4, 0xe5, 0x80, 0xbe,
0xf4, 0xad, 0x45, 0xd2, 0xfe, 0x1d, 0x2d, 0x38, 0xe4, 0xae, 0x24, 0x1b, 0x06, 0x02, 0xf4, 0x8d,
0x33, 0xf3, 0xe3, 0x70, 0x38, 0xf3, 0xe3, 0x90, 0xbb, 0xb0, 0xce, 0x32, 0x31, 0x98, 0x3e, 0x1f,
0x44, 0x32, 0xbd, 0x14, 0xc3, 0xbd, 0x4c, 0x49, 0x23, 0xc9, 0x0a, 0xcb, 0xc4, 0xde, 0xf4, 0x79,
0xff, 0xc9, 0x50, 0xca, 0x61, 0xc2, 0x07, 0xa8, 0xbd, 0x98, 0x5c, 0x0e, 0x8c, 0x18, 0x73, 0x6d,
0xd8, 0x38, 0x73, 0xc0, 0xfe, 0xc6, 0x50, 0x0e, 0x25, 0x0e, 0x07, 0x76, 0xe4, 0xb5, 0x8f, 0xfd,
0x34, 0xeb, 0x9a, 0xa5, 0xa9, 0x34, 0xcc, 0x08, 0x99, 0x6a, 0x6f, 0x7d, 0x74, 0xd3, 0x29, 0x1f,
0x67, 0x66, 0xe6, 0x8c, 0xc1, 0x7f, 0xca, 0xb0, 0x72, 0x88, 0xa1, 0x90, 0x0e, 0x94, 0x45, 0xdc,
0x2b, 0xed, 0x94, 0x76, 0x2b, 0xb4, 0x2c, 0x62, 0xb2, 0x01, 0xb5, 0x84, 0x5d, 0xf0, 0xa4, 0x57,
0xde, 0x29, 0xed, 0x36, 0xa9, 0x13, 0x08, 0x81, 0x6a, 0xca, 0xc6, 0xbc, 0x57, 0x41, 0x25, 0x8e,
0x2d, 0x72, 0xca, 0x92, 0x09, 0xef, 0x55, 0x1d, 0x12, 0x05, 0xb2, 0x03, 0xad, 0x2c, 0x61, 0x11,
0x1f, 0xc9, 0x24, 0xe6, 0xaa, 0x57, 0x43, 0xdb, 0xa2, 0x8a, 0x7c, 0x03, 0x40, 0xa4, 0xd9, 0xc4,
0x84, 0x66, 0x96, 0xf1, 0xde, 0x0a, 0x02, 0x9a, 0xa8, 0xf9, 0x7c, 0x96, 0x71, 0xd2, 0x87, 0x46,
0xc4, 0x0c, 0x1f, 0x4a, 0x35, 0xeb, 0xd5, 0xd1, 0x58, 0xc8, 0x36, 0x0c, 0x2d, 0x95, 0xe9, 0x35,
0x76, 0x4a, 0xbb, 0x35, 0x8a, 0x63, 0xd2, 0x83, 0xba, 0xcc, 0x70, 0xe7, 0xbd, 0x26, 0xc2, 0x73,
0x91, 0x7c, 0x0c, 0x10, 0x29, 0xce, 0x0c, 0x8f, 0x43, 0x66, 0x7a, 0xb0, 0x53, 0xda, 0x6d, 0xed,
0xf7, 0xf7, 0x5c, 0x5e, 0xf6, 0xf2, 0xbc, 0xec, 0x7d, 0x9e, 0x27, 0xfb, 0x45, 0xf5, 0xab, 0x7f,
0x3e, 0x29, 0xd1, 0xa6, 0x9f, 0x73, 0x60, 0xac, 0x83, 0x49, 0x16, 0xe7, 0x0e, 0x5a, 0xef, 0xea,
0xc0, 0xcf, 0x39, 0x30, 0xc1, 0x00, 0xee, 0x7f, 0x2a, 0xb4, 0x71, 0xa9, 0xa6, 0xfc, 0x8b, 0x09,
0xd7, 0x66, 0x69, 0x83, 0xa5, 0x9d, 0xca, 0xe2, 0x06, 0x83, 0xe7, 0x50, 0x77, 0x60, 0x4d, 0xbe,
0x05, 0x2b, 0x8e, 0x2d, 0x08, 0x6a, 0xed, 0x77, 0xf6, 0x1c, 0x5d, 0xf6, 0xbc, 0x37, 0x6f, 0x0d,
0x04, 0xac, 0x3a, 0xcd, 0x21, 0xcb, 0x4c, 0x34, 0x62, 0x64, 0x0b, 0x56, 0x12, 0x9e, 0x0e, 0xcd,
0x08, 0xab, 0x5a, 0xa3, 0x5e, 0xb2, 0xf5, 0x7a, 0x25, 0x62, 0x33, 0xc2, 0xca, 0xd6, 0xa8, 0x13,
0x2c, 0x7a, 0xc4, 0xc5, 0x70, 0x64, 0xb0, 0xb6, 0x35, 0xea, 0x25, 0x9b, 0x6a, 0xac, 0x8f, 0x2b,
0x2e, 0x8e, 0x83, 0xff, 0x56, 0xa0, 0xed, 0xd6, 0x3a, 0x9b, 0x69, 0xc3, 0xc7, 0x76, 0x72, 0x2c,
0xc7, 0x4c, 0xa4, 0xb8, 0x54, 0x93, 0x7a, 0xc9, 0x2e, 0x65, 0x84, 0x49, 0x78, 0x4e, 0x22, 0x14,
0xec, 0xc6, 0xaf, 0xf8, 0xec, 0x95, 0x54, 0xb1, 0xf6, 0x44, 0x2a, 0x64, 0x4b, 0x9b, 0x98, 0xeb,
0x48, 0x09, 0xac, 0x9d, 0x5f, 0x75, 0x51, 0x65, 0x03, 0x4a, 0xe4, 0x50, 0x7a, 0x46, 0xe1, 0xd8,
0xd6, 0xfe, 0x92, 0x4d, 0x45, 0x24, 0x53, 0xcf, 0xa3, 0x5c, 0x24, 0x6b, 0x50, 0x11, 0x51, 0xe6,
0x09, 0x64, 0x87, 0xe4, 0x31, 0x34, 0x59, 0xca, 0x92, 0x99, 0x11, 0x91, 0x46, 0x02, 0x35, 0xe9,
0x5c, 0x61, 0x63, 0xd3, 0xc2, 0x70, 0x24, 0xb9, 0xa3, 0x51, 0x21, 0x93, 0x8f, 0x60, 0x23, 0x92,
0xd9, 0x4c, 0xd9, 0xbc, 0x84, 0xda, 0x30, 0x65, 0xc2, 0x19, 0x67, 0x0a, 0x19, 0xd5, 0xa4, 0xa4,
0xb0, 0x9d, 0x59, 0xd3, 0x2f, 0x39, 0x53, 0x64, 0x00, 0xeb, 0x8a, 0x0f, 0x85, 0x36, 0x5c, 0x85,
0x17, 0x2c, 0xba, 0x1a, 0x2a, 0x39, 0x49, 0x63, 0x64, 0x50, 0x93, 0x92, 0xdc, 0xf4, 0xa2, 0xb0,
0x90, 0x0f, 0x61, 0x2d, 0x91, 0x43, 0x91, 0x2e, 0xa2, 0xdb, 0x88, 0xee, 0xa2, 0x7e, 0x01, 0xfa,
0x01, 0x74, 0x15, 0x8f, 0xe4, 0x78, 0xcc, 0xd3, 0x38, 0x74, 0xc9, 0x5c, 0x45, 0x16, 0x75, 0x0a,
0xf5, 0xcf, 0x31, 0xa5, 0x3d, 0xa8, 0x4f, 0xb9, 0xd2, 0x36, 0x9d, 0x1d, 0x97, 0x1c, 0x2f, 0x92,
0x27, 0xd0, 0x8a, 0x14, 0x8f, 0x85, 0x09, 0x71, 0xbf, 0x5d, 0xb4, 0x82, 0x53, 0x7d, 0x66, 0x77,
0xfc, 0x00, 0xea, 0x9a, 0x47, 0xa1, 0xcd, 0xe0, 0x9a, 0x2b, 0xac, 0xe6, 0xd1, 0x49, 0x94, 0x05,
0x7f, 0x2a, 0xe5, 0x0c, 0xf8, 0x44, 0x4a, 0xc3, 0x95, 0xad, 0x34, 0xbb, 0x90, 0x13, 0xe3, 0x09,
0xe0, 0x04, 0xbb, 0x74, 0x24, 0x53, 0xc3, 0x22, 0xe3, 0x19, 0x90, 0x8b, 0x58, 0x85, 0xa1, 0xe2,
0x7c, 0xcc, 0x53, 0xe3, 0x49, 0x30, 0x57, 0x58, 0x6b, 0x91, 0x4d, 0xcf, 0x81, 0xb9, 0xc2, 0xd6,
0xe8, 0x92, 0xf3, 0xd8, 0xa6, 0xc8, 0xb3, 0xa0, 0x90, 0x83, 0x3f, 0x94, 0xf3, 0x63, 0x70, 0x24,
0x74, 0x96, 0xb0, 0x19, 0xf9, 0x01, 0xf4, 0xf4, 0x48, 0xbe, 0x0a, 0x8b, 0x42, 0x4c, 0x34, 0x57,
0x61, 0x24, 0x27, 0xa9, 0x0b, 0xb6, 0x41, 0x37, 0xad, 0x9d, 0x7a, 0xf3, 0xb9, 0xe6, 0xea, 0xd0,
0x1a, 0xc9, 0x3e, 0xa0, 0x21, 0x14, 0x69, 0xcc, 0xaf, 0x43, 0x7f, 0x34, 0x05, 0xd7, 0xb8, 0x95,
0x06, 0x5d, 0xb7, 0xc6, 0x13, 0x6b, 0x3b, 0x2c, 0x4c, 0xe4, 0x3d, 0xe8, 0x64, 0x6c, 0xc8, 0x75,
0x98, 0x71, 0x15, 0x2a, 0xce, 0x62, 0x7f, 0x9a, 0xda, 0xa8, 0x3d, 0xe5, 0x8a, 0x72, 0x16, 0x5b,
0x5a, 0x2c, 0x11, 0xc9, 0xb8, 0x34, 0x54, 0x6f, 0xf3, 0xc8, 0x59, 0xc8, 0x8f, 0xa1, 0x8f, 0xa1,
0xc4, 0x32, 0x9a, 0x58, 0x45, 0xb8, 0x70, 0x20, 0x34, 0xe6, 0xa0, 0x41, 0x71, 0x97, 0x47, 0x1e,
0x70, 0xb4, 0x60, 0x0f, 0xfe, 0x5c, 0x85, 0x8e, 0x3f, 0xae, 0x3c, 0x9a, 0x28, 0x61, 0x66, 0xe4,
0x21, 0x34, 0x84, 0x0e, 0xa3, 0x44, 0x6a, 0xee, 0x93, 0x50, 0x17, 0xfa, 0xd0, 0x8a, 0x96, 0x57,
0xa8, 0x5f, 0x08, 0xcc, 0xd5, 0xae, 0x83, 0xea, 0x79, 0x50, 0x1f, 0x40, 0x97, 0xa7, 0xec, 0x22,
0xe1, 0x45, 0x6a, 0x71, 0xb3, 0x0d, 0xda, 0x71, 0xea, 0x3c, 0xa3, 0xf6, 0xdc, 0x78, 0x60, 0xe4,
0x5a, 0x53, 0x88, 0x5c, 0xc6, 0xfd, 0x36, 0x28, 0x71, 0x36, 0xdf, 0xb5, 0x3e, 0xb5, 0x16, 0xf2,
0x7d, 0x78, 0x70, 0x63, 0x46, 0xb1, 0x84, 0xdb, 0xec, 0xe6, 0xd2, 0xa4, 0x62, 0xa5, 0xef, 0xc2,
0xd6, 0x8d, 0x79, 0xee, 0x24, 0x18, 0x6c, 0x0b, 0x0d, 0xba, 0xb1, 0x34, 0xed, 0xd0, 0xd9, 0xc8,
0xc7, 0xf0, 0xf8, 0xc6, 0xac, 0x4b, 0x91, 0xc6, 0x61, 0xc6, 0xb4, 0xb6, 0xe7, 0x0a, 0x9b, 0x47,
0x83, 0x3e, 0x5c, 0x9a, 0xfb, 0x89, 0x48, 0xe3, 0x53, 0x0f, 0xb0, 0x4c, 0xb9, 0xe1, 0x60, 0x92,
0x25, 0x92, 0xc5, 0xd8, 0x5e, 0x1a, 0x74, 0x7d, 0x69, 0xe6, 0x39, 0x9a, 0xc8, 0x33, 0xb8, 0x3f,
0x66, 0xd7, 0xf3, 0x8a, 0x6a, 0xf1, 0xda, 0x75, 0x9c, 0x1a, 0xed, 0x8e, 0xd9, 0x75, 0x5e, 0xc8,
0x33, 0xf1, 0x1a, 0x1b, 0x4f, 0x81, 0x63, 0x49, 0x22, 0x5f, 0xf1, 0x38, 0xe4, 0xd7, 0xf6, 0x2a,
0xb3, 0xe7, 0x9d, 0xe4, 0xb6, 0x03, 0x67, 0x3a, 0xbe, 0x36, 0xe4, 0x7d, 0xe8, 0xb8, 0x3e, 0xa2,
0xf8, 0x17, 0x13, 0xa1, 0xb8, 0xeb, 0x39, 0x0d, 0xba, 0x8a, 0x5a, 0xea, 0x95, 0xc1, 0xdf, 0x4a,
0xd0, 0x38, 0xe3, 0xc6, 0x88, 0x74, 0xa8, 0xc9, 0xb7, 0x61, 0x45, 0x63, 0x3b, 0x47, 0x46, 0xb4,
0xf6, 0x37, 0x96, 0x2f, 0x1a, 0xd7, 0xea, 0xa9, 0xc7, 0x58, 0xf4, 0x25, 0x1e, 0x7d, 0x64, 0xc7,
0x2d, 0xb4, 0x6b, 0x0b, 0xd4, 0x63, 0xc8, 0x3e, 0x34, 0xb4, 0xe7, 0x1e, 0x92, 0xa4, 0xb5, 0xbf,
0x75, 0xc3, 0xbb, 0xb7, 0xd2, 0x02, 0x47, 0x06, 0x50, 0x8f, 0xdd, 0x19, 0x46, 0xa6, 0xb4, 0xf6,
0x37, 0x97, 0xa7, 0xf8, 0x03, 0x4e, 0x73, 0x54, 0xf0, 0xfb, 0x32, 0xb4, 0x8f, 0xd3, 0xe9, 0x11,
0xcf, 0x78, 0x1a, 0xdb, 0xc2, 0xe6, 0xaf, 0x95, 0xd2, 0xc2, 0x6b, 0xe5, 0xc6, 0x05, 0x53, 0xbe,
0x7d, 0xc1, 0x3c, 0x85, 0xb6, 0xd0, 0xa1, 0x48, 0xb5, 0x61, 0x49, 0xc2, 0x63, 0x4f, 0xea, 0x96,
0xd0, 0x27, 0xb9, 0xca, 0x76, 0x3b, 0xae, 0x94, 0x54, 0xf9, 0x93, 0x07, 0x05, 0x7c, 0x67, 0x8c,
0x78, 0x74, 0xe5, 0x9e, 0x09, 0xb5, 0x77, 0x7e, 0x67, 0xb8, 0x39, 0x07, 0xc6, 0x5e, 0x56, 0xd1,
0x38, 0xf6, 0x57, 0x98, 0x1d, 0xda, 0x0e, 0x2d, 0xf4, 0xbc, 0x88, 0x8e, 0x89, 0x20, 0x74, 0x5e,
0xc1, 0xc5, 0xe6, 0xde, 0x58, 0x6a, 0xee, 0xc1, 0x47, 0x50, 0x3d, 0x4e, 0xa7, 0x9a, 0xec, 0x42,
0x95, 0xa7, 0x53, 0xed, 0x5f, 0x0f, 0x45, 0x99, 0x16, 0x13, 0x45, 0x11, 0x11, 0xfc, 0xae, 0x02,
0x35, 0x7b, 0xbc, 0xb5, 0x7d, 0x9a, 0xdd, 0xe8, 0x92, 0x15, 0xda, 0x9c, 0x14, 0x9d, 0xf1, 0x7d,
0xe8, 0x14, 0x7c, 0x74, 0x90, 0x32, 0x42, 0x56, 0x73, 0x6d, 0x01, 0xcb, 0x1f, 0x34, 0x1e, 0x56,
0x71, 0xb0, 0x5c, 0xeb, 0x60, 0xdf, 0x84, 0x55, 0xa6, 0x8c, 0x88, 0xec, 0xf1, 0x41, 0x54, 0x15,
0x51, 0x6d, 0xaf, 0x2c, 0x40, 0xfe, 0x28, 0x7b, 0x50, 0xcd, 0x81, 0xbc, 0xd2, 0x81, 0x9e, 0x42,
0xfb, 0x82, 0xa5, 0x69, 0x11, 0xf8, 0x0a, 0x62, 0x5a, 0x4e, 0xe7, 0x20, 0x1f, 0xc2, 0xda, 0xa5,
0x12, 0x3c, 0x8d, 0x13, 0x91, 0x5e, 0x79, 0x58, 0x1d, 0x61, 0xdd, 0xb9, 0xde, 0x41, 0x3b, 0x50,
0x96, 0xf9, 0x0b, 0xa1, 0x2c, 0x97, 0xee, 0xd1, 0xe6, 0xf2, 0x3d, 0x4a, 0xa0, 0x3a, 0x62, 0x7a,
0xe4, 0x1f, 0x02, 0x38, 0xb6, 0x1d, 0xf6, 0x62, 0x22, 0x92, 0xe2, 0xc5, 0xd8, 0xa4, 0x75, 0x94,
0x0f, 0x30, 0x4c, 0xc5, 0x33, 0xa9, 0xf2, 0xad, 0xb4, 0x5d, 0x98, 0x4e, 0x87, 0x6b, 0x07, 0xbf,
0x86, 0xfa, 0xe1, 0xe9, 0xf9, 0x49, 0x7a, 0x29, 0x2d, 0xd7, 0x22, 0xa9, 0xb8, 0xf6, 0xaf, 0x38,
0x27, 0xd8, 0x0a, 0x8d, 0x65, 0xcc, 0x13, 0x77, 0x73, 0x3b, 0x16, 0x37, 0x51, 0x83, 0x17, 0xf7,
0x1a, 0x54, 0xc6, 0xa3, 0xd7, 0x98, 0xef, 0x32, 0xb5, 0x43, 0x1b, 0x7d, 0xc6, 0x55, 0x94, 0xdf,
0x33, 0x65, 0x9a, 0x8b, 0xc1, 0x97, 0x25, 0x80, 0x9f, 0xf2, 0xb1, 0x54, 0xb3, 0x7c, 0x3d, 0x23,
0x0d, 0x4b, 0x7c, 0xd9, 0x9d, 0x80, 0xf7, 0xf5, 0x94, 0x89, 0xc4, 0x36, 0x32, 0x5f, 0xed, 0xb9,
0xc2, 0x26, 0x60, 0xa2, 0xfd, 0x51, 0xa9, 0x50, 0x1c, 0x5b, 0xdd, 0xa5, 0xe2, 0xdc, 0x57, 0x13,
0xc7, 0x8b, 0x41, 0xd4, 0x96, 0x83, 0xf8, 0x0d, 0x34, 0x8e, 0x84, 0xbe, 0xc2, 0x08, 0x1e, 0x41,
0x33, 0x16, 0xfa, 0x2a, 0x5c, 0x38, 0xbb, 0x0d, 0xab, 0xf8, 0xcc, 0x7f, 0x6d, 0xb8, 0xf0, 0xca,
0x8b, 0xe1, 0xfd, 0xff, 0x01, 0xfc, 0xb6, 0x04, 0x70, 0xc4, 0xa7, 0x22, 0xe2, 0x18, 0xc3, 0x53,
0xa8, 0x44, 0xd9, 0xc4, 0x77, 0xc2, 0x6e, 0xd1, 0x78, 0x5c, 0x4d, 0xa8, 0xb5, 0x91, 0x67, 0xb0,
0x32, 0xc6, 0xb4, 0xf9, 0x0e, 0x48, 0x72, 0xd4, 0x3c, 0x99, 0xd4, 0x23, 0xc8, 0x7b, 0x50, 0xb5,
0x3b, 0xe8, 0x55, 0xf0, 0x10, 0xae, 0xe5, 0xc8, 0x7c, 0xcb, 0x14, 0xad, 0xfb, 0x7f, 0xad, 0x42,
0xd3, 0xf5, 0xb6, 0x83, 0xd3, 0x13, 0xf2, 0x33, 0x68, 0xbd, 0xe4, 0xa6, 0x68, 0xcf, 0x5b, 0xb7,
0x3a, 0xc9, 0xb1, 0xfd, 0x92, 0xeb, 0x17, 0xce, 0x72, 0x64, 0xd0, 0xfb, 0xf2, 0xef, 0xff, 0xfe,
0x63, 0x99, 0x90, 0xb5, 0x81, 0xff, 0xda, 0xd4, 0xb9, 0x0f, 0x0a, 0xed, 0x73, 0xfc, 0x28, 0xf1,
0x1f, 0x7d, 0xdd, 0xe5, 0x8e, 0xaa, 0xfb, 0x77, 0x2c, 0x12, 0x3c, 0x44, 0x97, 0xeb, 0xfd, 0xce,
0x60, 0xe9, 0x03, 0xf6, 0x87, 0xa5, 0x67, 0xe4, 0x1c, 0x60, 0xfe, 0x6d, 0x43, 0x1e, 0xe6, 0x1e,
0x6f, 0x7d, 0xef, 0xf4, 0x6f, 0x2e, 0x16, 0x3c, 0x42, 0xa7, 0x9b, 0x64, 0x7d, 0xd9, 0xe9, 0x20,
0x11, 0xda, 0x90, 0x9f, 0x40, 0xc3, 0xee, 0x1e, 0xdb, 0xd1, 0x5d, 0x5b, 0x5f, 0x2d, 0xb6, 0x6e,
0x61, 0xc1, 0x26, 0xfa, 0xeb, 0x92, 0xd5, 0x62, 0xdf, 0x38, 0xfb, 0x18, 0xea, 0x2f, 0xb9, 0xc1,
0x5e, 0x78, 0x97, 0xa3, 0xf6, 0x42, 0x57, 0xd4, 0xc1, 0x06, 0xfa, 0xe9, 0x90, 0x76, 0xee, 0xc7,
0x76, 0x47, 0xf2, 0x0b, 0x58, 0x75, 0xb9, 0x3b, 0x13, 0x86, 0x8f, 0x59, 0x76, 0xa7, 0xb3, 0xbb,
0x72, 0xf8, 0x00, 0xdd, 0xde, 0xef, 0x77, 0x8b, 0xf0, 0xbc, 0xa3, 0x33, 0x58, 0x7d, 0xc9, 0xcd,
0x02, 0xf9, 0xee, 0xf2, 0x5c, 0x30, 0x6c, 0x8e, 0x0d, 0xb6, 0xd0, 0xeb, 0x1a, 0x29, 0x2a, 0x13,
0xa3, 0xed, 0xc5, 0xf7, 0xfe, 0xf2, 0x66, 0xbb, 0xf4, 0xf5, 0x9b, 0xed, 0xd2, 0xbf, 0xde, 0x6c,
0x97, 0xbe, 0x7a, 0xbb, 0x7d, 0xef, 0xeb, 0xb7, 0xdb, 0xf7, 0xfe, 0xf1, 0x76, 0xfb, 0x1e, 0xf8,
0xdf, 0x0d, 0xa7, 0xa5, 0x5f, 0xdd, 0x1f, 0x4b, 0xc5, 0x63, 0x19, 0xf9, 0xa9, 0x3f, 0x9a, 0x3e,
0xbf, 0x58, 0xc1, 0x25, 0xbf, 0xf3, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x28, 0x27, 0x2b,
0xa9, 0x10, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -2526,6 +2535,13 @@ func (m *EnvDependent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Version) > 0 {
i -= len(m.Version)
copy(dAtA[i:], m.Version)
i = encodeVarintConfig(dAtA, i, uint64(len(m.Version)))
i--
dAtA[i] = 0x42
}
if m.IsRequired {
i--
if m.IsRequired {
@ -3269,6 +3285,10 @@ func (m *EnvDependent) Size() (n int) {
if m.IsRequired {
n += 2
}
l = len(m.Version)
if l > 0 {
n += 1 + l + sovConfig(uint64(l))
}
return n
}
@ -5778,6 +5798,38 @@ func (m *EnvDependent) Unmarshal(dAtA []byte) error {
}
}
m.IsRequired = bool(v != 0)
case 8:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthConfig
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthConfig
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Version = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipConfig(dAtA[iNdEx:])

@ -116,6 +116,7 @@ message EnvDependent {
[ (gogoproto.stdtime) = true ]; //
string cmd = 6; //
bool is_required = 7; //
string version = 8; //
}
//

@ -900,7 +900,8 @@ func (m *SetDocumentRecommendRequest) GetType() int32 {
// 查询文档(针对首页的查询)
type ListDocumentForHomeRequest struct {
Limit int64 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"`
Limit int64 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"`
Field []string `protobuf:"bytes,2,rep,name=field,proto3" json:"field,omitempty"`
}
func (m *ListDocumentForHomeRequest) Reset() { *m = ListDocumentForHomeRequest{} }
@ -943,6 +944,13 @@ func (m *ListDocumentForHomeRequest) GetLimit() int64 {
return 0
}
func (m *ListDocumentForHomeRequest) GetField() []string {
if m != nil {
return m.Field
}
return nil
}
// 首页文档查询返回项
type ListDocumentForHomeItem struct {
CategoryId int64 `protobuf:"varint,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"`
@ -1373,116 +1381,116 @@ func init() {
func init() { proto.RegisterFile("api/v1/document.proto", fileDescriptor_55a584ae3a7fc022) }
var fileDescriptor_55a584ae3a7fc022 = []byte{
// 1729 bytes of a gzipped FileDescriptorProto
// 1736 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xdd, 0x6e, 0xdb, 0xc8,
0x15, 0x0e, 0x45, 0xd9, 0x96, 0x8e, 0x64, 0x45, 0x99, 0x58, 0x36, 0x4d, 0xdb, 0x92, 0xc2, 0xd4,
0xad, 0xd7, 0x28, 0x2c, 0xc4, 0x45, 0x7b, 0xb1, 0x7b, 0x51, 0x78, 0x9d, 0x34, 0x35, 0x50, 0x14,
0x0b, 0x66, 0x83, 0x05, 0xf6, 0x46, 0x65, 0xc4, 0xb1, 0xc4, 0x96, 0x12, 0x59, 0x72, 0x64, 0x55,
0x41, 0x7b, 0xd3, 0x07, 0x28, 0x16, 0xe8, 0xab, 0xf4, 0x21, 0x7a, 0x55, 0x04, 0x68, 0x2f, 0x0a,
0xf4, 0xa2, 0x8b, 0xa4, 0x2f, 0xd0, 0x37, 0x28, 0xe6, 0xcc, 0x0c, 0x45, 0xf1, 0xc7, 0xf6, 0xa6,
0x77, 0x9c, 0x33, 0x33, 0xdf, 0x37, 0x67, 0xe6, 0x9c, 0x6f, 0xce, 0x10, 0x3a, 0x4e, 0xe8, 0x0d,
0x6e, 0x9e, 0x0d, 0xdc, 0x60, 0x34, 0x9f, 0xd2, 0x19, 0x3b, 0x0b, 0xa3, 0x80, 0x05, 0x64, 0xd3,
0x09, 0xbd, 0xb3, 0x9b, 0x67, 0x66, 0x6f, 0x1c, 0x04, 0x63, 0x9f, 0x0e, 0xd0, 0xfa, 0x66, 0x7e,
0x3d, 0x60, 0xde, 0x94, 0xc6, 0xcc, 0x99, 0x86, 0x62, 0xa0, 0xb9, 0x33, 0x0e, 0xc6, 0x01, 0x7e,
0x0e, 0xf8, 0x97, 0xb4, 0x1e, 0xca, 0x69, 0x1c, 0xdc, 0x99, 0xcd, 0x02, 0xe6, 0x30, 0x2f, 0x98,
0xc5, 0xb2, 0xf7, 0x20, 0x0b, 0x4a, 0xa7, 0x21, 0x5b, 0xca, 0xce, 0x3d, 0xb9, 0x20, 0x87, 0x31,
0x67, 0x34, 0x59, 0x2d, 0xc9, 0x7c, 0x24, 0x3b, 0xe6, 0x31, 0x8d, 0x84, 0xc9, 0xfa, 0xb6, 0x06,
0xb5, 0xe7, 0x72, 0xe1, 0xa4, 0x05, 0x15, 0xcf, 0x35, 0xb4, 0xbe, 0x76, 0xa2, 0xdb, 0x15, 0xcf,
0x25, 0x3b, 0xb0, 0xc1, 0x3c, 0xe6, 0x53, 0xa3, 0xd2, 0xd7, 0x4e, 0xea, 0xb6, 0x68, 0x10, 0x13,
0x6a, 0xbf, 0xa1, 0xcb, 0x45, 0x10, 0xb9, 0xb1, 0xa1, 0x63, 0x47, 0xd2, 0x26, 0x7d, 0x68, 0xb8,
0x34, 0x1e, 0x45, 0x5e, 0xc8, 0x57, 0x6b, 0x54, 0xb1, 0x3b, 0x6d, 0x22, 0x7b, 0xb0, 0xc5, 0xe9,
0x87, 0x9e, 0x6b, 0x6c, 0x20, 0xd1, 0x26, 0x6f, 0x5e, 0x21, 0xd9, 0x28, 0xb8, 0xa1, 0x91, 0xb1,
0x29, 0xc8, 0xb0, 0xc1, 0xad, 0x0b, 0xcf, 0x65, 0x13, 0x63, 0xab, 0xaf, 0x9d, 0x6c, 0xd8, 0xa2,
0x41, 0x76, 0x61, 0x73, 0x42, 0xbd, 0xf1, 0x84, 0x19, 0x35, 0x34, 0xcb, 0x16, 0x31, 0x60, 0x2b,
0x8c, 0xe8, 0x8d, 0x47, 0x17, 0x46, 0x1d, 0x3b, 0x54, 0x93, 0xe3, 0x84, 0xce, 0x98, 0xc6, 0x06,
0x08, 0x1c, 0x6c, 0x10, 0x02, 0xd5, 0xf9, 0xdc, 0x73, 0x8d, 0x06, 0x52, 0xe2, 0x37, 0x39, 0x86,
0x96, 0x1b, 0x2c, 0x66, 0x7e, 0xe0, 0xb8, 0xc3, 0x51, 0x30, 0x9f, 0x31, 0xa3, 0x89, 0x53, 0xb6,
0x95, 0xf5, 0x92, 0x1b, 0xc9, 0x11, 0x00, 0x07, 0x96, 0x43, 0xb6, 0x71, 0x48, 0x9d, 0x5b, 0x44,
0xf7, 0x31, 0xb4, 0xae, 0x9d, 0x9b, 0x20, 0xf2, 0x18, 0x95, 0x43, 0x5a, 0x02, 0x45, 0x59, 0xc5,
0xb0, 0xa7, 0xb0, 0x3d, 0x0a, 0xa6, 0x7c, 0xf3, 0xe5, 0xa8, 0x87, 0x38, 0xaa, 0x29, 0x8d, 0x62,
0xd0, 0x0e, 0x6c, 0xc4, 0xa3, 0x20, 0xa2, 0x46, 0x5b, 0xac, 0x1d, 0x1b, 0xa4, 0x07, 0x0d, 0xfc,
0x90, 0x13, 0x1f, 0x61, 0x1f, 0xa0, 0x29, 0x99, 0x16, 0x46, 0xde, 0x88, 0x1a, 0x44, 0xba, 0xcc,
0x1b, 0xdc, 0xe5, 0xd8, 0x7b, 0x4b, 0x8d, 0xc7, 0xb8, 0xf9, 0xf8, 0xcd, 0xb7, 0x33, 0x66, 0x0e,
0x9b, 0xc7, 0xc6, 0x8e, 0xd8, 0x4e, 0xd1, 0x22, 0x3f, 0x05, 0x18, 0x45, 0xd4, 0x61, 0xd4, 0x1d,
0x3a, 0xcc, 0xe8, 0xf4, 0xb5, 0x93, 0xc6, 0xb9, 0x79, 0x26, 0x42, 0xef, 0x4c, 0x85, 0xde, 0xd9,
0x97, 0x2a, 0x9e, 0x3f, 0xaf, 0x7e, 0xf3, 0xef, 0x9e, 0x66, 0xd7, 0xe5, 0x9c, 0x0b, 0xc6, 0x01,
0xe6, 0xa1, 0xab, 0x00, 0x76, 0xef, 0x0b, 0x20, 0xe7, 0x08, 0x00, 0x97, 0xfa, 0x54, 0x02, 0xec,
0xdd, 0x17, 0x40, 0xce, 0xb9, 0x60, 0xe4, 0x12, 0x9a, 0x11, 0x15, 0xbb, 0x89, 0x10, 0x47, 0xf7,
0x84, 0x68, 0x24, 0xb3, 0x2e, 0x18, 0xf9, 0x3e, 0x3c, 0x54, 0xab, 0x50, 0xb1, 0x6b, 0xe0, 0xf6,
0x6d, 0x4b, 0xf3, 0x6b, 0x11, 0xc2, 0x26, 0xd4, 0x78, 0xff, 0xcc, 0x99, 0x52, 0x63, 0x5f, 0x64,
0x86, 0x6a, 0xf3, 0xe3, 0x1a, 0x39, 0x8c, 0x8e, 0x83, 0x68, 0xc9, 0xe7, 0x9b, 0x7d, 0xfd, 0x44,
0xb7, 0x41, 0x99, 0xae, 0x5c, 0xf2, 0x09, 0xb4, 0xd3, 0x24, 0x08, 0x72, 0x80, 0x20, 0x0f, 0x53,
0x2c, 0x88, 0xd5, 0x06, 0x9d, 0xfe, 0x8e, 0x19, 0x87, 0xd8, 0xcb, 0x3f, 0xc9, 0x39, 0xc0, 0x2a,
0xdb, 0x8d, 0x2e, 0x3a, 0x49, 0xce, 0x84, 0x02, 0x9d, 0x5d, 0x24, 0x3d, 0x76, 0x6a, 0x14, 0xe9,
0x43, 0x95, 0x13, 0x19, 0x3d, 0x1c, 0xdd, 0x54, 0xa3, 0x39, 0x8b, 0x8d, 0x3d, 0x7c, 0xcd, 0x74,
0xe6, 0xbc, 0xf1, 0xe9, 0x70, 0xfc, 0xd6, 0x0b, 0x8d, 0x7e, 0x5f, 0x3b, 0xa9, 0xd9, 0x20, 0x4c,
0x2f, 0xdf, 0x7a, 0xa1, 0x08, 0xdf, 0xd9, 0x0d, 0x8d, 0xd8, 0x90, 0x46, 0x51, 0x10, 0x19, 0x4f,
0x70, 0x49, 0x4d, 0x69, 0x7c, 0xc1, 0x6d, 0xd6, 0x0f, 0xa0, 0xf3, 0x1c, 0x1d, 0x50, 0x3a, 0x63,
0xd3, 0xdf, 0xce, 0x69, 0xbc, 0x92, 0x1b, 0x5d, 0xc8, 0x8d, 0x35, 0x80, 0x23, 0x9b, 0x62, 0xda,
0xdb, 0x74, 0xb4, 0x1c, 0xf9, 0x77, 0x4e, 0x78, 0x01, 0xe4, 0x25, 0x65, 0x65, 0xa3, 0x94, 0x8a,
0xf5, 0xa0, 0xb1, 0xf0, 0xd8, 0x64, 0xe8, 0xcc, 0xd9, 0x24, 0x88, 0x50, 0xcb, 0x6a, 0x36, 0x70,
0xd3, 0x05, 0x5a, 0xac, 0x21, 0x1c, 0xbc, 0x5a, 0xc1, 0xc4, 0x97, 0xf2, 0x4c, 0x14, 0x5e, 0x0f,
0x1a, 0x4a, 0xda, 0x87, 0x09, 0x3d, 0x28, 0xd3, 0x95, 0x9b, 0x3d, 0xda, 0x4a, 0xf6, 0x68, 0xad,
0x77, 0x15, 0x78, 0xfc, 0x0b, 0x2f, 0xce, 0xad, 0x94, 0x40, 0x95, 0xeb, 0x90, 0x5c, 0x2b, 0x7e,
0x27, 0xf9, 0x59, 0x49, 0xe5, 0x67, 0x0b, 0x2a, 0x0b, 0x57, 0x6a, 0x6d, 0x65, 0x81, 0x52, 0x79,
0xed, 0x51, 0xdf, 0x35, 0xaa, 0x7d, 0x9d, 0x4b, 0x25, 0x36, 0xb8, 0x35, 0x88, 0x5c, 0x1a, 0xa1,
0xae, 0xd6, 0x6d, 0xd1, 0xc8, 0x2e, 0x6e, 0x33, 0x17, 0x77, 0x29, 0x41, 0xde, 0xc2, 0x4e, 0x25,
0xc8, 0x2b, 0x55, 0xa8, 0xf5, 0xf5, 0x94, 0x2a, 0x3c, 0x81, 0xa6, 0x17, 0x0f, 0x93, 0xfc, 0x30,
0xea, 0x7d, 0xfd, 0xa4, 0x66, 0x37, 0xbc, 0xd8, 0x56, 0x26, 0xbe, 0x14, 0xdf, 0x9b, 0x7a, 0x0c,
0xd5, 0x56, 0xb7, 0x45, 0x43, 0x85, 0x6d, 0x63, 0x15, 0xb6, 0x47, 0x6b, 0x02, 0xd3, 0x44, 0x6f,
0x52, 0xf2, 0xb1, 0x0f, 0xb5, 0x6b, 0x4a, 0x87, 0x6c, 0x19, 0x52, 0x54, 0xd8, 0xba, 0xbd, 0x75,
0x4d, 0xe9, 0x97, 0xcb, 0x90, 0x5a, 0x5f, 0xc1, 0xa3, 0xf5, 0x1d, 0x0d, 0xfd, 0x25, 0xde, 0x57,
0x01, 0x73, 0x7c, 0xb9, 0xa1, 0xa2, 0x41, 0x7e, 0x08, 0x35, 0x75, 0x58, 0x78, 0x36, 0x8d, 0xf3,
0xb6, 0x8a, 0xf5, 0x64, 0x7a, 0x32, 0xc2, 0xa2, 0x40, 0x2e, 0x71, 0x01, 0xaa, 0xef, 0x8a, 0xd1,
0xe9, 0xea, 0x26, 0xd4, 0xd2, 0x37, 0xe1, 0x53, 0xd8, 0x5e, 0xe5, 0x93, 0x38, 0x7a, 0xce, 0xdb,
0x5c, 0x19, 0xc5, 0xbd, 0x26, 0x64, 0x58, 0x4f, 0xc9, 0xb0, 0xf5, 0x27, 0x0d, 0x3a, 0xeb, 0x3c,
0x2a, 0x28, 0x0e, 0xa1, 0xce, 0x53, 0x60, 0xc1, 0x2f, 0x09, 0xa4, 0xab, 0xd9, 0x2b, 0xc3, 0x9d,
0xb1, 0x46, 0x7e, 0x92, 0xf2, 0x56, 0x47, 0x6f, 0x4d, 0xe5, 0x6d, 0xde, 0xaf, 0x94, 0xdf, 0x17,
0x6b, 0x49, 0x90, 0x1c, 0x65, 0x49, 0xea, 0xf1, 0x30, 0xc5, 0x63, 0xa9, 0xa0, 0x53, 0xf8, 0x6d,
0x9d, 0x83, 0x99, 0x3e, 0x93, 0x9f, 0x05, 0xd1, 0xcf, 0x83, 0x29, 0x55, 0x08, 0x49, 0x4c, 0x68,
0xa9, 0x98, 0xb0, 0xfe, 0xa2, 0xc1, 0x5e, 0xc1, 0x24, 0xdc, 0xf4, 0x8c, 0xaf, 0x62, 0x5e, 0xda,
0xd7, 0x63, 0x68, 0x25, 0x03, 0x44, 0xed, 0x20, 0x0a, 0x95, 0x6d, 0x65, 0xbd, 0xc4, 0x1a, 0x82,
0xab, 0x94, 0x1a, 0x86, 0xb2, 0xaa, 0x4b, 0x95, 0x92, 0xc6, 0x5f, 0x72, 0x4d, 0x4d, 0x47, 0x49,
0xf5, 0xce, 0x28, 0xf9, 0x1a, 0x0e, 0x0a, 0x5d, 0x8d, 0xc3, 0x60, 0x16, 0x53, 0xf2, 0x59, 0x0a,
0x4c, 0x43, 0xb0, 0x9e, 0x02, 0x2b, 0x71, 0x36, 0x85, 0xfd, 0x37, 0x0d, 0x3a, 0xaf, 0xa8, 0x13,
0x8d, 0x26, 0xb7, 0xe9, 0xc5, 0x46, 0x81, 0x5e, 0x6c, 0x94, 0xe8, 0x45, 0x66, 0x23, 0xab, 0xb9,
0xa0, 0xe1, 0x20, 0x41, 0xc4, 0xa4, 0x72, 0xe0, 0xb7, 0xca, 0xd6, 0xad, 0x55, 0xb6, 0xa6, 0x94,
0xa2, 0xb6, 0x56, 0xba, 0xad, 0xa7, 0x71, 0x3d, 0x93, 0xc6, 0xd6, 0x7f, 0x35, 0xd8, 0x56, 0xae,
0xbc, 0xc2, 0xda, 0xa5, 0x40, 0xa2, 0xd3, 0x12, 0x2b, 0xd2, 0x28, 0x2d, 0xb1, 0x29, 0x6a, 0x3d,
0x5b, 0x35, 0x8a, 0xda, 0xa8, 0x9a, 0xae, 0x8d, 0xd6, 0x0b, 0x97, 0x8d, 0xff, 0xb7, 0x70, 0xd9,
0xfc, 0xce, 0x85, 0x8b, 0x15, 0xc0, 0xe3, 0xec, 0x19, 0x96, 0x2b, 0x14, 0x77, 0x22, 0xe4, 0x52,
0x2a, 0xeb, 0x6c, 0x6c, 0xac, 0x45, 0xa4, 0x7e, 0x67, 0x44, 0x7e, 0x02, 0x9d, 0xe7, 0xb2, 0x40,
0x5d, 0xa7, 0x6c, 0x83, 0x3e, 0x8f, 0x7c, 0x29, 0x5c, 0xfc, 0xf3, 0xfc, 0x1f, 0x0d, 0x68, 0xa8,
0x31, 0x17, 0x5f, 0x5c, 0x91, 0x3f, 0xac, 0xdf, 0x4e, 0x32, 0x2a, 0x89, 0x75, 0x4b, 0xc8, 0xca,
0x88, 0x34, 0x9f, 0xde, 0x3a, 0x46, 0x64, 0x83, 0x75, 0xf4, 0xc7, 0xbf, 0xff, 0xe7, 0xcf, 0x95,
0x3d, 0xd2, 0x19, 0x64, 0x5e, 0x4a, 0x83, 0x09, 0xe7, 0x79, 0x0b, 0x3b, 0x45, 0xca, 0x43, 0x12,
0xec, 0x5b, 0x74, 0xc9, 0xdc, 0xcd, 0x1d, 0xca, 0x0b, 0xfe, 0x12, 0xb2, 0x8e, 0x91, 0xb3, 0x67,
0x9a, 0x39, 0xce, 0xe4, 0xe2, 0xfa, 0x54, 0x3b, 0x25, 0x2e, 0xb4, 0xd6, 0x55, 0x91, 0x1c, 0x15,
0xab, 0xe5, 0x5d, 0x7c, 0x07, 0xc8, 0xd7, 0xb1, 0xda, 0x59, 0x3e, 0xce, 0xf2, 0x15, 0xb4, 0x5e,
0x63, 0x64, 0x24, 0x2c, 0xb9, 0x93, 0xbc, 0x0b, 0xd8, 0x2c, 0x04, 0x76, 0xa0, 0xb5, 0x5e, 0x5a,
0xad, 0x96, 0x5f, 0x58, 0x72, 0x95, 0xb2, 0x18, 0xc8, 0x42, 0x4e, 0x73, 0x2c, 0xe4, 0x35, 0x34,
0x52, 0x35, 0x16, 0x49, 0x2e, 0x93, 0x7c, 0xe1, 0x65, 0xe6, 0x9c, 0x52, 0xb0, 0x24, 0x0f, 0xeb,
0xc2, 0xe3, 0x97, 0x94, 0xd9, 0xd4, 0xe7, 0xf9, 0x92, 0x94, 0x5e, 0x05, 0xfb, 0xb2, 0x5f, 0x14,
0x61, 0x18, 0xd9, 0x56, 0x1f, 0xd1, 0x4d, 0x62, 0x14, 0x9c, 0x31, 0xe2, 0x92, 0x6b, 0x68, 0x67,
0x93, 0xa2, 0x80, 0x62, 0xb5, 0x67, 0x45, 0x09, 0x64, 0x3d, 0x41, 0x9a, 0x03, 0xb2, 0x9f, 0xa3,
0x51, 0x2f, 0x42, 0x42, 0xa1, 0x99, 0x5e, 0x1e, 0x39, 0x28, 0x5e, 0xb4, 0xd8, 0xa6, 0x5b, 0x3c,
0x2a, 0xcf, 0x14, 0xdf, 0x8b, 0x19, 0x99, 0x42, 0x6b, 0x5d, 0x54, 0x56, 0xc7, 0x5d, 0x78, 0x61,
0x98, 0x07, 0x65, 0xdd, 0x9c, 0xac, 0x87, 0x64, 0xfb, 0x64, 0x2f, 0x47, 0x16, 0xe3, 0x68, 0xe2,
0x42, 0x3b, 0x95, 0x7a, 0x42, 0xb9, 0x3b, 0xd9, 0xdd, 0x43, 0x73, 0x69, 0x5c, 0xc9, 0xbd, 0xb3,
0x76, 0xf3, 0x1c, 0x7c, 0x1e, 0x8f, 0xe1, 0x5f, 0x41, 0xfb, 0xe5, 0x3d, 0x59, 0x8a, 0xcd, 0x56,
0x17, 0x49, 0x0c, 0x52, 0x42, 0x42, 0x7e, 0x9d, 0x13, 0x18, 0x7c, 0x9d, 0x90, 0x92, 0x45, 0x97,
0x3a, 0x63, 0x21, 0xcf, 0x61, 0x89, 0xa6, 0x08, 0xcc, 0xe5, 0x1a, 0x57, 0xf2, 0x96, 0x28, 0x14,
0xb3, 0xec, 0x4b, 0xa3, 0x94, 0xf8, 0x7b, 0x48, 0xdc, 0x35, 0xf3, 0x11, 0xa8, 0xee, 0xf0, 0x4f,
0xb5, 0xd3, 0xf3, 0x7f, 0xe9, 0x00, 0xf2, 0xe1, 0xc4, 0x55, 0x3d, 0x10, 0xaa, 0x9e, 0x79, 0x4a,
0x7d, 0x74, 0x68, 0xde, 0x96, 0x6c, 0xc8, 0x40, 0x7e, 0x0f, 0xbb, 0xc5, 0xcf, 0x37, 0x72, 0xac,
0x60, 0x6f, 0x7d, 0xde, 0x95, 0xba, 0xff, 0x14, 0xa9, 0x8f, 0xcc, 0x52, 0x6a, 0x1e, 0x46, 0xa1,
0x7a, 0x65, 0x66, 0xc9, 0x3f, 0x52, 0x11, 0xa5, 0xbf, 0xa7, 0xe5, 0xfe, 0xfa, 0xb0, 0x73, 0xe9,
0x53, 0x27, 0xe7, 0xed, 0x77, 0x0d, 0x2b, 0x79, 0xba, 0xa7, 0x87, 0x65, 0x4c, 0x03, 0xc7, 0xf7,
0x3f, 0xff, 0xf1, 0x5f, 0xdf, 0x77, 0xb5, 0x77, 0xef, 0xbb, 0xda, 0xb7, 0xef, 0xbb, 0xda, 0x37,
0x1f, 0xba, 0x0f, 0xde, 0x7d, 0xe8, 0x3e, 0xf8, 0xe7, 0x87, 0xee, 0x03, 0x90, 0x3f, 0x1a, 0xbf,
0xd0, 0xbe, 0x7e, 0x34, 0x0d, 0x22, 0xea, 0x06, 0x23, 0x09, 0xf4, 0xd9, 0xcd, 0xb3, 0x37, 0x9b,
0x48, 0xf6, 0xa3, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x12, 0x32, 0x62, 0xac, 0xa5, 0x14, 0x00,
0x00,
0xad, 0xd7, 0x28, 0x2c, 0xc4, 0x45, 0x7b, 0xb1, 0x7b, 0x51, 0x78, 0x9d, 0x34, 0x6b, 0xa0, 0x28,
0x16, 0xcc, 0x06, 0x0b, 0xec, 0x8d, 0xca, 0x88, 0x63, 0x89, 0x2d, 0x25, 0xb2, 0xe4, 0xc8, 0xaa,
0x82, 0xf6, 0xa6, 0x0f, 0x50, 0x2c, 0xd0, 0x57, 0xe9, 0x43, 0xf4, 0xaa, 0x08, 0xd0, 0x5e, 0x14,
0xe8, 0x45, 0x17, 0x49, 0x5f, 0xa0, 0x6f, 0x50, 0xcc, 0x99, 0x19, 0x8a, 0xe2, 0x8f, 0xed, 0xdd,
0xbd, 0xe3, 0x9c, 0x99, 0xf9, 0xbe, 0x39, 0x33, 0xe7, 0x7c, 0x73, 0x86, 0xd0, 0x71, 0x42, 0x6f,
0x70, 0xf3, 0x6c, 0xe0, 0x06, 0xa3, 0xf9, 0x94, 0xce, 0xd8, 0x59, 0x18, 0x05, 0x2c, 0x20, 0x9b,
0x4e, 0xe8, 0x9d, 0xdd, 0x3c, 0x33, 0x7b, 0xe3, 0x20, 0x18, 0xfb, 0x74, 0x80, 0xd6, 0x37, 0xf3,
0xeb, 0x01, 0xf3, 0xa6, 0x34, 0x66, 0xce, 0x34, 0x14, 0x03, 0xcd, 0x9d, 0x71, 0x30, 0x0e, 0xf0,
0x73, 0xc0, 0xbf, 0xa4, 0xf5, 0x50, 0x4e, 0xe3, 0xe0, 0xce, 0x6c, 0x16, 0x30, 0x87, 0x79, 0xc1,
0x2c, 0x96, 0xbd, 0x07, 0x59, 0x50, 0x3a, 0x0d, 0xd9, 0x52, 0x76, 0xee, 0xc9, 0x05, 0x39, 0x8c,
0x39, 0xa3, 0xc9, 0x6a, 0x49, 0xe6, 0x23, 0xd9, 0x31, 0x8f, 0x69, 0x24, 0x4c, 0xd6, 0x37, 0x35,
0xa8, 0x3d, 0x97, 0x0b, 0x27, 0x2d, 0xa8, 0x78, 0xae, 0xa1, 0xf5, 0xb5, 0x13, 0xdd, 0xae, 0x78,
0x2e, 0xd9, 0x81, 0x0d, 0xe6, 0x31, 0x9f, 0x1a, 0x95, 0xbe, 0x76, 0x52, 0xb7, 0x45, 0x83, 0x98,
0x50, 0xfb, 0x2d, 0x5d, 0x2e, 0x82, 0xc8, 0x8d, 0x0d, 0x1d, 0x3b, 0x92, 0x36, 0xe9, 0x43, 0xc3,
0xa5, 0xf1, 0x28, 0xf2, 0x42, 0xbe, 0x5a, 0xa3, 0x8a, 0xdd, 0x69, 0x13, 0xd9, 0x83, 0x2d, 0x4e,
0x3f, 0xf4, 0x5c, 0x63, 0x03, 0x89, 0x36, 0x79, 0xf3, 0x0a, 0xc9, 0x46, 0xc1, 0x0d, 0x8d, 0x8c,
0x4d, 0x41, 0x86, 0x0d, 0x6e, 0x5d, 0x78, 0x2e, 0x9b, 0x18, 0x5b, 0x7d, 0xed, 0x64, 0xc3, 0x16,
0x0d, 0xb2, 0x0b, 0x9b, 0x13, 0xea, 0x8d, 0x27, 0xcc, 0xa8, 0xa1, 0x59, 0xb6, 0x88, 0x01, 0x5b,
0x61, 0x44, 0x6f, 0x3c, 0xba, 0x30, 0xea, 0xd8, 0xa1, 0x9a, 0x1c, 0x27, 0x74, 0xc6, 0x34, 0x36,
0x40, 0xe0, 0x60, 0x83, 0x10, 0xa8, 0xce, 0xe7, 0x9e, 0x6b, 0x34, 0x90, 0x12, 0xbf, 0xc9, 0x31,
0xb4, 0xdc, 0x60, 0x31, 0xf3, 0x03, 0xc7, 0x1d, 0x8e, 0x82, 0xf9, 0x8c, 0x19, 0x4d, 0x9c, 0xb2,
0xad, 0xac, 0x97, 0xdc, 0x48, 0x8e, 0x00, 0x38, 0xb0, 0x1c, 0xb2, 0x8d, 0x43, 0xea, 0xdc, 0x22,
0xba, 0x8f, 0xa1, 0x75, 0xed, 0xdc, 0x04, 0x91, 0xc7, 0xa8, 0x1c, 0xd2, 0x12, 0x28, 0xca, 0x2a,
0x86, 0x3d, 0x85, 0xed, 0x51, 0x30, 0xe5, 0x9b, 0x2f, 0x47, 0x3d, 0xc4, 0x51, 0x4d, 0x69, 0x14,
0x83, 0x76, 0x60, 0x23, 0x1e, 0x05, 0x11, 0x35, 0xda, 0x62, 0xed, 0xd8, 0x20, 0x3d, 0x68, 0xe0,
0x87, 0x9c, 0xf8, 0x08, 0xfb, 0x00, 0x4d, 0xc9, 0xb4, 0x30, 0xf2, 0x46, 0xd4, 0x20, 0xd2, 0x65,
0xde, 0xe0, 0x2e, 0xc7, 0xde, 0x5b, 0x6a, 0x3c, 0xc6, 0xcd, 0xc7, 0x6f, 0xbe, 0x9d, 0x31, 0x73,
0xd8, 0x3c, 0x36, 0x76, 0xc4, 0x76, 0x8a, 0x16, 0xf9, 0x39, 0xc0, 0x28, 0xa2, 0x0e, 0xa3, 0xee,
0xd0, 0x61, 0x46, 0xa7, 0xaf, 0x9d, 0x34, 0xce, 0xcd, 0x33, 0x11, 0x7a, 0x67, 0x2a, 0xf4, 0xce,
0xbe, 0x50, 0xf1, 0xfc, 0x69, 0xf5, 0xeb, 0xff, 0xf4, 0x34, 0xbb, 0x2e, 0xe7, 0x5c, 0x30, 0x0e,
0x30, 0x0f, 0x5d, 0x05, 0xb0, 0x7b, 0x5f, 0x00, 0x39, 0x47, 0x00, 0xb8, 0xd4, 0xa7, 0x12, 0x60,
0xef, 0xbe, 0x00, 0x72, 0xce, 0x05, 0x23, 0x97, 0xd0, 0x8c, 0xa8, 0xd8, 0x4d, 0x84, 0x38, 0xba,
0x27, 0x44, 0x23, 0x99, 0x75, 0xc1, 0xc8, 0x0f, 0xe1, 0xa1, 0x5a, 0x85, 0x8a, 0x5d, 0x03, 0xb7,
0x6f, 0x5b, 0x9a, 0x5f, 0x8b, 0x10, 0x36, 0xa1, 0xc6, 0xfb, 0x67, 0xce, 0x94, 0x1a, 0xfb, 0x22,
0x33, 0x54, 0x9b, 0x1f, 0xd7, 0xc8, 0x61, 0x74, 0x1c, 0x44, 0x4b, 0x3e, 0xdf, 0xec, 0xeb, 0x27,
0xba, 0x0d, 0xca, 0x74, 0xe5, 0x92, 0x8f, 0xa0, 0x9d, 0x26, 0x41, 0x90, 0x03, 0x04, 0x79, 0x98,
0x62, 0x41, 0xac, 0x36, 0xe8, 0xf4, 0xf7, 0xcc, 0x38, 0xc4, 0x5e, 0xfe, 0x49, 0xce, 0x01, 0x56,
0xd9, 0x6e, 0x74, 0xd1, 0x49, 0x72, 0x26, 0x14, 0xe8, 0xec, 0x22, 0xe9, 0xb1, 0x53, 0xa3, 0x48,
0x1f, 0xaa, 0x9c, 0xc8, 0xe8, 0xe1, 0xe8, 0xa6, 0x1a, 0xcd, 0x59, 0x6c, 0xec, 0xe1, 0x6b, 0xa6,
0x33, 0xe7, 0x8d, 0x4f, 0x87, 0xe3, 0xb7, 0x5e, 0x68, 0xf4, 0xfb, 0xda, 0x49, 0xcd, 0x06, 0x61,
0x7a, 0xf9, 0xd6, 0x0b, 0x45, 0xf8, 0xce, 0x6e, 0x68, 0xc4, 0x86, 0x34, 0x8a, 0x82, 0xc8, 0x78,
0x82, 0x4b, 0x6a, 0x4a, 0xe3, 0x0b, 0x6e, 0xb3, 0x7e, 0x04, 0x9d, 0xe7, 0xe8, 0x80, 0xd2, 0x19,
0x9b, 0xfe, 0x6e, 0x4e, 0xe3, 0x95, 0xdc, 0xe8, 0x42, 0x6e, 0xac, 0x01, 0x1c, 0xd9, 0x14, 0xd3,
0xde, 0xa6, 0xa3, 0xe5, 0xc8, 0xbf, 0x73, 0xc2, 0x0b, 0x20, 0x2f, 0x29, 0x2b, 0x1b, 0xa5, 0x54,
0xac, 0x07, 0x8d, 0x85, 0xc7, 0x26, 0x43, 0x67, 0xce, 0x26, 0x41, 0x84, 0x5a, 0x56, 0xb3, 0x81,
0x9b, 0x2e, 0xd0, 0x62, 0x0d, 0xe1, 0xe0, 0xd5, 0x0a, 0x26, 0xbe, 0x94, 0x67, 0xa2, 0xf0, 0x7a,
0xd0, 0x50, 0xd2, 0x3e, 0x4c, 0xe8, 0x41, 0x99, 0xae, 0xdc, 0xec, 0xd1, 0x56, 0xb2, 0x47, 0x6b,
0xbd, 0xab, 0xc0, 0xe3, 0x5f, 0x7a, 0x71, 0x6e, 0xa5, 0x04, 0xaa, 0x5c, 0x87, 0xe4, 0x5a, 0xf1,
0x3b, 0xc9, 0xcf, 0x4a, 0x2a, 0x3f, 0x5b, 0x50, 0x59, 0xb8, 0x52, 0x6b, 0x2b, 0x0b, 0x94, 0xca,
0x6b, 0x8f, 0xfa, 0xae, 0x51, 0xed, 0xeb, 0x5c, 0x2a, 0xb1, 0xc1, 0xad, 0x41, 0xe4, 0xd2, 0x08,
0x75, 0xb5, 0x6e, 0x8b, 0x46, 0x76, 0x71, 0x9b, 0xb9, 0xb8, 0x4b, 0x09, 0xf2, 0x16, 0x76, 0x2a,
0x41, 0x5e, 0xa9, 0x42, 0xad, 0xaf, 0xa7, 0x54, 0xe1, 0x09, 0x34, 0xbd, 0x78, 0x98, 0xe4, 0x87,
0x51, 0xef, 0xeb, 0x27, 0x35, 0xbb, 0xe1, 0xc5, 0xb6, 0x32, 0xf1, 0xa5, 0xf8, 0xde, 0xd4, 0x63,
0xa8, 0xb6, 0xba, 0x2d, 0x1a, 0x2a, 0x6c, 0x1b, 0xab, 0xb0, 0x3d, 0x5a, 0x13, 0x98, 0x26, 0x7a,
0x93, 0x92, 0x8f, 0x7d, 0xa8, 0x5d, 0x53, 0x3a, 0x64, 0xcb, 0x90, 0xa2, 0xc2, 0xd6, 0xed, 0xad,
0x6b, 0x4a, 0xbf, 0x58, 0x86, 0xd4, 0xfa, 0x12, 0x1e, 0xad, 0xef, 0x68, 0xe8, 0x2f, 0xf1, 0xbe,
0x0a, 0x98, 0xe3, 0xcb, 0x0d, 0x15, 0x0d, 0xf2, 0x63, 0xa8, 0xa9, 0xc3, 0xc2, 0xb3, 0x69, 0x9c,
0xb7, 0x55, 0xac, 0x27, 0xd3, 0x93, 0x11, 0x16, 0x05, 0x72, 0x89, 0x0b, 0x50, 0x7d, 0x57, 0x8c,
0x4e, 0x57, 0x37, 0xa1, 0x96, 0xbe, 0x09, 0x9f, 0xc2, 0xf6, 0x2a, 0x9f, 0xc4, 0xd1, 0x73, 0xde,
0xe6, 0xca, 0x28, 0xee, 0x35, 0x21, 0xc3, 0x7a, 0x4a, 0x86, 0xad, 0x3f, 0x6b, 0xd0, 0x59, 0xe7,
0x51, 0x41, 0x71, 0x08, 0x75, 0x9e, 0x02, 0x0b, 0x7e, 0x49, 0x20, 0x5d, 0xcd, 0x5e, 0x19, 0xee,
0x8c, 0x35, 0xf2, 0xb3, 0x94, 0xb7, 0x3a, 0x7a, 0x6b, 0x2a, 0x6f, 0xf3, 0x7e, 0xa5, 0xfc, 0xbe,
0x58, 0x4b, 0x82, 0xe4, 0x28, 0x4b, 0x52, 0x8f, 0x87, 0x29, 0x1e, 0x4b, 0x05, 0x9d, 0xc2, 0x6f,
0xeb, 0x33, 0x30, 0xd3, 0x67, 0xf2, 0x8b, 0x20, 0xfa, 0x2c, 0x98, 0x52, 0x85, 0x90, 0xc4, 0x84,
0x96, 0x8e, 0x89, 0x24, 0x94, 0x2b, 0xa9, 0x50, 0xb6, 0xfe, 0xaa, 0xc1, 0x5e, 0x01, 0x14, 0x1e,
0x45, 0x66, 0x07, 0x04, 0x5a, 0x7a, 0x07, 0x8e, 0xa1, 0x95, 0x0c, 0x10, 0x15, 0x85, 0x28, 0x5f,
0xb6, 0x95, 0xf5, 0x12, 0x2b, 0x0b, 0xae, 0x5d, 0x6a, 0x18, 0x8a, 0xad, 0x2e, 0xb5, 0x4b, 0x1a,
0x7f, 0xc5, 0x95, 0x36, 0x1d, 0x3b, 0xd5, 0x3b, 0x63, 0xe7, 0x2b, 0x38, 0x28, 0xdc, 0x80, 0x38,
0x0c, 0x66, 0x31, 0x25, 0x9f, 0xa4, 0xc0, 0x34, 0x04, 0xeb, 0x29, 0xb0, 0x12, 0x67, 0x53, 0xd8,
0x7f, 0xd7, 0xa0, 0xf3, 0x8a, 0x3a, 0xd1, 0x68, 0x72, 0x9b, 0x8a, 0x6c, 0x14, 0xa8, 0xc8, 0x46,
0x89, 0x8a, 0x64, 0x36, 0xb2, 0x9a, 0x0b, 0x25, 0x0e, 0x12, 0x44, 0x4c, 0xea, 0x09, 0x7e, 0xab,
0x1c, 0xde, 0x5a, 0xe5, 0x70, 0x4a, 0x3f, 0x6a, 0x6b, 0x05, 0xdd, 0x7a, 0x72, 0xd7, 0x33, 0xc9,
0x6d, 0xfd, 0x4f, 0x83, 0x6d, 0xe5, 0xca, 0x2b, 0xac, 0x68, 0x0a, 0x84, 0x3b, 0x2d, 0xbc, 0x22,
0xb9, 0xd2, 0xc2, 0x9b, 0xa2, 0xd6, 0xb3, 0xb5, 0xa4, 0xa8, 0x98, 0xaa, 0xe9, 0x8a, 0x69, 0xbd,
0x9c, 0xd9, 0xf8, 0xbe, 0xe5, 0xcc, 0xe6, 0xb7, 0x2e, 0x67, 0xac, 0x00, 0x1e, 0x67, 0xcf, 0xb0,
0x5c, 0xb7, 0xb8, 0x13, 0x21, 0x17, 0x58, 0x59, 0x7d, 0x63, 0x63, 0x2d, 0x22, 0xf5, 0x3b, 0x23,
0xf2, 0x23, 0xe8, 0x3c, 0x97, 0x65, 0xeb, 0x3a, 0x65, 0x1b, 0xf4, 0x79, 0xe4, 0x4b, 0x39, 0xe3,
0x9f, 0xe7, 0xff, 0x6c, 0x40, 0x43, 0x8d, 0xb9, 0xf8, 0xfc, 0x8a, 0xfc, 0x71, 0xfd, 0xce, 0x92,
0x51, 0x49, 0xac, 0x5b, 0x42, 0x56, 0x46, 0xa4, 0xf9, 0xf4, 0xd6, 0x31, 0x22, 0x1b, 0xac, 0xa3,
0x3f, 0xfd, 0xe3, 0xbf, 0x7f, 0xa9, 0xec, 0x91, 0xce, 0x20, 0xf3, 0x7e, 0x1a, 0x4c, 0x38, 0xcf,
0x5b, 0xd8, 0x29, 0xd2, 0x23, 0x92, 0x60, 0xdf, 0xa2, 0x56, 0xe6, 0x6e, 0xee, 0x50, 0x5e, 0xf0,
0xf7, 0x91, 0x75, 0x8c, 0x9c, 0x3d, 0xd3, 0xcc, 0x71, 0x26, 0xd7, 0xd9, 0xc7, 0xda, 0x29, 0x71,
0xa1, 0xb5, 0xae, 0x95, 0xe4, 0xa8, 0x58, 0x43, 0xef, 0xe2, 0x3b, 0x40, 0xbe, 0x8e, 0xd5, 0xce,
0xf2, 0x71, 0x96, 0x2f, 0xa1, 0xf5, 0x1a, 0x23, 0x23, 0x61, 0xc9, 0x9d, 0xe4, 0x5d, 0xc0, 0x66,
0x21, 0xb0, 0x03, 0xad, 0xf5, 0x82, 0x6b, 0xb5, 0xfc, 0xc2, 0x42, 0xac, 0x94, 0xc5, 0x40, 0x16,
0x72, 0x9a, 0x63, 0x21, 0xaf, 0xa1, 0x91, 0xaa, 0xbc, 0x48, 0x72, 0xc5, 0xe4, 0xcb, 0x31, 0x33,
0xe7, 0x94, 0x82, 0x25, 0x79, 0x58, 0x17, 0x1e, 0xbf, 0xa4, 0xcc, 0xa6, 0x3e, 0xcf, 0x97, 0xa4,
0x20, 0x2b, 0xd8, 0x97, 0xfd, 0xa2, 0x08, 0xc3, 0xc8, 0xb6, 0xfa, 0x88, 0x6e, 0x12, 0xa3, 0xe0,
0x8c, 0x11, 0x97, 0x5c, 0x43, 0x3b, 0x9b, 0x14, 0x05, 0x14, 0xab, 0x3d, 0x2b, 0x4a, 0x20, 0xeb,
0x09, 0xd2, 0x1c, 0x90, 0xfd, 0x1c, 0x8d, 0x7a, 0x27, 0x12, 0x0a, 0xcd, 0xf4, 0xf2, 0xc8, 0x41,
0xf1, 0xa2, 0xc5, 0x36, 0xdd, 0xe2, 0x51, 0x79, 0xa6, 0xf8, 0x5e, 0xcc, 0xc8, 0x14, 0x5a, 0xeb,
0xa2, 0xb2, 0x3a, 0xee, 0xc2, 0x0b, 0xc3, 0x3c, 0x28, 0xeb, 0xe6, 0x64, 0x3d, 0x24, 0xdb, 0x27,
0x7b, 0x39, 0xb2, 0x18, 0x47, 0x13, 0x17, 0xda, 0xa9, 0xd4, 0x13, 0xca, 0xdd, 0xc9, 0xee, 0x1e,
0x9a, 0x4b, 0xe3, 0x4a, 0xee, 0x9d, 0xb5, 0x9b, 0xe7, 0xe0, 0xf3, 0x78, 0x0c, 0xff, 0x1a, 0xda,
0x2f, 0xef, 0xc9, 0x52, 0x6c, 0xb6, 0xba, 0x48, 0x62, 0x90, 0x12, 0x12, 0xf2, 0x9b, 0x9c, 0xc0,
0xe0, 0x9b, 0x85, 0x94, 0x2c, 0xba, 0xd4, 0x19, 0x0b, 0x79, 0x0e, 0x4b, 0x34, 0x45, 0x60, 0x2e,
0xd7, 0xb8, 0x92, 0x17, 0x46, 0xa1, 0x98, 0x65, 0xdf, 0x1f, 0xa5, 0xc4, 0x3f, 0x40, 0xe2, 0xae,
0x99, 0x8f, 0x40, 0x75, 0x87, 0x7f, 0xac, 0x9d, 0x9e, 0xff, 0x5b, 0x07, 0x90, 0xcf, 0x29, 0xae,
0xea, 0x81, 0x50, 0xf5, 0xcc, 0x03, 0xeb, 0x3b, 0x87, 0xe6, 0x6d, 0xc9, 0x86, 0x0c, 0xe4, 0x0f,
0xb0, 0x5b, 0xfc, 0xa8, 0x23, 0xc7, 0x0a, 0xf6, 0xd6, 0x47, 0x5f, 0xa9, 0xfb, 0x4f, 0x91, 0xfa,
0xc8, 0x2c, 0xa5, 0xe6, 0x61, 0x14, 0xaa, 0xb7, 0x67, 0x96, 0xfc, 0x3b, 0x2a, 0xa2, 0xf4, 0xf7,
0xb4, 0xdc, 0x5f, 0x1f, 0x76, 0x2e, 0x7d, 0xea, 0xe4, 0xbc, 0xfd, 0xb6, 0x61, 0x25, 0x4f, 0xf7,
0xf4, 0xb0, 0x8c, 0x69, 0xe0, 0xf8, 0xfe, 0xa7, 0x3f, 0xfd, 0xdb, 0xfb, 0xae, 0xf6, 0xee, 0x7d,
0x57, 0xfb, 0xe6, 0x7d, 0x57, 0xfb, 0xfa, 0x43, 0xf7, 0xc1, 0xbb, 0x0f, 0xdd, 0x07, 0xff, 0xfa,
0xd0, 0x7d, 0x00, 0xf2, 0xf7, 0xe3, 0xe7, 0xda, 0x57, 0x8f, 0xa6, 0x41, 0x44, 0xdd, 0x60, 0x24,
0x81, 0x3e, 0xb9, 0x79, 0xf6, 0x66, 0x13, 0xc9, 0x7e, 0xf2, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff,
0xb8, 0xd7, 0x8d, 0xf1, 0xbb, 0x14, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3096,6 +3104,15 @@ func (m *ListDocumentForHomeRequest) MarshalToSizedBuffer(dAtA []byte) (int, err
_ = i
var l int
_ = l
if len(m.Field) > 0 {
for iNdEx := len(m.Field) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.Field[iNdEx])
copy(dAtA[i:], m.Field[iNdEx])
i = encodeVarintDocument(dAtA, i, uint64(len(m.Field[iNdEx])))
i--
dAtA[i] = 0x12
}
}
if m.Limit != 0 {
i = encodeVarintDocument(dAtA, i, uint64(m.Limit))
i--
@ -3794,6 +3811,12 @@ func (m *ListDocumentForHomeRequest) Size() (n int) {
if m.Limit != 0 {
n += 1 + sovDocument(uint64(m.Limit))
}
if len(m.Field) > 0 {
for _, s := range m.Field {
l = len(s)
n += 1 + l + sovDocument(uint64(l))
}
}
return n
}
@ -6641,6 +6664,38 @@ func (m *ListDocumentForHomeRequest) Unmarshal(dAtA []byte) error {
break
}
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Field", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowDocument
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthDocument
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthDocument
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Field = append(m.Field, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipDocument(dAtA[iNdEx:])

@ -116,7 +116,10 @@ message SetDocumentRecommendRequest {
}
//
message ListDocumentForHomeRequest { int64 limit = 1; }
message ListDocumentForHomeRequest {
int64 limit = 1;
repeated string field = 2;
}
//
message ListDocumentForHomeItem {

@ -267,6 +267,7 @@ func (s *ConfigAPIService) GetEnvs(ctx context.Context, req *emptypb.Empty) (res
err := util.CheckCommandExists(envs[i].Cmd)
envs[i].IsInstalled = err == nil
envs[i].CheckedAt = &now
envs[i].Version = util.GetCommandVersion(envs[i].Cmd)
if err != nil {
envs[i].Error = err.Error()
}

@ -555,6 +555,11 @@ func (s *DocumentAPIService) ListDocumentForHome(ctx context.Context, req *pb.Li
limit = int(req.Limit)
}
defaultFields := []string{"id", "title", "ext"}
if len(req.Field) > 0 {
defaultFields = append(defaultFields, req.Field...)
}
resp := &pb.ListDocumentForHomeResponse{}
for _, category := range categories {
docs, _, _ := s.dbModel.GetDocumentList(&model.OptionGetDocumentList{
@ -565,7 +570,7 @@ func (s *DocumentAPIService) ListDocumentForHome(ctx context.Context, req *pb.Li
Page: 1,
Size: limit,
Sort: []string{"id desc"},
SelectFields: []string{"id", "title", "ext"},
SelectFields: defaultFields,
})
var pbDocs []*pb.Document

@ -528,6 +528,10 @@ func (m *DBModel) GetConfigOfSecurity(name ...string) (config ConfigSecurity) {
bytes, _ := json.Marshal(data)
json.Unmarshal(bytes, &config)
if config.MaxDocumentSize <= 0 {
config.MaxDocumentSize = 50 // 默认50M
}
return
}

@ -145,10 +145,6 @@ func NewDBModel(cfg *conf.Database, lg *zap.Logger) (m *DBModel, err error) {
}
m.tableFieldsMap[table] = filedsMap
}
go m.loopCovertDocument()
go m.cronUpdateSitemap()
go m.cronMarkAttachmentDeleted()
go m.cronCleanInvalidAttachment()
return
}
@ -194,6 +190,13 @@ func (m *DBModel) SyncDB() (err error) {
return
}
func (m *DBModel) RunTasks() {
go m.loopCovertDocument()
go m.cronUpdateSitemap()
go m.cronMarkAttachmentDeleted()
go m.cronCleanInvalidAttachment()
}
func (m *DBModel) GetDB() *gorm.DB {
return m.db
}

@ -54,7 +54,7 @@ func (m *DBModel) UpdateSitemap() (err error) {
for _, doc := range documents {
su = append(su, sitemap.SitemapUrl{
Loc: fmt.Sprintf("%s/document/%d", domain, doc.Id),
Lastmod: doc.UpdatedAt.Format("2006-01-02 15:04:05"),
Lastmod: doc.UpdatedAt.Format(time.RFC3339),
ChangeFreq: sitemap.DAILY,
Priority: 1.0,
})
@ -65,7 +65,7 @@ func (m *DBModel) UpdateSitemap() (err error) {
}
sitemapIndexes = append(sitemapIndexes, sitemap.SitemapIndex{
Loc: domain + "/" + file,
Lastmod: time.Now().Format("2006-01-02 15:04:05"),
Lastmod: time.Now().Format(time.RFC3339),
})
page++
}
@ -84,7 +84,7 @@ func (m *DBModel) UpdateSitemap() (err error) {
for _, article := range articles {
su = append(su, sitemap.SitemapUrl{
Loc: fmt.Sprintf("%s/article/%s", domain, article.Identifier),
Lastmod: article.UpdatedAt.Format("2006-01-02 15:04:05"),
Lastmod: article.UpdatedAt.Format(time.RFC3339),
ChangeFreq: sitemap.DAILY,
Priority: 1.0,
})
@ -95,7 +95,7 @@ func (m *DBModel) UpdateSitemap() (err error) {
}
sitemapIndexes = append(sitemapIndexes, sitemap.SitemapIndex{
Loc: domain + "/" + file,
Lastmod: time.Now().Format("2006-01-02 15:04:05"),
Lastmod: time.Now().Format(time.RFC3339),
})
page++
}
@ -141,11 +141,11 @@ func (m *DBModel) InitSEO() {
defaultTitle = "管理后台 - "
}
m.logger.Debug("initSEO", zap.String("file", path), zap.String("title", defaultTitle))
bs, _ := os.ReadFile(path)
if doc, errDoc := goquery.NewDocumentFromReader(bytes.NewReader(bs)); errDoc != nil {
m.logger.Error("initSEO", zap.Error(errDoc), zap.String("file", path))
} else {
m.logger.Debug("initSEO", zap.String("file", path), zap.String("title", defaultTitle+cfg.Sitename))
doc.Find("title").SetText(defaultTitle + cfg.Sitename)
doc.Find("meta[name='keywords']").SetAttr("content", cfg.Keywords)
doc.Find("meta[name='description']").SetAttr("content", cfg.Description)
@ -166,15 +166,15 @@ func (m *DBModel) cronUpdateSitemap() {
for {
hour, _ := strconv.Atoi(os.Getenv("MOREDOC_UPDATE_SITEMAP_HOUR")) // 默认为每天凌晨0点更新站点地图
hour = hour % 24
m.logger.Info("cronUpdateSitemap", zap.Int("hour", hour), zap.String("lastUpdated", lastUpdated))
m.logger.Debug("cronUpdateSitemap", zap.Int("hour", hour), zap.String("lastUpdated", lastUpdated))
now := time.Now()
if now.Hour() == hour && now.Format(layout) != lastUpdated {
m.logger.Info("cronUpdateSitemapstart...")
m.logger.Debug("cronUpdateSitemapstart...")
err := m.UpdateSitemap()
if err != nil {
m.logger.Info("cronUpdateSitemapend...", zap.Error(err))
m.logger.Debug("cronUpdateSitemapend...", zap.Error(err))
}
m.logger.Info("cronUpdateSitemapend...")
m.logger.Debug("cronUpdateSitemapend...")
lastUpdated = now.Format(layout)
}
time.Sleep(1 * time.Minute)
@ -190,7 +190,7 @@ func (m *DBModel) cronCleanInvalidAttachment() {
sleepDuration := 1 * time.Minute
for {
time.Sleep(1 * time.Second)
m.logger.Info("cronCleanInvalidAttachmentstart...")
m.logger.Debug("cronCleanInvalidAttachmentstart...")
var (
deletedAttachemnts, attachemnts []Attachment
hashes []string
@ -206,7 +206,7 @@ func (m *DBModel) cronCleanInvalidAttachment() {
// 1. 找出已被标记删除的附件
m.db.Unscoped().Where("deleted_at IS NOT NULL").Where("deleted_at < ?", time.Now().Add(-time.Duration(retentionMinute)*time.Minute)).Limit(100).Find(&deletedAttachemnts)
if len(deletedAttachemnts) == 0 {
m.logger.Info("cronCleanInvalidAttachmentend...")
m.logger.Debug("cronCleanInvalidAttachmentend...")
time.Sleep(sleepDuration)
continue
}
@ -226,10 +226,10 @@ func (m *DBModel) cronCleanInvalidAttachment() {
err := m.db.Unscoped().Where("id IN (?)", ids).Delete(&Attachment{}).Error
if err != nil {
m.logger.Error("cronCleanInvalidAttachment", zap.Error(err))
m.logger.Info("cronCleanInvalidAttachmentend...")
m.logger.Debug("cronCleanInvalidAttachmentend...")
continue
}
m.logger.Info("cronCleanInvalidAttachment", zap.Any("ids", ids), zap.Any("Attachemnts", deletedAttachemnts))
m.logger.Debug("cronCleanInvalidAttachment", zap.Any("ids", ids), zap.Any("Attachemnts", deletedAttachemnts))
for _, attachemnt := range deletedAttachemnts {
if _, ok := hashMap[attachemnt.Hash]; !ok { // 删除附件文件
m.logger.Debug("cronCleanInvalidAttachment", zap.String("path", attachemnt.Path), zap.Any("attachemnt", attachemnt))
@ -247,7 +247,7 @@ func (m *DBModel) cronCleanInvalidAttachment() {
}
}
}
m.logger.Info("cronCleanInvalidAttachmentend...")
m.logger.Debug("cronCleanInvalidAttachmentend...")
}
}
@ -294,12 +294,12 @@ func (m *DBModel) cronMarkAttachmentDeleted() {
}
// 非配置类和横幅类附件如果type_id为0则表示未被使用超过24小时则标记删除
m.logger.Info("cronMarkAttachmentDeleted start...")
m.logger.Debug("cronMarkAttachmentDeleted start...")
err := m.db.Where("`type` not in (?) and type_id = ?", []int{AttachmentTypeConfig, AttachmentTypeBanner}, 0).Where("created_at < ?", time.Now().Add(-time.Duration(24)*time.Hour)).Delete(&Attachment{}).Error
if err != nil {
m.logger.Error("cronMarkAttachmentDeleted", zap.Error(err))
}
m.logger.Info("cronMarkAttachmentDeleted end...")
m.logger.Debug("cronMarkAttachmentDeleted end...")
}
}
@ -314,11 +314,12 @@ func (m *DBModel) loopCovertDocument() {
m.db.Model(&Document{}).Where("status = ?", DocumentStatusConverting).Update("status", DocumentStatusPending)
for {
now := time.Now()
m.logger.Info("loopCovertDocumentstart...")
m.logger.Debug("loopCovertDocumentstart...")
err := m.ConvertDocument()
if err != nil && err != gorm.ErrRecordNotFound {
m.logger.Info("loopCovertDocumentend...", zap.Error(err), zap.String("cost", time.Since(now).String()))
m.logger.Error("loopCovertDocument", zap.Error(err))
}
m.logger.Debug("loopCovertDocumentend...", zap.String("cost", time.Since(now).String()))
if err == gorm.ErrRecordNotFound {
time.Sleep(sleep)
}

@ -58,6 +58,10 @@ func Run(cfg *conf.Config, logger *zap.Logger) {
return
}
// 每次启动时都对dist中的title进行一次处理以替换掉关键字 moredoc
go dbModel.InitSEO()
dbModel.RunTasks()
if cfg.Level != "debug" {
gin.SetMode(gin.ReleaseMode)
}

@ -189,6 +189,15 @@ func CheckCommandExists(command string) error {
return err
}
func GetCommandVersion(command string) string {
cmd := exec.Command(command, "--version")
output, err := cmd.CombinedOutput()
if err != nil {
return ""
}
return strings.TrimSpace(string(output))
}
// 获取系统发行版本信息
func GetOSRelease() (osVersion string, err error) {
var (

@ -5,6 +5,7 @@
? `/view/cover/${document.attachment.hash}`
: ''
"
lazy
:alt="document.title"
:style="{ height: height }"
>

@ -89,6 +89,7 @@ export default {
this.$message.success('')
this.disabled = true
} else {
this.loadCaptcha()
this.$message.error(res.data.message || '')
}
this.loading = false

@ -117,6 +117,7 @@ export default {
this.$router.push('/login')
this.disabled = true
} else {
this.loadCaptcha()
this.$message.error(res.data.message || '')
}
this.loading = false

@ -106,6 +106,7 @@ export default {
}
this.loading = false
} else {
this.loadCaptcha()
this.loading = false
}
},

@ -206,6 +206,9 @@ export default {
} else {
this.$router.replace({ name: 'index' })
}
}else{
this.loadCaptcha()
this.$message.error(res.data.message || '')
}
this.loading = false
}

@ -34,7 +34,7 @@ export default {
},
}
</script>
<style lang="scss" scoped>
<style lang="scss">
.com-user-avatar {
display: inline-block;
position: relative;
@ -47,9 +47,10 @@ export default {
border: 2px solid #409eff;
}
img {
height: 100%;
width: 100%;
border-radius: 50%;
// height: 100%;
// width: 100%;
// border-radius: 50%;
margin: 0 auto;
}
}
}

@ -84,6 +84,7 @@
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="profile"> </el-dropdown-item>
<!-- <el-dropdown-item command="copyjwt"> JWT </el-dropdown-item> -->
<el-dropdown-item command="password"> </el-dropdown-item>
<el-dropdown-item command="logout">退</el-dropdown-item>
</el-dropdown-menu>
@ -264,6 +265,18 @@ export default {
case 'password':
this.formPasswordVisible = true
break
case 'copyjwt':
// 将用户的token复制到剪贴板
const input = document.createElement('input')
input.setAttribute('readonly', 'readonly')
input.setAttribute('value', this.token)
document.body.appendChild(input)
input.select()
input.setSelectionRange(0, 9999)
document.execCommand('copy')
document.body.removeChild(input)
this.$message.success(' JSON Web Token ')
break
case 'logout':
this.logout()
this.$router.replace({ path: '/' })

@ -504,7 +504,7 @@ export default {
field: ['id', 'title', 'link'],
})
if (res.status === 200) {
this.friendlinks = res.data.friendlink
this.friendlinks = res.data.friendlink || []
}
},
async signToday() {

@ -30,7 +30,9 @@
"vue-template-compiler": "^2.6.14",
"vue-upload-component": "^2.8.23",
"vuex-persist": "^3.1.3",
"webpack": "^4.46.0"
"vxe-table": "^3.6.13",
"webpack": "^4.46.0",
"xe-utils": "^3.5.12"
},
"devDependencies": {
"@babel/eslint-parser": "^7.16.3",
@ -20123,6 +20125,15 @@
"node": ">=0.10.0"
}
},
"node_modules/vxe-table": {
"version": "3.6.13",
"resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-3.6.13.tgz",
"integrity": "sha512-Lm4J1dH4CAHnHWO/JKPo77SCaggPTdk7RFhCNvkMWRsReBvWwTR4zBUnEwmnomhNorRVdBYETjOnsbfor7us9Q==",
"peerDependencies": {
"vue": "^2.6.0",
"xe-utils": "^3.5.0"
}
},
"node_modules/watchpack": {
"version": "1.7.5",
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
@ -21204,6 +21215,11 @@
}
}
},
"node_modules/xe-utils": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.12.tgz",
"integrity": "sha512-g+KntGC41vYJ+GzDngy28LIGAu3kSfhQxiprYxv1P6jP3DRVLNnTruBFD4WIVmMF2AUm1o23IMyAcQ10m2XSyQ=="
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
@ -36543,6 +36559,12 @@
}
}
},
"vxe-table": {
"version": "3.6.13",
"resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-3.6.13.tgz",
"integrity": "sha512-Lm4J1dH4CAHnHWO/JKPo77SCaggPTdk7RFhCNvkMWRsReBvWwTR4zBUnEwmnomhNorRVdBYETjOnsbfor7us9Q==",
"requires": {}
},
"watchpack": {
"version": "1.7.5",
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
@ -37391,6 +37413,11 @@
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"requires": {}
},
"xe-utils": {
"version": "3.5.12",
"resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.12.tgz",
"integrity": "sha512-g+KntGC41vYJ+GzDngy28LIGAu3kSfhQxiprYxv1P6jP3DRVLNnTruBFD4WIVmMF2AUm1o23IMyAcQ10m2XSyQ=="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",

@ -35,7 +35,9 @@
"vue-template-compiler": "^2.6.14",
"vue-upload-component": "^2.8.23",
"vuex-persist": "^3.1.3",
"webpack": "^4.46.0"
"vxe-table": "^3.6.13",
"webpack": "^4.46.0",
"xe-utils": "^3.5.12"
},
"devDependencies": {
"@babel/eslint-parser": "^7.16.3",
@ -55,4 +57,4 @@
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-standard": "^21.0.0"
}
}
}

@ -149,8 +149,8 @@
style="width: 100%"
empty-text="您暂无权限查看环境依赖情况"
>
<el-table-column prop="name" label="名称" width="100"> </el-table-column
><el-table-column prop="is_required" label="是否必须" width="100">
<el-table-column prop="name" label="名称" width="100"> </el-table-column>
<el-table-column prop="is_required" label="是否必须" width="100">
<template slot-scope="scope">
<el-tag
v-if="scope.row.is_required"
@ -178,6 +178,11 @@
>
</template>
</el-table-column>
<el-table-column prop="version" label="版本" min-width="100">
<template slot-scope="scope">
{{ scope.row.version || '-' }}
</template>
</el-table-column>
<el-table-column prop="description" min-width="200" label="用途">
</el-table-column>
<el-table-column prop="error" label="错误" min-width="100">

@ -1,9 +1,9 @@
<template>
<div class="page page-index">
<div class="searchbox">
<el-carousel :interval="3000" arrow="always" :height="carouselHeight">
<el-carousel :interval="3000" arrow="always" :height="isMobile ? '250px' : '360px'" @change="changeCarousel">
<a
v-for="banner in banners"
v-for="(banner, index) in banners"
:key="'banner-' + banner.id"
:href="banner.url ? banner.url : 'javascript:;'"
:target="banner.url ? '_blank' : ''"
@ -11,7 +11,7 @@
>
<el-carousel-item
:style="
'background: url(' + banner.path + ') center center no-repeat;'
'background: url(' + (carouselIndexes.indexOf(index)>-1 ? banner.path: '') + ') center center no-repeat;'
"
>
</el-carousel-item>
@ -208,6 +208,7 @@
? `/view/cover/${item.attachment.hash}`
: ''
"
lazy
:alt="item.title"
>
<div slot="error" class="image-slot">
@ -270,7 +271,7 @@
<div>
<div class="card-body-left hidden-xs-only">
<nuxt-link :to="`/category/${item.category_id}`">
<el-image class="category-cover" :src="item.category_cover">
<el-image lazy class="category-cover" :src="item.category_cover">
<div slot="error" class="image-slot">
<img
src="/static/images/default-category-cover.png"
@ -326,7 +327,7 @@ export default {
document_count: '-',
user_count: '-',
},
carouselHeight: '360px',
carouselIndexes: [0], // 跑马灯index用于跑马灯图片的懒加载
}
},
head() {
@ -352,7 +353,6 @@ export default {
...mapGetters('setting', ['settings']),
},
async created() {
this.carouselHeight = this.isMobile ? '250px' : '360px'
await Promise.all([
this.getRecommendDocuments(),
this.listBanner(),
@ -431,6 +431,13 @@ export default {
// 跳转到登录页面,先串通页面
this.$router.push('/login')
},
changeCarousel(index){
let carouselIndexes = this.carouselIndexes
if (carouselIndexes.indexOf(index) === -1) {
carouselIndexes.push(index)
}
this.carouselIndexes = carouselIndexes
}
},
}
</script>
@ -649,6 +656,11 @@ export default {
.card-body-left {
width: 180px;
padding-right: 20px;
.category-cover{
height: 145px;
width: 180px;
overflow: hidden;
}
.image-slot {
height: 145px;
overflow: hidden;

@ -80,7 +80,7 @@ export default {
icon: 'el-icon-magic-stick',
},
{
label: '',
label: '',
value: '/me/document',
icon: 'el-icon-document',
},

@ -70,62 +70,57 @@
<em></em>
</div>
</el-upload>
<el-table
<vxe-table
v-if="fileList.length > 0"
:data="fileList"
style="width: 100%"
max-height="480"
stripe
border="inner"
:column-config="{resizable: true}"
>
<el-table-column prop="title" label="#" width="50">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="title" label="文件" min-width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.title" :disabled="loading">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="title" title="文件" min-width="180">
<template #default="{row}">
<el-input v-model="row.title" :disabled="loading">
<template slot="append">{{
scope.row.ext
row.ext
}}</template></el-input
>
<div v-if="scope.row.error">
<div v-if="row.error">
<el-progress
:key="scope.row.name"
:percentage="scope.row.percentage"
:key="row.name"
:percentage="row.percentage"
status="exception"
></el-progress>
<small class="el-link el-link--danger error-tips">{{
scope.row.error
row.error
}}</small>
</div>
<el-progress
v-else-if="scope.row.percentage > 0"
:percentage="scope.row.percentage"
v-else-if="row.percentage > 0"
:percentage="row.percentage"
></el-progress>
</template>
</el-table-column>
<el-table-column prop="size" label="大小" width="100">
<template slot-scope="scope">
{{ formatBytes(scope.row.size) }}
</vxe-column>
<vxe-column field="size" title="大小" width="100" sortable>
<template #default="{row}">
<span>{{ formatBytes(row.size) }}</span>
</template>
</el-table-column>
<el-table-column
prop="price"
:label="`售价(${settings.system.credit_name || '魔豆'})`"
width="130"
>
<template slot-scope="scope">
</vxe-column>
<vxe-column field="price" :title="`售价(${settings.system.credit_name || '魔豆'})`" :width="130" sortable>
<template #default="{row}">
<el-input-number
v-model="scope.row.price"
v-model="row.price"
:min="0"
:step="1"
:disabled="loading"
controls-position="right"
></el-input-number>
</template>
</el-table-column>
<el-table-column label="操作" width="100" fixed="right">
<template slot="header">
</vxe-column>
<vxe-column width="100" fixed="right">
<template #header>
(<el-button
type="text"
size="mini"
@ -134,19 +129,19 @@
></el-button
>)
</template>
<template slot-scope="scope">
<template #default="{rowIndex}">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
:disabled="loading"
@click="handleRemove(scope.$index)"
@click="handleRemove(rowIndex)"
>
</el-button>
</template>
</el-table-column>
</el-table>
</vxe-column>
</vxe-table>
</el-form-item>
<el-form-item style="margin-bottom: 0">
<el-button
@ -538,6 +533,16 @@ export default {
</script>
<style lang="scss">
.page-upload {
.vxe-table{
.el-input-number{
width: 100%;
}
.vxe-header--column{
.vxe-cell{
white-space: normal;
}
}
}
.el-table {
.el-input-number {
width: 120px;

@ -4,6 +4,11 @@ import hotkeys from 'hotkeys-js'
import 'viewerjs/dist/viewer.css'
import VueViewer from 'v-viewer'
import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css'
Vue.use(VXETable)
// import locale from 'element-ui/lib/locale/lang/en'
// Vue.use(Element, { locale })
Vue.use(VueViewer, {

Loading…
Cancel
Save