mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-09 02:55:59 +08:00
Bootstrap Token (#781)
* Partial implementation of Bootstrap Token
Fetching the token from the db and sending it back to the client when the client asks for it ie sends the GetBootstrapTokenRequest is not implemented
Also earlier code for Bootstrap Token from commit 58c3782 "mdm: add SetBootstrapToken command." is removed
* implements rest of the bootstrap token feature - micromdm now sends bootstrap token back to the client, when client requests it
* regenerate some proto files
* use original proto generator versions
checkin.pb.go: golang/protobuf@v1.2.0
mdm.pb.go: gogo/protobuf@v1.3.2
device.pb.go: golang/protobuf@v1.0.0
* cleanup syntax
* use more idiomatic naming
* clean up BootstrapToken storage
* add GetBootstrapToken test
* remove extra newline
Co-authored-by: Jesse Peterson <jessepeterson@users.noreply.github.com>
* add doc comments
Co-authored-by: Ilkka Vanhatalo <ilkka.vanhatalo@helsinki.fi>
Co-authored-by: Jesse Peterson <jessepeterson@users.noreply.github.com>
This commit is contained in:
@@ -7,9 +7,15 @@ import (
|
||||
|
||||
"github.com/go-kit/kit/endpoint"
|
||||
"github.com/google/uuid"
|
||||
"github.com/groob/plist"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// BootstrapToken holds MDM Bootstrap Token data
|
||||
type BootstrapToken struct {
|
||||
BootstrapToken []byte
|
||||
}
|
||||
|
||||
func (svc *MDMService) Checkin(ctx context.Context, event CheckinEvent) ([]byte, error) {
|
||||
// reject user settings at the loginwindow.
|
||||
// https://github.com/micromdm/micromdm/pull/379
|
||||
@@ -33,8 +39,26 @@ func (svc *MDMService) Checkin(ctx context.Context, event CheckinEvent) ([]byte,
|
||||
}
|
||||
}
|
||||
|
||||
var resp []byte
|
||||
|
||||
if topic == GetBootstrapTokenTopic {
|
||||
udid := event.Command.UDID
|
||||
|
||||
btBytes, err := svc.dev.GetBootstrapToken(ctx, udid)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "fetching bootstrap token")
|
||||
}
|
||||
|
||||
bt := &BootstrapToken{BootstrapToken: btBytes}
|
||||
|
||||
resp, err = plist.Marshal(bt)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "marshal bootstrap token")
|
||||
}
|
||||
}
|
||||
|
||||
err = svc.pub.Publish(ctx, topic, msg)
|
||||
return nil, errors.Wrapf(err, "publish checkin on topic: %s", topic)
|
||||
return resp, errors.Wrapf(err, "publish checkin on topic: %s", topic)
|
||||
}
|
||||
|
||||
func topicFromMessage(messageType string) (string, error) {
|
||||
@@ -45,6 +69,10 @@ func topicFromMessage(messageType string) (string, error) {
|
||||
return TokenUpdateTopic, nil
|
||||
case "CheckOut":
|
||||
return CheckoutTopic, nil
|
||||
case "GetBootstrapToken":
|
||||
return GetBootstrapTokenTopic, nil
|
||||
case "SetBootstrapToken":
|
||||
return SetBootstrapTokenTopic, nil
|
||||
default:
|
||||
return "", errors.Errorf("unknown checkin message type %s", messageType)
|
||||
}
|
||||
|
||||
@@ -19,14 +19,17 @@ type CheckinEvent struct {
|
||||
|
||||
// CheckinRequest represents an MDM checkin command struct.
|
||||
type CheckinCommand struct {
|
||||
// MessageType can be either Authenticate,
|
||||
// TokenUpdate or CheckOut
|
||||
// MessageType can be either
|
||||
// Authenticate, CheckOut, TokenUpdate,
|
||||
// GetBootstrapToken, or SetBootstrapToken
|
||||
MessageType string
|
||||
Topic string
|
||||
UDID string
|
||||
EnrollmentID string
|
||||
auth
|
||||
update
|
||||
getBootstrap
|
||||
setBootstrap
|
||||
}
|
||||
|
||||
// Authenticate Message Type
|
||||
@@ -60,6 +63,17 @@ type userTokenUpdate struct {
|
||||
NotOnConsole bool `plist:",omitempty"`
|
||||
}
|
||||
|
||||
// GetBootstrapToken Message Type
|
||||
type getBootstrap struct {
|
||||
GetAwaitingConfiguration bool
|
||||
}
|
||||
|
||||
// SetBootstrapToken Message Type
|
||||
type setBootstrap struct {
|
||||
SetAwaitingConfiguration bool
|
||||
BootstrapToken []byte
|
||||
}
|
||||
|
||||
// data decodes to []byte,
|
||||
// we can then attach a string method to the type
|
||||
// Tokens are encoded as Hex Strings
|
||||
@@ -102,6 +116,15 @@ func MarshalCheckinEvent(e *CheckinEvent) ([]byte, error) {
|
||||
UserShortName: e.Command.UserShortName,
|
||||
NotOnConsole: e.Command.NotOnConsole,
|
||||
}
|
||||
case "GetBootstrapToken":
|
||||
command.GetBootstrapToken = &checkinproto.GetBootstrapToken{
|
||||
GetAwaitingConfiguration: e.Command.GetAwaitingConfiguration,
|
||||
}
|
||||
case "SetBootstrapToken":
|
||||
command.SetBootstrapToken = &checkinproto.SetBootstrapToken{
|
||||
BootstrapToken: e.Command.BootstrapToken,
|
||||
SetAwaitingConfiguration: e.Command.SetAwaitingConfiguration,
|
||||
}
|
||||
}
|
||||
return proto.Marshal(&checkinproto.Event{
|
||||
Id: e.ID,
|
||||
@@ -151,6 +174,11 @@ func UnmarshalCheckinEvent(data []byte, e *CheckinEvent) error {
|
||||
e.Command.UserLongName = pb.Command.TokenUpdate.UserLongName
|
||||
e.Command.UserShortName = pb.Command.TokenUpdate.UserShortName
|
||||
e.Command.NotOnConsole = pb.Command.TokenUpdate.NotOnConsole
|
||||
case "GetBootstrapToken":
|
||||
e.Command.GetAwaitingConfiguration = pb.Command.GetBootstrapToken.GetAwaitingConfiguration
|
||||
case "SetBootstrapToken":
|
||||
e.Command.BootstrapToken = pb.Command.SetBootstrapToken.BootstrapToken
|
||||
e.Command.SetAwaitingConfiguration = pb.Command.SetBootstrapToken.SetAwaitingConfiguration
|
||||
}
|
||||
e.Raw = pb.GetRaw()
|
||||
e.Params = pb.GetParams()
|
||||
|
||||
@@ -165,6 +165,7 @@ func (svc *service) Enroll(ctx context.Context) (profile.Mobileconfig, error) {
|
||||
}
|
||||
|
||||
const perUserConnections = "com.apple.mdm.per-user-connections"
|
||||
const bootstrapToken = "com.apple.mdm.bootstraptoken"
|
||||
|
||||
func (svc *service) MakeEnrollmentProfile() (Profile, error) {
|
||||
profile := NewProfile()
|
||||
@@ -192,7 +193,7 @@ func (svc *service) MakeEnrollmentProfile() (Profile, error) {
|
||||
ServerURL: svc.URL + "/mdm/connect",
|
||||
Topic: topic,
|
||||
SignMessage: true,
|
||||
ServerCapabilities: []string{perUserConnections},
|
||||
ServerCapabilities: []string{perUserConnections, bootstrapToken},
|
||||
}
|
||||
|
||||
payloadContent := []interface{}{}
|
||||
|
||||
@@ -3,9 +3,13 @@
|
||||
|
||||
package checkinproto
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
import fmt "fmt"
|
||||
import math "math"
|
||||
import (
|
||||
fmt "fmt"
|
||||
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
|
||||
math "math"
|
||||
)
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
var _ = proto.Marshal
|
||||
@@ -89,15 +93,17 @@ func (m *Event) GetParams() map[string]string {
|
||||
}
|
||||
|
||||
type Command struct {
|
||||
MessageType string `protobuf:"bytes,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
|
||||
Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
|
||||
Udid string `protobuf:"bytes,3,opt,name=udid,proto3" json:"udid,omitempty"`
|
||||
Authenticate *Authenticate `protobuf:"bytes,4,opt,name=authenticate,proto3" json:"authenticate,omitempty"`
|
||||
TokenUpdate *TokenUpdate `protobuf:"bytes,5,opt,name=token_update,json=tokenUpdate,proto3" json:"token_update,omitempty"`
|
||||
EnrollmentId string `protobuf:"bytes,6,opt,name=enrollment_id,json=enrollmentId,proto3" json:"enrollment_id,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
MessageType string `protobuf:"bytes,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
|
||||
Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"`
|
||||
Udid string `protobuf:"bytes,3,opt,name=udid,proto3" json:"udid,omitempty"`
|
||||
Authenticate *Authenticate `protobuf:"bytes,4,opt,name=authenticate,proto3" json:"authenticate,omitempty"`
|
||||
TokenUpdate *TokenUpdate `protobuf:"bytes,5,opt,name=token_update,json=tokenUpdate,proto3" json:"token_update,omitempty"`
|
||||
EnrollmentId string `protobuf:"bytes,6,opt,name=enrollment_id,json=enrollmentId,proto3" json:"enrollment_id,omitempty"`
|
||||
GetBootstrapToken *GetBootstrapToken `protobuf:"bytes,7,opt,name=get_bootstrap_token,json=getBootstrapToken,proto3" json:"get_bootstrap_token,omitempty"`
|
||||
SetBootstrapToken *SetBootstrapToken `protobuf:"bytes,8,opt,name=set_bootstrap_token,json=setBootstrapToken,proto3" json:"set_bootstrap_token,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *Command) Reset() { *m = Command{} }
|
||||
@@ -166,6 +172,20 @@ func (m *Command) GetEnrollmentId() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *Command) GetGetBootstrapToken() *GetBootstrapToken {
|
||||
if m != nil {
|
||||
return m.GetBootstrapToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Command) GetSetBootstrapToken() *SetBootstrapToken {
|
||||
if m != nil {
|
||||
return m.SetBootstrapToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type Authenticate struct {
|
||||
OsVersion string `protobuf:"bytes,1,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"`
|
||||
BuildVersion string `protobuf:"bytes,2,opt,name=build_version,json=buildVersion,proto3" json:"build_version,omitempty"`
|
||||
@@ -370,55 +390,148 @@ func (m *TokenUpdate) GetNotOnConsole() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type GetBootstrapToken struct {
|
||||
GetAwaitingConfiguration bool `protobuf:"varint,1,opt,name=get_awaiting_configuration,json=getAwaitingConfiguration,proto3" json:"get_awaiting_configuration,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *GetBootstrapToken) Reset() { *m = GetBootstrapToken{} }
|
||||
func (m *GetBootstrapToken) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetBootstrapToken) ProtoMessage() {}
|
||||
func (*GetBootstrapToken) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_checkin_f106eb4ffaf2f7e3, []int{4}
|
||||
}
|
||||
func (m *GetBootstrapToken) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetBootstrapToken.Unmarshal(m, b)
|
||||
}
|
||||
func (m *GetBootstrapToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_GetBootstrapToken.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *GetBootstrapToken) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_GetBootstrapToken.Merge(dst, src)
|
||||
}
|
||||
func (m *GetBootstrapToken) XXX_Size() int {
|
||||
return xxx_messageInfo_GetBootstrapToken.Size(m)
|
||||
}
|
||||
func (m *GetBootstrapToken) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_GetBootstrapToken.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_GetBootstrapToken proto.InternalMessageInfo
|
||||
|
||||
func (m *GetBootstrapToken) GetGetAwaitingConfiguration() bool {
|
||||
if m != nil {
|
||||
return m.GetAwaitingConfiguration
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type SetBootstrapToken struct {
|
||||
BootstrapToken []byte `protobuf:"bytes,1,opt,name=bootstrap_token,json=bootstrapToken,proto3" json:"bootstrap_token,omitempty"`
|
||||
SetAwaitingConfiguration bool `protobuf:"varint,2,opt,name=set_awaiting_configuration,json=setAwaitingConfiguration,proto3" json:"set_awaiting_configuration,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *SetBootstrapToken) Reset() { *m = SetBootstrapToken{} }
|
||||
func (m *SetBootstrapToken) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetBootstrapToken) ProtoMessage() {}
|
||||
func (*SetBootstrapToken) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_checkin_f106eb4ffaf2f7e3, []int{5}
|
||||
}
|
||||
func (m *SetBootstrapToken) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetBootstrapToken.Unmarshal(m, b)
|
||||
}
|
||||
func (m *SetBootstrapToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_SetBootstrapToken.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *SetBootstrapToken) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_SetBootstrapToken.Merge(dst, src)
|
||||
}
|
||||
func (m *SetBootstrapToken) XXX_Size() int {
|
||||
return xxx_messageInfo_SetBootstrapToken.Size(m)
|
||||
}
|
||||
func (m *SetBootstrapToken) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_SetBootstrapToken.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_SetBootstrapToken proto.InternalMessageInfo
|
||||
|
||||
func (m *SetBootstrapToken) GetBootstrapToken() []byte {
|
||||
if m != nil {
|
||||
return m.BootstrapToken
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *SetBootstrapToken) GetSetAwaitingConfiguration() bool {
|
||||
if m != nil {
|
||||
return m.SetAwaitingConfiguration
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*Event)(nil), "checkinproto.Event")
|
||||
proto.RegisterMapType((map[string]string)(nil), "checkinproto.Event.ParamsEntry")
|
||||
proto.RegisterType((*Command)(nil), "checkinproto.Command")
|
||||
proto.RegisterType((*Authenticate)(nil), "checkinproto.Authenticate")
|
||||
proto.RegisterType((*TokenUpdate)(nil), "checkinproto.TokenUpdate")
|
||||
proto.RegisterType((*GetBootstrapToken)(nil), "checkinproto.GetBootstrapToken")
|
||||
proto.RegisterType((*SetBootstrapToken)(nil), "checkinproto.SetBootstrapToken")
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("checkin.proto", fileDescriptor_checkin_f106eb4ffaf2f7e3) }
|
||||
|
||||
var fileDescriptor_checkin_f106eb4ffaf2f7e3 = []byte{
|
||||
// 619 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x52, 0xdd, 0x6a, 0xdb, 0x4a,
|
||||
0x10, 0x46, 0x76, 0x6c, 0x47, 0x23, 0x25, 0xe7, 0xb0, 0x9c, 0x9c, 0xa3, 0x13, 0x5a, 0xe2, 0xb8,
|
||||
0xa1, 0xf8, 0xca, 0x85, 0x94, 0xd2, 0x1f, 0x4a, 0xa1, 0x84, 0x5c, 0x04, 0xda, 0xb4, 0x6c, 0xd3,
|
||||
0xde, 0x8a, 0x8d, 0x34, 0x95, 0x17, 0x6b, 0x77, 0x85, 0xb4, 0x72, 0xf0, 0x23, 0xf5, 0x05, 0xfa,
|
||||
0x40, 0x7d, 0x8b, 0xde, 0x95, 0x9d, 0x95, 0x13, 0xf9, 0x6e, 0xe6, 0x9b, 0x6f, 0xbe, 0x9d, 0xf9,
|
||||
0x76, 0xe0, 0x20, 0x5b, 0x62, 0xb6, 0x92, 0x7a, 0x51, 0xd5, 0xc6, 0x1a, 0x16, 0x77, 0x29, 0x65,
|
||||
0xb3, 0x5f, 0x01, 0x8c, 0x2e, 0xd7, 0xa8, 0x2d, 0x3b, 0x84, 0x81, 0xcc, 0x93, 0x60, 0x1a, 0xcc,
|
||||
0x43, 0x3e, 0x90, 0x39, 0x63, 0xb0, 0x67, 0xa5, 0xc2, 0x64, 0x30, 0x0d, 0xe6, 0x43, 0x4e, 0x31,
|
||||
0x7b, 0x06, 0x93, 0xcc, 0x28, 0x25, 0x74, 0x9e, 0x0c, 0xa7, 0xc1, 0x3c, 0x3a, 0x3f, 0x5a, 0xf4,
|
||||
0xd5, 0x16, 0x17, 0xbe, 0xc8, 0xb7, 0x2c, 0xf6, 0x37, 0x0c, 0x6b, 0x71, 0x97, 0xec, 0x4d, 0x83,
|
||||
0x79, 0xcc, 0x5d, 0xc8, 0x5e, 0xc2, 0xb8, 0x12, 0xb5, 0x50, 0x4d, 0x32, 0x9a, 0x0e, 0xe7, 0xd1,
|
||||
0xf9, 0xc9, 0xae, 0x02, 0xcd, 0xb2, 0xf8, 0x4c, 0x8c, 0x4b, 0x6d, 0xeb, 0x0d, 0xef, 0xe8, 0xc7,
|
||||
0xaf, 0x21, 0xea, 0xc1, 0x4e, 0x79, 0x85, 0x9b, 0x6e, 0x5e, 0x17, 0xb2, 0x7f, 0x60, 0xb4, 0x16,
|
||||
0x65, 0xeb, 0x27, 0x0e, 0xb9, 0x4f, 0xde, 0x0c, 0x5e, 0x05, 0xb3, 0xdf, 0x01, 0x4c, 0xba, 0xd1,
|
||||
0xd8, 0x29, 0xc4, 0x0a, 0x9b, 0x46, 0x14, 0x98, 0xda, 0x4d, 0x85, 0x9d, 0x40, 0xd4, 0x61, 0x37,
|
||||
0x9b, 0x0a, 0x9d, 0x90, 0x35, 0x95, 0xcc, 0xb6, 0x42, 0x94, 0x38, 0x3f, 0xda, 0x5c, 0xfa, 0xc5,
|
||||
0x43, 0x4e, 0x31, 0x7b, 0x07, 0xb1, 0x68, 0xed, 0x12, 0xb5, 0x95, 0x99, 0xb0, 0x48, 0x7b, 0x46,
|
||||
0xe7, 0xc7, 0xbb, 0x2b, 0xbd, 0xef, 0x31, 0xf8, 0x0e, 0x9f, 0xbd, 0x85, 0xd8, 0x9a, 0x15, 0xea,
|
||||
0xb4, 0xad, 0x72, 0xd7, 0x3f, 0xa2, 0xfe, 0xff, 0x77, 0xfb, 0x6f, 0x1c, 0xe3, 0x2b, 0x11, 0x78,
|
||||
0x64, 0x1f, 0x12, 0xf6, 0x04, 0x0e, 0x50, 0xd7, 0xa6, 0x2c, 0x15, 0x6a, 0x9b, 0xca, 0x3c, 0x19,
|
||||
0xd3, 0x68, 0xf1, 0x03, 0x78, 0x95, 0xcf, 0x7e, 0x0e, 0x20, 0xee, 0x4f, 0xc0, 0x1e, 0x03, 0x98,
|
||||
0x26, 0x5d, 0x63, 0xdd, 0x48, 0xa3, 0xbb, 0xf5, 0x43, 0xd3, 0x7c, 0xf3, 0x80, 0x13, 0xbd, 0x6d,
|
||||
0x65, 0x99, 0xdf, 0x33, 0xbc, 0x09, 0x31, 0x81, 0x5b, 0xd2, 0x29, 0xc4, 0x55, 0x6d, 0xf2, 0x36,
|
||||
0xb3, 0xa9, 0x16, 0x0a, 0x3b, 0x4f, 0xa2, 0x0e, 0xbb, 0x16, 0x8a, 0x86, 0x6b, 0xb0, 0x96, 0xa2,
|
||||
0x4c, 0x75, 0xab, 0x6e, 0xb1, 0x26, 0x6f, 0x42, 0x1e, 0x7b, 0xf0, 0x9a, 0x30, 0xe7, 0xa9, 0x54,
|
||||
0x28, 0x69, 0xef, 0x90, 0x53, 0xec, 0x30, 0x85, 0xf7, 0xcb, 0x50, 0xcc, 0x4e, 0x20, 0xca, 0x71,
|
||||
0x2d, 0x33, 0xf4, 0xcf, 0x4d, 0xa8, 0x04, 0x1e, 0xa2, 0xd7, 0x1e, 0x41, 0x98, 0x2d, 0x45, 0x59,
|
||||
0xa2, 0x2e, 0x30, 0xd9, 0xa7, 0x6b, 0x7b, 0x00, 0xdc, 0x87, 0x2a, 0x93, 0x63, 0x99, 0x84, 0xfe,
|
||||
0x43, 0x29, 0x71, 0x46, 0x50, 0xe0, 0x35, 0xc1, 0x1b, 0x41, 0x88, 0x93, 0x9c, 0xfd, 0x18, 0x40,
|
||||
0xd4, 0xb3, 0xde, 0x5f, 0xc5, 0x0a, 0xbd, 0x65, 0x31, 0xf7, 0x89, 0x13, 0xa9, 0xda, 0x66, 0x99,
|
||||
0x2a, 0x51, 0xdc, 0x1f, 0x4c, 0xe8, 0x90, 0x8f, 0x0e, 0x70, 0x46, 0xb5, 0xba, 0x34, 0xd9, 0x2a,
|
||||
0xf5, 0xbd, 0x43, 0xea, 0x8d, 0x3c, 0x46, 0xea, 0xec, 0x05, 0xfc, 0x2b, 0xee, 0x84, 0xb4, 0x52,
|
||||
0x17, 0x69, 0x66, 0xf4, 0x77, 0x59, 0xb4, 0xb5, 0xb0, 0xce, 0x79, 0xe7, 0xd8, 0x3e, 0x3f, 0xda,
|
||||
0x56, 0x2f, 0xfa, 0x45, 0xf6, 0x1f, 0x4c, 0xda, 0x06, 0x6b, 0xf7, 0xed, 0xde, 0xbd, 0xb1, 0x4b,
|
||||
0xaf, 0x72, 0x76, 0x06, 0x87, 0x54, 0x28, 0x8d, 0x2e, 0xfc, 0x6a, 0xdd, 0x59, 0x38, 0xf4, 0x83,
|
||||
0xd1, 0x05, 0x19, 0xf6, 0x14, 0xfe, 0x22, 0x56, 0xb3, 0x34, 0xb5, 0xed, 0xbb, 0x7a, 0xe0, 0xe0,
|
||||
0x2f, 0x0e, 0x25, 0xde, 0x19, 0x1c, 0x6a, 0x63, 0x53, 0xa3, 0xdd, 0x6c, 0x8d, 0x29, 0xbd, 0xbb,
|
||||
0xfb, 0x3c, 0xd6, 0xc6, 0x7e, 0xd2, 0x17, 0x1e, 0xbb, 0x1d, 0xd3, 0xa5, 0x3e, 0xff, 0x13, 0x00,
|
||||
0x00, 0xff, 0xff, 0x5a, 0x90, 0x46, 0x6c, 0x6b, 0x04, 0x00, 0x00,
|
||||
// 722 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x6d, 0x6e, 0xdb, 0x38,
|
||||
0x10, 0x85, 0xec, 0xd8, 0x8e, 0x46, 0x8a, 0xb3, 0xe1, 0x6e, 0x76, 0xb5, 0xc1, 0x2e, 0xe2, 0xb8,
|
||||
0x41, 0xeb, 0x5f, 0x2e, 0x90, 0xa2, 0xe8, 0x07, 0x82, 0x02, 0x69, 0x10, 0x14, 0x01, 0xda, 0xa4,
|
||||
0x55, 0xd2, 0xfe, 0x15, 0x68, 0x89, 0x95, 0x09, 0x4b, 0xa4, 0x20, 0x52, 0x0e, 0xdc, 0xab, 0xf4,
|
||||
0x04, 0xbd, 0x40, 0x0f, 0xd4, 0x93, 0x14, 0x1c, 0xca, 0x89, 0x3f, 0x92, 0x7f, 0x33, 0x8f, 0x8f,
|
||||
0x6f, 0x38, 0x6f, 0x86, 0xb0, 0x15, 0x8f, 0x59, 0x3c, 0xe1, 0x62, 0x58, 0x94, 0x52, 0x4b, 0xe2,
|
||||
0xd7, 0x29, 0x66, 0xfd, 0x5f, 0x0e, 0xb4, 0xce, 0xa6, 0x4c, 0x68, 0xd2, 0x85, 0x06, 0x4f, 0x02,
|
||||
0xa7, 0xe7, 0x0c, 0xdc, 0xb0, 0xc1, 0x13, 0x42, 0x60, 0x43, 0xf3, 0x9c, 0x05, 0x8d, 0x9e, 0x33,
|
||||
0x68, 0x86, 0x18, 0x93, 0xa7, 0xd0, 0x89, 0x65, 0x9e, 0x53, 0x91, 0x04, 0xcd, 0x9e, 0x33, 0xf0,
|
||||
0x8e, 0x76, 0x87, 0x8b, 0x6a, 0xc3, 0x53, 0x7b, 0x18, 0xce, 0x59, 0xe4, 0x0f, 0x68, 0x96, 0xf4,
|
||||
0x26, 0xd8, 0xe8, 0x39, 0x03, 0x3f, 0x34, 0x21, 0x79, 0x01, 0xed, 0x82, 0x96, 0x34, 0x57, 0x41,
|
||||
0xab, 0xd7, 0x1c, 0x78, 0x47, 0xfb, 0xcb, 0x0a, 0xf8, 0x96, 0xe1, 0x47, 0x64, 0x9c, 0x09, 0x5d,
|
||||
0xce, 0xc2, 0x9a, 0xbe, 0xf7, 0x0a, 0xbc, 0x05, 0xd8, 0x28, 0x4f, 0xd8, 0xac, 0x7e, 0xaf, 0x09,
|
||||
0xc9, 0x5f, 0xd0, 0x9a, 0xd2, 0xac, 0xb2, 0x2f, 0x76, 0x43, 0x9b, 0xbc, 0x6e, 0xbc, 0x74, 0xfa,
|
||||
0xdf, 0x9b, 0xd0, 0xa9, 0x9f, 0x46, 0x0e, 0xc0, 0xcf, 0x99, 0x52, 0x34, 0x65, 0x91, 0x9e, 0x15,
|
||||
0xac, 0x16, 0xf0, 0x6a, 0xec, 0x7a, 0x56, 0x30, 0x23, 0xa4, 0x65, 0xc1, 0xe3, 0xb9, 0x10, 0x26,
|
||||
0xc6, 0x8f, 0x2a, 0xe1, 0xb6, 0x71, 0x37, 0xc4, 0x98, 0xbc, 0x01, 0x9f, 0x56, 0x7a, 0xcc, 0x84,
|
||||
0xe6, 0x31, 0xd5, 0x0c, 0xfb, 0xf4, 0x8e, 0xf6, 0x96, 0x5b, 0x3a, 0x59, 0x60, 0x84, 0x4b, 0x7c,
|
||||
0x72, 0x0c, 0xbe, 0x96, 0x13, 0x26, 0xa2, 0xaa, 0x48, 0xcc, 0xfd, 0x16, 0xde, 0xff, 0x77, 0xf9,
|
||||
0xfe, 0xb5, 0x61, 0x7c, 0x46, 0x42, 0xe8, 0xe9, 0xbb, 0x84, 0x3c, 0x82, 0x2d, 0x26, 0x4a, 0x99,
|
||||
0x65, 0x39, 0x13, 0x3a, 0xe2, 0x49, 0xd0, 0xc6, 0xa7, 0xf9, 0x77, 0xe0, 0x79, 0x42, 0x2e, 0xe1,
|
||||
0xcf, 0x94, 0xe9, 0x68, 0x24, 0xa5, 0x56, 0xba, 0xa4, 0x45, 0x84, 0x0a, 0x41, 0x07, 0x2b, 0xad,
|
||||
0x98, 0xff, 0x8e, 0xe9, 0xb7, 0x73, 0x1e, 0x56, 0x0d, 0x77, 0xd2, 0x55, 0xc8, 0x08, 0xaa, 0x7b,
|
||||
0x04, 0x37, 0xef, 0x13, 0xbc, 0x5a, 0x17, 0x54, 0xab, 0x50, 0xff, 0x67, 0x03, 0xfc, 0x45, 0x8f,
|
||||
0xc8, 0xff, 0x00, 0x52, 0x45, 0x53, 0x56, 0x2a, 0x2e, 0x45, 0x3d, 0x20, 0x57, 0xaa, 0x2f, 0x16,
|
||||
0x30, 0x6d, 0x8f, 0x2a, 0x9e, 0x25, 0xb7, 0x0c, 0x3b, 0x26, 0x1f, 0xc1, 0x39, 0xe9, 0x00, 0xfc,
|
||||
0xa2, 0x94, 0x49, 0x15, 0xeb, 0x48, 0xd0, 0x9c, 0xd5, 0x53, 0xf3, 0x6a, 0xec, 0x82, 0xe6, 0x68,
|
||||
0x9f, 0x62, 0x25, 0xa7, 0x59, 0x24, 0xaa, 0x7c, 0xc4, 0x4a, 0x9c, 0x9e, 0x1b, 0xfa, 0x16, 0xbc,
|
||||
0x40, 0xcc, 0x4c, 0x9d, 0xe7, 0x8c, 0xe3, 0x64, 0xdc, 0x10, 0x63, 0x83, 0xe5, 0xec, 0xd6, 0x6e,
|
||||
0x8c, 0xc9, 0x3e, 0x78, 0x09, 0x9b, 0xf2, 0x98, 0xd9, 0x72, 0x1d, 0x3c, 0x02, 0x0b, 0x61, 0xb5,
|
||||
0xff, 0xc0, 0x8d, 0xc7, 0x34, 0xcb, 0x98, 0x48, 0x19, 0x9a, 0xe5, 0x87, 0x77, 0x80, 0x59, 0xb9,
|
||||
0x5c, 0x26, 0x2c, 0x0b, 0x5c, 0xbb, 0x72, 0x98, 0x18, 0x23, 0x30, 0xb0, 0x9a, 0x60, 0x8d, 0x40,
|
||||
0xc4, 0x48, 0xf6, 0x7f, 0x34, 0xc0, 0x5b, 0x58, 0x0e, 0xbb, 0xb7, 0x66, 0x16, 0x0e, 0xca, 0xdb,
|
||||
0xc4, 0x88, 0x14, 0x95, 0x1a, 0x47, 0x39, 0x4d, 0x6f, 0x57, 0xda, 0x35, 0xc8, 0x07, 0x03, 0x18,
|
||||
0xa3, 0x2a, 0x91, 0xc9, 0x78, 0x52, 0xcf, 0xb1, 0x89, 0x77, 0x3d, 0x8b, 0xd9, 0x89, 0x3f, 0x87,
|
||||
0xbf, 0xe9, 0x0d, 0xe5, 0x9a, 0x8b, 0x34, 0x8a, 0xa5, 0xf8, 0xca, 0xd3, 0xaa, 0xa4, 0xda, 0x38,
|
||||
0x6f, 0x1c, 0xdb, 0x0c, 0x77, 0xe7, 0xa7, 0xa7, 0x8b, 0x87, 0xe4, 0x1f, 0xe8, 0x54, 0x8a, 0x95,
|
||||
0x66, 0x31, 0xad, 0x7b, 0x6d, 0x93, 0x9e, 0x27, 0xe4, 0x10, 0xba, 0x78, 0x90, 0x49, 0x91, 0xda,
|
||||
0xd6, 0xea, 0xc5, 0x35, 0xe8, 0x7b, 0x29, 0x52, 0x34, 0xec, 0x31, 0x6c, 0x23, 0x4b, 0x8d, 0x65,
|
||||
0xa9, 0x17, 0x5d, 0xdd, 0x32, 0xf0, 0x95, 0x41, 0x91, 0x77, 0x08, 0x5d, 0x21, 0x75, 0x24, 0x85,
|
||||
0x79, 0x9b, 0x92, 0x99, 0x75, 0x77, 0x33, 0xf4, 0x85, 0xd4, 0x97, 0xe2, 0xd4, 0x62, 0xfd, 0x4f,
|
||||
0xb0, 0xb3, 0xb6, 0xdd, 0xe4, 0x18, 0xf6, 0xcc, 0xdf, 0x78, 0xa0, 0x39, 0x07, 0x65, 0x82, 0x94,
|
||||
0xe9, 0x93, 0xfb, 0xfa, 0xeb, 0x7f, 0x83, 0x9d, 0xb5, 0xfd, 0x26, 0x4f, 0x60, 0x7b, 0xf5, 0x67,
|
||||
0xd8, 0x69, 0x74, 0x47, 0x6b, 0xb5, 0xd5, 0xc3, 0xb5, 0x1b, 0xb6, 0xb6, 0x7a, 0xa0, 0xf6, 0xa8,
|
||||
0x8d, 0xff, 0xeb, 0xd9, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x47, 0xe2, 0x94, 0x6e, 0xdc, 0x05,
|
||||
0x00, 0x00,
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ message Command {
|
||||
Authenticate authenticate = 4;
|
||||
TokenUpdate token_update = 5;
|
||||
string enrollment_id = 6;
|
||||
GetBootstrapToken get_bootstrap_token = 7;
|
||||
SetBootstrapToken set_bootstrap_token = 8;
|
||||
}
|
||||
|
||||
message Authenticate {
|
||||
@@ -42,3 +44,12 @@ message TokenUpdate {
|
||||
string user_short_name = 7;
|
||||
bool not_on_console = 8;
|
||||
}
|
||||
|
||||
message GetBootstrapToken {
|
||||
bool get_awaiting_configuration = 1;
|
||||
}
|
||||
|
||||
message SetBootstrapToken {
|
||||
bytes bootstrap_token = 1;
|
||||
bool set_awaiting_configuration = 2;
|
||||
}
|
||||
|
||||
@@ -68,7 +68,6 @@ type Command struct {
|
||||
ScheduleOSUpdateScan *ScheduleOSUpdateScan
|
||||
ActiveNSExtensions *ActiveNSExtensions
|
||||
RotateFileVaultKey *RotateFileVaultKey
|
||||
SetBootstrapToken *SetBootstrapToken
|
||||
}
|
||||
|
||||
// InstallProfile is an InstallProfile MDM Command
|
||||
@@ -276,10 +275,6 @@ type SetAutoAdminPassword struct {
|
||||
PasswordHash []byte `plist:"passwordHash" json:"password_hash"`
|
||||
}
|
||||
|
||||
type SetBootstrapToken struct {
|
||||
BootstrapToken string `plist:",omitempty" json:"bootstrap_token,omitempty"`
|
||||
}
|
||||
|
||||
type OSUpdate struct {
|
||||
ProductKey string `json:"product_key"`
|
||||
InstallAction string `json:"install_action"`
|
||||
|
||||
@@ -3428,10 +3428,12 @@ func (m *MDMOptionsSetting) GetMdmOptions() *MDMOptions {
|
||||
}
|
||||
|
||||
type MDMOptions struct {
|
||||
ActivationLockAllowedWhileSupervised bool `protobuf:"varint,1,opt,name=activation_lock_allowed_while_supervised,json=activationLockAllowedWhileSupervised,proto3" json:"activation_lock_allowed_while_supervised,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
ActivationLockAllowedWhileSupervised bool `protobuf:"varint,1,opt,name=activation_lock_allowed_while_supervised,json=activationLockAllowedWhileSupervised,proto3" json:"activation_lock_allowed_while_supervised,omitempty"`
|
||||
BootstrapTokenAllowed bool `protobuf:"varint,2,opt,name=bootstrap_token_allowed,json=bootstrapTokenAllowed,proto3" json:"bootstrap_token_allowed,omitempty"`
|
||||
PromptUserToAllowBootstrapTokenForAuthentication bool `protobuf:"varint,3,opt,name=prompt_user_to_allow_bootstrap_token_for_authentication,json=promptUserToAllowBootstrapTokenForAuthentication,proto3" json:"prompt_user_to_allow_bootstrap_token_for_authentication,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *MDMOptions) Reset() { *m = MDMOptions{} }
|
||||
@@ -3474,6 +3476,20 @@ func (m *MDMOptions) GetActivationLockAllowedWhileSupervised() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *MDMOptions) GetBootstrapTokenAllowed() bool {
|
||||
if m != nil {
|
||||
return m.BootstrapTokenAllowed
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *MDMOptions) GetPromptUserToAllowBootstrapTokenForAuthentication() bool {
|
||||
if m != nil {
|
||||
return m.PromptUserToAllowBootstrapTokenForAuthentication
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type PasscodeLockGracePeriodSetting struct {
|
||||
PasscodeLockGracePeriod int64 `protobuf:"varint,1,opt,name=passcode_lock_grace_period,json=passcodeLockGracePeriod,proto3" json:"passcode_lock_grace_period,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
@@ -4702,253 +4718,257 @@ func init() {
|
||||
func init() { proto.RegisterFile("mdm.proto", fileDescriptor_fd1fa389f704dbf7) }
|
||||
|
||||
var fileDescriptor_fd1fa389f704dbf7 = []byte{
|
||||
// 3936 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4f, 0x73, 0x1b, 0x47,
|
||||
0x76, 0x27, 0x44, 0x89, 0x04, 0x1e, 0x40, 0x02, 0x6c, 0xfe, 0xd1, 0x90, 0x94, 0x48, 0x69, 0x64,
|
||||
0x5b, 0xb2, 0xd7, 0x96, 0x36, 0xb2, 0xe5, 0xf5, 0xee, 0xda, 0x89, 0x29, 0x52, 0x5a, 0x72, 0x2d,
|
||||
0x8a, 0xac, 0x81, 0x24, 0x57, 0xad, 0xb3, 0x99, 0x1d, 0xce, 0x34, 0x81, 0x2e, 0xce, 0xbf, 0xed,
|
||||
0xee, 0x01, 0x0d, 0xdf, 0x53, 0x39, 0xe7, 0x92, 0xa4, 0x72, 0xc9, 0x3d, 0xdf, 0x20, 0xf9, 0x02,
|
||||
0x9b, 0xaa, 0x5c, 0x52, 0xf9, 0x04, 0x5b, 0xce, 0x57, 0xc8, 0x65, 0x6f, 0xa9, 0xfe, 0x37, 0x33,
|
||||
0x18, 0x0c, 0x21, 0x5d, 0x72, 0xd8, 0x1b, 0xfa, 0xbd, 0x5f, 0xbf, 0xee, 0x79, 0xdd, 0xef, 0xf5,
|
||||
0xfb, 0x03, 0x68, 0x45, 0x41, 0xf4, 0x30, 0xa5, 0x09, 0x4f, 0x50, 0x33, 0x0a, 0x22, 0xf9, 0xcb,
|
||||
0xfe, 0x1d, 0x2c, 0xef, 0x27, 0x51, 0xe4, 0xc5, 0xc1, 0xa9, 0x37, 0x0e, 0x13, 0x2f, 0x40, 0x77,
|
||||
0xa1, 0xe3, 0x2b, 0x8a, 0x9b, 0x65, 0x24, 0xb0, 0x1a, 0x77, 0x1a, 0x0f, 0x5a, 0x4e, 0x5b, 0xd3,
|
||||
0x5e, 0x67, 0x24, 0x40, 0x3f, 0x81, 0x45, 0x3d, 0xb4, 0xae, 0xdd, 0x69, 0x3c, 0x68, 0x3f, 0x5e,
|
||||
0x79, 0x68, 0x04, 0x3e, 0xd4, 0xd2, 0x1c, 0x83, 0xb0, 0xff, 0x60, 0xc1, 0xa2, 0x26, 0x0a, 0xd9,
|
||||
0x14, 0xff, 0x3e, 0xc3, 0x8c, 0xbb, 0x7c, 0x9c, 0x62, 0x23, 0x5b, 0xd3, 0x5e, 0x8d, 0x53, 0x8c,
|
||||
0xf6, 0xa1, 0x4b, 0x62, 0xc6, 0xbd, 0x30, 0x74, 0x53, 0x9a, 0x9c, 0x93, 0x10, 0xeb, 0x35, 0xac,
|
||||
0x62, 0x8d, 0x23, 0x05, 0x38, 0x55, 0xfc, 0xc3, 0x39, 0x67, 0x99, 0x4c, 0x50, 0xd0, 0xd7, 0xb0,
|
||||
0x4c, 0x71, 0x94, 0x8c, 0x70, 0x2e, 0x63, 0x5e, 0xca, 0xb8, 0x59, 0xc8, 0x70, 0x24, 0xbf, 0x10,
|
||||
0xb1, 0x44, 0xcb, 0x04, 0x34, 0x84, 0x5b, 0xa5, 0x6d, 0x8c, 0x08, 0x23, 0x49, 0x4c, 0xe2, 0x41,
|
||||
0x2e, 0xef, 0xba, 0x94, 0xf7, 0x5e, 0xdd, 0x9e, 0x72, 0x70, 0x21, 0x7c, 0x8b, 0x5c, 0xc9, 0x45,
|
||||
0x18, 0xb6, 0xcb, 0x7b, 0xad, 0x2e, 0x74, 0x43, 0x2e, 0x74, 0xaf, 0x66, 0xe3, 0x35, 0xeb, 0x6c,
|
||||
0x96, 0x3e, 0xa2, 0xb2, 0xcc, 0x19, 0x98, 0x4d, 0xe0, 0xc0, 0xf5, 0xd2, 0x34, 0x24, 0xbe, 0xc7,
|
||||
0x49, 0x12, 0xbb, 0x21, 0x61, 0xdc, 0x5a, 0x90, 0xab, 0xd8, 0x53, 0x9f, 0x83, 0x83, 0xbd, 0x02,
|
||||
0xfa, 0x82, 0x30, 0x7e, 0x38, 0xe7, 0x58, 0xe4, 0x0a, 0x1e, 0x7a, 0x01, 0x28, 0xc0, 0x23, 0xe2,
|
||||
0x63, 0x97, 0xc4, 0xe7, 0x09, 0x8d, 0x24, 0xc7, 0x5a, 0x94, 0xb2, 0xb7, 0x0b, 0xd9, 0x07, 0x12,
|
||||
0x73, 0x54, 0x40, 0x0e, 0xe7, 0x9c, 0x95, 0xa0, 0x4a, 0x44, 0x3f, 0x83, 0xb6, 0x96, 0x16, 0x26,
|
||||
0xfe, 0x85, 0xd5, 0x94, 0x62, 0xd6, 0xaa, 0x62, 0x5e, 0x24, 0xfe, 0xc5, 0xe1, 0x9c, 0x03, 0x41,
|
||||
0x3e, 0x12, 0xa7, 0xef, 0x87, 0xd8, 0xa3, 0x6e, 0xea, 0x31, 0xe6, 0x27, 0x01, 0xb6, 0x5a, 0xd5,
|
||||
0xd3, 0xdf, 0x17, 0xfc, 0x53, 0xcd, 0x16, 0xa7, 0xef, 0x97, 0x09, 0xe8, 0x17, 0xd0, 0xc1, 0xd4,
|
||||
0x63, 0xd8, 0x55, 0x52, 0x2d, 0x90, 0xf3, 0xd7, 0x8b, 0xf9, 0xcf, 0x04, 0x57, 0x6d, 0xe0, 0x70,
|
||||
0xce, 0x69, 0xe3, 0x62, 0x88, 0x8e, 0x60, 0xc5, 0xdc, 0xf1, 0x88, 0x50, 0x9a, 0x50, 0x12, 0x0f,
|
||||
0xac, 0xb6, 0x14, 0xb0, 0x55, 0x3e, 0x45, 0x09, 0x39, 0x36, 0x88, 0xc3, 0x39, 0xa7, 0x47, 0x2b,
|
||||
0x34, 0xf4, 0xa5, 0x30, 0x17, 0xc6, 0x29, 0xf1, 0x85, 0x42, 0x98, 0xd5, 0x91, 0x52, 0x36, 0xca,
|
||||
0x52, 0x0a, 0xee, 0xe1, 0x9c, 0x33, 0x81, 0x46, 0xc7, 0xb0, 0x9a, 0xc5, 0x42, 0x75, 0x6e, 0xc6,
|
||||
0x30, 0x75, 0x3d, 0xdf, 0x4f, 0xb2, 0x98, 0x5b, 0x4b, 0xd5, 0xe3, 0x78, 0x2d, 0x41, 0xaf, 0x19,
|
||||
0xa6, 0x7b, 0x0a, 0x22, 0x8e, 0x23, 0xab, 0x12, 0xd5, 0x71, 0x84, 0x98, 0x63, 0x29, 0xce, 0x5a,
|
||||
0x9e, 0x3e, 0x0e, 0xc1, 0x14, 0x33, 0xd4, 0x71, 0x98, 0x11, 0x3a, 0x80, 0x1e, 0x8e, 0xbd, 0xb3,
|
||||
0x50, 0x9c, 0xa3, 0x50, 0x8a, 0x38, 0x90, 0x6e, 0xd5, 0xa4, 0x9f, 0x49, 0xc4, 0x8b, 0x84, 0xf1,
|
||||
0x63, 0x75, 0x22, 0xcb, 0x78, 0x82, 0x82, 0x4e, 0x60, 0xd5, 0x18, 0x64, 0xe9, 0xf6, 0x5a, 0x3d,
|
||||
0x29, 0xe8, 0xd6, 0xd4, 0xc5, 0x2d, 0x5d, 0xcd, 0xc3, 0x39, 0x07, 0x91, 0x29, 0x2a, 0x7a, 0x0d,
|
||||
0xeb, 0x5a, 0x25, 0xae, 0x9f, 0xc4, 0xe7, 0x64, 0x90, 0x51, 0x25, 0x72, 0x45, 0x8a, 0xdc, 0x29,
|
||||
0x44, 0x6a, 0x0d, 0xec, 0x97, 0x51, 0x87, 0x73, 0xce, 0x9a, 0x57, 0x43, 0x47, 0x7d, 0x58, 0x17,
|
||||
0xfb, 0x1b, 0xbb, 0x14, 0x07, 0x38, 0x4a, 0xa5, 0x89, 0xc9, 0x3b, 0x88, 0xa4, 0xd8, 0xdb, 0x25,
|
||||
0xb1, 0x02, 0xe6, 0xe4, 0xa8, 0x7d, 0xf5, 0xdd, 0xab, 0xde, 0x34, 0x19, 0xfd, 0x35, 0x58, 0x91,
|
||||
0x17, 0x7b, 0x83, 0x3a, 0xd3, 0x5d, 0x95, 0x72, 0xef, 0x14, 0x72, 0x8f, 0x15, 0x72, 0xda, 0x70,
|
||||
0x37, 0xa2, 0x5a, 0x8e, 0x30, 0x5b, 0xed, 0x81, 0xca, 0x9a, 0x5d, 0xab, 0xde, 0x13, 0xe5, 0x78,
|
||||
0x26, 0x15, 0xbb, 0x42, 0xab, 0x44, 0xf4, 0x2b, 0x58, 0x21, 0xf1, 0x88, 0x70, 0xec, 0xf2, 0x44,
|
||||
0x78, 0xb1, 0x01, 0xf5, 0x22, 0x6b, 0x5d, 0x0a, 0xdb, 0x2c, 0x1f, 0x93, 0x80, 0xbc, 0x4a, 0x4e,
|
||||
0x15, 0xe0, 0x70, 0xce, 0xe9, 0x92, 0x49, 0x92, 0x38, 0xa0, 0x91, 0x17, 0x92, 0xc0, 0xe3, 0x5e,
|
||||
0x79, 0x63, 0xcc, 0xda, 0xa8, 0x1e, 0xd0, 0x1b, 0x05, 0x2b, 0x6f, 0x43, 0x98, 0xc3, 0x9a, 0x99,
|
||||
0x5e, 0xa6, 0xa3, 0xaf, 0x60, 0xc9, 0x5c, 0xa4, 0x08, 0x07, 0xc4, 0xb3, 0x6e, 0x56, 0xad, 0x4a,
|
||||
0x5f, 0xa1, 0x63, 0xc1, 0x15, 0x56, 0x45, 0x4a, 0x63, 0xe1, 0x1a, 0xb4, 0xb2, 0xd4, 0x6c, 0xab,
|
||||
0xea, 0x1a, 0x94, 0x9a, 0xcc, 0xe4, 0x36, 0x2d, 0x86, 0xe8, 0xa7, 0xd0, 0x64, 0x98, 0x73, 0x12,
|
||||
0x0f, 0x98, 0xb5, 0x29, 0xe7, 0xa1, 0x62, 0x5e, 0x5f, 0x73, 0x0e, 0xe7, 0x9c, 0x1c, 0x85, 0x2e,
|
||||
0xe1, 0x6e, 0xdd, 0xc1, 0x4f, 0x5e, 0xd8, 0x2d, 0x29, 0xea, 0xc3, 0x59, 0x37, 0xa0, 0x7a, 0x77,
|
||||
0x77, 0xa3, 0xd9, 0x10, 0x14, 0xc3, 0x4e, 0xdd, 0xc2, 0x1e, 0xe7, 0x94, 0x9c, 0x65, 0x1c, 0x33,
|
||||
0x6b, 0x5b, 0xae, 0xfa, 0xc1, 0xac, 0x55, 0xf7, 0x72, 0xf4, 0xe1, 0x9c, 0x73, 0x2b, 0x9a, 0xc1,
|
||||
0x17, 0xef, 0x6d, 0xdd, 0x7a, 0xe7, 0x18, 0x07, 0x67, 0x9e, 0x7f, 0x61, 0xdd, 0xaa, 0xbe, 0xb7,
|
||||
0xd3, 0xab, 0x3d, 0xd7, 0x58, 0xf1, 0xde, 0x46, 0x57, 0x72, 0x85, 0x81, 0x32, 0xcc, 0xdd, 0x73,
|
||||
0x42, 0xa3, 0x4b, 0x8f, 0x62, 0xf9, 0x48, 0x5c, 0x26, 0x34, 0xb0, 0x6e, 0x57, 0x0d, 0xb4, 0x8f,
|
||||
0xf9, 0x73, 0x8d, 0x3a, 0xd5, 0x20, 0x61, 0xa0, 0x6c, 0x9a, 0x2c, 0x0c, 0x74, 0x84, 0x29, 0x39,
|
||||
0x1f, 0xd7, 0xc8, 0xdd, 0xa9, 0x1a, 0xe8, 0x1b, 0x89, 0xac, 0x11, 0xbd, 0x31, 0xaa, 0xe5, 0xa0,
|
||||
0x6f, 0xe1, 0xa6, 0xd8, 0xb2, 0x97, 0xf1, 0xc4, 0xf5, 0x82, 0x88, 0xc4, 0x85, 0xf0, 0xdd, 0xaa,
|
||||
0x2d, 0xf4, 0x31, 0xdf, 0xcb, 0x78, 0xb2, 0x27, 0x60, 0x25, 0xd1, 0x6b, 0xac, 0x86, 0x8e, 0x7e,
|
||||
0x0d, 0x88, 0xf9, 0x43, 0x1c, 0x64, 0x21, 0x76, 0x13, 0xe6, 0x66, 0xa9, 0xb0, 0x22, 0xeb, 0x4e,
|
||||
0xf5, 0xb1, 0xea, 0x6b, 0xcc, 0x49, 0xff, 0xb5, 0x44, 0x88, 0xc7, 0xca, 0xcc, 0x3b, 0x61, 0x8a,
|
||||
0x26, 0x37, 0x39, 0x25, 0xcb, 0x65, 0xbe, 0x17, 0x5b, 0x77, 0xa7, 0x36, 0x59, 0x11, 0xd8, 0xf7,
|
||||
0x3d, 0xe9, 0x51, 0xab, 0x42, 0x05, 0x1d, 0x9d, 0xc2, 0x9a, 0xe7, 0x73, 0x32, 0xc2, 0x6e, 0xcc,
|
||||
0x5c, 0xfc, 0x3d, 0xc7, 0x31, 0x93, 0x6e, 0xc0, 0xae, 0xba, 0xfe, 0x3d, 0x89, 0x7a, 0xd9, 0x7f,
|
||||
0x96, 0x63, 0x84, 0xeb, 0x57, 0x73, 0x5f, 0xb2, 0x82, 0x2a, 0x24, 0xd2, 0x84, 0x8b, 0xed, 0x89,
|
||||
0xd0, 0x68, 0xe4, 0x65, 0x21, 0x77, 0x2f, 0xf0, 0xd8, 0xba, 0x57, 0x95, 0xe8, 0x48, 0xd4, 0x73,
|
||||
0x12, 0xe2, 0x37, 0x02, 0xf4, 0x0d, 0x1e, 0x0b, 0x89, 0x34, 0xa7, 0x8e, 0x34, 0x55, 0x98, 0x8b,
|
||||
0x71, 0x2a, 0x38, 0xe6, 0x98, 0xa6, 0x94, 0xb0, 0x49, 0x77, 0xfa, 0x5e, 0xd5, 0x5c, 0xb4, 0x97,
|
||||
0x79, 0x96, 0xc3, 0x27, 0x3d, 0xab, 0x09, 0x3f, 0x6b, 0xf9, 0xe2, 0x6d, 0x17, 0x37, 0xe2, 0x2c,
|
||||
0x49, 0x38, 0xe3, 0xd4, 0x4b, 0x5d, 0x9e, 0x5c, 0xe0, 0xd8, 0x7a, 0xbf, 0xea, 0xb3, 0xfb, 0x98,
|
||||
0x3f, 0x35, 0x98, 0x57, 0x02, 0x22, 0x7c, 0x36, 0xab, 0x12, 0x85, 0xcf, 0x16, 0xe2, 0x28, 0xf6,
|
||||
0x93, 0x11, 0xa6, 0x63, 0x15, 0x70, 0x7d, 0x50, 0xf5, 0xd9, 0x7d, 0xcc, 0x1d, 0x8d, 0xd0, 0x51,
|
||||
0x57, 0x97, 0x4d, 0x92, 0x84, 0x66, 0xb5, 0x1d, 0x4c, 0xca, 0xba, 0x5f, 0xd5, 0xac, 0xb2, 0x81,
|
||||
0x8a, 0x38, 0x34, 0x9a, 0xa2, 0x3e, 0x6d, 0xc1, 0xa2, 0x8e, 0x8b, 0xec, 0x8f, 0x60, 0x79, 0x32,
|
||||
0xf2, 0x47, 0x16, 0x2c, 0xa6, 0x2a, 0x6d, 0x91, 0xa9, 0x44, 0xc7, 0x31, 0x43, 0xfb, 0x11, 0x2c,
|
||||
0x4d, 0x44, 0xf8, 0x68, 0x07, 0x80, 0x04, 0x38, 0xe6, 0xe4, 0x9c, 0x60, 0xaa, 0x13, 0x8f, 0x12,
|
||||
0xc5, 0x3e, 0x81, 0xad, 0xab, 0x43, 0x78, 0xf4, 0x17, 0xb0, 0x56, 0x9b, 0x06, 0xa8, 0x55, 0x57,
|
||||
0xd3, 0xe9, 0x29, 0xf6, 0x23, 0xd8, 0xbc, 0x32, 0x54, 0x47, 0x08, 0xae, 0x97, 0x92, 0x2b, 0xf9,
|
||||
0xdb, 0x1e, 0x82, 0x75, 0x55, 0xd4, 0x8d, 0xee, 0x40, 0xbb, 0xd8, 0x2b, 0xb3, 0x1a, 0x77, 0xe6,
|
||||
0x45, 0xde, 0x54, 0x22, 0xa1, 0x8f, 0x60, 0xa5, 0xe4, 0x40, 0x99, 0x9b, 0xc4, 0xe1, 0x58, 0x66,
|
||||
0x4e, 0x4d, 0xa7, 0x5b, 0x78, 0x43, 0x76, 0x12, 0x87, 0x63, 0xfb, 0x13, 0x58, 0x99, 0x8a, 0xc1,
|
||||
0x85, 0x2e, 0x7f, 0x9f, 0x61, 0x4a, 0xb0, 0x11, 0x6f, 0x86, 0xf6, 0x63, 0x58, 0x9a, 0x88, 0x97,
|
||||
0x45, 0x1a, 0xa7, 0x23, 0x4b, 0x75, 0xed, 0x94, 0x16, 0xda, 0x8a, 0x26, 0x6f, 0x94, 0xfd, 0x1d,
|
||||
0x40, 0x11, 0x9f, 0xa3, 0x1e, 0xcc, 0xa7, 0x24, 0xd6, 0x5f, 0x2b, 0x7e, 0x8a, 0xd5, 0x22, 0xcc,
|
||||
0x98, 0x37, 0x50, 0xe9, 0x5d, 0xcb, 0x31, 0x43, 0x21, 0x3c, 0x1d, 0x26, 0x31, 0x76, 0xe3, 0x2c,
|
||||
0x3a, 0xc3, 0x54, 0x66, 0x6e, 0x2d, 0xa7, 0x2d, 0x69, 0x2f, 0x25, 0xc9, 0xfe, 0xbb, 0x06, 0xb4,
|
||||
0x4b, 0x11, 0x78, 0x8d, 0xf8, 0x8f, 0x01, 0xa5, 0x14, 0x33, 0x4c, 0x47, 0xd8, 0x95, 0x01, 0x44,
|
||||
0x1a, 0x7a, 0xb1, 0x56, 0x47, 0xcf, 0x70, 0x0e, 0x3c, 0xee, 0x9d, 0x86, 0x5e, 0x8c, 0xbe, 0x00,
|
||||
0x2b, 0x20, 0xcc, 0x0b, 0xc3, 0xe4, 0x52, 0x9c, 0xec, 0xf7, 0x24, 0x22, 0x7c, 0xec, 0x32, 0xcc,
|
||||
0xb3, 0x54, 0x2e, 0xdf, 0x74, 0x36, 0x0c, 0xff, 0xd4, 0xb0, 0xfb, 0x82, 0x6b, 0xff, 0x6b, 0x03,
|
||||
0x7a, 0xd5, 0x50, 0x1e, 0x7d, 0x08, 0xbd, 0x00, 0x33, 0x4e, 0x62, 0xf5, 0x86, 0xc5, 0x5e, 0x64,
|
||||
0x32, 0xdd, 0x6e, 0x89, 0xfe, 0xd2, 0x8b, 0x30, 0x7a, 0x0c, 0xeb, 0x65, 0xa8, 0xc9, 0x9e, 0x02,
|
||||
0xad, 0x94, 0xd5, 0x12, 0x53, 0x9f, 0x58, 0x80, 0xb6, 0xa1, 0x25, 0xbc, 0xaa, 0xcb, 0x49, 0x84,
|
||||
0xb5, 0x76, 0x9a, 0x82, 0xf0, 0x8a, 0x44, 0x18, 0x6d, 0x41, 0x33, 0x7f, 0x1b, 0xae, 0x2b, 0x9e,
|
||||
0x19, 0xdb, 0x7b, 0xd0, 0x29, 0x27, 0x0c, 0xfa, 0x52, 0x8b, 0xfb, 0xe8, 0x4e, 0xa4, 0x19, 0x0d,
|
||||
0xf9, 0xc9, 0xab, 0x9a, 0x57, 0x9e, 0x62, 0x3f, 0x82, 0x95, 0xa9, 0x74, 0x41, 0xac, 0x29, 0x52,
|
||||
0x82, 0xd2, 0x77, 0xe6, 0x63, 0xfb, 0x44, 0xdc, 0x83, 0x3c, 0x15, 0x98, 0x81, 0x44, 0xef, 0xc3,
|
||||
0xf2, 0x79, 0x42, 0x7d, 0x91, 0x73, 0x85, 0x58, 0xba, 0x4c, 0x75, 0x5c, 0x4b, 0x92, 0x7a, 0xa0,
|
||||
0x89, 0x36, 0x81, 0xe5, 0xc9, 0x5c, 0xa1, 0x7c, 0x95, 0x1a, 0xb3, 0xaf, 0xd2, 0xb5, 0xa9, 0xab,
|
||||
0x24, 0x76, 0x74, 0x9e, 0x24, 0x3c, 0x4e, 0x78, 0xae, 0x4b, 0x33, 0xb6, 0xff, 0x7d, 0x1e, 0xd0,
|
||||
0x74, 0x3a, 0x81, 0x3e, 0x80, 0x2e, 0xe1, 0x59, 0x8c, 0x99, 0xcb, 0x78, 0x42, 0xe5, 0x69, 0x89,
|
||||
0x75, 0xe7, 0x9d, 0x25, 0x45, 0xee, 0x0b, 0xea, 0x51, 0x50, 0xf1, 0x38, 0xd7, 0xaa, 0x1e, 0x07,
|
||||
0x7d, 0x05, 0x8b, 0x49, 0xaa, 0x34, 0x3e, 0x5f, 0x4d, 0xf2, 0xa7, 0x97, 0x3d, 0x51, 0x50, 0xc7,
|
||||
0xcc, 0x11, 0x1f, 0x17, 0x79, 0x31, 0x39, 0x17, 0x89, 0x66, 0x46, 0x43, 0x7d, 0xda, 0x6d, 0x43,
|
||||
0x7b, 0x4d, 0x43, 0x71, 0x11, 0x95, 0xe9, 0x47, 0x38, 0xe6, 0xee, 0x79, 0xe8, 0x0d, 0x98, 0xac,
|
||||
0x27, 0xcc, 0x1b, 0x97, 0x20, 0xe8, 0xcf, 0x05, 0x19, 0x9d, 0xc0, 0xd2, 0x64, 0x50, 0xb9, 0x50,
|
||||
0x0d, 0x2a, 0xa7, 0xb7, 0x34, 0x11, 0x31, 0x3a, 0x93, 0xf3, 0xd1, 0x73, 0x80, 0x52, 0xb0, 0xb8,
|
||||
0x78, 0xc5, 0xeb, 0x57, 0x1b, 0x0c, 0x3a, 0xa5, 0x99, 0xe8, 0x73, 0xb8, 0xe9, 0x0f, 0xbd, 0x78,
|
||||
0x80, 0xdd, 0xd2, 0xa7, 0x30, 0xf1, 0x00, 0xcb, 0x8a, 0x40, 0xcb, 0x59, 0x57, 0xec, 0xe3, 0x9c,
|
||||
0xdb, 0x17, 0x4c, 0xfb, 0x00, 0x36, 0xaf, 0x54, 0x22, 0xba, 0x0f, 0xdd, 0x34, 0xa3, 0xfe, 0x50,
|
||||
0xa4, 0xf8, 0x11, 0xe6, 0xc3, 0xc4, 0x1c, 0xe1, 0xb2, 0x21, 0x1f, 0x4b, 0xaa, 0x7d, 0x17, 0x76,
|
||||
0xdf, 0xf2, 0xdd, 0xf6, 0x0e, 0xdc, 0x9a, 0xf5, 0x31, 0xf6, 0x9f, 0x1a, 0x39, 0xa0, 0xfe, 0x2d,
|
||||
0x7f, 0x08, 0x4d, 0x73, 0x68, 0x72, 0x17, 0x13, 0x59, 0xc1, 0xb1, 0xe6, 0x38, 0x39, 0x66, 0xea,
|
||||
0xe0, 0xaf, 0x4d, 0x1f, 0xfc, 0x2f, 0x61, 0xab, 0x0c, 0x71, 0x53, 0x12, 0xcb, 0x67, 0xcb, 0xc7,
|
||||
0x94, 0x8b, 0xdb, 0x36, 0xff, 0xa0, 0xe3, 0xdc, 0x2c, 0x4d, 0x38, 0x55, 0xfc, 0x7d, 0xc1, 0x46,
|
||||
0x47, 0x70, 0xd7, 0xe0, 0x29, 0x1e, 0x25, 0x26, 0xe5, 0x18, 0x62, 0xff, 0xc2, 0x15, 0x4f, 0x31,
|
||||
0xa1, 0x58, 0xf9, 0x96, 0xa6, 0xb3, 0xa3, 0x81, 0x4e, 0x8e, 0xdb, 0x17, 0x30, 0x47, 0xa3, 0xec,
|
||||
0x23, 0x68, 0x9a, 0x0f, 0x40, 0x5f, 0xc1, 0x72, 0xbe, 0x27, 0xc2, 0x71, 0xa4, 0x9e, 0x99, 0x89,
|
||||
0xc4, 0xcb, 0x60, 0x8f, 0x38, 0x8e, 0x9c, 0xa5, 0xa8, 0x34, 0x62, 0xf6, 0x00, 0x3a, 0x65, 0x36,
|
||||
0xba, 0x0f, 0x0b, 0x1e, 0x63, 0x98, 0x1b, 0x31, 0xdd, 0x52, 0x1c, 0x28, 0xe8, 0x8e, 0x66, 0x4b,
|
||||
0xf5, 0x62, 0xee, 0x89, 0x57, 0x40, 0x57, 0x12, 0xcb, 0xea, 0xd5, 0x1c, 0x27, 0xc7, 0xd8, 0xff,
|
||||
0xd8, 0x80, 0x1b, 0x52, 0x82, 0x78, 0xa4, 0x2f, 0x48, 0x9c, 0x3f, 0xd2, 0xe2, 0x37, 0xda, 0x84,
|
||||
0x66, 0x14, 0x3c, 0x71, 0x19, 0xf9, 0x41, 0x3d, 0x5c, 0xf3, 0xce, 0x62, 0x14, 0x3c, 0xe9, 0x93,
|
||||
0x1f, 0xe4, 0x9b, 0x1e, 0x05, 0x4f, 0x94, 0x7a, 0x5b, 0x8e, 0xfc, 0x2d, 0x5e, 0xa6, 0xc2, 0x36,
|
||||
0xc5, 0x4f, 0xb4, 0x0b, 0x6d, 0x36, 0xf4, 0x1e, 0x3f, 0xf9, 0x5c, 0xc9, 0x50, 0xe6, 0x08, 0x8a,
|
||||
0x24, 0xc5, 0x58, 0xb0, 0xa8, 0x46, 0xcc, 0x5a, 0x50, 0xef, 0xb0, 0x1e, 0xda, 0xff, 0xdb, 0x80,
|
||||
0xa6, 0xd9, 0x30, 0xfa, 0x09, 0xac, 0x9c, 0x65, 0x71, 0x10, 0x0a, 0xff, 0x53, 0x09, 0x6b, 0x7a,
|
||||
0x8a, 0x71, 0x54, 0xb8, 0x9a, 0xf7, 0x61, 0x59, 0x83, 0x47, 0x98, 0x32, 0xe3, 0x5b, 0x5b, 0xce,
|
||||
0x92, 0xa2, 0xbe, 0x51, 0x44, 0xf4, 0x11, 0xdc, 0x50, 0x27, 0x33, 0x2f, 0x55, 0x5a, 0x2a, 0xee,
|
||||
0x3c, 0x55, 0x12, 0xe3, 0xf3, 0xc4, 0x51, 0x90, 0x5c, 0x39, 0xd7, 0x4b, 0xca, 0xd9, 0x82, 0x26,
|
||||
0xcb, 0xce, 0x38, 0xe1, 0xba, 0x6e, 0x29, 0x1e, 0x26, 0x3d, 0x46, 0x6b, 0x70, 0x43, 0x31, 0x16,
|
||||
0x24, 0x43, 0x0d, 0x90, 0x0d, 0x4b, 0x42, 0x0d, 0x2e, 0x89, 0xdd, 0xb3, 0xb1, 0x71, 0x14, 0xf3,
|
||||
0x4e, 0x5b, 0x10, 0x8f, 0xe2, 0xa7, 0x82, 0x64, 0xff, 0x0e, 0xa0, 0x58, 0xfe, 0xff, 0xe3, 0xbb,
|
||||
0xed, 0xbf, 0x81, 0xd5, 0x9a, 0x62, 0xcc, 0xdb, 0x42, 0x46, 0xe1, 0x45, 0xaa, 0x45, 0x1e, 0x25,
|
||||
0x7e, 0x99, 0x4e, 0x08, 0xb2, 0x7f, 0x01, 0x1b, 0xf5, 0x45, 0x99, 0xb7, 0xc7, 0x75, 0xf6, 0xa7,
|
||||
0xb0, 0x32, 0x55, 0x78, 0x79, 0x6b, 0x30, 0xfb, 0x2d, 0x74, 0x2b, 0x05, 0x16, 0x74, 0x1b, 0x40,
|
||||
0x17, 0x63, 0xdc, 0x3c, 0xee, 0x6c, 0x69, 0xca, 0x51, 0x20, 0x34, 0x25, 0xeb, 0x2f, 0xca, 0xd8,
|
||||
0x0b, 0xb7, 0xb2, 0x54, 0x50, 0x5f, 0xd3, 0xd0, 0xfe, 0x02, 0xd6, 0xea, 0x8a, 0x2d, 0xef, 0xf0,
|
||||
0x1d, 0xff, 0x72, 0x1d, 0xd6, 0xea, 0x0a, 0x69, 0xe8, 0x05, 0xdc, 0x63, 0x17, 0x24, 0x75, 0x53,
|
||||
0x4a, 0x22, 0x8f, 0xea, 0xb0, 0xcb, 0xcd, 0x4b, 0x73, 0x14, 0xab, 0xf7, 0x48, 0x05, 0x25, 0xbb,
|
||||
0x02, 0x7a, 0xaa, 0x90, 0x32, 0x02, 0x33, 0x22, 0x35, 0x0c, 0xbd, 0x81, 0x0f, 0x45, 0x26, 0x53,
|
||||
0x2f, 0xcc, 0x63, 0x2e, 0xc5, 0x83, 0x2c, 0xf4, 0xa8, 0xaa, 0x61, 0xaa, 0x00, 0xe3, 0x1e, 0xc3,
|
||||
0xbc, 0x46, 0xe4, 0x1e, 0x73, 0x14, 0x56, 0x46, 0x2e, 0x7d, 0xb8, 0x1f, 0x24, 0xb1, 0xce, 0xc1,
|
||||
0xd3, 0x24, 0xcd, 0x42, 0x91, 0x3e, 0x9a, 0x65, 0xcc, 0x02, 0x24, 0x3e, 0x4f, 0xb4, 0x6b, 0xb4,
|
||||
0x05, 0x5c, 0x64, 0xdc, 0xa7, 0x1a, 0xac, 0x97, 0xd0, 0xd2, 0xe5, 0x5d, 0xfe, 0x39, 0x6c, 0xca,
|
||||
0x28, 0xba, 0x56, 0xcc, 0x0d, 0x15, 0x78, 0x0a, 0x40, 0xfd, 0xd4, 0xea, 0xac, 0xf3, 0x2c, 0x0c,
|
||||
0x55, 0xb0, 0xa9, 0x4c, 0x6c, 0x23, 0x9d, 0x98, 0xf6, 0x3c, 0x0b, 0x43, 0x19, 0x73, 0xd6, 0x4c,
|
||||
0x95, 0x05, 0x62, 0x39, 0x75, 0xb1, 0x6e, 0xaa, 0xd0, 0x80, 0x9c, 0xfa, 0x1d, 0x6c, 0x4a, 0x05,
|
||||
0x68, 0xb5, 0xca, 0x52, 0x84, 0x96, 0x61, 0x9c, 0x46, 0xa9, 0xce, 0x21, 0xbe, 0x5e, 0x69, 0x54,
|
||||
0x00, 0xb5, 0x2c, 0xe6, 0x6c, 0x78, 0xb5, 0x74, 0xfb, 0xef, 0x1b, 0xb0, 0x51, 0x3f, 0x45, 0x5c,
|
||||
0x5e, 0x36, 0x4c, 0x28, 0x2f, 0xc7, 0xd2, 0x2d, 0x49, 0x91, 0xdb, 0xda, 0x86, 0x56, 0xf1, 0xf1,
|
||||
0xd7, 0x74, 0x14, 0x67, 0x3e, 0xf7, 0x1e, 0x2c, 0x99, 0x08, 0xd8, 0x1d, 0x7a, 0x6c, 0x28, 0x83,
|
||||
0xad, 0x8e, 0xd3, 0x31, 0xc4, 0x43, 0x8f, 0x0d, 0xd1, 0x06, 0x2c, 0x0c, 0x49, 0x10, 0xe0, 0x58,
|
||||
0x9f, 0x9e, 0x1e, 0xd9, 0x14, 0x3a, 0xe5, 0x6a, 0xe0, 0x3b, 0xc7, 0x7e, 0xdb, 0xd0, 0x92, 0xe5,
|
||||
0xc1, 0x92, 0x25, 0x35, 0x25, 0x41, 0xbc, 0xce, 0xb7, 0x01, 0x14, 0x53, 0xf6, 0xc0, 0x54, 0xd4,
|
||||
0xa9, 0xe0, 0xaf, 0xc6, 0x29, 0xb6, 0xc7, 0xd0, 0x2e, 0xd5, 0x10, 0x2b, 0xe8, 0x46, 0x05, 0x5d,
|
||||
0xb7, 0xa3, 0x6b, 0x75, 0x3b, 0x12, 0x6a, 0x10, 0xee, 0x8e, 0x71, 0x11, 0x40, 0x91, 0x40, 0xaf,
|
||||
0xdb, 0x29, 0x88, 0x47, 0x81, 0xfd, 0x73, 0x68, 0x9a, 0x32, 0x24, 0xfa, 0xa4, 0x54, 0xac, 0x54,
|
||||
0x4f, 0xec, 0xca, 0x54, 0xb1, 0xb2, 0xa8, 0x54, 0xda, 0x7f, 0x6a, 0xc2, 0xa2, 0xa6, 0x8a, 0xb7,
|
||||
0x41, 0x3c, 0x12, 0xe6, 0xe1, 0x14, 0xbf, 0xd1, 0x97, 0x79, 0x37, 0x27, 0x3f, 0xa5, 0x9a, 0xa6,
|
||||
0x90, 0x38, 0x31, 0x23, 0x5b, 0xb7, 0x74, 0xe4, 0x21, 0x3e, 0x81, 0xe6, 0x30, 0x61, 0x5c, 0x4e,
|
||||
0x9d, 0xaf, 0xd6, 0x25, 0x0e, 0x35, 0x27, 0xdf, 0x94, 0x81, 0xa2, 0xa7, 0xb0, 0x34, 0x4a, 0xc4,
|
||||
0x9a, 0x34, 0xf1, 0x22, 0x12, 0x0f, 0x74, 0xdb, 0xae, 0x54, 0xe3, 0x7b, 0x23, 0xd8, 0x8e, 0xe2,
|
||||
0x9a, 0xf9, 0x9d, 0x51, 0x89, 0x88, 0xbe, 0x81, 0x9e, 0xd0, 0x51, 0x12, 0x7b, 0xa1, 0x3b, 0x4c,
|
||||
0x38, 0x4b, 0x13, 0xae, 0x9b, 0x72, 0xa5, 0xab, 0x7e, 0xaa, 0x11, 0x87, 0x0a, 0x60, 0x24, 0x75,
|
||||
0xd3, 0x49, 0x3a, 0xfa, 0x02, 0x5a, 0x97, 0x5e, 0x18, 0xa6, 0x5e, 0x8a, 0xa9, 0x0e, 0xb1, 0x4b,
|
||||
0x75, 0xb6, 0x6f, 0x0d, 0xcb, 0xcc, 0x2f, 0xc0, 0xe8, 0xaf, 0xa0, 0x23, 0x13, 0x59, 0xf3, 0x25,
|
||||
0x8b, 0xd5, 0x8a, 0x8a, 0xc8, 0x66, 0x2b, 0x1f, 0xd2, 0x0e, 0x0a, 0x9a, 0x58, 0xfa, 0x2c, 0xcc,
|
||||
0x30, 0x4f, 0x12, 0x3e, 0xd4, 0xcd, 0xb4, 0xd2, 0xd2, 0x4f, 0x0d, 0x2b, 0x5f, 0x3a, 0x07, 0xa3,
|
||||
0xdf, 0xc2, 0xc6, 0x15, 0x35, 0xe0, 0x56, 0x35, 0xac, 0xaf, 0x0d, 0x81, 0x8d, 0xc8, 0x75, 0xaf,
|
||||
0xb6, 0xf4, 0xfb, 0x25, 0xb4, 0xa3, 0x20, 0x72, 0x4d, 0x2e, 0x04, 0xd5, 0x9b, 0x71, 0x7c, 0x70,
|
||||
0xac, 0xe3, 0xf6, 0xfc, 0x66, 0x44, 0x41, 0x64, 0x42, 0x79, 0x0c, 0x5b, 0xa6, 0xcd, 0x27, 0x4b,
|
||||
0x4d, 0xee, 0x80, 0x7a, 0x3e, 0x76, 0x53, 0x4c, 0x49, 0x12, 0xe8, 0xbe, 0xdb, 0x83, 0xd2, 0x41,
|
||||
0x69, 0xec, 0x8b, 0xc4, 0xbf, 0xf8, 0x95, 0x40, 0x9e, 0x4a, 0xa0, 0x91, 0x7c, 0x33, 0xad, 0xe7,
|
||||
0xa3, 0xef, 0x60, 0x23, 0xf2, 0xbe, 0x27, 0x51, 0x16, 0x89, 0x5c, 0x59, 0x3e, 0x6c, 0xd2, 0x6b,
|
||||
0x9a, 0xa6, 0xdc, 0xfb, 0xe5, 0x28, 0x56, 0xe2, 0x1c, 0x0d, 0x13, 0xce, 0x33, 0xdf, 0xf9, 0x5a,
|
||||
0x54, 0xc3, 0x44, 0xbf, 0x81, 0xf5, 0x80, 0x78, 0x83, 0x38, 0x61, 0x9c, 0xf8, 0x2e, 0xcb, 0xce,
|
||||
0x22, 0xc2, 0x64, 0xb4, 0xb2, 0x54, 0x95, 0x7d, 0x90, 0xc3, 0xfa, 0x39, 0x2a, 0x97, 0x1d, 0xd4,
|
||||
0x30, 0x85, 0x09, 0x78, 0x69, 0xea, 0x7a, 0xb1, 0x17, 0x8e, 0x39, 0xf1, 0x99, 0x6e, 0xdc, 0x4d,
|
||||
0xf6, 0xa1, 0xf6, 0x0c, 0x37, 0x37, 0x01, 0xaf, 0x44, 0x44, 0xe7, 0xb0, 0x79, 0x75, 0xf7, 0xa1,
|
||||
0x5b, 0x4d, 0x14, 0xaf, 0xca, 0x94, 0x8c, 0x6c, 0xcb, 0xbb, 0xaa, 0xe9, 0xf0, 0x39, 0xb4, 0x38,
|
||||
0x89, 0xb0, 0xfb, 0x43, 0x12, 0x63, 0xdd, 0xd9, 0x2b, 0x99, 0xf9, 0x2b, 0x12, 0xe1, 0xdf, 0x24,
|
||||
0x71, 0x61, 0xe6, 0x5c, 0x13, 0xec, 0x47, 0xb0, 0x5a, 0x63, 0xc7, 0x22, 0x92, 0x56, 0x4d, 0xc4,
|
||||
0x40, 0x47, 0x0f, 0x66, 0x68, 0x3f, 0x86, 0x8d, 0x7a, 0x8b, 0x9d, 0x31, 0xe7, 0x2f, 0xa1, 0x57,
|
||||
0xb5, 0x4f, 0x11, 0xd4, 0x92, 0xc8, 0x14, 0x1e, 0x3a, 0x8e, 0x1a, 0x08, 0xea, 0xe5, 0x10, 0x53,
|
||||
0x93, 0x20, 0xa8, 0x81, 0xfd, 0x10, 0xd0, 0xb4, 0x89, 0xce, 0x58, 0xef, 0x63, 0xe8, 0x55, 0x8d,
|
||||
0x72, 0x06, 0xfa, 0x1f, 0x1a, 0x70, 0x6b, 0x96, 0xf1, 0xbd, 0x35, 0x98, 0x7d, 0x73, 0xa5, 0x91,
|
||||
0x2b, 0x57, 0xbd, 0xfb, 0x16, 0x23, 0xbf, 0xc2, 0xba, 0xed, 0xbf, 0x6d, 0xc0, 0xee, 0x5b, 0x6e,
|
||||
0xc4, 0x5b, 0xf7, 0xf6, 0x14, 0x6e, 0x4f, 0xdc, 0x39, 0x37, 0x50, 0xf5, 0x28, 0x11, 0xc2, 0xe4,
|
||||
0x79, 0x5d, 0xc7, 0xd9, 0x9e, 0x00, 0x1d, 0xe4, 0x18, 0xa1, 0x76, 0xfb, 0x31, 0xac, 0xd7, 0x77,
|
||||
0x9e, 0x36, 0xa1, 0x39, 0x4a, 0xe3, 0xf2, 0x7f, 0x5d, 0x16, 0x47, 0x69, 0xfc, 0x3a, 0x23, 0x81,
|
||||
0xfd, 0x99, 0xa9, 0x93, 0x96, 0x9e, 0x25, 0x91, 0xc0, 0x95, 0x1f, 0x32, 0xbd, 0xdb, 0xe2, 0xad,
|
||||
0xb2, 0x1f, 0x42, 0xb7, 0x72, 0x55, 0x45, 0x38, 0x50, 0x5c, 0x6c, 0x5d, 0xf8, 0xca, 0x6f, 0xef,
|
||||
0x27, 0xd0, 0xad, 0xbc, 0x60, 0x22, 0x91, 0xca, 0x9f, 0x3b, 0x0d, 0x37, 0x63, 0xfb, 0xd7, 0xb0,
|
||||
0x32, 0xe5, 0x11, 0xd1, 0x93, 0x49, 0x1f, 0xda, 0xa8, 0x36, 0xe7, 0x8b, 0x19, 0x65, 0xe7, 0x69,
|
||||
0x07, 0x00, 0x05, 0x07, 0xbd, 0x81, 0x07, 0xb2, 0x59, 0xa2, 0x9b, 0xcb, 0xc2, 0x99, 0xca, 0x9a,
|
||||
0x27, 0x0e, 0xdc, 0xcb, 0x21, 0x09, 0xb1, 0xcb, 0xb2, 0x14, 0xd3, 0x11, 0x61, 0xf9, 0xf5, 0x7b,
|
||||
0xaf, 0xc0, 0x0b, 0x87, 0xb9, 0xa7, 0xd0, 0xdf, 0x0a, 0x70, 0x3f, 0xc7, 0xda, 0xbf, 0x85, 0x9d,
|
||||
0xd9, 0x6e, 0x17, 0xfd, 0x72, 0xa6, 0x13, 0x57, 0x11, 0xd6, 0x55, 0xae, 0xd9, 0xee, 0xc3, 0xf6,
|
||||
0x0c, 0x97, 0x8b, 0x3e, 0xbb, 0xd2, 0x73, 0x2b, 0xb9, 0xb5, 0x2e, 0xd9, 0xfe, 0x19, 0x6c, 0xcf,
|
||||
0xf0, 0xb5, 0x33, 0x0c, 0xf1, 0x91, 0xcc, 0x25, 0xab, 0x0e, 0x75, 0xc6, 0x84, 0x7d, 0xd8, 0x7d,
|
||||
0x4b, 0xbf, 0xf6, 0x1d, 0xb2, 0xab, 0xaf, 0xe1, 0xd6, 0xac, 0xf6, 0xeb, 0x3b, 0x48, 0x18, 0xc0,
|
||||
0xd6, 0xd5, 0x2d, 0xd5, 0x77, 0xe8, 0x3f, 0xdc, 0x87, 0xae, 0xfe, 0x7b, 0x48, 0xde, 0xb3, 0x55,
|
||||
0xe9, 0xd5, 0xb2, 0x22, 0x1b, 0x51, 0xf6, 0x7f, 0x36, 0x60, 0xb5, 0xa6, 0xb3, 0x8a, 0x3e, 0x84,
|
||||
0x9e, 0x9f, 0x51, 0x2a, 0x8e, 0x27, 0xaf, 0x60, 0xeb, 0xaa, 0xb9, 0xa6, 0xe7, 0xd0, 0xbb, 0xd0,
|
||||
0x89, 0xf1, 0x65, 0x01, 0xd3, 0x15, 0xb0, 0x18, 0x5f, 0xe6, 0x90, 0x5d, 0x68, 0xab, 0x7a, 0x7e,
|
||||
0x42, 0x93, 0x88, 0xe9, 0x2a, 0x3e, 0x48, 0xd2, 0x89, 0xa0, 0xa0, 0x67, 0xb0, 0x6b, 0xfe, 0xa6,
|
||||
0xa3, 0x8b, 0x5a, 0xcc, 0x8d, 0x31, 0xbf, 0x4c, 0xe8, 0x85, 0xcb, 0x31, 0x1f, 0x62, 0xaa, 0x53,
|
||||
0x81, 0x5b, 0x1a, 0xa6, 0x8b, 0x5a, 0xec, 0xa5, 0x02, 0xbd, 0x92, 0x18, 0xfb, 0x33, 0xd8, 0xa8,
|
||||
0x6f, 0xe7, 0x4e, 0x54, 0xe2, 0x1b, 0x95, 0x4a, 0xfc, 0x1f, 0x1a, 0xd0, 0xad, 0x74, 0xd3, 0xfe,
|
||||
0x4c, 0xbf, 0xff, 0xa7, 0x80, 0xa6, 0x5b, 0x79, 0x33, 0xbf, 0xfd, 0x04, 0xd6, 0xea, 0x7a, 0xd4,
|
||||
0x22, 0x69, 0x18, 0x94, 0x5a, 0x62, 0xe2, 0xf7, 0x74, 0xee, 0x76, 0x6d, 0x3a, 0x77, 0x13, 0x0f,
|
||||
0x73, 0xb5, 0x9f, 0x8c, 0x3e, 0x82, 0x45, 0xd5, 0x80, 0x36, 0xb9, 0x4b, 0xaf, 0xf4, 0x7f, 0x27,
|
||||
0xc9, 0x70, 0x0c, 0xc0, 0x1e, 0xc3, 0x82, 0x9e, 0xb5, 0x0b, 0xed, 0x94, 0x26, 0x41, 0xe6, 0xab,
|
||||
0x76, 0xb0, 0x76, 0xed, 0x9a, 0xf4, 0x0d, 0x1e, 0xcb, 0xba, 0xb1, 0x06, 0x4c, 0x16, 0x94, 0x96,
|
||||
0x35, 0xd9, 0x54, 0xd2, 0x64, 0x39, 0x45, 0xff, 0x5b, 0x49, 0x3e, 0x43, 0x3a, 0xdd, 0x32, 0x7f,
|
||||
0x3d, 0xd9, 0x93, 0x44, 0xfb, 0x63, 0x58, 0xab, 0x6b, 0x85, 0x8b, 0x08, 0x42, 0x76, 0x3d, 0xb4,
|
||||
0xaf, 0x50, 0x03, 0xfb, 0x05, 0xa0, 0xe9, 0x16, 0x37, 0xfa, 0x1c, 0x6e, 0x9e, 0x93, 0x90, 0x63,
|
||||
0x5a, 0xf4, 0xc6, 0xdd, 0x34, 0x21, 0x31, 0x37, 0x66, 0xba, 0xae, 0xd8, 0xf9, 0x94, 0x53, 0xc9,
|
||||
0xb4, 0xff, 0xd8, 0x00, 0x34, 0xdd, 0xdf, 0x16, 0xcf, 0xe1, 0x05, 0x1e, 0x97, 0x93, 0xcd, 0xc5,
|
||||
0x0b, 0x3c, 0x96, 0xa9, 0xe6, 0x01, 0xf4, 0x8a, 0x7e, 0xb9, 0x6a, 0xf6, 0xe9, 0xe0, 0xa0, 0x14,
|
||||
0xa5, 0xe5, 0xc2, 0x54, 0x9f, 0xc8, 0xe9, 0xe6, 0x53, 0x14, 0x41, 0xe8, 0x50, 0x5c, 0x5e, 0x1f,
|
||||
0x53, 0xe1, 0x3a, 0x7c, 0x4f, 0x37, 0x5e, 0x3a, 0xce, 0x72, 0x8c, 0x2f, 0xf7, 0x0b, 0x2a, 0xfa,
|
||||
0x1a, 0x6e, 0x51, 0x9c, 0x86, 0x63, 0x17, 0xc7, 0x3e, 0x1d, 0xeb, 0x22, 0x5b, 0x69, 0xd6, 0x75,
|
||||
0x39, 0x6b, 0x4b, 0x62, 0x9e, 0xe5, 0x90, 0x92, 0x04, 0xfb, 0x9f, 0x1b, 0xd0, 0xad, 0xec, 0x67,
|
||||
0xd6, 0xd5, 0x54, 0x5d, 0x43, 0xf1, 0x9e, 0x61, 0x71, 0xfe, 0x2e, 0xfe, 0x3e, 0x4d, 0x28, 0xd7,
|
||||
0x77, 0xae, 0xa7, 0x39, 0xdf, 0xe0, 0xf1, 0x33, 0x49, 0x47, 0x5f, 0xc1, 0xf6, 0x34, 0xba, 0x30,
|
||||
0x4a, 0x75, 0xe0, 0x56, 0x75, 0x9a, 0xb9, 0xef, 0xf6, 0x97, 0xb0, 0x32, 0xd5, 0x9d, 0x17, 0xca,
|
||||
0xa9, 0xf6, 0xf4, 0xd5, 0x26, 0x97, 0xcf, 0x26, 0x80, 0xf6, 0x7f, 0x37, 0x60, 0xc9, 0xc1, 0x2c,
|
||||
0x0b, 0xb9, 0xf9, 0xdf, 0x2e, 0x82, 0xeb, 0x59, 0x50, 0x6a, 0x29, 0x07, 0x64, 0xfa, 0xbf, 0xbc,
|
||||
0xd7, 0xa6, 0xff, 0xcb, 0xfb, 0x04, 0xda, 0x98, 0xd2, 0x84, 0xba, 0xfe, 0xd0, 0x23, 0xf1, 0x74,
|
||||
0xe5, 0xf7, 0x99, 0x60, 0xee, 0x0b, 0x9e, 0x03, 0x38, 0xff, 0x6d, 0xf7, 0x61, 0xa1, 0xcf, 0x3d,
|
||||
0x9e, 0x31, 0xd4, 0x83, 0xce, 0x9e, 0x7f, 0x11, 0x27, 0x97, 0x21, 0x0e, 0x06, 0x38, 0xe8, 0xcd,
|
||||
0xa1, 0x16, 0xdc, 0x90, 0xb3, 0x7a, 0x0d, 0xb4, 0x01, 0x48, 0xff, 0xf7, 0xf7, 0xb9, 0x6c, 0x34,
|
||||
0x2b, 0xfa, 0x35, 0xd4, 0x84, 0xeb, 0x47, 0x41, 0x88, 0x7b, 0xf3, 0x08, 0x60, 0xe1, 0x65, 0xc2,
|
||||
0x5f, 0x26, 0x97, 0xbd, 0xeb, 0xf6, 0xbf, 0x35, 0x00, 0x8a, 0xf5, 0xd0, 0xa7, 0xb0, 0x1e, 0x26,
|
||||
0xbe, 0x17, 0x92, 0x1f, 0x70, 0xe0, 0x06, 0x98, 0xf9, 0x94, 0xa4, 0x79, 0x2d, 0xb0, 0xe5, 0xac,
|
||||
0xe5, 0xcc, 0x83, 0x82, 0x27, 0x9e, 0xfb, 0x8c, 0xb9, 0x38, 0x1e, 0x84, 0x84, 0x0d, 0x27, 0x66,
|
||||
0xa9, 0x8f, 0x5f, 0xcb, 0xd8, 0x33, 0xc5, 0x2c, 0xcf, 0xba, 0x0b, 0x1d, 0xa5, 0x85, 0x20, 0x89,
|
||||
0x94, 0x1a, 0xa4, 0xa2, 0x24, 0xed, 0x40, 0x92, 0xd0, 0x6d, 0x00, 0xad, 0xa8, 0x24, 0x50, 0x97,
|
||||
0xef, 0x86, 0xd3, 0x52, 0x1a, 0x49, 0x02, 0xfc, 0xb4, 0xf7, 0x1f, 0x3f, 0xee, 0x34, 0xfe, 0xeb,
|
||||
0xc7, 0x9d, 0xc6, 0x1f, 0x7f, 0xdc, 0x69, 0xfc, 0xd3, 0xff, 0xec, 0xcc, 0x9d, 0x2d, 0x48, 0x05,
|
||||
0x7e, 0xfa, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb1, 0x8b, 0x23, 0xaa, 0x78, 0x2d, 0x00, 0x00,
|
||||
// 3999 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4f, 0x73, 0xdc, 0x46,
|
||||
0x76, 0xe7, 0x90, 0x12, 0xc9, 0x79, 0x33, 0x24, 0x87, 0xcd, 0x3f, 0x1a, 0x92, 0x12, 0x29, 0x41,
|
||||
0xb6, 0x25, 0x7b, 0x6d, 0xc9, 0x91, 0x2d, 0xdb, 0xbb, 0x6b, 0x27, 0xa6, 0x48, 0x69, 0xc9, 0xb5,
|
||||
0x28, 0xb2, 0x30, 0x92, 0x5c, 0xb5, 0xce, 0x06, 0x0b, 0x02, 0x4d, 0x4e, 0x17, 0x01, 0x34, 0xdc,
|
||||
0xdd, 0x18, 0x7a, 0x7c, 0x4f, 0xe5, 0x98, 0xca, 0x25, 0x49, 0xe5, 0x92, 0x7b, 0xbe, 0x41, 0xf2,
|
||||
0x05, 0x36, 0x55, 0xb9, 0xa4, 0xf2, 0x09, 0xb6, 0x9c, 0xaf, 0x90, 0x8b, 0x6f, 0xa9, 0xfe, 0x07,
|
||||
0x60, 0x30, 0xe0, 0x48, 0x97, 0x1c, 0x72, 0x9b, 0x7e, 0xef, 0xd7, 0xaf, 0x1b, 0xdd, 0xfd, 0xfe,
|
||||
0x0f, 0x34, 0xe3, 0x30, 0x7e, 0x90, 0x32, 0x2a, 0x28, 0x9a, 0x8f, 0xc3, 0x58, 0xfd, 0x72, 0xfe,
|
||||
0x00, 0x8b, 0x7b, 0x34, 0x8e, 0xfd, 0x24, 0x3c, 0xf1, 0x87, 0x11, 0xf5, 0x43, 0x74, 0x07, 0xda,
|
||||
0x81, 0xa6, 0x78, 0x59, 0x46, 0xc2, 0x6e, 0xe3, 0x76, 0xe3, 0x7e, 0xd3, 0x6d, 0x19, 0xda, 0xab,
|
||||
0x8c, 0x84, 0xe8, 0x17, 0x30, 0x67, 0x86, 0xdd, 0xe9, 0xdb, 0x8d, 0xfb, 0xad, 0x47, 0xcb, 0x0f,
|
||||
0xac, 0xc0, 0x07, 0x46, 0x9a, 0x6b, 0x11, 0xce, 0x1f, 0xbb, 0x30, 0x67, 0x88, 0x52, 0x36, 0xc3,
|
||||
0xdf, 0x67, 0x98, 0x0b, 0x4f, 0x0c, 0x53, 0x6c, 0x65, 0x1b, 0xda, 0xcb, 0x61, 0x8a, 0xd1, 0x1e,
|
||||
0x2c, 0x91, 0x84, 0x0b, 0x3f, 0x8a, 0xbc, 0x94, 0xd1, 0x33, 0x12, 0x61, 0xb3, 0x46, 0xb7, 0x58,
|
||||
0xe3, 0x50, 0x03, 0x4e, 0x34, 0xff, 0x60, 0xca, 0x5d, 0x24, 0x23, 0x14, 0xf4, 0x35, 0x2c, 0x32,
|
||||
0x1c, 0xd3, 0x01, 0xce, 0x65, 0xcc, 0x28, 0x19, 0x37, 0x0a, 0x19, 0xae, 0xe2, 0x17, 0x22, 0x16,
|
||||
0x58, 0x99, 0x80, 0xfa, 0x70, 0xb3, 0xb4, 0x8d, 0x01, 0xe1, 0x84, 0x26, 0x24, 0x39, 0xcf, 0xe5,
|
||||
0x5d, 0x53, 0xf2, 0xde, 0xa9, 0xdb, 0x53, 0x0e, 0x2e, 0x84, 0x6f, 0x92, 0x2b, 0xb9, 0x08, 0xc3,
|
||||
0x56, 0x79, 0xaf, 0xd5, 0x85, 0xae, 0xab, 0x85, 0xee, 0xd6, 0x6c, 0xbc, 0x66, 0x9d, 0x8d, 0xd2,
|
||||
0x47, 0x54, 0x96, 0x39, 0x05, 0xbb, 0x09, 0x1c, 0x7a, 0x7e, 0x9a, 0x46, 0x24, 0xf0, 0x05, 0xa1,
|
||||
0x89, 0x17, 0x11, 0x2e, 0xba, 0xb3, 0x6a, 0x15, 0x67, 0xec, 0x73, 0x70, 0xb8, 0x5b, 0x40, 0x9f,
|
||||
0x13, 0x2e, 0x0e, 0xa6, 0xdc, 0x2e, 0xb9, 0x82, 0x87, 0x9e, 0x03, 0x0a, 0xf1, 0x80, 0x04, 0xd8,
|
||||
0x23, 0xc9, 0x19, 0x65, 0xb1, 0xe2, 0x74, 0xe7, 0x94, 0xec, 0xad, 0x42, 0xf6, 0xbe, 0xc2, 0x1c,
|
||||
0x16, 0x90, 0x83, 0x29, 0x77, 0x39, 0xac, 0x12, 0xd1, 0xe7, 0xd0, 0x32, 0xd2, 0x22, 0x1a, 0x5c,
|
||||
0x74, 0xe7, 0x95, 0x98, 0xd5, 0xaa, 0x98, 0xe7, 0x34, 0xb8, 0x38, 0x98, 0x72, 0x21, 0xcc, 0x47,
|
||||
0xf2, 0xf6, 0x83, 0x08, 0xfb, 0xcc, 0x4b, 0x7d, 0xce, 0x03, 0x1a, 0xe2, 0x6e, 0xb3, 0x7a, 0xfb,
|
||||
0x7b, 0x92, 0x7f, 0x62, 0xd8, 0xf2, 0xf6, 0x83, 0x32, 0x01, 0xfd, 0x0a, 0xda, 0x98, 0xf9, 0x1c,
|
||||
0x7b, 0x5a, 0x6a, 0x17, 0xd4, 0xfc, 0xb5, 0x62, 0xfe, 0x53, 0xc9, 0xd5, 0x1b, 0x38, 0x98, 0x72,
|
||||
0x5b, 0xb8, 0x18, 0xa2, 0x43, 0x58, 0xb6, 0x6f, 0x3c, 0x26, 0x8c, 0x51, 0x46, 0x92, 0xf3, 0x6e,
|
||||
0x4b, 0x09, 0xd8, 0x2c, 0xdf, 0xa2, 0x82, 0x1c, 0x59, 0xc4, 0xc1, 0x94, 0xdb, 0x61, 0x15, 0x1a,
|
||||
0xfa, 0x52, 0xaa, 0x0b, 0x17, 0x8c, 0x04, 0xf2, 0x40, 0x78, 0xb7, 0xad, 0xa4, 0xac, 0x97, 0xa5,
|
||||
0x14, 0xdc, 0x83, 0x29, 0x77, 0x04, 0x8d, 0x8e, 0x60, 0x25, 0x4b, 0xe4, 0xd1, 0x79, 0x19, 0xc7,
|
||||
0xcc, 0xf3, 0x83, 0x80, 0x66, 0x89, 0xe8, 0x2e, 0x54, 0xaf, 0xe3, 0x95, 0x02, 0xbd, 0xe2, 0x98,
|
||||
0xed, 0x6a, 0x88, 0xbc, 0x8e, 0xac, 0x4a, 0xd4, 0xd7, 0x11, 0x61, 0x81, 0x95, 0xb8, 0xee, 0xe2,
|
||||
0xf8, 0x75, 0x48, 0xa6, 0x9c, 0xa1, 0xaf, 0xc3, 0x8e, 0xd0, 0x3e, 0x74, 0x70, 0xe2, 0x9f, 0x46,
|
||||
0xf2, 0x1e, 0xe5, 0xa1, 0xc8, 0x0b, 0x59, 0xaa, 0xaa, 0xf4, 0x53, 0x85, 0x78, 0x4e, 0xb9, 0x38,
|
||||
0xd2, 0x37, 0xb2, 0x88, 0x47, 0x28, 0xe8, 0x18, 0x56, 0xac, 0x42, 0x96, 0x5e, 0x6f, 0xb7, 0xa3,
|
||||
0x04, 0xdd, 0x1c, 0x7b, 0xb8, 0xa5, 0xa7, 0x79, 0x30, 0xe5, 0x22, 0x32, 0x46, 0x45, 0xaf, 0x60,
|
||||
0xcd, 0x1c, 0x89, 0x17, 0xd0, 0xe4, 0x8c, 0x9c, 0x67, 0x4c, 0x8b, 0x5c, 0x56, 0x22, 0xb7, 0x0b,
|
||||
0x91, 0xe6, 0x04, 0xf6, 0xca, 0xa8, 0x83, 0x29, 0x77, 0xd5, 0xaf, 0xa1, 0xa3, 0x1e, 0xac, 0xc9,
|
||||
0xfd, 0x0d, 0x3d, 0x86, 0x43, 0x1c, 0xa7, 0x4a, 0xc5, 0xd4, 0x1b, 0x44, 0x4a, 0xec, 0xad, 0x92,
|
||||
0x58, 0x09, 0x73, 0x73, 0xd4, 0x9e, 0xfe, 0xee, 0x15, 0x7f, 0x9c, 0x8c, 0xfe, 0x12, 0xba, 0xb1,
|
||||
0x9f, 0xf8, 0xe7, 0x75, 0xaa, 0xbb, 0xa2, 0xe4, 0xde, 0x2e, 0xe4, 0x1e, 0x69, 0xe4, 0xb8, 0xe2,
|
||||
0xae, 0xc7, 0xb5, 0x1c, 0xa9, 0xb6, 0xc6, 0x02, 0x95, 0x4f, 0x76, 0xb5, 0xfa, 0x4e, 0xb4, 0xe1,
|
||||
0x19, 0x3d, 0xd8, 0x65, 0x56, 0x25, 0xa2, 0xdf, 0xc0, 0x32, 0x49, 0x06, 0x44, 0x60, 0x4f, 0x50,
|
||||
0x69, 0xc5, 0xce, 0x99, 0x1f, 0x77, 0xd7, 0x94, 0xb0, 0x8d, 0xf2, 0x35, 0x49, 0xc8, 0x4b, 0x7a,
|
||||
0xa2, 0x01, 0x07, 0x53, 0xee, 0x12, 0x19, 0x25, 0xc9, 0x0b, 0x1a, 0xf8, 0x11, 0x09, 0x7d, 0xe1,
|
||||
0x97, 0x37, 0xc6, 0xbb, 0xeb, 0xd5, 0x0b, 0x7a, 0xad, 0x61, 0xe5, 0x6d, 0x48, 0x75, 0x58, 0xb5,
|
||||
0xd3, 0xcb, 0x74, 0xf4, 0x15, 0x2c, 0xd8, 0x87, 0x14, 0xe3, 0x90, 0xf8, 0xdd, 0x1b, 0x55, 0xad,
|
||||
0x32, 0x4f, 0xe8, 0x48, 0x72, 0xa5, 0x56, 0x91, 0xd2, 0x58, 0x9a, 0x06, 0x73, 0x58, 0x7a, 0x76,
|
||||
0xb7, 0x6a, 0x1a, 0xf4, 0x31, 0xd9, 0xc9, 0x2d, 0x56, 0x0c, 0xd1, 0xc7, 0x30, 0xcf, 0xb1, 0x10,
|
||||
0x24, 0x39, 0xe7, 0xdd, 0x0d, 0x35, 0x0f, 0x15, 0xf3, 0x7a, 0x86, 0x73, 0x30, 0xe5, 0xe6, 0x28,
|
||||
0x74, 0x09, 0x77, 0xea, 0x2e, 0x7e, 0xf4, 0xc1, 0x6e, 0x2a, 0x51, 0xef, 0x4f, 0x7a, 0x01, 0xd5,
|
||||
0xb7, 0xbb, 0x13, 0x4f, 0x86, 0xa0, 0x04, 0xb6, 0xeb, 0x16, 0xf6, 0x85, 0x60, 0xe4, 0x34, 0x13,
|
||||
0x98, 0x77, 0xb7, 0xd4, 0xaa, 0xef, 0x4d, 0x5a, 0x75, 0x37, 0x47, 0x1f, 0x4c, 0xb9, 0x37, 0xe3,
|
||||
0x09, 0x7c, 0xe9, 0x6f, 0xeb, 0xd6, 0x3b, 0xc3, 0x38, 0x3c, 0xf5, 0x83, 0x8b, 0xee, 0xcd, 0xaa,
|
||||
0xbf, 0x1d, 0x5f, 0xed, 0x99, 0xc1, 0x4a, 0x7f, 0x1b, 0x5f, 0xc9, 0x95, 0x0a, 0xca, 0xb1, 0xf0,
|
||||
0xce, 0x08, 0x8b, 0x2f, 0x7d, 0x86, 0x95, 0x93, 0xb8, 0xa4, 0x2c, 0xec, 0xde, 0xaa, 0x2a, 0x68,
|
||||
0x0f, 0x8b, 0x67, 0x06, 0x75, 0x62, 0x40, 0x52, 0x41, 0xf9, 0x38, 0x59, 0x2a, 0xe8, 0x00, 0x33,
|
||||
0x72, 0x36, 0xac, 0x91, 0xbb, 0x5d, 0x55, 0xd0, 0xd7, 0x0a, 0x59, 0x23, 0x7a, 0x7d, 0x50, 0xcb,
|
||||
0x41, 0xdf, 0xc2, 0x0d, 0xb9, 0x65, 0x3f, 0x13, 0xd4, 0xf3, 0xc3, 0x98, 0x24, 0x85, 0xf0, 0x9d,
|
||||
0xaa, 0x2e, 0xf4, 0xb0, 0xd8, 0xcd, 0x04, 0xdd, 0x95, 0xb0, 0x92, 0xe8, 0x55, 0x5e, 0x43, 0x47,
|
||||
0xbf, 0x05, 0xc4, 0x83, 0x3e, 0x0e, 0xb3, 0x08, 0x7b, 0x94, 0x7b, 0x59, 0x2a, 0xb5, 0xa8, 0x7b,
|
||||
0xbb, 0xea, 0xac, 0x7a, 0x06, 0x73, 0xdc, 0x7b, 0xa5, 0x10, 0xd2, 0x59, 0xd9, 0x79, 0xc7, 0x5c,
|
||||
0xd3, 0xd4, 0x26, 0xc7, 0x64, 0x79, 0x3c, 0xf0, 0x93, 0xee, 0x9d, 0xb1, 0x4d, 0x56, 0x04, 0xf6,
|
||||
0x02, 0x5f, 0x59, 0xd4, 0xaa, 0x50, 0x49, 0x47, 0x27, 0xb0, 0xea, 0x07, 0x82, 0x0c, 0xb0, 0x97,
|
||||
0x70, 0x0f, 0xff, 0x20, 0x70, 0xc2, 0x95, 0x19, 0x70, 0xaa, 0xa6, 0x7f, 0x57, 0xa1, 0x5e, 0xf4,
|
||||
0x9e, 0xe6, 0x18, 0x69, 0xfa, 0xf5, 0xdc, 0x17, 0xbc, 0xa0, 0x4a, 0x89, 0x8c, 0x0a, 0xb9, 0x3d,
|
||||
0x19, 0x1a, 0x0d, 0xfc, 0x2c, 0x12, 0xde, 0x05, 0x1e, 0x76, 0xef, 0x56, 0x25, 0xba, 0x0a, 0xf5,
|
||||
0x8c, 0x44, 0xf8, 0xb5, 0x04, 0x7d, 0x83, 0x87, 0x52, 0x22, 0xcb, 0xa9, 0x03, 0x43, 0x95, 0xea,
|
||||
0x62, 0x8d, 0x0a, 0x4e, 0x04, 0x66, 0x29, 0x23, 0x7c, 0xd4, 0x9c, 0xbe, 0x53, 0x55, 0x17, 0x63,
|
||||
0x65, 0x9e, 0xe6, 0xf0, 0x51, 0xcb, 0x6a, 0xc3, 0xcf, 0x5a, 0xbe, 0xf4, 0xed, 0xf2, 0x45, 0x9c,
|
||||
0x52, 0x2a, 0xb8, 0x60, 0x7e, 0xea, 0x09, 0x7a, 0x81, 0x93, 0xee, 0xbb, 0x55, 0x9b, 0xdd, 0xc3,
|
||||
0xe2, 0x89, 0xc5, 0xbc, 0x94, 0x10, 0x69, 0xb3, 0x79, 0x95, 0x28, 0x6d, 0xb6, 0x14, 0xc7, 0x70,
|
||||
0x40, 0x07, 0x98, 0x0d, 0x75, 0xc0, 0xf5, 0x5e, 0xd5, 0x66, 0xf7, 0xb0, 0x70, 0x0d, 0xc2, 0x44,
|
||||
0x5d, 0x4b, 0x7c, 0x94, 0x24, 0x4f, 0xd6, 0xe8, 0xc1, 0xa8, 0xac, 0x7b, 0xd5, 0x93, 0xd5, 0x3a,
|
||||
0x50, 0x11, 0x87, 0x06, 0x63, 0xd4, 0x27, 0x4d, 0x98, 0x33, 0x71, 0x91, 0xf3, 0x01, 0x2c, 0x8e,
|
||||
0x46, 0xfe, 0xa8, 0x0b, 0x73, 0xa9, 0x4e, 0x5b, 0x54, 0x2a, 0xd1, 0x76, 0xed, 0xd0, 0x79, 0x08,
|
||||
0x0b, 0x23, 0x11, 0x3e, 0xda, 0x06, 0x20, 0x21, 0x4e, 0x04, 0x39, 0x23, 0x98, 0x99, 0xc4, 0xa3,
|
||||
0x44, 0x71, 0x8e, 0x61, 0xf3, 0xea, 0x10, 0x1e, 0xfd, 0x19, 0xac, 0xd6, 0xa6, 0x01, 0x7a, 0xd5,
|
||||
0x95, 0x74, 0x7c, 0x8a, 0xf3, 0x10, 0x36, 0xae, 0x0c, 0xd5, 0x11, 0x82, 0x6b, 0xa5, 0xe4, 0x4a,
|
||||
0xfd, 0x76, 0xfa, 0xd0, 0xbd, 0x2a, 0xea, 0x46, 0xb7, 0xa1, 0x55, 0xec, 0x95, 0x77, 0x1b, 0xb7,
|
||||
0x67, 0x64, 0xde, 0x54, 0x22, 0xa1, 0x0f, 0x60, 0xb9, 0x64, 0x40, 0xb9, 0x47, 0x93, 0x68, 0xa8,
|
||||
0x32, 0xa7, 0x79, 0x77, 0xa9, 0xb0, 0x86, 0xfc, 0x38, 0x89, 0x86, 0xce, 0x47, 0xb0, 0x3c, 0x16,
|
||||
0x83, 0xcb, 0xb3, 0xfc, 0x3e, 0xc3, 0x8c, 0x60, 0x2b, 0xde, 0x0e, 0x9d, 0x47, 0xb0, 0x30, 0x12,
|
||||
0x2f, 0xcb, 0x34, 0xce, 0x44, 0x96, 0xfa, 0xd9, 0xe9, 0x53, 0x68, 0x69, 0x9a, 0x7a, 0x51, 0xce,
|
||||
0x77, 0x00, 0x45, 0x7c, 0x8e, 0x3a, 0x30, 0x93, 0x92, 0xc4, 0x7c, 0xad, 0xfc, 0x29, 0x57, 0x8b,
|
||||
0x31, 0xe7, 0xfe, 0xb9, 0x4e, 0xef, 0x9a, 0xae, 0x1d, 0x4a, 0xe1, 0x69, 0x9f, 0x26, 0xd8, 0x4b,
|
||||
0xb2, 0xf8, 0x14, 0x33, 0x95, 0xb9, 0x35, 0xdd, 0x96, 0xa2, 0xbd, 0x50, 0x24, 0xe7, 0x6f, 0x1a,
|
||||
0xd0, 0x2a, 0x45, 0xe0, 0x35, 0xe2, 0x3f, 0x04, 0x94, 0x32, 0xcc, 0x31, 0x1b, 0x60, 0x4f, 0x05,
|
||||
0x10, 0x69, 0xe4, 0x27, 0xe6, 0x38, 0x3a, 0x96, 0xb3, 0xef, 0x0b, 0xff, 0x24, 0xf2, 0x13, 0xf4,
|
||||
0x05, 0x74, 0x43, 0xc2, 0xfd, 0x28, 0xa2, 0x97, 0xf2, 0x66, 0x7f, 0x20, 0x31, 0x11, 0x43, 0x8f,
|
||||
0x63, 0x91, 0xa5, 0x6a, 0xf9, 0x79, 0x77, 0xdd, 0xf2, 0x4f, 0x2c, 0xbb, 0x27, 0xb9, 0xce, 0xbf,
|
||||
0x34, 0xa0, 0x53, 0x0d, 0xe5, 0xd1, 0xfb, 0xd0, 0x09, 0x31, 0x17, 0x24, 0xd1, 0x3e, 0x2c, 0xf1,
|
||||
0x63, 0x9b, 0xe9, 0x2e, 0x95, 0xe8, 0x2f, 0xfc, 0x18, 0xa3, 0x47, 0xb0, 0x56, 0x86, 0xda, 0xec,
|
||||
0x29, 0x34, 0x87, 0xb2, 0x52, 0x62, 0x9a, 0x1b, 0x0b, 0xd1, 0x16, 0x34, 0xa5, 0x55, 0xf5, 0x04,
|
||||
0x89, 0xb1, 0x39, 0x9d, 0x79, 0x49, 0x78, 0x49, 0x62, 0x8c, 0x36, 0x61, 0x3e, 0xf7, 0x0d, 0xd7,
|
||||
0x34, 0xcf, 0x8e, 0x9d, 0x5d, 0x68, 0x97, 0x13, 0x06, 0xf3, 0xa8, 0xe5, 0x7b, 0xf4, 0x46, 0xd2,
|
||||
0x8c, 0x86, 0xfa, 0xe4, 0x15, 0xc3, 0x2b, 0x4f, 0x71, 0x1e, 0xc2, 0xf2, 0x58, 0xba, 0x20, 0xd7,
|
||||
0x94, 0x29, 0x41, 0xe9, 0x3b, 0xf3, 0xb1, 0x73, 0x2c, 0xdf, 0x41, 0x9e, 0x0a, 0x4c, 0x40, 0xa2,
|
||||
0x77, 0x61, 0xf1, 0x8c, 0xb2, 0x40, 0xe6, 0x5c, 0x11, 0x56, 0x26, 0x53, 0x5f, 0xd7, 0x82, 0xa2,
|
||||
0xee, 0x1b, 0xa2, 0x43, 0x60, 0x71, 0x34, 0x57, 0x28, 0x3f, 0xa5, 0xc6, 0xe4, 0xa7, 0x34, 0x3d,
|
||||
0xf6, 0x94, 0xe4, 0x8e, 0xce, 0x28, 0x15, 0x09, 0x15, 0xf9, 0x59, 0xda, 0xb1, 0xf3, 0x6f, 0x33,
|
||||
0x80, 0xc6, 0xd3, 0x09, 0xf4, 0x1e, 0x2c, 0x11, 0x91, 0x25, 0x98, 0x7b, 0x5c, 0x50, 0xa6, 0x6e,
|
||||
0x4b, 0xae, 0x3b, 0xe3, 0x2e, 0x68, 0x72, 0x4f, 0x52, 0x0f, 0xc3, 0x8a, 0xc5, 0x99, 0xae, 0x5a,
|
||||
0x1c, 0xf4, 0x15, 0xcc, 0xd1, 0x54, 0x9f, 0xf8, 0x4c, 0x35, 0xc9, 0x1f, 0x5f, 0xf6, 0x58, 0x43,
|
||||
0x5d, 0x3b, 0x47, 0x7e, 0x5c, 0xec, 0x27, 0xe4, 0x4c, 0x26, 0x9a, 0x19, 0x8b, 0xcc, 0x6d, 0xb7,
|
||||
0x2c, 0xed, 0x15, 0x8b, 0xe4, 0x43, 0xd4, 0xaa, 0x1f, 0xe3, 0x44, 0x78, 0x67, 0x91, 0x7f, 0xce,
|
||||
0x55, 0x3d, 0x61, 0xc6, 0x9a, 0x04, 0x49, 0x7f, 0x26, 0xc9, 0xe8, 0x18, 0x16, 0x46, 0x83, 0xca,
|
||||
0xd9, 0x6a, 0x50, 0x39, 0xbe, 0xa5, 0x91, 0x88, 0xd1, 0x1d, 0x9d, 0x8f, 0x9e, 0x01, 0x94, 0x82,
|
||||
0xc5, 0xb9, 0x2b, 0xbc, 0x5f, 0x6d, 0x30, 0xe8, 0x96, 0x66, 0xa2, 0xcf, 0xe0, 0x46, 0xd0, 0xf7,
|
||||
0x93, 0x73, 0xec, 0x95, 0x3e, 0x85, 0x4b, 0x07, 0xac, 0x2a, 0x02, 0x4d, 0x77, 0x4d, 0xb3, 0x8f,
|
||||
0x72, 0x6e, 0x4f, 0x32, 0x9d, 0x7d, 0xd8, 0xb8, 0xf2, 0x10, 0xd1, 0x3d, 0x58, 0x4a, 0x33, 0x16,
|
||||
0xf4, 0x65, 0x8a, 0x1f, 0x63, 0xd1, 0xa7, 0xf6, 0x0a, 0x17, 0x2d, 0xf9, 0x48, 0x51, 0x9d, 0x3b,
|
||||
0xb0, 0xf3, 0x86, 0xef, 0x76, 0xb6, 0xe1, 0xe6, 0xa4, 0x8f, 0x71, 0x7e, 0x6e, 0xe4, 0x80, 0x7a,
|
||||
0x5f, 0xfe, 0x00, 0xe6, 0xed, 0xa5, 0xa9, 0x5d, 0x8c, 0x64, 0x05, 0x47, 0x86, 0xe3, 0xe6, 0x98,
|
||||
0xb1, 0x8b, 0x9f, 0x1e, 0xbf, 0xf8, 0x5f, 0xc3, 0x66, 0x19, 0xe2, 0xa5, 0x24, 0x51, 0x6e, 0x2b,
|
||||
0xc0, 0x4c, 0xc8, 0xd7, 0x36, 0x73, 0xbf, 0xed, 0xde, 0x28, 0x4d, 0x38, 0xd1, 0xfc, 0x3d, 0xc9,
|
||||
0x46, 0x87, 0x70, 0xc7, 0xe2, 0x19, 0x1e, 0x50, 0x9b, 0x72, 0xf4, 0x71, 0x70, 0xe1, 0x49, 0x57,
|
||||
0x4c, 0x18, 0xd6, 0xb6, 0x65, 0xde, 0xdd, 0x36, 0x40, 0x37, 0xc7, 0xed, 0x49, 0x98, 0x6b, 0x50,
|
||||
0xce, 0x21, 0xcc, 0xdb, 0x0f, 0x40, 0x5f, 0xc1, 0x62, 0xbe, 0x27, 0x22, 0x70, 0xac, 0xdd, 0xcc,
|
||||
0x48, 0xe2, 0x65, 0xb1, 0x87, 0x02, 0xc7, 0xee, 0x42, 0x5c, 0x1a, 0x71, 0xe7, 0x1c, 0xda, 0x65,
|
||||
0x36, 0xba, 0x07, 0xb3, 0x3e, 0xe7, 0x58, 0x58, 0x31, 0x4b, 0xa5, 0x38, 0x50, 0xd2, 0x5d, 0xc3,
|
||||
0x56, 0xc7, 0x8b, 0x85, 0x2f, 0xbd, 0x80, 0xa9, 0x24, 0x96, 0x8f, 0xd7, 0x70, 0xdc, 0x1c, 0xe3,
|
||||
0xfc, 0x43, 0x03, 0xae, 0x2b, 0x09, 0xd2, 0x49, 0x5f, 0x90, 0x24, 0x77, 0xd2, 0xf2, 0x37, 0xda,
|
||||
0x80, 0xf9, 0x38, 0x7c, 0xec, 0x71, 0xf2, 0xa3, 0x76, 0x5c, 0x33, 0xee, 0x5c, 0x1c, 0x3e, 0xee,
|
||||
0x91, 0x1f, 0x95, 0x4f, 0x8f, 0xc3, 0xc7, 0xfa, 0x78, 0x9b, 0xae, 0xfa, 0x2d, 0x3d, 0x53, 0xa1,
|
||||
0x9b, 0xf2, 0x27, 0xda, 0x81, 0x16, 0xef, 0xfb, 0x8f, 0x1e, 0x7f, 0xa6, 0x65, 0x68, 0x75, 0x04,
|
||||
0x4d, 0x52, 0x62, 0xba, 0x30, 0xa7, 0x47, 0xbc, 0x3b, 0xab, 0xfd, 0xb0, 0x19, 0x3a, 0xff, 0xd3,
|
||||
0x80, 0x79, 0xbb, 0x61, 0xf4, 0x0b, 0x58, 0x3e, 0xcd, 0x92, 0x30, 0x92, 0xf6, 0xa7, 0x12, 0xd6,
|
||||
0x74, 0x34, 0xe3, 0xb0, 0x30, 0x35, 0xef, 0xc2, 0xa2, 0x01, 0x0f, 0x30, 0xe3, 0xd6, 0xb6, 0x36,
|
||||
0xdd, 0x05, 0x4d, 0x7d, 0xad, 0x89, 0xe8, 0x03, 0xb8, 0xae, 0x6f, 0x66, 0x46, 0x1d, 0x69, 0xa9,
|
||||
0xb8, 0xf3, 0x44, 0x4b, 0x4c, 0xce, 0xa8, 0xab, 0x21, 0xf9, 0xe1, 0x5c, 0x2b, 0x1d, 0xce, 0x26,
|
||||
0xcc, 0xf3, 0xec, 0x54, 0x10, 0x61, 0xea, 0x96, 0xd2, 0x31, 0x99, 0x31, 0x5a, 0x85, 0xeb, 0x9a,
|
||||
0x31, 0xab, 0x18, 0x7a, 0x80, 0x1c, 0x58, 0x90, 0xc7, 0xe0, 0x91, 0xc4, 0x3b, 0x1d, 0x5a, 0x43,
|
||||
0x31, 0xe3, 0xb6, 0x24, 0xf1, 0x30, 0x79, 0x22, 0x49, 0xce, 0x1f, 0x00, 0x8a, 0xe5, 0xff, 0x2f,
|
||||
0xbe, 0xdb, 0xf9, 0x2b, 0x58, 0xa9, 0x29, 0xc6, 0xbc, 0x29, 0x64, 0x94, 0x56, 0xa4, 0x5a, 0xe4,
|
||||
0xd1, 0xe2, 0x17, 0xd9, 0x88, 0x20, 0xe7, 0x57, 0xb0, 0x5e, 0x5f, 0x94, 0x79, 0x73, 0x5c, 0xe7,
|
||||
0x7c, 0x02, 0xcb, 0x63, 0x85, 0x97, 0x37, 0x06, 0xb3, 0xdf, 0xc2, 0x52, 0xa5, 0xc0, 0x82, 0x6e,
|
||||
0x01, 0x98, 0x62, 0x8c, 0x97, 0xc7, 0x9d, 0x4d, 0x43, 0x39, 0x0c, 0xe5, 0x49, 0xa9, 0xfa, 0x8b,
|
||||
0x56, 0xf6, 0xc2, 0xac, 0x2c, 0x14, 0xd4, 0x57, 0x2c, 0x72, 0xbe, 0x80, 0xd5, 0xba, 0x62, 0xcb,
|
||||
0x5b, 0x7c, 0xc7, 0x3f, 0x5f, 0x83, 0xd5, 0xba, 0x42, 0x1a, 0x7a, 0x0e, 0x77, 0xf9, 0x05, 0x49,
|
||||
0xbd, 0x94, 0x91, 0xd8, 0x67, 0x26, 0xec, 0xf2, 0xf2, 0xd2, 0x1c, 0xc3, 0xda, 0x1f, 0xe9, 0xa0,
|
||||
0x64, 0x47, 0x42, 0x4f, 0x34, 0x52, 0x45, 0x60, 0x56, 0xa4, 0x81, 0xa1, 0xd7, 0xf0, 0xbe, 0xcc,
|
||||
0x64, 0xea, 0x85, 0xf9, 0xdc, 0x63, 0xf8, 0x3c, 0x8b, 0x7c, 0xa6, 0x6b, 0x98, 0x3a, 0xc0, 0xb8,
|
||||
0xcb, 0xb1, 0xa8, 0x11, 0xb9, 0xcb, 0x5d, 0x8d, 0x55, 0x91, 0x4b, 0x0f, 0xee, 0x85, 0x34, 0x31,
|
||||
0x39, 0x78, 0x4a, 0xd3, 0x2c, 0x92, 0xe9, 0xa3, 0x5d, 0xc6, 0x2e, 0x40, 0x92, 0x33, 0x6a, 0x4c,
|
||||
0xa3, 0x23, 0xe1, 0x32, 0xe3, 0x3e, 0x31, 0x60, 0xb3, 0x84, 0x91, 0xae, 0xde, 0xf2, 0x2f, 0x61,
|
||||
0x43, 0x45, 0xd1, 0xb5, 0x62, 0xae, 0xeb, 0xc0, 0x53, 0x02, 0xea, 0xa7, 0x56, 0x67, 0x9d, 0x65,
|
||||
0x51, 0xa4, 0x83, 0x4d, 0xad, 0x62, 0xeb, 0xe9, 0xc8, 0xb4, 0x67, 0x59, 0x14, 0xa9, 0x98, 0xb3,
|
||||
0x66, 0xaa, 0x2a, 0x10, 0xab, 0xa9, 0x73, 0x75, 0x53, 0xe5, 0x09, 0xa8, 0xa9, 0xdf, 0xc1, 0x86,
|
||||
0x3a, 0x00, 0x73, 0xac, 0xaa, 0x14, 0x61, 0x64, 0x58, 0xa3, 0x51, 0xaa, 0x73, 0xc8, 0xaf, 0xd7,
|
||||
0x27, 0x2a, 0x81, 0x46, 0x16, 0x77, 0xd7, 0xfd, 0x5a, 0xba, 0xf3, 0x77, 0x0d, 0x58, 0xaf, 0x9f,
|
||||
0x22, 0x1f, 0x2f, 0xef, 0x53, 0x26, 0xca, 0xb1, 0x74, 0x53, 0x51, 0xd4, 0xb6, 0xb6, 0xa0, 0x59,
|
||||
0x7c, 0xfc, 0xb4, 0x89, 0xe2, 0xec, 0xe7, 0xde, 0x85, 0x05, 0x1b, 0x01, 0x7b, 0x7d, 0x9f, 0xf7,
|
||||
0x55, 0xb0, 0xd5, 0x76, 0xdb, 0x96, 0x78, 0xe0, 0xf3, 0x3e, 0x5a, 0x87, 0xd9, 0x3e, 0x09, 0x43,
|
||||
0x9c, 0x98, 0xdb, 0x33, 0x23, 0x87, 0x41, 0xbb, 0x5c, 0x0d, 0x7c, 0xeb, 0xd8, 0x6f, 0x0b, 0x9a,
|
||||
0xaa, 0x3c, 0x58, 0xd2, 0xa4, 0x79, 0x45, 0x90, 0xde, 0xf9, 0x16, 0x80, 0x66, 0xaa, 0x1e, 0x98,
|
||||
0x8e, 0x3a, 0x35, 0xfc, 0xe5, 0x30, 0xc5, 0xce, 0x10, 0x5a, 0xa5, 0x1a, 0x62, 0x05, 0xdd, 0xa8,
|
||||
0xa0, 0xeb, 0x76, 0x34, 0x5d, 0xb7, 0x23, 0x79, 0x0c, 0xd2, 0xdc, 0x71, 0x21, 0x03, 0x28, 0x12,
|
||||
0x9a, 0x75, 0xdb, 0x05, 0xf1, 0x30, 0x74, 0x7e, 0x09, 0xf3, 0xb6, 0x0c, 0x89, 0x3e, 0x2a, 0x15,
|
||||
0x2b, 0xb5, 0x8b, 0x5d, 0x1e, 0x2b, 0x56, 0x16, 0x95, 0x4a, 0xe7, 0xe7, 0x79, 0x98, 0x33, 0x54,
|
||||
0xe9, 0x1b, 0xa4, 0x93, 0xb0, 0x8e, 0x53, 0xfe, 0x46, 0x5f, 0xe6, 0xdd, 0x9c, 0xfc, 0x96, 0x6a,
|
||||
0x9a, 0x42, 0xf2, 0xc6, 0xac, 0x6c, 0xd3, 0xd2, 0x51, 0x97, 0xf8, 0x18, 0xe6, 0xfb, 0x94, 0x0b,
|
||||
0x35, 0x75, 0xa6, 0x5a, 0x97, 0x38, 0x30, 0x9c, 0x7c, 0x53, 0x16, 0x8a, 0x9e, 0xc0, 0xc2, 0x80,
|
||||
0xca, 0x35, 0x19, 0xf5, 0x63, 0x92, 0x9c, 0x9b, 0xb6, 0x5d, 0xa9, 0xc6, 0xf7, 0x5a, 0xb2, 0x5d,
|
||||
0xcd, 0xb5, 0xf3, 0xdb, 0x83, 0x12, 0x11, 0x7d, 0x03, 0x1d, 0x79, 0x46, 0x34, 0xf1, 0x23, 0xaf,
|
||||
0x4f, 0x05, 0x4f, 0xa9, 0x30, 0x4d, 0xb9, 0xd2, 0x53, 0x3f, 0x31, 0x88, 0x03, 0x0d, 0xb0, 0x92,
|
||||
0x96, 0xd2, 0x51, 0x3a, 0xfa, 0x02, 0x9a, 0x97, 0x7e, 0x14, 0xa5, 0x7e, 0x8a, 0x99, 0x09, 0xb1,
|
||||
0x4b, 0x75, 0xb6, 0x6f, 0x2d, 0xcb, 0xce, 0x2f, 0xc0, 0xe8, 0x2f, 0xa0, 0xad, 0x12, 0x59, 0xfb,
|
||||
0x25, 0x73, 0xd5, 0x8a, 0x8a, 0xcc, 0x66, 0x2b, 0x1f, 0xd2, 0x0a, 0x0b, 0x9a, 0x5c, 0xfa, 0x34,
|
||||
0xca, 0xb0, 0xa0, 0x54, 0xf4, 0x4d, 0x33, 0xad, 0xb4, 0xf4, 0x13, 0xcb, 0xca, 0x97, 0xce, 0xc1,
|
||||
0xe8, 0xf7, 0xb0, 0x7e, 0x45, 0x0d, 0xb8, 0x59, 0x0d, 0xeb, 0x6b, 0x43, 0x60, 0x2b, 0x72, 0xcd,
|
||||
0xaf, 0x2d, 0xfd, 0x7e, 0x09, 0xad, 0x38, 0x8c, 0x3d, 0x9b, 0x0b, 0x41, 0xf5, 0x65, 0x1c, 0xed,
|
||||
0x1f, 0x99, 0xb8, 0x3d, 0x7f, 0x19, 0x71, 0x18, 0xdb, 0x50, 0x1e, 0xc3, 0xa6, 0x6d, 0xf3, 0xa9,
|
||||
0x52, 0x93, 0x77, 0xce, 0xfc, 0x00, 0x7b, 0x29, 0x66, 0x84, 0x86, 0xa6, 0xef, 0x76, 0xbf, 0x74,
|
||||
0x51, 0x06, 0xfb, 0x9c, 0x06, 0x17, 0xbf, 0x91, 0xc8, 0x13, 0x05, 0xb4, 0x92, 0x6f, 0xa4, 0xf5,
|
||||
0x7c, 0xf4, 0x1d, 0xac, 0xc7, 0xfe, 0x0f, 0x24, 0xce, 0x62, 0x99, 0x2b, 0x2b, 0xc7, 0xa6, 0xac,
|
||||
0xa6, 0x6d, 0xca, 0xbd, 0x5b, 0x8e, 0x62, 0x15, 0xce, 0x35, 0x30, 0x69, 0x3c, 0xf3, 0x9d, 0xaf,
|
||||
0xc6, 0x35, 0x4c, 0xf4, 0x3b, 0x58, 0x0b, 0x89, 0x7f, 0x9e, 0x50, 0x2e, 0x48, 0xe0, 0xf1, 0xec,
|
||||
0x34, 0x26, 0x5c, 0x45, 0x2b, 0x0b, 0x55, 0xd9, 0xfb, 0x39, 0xac, 0x97, 0xa3, 0x72, 0xd9, 0x61,
|
||||
0x0d, 0x53, 0xaa, 0x80, 0x9f, 0xa6, 0x9e, 0x9f, 0xf8, 0xd1, 0x50, 0x90, 0x80, 0x9b, 0xc6, 0xdd,
|
||||
0x68, 0x1f, 0x6a, 0xd7, 0x72, 0x73, 0x15, 0xf0, 0x4b, 0x44, 0x74, 0x06, 0x1b, 0x57, 0x77, 0x1f,
|
||||
0x96, 0xaa, 0x89, 0xe2, 0x55, 0x99, 0x92, 0x95, 0xdd, 0xf5, 0xaf, 0x6a, 0x3a, 0x7c, 0x06, 0x4d,
|
||||
0x41, 0x62, 0xec, 0xfd, 0x48, 0x13, 0x6c, 0x3a, 0x7b, 0x25, 0x35, 0x7f, 0x49, 0x62, 0xfc, 0x3b,
|
||||
0x9a, 0x14, 0x6a, 0x2e, 0x0c, 0xc1, 0x79, 0x08, 0x2b, 0x35, 0x7a, 0x2c, 0x23, 0x69, 0xdd, 0x44,
|
||||
0x0c, 0x4d, 0xf4, 0x60, 0x87, 0xce, 0x23, 0x58, 0xaf, 0xd7, 0xd8, 0x09, 0x73, 0xfe, 0x1c, 0x3a,
|
||||
0x55, 0xfd, 0x94, 0x41, 0x2d, 0x89, 0x6d, 0xe1, 0xa1, 0xed, 0xea, 0x81, 0xa4, 0x5e, 0xf6, 0x31,
|
||||
0xb3, 0x09, 0x82, 0x1e, 0x38, 0x0f, 0x00, 0x8d, 0xab, 0xe8, 0x84, 0xf5, 0x3e, 0x84, 0x4e, 0x55,
|
||||
0x29, 0x27, 0xa0, 0xff, 0xbe, 0x01, 0x37, 0x27, 0x29, 0xdf, 0x1b, 0x83, 0xd9, 0xd7, 0x57, 0x2a,
|
||||
0xb9, 0x36, 0xd5, 0x3b, 0x6f, 0x50, 0xf2, 0x2b, 0xb4, 0xdb, 0xf9, 0xeb, 0x06, 0xec, 0xbc, 0xe1,
|
||||
0x45, 0xbc, 0x71, 0x6f, 0x4f, 0xe0, 0xd6, 0xc8, 0x9b, 0xf3, 0x42, 0x5d, 0x8f, 0x92, 0x21, 0x4c,
|
||||
0x9e, 0xd7, 0xb5, 0xdd, 0xad, 0x11, 0xd0, 0x7e, 0x8e, 0x91, 0xc7, 0xee, 0x3c, 0x82, 0xb5, 0xfa,
|
||||
0xce, 0xd3, 0x06, 0xcc, 0x0f, 0xd2, 0xa4, 0xfc, 0x5f, 0x97, 0xb9, 0x41, 0x9a, 0xbc, 0xca, 0x48,
|
||||
0xe8, 0x7c, 0x6a, 0xeb, 0xa4, 0x25, 0xb7, 0x24, 0x13, 0xb8, 0xb2, 0x23, 0x33, 0xbb, 0x2d, 0x7c,
|
||||
0x95, 0xf3, 0x00, 0x96, 0x2a, 0x4f, 0x55, 0x86, 0x03, 0xc5, 0xc3, 0x36, 0x85, 0xaf, 0xfc, 0xf5,
|
||||
0x7e, 0x04, 0x4b, 0x15, 0x0f, 0x26, 0x13, 0xa9, 0xdc, 0xdd, 0x19, 0xb8, 0x1d, 0x3b, 0xbf, 0x85,
|
||||
0xe5, 0x31, 0x8b, 0x88, 0x1e, 0x8f, 0xda, 0xd0, 0x46, 0xb5, 0x39, 0x5f, 0xcc, 0x28, 0x1b, 0x4f,
|
||||
0xe7, 0x6f, 0xa7, 0x01, 0x0a, 0x16, 0x7a, 0x0d, 0xf7, 0x55, 0xb7, 0xc4, 0x74, 0x97, 0xa5, 0x35,
|
||||
0x55, 0x45, 0x4f, 0x1c, 0x7a, 0x97, 0x7d, 0x12, 0x61, 0x8f, 0x67, 0x29, 0x66, 0x03, 0xc2, 0xf3,
|
||||
0xf7, 0xf7, 0x4e, 0x81, 0x97, 0x16, 0x73, 0x57, 0xa3, 0xbf, 0x95, 0xe0, 0x5e, 0x8e, 0x45, 0x9f,
|
||||
0xc1, 0x8d, 0x4a, 0xa7, 0xc2, 0xca, 0x35, 0x21, 0xf8, 0xda, 0xe9, 0x48, 0x3f, 0xc2, 0x88, 0x41,
|
||||
0xdf, 0xc3, 0xe7, 0x29, 0xa3, 0x71, 0x6a, 0x02, 0x54, 0x41, 0xf5, 0xb4, 0x6a, 0xdb, 0xc3, 0x3b,
|
||||
0xa3, 0x4c, 0x06, 0xe6, 0x7d, 0xf9, 0x60, 0x4c, 0xbb, 0x45, 0x97, 0x6d, 0x3f, 0xd6, 0xd3, 0xa5,
|
||||
0x95, 0x7d, 0x49, 0x95, 0xd4, 0xd1, 0xc6, 0xc7, 0x33, 0xca, 0x76, 0x47, 0xe6, 0x39, 0xbf, 0x87,
|
||||
0xed, 0xc9, 0x2e, 0x02, 0xfd, 0x7a, 0xa2, 0xc3, 0xd1, 0xd1, 0xe0, 0x55, 0x6e, 0xc4, 0xe9, 0xc1,
|
||||
0xd6, 0x04, 0xf7, 0x80, 0x3e, 0xbd, 0xd2, 0xcb, 0x68, 0xb9, 0xb5, 0xee, 0xc3, 0xf9, 0x1c, 0xb6,
|
||||
0x26, 0xf8, 0x85, 0x09, 0x46, 0xe3, 0xa1, 0xca, 0x7b, 0xab, 0xc6, 0x7f, 0xc2, 0x84, 0x3d, 0xd8,
|
||||
0x79, 0x43, 0x6f, 0xf9, 0x2d, 0x32, 0xc1, 0xaf, 0xe1, 0xe6, 0xa4, 0x56, 0xf1, 0x5b, 0x48, 0x38,
|
||||
0x87, 0xcd, 0xab, 0xdb, 0xbf, 0x6f, 0xd1, 0x2b, 0xb9, 0x07, 0x4b, 0xe6, 0xaf, 0x2c, 0x79, 0x7f,
|
||||
0x59, 0xbf, 0xc3, 0x45, 0x4d, 0xb6, 0xa2, 0x9c, 0xff, 0x68, 0xc0, 0x4a, 0x4d, 0x17, 0x18, 0xbd,
|
||||
0x0f, 0x9d, 0x20, 0x63, 0x4c, 0x5e, 0x4f, 0x5e, 0x6d, 0x37, 0x15, 0x7e, 0x43, 0xcf, 0xa1, 0x77,
|
||||
0xa0, 0x9d, 0xe0, 0xcb, 0x02, 0x66, 0xaa, 0x75, 0x09, 0xbe, 0xcc, 0x21, 0x3b, 0xd0, 0xd2, 0xef,
|
||||
0x9a, 0x32, 0x1a, 0x73, 0xf3, 0x74, 0x41, 0x91, 0x8e, 0x25, 0x05, 0x3d, 0x85, 0x1d, 0xfb, 0x97,
|
||||
0x22, 0x53, 0x80, 0xe3, 0x5e, 0x82, 0xc5, 0x25, 0x65, 0x17, 0x9e, 0xc0, 0xa2, 0x8f, 0x99, 0x49,
|
||||
0x5b, 0x6e, 0x1a, 0x98, 0x29, 0xc0, 0xf1, 0x17, 0x1a, 0xf4, 0x52, 0x61, 0x9c, 0x4f, 0x61, 0xbd,
|
||||
0xbe, 0xf5, 0x3c, 0xd2, 0x35, 0x68, 0x54, 0xba, 0x06, 0x7f, 0x6c, 0xc0, 0x52, 0xa5, 0xf3, 0xf7,
|
||||
0xff, 0xf4, 0xfb, 0x3f, 0x06, 0x34, 0xde, 0x76, 0x9c, 0xf8, 0xed, 0xc7, 0xb0, 0x5a, 0xd7, 0x4f,
|
||||
0x97, 0x09, 0xce, 0x79, 0xa9, 0x7d, 0x27, 0x7f, 0x8f, 0xe7, 0x99, 0xd3, 0xe3, 0x79, 0xa6, 0x0c,
|
||||
0x22, 0xaa, 0xbd, 0x6f, 0xf4, 0x01, 0xcc, 0xe9, 0x66, 0xb9, 0xcd, 0xb3, 0x3a, 0xa5, 0xff, 0x66,
|
||||
0x29, 0x86, 0x6b, 0x01, 0xce, 0x10, 0x66, 0xcd, 0xac, 0x1d, 0x68, 0xa5, 0x8c, 0x86, 0x59, 0xa0,
|
||||
0x5b, 0xd7, 0xc6, 0x0d, 0x19, 0xd2, 0x37, 0x78, 0xa8, 0x6a, 0xdc, 0x06, 0x30, 0x5a, 0xfc, 0x5a,
|
||||
0x34, 0x64, 0x5b, 0xf5, 0x53, 0xa5, 0x1f, 0xf3, 0xcf, 0xaa, 0x20, 0x37, 0x9e, 0xaa, 0xf4, 0xa3,
|
||||
0xcb, 0xda, 0x8a, 0xe8, 0x7c, 0x08, 0xab, 0x75, 0x6d, 0x7b, 0x19, 0xed, 0xa8, 0x0e, 0x8d, 0xb1,
|
||||
0x15, 0x7a, 0xe0, 0x3c, 0x07, 0x34, 0xde, 0x8e, 0x97, 0x8e, 0xe0, 0x8c, 0x44, 0x02, 0xb3, 0xa2,
|
||||
0x8f, 0xef, 0xa5, 0x94, 0x24, 0xc2, 0xaa, 0xe9, 0x9a, 0x66, 0xe7, 0x53, 0x4e, 0x14, 0xd3, 0xf9,
|
||||
0x53, 0x03, 0xd0, 0x78, 0x2f, 0x5e, 0xba, 0xee, 0x0b, 0x3c, 0x2c, 0x27, 0xc6, 0x73, 0x17, 0x78,
|
||||
0xa8, 0xd2, 0xe2, 0x7d, 0xe8, 0x14, 0xbd, 0x7d, 0xdd, 0x98, 0x34, 0x81, 0x4c, 0x29, 0xa2, 0xcc,
|
||||
0x85, 0xe9, 0x9e, 0x96, 0xbb, 0x94, 0x4f, 0xd1, 0x04, 0x79, 0x86, 0xf2, 0xf1, 0x06, 0x98, 0x49,
|
||||
0xd3, 0x11, 0xf8, 0xa6, 0x49, 0xd4, 0x76, 0x17, 0x13, 0x7c, 0xb9, 0x57, 0x50, 0xd1, 0xd7, 0x70,
|
||||
0x93, 0xe1, 0x34, 0x1a, 0x7a, 0x38, 0x09, 0xd8, 0xd0, 0x14, 0x04, 0x4b, 0xb3, 0xae, 0xa9, 0x59,
|
||||
0x9b, 0x0a, 0xf3, 0x34, 0x87, 0x94, 0x24, 0x38, 0xff, 0xd4, 0x80, 0xa5, 0xca, 0x7e, 0x26, 0x3d,
|
||||
0x4d, 0xdd, 0xe1, 0x94, 0xae, 0x17, 0xcb, 0xfb, 0xf7, 0xf0, 0x0f, 0x29, 0x65, 0xc2, 0xbc, 0xb9,
|
||||
0x8e, 0xe1, 0x7c, 0x83, 0x87, 0x4f, 0x15, 0x1d, 0x7d, 0x05, 0x5b, 0xe3, 0xe8, 0x42, 0x29, 0xf5,
|
||||
0x85, 0x77, 0xab, 0xd3, 0xec, 0x7b, 0x77, 0xbe, 0x84, 0xe5, 0xb1, 0x7f, 0x12, 0xc8, 0xc3, 0xa9,
|
||||
0xfe, 0xff, 0x40, 0x6f, 0x72, 0x71, 0xd4, 0x9b, 0x3b, 0xff, 0xd5, 0x80, 0x05, 0x17, 0xf3, 0x2c,
|
||||
0x12, 0xf6, 0x3f, 0xc6, 0x08, 0xae, 0x65, 0x61, 0xa9, 0xfd, 0x1d, 0x92, 0xf1, 0xff, 0x1d, 0x4f,
|
||||
0x8f, 0xff, 0xef, 0xf8, 0x31, 0xb4, 0x30, 0x63, 0x94, 0x79, 0x41, 0xdf, 0x27, 0xc9, 0x78, 0x95,
|
||||
0xfa, 0xa9, 0x64, 0xee, 0x49, 0x9e, 0x0b, 0x38, 0xff, 0xed, 0xf4, 0x60, 0xb6, 0x27, 0x7c, 0x91,
|
||||
0x71, 0xd4, 0x81, 0xf6, 0x6e, 0x70, 0x91, 0xd0, 0xcb, 0x08, 0x87, 0xe7, 0x38, 0xec, 0x4c, 0xa1,
|
||||
0x26, 0x5c, 0x57, 0xb3, 0x3a, 0x0d, 0xb4, 0x0e, 0xc8, 0xfc, 0x4f, 0xf9, 0x99, 0x6a, 0x8a, 0x6b,
|
||||
0xfa, 0x34, 0x9a, 0x87, 0x6b, 0x87, 0x61, 0x84, 0x3b, 0x33, 0x08, 0x60, 0xf6, 0x05, 0x15, 0x2f,
|
||||
0xe8, 0x65, 0xe7, 0x9a, 0xf3, 0xaf, 0x0d, 0x80, 0x62, 0x3d, 0xf4, 0x09, 0xac, 0x45, 0x34, 0xf0,
|
||||
0x23, 0xf2, 0x23, 0x0e, 0xbd, 0x10, 0xf3, 0x80, 0x91, 0x34, 0xaf, 0x5b, 0x36, 0xdd, 0xd5, 0x9c,
|
||||
0xb9, 0x5f, 0xf0, 0xa4, 0xbb, 0xcf, 0xb8, 0x87, 0x93, 0xf3, 0x88, 0xf0, 0xfe, 0xc8, 0x2c, 0xfd,
|
||||
0xf1, 0xab, 0x19, 0x7f, 0xaa, 0x99, 0xe5, 0x59, 0x77, 0xa0, 0xad, 0x4f, 0x21, 0xa4, 0xb1, 0x3e,
|
||||
0x06, 0x75, 0x50, 0x8a, 0xb6, 0xaf, 0x48, 0xe8, 0x16, 0x80, 0x39, 0x28, 0x1a, 0xea, 0xc7, 0x77,
|
||||
0xdd, 0x6d, 0xea, 0x13, 0xa1, 0x21, 0x7e, 0xd2, 0xf9, 0xf7, 0x9f, 0xb6, 0x1b, 0xff, 0xf9, 0xd3,
|
||||
0x76, 0xe3, 0x4f, 0x3f, 0x6d, 0x37, 0xfe, 0xf1, 0xbf, 0xb7, 0xa7, 0x4e, 0x67, 0xd5, 0x01, 0x7e,
|
||||
0xf2, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x86, 0xd1, 0xeb, 0x2d, 0x24, 0x2e, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *CommandPayload) Marshal() (dAtA []byte, err error) {
|
||||
@@ -8151,6 +8171,26 @@ func (m *MDMOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i -= len(m.XXX_unrecognized)
|
||||
copy(dAtA[i:], m.XXX_unrecognized)
|
||||
}
|
||||
if m.PromptUserToAllowBootstrapTokenForAuthentication {
|
||||
i--
|
||||
if m.PromptUserToAllowBootstrapTokenForAuthentication {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x18
|
||||
}
|
||||
if m.BootstrapTokenAllowed {
|
||||
i--
|
||||
if m.BootstrapTokenAllowed {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x10
|
||||
}
|
||||
if m.ActivationLockAllowedWhileSupervised {
|
||||
i--
|
||||
if m.ActivationLockAllowedWhileSupervised {
|
||||
@@ -10590,6 +10630,12 @@ func (m *MDMOptions) Size() (n int) {
|
||||
if m.ActivationLockAllowedWhileSupervised {
|
||||
n += 2
|
||||
}
|
||||
if m.BootstrapTokenAllowed {
|
||||
n += 2
|
||||
}
|
||||
if m.PromptUserToAllowBootstrapTokenForAuthentication {
|
||||
n += 2
|
||||
}
|
||||
if m.XXX_unrecognized != nil {
|
||||
n += len(m.XXX_unrecognized)
|
||||
}
|
||||
@@ -18394,6 +18440,46 @@ func (m *MDMOptions) Unmarshal(dAtA []byte) error {
|
||||
}
|
||||
}
|
||||
m.ActivationLockAllowedWhileSupervised = bool(v != 0)
|
||||
case 2:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field BootstrapTokenAllowed", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowMdm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.BootstrapTokenAllowed = bool(v != 0)
|
||||
case 3:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field PromptUserToAllowBootstrapTokenForAuthentication", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowMdm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.PromptUserToAllowBootstrapTokenForAuthentication = bool(v != 0)
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipMdm(dAtA[iNdEx:])
|
||||
|
||||
@@ -329,6 +329,8 @@ message MDMOptionsSetting {
|
||||
|
||||
message MDMOptions {
|
||||
bool activation_lock_allowed_while_supervised = 1;
|
||||
bool bootstrap_token_allowed = 2;
|
||||
bool prompt_user_to_allow_bootstrap_token_for_authentication = 3;
|
||||
}
|
||||
|
||||
message PasscodeLockGracePeriodSetting {
|
||||
@@ -422,7 +424,6 @@ message SetBootstrapToken {
|
||||
string bootstrap_token = 1;
|
||||
}
|
||||
|
||||
|
||||
message ResultPayload {
|
||||
enum Status {
|
||||
Acknowledged = 0;
|
||||
|
||||
@@ -367,15 +367,6 @@ func (c *Command) MarshalJSON() ([]byte, error) {
|
||||
RotateFileVaultKey: c.RotateFileVaultKey,
|
||||
}
|
||||
return json.Marshal(&x)
|
||||
case "SetBootstrapToken":
|
||||
var x = struct {
|
||||
RequestType string `json:"request_type"`
|
||||
*SetBootstrapToken
|
||||
}{
|
||||
RequestType: c.RequestType,
|
||||
SetBootstrapToken: c.SetBootstrapToken,
|
||||
}
|
||||
return json.Marshal(&x)
|
||||
default:
|
||||
return nil, fmt.Errorf("mdm: unknown RequestType: %s", c.RequestType)
|
||||
}
|
||||
|
||||
@@ -343,14 +343,6 @@ func (c *Command) MarshalPlist() (interface{}, error) {
|
||||
RequestType: c.RequestType,
|
||||
RotateFileVaultKey: c.RotateFileVaultKey,
|
||||
}, nil
|
||||
case "SetBootstrapToken":
|
||||
return &struct {
|
||||
RequestType string
|
||||
*SetBootstrapToken
|
||||
}{
|
||||
RequestType: c.RequestType,
|
||||
SetBootstrapToken: c.SetBootstrapToken,
|
||||
}, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("mdm: unknown command RequestType, %s", c.RequestType)
|
||||
}
|
||||
|
||||
@@ -341,12 +341,6 @@ func commandToProto(cmd *Command) (*mdmproto.Command, error) {
|
||||
RequestRequiresNetworkTether: cmd.SetRecoveryLock.RequestRequiresNetworkTether,
|
||||
},
|
||||
}
|
||||
case "SetBootstrapToken":
|
||||
cmdproto.Request = &mdmproto.Command_SetBootstrapToken{
|
||||
SetBootstrapToken: &mdmproto.SetBootstrapToken{
|
||||
BootstrapToken: cmd.SetBootstrapToken.BootstrapToken,
|
||||
},
|
||||
}
|
||||
case "VerifyFirmwarePassword":
|
||||
cmdproto.Request = &mdmproto.Command_VerifyFirmwarePassword{
|
||||
VerifyFirmwarePassword: &mdmproto.VerifyFirmwarePassword{
|
||||
@@ -466,6 +460,12 @@ func settingToProto(s Setting) *mdmproto.Setting {
|
||||
if v, ok := s.MDMOptions["ActivationLockAllowedWhileSupervised"]; ok {
|
||||
options.ActivationLockAllowedWhileSupervised = v.(bool)
|
||||
}
|
||||
if v, ok := s.MDMOptions["BootstrapTokenAllowed"]; ok {
|
||||
options.BootstrapTokenAllowed = v.(bool)
|
||||
}
|
||||
if v, ok := s.MDMOptions["PromptUserToAllowBootstrapTokenForAuthentication"]; ok {
|
||||
options.PromptUserToAllowBootstrapTokenForAuthentication = v.(bool)
|
||||
}
|
||||
pbs.MdmOptions = &mdmproto.MDMOptionsSetting{
|
||||
MdmOptions: options,
|
||||
}
|
||||
|
||||
@@ -313,13 +313,6 @@ func (c *Command) UnmarshalJSON(data []byte) error {
|
||||
}
|
||||
c.RotateFileVaultKey = &payload
|
||||
return nil
|
||||
case "SetBootstrapToken":
|
||||
var payload SetBootstrapToken
|
||||
if err := json.Unmarshal(data, &payload); err != nil {
|
||||
return errors.Wrapf(err, "mdm: unmarshal %s command json", c.RequestType)
|
||||
}
|
||||
c.SetBootstrapToken = &payload
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("mdm: unknown RequestType: %s", c.RequestType)
|
||||
}
|
||||
|
||||
@@ -297,13 +297,6 @@ func (c *Command) UnmarshalPlist(unmarshal func(i interface{}) error) error {
|
||||
}
|
||||
c.RotateFileVaultKey = &payload
|
||||
return nil
|
||||
case "SetBootstrapToken":
|
||||
var payload SetBootstrapToken
|
||||
if err := unmarshal(&payload); err != nil {
|
||||
return errors.Wrapf(err, "mdm: unmarshal %s command plist", requestType.RequestType)
|
||||
}
|
||||
c.SetBootstrapToken = &payload
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("mdm: unknown RequestType: %s", requestType.RequestType)
|
||||
}
|
||||
|
||||
@@ -301,11 +301,6 @@ func protoToCommand(pb *mdmproto.Command) *Command {
|
||||
AllowOroms: pbc.GetAllowOroms(),
|
||||
RequestRequiresNetworkTether: pbc.GetRequestRequiresNetworkTether(),
|
||||
}
|
||||
case "SetBootstrapToken":
|
||||
pbc := pb.GetSetBootstrapToken()
|
||||
cmd.SetBootstrapToken = &SetBootstrapToken{
|
||||
BootstrapToken: pbc.GetBootstrapToken(),
|
||||
}
|
||||
case "SetRecoveryLock":
|
||||
pbc := pb.GetSetRecoveryLock()
|
||||
cmd.SetRecoveryLock = &SetRecoveryLock{
|
||||
@@ -415,9 +410,13 @@ func protoToSetting(s *mdmproto.Setting) Setting {
|
||||
case "MDMOptions":
|
||||
pbs := s.GetMdmOptions()
|
||||
activationLockAllowed := pbs.GetMdmOptions().GetActivationLockAllowedWhileSupervised()
|
||||
bootstrapTokenAllowed := pbs.GetMdmOptions().GetBootstrapTokenAllowed()
|
||||
promptUserToAllowBootstrapToken := pbs.GetMdmOptions().GetPromptUserToAllowBootstrapTokenForAuthentication()
|
||||
setting.MDMOptions = map[string]interface {
|
||||
}{
|
||||
"ActivationLockAllowedWhileSupervised": activationLockAllowed,
|
||||
"ActivationLockAllowedWhileSupervised": activationLockAllowed,
|
||||
"BootstrapTokenAllowed": bootstrapTokenAllowed,
|
||||
"PromptUserToAllowBootstrapTokenForAuthentication": promptUserToAllowBootstrapToken,
|
||||
}
|
||||
case "PasscodeLockGracePeriod":
|
||||
pbs := s.GetPasscodeLockGracePeriod()
|
||||
|
||||
@@ -21,12 +21,20 @@ type Service interface {
|
||||
type Middleware func(Service) Service
|
||||
|
||||
const (
|
||||
ConnectTopic = "mdm.Connect"
|
||||
AuthenticateTopic = "mdm.Authenticate"
|
||||
TokenUpdateTopic = "mdm.TokenUpdate"
|
||||
CheckoutTopic = "mdm.CheckOut"
|
||||
ConnectTopic = "mdm.Connect"
|
||||
AuthenticateTopic = "mdm.Authenticate"
|
||||
TokenUpdateTopic = "mdm.TokenUpdate"
|
||||
CheckoutTopic = "mdm.CheckOut"
|
||||
GetBootstrapTokenTopic = "mdm.GetBootstrapToken"
|
||||
SetBootstrapTokenTopic = "mdm.SetBootstrapToken"
|
||||
)
|
||||
|
||||
// BootBootstrapTokenRetriever retrieves BootStrap Tokens for devices
|
||||
type BootstrapTokenRetriever interface {
|
||||
// GetBootstrapToken returns the Bootstrap Token for the device by udid
|
||||
GetBootstrapToken(ctx context.Context, udid string) ([]byte, error)
|
||||
}
|
||||
|
||||
// Queue is an MDM Command Queue.
|
||||
type Queue interface {
|
||||
Next(context.Context, Response) ([]byte, error)
|
||||
@@ -34,12 +42,14 @@ type Queue interface {
|
||||
}
|
||||
|
||||
type MDMService struct {
|
||||
dev BootstrapTokenRetriever
|
||||
pub pubsub.Publisher
|
||||
queue Queue
|
||||
}
|
||||
|
||||
func NewService(pub pubsub.Publisher, queue Queue) *MDMService {
|
||||
func NewService(pub pubsub.Publisher, queue Queue, dev BootstrapTokenRetriever) *MDMService {
|
||||
return &MDMService{
|
||||
dev: dev,
|
||||
pub: pub,
|
||||
queue: queue,
|
||||
}
|
||||
|
||||
@@ -46,6 +46,15 @@ func NewDB(db *bolt.DB) (*DB, error) {
|
||||
return datastore, nil
|
||||
}
|
||||
|
||||
// GetBootstrapToken returns the Bootstrap Token for the device by udid
|
||||
func (db *DB) GetBootstrapToken(ctx context.Context, udid string) ([]byte, error) {
|
||||
d, err := db.DeviceByUDID(ctx, udid)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "lookup device by uuid")
|
||||
}
|
||||
return []byte(d.BootstrapToken), nil
|
||||
}
|
||||
|
||||
func (db *DB) List(ctx context.Context, opt device.ListDevicesOption) ([]device.Device, error) {
|
||||
var devices []device.Device
|
||||
err := db.View(func(tx *bolt.Tx) error {
|
||||
|
||||
@@ -66,6 +66,29 @@ func TestSave(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestGetBootstrapToken(t *testing.T) {
|
||||
db := setupDB(t)
|
||||
dev := &device.Device{
|
||||
UUID: "a-b-c-d",
|
||||
UDID: "UDID-FOO-BAR-BAZ",
|
||||
BootstrapToken: "bootstrap",
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
if err := db.Save(ctx, dev); err != nil {
|
||||
t.Fatalf("saving device in datastore: %s", err)
|
||||
}
|
||||
|
||||
haveDev, err := db.DeviceByUDID(ctx, dev.UDID)
|
||||
if err != nil {
|
||||
t.Fatalf("getting device by UDID: %s", err)
|
||||
}
|
||||
|
||||
if have, want := haveDev.BootstrapToken, dev.BootstrapToken; have != want {
|
||||
t.Errorf("have %s, want %s", have, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteByUDID(t *testing.T) {
|
||||
db := setupDB(t)
|
||||
dev := &device.Device{
|
||||
|
||||
@@ -38,6 +38,7 @@ type Device struct {
|
||||
DEPProfileAssignedDate time.Time `db:"dep_profile_assigned_date"`
|
||||
DEPProfileAssignedBy string `db:"dep_profile_assigned_by"`
|
||||
LastSeen time.Time `db:"last_seen"`
|
||||
BootstrapToken string `db:"bootstrap_token"`
|
||||
}
|
||||
|
||||
// DEPProfileStatus is the status of the DEP Profile
|
||||
@@ -80,6 +81,7 @@ func MarshalDevice(dev *Device) ([]byte, error) {
|
||||
DepProfileAssignedDate: timeToNano(dev.DEPProfileAssignedDate),
|
||||
DepProfileAssignedBy: dev.DEPProfileAssignedBy,
|
||||
LastSeen: timeToNano(dev.LastSeen),
|
||||
BootstrapToken: dev.BootstrapToken,
|
||||
}
|
||||
return proto.Marshal(&protodev)
|
||||
}
|
||||
@@ -115,6 +117,7 @@ func UnmarshalDevice(data []byte, dev *Device) error {
|
||||
dev.DEPProfileAssignedDate = timeFromNano(pb.GetDepProfileAssignedDate())
|
||||
dev.DEPProfileAssignedBy = pb.GetDepProfileAssignedBy()
|
||||
dev.LastSeen = timeFromNano(pb.GetLastSeen())
|
||||
dev.BootstrapToken = pb.GetBootstrapToken()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// Code generated by protoc-gen-go.
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// source: device.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
/*
|
||||
Package deviceproto is a generated protocol buffer package.
|
||||
@@ -58,6 +57,7 @@ type Device struct {
|
||||
DepProfileAssignedBy string `protobuf:"bytes,27,opt,name=dep_profile_assigned_by,json=depProfileAssignedBy" json:"dep_profile_assigned_by,omitempty"`
|
||||
LastSeen int64 `protobuf:"varint,28,opt,name=last_seen,json=lastSeen" json:"last_seen,omitempty"`
|
||||
LastQueryResponse []byte `protobuf:"bytes,29,opt,name=last_query_response,json=lastQueryResponse,proto3" json:"last_query_response,omitempty"`
|
||||
BootstrapToken string `protobuf:"bytes,30,opt,name=bootstrap_token,json=bootstrapToken" json:"bootstrap_token,omitempty"`
|
||||
}
|
||||
|
||||
func (m *Device) Reset() { *m = Device{} }
|
||||
@@ -268,6 +268,13 @@ func (m *Device) GetLastQueryResponse() []byte {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Device) GetBootstrapToken() string {
|
||||
if m != nil {
|
||||
return m.BootstrapToken
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*Device)(nil), "deviceproto.Device")
|
||||
}
|
||||
@@ -275,40 +282,41 @@ func init() {
|
||||
func init() { proto.RegisterFile("device.proto", fileDescriptor0) }
|
||||
|
||||
var fileDescriptor0 = []byte{
|
||||
// 557 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x94, 0x41, 0x4f, 0x1b, 0x31,
|
||||
0x10, 0x85, 0x95, 0x02, 0x21, 0x71, 0x02, 0x0d, 0x26, 0x09, 0x03, 0x14, 0x35, 0x6d, 0x2f, 0x39,
|
||||
0x54, 0x48, 0x55, 0xc5, 0xa1, 0xc7, 0xb6, 0x5c, 0x8b, 0x68, 0x48, 0x7b, 0xb5, 0x9c, 0xf5, 0xb0,
|
||||
0x58, 0xac, 0xed, 0xad, 0xed, 0xa5, 0xca, 0x2f, 0xef, 0xb5, 0xf2, 0x38, 0x90, 0xa8, 0xf4, 0xe6,
|
||||
0xf9, 0xde, 0xbc, 0xf1, 0xcc, 0xac, 0xb5, 0xac, 0xaf, 0xf0, 0x41, 0x17, 0x78, 0x5e, 0x7b, 0x17,
|
||||
0x1d, 0xef, 0xe5, 0x88, 0x82, 0xb7, 0x7f, 0x76, 0x59, 0xfb, 0x92, 0x62, 0xce, 0xd9, 0x76, 0xd3,
|
||||
0x68, 0x05, 0xad, 0x49, 0x6b, 0xda, 0x9d, 0xd1, 0x99, 0x98, 0xd2, 0x0a, 0x5e, 0xac, 0x98, 0xd2,
|
||||
0x8a, 0xbf, 0x63, 0x7b, 0x01, 0xbd, 0x96, 0x95, 0xb0, 0x8d, 0x59, 0xa0, 0x87, 0x2d, 0x12, 0xfb,
|
||||
0x19, 0x5e, 0x11, 0xe3, 0x67, 0x8c, 0xb9, 0x20, 0x1e, 0xd0, 0x07, 0xed, 0x2c, 0x6c, 0x53, 0x46,
|
||||
0xd7, 0x85, 0x9f, 0x19, 0xa4, 0x1a, 0x8b, 0x46, 0x57, 0xea, 0x29, 0x63, 0x27, 0xd7, 0x20, 0xf8,
|
||||
0x98, 0xf4, 0x86, 0xf5, 0x6b, 0xef, 0x54, 0x53, 0x44, 0x61, 0xa5, 0x41, 0x68, 0x53, 0x4e, 0x6f,
|
||||
0xc5, 0xae, 0xa4, 0xa1, 0x9e, 0xb5, 0x41, 0x0d, 0xbb, 0xb9, 0xbf, 0x74, 0x4e, 0xcc, 0xa0, 0x56,
|
||||
0xd0, 0xc9, 0x2c, 0x9d, 0xf9, 0x90, 0xed, 0x44, 0x77, 0x8f, 0x16, 0xba, 0x04, 0x73, 0x90, 0x9a,
|
||||
0xac, 0x9b, 0x70, 0x27, 0x8c, 0x2c, 0x75, 0x01, 0x2c, 0x37, 0x99, 0xc8, 0xb7, 0x04, 0xf8, 0x29,
|
||||
0xeb, 0x1a, 0x65, 0x44, 0x74, 0xb5, 0x2e, 0xa0, 0x47, 0x6a, 0xc7, 0x28, 0x33, 0x4f, 0x71, 0x6a,
|
||||
0xae, 0xb1, 0x95, 0x2b, 0xee, 0x45, 0x2e, 0xdc, 0xcf, 0xcd, 0x65, 0x36, 0xa7, 0xf2, 0x27, 0xac,
|
||||
0x83, 0xd6, 0xbb, 0xaa, 0x42, 0x05, 0x7b, 0x93, 0xd6, 0xb4, 0x33, 0x7b, 0x8a, 0xf9, 0x05, 0x1b,
|
||||
0xcb, 0xdf, 0x52, 0x47, 0x6d, 0x4b, 0x51, 0x38, 0x7b, 0xab, 0xcb, 0xc6, 0xcb, 0x98, 0x36, 0xb1,
|
||||
0x4f, 0x99, 0xa3, 0x47, 0xf5, 0xeb, 0xa6, 0xc8, 0x5f, 0xb3, 0xd5, 0xd7, 0xcb, 0x1b, 0x79, 0x49,
|
||||
0x97, 0xb2, 0x8c, 0x68, 0x21, 0x43, 0xb6, 0x63, 0x9c, 0xc2, 0x0a, 0x06, 0x79, 0x50, 0x0a, 0xd2,
|
||||
0xa0, 0x74, 0xc8, 0xae, 0x83, 0x3c, 0x28, 0x11, 0x32, 0x4d, 0x52, 0xd5, 0x50, 0x78, 0x5d, 0x53,
|
||||
0x07, 0x3c, 0x8f, 0xb2, 0x81, 0x52, 0xd9, 0xc2, 0x55, 0xce, 0xc3, 0x61, 0x2e, 0x4b, 0x41, 0x5a,
|
||||
0x90, 0x0c, 0x01, 0xa3, 0x88, 0xb2, 0x84, 0x61, 0x5e, 0x10, 0x81, 0xb9, 0x2c, 0xd3, 0x9d, 0x0a,
|
||||
0x6b, 0x91, 0x7b, 0x83, 0x11, 0x4d, 0xd5, 0x55, 0x58, 0xaf, 0x5e, 0xdb, 0x7b, 0xc6, 0x93, 0x5c,
|
||||
0x7b, 0x77, 0xab, 0x2b, 0x14, 0x21, 0xca, 0xd8, 0x04, 0x18, 0x53, 0x91, 0x81, 0xc2, 0xfa, 0x3a,
|
||||
0x0b, 0x37, 0xc4, 0xf9, 0x94, 0x0d, 0x36, 0xb3, 0xe9, 0x9d, 0x1e, 0x51, 0xee, 0xfe, 0x3a, 0xf7,
|
||||
0x47, 0x7a, 0xb1, 0x17, 0xec, 0x68, 0x33, 0x53, 0x86, 0xa0, 0x4b, 0x2b, 0xa2, 0x36, 0x08, 0x30,
|
||||
0x69, 0x4d, 0xb7, 0x66, 0xc3, 0xb5, 0xe1, 0x33, 0x89, 0x73, 0x6d, 0x90, 0x7f, 0x60, 0xa3, 0x4d,
|
||||
0x1b, 0x3d, 0x0b, 0x32, 0x1d, 0x93, 0x89, 0xaf, 0x4d, 0xd7, 0x4d, 0xb8, 0x23, 0xcb, 0x27, 0x76,
|
||||
0xfc, 0xfc, 0x26, 0x54, 0x42, 0xc9, 0x88, 0x70, 0x42, 0xb6, 0xf1, 0xbf, 0x77, 0xa1, 0xba, 0x94,
|
||||
0x11, 0xff, 0xdf, 0x24, 0x2a, 0xb1, 0x58, 0xc2, 0x29, 0x4d, 0x35, 0x7c, 0x6e, 0xfc, 0xb2, 0x4c,
|
||||
0xfb, 0xae, 0x64, 0x88, 0x22, 0x20, 0x5a, 0x78, 0x45, 0x37, 0x74, 0x12, 0xb8, 0x41, 0xb4, 0xfc,
|
||||
0x9c, 0x1d, 0x92, 0xf8, 0xab, 0x41, 0xbf, 0x14, 0x1e, 0x43, 0xed, 0x6c, 0x40, 0x38, 0x9b, 0xb4,
|
||||
0xa6, 0xfd, 0xd9, 0x41, 0x92, 0xbe, 0x27, 0x65, 0xb6, 0x12, 0x16, 0x6d, 0xfa, 0x01, 0x7c, 0xfc,
|
||||
0x1b, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x06, 0xcd, 0x66, 0x1d, 0x04, 0x00, 0x00,
|
||||
// 575 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x94, 0x4b, 0x6f, 0x13, 0x31,
|
||||
0x10, 0xc7, 0x15, 0xfa, 0x60, 0xe3, 0xa6, 0x6d, 0xea, 0x26, 0xa9, 0xdb, 0x52, 0x08, 0x70, 0x20,
|
||||
0x07, 0x54, 0x09, 0xa1, 0x1e, 0x38, 0x02, 0xbd, 0x52, 0x95, 0x34, 0x70, 0xb5, 0x9c, 0xf5, 0x74,
|
||||
0x6b, 0x75, 0x6d, 0x2f, 0x7e, 0x14, 0xe5, 0xdb, 0xf0, 0x51, 0x91, 0xc7, 0xdb, 0x24, 0xa2, 0xdc,
|
||||
0x3c, 0xbf, 0xff, 0xbc, 0x77, 0xb4, 0xa4, 0x27, 0xe1, 0x41, 0x95, 0x70, 0xde, 0x38, 0x1b, 0x2c,
|
||||
0xdd, 0xc9, 0x16, 0x1a, 0x6f, 0xfe, 0x14, 0x64, 0xfb, 0x12, 0x6d, 0x4a, 0xc9, 0x66, 0x8c, 0x4a,
|
||||
0xb2, 0xce, 0xb8, 0x33, 0xe9, 0x4e, 0xf1, 0x8d, 0x4c, 0x2a, 0xc9, 0x9e, 0xb5, 0x4c, 0x2a, 0x49,
|
||||
0xdf, 0x92, 0x5d, 0x0f, 0x4e, 0x89, 0x9a, 0x9b, 0xa8, 0xe7, 0xe0, 0xd8, 0x06, 0x8a, 0xbd, 0x0c,
|
||||
0xaf, 0x90, 0xd1, 0x33, 0x42, 0xac, 0xe7, 0x0f, 0xe0, 0xbc, 0xb2, 0x86, 0x6d, 0xa2, 0x47, 0xd7,
|
||||
0xfa, 0x9f, 0x19, 0xa4, 0x1c, 0xf3, 0xa8, 0x6a, 0xb9, 0xf4, 0xd8, 0xca, 0x39, 0x10, 0x3e, 0x3a,
|
||||
0xbd, 0x26, 0xbd, 0xc6, 0x59, 0x19, 0xcb, 0xc0, 0x8d, 0xd0, 0xc0, 0xb6, 0xd1, 0x67, 0xa7, 0x65,
|
||||
0x57, 0x42, 0x63, 0xcf, 0x4a, 0x83, 0x62, 0xcf, 0x73, 0x7f, 0xe9, 0x9d, 0x98, 0x06, 0x25, 0x59,
|
||||
0x91, 0x59, 0x7a, 0xd3, 0x01, 0xd9, 0x0a, 0xf6, 0x1e, 0x0c, 0xeb, 0x22, 0xcc, 0x46, 0x6a, 0xb2,
|
||||
0x89, 0xfe, 0x8e, 0x6b, 0x51, 0xa9, 0x92, 0x91, 0xdc, 0x64, 0x22, 0xdf, 0x12, 0xa0, 0xa7, 0xa4,
|
||||
0xab, 0xa5, 0xe6, 0xc1, 0x36, 0xaa, 0x64, 0x3b, 0xa8, 0x16, 0x5a, 0xea, 0x59, 0xb2, 0x53, 0x73,
|
||||
0xd1, 0xd4, 0xb6, 0xbc, 0xe7, 0x39, 0x71, 0x2f, 0x37, 0x97, 0xd9, 0x0c, 0xd3, 0x9f, 0x90, 0x02,
|
||||
0x8c, 0xb3, 0x75, 0x0d, 0x92, 0xed, 0x8e, 0x3b, 0x93, 0x62, 0xba, 0xb4, 0xe9, 0x05, 0x19, 0x89,
|
||||
0xdf, 0x42, 0x05, 0x65, 0x2a, 0x5e, 0x5a, 0x73, 0xab, 0xaa, 0xe8, 0x44, 0x48, 0x9b, 0xd8, 0x43,
|
||||
0xcf, 0xe1, 0xa3, 0xfa, 0x75, 0x5d, 0xa4, 0xaf, 0x48, 0xfb, 0xf5, 0xf2, 0x46, 0xf6, 0xb1, 0x28,
|
||||
0xc9, 0x08, 0x17, 0x32, 0x20, 0x5b, 0xda, 0x4a, 0xa8, 0x59, 0x3f, 0x0f, 0x8a, 0x46, 0x1a, 0x14,
|
||||
0x1f, 0x39, 0xea, 0x20, 0x0f, 0x8a, 0x04, 0x83, 0xc6, 0x29, 0xab, 0x2f, 0x9d, 0x6a, 0xb0, 0x03,
|
||||
0x9a, 0x47, 0x59, 0x43, 0x29, 0x6d, 0x69, 0x6b, 0xeb, 0xd8, 0x61, 0x4e, 0x8b, 0x46, 0x5a, 0x90,
|
||||
0xf0, 0x1e, 0x02, 0x0f, 0xa2, 0x62, 0x83, 0xbc, 0x20, 0x04, 0x33, 0x51, 0xa5, 0x9a, 0x12, 0x1a,
|
||||
0x9e, 0x7b, 0x63, 0x43, 0x9c, 0xaa, 0x2b, 0xa1, 0x69, 0xaf, 0xed, 0x3d, 0xa1, 0x49, 0x6e, 0x9c,
|
||||
0xbd, 0x55, 0x35, 0x70, 0x1f, 0x44, 0x88, 0x9e, 0x8d, 0x30, 0x49, 0x5f, 0x42, 0x73, 0x9d, 0x85,
|
||||
0x1b, 0xe4, 0x74, 0x42, 0xfa, 0xeb, 0xde, 0x78, 0xa7, 0x47, 0xe8, 0xbb, 0xb7, 0xf2, 0xfd, 0x91,
|
||||
0x2e, 0xf6, 0x82, 0x1c, 0xad, 0x7b, 0x0a, 0xef, 0x55, 0x65, 0x78, 0x50, 0x1a, 0x18, 0x1b, 0x77,
|
||||
0x26, 0x1b, 0xd3, 0xc1, 0x2a, 0xe0, 0x33, 0x8a, 0x33, 0xa5, 0x81, 0x7e, 0x20, 0xc3, 0xf5, 0x30,
|
||||
0x3c, 0x0b, 0x0c, 0x3a, 0xc6, 0x20, 0xba, 0x0a, 0xba, 0x8e, 0xfe, 0x0e, 0x43, 0x3e, 0x91, 0xe3,
|
||||
0xa7, 0x95, 0x40, 0x72, 0x29, 0x02, 0xb0, 0x13, 0x0c, 0x1b, 0xfd, 0x5b, 0x0b, 0xe4, 0xa5, 0x08,
|
||||
0xf0, 0xff, 0x26, 0x41, 0xf2, 0xf9, 0x82, 0x9d, 0xe2, 0x54, 0x83, 0xa7, 0x81, 0x5f, 0x16, 0x69,
|
||||
0xdf, 0xb5, 0xf0, 0x81, 0x7b, 0x00, 0xc3, 0x5e, 0x60, 0x85, 0x22, 0x81, 0x1b, 0x00, 0x43, 0xcf,
|
||||
0xc9, 0x21, 0x8a, 0xbf, 0x22, 0xb8, 0x05, 0x77, 0xe0, 0x1b, 0x6b, 0x3c, 0xb0, 0xb3, 0x71, 0x67,
|
||||
0xd2, 0x9b, 0x1e, 0x24, 0xe9, 0x7b, 0x52, 0xa6, 0xad, 0x40, 0xdf, 0x91, 0xfd, 0xb9, 0xb5, 0xc1,
|
||||
0x07, 0x27, 0x9a, 0xf6, 0x86, 0x5f, 0xe6, 0x8d, 0x2e, 0x31, 0x9e, 0xf1, 0x7c, 0x1b, 0xff, 0x14,
|
||||
0x1f, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x95, 0x24, 0x1c, 0x5e, 0x46, 0x04, 0x00, 0x00,
|
||||
}
|
||||
|
||||
@@ -33,5 +33,6 @@ message Device {
|
||||
string dep_profile_assigned_by =27;
|
||||
int64 last_seen =28;
|
||||
bytes last_query_response =29;
|
||||
string bootstrap_token =30;
|
||||
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ func (mw *udidCertAuthMiddleware) Checkin(ctx context.Context, req mdm.CheckinEv
|
||||
return nil, err
|
||||
}
|
||||
return mw.next.Checkin(ctx, req)
|
||||
case "TokenUpdate", "CheckOut":
|
||||
case "TokenUpdate", "CheckOut", "GetBootstrapToken", "SetBootstrapToken":
|
||||
matched, err := mw.validateUDIDCertAuth([]byte(req.Command.UDID), hashCertRaw(devcert.Raw))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -44,6 +44,14 @@ func (w *Worker) Run(ctx context.Context) error {
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "subscribing %s to %s", subscription, mdm.TokenUpdateTopic)
|
||||
}
|
||||
getBootstrapTokenEvents, err := w.ps.Subscribe(ctx, subscription, mdm.GetBootstrapTokenTopic)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "subscribing %s to %s", subscription, mdm.GetBootstrapTokenTopic)
|
||||
}
|
||||
setBootstrapTokenEvents, err := w.ps.Subscribe(ctx, subscription, mdm.SetBootstrapTokenTopic)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "subscribing %s to %s", subscription, mdm.SetBootstrapTokenTopic)
|
||||
}
|
||||
checkoutEvents, err := w.ps.Subscribe(ctx, subscription, mdm.CheckoutTopic)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "subscribing %s to %s", subscription, mdm.CheckoutTopic)
|
||||
@@ -66,6 +74,10 @@ func (w *Worker) Run(ctx context.Context) error {
|
||||
err = w.updateFromAuthenticate(ctx, ev.Message)
|
||||
case ev := <-tokenUpdateEvents:
|
||||
err = w.updateFromTokenUpdate(ctx, ev.Message)
|
||||
case ev := <-getBootstrapTokenEvents:
|
||||
err = w.updateFromGetBootstrapToken(ctx, ev.Message)
|
||||
case ev := <-setBootstrapTokenEvents:
|
||||
err = w.updateFromSetBootstrapToken(ctx, ev.Message)
|
||||
case ev := <-checkoutEvents:
|
||||
err = w.updateFromCheckout(ctx, ev.Message)
|
||||
case ev := <-depSyncEvents:
|
||||
@@ -179,6 +191,45 @@ func (w *Worker) updateFromCheckout(ctx context.Context, message []byte) error {
|
||||
|
||||
}
|
||||
|
||||
func (w *Worker) updateFromGetBootstrapToken(ctx context.Context, message []byte) error {
|
||||
var ev mdm.CheckinEvent
|
||||
if err := mdm.UnmarshalCheckinEvent(message, &ev); err != nil {
|
||||
return errors.Wrap(err, "unmarshal checkin event")
|
||||
}
|
||||
|
||||
dev, err := w.db.DeviceByUDID(ctx, ev.Command.UDID)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "retrieve device with udid %s", ev.Command.UDID)
|
||||
}
|
||||
|
||||
dev.AwaitingConfiguration = ev.Command.AwaitingConfiguration
|
||||
dev.LastSeen = time.Now()
|
||||
|
||||
err = w.db.Save(ctx, dev)
|
||||
return errors.Wrapf(err, "saving updated device for GetBootstrapToken event")
|
||||
|
||||
}
|
||||
|
||||
func (w *Worker) updateFromSetBootstrapToken(ctx context.Context, message []byte) error {
|
||||
var ev mdm.CheckinEvent
|
||||
if err := mdm.UnmarshalCheckinEvent(message, &ev); err != nil {
|
||||
return errors.Wrap(err, "unmarshal checkin event")
|
||||
}
|
||||
|
||||
dev, err := w.db.DeviceByUDID(ctx, ev.Command.UDID)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "retrieve device with udid %s", ev.Command.UDID)
|
||||
}
|
||||
|
||||
dev.BootstrapToken = string(ev.Command.BootstrapToken)
|
||||
dev.AwaitingConfiguration = ev.Command.AwaitingConfiguration
|
||||
dev.LastSeen = time.Now()
|
||||
|
||||
err = w.db.Save(ctx, dev)
|
||||
return errors.Wrapf(err, "saving updated device for SetBootstrapToken event")
|
||||
|
||||
}
|
||||
|
||||
func (w *Worker) updateFromTokenUpdate(ctx context.Context, message []byte) error {
|
||||
var ev mdm.CheckinEvent
|
||||
if err := mdm.UnmarshalCheckinEvent(message, &ev); err != nil {
|
||||
|
||||
@@ -183,7 +183,7 @@ func (c *Server) setupCommandQueue(logger log.Logger) error {
|
||||
|
||||
var mdmService mdm.Service
|
||||
{
|
||||
svc := mdm.NewService(c.PubClient, q)
|
||||
svc := mdm.NewService(c.PubClient, q, devDB)
|
||||
mdmService = svc
|
||||
mdmService = block.RemoveMiddleware(c.RemoveDB)(mdmService)
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
source $MICROMDM_ENV_PATH
|
||||
endpoint="v1/commands"
|
||||
jq -n \
|
||||
--arg request_type "SetBootstrapToken" \
|
||||
--arg udid "$1" \
|
||||
--arg token "$2" \
|
||||
'.udid = $udid
|
||||
|.request_type = $request_type
|
||||
|.bootstrap_token = $token
|
||||
'|\
|
||||
curl $CURL_OPTS -K <(cat <<< "-u micromdm:$API_TOKEN") "$SERVER_URL/$endpoint" -d@-
|
||||
@@ -81,6 +81,16 @@ func (w *Worker) Run(ctx context.Context) error {
|
||||
return errors.Wrapf(err, "subscribe %s to %s", subscription, mdm.CheckoutTopic)
|
||||
}
|
||||
|
||||
getBootstrapTokenEvents, err := w.sub.Subscribe(ctx, subscription, mdm.GetBootstrapTokenTopic)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "subscribe %s to %s", subscription, mdm.GetBootstrapTokenTopic)
|
||||
}
|
||||
|
||||
setBootstrapTokenEvents, err := w.sub.Subscribe(ctx, subscription, mdm.SetBootstrapTokenTopic)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "subscribe %s to %s", subscription, mdm.SetBootstrapTokenTopic)
|
||||
}
|
||||
|
||||
for {
|
||||
var (
|
||||
event *Event
|
||||
@@ -97,6 +107,10 @@ func (w *Worker) Run(ctx context.Context) error {
|
||||
event, err = checkinEvent(ev.Topic, ev.Message)
|
||||
case ev := <-checkoutEvents:
|
||||
event, err = checkinEvent(ev.Topic, ev.Message)
|
||||
case ev := <-getBootstrapTokenEvents:
|
||||
event, err = checkinEvent(ev.Topic, ev.Message)
|
||||
case ev := <-setBootstrapTokenEvents:
|
||||
event, err = checkinEvent(ev.Topic, ev.Message)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user