3082 lines
		
	
	
		
			115 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			3082 lines
		
	
	
		
			115 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|   | // Code generated by protoc-gen-go. DO NOT EDIT. | ||
|  | // source: messages.proto | ||
|  | 
 | ||
|  | package trezor | ||
|  | 
 | ||
|  | import proto "github.com/golang/protobuf/proto" | ||
|  | import fmt "fmt" | ||
|  | import math "math" | ||
|  | 
 | ||
|  | // Reference imports to suppress errors if they are not otherwise used. | ||
|  | var _ = proto.Marshal | ||
|  | var _ = fmt.Errorf | ||
|  | var _ = math.Inf | ||
|  | 
 | ||
|  | // * | ||
|  | // Mapping between Trezor wire identifier (uint) and a protobuf message | ||
|  | type MessageType int32 | ||
|  | 
 | ||
|  | const ( | ||
|  | 	MessageType_MessageType_Initialize               MessageType = 0 | ||
|  | 	MessageType_MessageType_Ping                     MessageType = 1 | ||
|  | 	MessageType_MessageType_Success                  MessageType = 2 | ||
|  | 	MessageType_MessageType_Failure                  MessageType = 3 | ||
|  | 	MessageType_MessageType_ChangePin                MessageType = 4 | ||
|  | 	MessageType_MessageType_WipeDevice               MessageType = 5 | ||
|  | 	MessageType_MessageType_FirmwareErase            MessageType = 6 | ||
|  | 	MessageType_MessageType_FirmwareUpload           MessageType = 7 | ||
|  | 	MessageType_MessageType_FirmwareRequest          MessageType = 8 | ||
|  | 	MessageType_MessageType_GetEntropy               MessageType = 9 | ||
|  | 	MessageType_MessageType_Entropy                  MessageType = 10 | ||
|  | 	MessageType_MessageType_GetPublicKey             MessageType = 11 | ||
|  | 	MessageType_MessageType_PublicKey                MessageType = 12 | ||
|  | 	MessageType_MessageType_LoadDevice               MessageType = 13 | ||
|  | 	MessageType_MessageType_ResetDevice              MessageType = 14 | ||
|  | 	MessageType_MessageType_SignTx                   MessageType = 15 | ||
|  | 	MessageType_MessageType_SimpleSignTx             MessageType = 16 | ||
|  | 	MessageType_MessageType_Features                 MessageType = 17 | ||
|  | 	MessageType_MessageType_PinMatrixRequest         MessageType = 18 | ||
|  | 	MessageType_MessageType_PinMatrixAck             MessageType = 19 | ||
|  | 	MessageType_MessageType_Cancel                   MessageType = 20 | ||
|  | 	MessageType_MessageType_TxRequest                MessageType = 21 | ||
|  | 	MessageType_MessageType_TxAck                    MessageType = 22 | ||
|  | 	MessageType_MessageType_CipherKeyValue           MessageType = 23 | ||
|  | 	MessageType_MessageType_ClearSession             MessageType = 24 | ||
|  | 	MessageType_MessageType_ApplySettings            MessageType = 25 | ||
|  | 	MessageType_MessageType_ButtonRequest            MessageType = 26 | ||
|  | 	MessageType_MessageType_ButtonAck                MessageType = 27 | ||
|  | 	MessageType_MessageType_ApplyFlags               MessageType = 28 | ||
|  | 	MessageType_MessageType_GetAddress               MessageType = 29 | ||
|  | 	MessageType_MessageType_Address                  MessageType = 30 | ||
|  | 	MessageType_MessageType_SelfTest                 MessageType = 32 | ||
|  | 	MessageType_MessageType_BackupDevice             MessageType = 34 | ||
|  | 	MessageType_MessageType_EntropyRequest           MessageType = 35 | ||
|  | 	MessageType_MessageType_EntropyAck               MessageType = 36 | ||
|  | 	MessageType_MessageType_SignMessage              MessageType = 38 | ||
|  | 	MessageType_MessageType_VerifyMessage            MessageType = 39 | ||
|  | 	MessageType_MessageType_MessageSignature         MessageType = 40 | ||
|  | 	MessageType_MessageType_PassphraseRequest        MessageType = 41 | ||
|  | 	MessageType_MessageType_PassphraseAck            MessageType = 42 | ||
|  | 	MessageType_MessageType_EstimateTxSize           MessageType = 43 | ||
|  | 	MessageType_MessageType_TxSize                   MessageType = 44 | ||
|  | 	MessageType_MessageType_RecoveryDevice           MessageType = 45 | ||
|  | 	MessageType_MessageType_WordRequest              MessageType = 46 | ||
|  | 	MessageType_MessageType_WordAck                  MessageType = 47 | ||
|  | 	MessageType_MessageType_CipheredKeyValue         MessageType = 48 | ||
|  | 	MessageType_MessageType_EncryptMessage           MessageType = 49 | ||
|  | 	MessageType_MessageType_EncryptedMessage         MessageType = 50 | ||
|  | 	MessageType_MessageType_DecryptMessage           MessageType = 51 | ||
|  | 	MessageType_MessageType_DecryptedMessage         MessageType = 52 | ||
|  | 	MessageType_MessageType_SignIdentity             MessageType = 53 | ||
|  | 	MessageType_MessageType_SignedIdentity           MessageType = 54 | ||
|  | 	MessageType_MessageType_GetFeatures              MessageType = 55 | ||
|  | 	MessageType_MessageType_EthereumGetAddress       MessageType = 56 | ||
|  | 	MessageType_MessageType_EthereumAddress          MessageType = 57 | ||
|  | 	MessageType_MessageType_EthereumSignTx           MessageType = 58 | ||
|  | 	MessageType_MessageType_EthereumTxRequest        MessageType = 59 | ||
|  | 	MessageType_MessageType_EthereumTxAck            MessageType = 60 | ||
|  | 	MessageType_MessageType_GetECDHSessionKey        MessageType = 61 | ||
|  | 	MessageType_MessageType_ECDHSessionKey           MessageType = 62 | ||
|  | 	MessageType_MessageType_SetU2FCounter            MessageType = 63 | ||
|  | 	MessageType_MessageType_EthereumSignMessage      MessageType = 64 | ||
|  | 	MessageType_MessageType_EthereumVerifyMessage    MessageType = 65 | ||
|  | 	MessageType_MessageType_EthereumMessageSignature MessageType = 66 | ||
|  | 	MessageType_MessageType_DebugLinkDecision        MessageType = 100 | ||
|  | 	MessageType_MessageType_DebugLinkGetState        MessageType = 101 | ||
|  | 	MessageType_MessageType_DebugLinkState           MessageType = 102 | ||
|  | 	MessageType_MessageType_DebugLinkStop            MessageType = 103 | ||
|  | 	MessageType_MessageType_DebugLinkLog             MessageType = 104 | ||
|  | 	MessageType_MessageType_DebugLinkMemoryRead      MessageType = 110 | ||
|  | 	MessageType_MessageType_DebugLinkMemory          MessageType = 111 | ||
|  | 	MessageType_MessageType_DebugLinkMemoryWrite     MessageType = 112 | ||
|  | 	MessageType_MessageType_DebugLinkFlashErase      MessageType = 113 | ||
|  | ) | ||
|  | 
 | ||
|  | var MessageType_name = map[int32]string{ | ||
|  | 	0:   "MessageType_Initialize", | ||
|  | 	1:   "MessageType_Ping", | ||
|  | 	2:   "MessageType_Success", | ||
|  | 	3:   "MessageType_Failure", | ||
|  | 	4:   "MessageType_ChangePin", | ||
|  | 	5:   "MessageType_WipeDevice", | ||
|  | 	6:   "MessageType_FirmwareErase", | ||
|  | 	7:   "MessageType_FirmwareUpload", | ||
|  | 	8:   "MessageType_FirmwareRequest", | ||
|  | 	9:   "MessageType_GetEntropy", | ||
|  | 	10:  "MessageType_Entropy", | ||
|  | 	11:  "MessageType_GetPublicKey", | ||
|  | 	12:  "MessageType_PublicKey", | ||
|  | 	13:  "MessageType_LoadDevice", | ||
|  | 	14:  "MessageType_ResetDevice", | ||
|  | 	15:  "MessageType_SignTx", | ||
|  | 	16:  "MessageType_SimpleSignTx", | ||
|  | 	17:  "MessageType_Features", | ||
|  | 	18:  "MessageType_PinMatrixRequest", | ||
|  | 	19:  "MessageType_PinMatrixAck", | ||
|  | 	20:  "MessageType_Cancel", | ||
|  | 	21:  "MessageType_TxRequest", | ||
|  | 	22:  "MessageType_TxAck", | ||
|  | 	23:  "MessageType_CipherKeyValue", | ||
|  | 	24:  "MessageType_ClearSession", | ||
|  | 	25:  "MessageType_ApplySettings", | ||
|  | 	26:  "MessageType_ButtonRequest", | ||
|  | 	27:  "MessageType_ButtonAck", | ||
|  | 	28:  "MessageType_ApplyFlags", | ||
|  | 	29:  "MessageType_GetAddress", | ||
|  | 	30:  "MessageType_Address", | ||
|  | 	32:  "MessageType_SelfTest", | ||
|  | 	34:  "MessageType_BackupDevice", | ||
|  | 	35:  "MessageType_EntropyRequest", | ||
|  | 	36:  "MessageType_EntropyAck", | ||
|  | 	38:  "MessageType_SignMessage", | ||
|  | 	39:  "MessageType_VerifyMessage", | ||
|  | 	40:  "MessageType_MessageSignature", | ||
|  | 	41:  "MessageType_PassphraseRequest", | ||
|  | 	42:  "MessageType_PassphraseAck", | ||
|  | 	43:  "MessageType_EstimateTxSize", | ||
|  | 	44:  "MessageType_TxSize", | ||
|  | 	45:  "MessageType_RecoveryDevice", | ||
|  | 	46:  "MessageType_WordRequest", | ||
|  | 	47:  "MessageType_WordAck", | ||
|  | 	48:  "MessageType_CipheredKeyValue", | ||
|  | 	49:  "MessageType_EncryptMessage", | ||
|  | 	50:  "MessageType_EncryptedMessage", | ||
|  | 	51:  "MessageType_DecryptMessage", | ||
|  | 	52:  "MessageType_DecryptedMessage", | ||
|  | 	53:  "MessageType_SignIdentity", | ||
|  | 	54:  "MessageType_SignedIdentity", | ||
|  | 	55:  "MessageType_GetFeatures", | ||
|  | 	56:  "MessageType_EthereumGetAddress", | ||
|  | 	57:  "MessageType_EthereumAddress", | ||
|  | 	58:  "MessageType_EthereumSignTx", | ||
|  | 	59:  "MessageType_EthereumTxRequest", | ||
|  | 	60:  "MessageType_EthereumTxAck", | ||
|  | 	61:  "MessageType_GetECDHSessionKey", | ||
|  | 	62:  "MessageType_ECDHSessionKey", | ||
|  | 	63:  "MessageType_SetU2FCounter", | ||
|  | 	64:  "MessageType_EthereumSignMessage", | ||
|  | 	65:  "MessageType_EthereumVerifyMessage", | ||
|  | 	66:  "MessageType_EthereumMessageSignature", | ||
|  | 	100: "MessageType_DebugLinkDecision", | ||
|  | 	101: "MessageType_DebugLinkGetState", | ||
|  | 	102: "MessageType_DebugLinkState", | ||
|  | 	103: "MessageType_DebugLinkStop", | ||
|  | 	104: "MessageType_DebugLinkLog", | ||
|  | 	110: "MessageType_DebugLinkMemoryRead", | ||
|  | 	111: "MessageType_DebugLinkMemory", | ||
|  | 	112: "MessageType_DebugLinkMemoryWrite", | ||
|  | 	113: "MessageType_DebugLinkFlashErase", | ||
|  | } | ||
|  | var MessageType_value = map[string]int32{ | ||
|  | 	"MessageType_Initialize":               0, | ||
|  | 	"MessageType_Ping":                     1, | ||
|  | 	"MessageType_Success":                  2, | ||
|  | 	"MessageType_Failure":                  3, | ||
|  | 	"MessageType_ChangePin":                4, | ||
|  | 	"MessageType_WipeDevice":               5, | ||
|  | 	"MessageType_FirmwareErase":            6, | ||
|  | 	"MessageType_FirmwareUpload":           7, | ||
|  | 	"MessageType_FirmwareRequest":          8, | ||
|  | 	"MessageType_GetEntropy":               9, | ||
|  | 	"MessageType_Entropy":                  10, | ||
|  | 	"MessageType_GetPublicKey":             11, | ||
|  | 	"MessageType_PublicKey":                12, | ||
|  | 	"MessageType_LoadDevice":               13, | ||
|  | 	"MessageType_ResetDevice":              14, | ||
|  | 	"MessageType_SignTx":                   15, | ||
|  | 	"MessageType_SimpleSignTx":             16, | ||
|  | 	"MessageType_Features":                 17, | ||
|  | 	"MessageType_PinMatrixRequest":         18, | ||
|  | 	"MessageType_PinMatrixAck":             19, | ||
|  | 	"MessageType_Cancel":                   20, | ||
|  | 	"MessageType_TxRequest":                21, | ||
|  | 	"MessageType_TxAck":                    22, | ||
|  | 	"MessageType_CipherKeyValue":           23, | ||
|  | 	"MessageType_ClearSession":             24, | ||
|  | 	"MessageType_ApplySettings":            25, | ||
|  | 	"MessageType_ButtonRequest":            26, | ||
|  | 	"MessageType_ButtonAck":                27, | ||
|  | 	"MessageType_ApplyFlags":               28, | ||
|  | 	"MessageType_GetAddress":               29, | ||
|  | 	"MessageType_Address":                  30, | ||
|  | 	"MessageType_SelfTest":                 32, | ||
|  | 	"MessageType_BackupDevice":             34, | ||
|  | 	"MessageType_EntropyRequest":           35, | ||
|  | 	"MessageType_EntropyAck":               36, | ||
|  | 	"MessageType_SignMessage":              38, | ||
|  | 	"MessageType_VerifyMessage":            39, | ||
|  | 	"MessageType_MessageSignature":         40, | ||
|  | 	"MessageType_PassphraseRequest":        41, | ||
|  | 	"MessageType_PassphraseAck":            42, | ||
|  | 	"MessageType_EstimateTxSize":           43, | ||
|  | 	"MessageType_TxSize":                   44, | ||
|  | 	"MessageType_RecoveryDevice":           45, | ||
|  | 	"MessageType_WordRequest":              46, | ||
|  | 	"MessageType_WordAck":                  47, | ||
|  | 	"MessageType_CipheredKeyValue":         48, | ||
|  | 	"MessageType_EncryptMessage":           49, | ||
|  | 	"MessageType_EncryptedMessage":         50, | ||
|  | 	"MessageType_DecryptMessage":           51, | ||
|  | 	"MessageType_DecryptedMessage":         52, | ||
|  | 	"MessageType_SignIdentity":             53, | ||
|  | 	"MessageType_SignedIdentity":           54, | ||
|  | 	"MessageType_GetFeatures":              55, | ||
|  | 	"MessageType_EthereumGetAddress":       56, | ||
|  | 	"MessageType_EthereumAddress":          57, | ||
|  | 	"MessageType_EthereumSignTx":           58, | ||
|  | 	"MessageType_EthereumTxRequest":        59, | ||
|  | 	"MessageType_EthereumTxAck":            60, | ||
|  | 	"MessageType_GetECDHSessionKey":        61, | ||
|  | 	"MessageType_ECDHSessionKey":           62, | ||
|  | 	"MessageType_SetU2FCounter":            63, | ||
|  | 	"MessageType_EthereumSignMessage":      64, | ||
|  | 	"MessageType_EthereumVerifyMessage":    65, | ||
|  | 	"MessageType_EthereumMessageSignature": 66, | ||
|  | 	"MessageType_DebugLinkDecision":        100, | ||
|  | 	"MessageType_DebugLinkGetState":        101, | ||
|  | 	"MessageType_DebugLinkState":           102, | ||
|  | 	"MessageType_DebugLinkStop":            103, | ||
|  | 	"MessageType_DebugLinkLog":             104, | ||
|  | 	"MessageType_DebugLinkMemoryRead":      110, | ||
|  | 	"MessageType_DebugLinkMemory":          111, | ||
|  | 	"MessageType_DebugLinkMemoryWrite":     112, | ||
|  | 	"MessageType_DebugLinkFlashErase":      113, | ||
|  | } | ||
|  | 
 | ||
|  | func (x MessageType) Enum() *MessageType { | ||
|  | 	p := new(MessageType) | ||
|  | 	*p = x | ||
|  | 	return p | ||
|  | } | ||
|  | func (x MessageType) String() string { | ||
|  | 	return proto.EnumName(MessageType_name, int32(x)) | ||
|  | } | ||
|  | func (x *MessageType) UnmarshalJSON(data []byte) error { | ||
|  | 	value, err := proto.UnmarshalJSONEnum(MessageType_value, data, "MessageType") | ||
|  | 	if err != nil { | ||
|  | 		return err | ||
|  | 	} | ||
|  | 	*x = MessageType(value) | ||
|  | 	return nil | ||
|  | } | ||
|  | func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Reset device to default state and ask for device details | ||
|  | // @next Features | ||
|  | type Initialize struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Initialize) Reset()                    { *m = Initialize{} } | ||
|  | func (m *Initialize) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Initialize) ProtoMessage()               {} | ||
|  | func (*Initialize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask for device details (no device reset) | ||
|  | // @next Features | ||
|  | type GetFeatures struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetFeatures) Reset()                    { *m = GetFeatures{} } | ||
|  | func (m *GetFeatures) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*GetFeatures) ProtoMessage()               {} | ||
|  | func (*GetFeatures) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Reports various information about the device | ||
|  | // @prev Initialize | ||
|  | // @prev GetFeatures | ||
|  | type Features struct { | ||
|  | 	Vendor               *string     `protobuf:"bytes,1,opt,name=vendor" json:"vendor,omitempty"` | ||
|  | 	MajorVersion         *uint32     `protobuf:"varint,2,opt,name=major_version,json=majorVersion" json:"major_version,omitempty"` | ||
|  | 	MinorVersion         *uint32     `protobuf:"varint,3,opt,name=minor_version,json=minorVersion" json:"minor_version,omitempty"` | ||
|  | 	PatchVersion         *uint32     `protobuf:"varint,4,opt,name=patch_version,json=patchVersion" json:"patch_version,omitempty"` | ||
|  | 	BootloaderMode       *bool       `protobuf:"varint,5,opt,name=bootloader_mode,json=bootloaderMode" json:"bootloader_mode,omitempty"` | ||
|  | 	DeviceId             *string     `protobuf:"bytes,6,opt,name=device_id,json=deviceId" json:"device_id,omitempty"` | ||
|  | 	PinProtection        *bool       `protobuf:"varint,7,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` | ||
|  | 	PassphraseProtection *bool       `protobuf:"varint,8,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` | ||
|  | 	Language             *string     `protobuf:"bytes,9,opt,name=language" json:"language,omitempty"` | ||
|  | 	Label                *string     `protobuf:"bytes,10,opt,name=label" json:"label,omitempty"` | ||
|  | 	Coins                []*CoinType `protobuf:"bytes,11,rep,name=coins" json:"coins,omitempty"` | ||
|  | 	Initialized          *bool       `protobuf:"varint,12,opt,name=initialized" json:"initialized,omitempty"` | ||
|  | 	Revision             []byte      `protobuf:"bytes,13,opt,name=revision" json:"revision,omitempty"` | ||
|  | 	BootloaderHash       []byte      `protobuf:"bytes,14,opt,name=bootloader_hash,json=bootloaderHash" json:"bootloader_hash,omitempty"` | ||
|  | 	Imported             *bool       `protobuf:"varint,15,opt,name=imported" json:"imported,omitempty"` | ||
|  | 	PinCached            *bool       `protobuf:"varint,16,opt,name=pin_cached,json=pinCached" json:"pin_cached,omitempty"` | ||
|  | 	PassphraseCached     *bool       `protobuf:"varint,17,opt,name=passphrase_cached,json=passphraseCached" json:"passphrase_cached,omitempty"` | ||
|  | 	FirmwarePresent      *bool       `protobuf:"varint,18,opt,name=firmware_present,json=firmwarePresent" json:"firmware_present,omitempty"` | ||
|  | 	NeedsBackup          *bool       `protobuf:"varint,19,opt,name=needs_backup,json=needsBackup" json:"needs_backup,omitempty"` | ||
|  | 	Flags                *uint32     `protobuf:"varint,20,opt,name=flags" json:"flags,omitempty"` | ||
|  | 	XXX_unrecognized     []byte      `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) Reset()                    { *m = Features{} } | ||
|  | func (m *Features) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Features) ProtoMessage()               {} | ||
|  | func (*Features) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } | ||
|  | 
 | ||
|  | func (m *Features) GetVendor() string { | ||
|  | 	if m != nil && m.Vendor != nil { | ||
|  | 		return *m.Vendor | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetMajorVersion() uint32 { | ||
|  | 	if m != nil && m.MajorVersion != nil { | ||
|  | 		return *m.MajorVersion | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetMinorVersion() uint32 { | ||
|  | 	if m != nil && m.MinorVersion != nil { | ||
|  | 		return *m.MinorVersion | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetPatchVersion() uint32 { | ||
|  | 	if m != nil && m.PatchVersion != nil { | ||
|  | 		return *m.PatchVersion | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetBootloaderMode() bool { | ||
|  | 	if m != nil && m.BootloaderMode != nil { | ||
|  | 		return *m.BootloaderMode | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetDeviceId() string { | ||
|  | 	if m != nil && m.DeviceId != nil { | ||
|  | 		return *m.DeviceId | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetPinProtection() bool { | ||
|  | 	if m != nil && m.PinProtection != nil { | ||
|  | 		return *m.PinProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetPassphraseProtection() bool { | ||
|  | 	if m != nil && m.PassphraseProtection != nil { | ||
|  | 		return *m.PassphraseProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetLanguage() string { | ||
|  | 	if m != nil && m.Language != nil { | ||
|  | 		return *m.Language | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetLabel() string { | ||
|  | 	if m != nil && m.Label != nil { | ||
|  | 		return *m.Label | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetCoins() []*CoinType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Coins | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetInitialized() bool { | ||
|  | 	if m != nil && m.Initialized != nil { | ||
|  | 		return *m.Initialized | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetRevision() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Revision | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetBootloaderHash() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.BootloaderHash | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetImported() bool { | ||
|  | 	if m != nil && m.Imported != nil { | ||
|  | 		return *m.Imported | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetPinCached() bool { | ||
|  | 	if m != nil && m.PinCached != nil { | ||
|  | 		return *m.PinCached | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetPassphraseCached() bool { | ||
|  | 	if m != nil && m.PassphraseCached != nil { | ||
|  | 		return *m.PassphraseCached | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetFirmwarePresent() bool { | ||
|  | 	if m != nil && m.FirmwarePresent != nil { | ||
|  | 		return *m.FirmwarePresent | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetNeedsBackup() bool { | ||
|  | 	if m != nil && m.NeedsBackup != nil { | ||
|  | 		return *m.NeedsBackup | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Features) GetFlags() uint32 { | ||
|  | 	if m != nil && m.Flags != nil { | ||
|  | 		return *m.Flags | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: clear session (removes cached PIN, passphrase, etc). | ||
|  | // @next Success | ||
|  | type ClearSession struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ClearSession) Reset()                    { *m = ClearSession{} } | ||
|  | func (m *ClearSession) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ClearSession) ProtoMessage()               {} | ||
|  | func (*ClearSession) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: change language and/or label of the device | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | // @next ButtonRequest | ||
|  | // @next PinMatrixRequest | ||
|  | type ApplySettings struct { | ||
|  | 	Language         *string `protobuf:"bytes,1,opt,name=language" json:"language,omitempty"` | ||
|  | 	Label            *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` | ||
|  | 	UsePassphrase    *bool   `protobuf:"varint,3,opt,name=use_passphrase,json=usePassphrase" json:"use_passphrase,omitempty"` | ||
|  | 	Homescreen       []byte  `protobuf:"bytes,4,opt,name=homescreen" json:"homescreen,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ApplySettings) Reset()                    { *m = ApplySettings{} } | ||
|  | func (m *ApplySettings) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ApplySettings) ProtoMessage()               {} | ||
|  | func (*ApplySettings) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } | ||
|  | 
 | ||
|  | func (m *ApplySettings) GetLanguage() string { | ||
|  | 	if m != nil && m.Language != nil { | ||
|  | 		return *m.Language | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ApplySettings) GetLabel() string { | ||
|  | 	if m != nil && m.Label != nil { | ||
|  | 		return *m.Label | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ApplySettings) GetUsePassphrase() bool { | ||
|  | 	if m != nil && m.UsePassphrase != nil { | ||
|  | 		return *m.UsePassphrase | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ApplySettings) GetHomescreen() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Homescreen | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: set flags of the device | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type ApplyFlags struct { | ||
|  | 	Flags            *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ApplyFlags) Reset()                    { *m = ApplyFlags{} } | ||
|  | func (m *ApplyFlags) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ApplyFlags) ProtoMessage()               {} | ||
|  | func (*ApplyFlags) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } | ||
|  | 
 | ||
|  | func (m *ApplyFlags) GetFlags() uint32 { | ||
|  | 	if m != nil && m.Flags != nil { | ||
|  | 		return *m.Flags | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Starts workflow for setting/changing/removing the PIN | ||
|  | // @next ButtonRequest | ||
|  | // @next PinMatrixRequest | ||
|  | type ChangePin struct { | ||
|  | 	Remove           *bool  `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ChangePin) Reset()                    { *m = ChangePin{} } | ||
|  | func (m *ChangePin) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ChangePin) ProtoMessage()               {} | ||
|  | func (*ChangePin) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } | ||
|  | 
 | ||
|  | func (m *ChangePin) GetRemove() bool { | ||
|  | 	if m != nil && m.Remove != nil { | ||
|  | 		return *m.Remove | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Test if the device is alive, device sends back the message in Success response | ||
|  | // @next Success | ||
|  | type Ping struct { | ||
|  | 	Message              *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` | ||
|  | 	ButtonProtection     *bool   `protobuf:"varint,2,opt,name=button_protection,json=buttonProtection" json:"button_protection,omitempty"` | ||
|  | 	PinProtection        *bool   `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` | ||
|  | 	PassphraseProtection *bool   `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` | ||
|  | 	XXX_unrecognized     []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Ping) Reset()                    { *m = Ping{} } | ||
|  | func (m *Ping) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Ping) ProtoMessage()               {} | ||
|  | func (*Ping) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } | ||
|  | 
 | ||
|  | func (m *Ping) GetMessage() string { | ||
|  | 	if m != nil && m.Message != nil { | ||
|  | 		return *m.Message | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Ping) GetButtonProtection() bool { | ||
|  | 	if m != nil && m.ButtonProtection != nil { | ||
|  | 		return *m.ButtonProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Ping) GetPinProtection() bool { | ||
|  | 	if m != nil && m.PinProtection != nil { | ||
|  | 		return *m.PinProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Ping) GetPassphraseProtection() bool { | ||
|  | 	if m != nil && m.PassphraseProtection != nil { | ||
|  | 		return *m.PassphraseProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Success of the previous request | ||
|  | type Success struct { | ||
|  | 	Message          *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Success) Reset()                    { *m = Success{} } | ||
|  | func (m *Success) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Success) ProtoMessage()               {} | ||
|  | func (*Success) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } | ||
|  | 
 | ||
|  | func (m *Success) GetMessage() string { | ||
|  | 	if m != nil && m.Message != nil { | ||
|  | 		return *m.Message | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Failure of the previous request | ||
|  | type Failure struct { | ||
|  | 	Code             *FailureType `protobuf:"varint,1,opt,name=code,enum=FailureType" json:"code,omitempty"` | ||
|  | 	Message          *string      `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` | ||
|  | 	XXX_unrecognized []byte       `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Failure) Reset()                    { *m = Failure{} } | ||
|  | func (m *Failure) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Failure) ProtoMessage()               {} | ||
|  | func (*Failure) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } | ||
|  | 
 | ||
|  | func (m *Failure) GetCode() FailureType { | ||
|  | 	if m != nil && m.Code != nil { | ||
|  | 		return *m.Code | ||
|  | 	} | ||
|  | 	return FailureType_Failure_UnexpectedMessage | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Failure) GetMessage() string { | ||
|  | 	if m != nil && m.Message != nil { | ||
|  | 		return *m.Message | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device is waiting for HW button press. | ||
|  | // @next ButtonAck | ||
|  | // @next Cancel | ||
|  | type ButtonRequest struct { | ||
|  | 	Code             *ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=ButtonRequestType" json:"code,omitempty"` | ||
|  | 	Data             *string            `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` | ||
|  | 	XXX_unrecognized []byte             `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ButtonRequest) Reset()                    { *m = ButtonRequest{} } | ||
|  | func (m *ButtonRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ButtonRequest) ProtoMessage()               {} | ||
|  | func (*ButtonRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } | ||
|  | 
 | ||
|  | func (m *ButtonRequest) GetCode() ButtonRequestType { | ||
|  | 	if m != nil && m.Code != nil { | ||
|  | 		return *m.Code | ||
|  | 	} | ||
|  | 	return ButtonRequestType_ButtonRequest_Other | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ButtonRequest) GetData() string { | ||
|  | 	if m != nil && m.Data != nil { | ||
|  | 		return *m.Data | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Computer agrees to wait for HW button press | ||
|  | // @prev ButtonRequest | ||
|  | type ButtonAck struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ButtonAck) Reset()                    { *m = ButtonAck{} } | ||
|  | func (m *ButtonAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ButtonAck) ProtoMessage()               {} | ||
|  | func (*ButtonAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme | ||
|  | // @next PinMatrixAck | ||
|  | // @next Cancel | ||
|  | type PinMatrixRequest struct { | ||
|  | 	Type             *PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=PinMatrixRequestType" json:"type,omitempty"` | ||
|  | 	XXX_unrecognized []byte                `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *PinMatrixRequest) Reset()                    { *m = PinMatrixRequest{} } | ||
|  | func (m *PinMatrixRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*PinMatrixRequest) ProtoMessage()               {} | ||
|  | func (*PinMatrixRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } | ||
|  | 
 | ||
|  | func (m *PinMatrixRequest) GetType() PinMatrixRequestType { | ||
|  | 	if m != nil && m.Type != nil { | ||
|  | 		return *m.Type | ||
|  | 	} | ||
|  | 	return PinMatrixRequestType_PinMatrixRequestType_Current | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Computer responds with encoded PIN | ||
|  | // @prev PinMatrixRequest | ||
|  | type PinMatrixAck struct { | ||
|  | 	Pin              *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *PinMatrixAck) Reset()                    { *m = PinMatrixAck{} } | ||
|  | func (m *PinMatrixAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*PinMatrixAck) ProtoMessage()               {} | ||
|  | func (*PinMatrixAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } | ||
|  | 
 | ||
|  | func (m *PinMatrixAck) GetPin() string { | ||
|  | 	if m != nil && m.Pin != nil { | ||
|  | 		return *m.Pin | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Abort last operation that required user interaction | ||
|  | // @prev ButtonRequest | ||
|  | // @prev PinMatrixRequest | ||
|  | // @prev PassphraseRequest | ||
|  | type Cancel struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Cancel) Reset()                    { *m = Cancel{} } | ||
|  | func (m *Cancel) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Cancel) ProtoMessage()               {} | ||
|  | func (*Cancel) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device awaits encryption passphrase | ||
|  | // @next PassphraseAck | ||
|  | // @next Cancel | ||
|  | type PassphraseRequest struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *PassphraseRequest) Reset()                    { *m = PassphraseRequest{} } | ||
|  | func (m *PassphraseRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*PassphraseRequest) ProtoMessage()               {} | ||
|  | func (*PassphraseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Send passphrase back | ||
|  | // @prev PassphraseRequest | ||
|  | type PassphraseAck struct { | ||
|  | 	Passphrase       *string `protobuf:"bytes,1,req,name=passphrase" json:"passphrase,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *PassphraseAck) Reset()                    { *m = PassphraseAck{} } | ||
|  | func (m *PassphraseAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*PassphraseAck) ProtoMessage()               {} | ||
|  | func (*PassphraseAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } | ||
|  | 
 | ||
|  | func (m *PassphraseAck) GetPassphrase() string { | ||
|  | 	if m != nil && m.Passphrase != nil { | ||
|  | 		return *m.Passphrase | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Request a sample of random data generated by hardware RNG. May be used for testing. | ||
|  | // @next ButtonRequest | ||
|  | // @next Entropy | ||
|  | // @next Failure | ||
|  | type GetEntropy struct { | ||
|  | 	Size             *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetEntropy) Reset()                    { *m = GetEntropy{} } | ||
|  | func (m *GetEntropy) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*GetEntropy) ProtoMessage()               {} | ||
|  | func (*GetEntropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } | ||
|  | 
 | ||
|  | func (m *GetEntropy) GetSize() uint32 { | ||
|  | 	if m != nil && m.Size != nil { | ||
|  | 		return *m.Size | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Reply with random data generated by internal RNG | ||
|  | // @prev GetEntropy | ||
|  | type Entropy struct { | ||
|  | 	Entropy          []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Entropy) Reset()                    { *m = Entropy{} } | ||
|  | func (m *Entropy) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Entropy) ProtoMessage()               {} | ||
|  | func (*Entropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } | ||
|  | 
 | ||
|  | func (m *Entropy) GetEntropy() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Entropy | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device for public key corresponding to address_n path | ||
|  | // @next PassphraseRequest | ||
|  | // @next PublicKey | ||
|  | // @next Failure | ||
|  | type GetPublicKey struct { | ||
|  | 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	EcdsaCurveName   *string  `protobuf:"bytes,2,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` | ||
|  | 	ShowDisplay      *bool    `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` | ||
|  | 	CoinName         *string  `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetPublicKey) Reset()                    { *m = GetPublicKey{} } | ||
|  | func (m *GetPublicKey) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*GetPublicKey) ProtoMessage()               {} | ||
|  | func (*GetPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } | ||
|  | 
 | ||
|  | const Default_GetPublicKey_CoinName string = "Bitcoin" | ||
|  | 
 | ||
|  | func (m *GetPublicKey) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetPublicKey) GetEcdsaCurveName() string { | ||
|  | 	if m != nil && m.EcdsaCurveName != nil { | ||
|  | 		return *m.EcdsaCurveName | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetPublicKey) GetShowDisplay() bool { | ||
|  | 	if m != nil && m.ShowDisplay != nil { | ||
|  | 		return *m.ShowDisplay | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetPublicKey) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_GetPublicKey_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Contains public key derived from device private seed | ||
|  | // @prev GetPublicKey | ||
|  | type PublicKey struct { | ||
|  | 	Node             *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"` | ||
|  | 	Xpub             *string     `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"` | ||
|  | 	XXX_unrecognized []byte      `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *PublicKey) Reset()                    { *m = PublicKey{} } | ||
|  | func (m *PublicKey) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*PublicKey) ProtoMessage()               {} | ||
|  | func (*PublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } | ||
|  | 
 | ||
|  | func (m *PublicKey) GetNode() *HDNodeType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Node | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *PublicKey) GetXpub() string { | ||
|  | 	if m != nil && m.Xpub != nil { | ||
|  | 		return *m.Xpub | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device for address corresponding to address_n path | ||
|  | // @next PassphraseRequest | ||
|  | // @next Address | ||
|  | // @next Failure | ||
|  | type GetAddress struct { | ||
|  | 	AddressN         []uint32                  `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	CoinName         *string                   `protobuf:"bytes,2,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	ShowDisplay      *bool                     `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` | ||
|  | 	Multisig         *MultisigRedeemScriptType `protobuf:"bytes,4,opt,name=multisig" json:"multisig,omitempty"` | ||
|  | 	ScriptType       *InputScriptType          `protobuf:"varint,5,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` | ||
|  | 	XXX_unrecognized []byte                    `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetAddress) Reset()                    { *m = GetAddress{} } | ||
|  | func (m *GetAddress) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*GetAddress) ProtoMessage()               {} | ||
|  | func (*GetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} } | ||
|  | 
 | ||
|  | const Default_GetAddress_CoinName string = "Bitcoin" | ||
|  | const Default_GetAddress_ScriptType InputScriptType = InputScriptType_SPENDADDRESS | ||
|  | 
 | ||
|  | func (m *GetAddress) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetAddress) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_GetAddress_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetAddress) GetShowDisplay() bool { | ||
|  | 	if m != nil && m.ShowDisplay != nil { | ||
|  | 		return *m.ShowDisplay | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetAddress) GetMultisig() *MultisigRedeemScriptType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Multisig | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetAddress) GetScriptType() InputScriptType { | ||
|  | 	if m != nil && m.ScriptType != nil { | ||
|  | 		return *m.ScriptType | ||
|  | 	} | ||
|  | 	return Default_GetAddress_ScriptType | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device for Ethereum address corresponding to address_n path | ||
|  | // @next PassphraseRequest | ||
|  | // @next EthereumAddress | ||
|  | // @next Failure | ||
|  | type EthereumGetAddress struct { | ||
|  | 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	ShowDisplay      *bool    `protobuf:"varint,2,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumGetAddress) Reset()                    { *m = EthereumGetAddress{} } | ||
|  | func (m *EthereumGetAddress) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumGetAddress) ProtoMessage()               {} | ||
|  | func (*EthereumGetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} } | ||
|  | 
 | ||
|  | func (m *EthereumGetAddress) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumGetAddress) GetShowDisplay() bool { | ||
|  | 	if m != nil && m.ShowDisplay != nil { | ||
|  | 		return *m.ShowDisplay | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Contains address derived from device private seed | ||
|  | // @prev GetAddress | ||
|  | type Address struct { | ||
|  | 	Address          *string `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *Address) Reset()                    { *m = Address{} } | ||
|  | func (m *Address) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*Address) ProtoMessage()               {} | ||
|  | func (*Address) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} } | ||
|  | 
 | ||
|  | func (m *Address) GetAddress() string { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Contains an Ethereum address derived from device private seed | ||
|  | // @prev EthereumGetAddress | ||
|  | type EthereumAddress struct { | ||
|  | 	Address          []byte `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumAddress) Reset()                    { *m = EthereumAddress{} } | ||
|  | func (m *EthereumAddress) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumAddress) ProtoMessage()               {} | ||
|  | func (*EthereumAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} } | ||
|  | 
 | ||
|  | func (m *EthereumAddress) GetAddress() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Address | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Request device to wipe all sensitive data and settings | ||
|  | // @next ButtonRequest | ||
|  | type WipeDevice struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *WipeDevice) Reset()                    { *m = WipeDevice{} } | ||
|  | func (m *WipeDevice) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*WipeDevice) ProtoMessage()               {} | ||
|  | func (*WipeDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{25} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Load seed and related internal settings from the computer | ||
|  | // @next ButtonRequest | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type LoadDevice struct { | ||
|  | 	Mnemonic             *string     `protobuf:"bytes,1,opt,name=mnemonic" json:"mnemonic,omitempty"` | ||
|  | 	Node                 *HDNodeType `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"` | ||
|  | 	Pin                  *string     `protobuf:"bytes,3,opt,name=pin" json:"pin,omitempty"` | ||
|  | 	PassphraseProtection *bool       `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` | ||
|  | 	Language             *string     `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` | ||
|  | 	Label                *string     `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` | ||
|  | 	SkipChecksum         *bool       `protobuf:"varint,7,opt,name=skip_checksum,json=skipChecksum" json:"skip_checksum,omitempty"` | ||
|  | 	U2FCounter           *uint32     `protobuf:"varint,8,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` | ||
|  | 	XXX_unrecognized     []byte      `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) Reset()                    { *m = LoadDevice{} } | ||
|  | func (m *LoadDevice) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*LoadDevice) ProtoMessage()               {} | ||
|  | func (*LoadDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} } | ||
|  | 
 | ||
|  | const Default_LoadDevice_Language string = "english" | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetMnemonic() string { | ||
|  | 	if m != nil && m.Mnemonic != nil { | ||
|  | 		return *m.Mnemonic | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetNode() *HDNodeType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Node | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetPin() string { | ||
|  | 	if m != nil && m.Pin != nil { | ||
|  | 		return *m.Pin | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetPassphraseProtection() bool { | ||
|  | 	if m != nil && m.PassphraseProtection != nil { | ||
|  | 		return *m.PassphraseProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetLanguage() string { | ||
|  | 	if m != nil && m.Language != nil { | ||
|  | 		return *m.Language | ||
|  | 	} | ||
|  | 	return Default_LoadDevice_Language | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetLabel() string { | ||
|  | 	if m != nil && m.Label != nil { | ||
|  | 		return *m.Label | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetSkipChecksum() bool { | ||
|  | 	if m != nil && m.SkipChecksum != nil { | ||
|  | 		return *m.SkipChecksum | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *LoadDevice) GetU2FCounter() uint32 { | ||
|  | 	if m != nil && m.U2FCounter != nil { | ||
|  | 		return *m.U2FCounter | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to do initialization involving user interaction | ||
|  | // @next EntropyRequest | ||
|  | // @next Failure | ||
|  | type ResetDevice struct { | ||
|  | 	DisplayRandom        *bool   `protobuf:"varint,1,opt,name=display_random,json=displayRandom" json:"display_random,omitempty"` | ||
|  | 	Strength             *uint32 `protobuf:"varint,2,opt,name=strength,def=256" json:"strength,omitempty"` | ||
|  | 	PassphraseProtection *bool   `protobuf:"varint,3,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` | ||
|  | 	PinProtection        *bool   `protobuf:"varint,4,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` | ||
|  | 	Language             *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` | ||
|  | 	Label                *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` | ||
|  | 	U2FCounter           *uint32 `protobuf:"varint,7,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` | ||
|  | 	SkipBackup           *bool   `protobuf:"varint,8,opt,name=skip_backup,json=skipBackup" json:"skip_backup,omitempty"` | ||
|  | 	XXX_unrecognized     []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) Reset()                    { *m = ResetDevice{} } | ||
|  | func (m *ResetDevice) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ResetDevice) ProtoMessage()               {} | ||
|  | func (*ResetDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} } | ||
|  | 
 | ||
|  | const Default_ResetDevice_Strength uint32 = 256 | ||
|  | const Default_ResetDevice_Language string = "english" | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetDisplayRandom() bool { | ||
|  | 	if m != nil && m.DisplayRandom != nil { | ||
|  | 		return *m.DisplayRandom | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetStrength() uint32 { | ||
|  | 	if m != nil && m.Strength != nil { | ||
|  | 		return *m.Strength | ||
|  | 	} | ||
|  | 	return Default_ResetDevice_Strength | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetPassphraseProtection() bool { | ||
|  | 	if m != nil && m.PassphraseProtection != nil { | ||
|  | 		return *m.PassphraseProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetPinProtection() bool { | ||
|  | 	if m != nil && m.PinProtection != nil { | ||
|  | 		return *m.PinProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetLanguage() string { | ||
|  | 	if m != nil && m.Language != nil { | ||
|  | 		return *m.Language | ||
|  | 	} | ||
|  | 	return Default_ResetDevice_Language | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetLabel() string { | ||
|  | 	if m != nil && m.Label != nil { | ||
|  | 		return *m.Label | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetU2FCounter() uint32 { | ||
|  | 	if m != nil && m.U2FCounter != nil { | ||
|  | 		return *m.U2FCounter | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ResetDevice) GetSkipBackup() bool { | ||
|  | 	if m != nil && m.SkipBackup != nil { | ||
|  | 		return *m.SkipBackup | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Perform backup of the device seed if not backed up using ResetDevice | ||
|  | // @next ButtonRequest | ||
|  | type BackupDevice struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *BackupDevice) Reset()                    { *m = BackupDevice{} } | ||
|  | func (m *BackupDevice) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*BackupDevice) ProtoMessage()               {} | ||
|  | func (*BackupDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Ask for additional entropy from host computer | ||
|  | // @prev ResetDevice | ||
|  | // @next EntropyAck | ||
|  | type EntropyRequest struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EntropyRequest) Reset()                    { *m = EntropyRequest{} } | ||
|  | func (m *EntropyRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EntropyRequest) ProtoMessage()               {} | ||
|  | func (*EntropyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Provide additional entropy for seed generation function | ||
|  | // @prev EntropyRequest | ||
|  | // @next ButtonRequest | ||
|  | type EntropyAck struct { | ||
|  | 	Entropy          []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EntropyAck) Reset()                    { *m = EntropyAck{} } | ||
|  | func (m *EntropyAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EntropyAck) ProtoMessage()               {} | ||
|  | func (*EntropyAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} } | ||
|  | 
 | ||
|  | func (m *EntropyAck) GetEntropy() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Entropy | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Start recovery workflow asking user for specific words of mnemonic | ||
|  | // Used to recovery device safely even on untrusted computer. | ||
|  | // @next WordRequest | ||
|  | type RecoveryDevice struct { | ||
|  | 	WordCount            *uint32 `protobuf:"varint,1,opt,name=word_count,json=wordCount" json:"word_count,omitempty"` | ||
|  | 	PassphraseProtection *bool   `protobuf:"varint,2,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` | ||
|  | 	PinProtection        *bool   `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` | ||
|  | 	Language             *string `protobuf:"bytes,4,opt,name=language,def=english" json:"language,omitempty"` | ||
|  | 	Label                *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"` | ||
|  | 	EnforceWordlist      *bool   `protobuf:"varint,6,opt,name=enforce_wordlist,json=enforceWordlist" json:"enforce_wordlist,omitempty"` | ||
|  | 	// 7 reserved for unused recovery method | ||
|  | 	Type             *uint32 `protobuf:"varint,8,opt,name=type" json:"type,omitempty"` | ||
|  | 	U2FCounter       *uint32 `protobuf:"varint,9,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` | ||
|  | 	DryRun           *bool   `protobuf:"varint,10,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) Reset()                    { *m = RecoveryDevice{} } | ||
|  | func (m *RecoveryDevice) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*RecoveryDevice) ProtoMessage()               {} | ||
|  | func (*RecoveryDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{31} } | ||
|  | 
 | ||
|  | const Default_RecoveryDevice_Language string = "english" | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetWordCount() uint32 { | ||
|  | 	if m != nil && m.WordCount != nil { | ||
|  | 		return *m.WordCount | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetPassphraseProtection() bool { | ||
|  | 	if m != nil && m.PassphraseProtection != nil { | ||
|  | 		return *m.PassphraseProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetPinProtection() bool { | ||
|  | 	if m != nil && m.PinProtection != nil { | ||
|  | 		return *m.PinProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetLanguage() string { | ||
|  | 	if m != nil && m.Language != nil { | ||
|  | 		return *m.Language | ||
|  | 	} | ||
|  | 	return Default_RecoveryDevice_Language | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetLabel() string { | ||
|  | 	if m != nil && m.Label != nil { | ||
|  | 		return *m.Label | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetEnforceWordlist() bool { | ||
|  | 	if m != nil && m.EnforceWordlist != nil { | ||
|  | 		return *m.EnforceWordlist | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetType() uint32 { | ||
|  | 	if m != nil && m.Type != nil { | ||
|  | 		return *m.Type | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetU2FCounter() uint32 { | ||
|  | 	if m != nil && m.U2FCounter != nil { | ||
|  | 		return *m.U2FCounter | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *RecoveryDevice) GetDryRun() bool { | ||
|  | 	if m != nil && m.DryRun != nil { | ||
|  | 		return *m.DryRun | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device is waiting for user to enter word of the mnemonic | ||
|  | // Its position is shown only on device's internal display. | ||
|  | // @prev RecoveryDevice | ||
|  | // @prev WordAck | ||
|  | type WordRequest struct { | ||
|  | 	Type             *WordRequestType `protobuf:"varint,1,opt,name=type,enum=WordRequestType" json:"type,omitempty"` | ||
|  | 	XXX_unrecognized []byte           `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *WordRequest) Reset()                    { *m = WordRequest{} } | ||
|  | func (m *WordRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*WordRequest) ProtoMessage()               {} | ||
|  | func (*WordRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{32} } | ||
|  | 
 | ||
|  | func (m *WordRequest) GetType() WordRequestType { | ||
|  | 	if m != nil && m.Type != nil { | ||
|  | 		return *m.Type | ||
|  | 	} | ||
|  | 	return WordRequestType_WordRequestType_Plain | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Computer replies with word from the mnemonic | ||
|  | // @prev WordRequest | ||
|  | // @next WordRequest | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type WordAck struct { | ||
|  | 	Word             *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *WordAck) Reset()                    { *m = WordAck{} } | ||
|  | func (m *WordAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*WordAck) ProtoMessage()               {} | ||
|  | func (*WordAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{33} } | ||
|  | 
 | ||
|  | func (m *WordAck) GetWord() string { | ||
|  | 	if m != nil && m.Word != nil { | ||
|  | 		return *m.Word | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to sign message | ||
|  | // @next MessageSignature | ||
|  | // @next Failure | ||
|  | type SignMessage struct { | ||
|  | 	AddressN         []uint32         `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	Message          []byte           `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` | ||
|  | 	CoinName         *string          `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	ScriptType       *InputScriptType `protobuf:"varint,4,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` | ||
|  | 	XXX_unrecognized []byte           `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignMessage) Reset()                    { *m = SignMessage{} } | ||
|  | func (m *SignMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SignMessage) ProtoMessage()               {} | ||
|  | func (*SignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{34} } | ||
|  | 
 | ||
|  | const Default_SignMessage_CoinName string = "Bitcoin" | ||
|  | const Default_SignMessage_ScriptType InputScriptType = InputScriptType_SPENDADDRESS | ||
|  | 
 | ||
|  | func (m *SignMessage) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignMessage) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_SignMessage_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignMessage) GetScriptType() InputScriptType { | ||
|  | 	if m != nil && m.ScriptType != nil { | ||
|  | 		return *m.ScriptType | ||
|  | 	} | ||
|  | 	return Default_SignMessage_ScriptType | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to verify message | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type VerifyMessage struct { | ||
|  | 	Address          *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	Signature        []byte  `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` | ||
|  | 	Message          []byte  `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` | ||
|  | 	CoinName         *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *VerifyMessage) Reset()                    { *m = VerifyMessage{} } | ||
|  | func (m *VerifyMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*VerifyMessage) ProtoMessage()               {} | ||
|  | func (*VerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{35} } | ||
|  | 
 | ||
|  | const Default_VerifyMessage_CoinName string = "Bitcoin" | ||
|  | 
 | ||
|  | func (m *VerifyMessage) GetAddress() string { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *VerifyMessage) GetSignature() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Signature | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *VerifyMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *VerifyMessage) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_VerifyMessage_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Signed message | ||
|  | // @prev SignMessage | ||
|  | type MessageSignature struct { | ||
|  | 	Address          *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	Signature        []byte  `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *MessageSignature) Reset()                    { *m = MessageSignature{} } | ||
|  | func (m *MessageSignature) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*MessageSignature) ProtoMessage()               {} | ||
|  | func (*MessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{36} } | ||
|  | 
 | ||
|  | func (m *MessageSignature) GetAddress() string { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *MessageSignature) GetSignature() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Signature | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to encrypt message | ||
|  | // @next EncryptedMessage | ||
|  | // @next Failure | ||
|  | type EncryptMessage struct { | ||
|  | 	Pubkey           []byte   `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"` | ||
|  | 	Message          []byte   `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` | ||
|  | 	DisplayOnly      *bool    `protobuf:"varint,3,opt,name=display_only,json=displayOnly" json:"display_only,omitempty"` | ||
|  | 	AddressN         []uint32 `protobuf:"varint,4,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	CoinName         *string  `protobuf:"bytes,5,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptMessage) Reset()                    { *m = EncryptMessage{} } | ||
|  | func (m *EncryptMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EncryptMessage) ProtoMessage()               {} | ||
|  | func (*EncryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{37} } | ||
|  | 
 | ||
|  | const Default_EncryptMessage_CoinName string = "Bitcoin" | ||
|  | 
 | ||
|  | func (m *EncryptMessage) GetPubkey() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Pubkey | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptMessage) GetDisplayOnly() bool { | ||
|  | 	if m != nil && m.DisplayOnly != nil { | ||
|  | 		return *m.DisplayOnly | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptMessage) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptMessage) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_EncryptMessage_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Encrypted message | ||
|  | // @prev EncryptMessage | ||
|  | type EncryptedMessage struct { | ||
|  | 	Nonce            []byte `protobuf:"bytes,1,opt,name=nonce" json:"nonce,omitempty"` | ||
|  | 	Message          []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` | ||
|  | 	Hmac             []byte `protobuf:"bytes,3,opt,name=hmac" json:"hmac,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptedMessage) Reset()                    { *m = EncryptedMessage{} } | ||
|  | func (m *EncryptedMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EncryptedMessage) ProtoMessage()               {} | ||
|  | func (*EncryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{38} } | ||
|  | 
 | ||
|  | func (m *EncryptedMessage) GetNonce() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Nonce | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptedMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EncryptedMessage) GetHmac() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Hmac | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to decrypt message | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type DecryptMessage struct { | ||
|  | 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	Nonce            []byte   `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` | ||
|  | 	Message          []byte   `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` | ||
|  | 	Hmac             []byte   `protobuf:"bytes,4,opt,name=hmac" json:"hmac,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DecryptMessage) Reset()                    { *m = DecryptMessage{} } | ||
|  | func (m *DecryptMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DecryptMessage) ProtoMessage()               {} | ||
|  | func (*DecryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{39} } | ||
|  | 
 | ||
|  | func (m *DecryptMessage) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DecryptMessage) GetNonce() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Nonce | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DecryptMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DecryptMessage) GetHmac() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Hmac | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Decrypted message | ||
|  | // @prev DecryptedMessage | ||
|  | type DecryptedMessage struct { | ||
|  | 	Message          []byte  `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` | ||
|  | 	Address          *string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DecryptedMessage) Reset()                    { *m = DecryptedMessage{} } | ||
|  | func (m *DecryptedMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DecryptedMessage) ProtoMessage()               {} | ||
|  | func (*DecryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{40} } | ||
|  | 
 | ||
|  | func (m *DecryptedMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DecryptedMessage) GetAddress() string { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to encrypt or decrypt value of given key | ||
|  | // @next CipheredKeyValue | ||
|  | // @next Failure | ||
|  | type CipherKeyValue struct { | ||
|  | 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	Key              *string  `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"` | ||
|  | 	Value            []byte   `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` | ||
|  | 	Encrypt          *bool    `protobuf:"varint,4,opt,name=encrypt" json:"encrypt,omitempty"` | ||
|  | 	AskOnEncrypt     *bool    `protobuf:"varint,5,opt,name=ask_on_encrypt,json=askOnEncrypt" json:"ask_on_encrypt,omitempty"` | ||
|  | 	AskOnDecrypt     *bool    `protobuf:"varint,6,opt,name=ask_on_decrypt,json=askOnDecrypt" json:"ask_on_decrypt,omitempty"` | ||
|  | 	Iv               []byte   `protobuf:"bytes,7,opt,name=iv" json:"iv,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) Reset()                    { *m = CipherKeyValue{} } | ||
|  | func (m *CipherKeyValue) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*CipherKeyValue) ProtoMessage()               {} | ||
|  | func (*CipherKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{41} } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetKey() string { | ||
|  | 	if m != nil && m.Key != nil { | ||
|  | 		return *m.Key | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetValue() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Value | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetEncrypt() bool { | ||
|  | 	if m != nil && m.Encrypt != nil { | ||
|  | 		return *m.Encrypt | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetAskOnEncrypt() bool { | ||
|  | 	if m != nil && m.AskOnEncrypt != nil { | ||
|  | 		return *m.AskOnEncrypt | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetAskOnDecrypt() bool { | ||
|  | 	if m != nil && m.AskOnDecrypt != nil { | ||
|  | 		return *m.AskOnDecrypt | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipherKeyValue) GetIv() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Iv | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Return ciphered/deciphered value | ||
|  | // @prev CipherKeyValue | ||
|  | type CipheredKeyValue struct { | ||
|  | 	Value            []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *CipheredKeyValue) Reset()                    { *m = CipheredKeyValue{} } | ||
|  | func (m *CipheredKeyValue) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*CipheredKeyValue) ProtoMessage()               {} | ||
|  | func (*CipheredKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{42} } | ||
|  | 
 | ||
|  | func (m *CipheredKeyValue) GetValue() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Value | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Estimated size of the transaction | ||
|  | // This behaves exactly like SignTx, which means that it can ask using TxRequest | ||
|  | // This call is non-blocking (except possible PassphraseRequest to unlock the seed) | ||
|  | // @next TxSize | ||
|  | // @next Failure | ||
|  | type EstimateTxSize struct { | ||
|  | 	OutputsCount     *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` | ||
|  | 	InputsCount      *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` | ||
|  | 	CoinName         *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EstimateTxSize) Reset()                    { *m = EstimateTxSize{} } | ||
|  | func (m *EstimateTxSize) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EstimateTxSize) ProtoMessage()               {} | ||
|  | func (*EstimateTxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{43} } | ||
|  | 
 | ||
|  | const Default_EstimateTxSize_CoinName string = "Bitcoin" | ||
|  | 
 | ||
|  | func (m *EstimateTxSize) GetOutputsCount() uint32 { | ||
|  | 	if m != nil && m.OutputsCount != nil { | ||
|  | 		return *m.OutputsCount | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EstimateTxSize) GetInputsCount() uint32 { | ||
|  | 	if m != nil && m.InputsCount != nil { | ||
|  | 		return *m.InputsCount | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EstimateTxSize) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_EstimateTxSize_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Estimated size of the transaction | ||
|  | // @prev EstimateTxSize | ||
|  | type TxSize struct { | ||
|  | 	TxSize           *uint32 `protobuf:"varint,1,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *TxSize) Reset()                    { *m = TxSize{} } | ||
|  | func (m *TxSize) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*TxSize) ProtoMessage()               {} | ||
|  | func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{44} } | ||
|  | 
 | ||
|  | func (m *TxSize) GetTxSize() uint32 { | ||
|  | 	if m != nil && m.TxSize != nil { | ||
|  | 		return *m.TxSize | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to sign transaction | ||
|  | // @next PassphraseRequest | ||
|  | // @next PinMatrixRequest | ||
|  | // @next TxRequest | ||
|  | // @next Failure | ||
|  | type SignTx struct { | ||
|  | 	OutputsCount     *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` | ||
|  | 	InputsCount      *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` | ||
|  | 	CoinName         *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	Version          *uint32 `protobuf:"varint,4,opt,name=version,def=1" json:"version,omitempty"` | ||
|  | 	LockTime         *uint32 `protobuf:"varint,5,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignTx) Reset()                    { *m = SignTx{} } | ||
|  | func (m *SignTx) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SignTx) ProtoMessage()               {} | ||
|  | func (*SignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{45} } | ||
|  | 
 | ||
|  | const Default_SignTx_CoinName string = "Bitcoin" | ||
|  | const Default_SignTx_Version uint32 = 1 | ||
|  | const Default_SignTx_LockTime uint32 = 0 | ||
|  | 
 | ||
|  | func (m *SignTx) GetOutputsCount() uint32 { | ||
|  | 	if m != nil && m.OutputsCount != nil { | ||
|  | 		return *m.OutputsCount | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignTx) GetInputsCount() uint32 { | ||
|  | 	if m != nil && m.InputsCount != nil { | ||
|  | 		return *m.InputsCount | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignTx) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_SignTx_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignTx) GetVersion() uint32 { | ||
|  | 	if m != nil && m.Version != nil { | ||
|  | 		return *m.Version | ||
|  | 	} | ||
|  | 	return Default_SignTx_Version | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignTx) GetLockTime() uint32 { | ||
|  | 	if m != nil && m.LockTime != nil { | ||
|  | 		return *m.LockTime | ||
|  | 	} | ||
|  | 	return Default_SignTx_LockTime | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Simplified transaction signing | ||
|  | // This method doesn't support streaming, so there are hardware limits in number of inputs and outputs. | ||
|  | // In case of success, the result is returned using TxRequest message. | ||
|  | // @next PassphraseRequest | ||
|  | // @next PinMatrixRequest | ||
|  | // @next TxRequest | ||
|  | // @next Failure | ||
|  | type SimpleSignTx struct { | ||
|  | 	Inputs           []*TxInputType     `protobuf:"bytes,1,rep,name=inputs" json:"inputs,omitempty"` | ||
|  | 	Outputs          []*TxOutputType    `protobuf:"bytes,2,rep,name=outputs" json:"outputs,omitempty"` | ||
|  | 	Transactions     []*TransactionType `protobuf:"bytes,3,rep,name=transactions" json:"transactions,omitempty"` | ||
|  | 	CoinName         *string            `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` | ||
|  | 	Version          *uint32            `protobuf:"varint,5,opt,name=version,def=1" json:"version,omitempty"` | ||
|  | 	LockTime         *uint32            `protobuf:"varint,6,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` | ||
|  | 	XXX_unrecognized []byte             `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) Reset()                    { *m = SimpleSignTx{} } | ||
|  | func (m *SimpleSignTx) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SimpleSignTx) ProtoMessage()               {} | ||
|  | func (*SimpleSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{46} } | ||
|  | 
 | ||
|  | const Default_SimpleSignTx_CoinName string = "Bitcoin" | ||
|  | const Default_SimpleSignTx_Version uint32 = 1 | ||
|  | const Default_SimpleSignTx_LockTime uint32 = 0 | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) GetInputs() []*TxInputType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Inputs | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) GetOutputs() []*TxOutputType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Outputs | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) GetTransactions() []*TransactionType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Transactions | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) GetCoinName() string { | ||
|  | 	if m != nil && m.CoinName != nil { | ||
|  | 		return *m.CoinName | ||
|  | 	} | ||
|  | 	return Default_SimpleSignTx_CoinName | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) GetVersion() uint32 { | ||
|  | 	if m != nil && m.Version != nil { | ||
|  | 		return *m.Version | ||
|  | 	} | ||
|  | 	return Default_SimpleSignTx_Version | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SimpleSignTx) GetLockTime() uint32 { | ||
|  | 	if m != nil && m.LockTime != nil { | ||
|  | 		return *m.LockTime | ||
|  | 	} | ||
|  | 	return Default_SimpleSignTx_LockTime | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device asks for information for signing transaction or returns the last result | ||
|  | // If request_index is set, device awaits TxAck message (with fields filled in according to request_type) | ||
|  | // If signature_index is set, 'signature' contains signed input of signature_index's input | ||
|  | // @prev SignTx | ||
|  | // @prev SimpleSignTx | ||
|  | // @prev TxAck | ||
|  | type TxRequest struct { | ||
|  | 	RequestType      *RequestType             `protobuf:"varint,1,opt,name=request_type,json=requestType,enum=RequestType" json:"request_type,omitempty"` | ||
|  | 	Details          *TxRequestDetailsType    `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` | ||
|  | 	Serialized       *TxRequestSerializedType `protobuf:"bytes,3,opt,name=serialized" json:"serialized,omitempty"` | ||
|  | 	XXX_unrecognized []byte                   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *TxRequest) Reset()                    { *m = TxRequest{} } | ||
|  | func (m *TxRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*TxRequest) ProtoMessage()               {} | ||
|  | func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{47} } | ||
|  | 
 | ||
|  | func (m *TxRequest) GetRequestType() RequestType { | ||
|  | 	if m != nil && m.RequestType != nil { | ||
|  | 		return *m.RequestType | ||
|  | 	} | ||
|  | 	return RequestType_TXINPUT | ||
|  | } | ||
|  | 
 | ||
|  | func (m *TxRequest) GetDetails() *TxRequestDetailsType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Details | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *TxRequest) GetSerialized() *TxRequestSerializedType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Serialized | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Reported transaction data | ||
|  | // @prev TxRequest | ||
|  | // @next TxRequest | ||
|  | type TxAck struct { | ||
|  | 	Tx               *TransactionType `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"` | ||
|  | 	XXX_unrecognized []byte           `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *TxAck) Reset()                    { *m = TxAck{} } | ||
|  | func (m *TxAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*TxAck) ProtoMessage()               {} | ||
|  | func (*TxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{48} } | ||
|  | 
 | ||
|  | func (m *TxAck) GetTx() *TransactionType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Tx | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to sign transaction | ||
|  | // All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. | ||
|  | // Note: the first at most 1024 bytes of data MUST be transmitted as part of this message. | ||
|  | // @next PassphraseRequest | ||
|  | // @next PinMatrixRequest | ||
|  | // @next EthereumTxRequest | ||
|  | // @next Failure | ||
|  | type EthereumSignTx struct { | ||
|  | 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	Nonce            []byte   `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` | ||
|  | 	GasPrice         []byte   `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice" json:"gas_price,omitempty"` | ||
|  | 	GasLimit         []byte   `protobuf:"bytes,4,opt,name=gas_limit,json=gasLimit" json:"gas_limit,omitempty"` | ||
|  | 	To               []byte   `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"` | ||
|  | 	Value            []byte   `protobuf:"bytes,6,opt,name=value" json:"value,omitempty"` | ||
|  | 	DataInitialChunk []byte   `protobuf:"bytes,7,opt,name=data_initial_chunk,json=dataInitialChunk" json:"data_initial_chunk,omitempty"` | ||
|  | 	DataLength       *uint32  `protobuf:"varint,8,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` | ||
|  | 	ChainId          *uint32  `protobuf:"varint,9,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) Reset()                    { *m = EthereumSignTx{} } | ||
|  | func (m *EthereumSignTx) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumSignTx) ProtoMessage()               {} | ||
|  | func (*EthereumSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{49} } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetNonce() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Nonce | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetGasPrice() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.GasPrice | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetGasLimit() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.GasLimit | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetTo() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.To | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetValue() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Value | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetDataInitialChunk() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.DataInitialChunk | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetDataLength() uint32 { | ||
|  | 	if m != nil && m.DataLength != nil { | ||
|  | 		return *m.DataLength | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignTx) GetChainId() uint32 { | ||
|  | 	if m != nil && m.ChainId != nil { | ||
|  | 		return *m.ChainId | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device asks for more data from transaction payload, or returns the signature. | ||
|  | // If data_length is set, device awaits that many more bytes of payload. | ||
|  | // Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present. | ||
|  | // @prev EthereumSignTx | ||
|  | // @next EthereumTxAck | ||
|  | type EthereumTxRequest struct { | ||
|  | 	DataLength       *uint32 `protobuf:"varint,1,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` | ||
|  | 	SignatureV       *uint32 `protobuf:"varint,2,opt,name=signature_v,json=signatureV" json:"signature_v,omitempty"` | ||
|  | 	SignatureR       []byte  `protobuf:"bytes,3,opt,name=signature_r,json=signatureR" json:"signature_r,omitempty"` | ||
|  | 	SignatureS       []byte  `protobuf:"bytes,4,opt,name=signature_s,json=signatureS" json:"signature_s,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumTxRequest) Reset()                    { *m = EthereumTxRequest{} } | ||
|  | func (m *EthereumTxRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumTxRequest) ProtoMessage()               {} | ||
|  | func (*EthereumTxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{50} } | ||
|  | 
 | ||
|  | func (m *EthereumTxRequest) GetDataLength() uint32 { | ||
|  | 	if m != nil && m.DataLength != nil { | ||
|  | 		return *m.DataLength | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumTxRequest) GetSignatureV() uint32 { | ||
|  | 	if m != nil && m.SignatureV != nil { | ||
|  | 		return *m.SignatureV | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumTxRequest) GetSignatureR() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.SignatureR | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumTxRequest) GetSignatureS() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.SignatureS | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Transaction payload data. | ||
|  | // @prev EthereumTxRequest | ||
|  | // @next EthereumTxRequest | ||
|  | type EthereumTxAck struct { | ||
|  | 	DataChunk        []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumTxAck) Reset()                    { *m = EthereumTxAck{} } | ||
|  | func (m *EthereumTxAck) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumTxAck) ProtoMessage()               {} | ||
|  | func (*EthereumTxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{51} } | ||
|  | 
 | ||
|  | func (m *EthereumTxAck) GetDataChunk() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.DataChunk | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to sign message | ||
|  | // @next EthereumMessageSignature | ||
|  | // @next Failure | ||
|  | type EthereumSignMessage struct { | ||
|  | 	AddressN         []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` | ||
|  | 	Message          []byte   `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` | ||
|  | 	XXX_unrecognized []byte   `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignMessage) Reset()                    { *m = EthereumSignMessage{} } | ||
|  | func (m *EthereumSignMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumSignMessage) ProtoMessage()               {} | ||
|  | func (*EthereumSignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{52} } | ||
|  | 
 | ||
|  | func (m *EthereumSignMessage) GetAddressN() []uint32 { | ||
|  | 	if m != nil { | ||
|  | 		return m.AddressN | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumSignMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to verify message | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type EthereumVerifyMessage struct { | ||
|  | 	Address          []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	Signature        []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` | ||
|  | 	Message          []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumVerifyMessage) Reset()                    { *m = EthereumVerifyMessage{} } | ||
|  | func (m *EthereumVerifyMessage) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumVerifyMessage) ProtoMessage()               {} | ||
|  | func (*EthereumVerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{53} } | ||
|  | 
 | ||
|  | func (m *EthereumVerifyMessage) GetAddress() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Address | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumVerifyMessage) GetSignature() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Signature | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumVerifyMessage) GetMessage() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Message | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Signed message | ||
|  | // @prev EthereumSignMessage | ||
|  | type EthereumMessageSignature struct { | ||
|  | 	Address          []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	Signature        []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumMessageSignature) Reset()                    { *m = EthereumMessageSignature{} } | ||
|  | func (m *EthereumMessageSignature) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*EthereumMessageSignature) ProtoMessage()               {} | ||
|  | func (*EthereumMessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{54} } | ||
|  | 
 | ||
|  | func (m *EthereumMessageSignature) GetAddress() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Address | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *EthereumMessageSignature) GetSignature() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Signature | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to sign identity | ||
|  | // @next SignedIdentity | ||
|  | // @next Failure | ||
|  | type SignIdentity struct { | ||
|  | 	Identity         *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` | ||
|  | 	ChallengeHidden  []byte        `protobuf:"bytes,2,opt,name=challenge_hidden,json=challengeHidden" json:"challenge_hidden,omitempty"` | ||
|  | 	ChallengeVisual  *string       `protobuf:"bytes,3,opt,name=challenge_visual,json=challengeVisual" json:"challenge_visual,omitempty"` | ||
|  | 	EcdsaCurveName   *string       `protobuf:"bytes,4,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` | ||
|  | 	XXX_unrecognized []byte        `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignIdentity) Reset()                    { *m = SignIdentity{} } | ||
|  | func (m *SignIdentity) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SignIdentity) ProtoMessage()               {} | ||
|  | func (*SignIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{55} } | ||
|  | 
 | ||
|  | func (m *SignIdentity) GetIdentity() *IdentityType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Identity | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignIdentity) GetChallengeHidden() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.ChallengeHidden | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignIdentity) GetChallengeVisual() string { | ||
|  | 	if m != nil && m.ChallengeVisual != nil { | ||
|  | 		return *m.ChallengeVisual | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignIdentity) GetEcdsaCurveName() string { | ||
|  | 	if m != nil && m.EcdsaCurveName != nil { | ||
|  | 		return *m.EcdsaCurveName | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device provides signed identity | ||
|  | // @prev SignIdentity | ||
|  | type SignedIdentity struct { | ||
|  | 	Address          *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	PublicKey        []byte  `protobuf:"bytes,2,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` | ||
|  | 	Signature        []byte  `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignedIdentity) Reset()                    { *m = SignedIdentity{} } | ||
|  | func (m *SignedIdentity) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SignedIdentity) ProtoMessage()               {} | ||
|  | func (*SignedIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{56} } | ||
|  | 
 | ||
|  | func (m *SignedIdentity) GetAddress() string { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignedIdentity) GetPublicKey() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.PublicKey | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SignedIdentity) GetSignature() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Signature | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to generate ECDH session key | ||
|  | // @next ECDHSessionKey | ||
|  | // @next Failure | ||
|  | type GetECDHSessionKey struct { | ||
|  | 	Identity         *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` | ||
|  | 	PeerPublicKey    []byte        `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey" json:"peer_public_key,omitempty"` | ||
|  | 	EcdsaCurveName   *string       `protobuf:"bytes,3,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` | ||
|  | 	XXX_unrecognized []byte        `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetECDHSessionKey) Reset()                    { *m = GetECDHSessionKey{} } | ||
|  | func (m *GetECDHSessionKey) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*GetECDHSessionKey) ProtoMessage()               {} | ||
|  | func (*GetECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{57} } | ||
|  | 
 | ||
|  | func (m *GetECDHSessionKey) GetIdentity() *IdentityType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Identity | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetECDHSessionKey) GetPeerPublicKey() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.PeerPublicKey | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *GetECDHSessionKey) GetEcdsaCurveName() string { | ||
|  | 	if m != nil && m.EcdsaCurveName != nil { | ||
|  | 		return *m.EcdsaCurveName | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device provides ECDH session key | ||
|  | // @prev GetECDHSessionKey | ||
|  | type ECDHSessionKey struct { | ||
|  | 	SessionKey       []byte `protobuf:"bytes,1,opt,name=session_key,json=sessionKey" json:"session_key,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *ECDHSessionKey) Reset()                    { *m = ECDHSessionKey{} } | ||
|  | func (m *ECDHSessionKey) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*ECDHSessionKey) ProtoMessage()               {} | ||
|  | func (*ECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{58} } | ||
|  | 
 | ||
|  | func (m *ECDHSessionKey) GetSessionKey() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.SessionKey | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Set U2F counter | ||
|  | // @next Success | ||
|  | type SetU2FCounter struct { | ||
|  | 	U2FCounter       *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SetU2FCounter) Reset()                    { *m = SetU2FCounter{} } | ||
|  | func (m *SetU2FCounter) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SetU2FCounter) ProtoMessage()               {} | ||
|  | func (*SetU2FCounter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{59} } | ||
|  | 
 | ||
|  | func (m *SetU2FCounter) GetU2FCounter() uint32 { | ||
|  | 	if m != nil && m.U2FCounter != nil { | ||
|  | 		return *m.U2FCounter | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) | ||
|  | // @next Success | ||
|  | // @next FirmwareRequest | ||
|  | // @next Failure | ||
|  | type FirmwareErase struct { | ||
|  | 	Length           *uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *FirmwareErase) Reset()                    { *m = FirmwareErase{} } | ||
|  | func (m *FirmwareErase) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*FirmwareErase) ProtoMessage()               {} | ||
|  | func (*FirmwareErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{60} } | ||
|  | 
 | ||
|  | func (m *FirmwareErase) GetLength() uint32 { | ||
|  | 	if m != nil && m.Length != nil { | ||
|  | 		return *m.Length | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Ask for firmware chunk | ||
|  | // @next FirmwareUpload | ||
|  | type FirmwareRequest struct { | ||
|  | 	Offset           *uint32 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"` | ||
|  | 	Length           *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *FirmwareRequest) Reset()                    { *m = FirmwareRequest{} } | ||
|  | func (m *FirmwareRequest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*FirmwareRequest) ProtoMessage()               {} | ||
|  | func (*FirmwareRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{61} } | ||
|  | 
 | ||
|  | func (m *FirmwareRequest) GetOffset() uint32 { | ||
|  | 	if m != nil && m.Offset != nil { | ||
|  | 		return *m.Offset | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *FirmwareRequest) GetLength() uint32 { | ||
|  | 	if m != nil && m.Length != nil { | ||
|  | 		return *m.Length | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Send firmware in binary form to the device | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type FirmwareUpload struct { | ||
|  | 	Payload          []byte `protobuf:"bytes,1,req,name=payload" json:"payload,omitempty"` | ||
|  | 	Hash             []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *FirmwareUpload) Reset()                    { *m = FirmwareUpload{} } | ||
|  | func (m *FirmwareUpload) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*FirmwareUpload) ProtoMessage()               {} | ||
|  | func (*FirmwareUpload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{62} } | ||
|  | 
 | ||
|  | func (m *FirmwareUpload) GetPayload() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Payload | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *FirmwareUpload) GetHash() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Hash | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Perform a device self-test | ||
|  | // @next Success | ||
|  | // @next Failure | ||
|  | type SelfTest struct { | ||
|  | 	Payload          []byte `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *SelfTest) Reset()                    { *m = SelfTest{} } | ||
|  | func (m *SelfTest) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*SelfTest) ProtoMessage()               {} | ||
|  | func (*SelfTest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{63} } | ||
|  | 
 | ||
|  | func (m *SelfTest) GetPayload() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Payload | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: "Press" the button on the device | ||
|  | // @next Success | ||
|  | type DebugLinkDecision struct { | ||
|  | 	YesNo            *bool  `protobuf:"varint,1,req,name=yes_no,json=yesNo" json:"yes_no,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkDecision) Reset()                    { *m = DebugLinkDecision{} } | ||
|  | func (m *DebugLinkDecision) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkDecision) ProtoMessage()               {} | ||
|  | func (*DebugLinkDecision) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{64} } | ||
|  | 
 | ||
|  | func (m *DebugLinkDecision) GetYesNo() bool { | ||
|  | 	if m != nil && m.YesNo != nil { | ||
|  | 		return *m.YesNo | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Computer asks for device state | ||
|  | // @next DebugLinkState | ||
|  | type DebugLinkGetState struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkGetState) Reset()                    { *m = DebugLinkGetState{} } | ||
|  | func (m *DebugLinkGetState) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkGetState) ProtoMessage()               {} | ||
|  | func (*DebugLinkGetState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{65} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device current state | ||
|  | // @prev DebugLinkGetState | ||
|  | type DebugLinkState struct { | ||
|  | 	Layout               []byte      `protobuf:"bytes,1,opt,name=layout" json:"layout,omitempty"` | ||
|  | 	Pin                  *string     `protobuf:"bytes,2,opt,name=pin" json:"pin,omitempty"` | ||
|  | 	Matrix               *string     `protobuf:"bytes,3,opt,name=matrix" json:"matrix,omitempty"` | ||
|  | 	Mnemonic             *string     `protobuf:"bytes,4,opt,name=mnemonic" json:"mnemonic,omitempty"` | ||
|  | 	Node                 *HDNodeType `protobuf:"bytes,5,opt,name=node" json:"node,omitempty"` | ||
|  | 	PassphraseProtection *bool       `protobuf:"varint,6,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` | ||
|  | 	ResetWord            *string     `protobuf:"bytes,7,opt,name=reset_word,json=resetWord" json:"reset_word,omitempty"` | ||
|  | 	ResetEntropy         []byte      `protobuf:"bytes,8,opt,name=reset_entropy,json=resetEntropy" json:"reset_entropy,omitempty"` | ||
|  | 	RecoveryFakeWord     *string     `protobuf:"bytes,9,opt,name=recovery_fake_word,json=recoveryFakeWord" json:"recovery_fake_word,omitempty"` | ||
|  | 	RecoveryWordPos      *uint32     `protobuf:"varint,10,opt,name=recovery_word_pos,json=recoveryWordPos" json:"recovery_word_pos,omitempty"` | ||
|  | 	XXX_unrecognized     []byte      `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) Reset()                    { *m = DebugLinkState{} } | ||
|  | func (m *DebugLinkState) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkState) ProtoMessage()               {} | ||
|  | func (*DebugLinkState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{66} } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetLayout() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Layout | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetPin() string { | ||
|  | 	if m != nil && m.Pin != nil { | ||
|  | 		return *m.Pin | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetMatrix() string { | ||
|  | 	if m != nil && m.Matrix != nil { | ||
|  | 		return *m.Matrix | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetMnemonic() string { | ||
|  | 	if m != nil && m.Mnemonic != nil { | ||
|  | 		return *m.Mnemonic | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetNode() *HDNodeType { | ||
|  | 	if m != nil { | ||
|  | 		return m.Node | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetPassphraseProtection() bool { | ||
|  | 	if m != nil && m.PassphraseProtection != nil { | ||
|  | 		return *m.PassphraseProtection | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetResetWord() string { | ||
|  | 	if m != nil && m.ResetWord != nil { | ||
|  | 		return *m.ResetWord | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetResetEntropy() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.ResetEntropy | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetRecoveryFakeWord() string { | ||
|  | 	if m != nil && m.RecoveryFakeWord != nil { | ||
|  | 		return *m.RecoveryFakeWord | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkState) GetRecoveryWordPos() uint32 { | ||
|  | 	if m != nil && m.RecoveryWordPos != nil { | ||
|  | 		return *m.RecoveryWordPos | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Ask device to restart | ||
|  | type DebugLinkStop struct { | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkStop) Reset()                    { *m = DebugLinkStop{} } | ||
|  | func (m *DebugLinkStop) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkStop) ProtoMessage()               {} | ||
|  | func (*DebugLinkStop) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{67} } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device wants host to log event | ||
|  | type DebugLinkLog struct { | ||
|  | 	Level            *uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"` | ||
|  | 	Bucket           *string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"` | ||
|  | 	Text             *string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkLog) Reset()                    { *m = DebugLinkLog{} } | ||
|  | func (m *DebugLinkLog) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkLog) ProtoMessage()               {} | ||
|  | func (*DebugLinkLog) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{68} } | ||
|  | 
 | ||
|  | func (m *DebugLinkLog) GetLevel() uint32 { | ||
|  | 	if m != nil && m.Level != nil { | ||
|  | 		return *m.Level | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkLog) GetBucket() string { | ||
|  | 	if m != nil && m.Bucket != nil { | ||
|  | 		return *m.Bucket | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkLog) GetText() string { | ||
|  | 	if m != nil && m.Text != nil { | ||
|  | 		return *m.Text | ||
|  | 	} | ||
|  | 	return "" | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Read memory from device | ||
|  | // @next DebugLinkMemory | ||
|  | type DebugLinkMemoryRead struct { | ||
|  | 	Address          *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	Length           *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryRead) Reset()                    { *m = DebugLinkMemoryRead{} } | ||
|  | func (m *DebugLinkMemoryRead) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkMemoryRead) ProtoMessage()               {} | ||
|  | func (*DebugLinkMemoryRead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{69} } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryRead) GetAddress() uint32 { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryRead) GetLength() uint32 { | ||
|  | 	if m != nil && m.Length != nil { | ||
|  | 		return *m.Length | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Response: Device sends memory back | ||
|  | // @prev DebugLinkMemoryRead | ||
|  | type DebugLinkMemory struct { | ||
|  | 	Memory           []byte `protobuf:"bytes,1,opt,name=memory" json:"memory,omitempty"` | ||
|  | 	XXX_unrecognized []byte `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemory) Reset()                    { *m = DebugLinkMemory{} } | ||
|  | func (m *DebugLinkMemory) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkMemory) ProtoMessage()               {} | ||
|  | func (*DebugLinkMemory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{70} } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemory) GetMemory() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Memory | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Write memory to device. | ||
|  | // WARNING: Writing to the wrong location can irreparably break the device. | ||
|  | type DebugLinkMemoryWrite struct { | ||
|  | 	Address          *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` | ||
|  | 	Memory           []byte  `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"` | ||
|  | 	Flash            *bool   `protobuf:"varint,3,opt,name=flash" json:"flash,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryWrite) Reset()                    { *m = DebugLinkMemoryWrite{} } | ||
|  | func (m *DebugLinkMemoryWrite) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkMemoryWrite) ProtoMessage()               {} | ||
|  | func (*DebugLinkMemoryWrite) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{71} } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryWrite) GetAddress() uint32 { | ||
|  | 	if m != nil && m.Address != nil { | ||
|  | 		return *m.Address | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryWrite) GetMemory() []byte { | ||
|  | 	if m != nil { | ||
|  | 		return m.Memory | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkMemoryWrite) GetFlash() bool { | ||
|  | 	if m != nil && m.Flash != nil { | ||
|  | 		return *m.Flash | ||
|  | 	} | ||
|  | 	return false | ||
|  | } | ||
|  | 
 | ||
|  | // * | ||
|  | // Request: Erase block of flash on device | ||
|  | // WARNING: Writing to the wrong location can irreparably break the device. | ||
|  | type DebugLinkFlashErase struct { | ||
|  | 	Sector           *uint32 `protobuf:"varint,1,opt,name=sector" json:"sector,omitempty"` | ||
|  | 	XXX_unrecognized []byte  `json:"-"` | ||
|  | } | ||
|  | 
 | ||
|  | func (m *DebugLinkFlashErase) Reset()                    { *m = DebugLinkFlashErase{} } | ||
|  | func (m *DebugLinkFlashErase) String() string            { return proto.CompactTextString(m) } | ||
|  | func (*DebugLinkFlashErase) ProtoMessage()               {} | ||
|  | func (*DebugLinkFlashErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{72} } | ||
|  | 
 | ||
|  | func (m *DebugLinkFlashErase) GetSector() uint32 { | ||
|  | 	if m != nil && m.Sector != nil { | ||
|  | 		return *m.Sector | ||
|  | 	} | ||
|  | 	return 0 | ||
|  | } | ||
|  | 
 | ||
|  | func init() { | ||
|  | 	proto.RegisterType((*Initialize)(nil), "Initialize") | ||
|  | 	proto.RegisterType((*GetFeatures)(nil), "GetFeatures") | ||
|  | 	proto.RegisterType((*Features)(nil), "Features") | ||
|  | 	proto.RegisterType((*ClearSession)(nil), "ClearSession") | ||
|  | 	proto.RegisterType((*ApplySettings)(nil), "ApplySettings") | ||
|  | 	proto.RegisterType((*ApplyFlags)(nil), "ApplyFlags") | ||
|  | 	proto.RegisterType((*ChangePin)(nil), "ChangePin") | ||
|  | 	proto.RegisterType((*Ping)(nil), "Ping") | ||
|  | 	proto.RegisterType((*Success)(nil), "Success") | ||
|  | 	proto.RegisterType((*Failure)(nil), "Failure") | ||
|  | 	proto.RegisterType((*ButtonRequest)(nil), "ButtonRequest") | ||
|  | 	proto.RegisterType((*ButtonAck)(nil), "ButtonAck") | ||
|  | 	proto.RegisterType((*PinMatrixRequest)(nil), "PinMatrixRequest") | ||
|  | 	proto.RegisterType((*PinMatrixAck)(nil), "PinMatrixAck") | ||
|  | 	proto.RegisterType((*Cancel)(nil), "Cancel") | ||
|  | 	proto.RegisterType((*PassphraseRequest)(nil), "PassphraseRequest") | ||
|  | 	proto.RegisterType((*PassphraseAck)(nil), "PassphraseAck") | ||
|  | 	proto.RegisterType((*GetEntropy)(nil), "GetEntropy") | ||
|  | 	proto.RegisterType((*Entropy)(nil), "Entropy") | ||
|  | 	proto.RegisterType((*GetPublicKey)(nil), "GetPublicKey") | ||
|  | 	proto.RegisterType((*PublicKey)(nil), "PublicKey") | ||
|  | 	proto.RegisterType((*GetAddress)(nil), "GetAddress") | ||
|  | 	proto.RegisterType((*EthereumGetAddress)(nil), "EthereumGetAddress") | ||
|  | 	proto.RegisterType((*Address)(nil), "Address") | ||
|  | 	proto.RegisterType((*EthereumAddress)(nil), "EthereumAddress") | ||
|  | 	proto.RegisterType((*WipeDevice)(nil), "WipeDevice") | ||
|  | 	proto.RegisterType((*LoadDevice)(nil), "LoadDevice") | ||
|  | 	proto.RegisterType((*ResetDevice)(nil), "ResetDevice") | ||
|  | 	proto.RegisterType((*BackupDevice)(nil), "BackupDevice") | ||
|  | 	proto.RegisterType((*EntropyRequest)(nil), "EntropyRequest") | ||
|  | 	proto.RegisterType((*EntropyAck)(nil), "EntropyAck") | ||
|  | 	proto.RegisterType((*RecoveryDevice)(nil), "RecoveryDevice") | ||
|  | 	proto.RegisterType((*WordRequest)(nil), "WordRequest") | ||
|  | 	proto.RegisterType((*WordAck)(nil), "WordAck") | ||
|  | 	proto.RegisterType((*SignMessage)(nil), "SignMessage") | ||
|  | 	proto.RegisterType((*VerifyMessage)(nil), "VerifyMessage") | ||
|  | 	proto.RegisterType((*MessageSignature)(nil), "MessageSignature") | ||
|  | 	proto.RegisterType((*EncryptMessage)(nil), "EncryptMessage") | ||
|  | 	proto.RegisterType((*EncryptedMessage)(nil), "EncryptedMessage") | ||
|  | 	proto.RegisterType((*DecryptMessage)(nil), "DecryptMessage") | ||
|  | 	proto.RegisterType((*DecryptedMessage)(nil), "DecryptedMessage") | ||
|  | 	proto.RegisterType((*CipherKeyValue)(nil), "CipherKeyValue") | ||
|  | 	proto.RegisterType((*CipheredKeyValue)(nil), "CipheredKeyValue") | ||
|  | 	proto.RegisterType((*EstimateTxSize)(nil), "EstimateTxSize") | ||
|  | 	proto.RegisterType((*TxSize)(nil), "TxSize") | ||
|  | 	proto.RegisterType((*SignTx)(nil), "SignTx") | ||
|  | 	proto.RegisterType((*SimpleSignTx)(nil), "SimpleSignTx") | ||
|  | 	proto.RegisterType((*TxRequest)(nil), "TxRequest") | ||
|  | 	proto.RegisterType((*TxAck)(nil), "TxAck") | ||
|  | 	proto.RegisterType((*EthereumSignTx)(nil), "EthereumSignTx") | ||
|  | 	proto.RegisterType((*EthereumTxRequest)(nil), "EthereumTxRequest") | ||
|  | 	proto.RegisterType((*EthereumTxAck)(nil), "EthereumTxAck") | ||
|  | 	proto.RegisterType((*EthereumSignMessage)(nil), "EthereumSignMessage") | ||
|  | 	proto.RegisterType((*EthereumVerifyMessage)(nil), "EthereumVerifyMessage") | ||
|  | 	proto.RegisterType((*EthereumMessageSignature)(nil), "EthereumMessageSignature") | ||
|  | 	proto.RegisterType((*SignIdentity)(nil), "SignIdentity") | ||
|  | 	proto.RegisterType((*SignedIdentity)(nil), "SignedIdentity") | ||
|  | 	proto.RegisterType((*GetECDHSessionKey)(nil), "GetECDHSessionKey") | ||
|  | 	proto.RegisterType((*ECDHSessionKey)(nil), "ECDHSessionKey") | ||
|  | 	proto.RegisterType((*SetU2FCounter)(nil), "SetU2FCounter") | ||
|  | 	proto.RegisterType((*FirmwareErase)(nil), "FirmwareErase") | ||
|  | 	proto.RegisterType((*FirmwareRequest)(nil), "FirmwareRequest") | ||
|  | 	proto.RegisterType((*FirmwareUpload)(nil), "FirmwareUpload") | ||
|  | 	proto.RegisterType((*SelfTest)(nil), "SelfTest") | ||
|  | 	proto.RegisterType((*DebugLinkDecision)(nil), "DebugLinkDecision") | ||
|  | 	proto.RegisterType((*DebugLinkGetState)(nil), "DebugLinkGetState") | ||
|  | 	proto.RegisterType((*DebugLinkState)(nil), "DebugLinkState") | ||
|  | 	proto.RegisterType((*DebugLinkStop)(nil), "DebugLinkStop") | ||
|  | 	proto.RegisterType((*DebugLinkLog)(nil), "DebugLinkLog") | ||
|  | 	proto.RegisterType((*DebugLinkMemoryRead)(nil), "DebugLinkMemoryRead") | ||
|  | 	proto.RegisterType((*DebugLinkMemory)(nil), "DebugLinkMemory") | ||
|  | 	proto.RegisterType((*DebugLinkMemoryWrite)(nil), "DebugLinkMemoryWrite") | ||
|  | 	proto.RegisterType((*DebugLinkFlashErase)(nil), "DebugLinkFlashErase") | ||
|  | 	proto.RegisterEnum("MessageType", MessageType_name, MessageType_value) | ||
|  | } | ||
|  | 
 | ||
|  | func init() { proto.RegisterFile("messages.proto", fileDescriptor1) } | ||
|  | 
 | ||
|  | var fileDescriptor1 = []byte{ | ||
|  | 	// 3424 bytes of a gzipped FileDescriptorProto | ||
|  | 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcb, 0x6f, 0xdc, 0x46, | ||
|  | 	0x9a, 0x5f, 0x76, 0xb7, 0xfa, 0xf1, 0x35, 0xbb, 0x55, 0xa2, 0x2d, 0xbb, 0x2d, 0x5b, 0xb6, 0x4c, | ||
|  | 	0xc9, 0xb6, 0x64, 0x27, 0xed, 0x44, 0x79, 0x6c, 0xd6, 0xbb, 0x79, 0xc8, 0x7a, 0xd8, 0xde, 0xd8, | ||
|  | 	0x8e, 0xc0, 0x56, 0x9c, 0xdb, 0x12, 0x14, 0x59, 0xea, 0xae, 0x55, 0x37, 0xc9, 0xf0, 0xa1, 0xa8, | ||
|  | 	0x7d, 0xd8, 0xeb, 0xee, 0x65, 0x81, 0xec, 0x69, 0x73, 0x1a, 0xe4, 0x36, 0x19, 0x04, 0x18, 0x0c, | ||
|  | 	0x30, 0x18, 0x60, 0x72, 0x9a, 0x3f, 0x60, 0xfe, 0x8b, 0x39, 0xce, 0x1f, 0x30, 0xe7, 0x41, 0x3d, | ||
|  | 	0x48, 0x16, 0x29, 0xb6, 0x6c, 0x27, 0xc0, 0x5c, 0x04, 0xd6, 0x57, 0xbf, 0xfe, 0xea, 0x7b, 0xd5, | ||
|  | 	0x57, 0x5f, 0x7d, 0x25, 0xe8, 0x4e, 0x70, 0x18, 0x5a, 0x43, 0x1c, 0xf6, 0xfd, 0xc0, 0x8b, 0xbc, | ||
|  | 	0xa5, 0x76, 0x34, 0xf5, 0x93, 0x81, 0xae, 0x02, 0x3c, 0x71, 0x49, 0x44, 0xac, 0x31, 0x79, 0x89, | ||
|  | 	0xf5, 0x0e, 0xb4, 0x1f, 0xe1, 0x68, 0x0f, 0x5b, 0x51, 0x1c, 0xe0, 0x50, 0xff, 0x69, 0x0e, 0x9a, | ||
|  | 	0xc9, 0x40, 0xbb, 0x04, 0xf5, 0x13, 0xec, 0x3a, 0x5e, 0xd0, 0x53, 0x56, 0x94, 0xf5, 0x96, 0x21, | ||
|  | 	0x46, 0xda, 0x2a, 0x74, 0x26, 0xd6, 0x7f, 0x7a, 0x81, 0x79, 0x82, 0x83, 0x90, 0x78, 0x6e, 0xaf, | ||
|  | 	0xb2, 0xa2, 0xac, 0x77, 0x0c, 0x95, 0x11, 0x5f, 0x70, 0x1a, 0x03, 0x11, 0x57, 0x02, 0x55, 0x05, | ||
|  | 	0x88, 0x12, 0x25, 0x90, 0x6f, 0x45, 0xf6, 0x28, 0x05, 0xd5, 0x38, 0x88, 0x11, 0x13, 0xd0, 0x1d, | ||
|  | 	0x98, 0x3f, 0xf4, 0xbc, 0x68, 0xec, 0x59, 0x0e, 0x0e, 0xcc, 0x89, 0xe7, 0xe0, 0xde, 0xdc, 0x8a, | ||
|  | 	0xb2, 0xde, 0x34, 0xba, 0x19, 0xf9, 0x99, 0xe7, 0x60, 0xed, 0x2a, 0xb4, 0x1c, 0x7c, 0x42, 0x6c, | ||
|  | 	0x6c, 0x12, 0xa7, 0x57, 0x67, 0x22, 0x37, 0x39, 0xe1, 0x89, 0xa3, 0xdd, 0x82, 0xae, 0x4f, 0x5c, | ||
|  | 	0x93, 0xda, 0x00, 0xdb, 0x11, 0x5d, 0xab, 0xc1, 0x98, 0x74, 0x7c, 0xe2, 0xee, 0xa7, 0x44, 0xed, | ||
|  | 	0x3d, 0x58, 0xf4, 0xad, 0x30, 0xf4, 0x47, 0x81, 0x15, 0x62, 0x19, 0xdd, 0x64, 0xe8, 0x8b, 0xd9, | ||
|  | 	0xa4, 0xf4, 0xa3, 0x25, 0x68, 0x8e, 0x2d, 0x77, 0x18, 0x5b, 0x43, 0xdc, 0x6b, 0xf1, 0x75, 0x93, | ||
|  | 	0xb1, 0x76, 0x11, 0xe6, 0xc6, 0xd6, 0x21, 0x1e, 0xf7, 0x80, 0x4d, 0xf0, 0x81, 0x76, 0x03, 0xe6, | ||
|  | 	0x6c, 0x8f, 0xb8, 0x61, 0xaf, 0xbd, 0x52, 0x5d, 0x6f, 0x6f, 0xb6, 0xfa, 0xdb, 0x1e, 0x71, 0x0f, | ||
|  | 	0xa6, 0x3e, 0x36, 0x38, 0x5d, 0x5b, 0x81, 0x36, 0x49, 0xbd, 0xe4, 0xf4, 0x54, 0xb6, 0xba, 0x4c, | ||
|  | 	0xa2, 0x8b, 0x06, 0xf8, 0x84, 0x30, 0xb3, 0x75, 0x56, 0x94, 0x75, 0xd5, 0x48, 0xc7, 0x05, 0x93, | ||
|  | 	0x8d, 0xac, 0x70, 0xd4, 0xeb, 0x32, 0x88, 0x64, 0xb2, 0xc7, 0x56, 0x38, 0xa2, 0x4c, 0xc8, 0xc4, | ||
|  | 	0xf7, 0x82, 0x08, 0x3b, 0xbd, 0x79, 0xb6, 0x46, 0x3a, 0xd6, 0x96, 0x01, 0xa8, 0xc5, 0x6c, 0xcb, | ||
|  | 	0x1e, 0x61, 0xa7, 0x87, 0xd8, 0x6c, 0xcb, 0x27, 0xee, 0x36, 0x23, 0x68, 0xf7, 0x60, 0x41, 0xb2, | ||
|  | 	0x94, 0x40, 0x2d, 0x30, 0x14, 0xca, 0x26, 0x04, 0x78, 0x03, 0xd0, 0x11, 0x09, 0x26, 0xdf, 0x58, | ||
|  | 	0x01, 0x35, 0x2a, 0x0e, 0xb1, 0x1b, 0xf5, 0x34, 0x86, 0x9d, 0x4f, 0xe8, 0xfb, 0x9c, 0xac, 0xdd, | ||
|  | 	0x04, 0xd5, 0xc5, 0xd8, 0x09, 0xcd, 0x43, 0xcb, 0x3e, 0x8e, 0xfd, 0xde, 0x05, 0xae, 0x3a, 0xa3, | ||
|  | 	0x3d, 0x64, 0x24, 0x6a, 0xd3, 0xa3, 0xb1, 0x35, 0x0c, 0x7b, 0x17, 0x59, 0xb8, 0xf0, 0x81, 0xde, | ||
|  | 	0x05, 0x75, 0x7b, 0x8c, 0xad, 0x60, 0x80, 0x43, 0x6a, 0x04, 0xfd, 0x7f, 0x14, 0xe8, 0x6c, 0xf9, | ||
|  | 	0xfe, 0x78, 0x3a, 0xc0, 0x51, 0x44, 0xdc, 0x61, 0x98, 0xf3, 0x93, 0x32, 0xcb, 0x4f, 0x15, 0xd9, | ||
|  | 	0x4f, 0xb7, 0xa0, 0x1b, 0xd3, 0x38, 0x48, 0xf5, 0x61, 0x61, 0xdc, 0x34, 0x3a, 0x71, 0x88, 0xf7, | ||
|  | 	0x53, 0xa2, 0x76, 0x1d, 0x60, 0xe4, 0x4d, 0x70, 0x68, 0x07, 0x18, 0xf3, 0x20, 0x56, 0x0d, 0x89, | ||
|  | 	0xa2, 0xeb, 0x00, 0x4c, 0x92, 0x3d, 0x2a, 0x68, 0x26, 0xbe, 0x22, 0x8b, 0xbf, 0x0a, 0xad, 0xed, | ||
|  | 	0x91, 0xe5, 0x0e, 0xf1, 0x3e, 0x71, 0xe9, 0xd6, 0x0b, 0xf0, 0xc4, 0x3b, 0xe1, 0x72, 0x36, 0x0d, | ||
|  | 	0x31, 0xd2, 0x7f, 0xa3, 0x40, 0x6d, 0x9f, 0xb8, 0x43, 0xad, 0x07, 0x0d, 0xb1, 0xc9, 0x85, 0x26, | ||
|  | 	0xc9, 0x90, 0xfa, 0xe5, 0x30, 0x8e, 0x22, 0x2f, 0x17, 0xeb, 0x15, 0xee, 0x17, 0x3e, 0x21, 0x45, | ||
|  | 	0xee, 0xd9, 0x5d, 0x51, 0x7d, 0xa3, 0x5d, 0x51, 0x9b, 0xbd, 0x2b, 0xf4, 0x55, 0x68, 0x0c, 0x62, | ||
|  | 	0xdb, 0xc6, 0x61, 0x38, 0x5b, 0x5a, 0x7d, 0x17, 0x1a, 0x7b, 0x16, 0x19, 0xc7, 0x01, 0xd6, 0x56, | ||
|  | 	0xa0, 0x66, 0xd3, 0xcd, 0x4d, 0x11, 0xdd, 0x4d, 0xb5, 0x2f, 0xe8, 0x6c, 0x57, 0xb0, 0x19, 0x99, | ||
|  | 	0x4d, 0x25, 0xcf, 0xe6, 0x73, 0xe8, 0x3c, 0x64, 0xba, 0x19, 0xf8, 0xeb, 0x18, 0x87, 0x91, 0x76, | ||
|  | 	0x3b, 0xc7, 0x4c, 0xeb, 0xe7, 0x66, 0x25, 0x96, 0x1a, 0xd4, 0x1c, 0x2b, 0xb2, 0x04, 0x3f, 0xf6, | ||
|  | 	0xad, 0xb7, 0xa1, 0xc5, 0xe1, 0x5b, 0xf6, 0xb1, 0xfe, 0x31, 0xa0, 0x7d, 0xe2, 0x3e, 0xb3, 0xa2, | ||
|  | 	0x80, 0x9c, 0x26, 0xcc, 0x37, 0xa0, 0x46, 0x33, 0xaa, 0x60, 0xbe, 0xd8, 0x2f, 0x02, 0x38, 0x7f, | ||
|  | 	0x0a, 0xd1, 0x57, 0x40, 0x4d, 0x67, 0xb7, 0xec, 0x63, 0x0d, 0x41, 0xd5, 0x27, 0x6e, 0x4f, 0x59, | ||
|  | 	0xa9, 0xac, 0xb7, 0x0c, 0xfa, 0xa9, 0x37, 0xa1, 0xbe, 0x6d, 0xb9, 0x36, 0x1e, 0xeb, 0x17, 0x60, | ||
|  | 	0x21, 0x8b, 0x29, 0xc1, 0x4a, 0xbf, 0x0f, 0x9d, 0x8c, 0x48, 0x39, 0x5c, 0x07, 0x90, 0xc2, 0x91, | ||
|  | 	0x33, 0x92, 0x28, 0xfa, 0x0a, 0xc0, 0x23, 0x1c, 0xed, 0xba, 0x51, 0xe0, 0xf9, 0x53, 0xaa, 0x5f, | ||
|  | 	0x48, 0x5e, 0x72, 0x5c, 0xc7, 0x60, 0xdf, 0xd4, 0x31, 0xc9, 0x74, 0x0f, 0x1a, 0x98, 0x7f, 0x32, | ||
|  | 	0x84, 0x6a, 0x24, 0x43, 0xfd, 0x57, 0x0a, 0xa8, 0x8f, 0x70, 0xb4, 0x1f, 0x1f, 0x8e, 0x89, 0xfd, | ||
|  | 	0x39, 0x9e, 0xd2, 0xec, 0x6a, 0x39, 0x4e, 0x80, 0xc3, 0xd0, 0xa4, 0xf2, 0x57, 0xd7, 0x3b, 0x46, | ||
|  | 	0x53, 0x10, 0x9e, 0x6b, 0xeb, 0x80, 0xb0, 0xed, 0x84, 0x96, 0x69, 0xc7, 0xc1, 0x09, 0x36, 0x5d, | ||
|  | 	0x6b, 0x92, 0xb8, 0xa8, 0xcb, 0xe8, 0xdb, 0x94, 0xfc, 0xdc, 0x9a, 0x60, 0xba, 0xbd, 0xc3, 0x91, | ||
|  | 	0xf7, 0x8d, 0xe9, 0x90, 0xd0, 0x1f, 0x5b, 0x53, 0x11, 0x6f, 0x6d, 0x4a, 0xdb, 0xe1, 0x24, 0x6d, | ||
|  | 	0x0d, 0x5a, 0x34, 0x09, 0x72, 0x2e, 0x34, 0xc2, 0x5a, 0x0f, 0x1a, 0x0f, 0x49, 0x44, 0x69, 0x46, | ||
|  | 	0x93, 0xfe, 0xa5, 0x8c, 0xf4, 0xcf, 0xa0, 0x95, 0x09, 0x77, 0x03, 0x6a, 0x2e, 0x77, 0x77, 0x65, | ||
|  | 	0xbd, 0xbd, 0xd9, 0xee, 0x3f, 0xde, 0x79, 0xee, 0x39, 0x22, 0x74, 0x5c, 0xe1, 0xe7, 0x53, 0x3f, | ||
|  | 	0x3e, 0x4c, 0xfc, 0x4c, 0xbf, 0xf5, 0xbf, 0x2a, 0xcc, 0x54, 0x5b, 0x5c, 0x89, 0xf3, 0x15, 0xcc, | ||
|  | 	0xc9, 0x54, 0x99, 0x21, 0xd3, 0xeb, 0x28, 0xf7, 0x01, 0x34, 0x27, 0xf1, 0x38, 0x22, 0x21, 0x19, | ||
|  | 	0x32, 0xdd, 0xda, 0x9b, 0x57, 0xfa, 0xcf, 0x04, 0xc1, 0xc0, 0x0e, 0xc6, 0x93, 0x81, 0x1d, 0x10, | ||
|  | 	0x9f, 0xc7, 0x50, 0x0a, 0xd5, 0x3e, 0x85, 0x76, 0xc8, 0xe8, 0x26, 0x8b, 0xbc, 0x39, 0x16, 0x79, | ||
|  | 	0xa8, 0xff, 0xc4, 0xf5, 0xe3, 0x28, 0xfb, 0xc1, 0x03, 0x75, 0xb0, 0xbf, 0xfb, 0x7c, 0x67, 0x6b, | ||
|  | 	0x67, 0xc7, 0xd8, 0x1d, 0x0c, 0x0c, 0x08, 0xd3, 0x19, 0xfd, 0x00, 0xb4, 0xdd, 0x68, 0x84, 0x03, | ||
|  | 	0x1c, 0x4f, 0x5e, 0x57, 0xe7, 0xa2, 0x36, 0x95, 0x33, 0xda, 0xd0, 0x50, 0x4a, 0x58, 0xf5, 0xa0, | ||
|  | 	0x21, 0x7e, 0x29, 0x82, 0x32, 0x19, 0xea, 0xf7, 0x60, 0x3e, 0x59, 0x7a, 0x06, 0x58, 0xcd, 0xc0, | ||
|  | 	0x2a, 0xc0, 0x57, 0xc4, 0xc7, 0x3b, 0xec, 0xdc, 0xd6, 0xff, 0xaf, 0x02, 0xf0, 0xd4, 0xb3, 0x1c, | ||
|  | 	0x3e, 0xa4, 0x09, 0x7c, 0xe2, 0xe2, 0x89, 0xe7, 0x12, 0x3b, 0x49, 0xe0, 0xc9, 0x38, 0x0d, 0x81, | ||
|  | 	0x0a, 0x33, 0x6a, 0x49, 0x08, 0x88, 0xad, 0x57, 0x65, 0xbf, 0xa3, 0x9f, 0x3f, 0x2b, 0xad, 0x69, | ||
|  | 	0xab, 0xd2, 0x21, 0x32, 0xc7, 0x03, 0x01, 0xbb, 0xc3, 0x31, 0x09, 0x47, 0x65, 0xa7, 0x49, 0x5d, | ||
|  | 	0x3e, 0x4d, 0x56, 0xa1, 0x13, 0x1e, 0x13, 0xdf, 0xb4, 0x47, 0xd8, 0x3e, 0x0e, 0xe3, 0x89, 0x28, | ||
|  | 	0x41, 0x54, 0x4a, 0xdc, 0x16, 0x34, 0xed, 0x06, 0xb4, 0xe3, 0xcd, 0x23, 0xd3, 0xf6, 0x62, 0x37, | ||
|  | 	0xc2, 0x01, 0xab, 0x3b, 0x3a, 0x06, 0xc4, 0x9b, 0x47, 0xdb, 0x9c, 0xa2, 0xff, 0xb6, 0x02, 0x6d, | ||
|  | 	0x03, 0x87, 0x38, 0x12, 0x46, 0xb9, 0x05, 0x5d, 0xe1, 0x21, 0x33, 0xb0, 0x5c, 0xc7, 0x9b, 0x88, | ||
|  | 	0x33, 0xa3, 0x23, 0xa8, 0x06, 0x23, 0x6a, 0x37, 0xa0, 0x19, 0x46, 0x01, 0x76, 0x87, 0xd1, 0x88, | ||
|  | 	0x17, 0x6c, 0x0f, 0xaa, 0x9b, 0x1f, 0x7c, 0x68, 0xa4, 0xc4, 0xd9, 0xd6, 0xa8, 0x9e, 0x63, 0x8d, | ||
|  | 	0xb3, 0x07, 0x48, 0xad, 0xec, 0x00, 0xf9, 0x05, 0x46, 0x2b, 0xd8, 0xa3, 0x51, 0xb4, 0x07, 0x05, | ||
|  | 	0x30, 0xab, 0x8a, 0x7a, 0x81, 0x17, 0x6a, 0x40, 0x49, 0xbc, 0x5c, 0xa0, 0x85, 0x01, 0xff, 0x12, | ||
|  | 	0x41, 0x85, 0xa0, 0x2b, 0xf2, 0x5f, 0x92, 0x64, 0x6f, 0x03, 0x08, 0x0a, 0xcd, 0xb0, 0xb9, 0xa4, | ||
|  | 	0xa8, 0xc8, 0x49, 0xf1, 0x4f, 0x15, 0xe8, 0x1a, 0xd8, 0xf6, 0x4e, 0x70, 0x30, 0x15, 0xd6, 0x5f, | ||
|  | 	0x06, 0xf8, 0xc6, 0x0b, 0x1c, 0x2e, 0x9f, 0x38, 0xd1, 0x5b, 0x94, 0xc2, 0xc4, 0x9b, 0x6d, 0xd4, | ||
|  | 	0xca, 0x1b, 0x19, 0xb5, 0xfa, 0x2a, 0xa3, 0xd6, 0x5e, 0x69, 0xd4, 0x39, 0xd9, 0xa8, 0x1b, 0x80, | ||
|  | 	0xb0, 0x7b, 0xe4, 0x05, 0x36, 0x36, 0xa9, 0xac, 0x63, 0x12, 0x46, 0xcc, 0xea, 0x4d, 0x63, 0x5e, | ||
|  | 	0xd0, 0xbf, 0x12, 0x64, 0x9a, 0x39, 0x59, 0xca, 0xe1, 0x81, 0xc8, 0xbe, 0x8b, 0x3e, 0x69, 0x9d, | ||
|  | 	0xf1, 0xc9, 0x65, 0x68, 0x38, 0xc1, 0xd4, 0x0c, 0x62, 0x97, 0xd5, 0xbd, 0x4d, 0xa3, 0xee, 0x04, | ||
|  | 	0x53, 0x23, 0x76, 0xf5, 0xf7, 0xa0, 0x4d, 0x39, 0x27, 0x27, 0xe9, 0x5a, 0xee, 0x24, 0x45, 0x7d, | ||
|  | 	0x69, 0x4e, 0x3a, 0x44, 0x97, 0xa1, 0x41, 0x27, 0xa8, 0x6f, 0x34, 0xa8, 0x51, 0x81, 0x45, 0x8a, | ||
|  | 	0x61, 0xdf, 0xfa, 0x8f, 0x0a, 0xb4, 0x07, 0x64, 0xe8, 0x3e, 0x13, 0x15, 0xd0, 0xb9, 0x49, 0x2d, | ||
|  | 	0x57, 0x43, 0xb0, 0xcc, 0x93, 0x14, 0x4e, 0xb9, 0x14, 0x5f, 0x9d, 0x95, 0xe2, 0x0b, 0x89, 0xb8, | ||
|  | 	0xf6, 0xc6, 0x89, 0xf8, 0xbf, 0x15, 0xe8, 0xbc, 0xc0, 0x01, 0x39, 0x9a, 0x26, 0xf2, 0xe6, 0x92, | ||
|  | 	0xa1, 0x22, 0x65, 0x4e, 0xed, 0x1a, 0xb4, 0x42, 0x32, 0x74, 0xd9, 0x7d, 0x8c, 0x45, 0x8c, 0x6a, | ||
|  | 	0x64, 0x04, 0x59, 0x95, 0x2a, 0x8f, 0xd3, 0x52, 0x55, 0x66, 0x9e, 0xa0, 0xff, 0x0e, 0x48, 0x88, | ||
|  | 	0x30, 0x90, 0x79, 0xfe, 0x1c, 0x59, 0xf4, 0x1f, 0x14, 0xba, 0xa9, 0xec, 0x60, 0xea, 0x47, 0x89, | ||
|  | 	0x5a, 0x97, 0xa0, 0xee, 0xc7, 0x87, 0xc7, 0x38, 0xd9, 0x45, 0x62, 0x54, 0xac, 0xe2, 0x24, 0xb1, | ||
|  | 	0x6f, 0x82, 0x9a, 0x64, 0x32, 0xcf, 0x1d, 0xa7, 0xc7, 0xa7, 0xa0, 0x7d, 0xe1, 0x8e, 0x0b, 0x55, | ||
|  | 	0x48, 0xed, 0xbc, 0x43, 0x7a, 0x6e, 0x96, 0xda, 0x2f, 0x00, 0x09, 0x49, 0xb1, 0x93, 0xc8, 0x7a, | ||
|  | 	0x11, 0xe6, 0x5c, 0xcf, 0xb5, 0xb1, 0x10, 0x95, 0x0f, 0xce, 0x91, 0x54, 0x83, 0xda, 0x68, 0x62, | ||
|  | 	0xd9, 0xc2, 0xee, 0xec, 0x5b, 0xff, 0x1a, 0xba, 0x3b, 0x38, 0x67, 0x81, 0x73, 0x03, 0x31, 0x5d, | ||
|  | 	0xb2, 0x32, 0x63, 0xc9, 0x6a, 0xf9, 0x92, 0x35, 0x69, 0xc9, 0x3d, 0x40, 0x62, 0xc9, 0x4c, 0x95, | ||
|  | 	0x42, 0xad, 0x2d, 0x71, 0x90, 0x7c, 0x5b, 0xc9, 0xf9, 0x56, 0xff, 0xb3, 0x02, 0xdd, 0x6d, 0xe2, | ||
|  | 	0x8f, 0x70, 0xf0, 0x39, 0x9e, 0xbe, 0xb0, 0xc6, 0xf1, 0x2b, 0x64, 0x47, 0x50, 0xa5, 0x7e, 0xe5, | ||
|  | 	0x5c, 0xe8, 0x27, 0xd5, 0xe6, 0x84, 0xfe, 0x4e, 0x48, 0xcd, 0x07, 0x3c, 0x93, 0x32, 0xf9, 0xc4, | ||
|  | 	0xb1, 0x90, 0x0c, 0xb5, 0x35, 0xe8, 0x5a, 0xe1, 0xb1, 0xe9, 0xb9, 0x66, 0x02, 0xe0, 0x77, 0x7a, | ||
|  | 	0xd5, 0x0a, 0x8f, 0xbf, 0x70, 0x77, 0xcf, 0xa0, 0x1c, 0xae, 0xa6, 0x48, 0x52, 0x1c, 0x25, 0x54, | ||
|  | 	0xd7, 0xba, 0x50, 0x21, 0x27, 0xec, 0x60, 0x50, 0x8d, 0x0a, 0x39, 0xd1, 0xd7, 0x01, 0x71, 0x65, | ||
|  | 	0xb0, 0x93, 0xaa, 0x93, 0xca, 0xa7, 0x48, 0xf2, 0xe9, 0xff, 0x05, 0xdd, 0xdd, 0x30, 0x22, 0x13, | ||
|  | 	0x2b, 0xc2, 0x07, 0xa7, 0x03, 0xf2, 0x12, 0xd3, 0x23, 0xda, 0x8b, 0x23, 0x3f, 0x8e, 0xc2, 0x34, | ||
|  | 	0xa3, 0xd3, 0xc2, 0x59, 0x15, 0x44, 0x9e, 0xd4, 0x6f, 0x82, 0x4a, 0x5c, 0x09, 0x53, 0x61, 0x98, | ||
|  | 	0x36, 0xa7, 0x71, 0xc8, 0x6b, 0x25, 0x13, 0xfd, 0x26, 0xd4, 0xc5, 0xba, 0x97, 0xa1, 0x11, 0x9d, | ||
|  | 	0x9a, 0xa2, 0x54, 0xa7, 0xd9, 0xb4, 0x1e, 0xb1, 0x09, 0xfd, 0xf7, 0x0a, 0xd4, 0xe9, 0xf6, 0x3c, | ||
|  | 	0x38, 0xfd, 0xc7, 0xca, 0xa6, 0x5d, 0x85, 0x46, 0xae, 0x2b, 0xf3, 0x40, 0x79, 0xd7, 0x48, 0x28, | ||
|  | 	0xda, 0x75, 0x68, 0x8d, 0x3d, 0xfb, 0xd8, 0x8c, 0x88, 0xd8, 0x69, 0x9d, 0x07, 0xca, 0x3b, 0x46, | ||
|  | 	0x93, 0xd2, 0x0e, 0xc8, 0x04, 0xeb, 0x7f, 0x53, 0x40, 0x1d, 0x90, 0x89, 0x3f, 0xc6, 0x42, 0xf6, | ||
|  | 	0x35, 0xa8, 0x73, 0x11, 0x58, 0x2c, 0xb5, 0x37, 0xd5, 0xfe, 0xc1, 0x29, 0xcb, 0x99, 0x2c, 0xcd, | ||
|  | 	0x8b, 0x39, 0xed, 0x0e, 0x34, 0x84, 0x32, 0xbd, 0x0a, 0x83, 0x75, 0xfa, 0x07, 0xa7, 0x5f, 0x30, | ||
|  | 	0x0a, 0xc3, 0x25, 0xb3, 0xda, 0xfb, 0xa0, 0x46, 0x81, 0xe5, 0x86, 0x16, 0x3b, 0x09, 0xc3, 0x5e, | ||
|  | 	0x95, 0xa1, 0x51, 0xff, 0x20, 0x23, 0xb2, 0x1f, 0xe4, 0x50, 0xaf, 0x97, 0x16, 0x65, 0xc5, 0xe7, | ||
|  | 	0xce, 0x57, 0xbc, 0x7e, 0x56, 0xf1, 0x5f, 0x2b, 0xd0, 0x3a, 0x48, 0x2f, 0x8a, 0xf7, 0x41, 0x0d, | ||
|  | 	0xf8, 0xa7, 0x29, 0x1d, 0x73, 0x6a, 0x5f, 0x3e, 0xe2, 0xda, 0x41, 0x36, 0xd0, 0xee, 0x43, 0xc3, | ||
|  | 	0xc1, 0x91, 0x45, 0xc6, 0xa1, 0xa8, 0x63, 0x17, 0xfb, 0x29, 0xb7, 0x1d, 0x3e, 0xc1, 0x0d, 0x21, | ||
|  | 	0x50, 0xda, 0x47, 0x00, 0x21, 0x0e, 0x92, 0x36, 0x51, 0x95, 0xfd, 0xa6, 0x97, 0xfd, 0x66, 0x90, | ||
|  | 	0xce, 0xb1, 0x9f, 0x49, 0x58, 0x7d, 0x03, 0xe6, 0x0e, 0xd8, 0x95, 0x74, 0x05, 0x2a, 0xd1, 0x29, | ||
|  | 	0x13, 0xad, 0xcc, 0x82, 0x95, 0xe8, 0x54, 0xff, 0xdf, 0x0a, 0x74, 0x93, 0x0a, 0x5e, 0xf8, 0xf3, | ||
|  | 	0x67, 0xa4, 0xb6, 0xab, 0xd0, 0x1a, 0x5a, 0xa1, 0xe9, 0x07, 0xc4, 0x4e, 0xd2, 0x44, 0x73, 0x68, | ||
|  | 	0x85, 0xfb, 0x74, 0x9c, 0x4c, 0x8e, 0xc9, 0x84, 0x44, 0x22, 0xc5, 0xd1, 0xc9, 0xa7, 0x74, 0x4c, | ||
|  | 	0x37, 0x78, 0xe4, 0x31, 0x67, 0xa8, 0x46, 0x25, 0xf2, 0xb2, 0xcd, 0x5c, 0x97, 0x93, 0xcd, 0x5b, | ||
|  | 	0xa0, 0xd1, 0xeb, 0xbb, 0x29, 0x9a, 0x64, 0xa6, 0x3d, 0x8a, 0xdd, 0x63, 0x91, 0x16, 0x10, 0x9d, | ||
|  | 	0x11, 0x6d, 0xcf, 0x6d, 0x4a, 0xa7, 0x25, 0x0c, 0x43, 0x8f, 0x79, 0x45, 0x2c, 0xca, 0x6c, 0x4a, | ||
|  | 	0x7a, 0xca, 0xcb, 0xe1, 0x2b, 0xd0, 0xb4, 0x47, 0x16, 0x71, 0x4d, 0xe2, 0x88, 0x02, 0xa7, 0xc1, | ||
|  | 	0xc6, 0x4f, 0x1c, 0xfd, 0xff, 0x15, 0x58, 0x48, 0xec, 0x91, 0x39, 0xbb, 0xc0, 0x51, 0x39, 0xc3, | ||
|  | 	0x91, 0x16, 0xaa, 0xc9, 0x81, 0x69, 0x9e, 0x88, 0xae, 0x29, 0xa4, 0xa4, 0x17, 0x79, 0x40, 0x20, | ||
|  | 	0x6c, 0x94, 0x01, 0x8c, 0x3c, 0x20, 0x4c, 0x1a, 0x4d, 0x29, 0x69, 0xa0, 0xf7, 0xa1, 0x93, 0x09, | ||
|  | 	0x46, 0x9d, 0xbb, 0x0c, 0x4c, 0x02, 0x61, 0x0c, 0x9e, 0xfc, 0x5a, 0x94, 0xc2, 0xac, 0xa0, 0x3f, | ||
|  | 	0x85, 0x0b, 0xb2, 0x63, 0x7f, 0x59, 0x05, 0xa5, 0x13, 0x58, 0x4c, 0xb8, 0x9d, 0x5b, 0xe1, 0xa8, | ||
|  | 	0xbf, 0xb8, 0xc2, 0xd1, 0x0d, 0xe8, 0x25, 0x4b, 0xbd, 0xaa, 0x86, 0x79, 0xdd, 0xd5, 0xf4, 0x9f, | ||
|  | 	0x58, 0xd2, 0x1a, 0xba, 0x4f, 0x1c, 0xec, 0x46, 0x24, 0x9a, 0x6a, 0x1b, 0xd0, 0x24, 0xe2, 0x5b, | ||
|  | 	0xec, 0x8f, 0x4e, 0x3f, 0x99, 0xe4, 0xf7, 0x73, 0x92, 0x41, 0x91, 0x3d, 0xb2, 0xc6, 0xd4, 0xf7, | ||
|  | 	0xd8, 0x1c, 0x11, 0xc7, 0xc1, 0xae, 0x58, 0x60, 0x3e, 0xa5, 0x3f, 0x66, 0xe4, 0x3c, 0xf4, 0x84, | ||
|  | 	0x84, 0xb1, 0x35, 0x16, 0x97, 0xd2, 0x0c, 0xfa, 0x82, 0x91, 0x4b, 0xdb, 0x2a, 0xb5, 0xb2, 0xb6, | ||
|  | 	0x8a, 0x3e, 0x84, 0x2e, 0x15, 0x1d, 0x3b, 0xa9, 0xf0, 0xb3, 0x2b, 0xb9, 0x65, 0x00, 0x9f, 0x75, | ||
|  | 	0x4e, 0xcc, 0xe4, 0x10, 0x57, 0x8d, 0x96, 0x9f, 0xf6, 0x52, 0x72, 0x46, 0xaa, 0x16, 0x8d, 0xf4, | ||
|  | 	0xad, 0x02, 0x0b, 0x8f, 0x70, 0xb4, 0xbb, 0xbd, 0xf3, 0x58, 0x34, 0x5a, 0xe9, 0x6f, 0xde, 0xc0, | ||
|  | 	0x52, 0xb7, 0x61, 0xde, 0xc7, 0x38, 0x30, 0xcf, 0x88, 0xd0, 0xa1, 0xe4, 0xac, 0xa5, 0x53, 0xa6, | ||
|  | 	0x7b, 0xb5, 0x54, 0xf7, 0x77, 0xa1, 0x5b, 0x10, 0x87, 0xee, 0x13, 0x3e, 0x32, 0xb3, 0xfa, 0x13, | ||
|  | 	0xc2, 0x14, 0xa0, 0xbf, 0x03, 0x9d, 0x01, 0x8e, 0xbe, 0xdc, 0xdc, 0x93, 0x2e, 0x91, 0xf2, 0x8d, | ||
|  | 	0x46, 0x39, 0x73, 0xeb, 0xbe, 0x03, 0x9d, 0x3d, 0xd1, 0xa9, 0xde, 0x65, 0x3d, 0xdf, 0x4b, 0x50, | ||
|  | 	0xcf, 0xed, 0x74, 0x31, 0xd2, 0xb7, 0x60, 0x3e, 0x01, 0x26, 0x99, 0xe1, 0x12, 0xd4, 0xbd, 0xa3, | ||
|  | 	0xa3, 0x10, 0x27, 0xf7, 0x43, 0x31, 0x92, 0x58, 0x54, 0x72, 0x2c, 0x3e, 0x81, 0x6e, 0xc2, 0xe2, | ||
|  | 	0x4b, 0x7f, 0xec, 0x59, 0x0e, 0x75, 0xa6, 0x6f, 0x4d, 0xe9, 0x67, 0xd2, 0x2f, 0x11, 0x43, 0x56, | ||
|  | 	0x16, 0x5a, 0xe1, 0x48, 0xd8, 0x90, 0x7d, 0xeb, 0x6b, 0xd0, 0x1c, 0xe0, 0xf1, 0xd1, 0x01, 0x5d, | ||
|  | 	0x3b, 0xf7, 0x4b, 0x45, 0xfa, 0xa5, 0x7e, 0x17, 0x16, 0x76, 0xf0, 0x61, 0x3c, 0x7c, 0x4a, 0xdc, | ||
|  | 	0xe3, 0x1d, 0x6c, 0xf3, 0x97, 0x83, 0x45, 0xa8, 0x4f, 0x71, 0x68, 0xba, 0x1e, 0x5b, 0xa7, 0x69, | ||
|  | 	0xcc, 0x4d, 0x71, 0xf8, 0xdc, 0xd3, 0x2f, 0x48, 0xd8, 0x47, 0x38, 0x1a, 0x44, 0x56, 0x84, 0xf5, | ||
|  | 	0xbf, 0x54, 0x68, 0xc5, 0x2b, 0xa8, 0x8c, 0xc4, 0x34, 0xb2, 0xa6, 0x5e, 0x1c, 0x25, 0x35, 0x3f, | ||
|  | 	0x1f, 0x25, 0xbd, 0x97, 0x4a, 0xd6, 0x7b, 0xb9, 0x04, 0xf5, 0x09, 0xeb, 0x8a, 0x0a, 0xa7, 0x8a, | ||
|  | 	0x51, 0xae, 0xc5, 0x53, 0x9b, 0xd1, 0xe2, 0x99, 0x9b, 0xd5, 0xe2, 0x99, 0x79, 0xdb, 0xae, 0x9f, | ||
|  | 	0x73, 0xdb, 0x5e, 0x06, 0x08, 0x70, 0x88, 0x23, 0x76, 0x13, 0x66, 0xe7, 0x45, 0xcb, 0x68, 0x31, | ||
|  | 	0x0a, 0xbd, 0x74, 0xd2, 0xaa, 0x8b, 0x4f, 0x27, 0x3d, 0x81, 0x26, 0xd3, 0x4c, 0x65, 0xc4, 0xa4, | ||
|  | 	0x8f, 0xfa, 0x16, 0x68, 0x81, 0xe8, 0x0b, 0x98, 0x47, 0xd6, 0x31, 0xbf, 0x55, 0x8b, 0xb7, 0x20, | ||
|  | 	0x94, 0xcc, 0xec, 0x59, 0xc7, 0xec, 0x5a, 0xad, 0xdd, 0x85, 0x85, 0x14, 0xcd, 0x9a, 0x07, 0xbe, | ||
|  | 	0x17, 0xb2, 0x7b, 0x72, 0xc7, 0x98, 0x4f, 0x26, 0x28, 0x70, 0xdf, 0x0b, 0xf5, 0x79, 0xe8, 0x48, | ||
|  | 	0x36, 0xf6, 0x7c, 0x7d, 0x1f, 0xd4, 0x94, 0xf0, 0xd4, 0x1b, 0xb2, 0x0b, 0x3e, 0x3e, 0xc1, 0xe3, | ||
|  | 	0xe4, 0x35, 0x81, 0x0d, 0xa8, 0x79, 0x0f, 0x63, 0xfb, 0x18, 0x47, 0xc2, 0xe6, 0x62, 0xc4, 0x6e, | ||
|  | 	0xf3, 0xf8, 0x34, 0x12, 0x46, 0x67, 0xdf, 0xfa, 0x23, 0xb8, 0x90, 0x72, 0x7c, 0x86, 0x27, 0x5e, | ||
|  | 	0x30, 0x35, 0x30, 0x8f, 0x39, 0x39, 0x81, 0x74, 0xb2, 0x04, 0x32, 0x2b, 0x6e, 0x37, 0x60, 0xbe, | ||
|  | 	0xc0, 0x88, 0xb9, 0x99, 0x7d, 0x25, 0x01, 0xc1, 0x47, 0xfa, 0x7f, 0xc0, 0xc5, 0x02, 0xf4, 0xab, | ||
|  | 	0x80, 0x44, 0xf8, 0xfc, 0x45, 0x05, 0xa7, 0x8a, 0xcc, 0x49, 0xbc, 0xa6, 0x84, 0x23, 0x71, 0x5b, | ||
|  | 	0xe4, 0x03, 0xfd, 0x6d, 0x49, 0xa7, 0x3d, 0x4a, 0x49, 0x37, 0x6d, 0x88, 0xed, 0xc8, 0x4b, 0x76, | ||
|  | 	0xb8, 0x18, 0xdd, 0xfd, 0x71, 0x11, 0xda, 0xe2, 0x1c, 0x61, 0x75, 0xd8, 0x0a, 0x5c, 0x92, 0x86, | ||
|  | 	0x66, 0xf6, 0x60, 0x8a, 0xfe, 0x69, 0xa9, 0xf6, 0xed, 0x1f, 0x7a, 0x8a, 0xb6, 0x94, 0x5e, 0x9e, | ||
|  | 	0x19, 0x62, 0x9f, 0xb8, 0x43, 0xa4, 0x88, 0xb9, 0x65, 0xb8, 0x20, 0xcf, 0x89, 0x57, 0x10, 0x54, | ||
|  | 	0x59, 0xaa, 0x7d, 0x57, 0x32, 0x2d, 0xde, 0x39, 0x50, 0x55, 0x4c, 0xdf, 0x80, 0x45, 0x79, 0x3a, | ||
|  | 	0x7d, 0x14, 0x42, 0x35, 0xc1, 0xbe, 0x20, 0x5c, 0xd6, 0x2e, 0x45, 0x73, 0x02, 0x71, 0x07, 0xae, | ||
|  | 	0xe4, 0x56, 0x90, 0x13, 0x17, 0xaa, 0x2f, 0x35, 0x29, 0xe8, 0x8f, 0x14, 0xb8, 0x0e, 0x4b, 0x65, | ||
|  | 	0x40, 0x9e, 0x75, 0x50, 0x43, 0x42, 0x6e, 0xc0, 0xd5, 0x32, 0xa4, 0x48, 0x71, 0xa8, 0xb9, 0xd4, | ||
|  | 	0xfc, 0x2e, 0x81, 0x16, 0xe4, 0xcb, 0x5e, 0x23, 0x50, 0xab, 0xdc, 0x40, 0xc9, 0x34, 0x08, 0x0b, | ||
|  | 	0xe8, 0xd0, 0x2b, 0x30, 0x48, 0x8f, 0x05, 0xd4, 0x16, 0x2c, 0x0a, 0x56, 0xca, 0x00, 0xaa, 0x60, | ||
|  | 	0x52, 0x90, 0x22, 0xeb, 0x22, 0xa3, 0x8e, 0x60, 0x71, 0x13, 0x2e, 0xcb, 0x08, 0xa9, 0xa7, 0x8a, | ||
|  | 	0xba, 0x02, 0x72, 0x0d, 0xb4, 0x9c, 0x27, 0x59, 0xf1, 0x8b, 0xe6, 0xc5, 0xec, 0x5a, 0x5e, 0x4e, | ||
|  | 	0xf9, 0xc2, 0x83, 0xd0, 0x52, 0x9d, 0x62, 0x9a, 0x8a, 0x76, 0x1d, 0x2e, 0xe6, 0x2c, 0x27, 0x9e, | ||
|  | 	0xd7, 0xd1, 0x82, 0x10, 0xf4, 0x36, 0x5c, 0x2b, 0x44, 0x52, 0xee, 0x31, 0x09, 0x69, 0x29, 0xae, | ||
|  | 	0x57, 0x8a, 0xdb, 0xb2, 0x8f, 0xd1, 0x05, 0xee, 0xa9, 0xdf, 0x95, 0xc8, 0xcc, 0x1f, 0x97, 0xd0, | ||
|  | 	0xc5, 0x72, 0xbb, 0xa5, 0xe5, 0x2b, 0x5a, 0x14, 0xcb, 0x5c, 0x85, 0x85, 0x3c, 0x80, 0xf2, 0xbf, | ||
|  | 	0x94, 0x6a, 0x9c, 0x8b, 0x97, 0x7c, 0xcf, 0x00, 0x5d, 0x16, 0xa8, 0x82, 0xff, 0xe4, 0x57, 0x59, | ||
|  | 	0xd4, 0x13, 0x98, 0xd5, 0x7c, 0x88, 0xe6, 0x1e, 0x6a, 0xd1, 0x95, 0x72, 0x50, 0xee, 0x11, 0x0f, | ||
|  | 	0x2d, 0x09, 0x81, 0x57, 0xf3, 0x1a, 0xa5, 0x4f, 0x77, 0xe8, 0xaa, 0x64, 0x94, 0x42, 0x34, 0x64, | ||
|  | 	0xaf, 0xb1, 0xe8, 0x5a, 0xf9, 0xae, 0xca, 0x1e, 0x49, 0xd0, 0x72, 0x79, 0xd4, 0x26, 0xd3, 0xd7, | ||
|  | 	0xd3, 0xa8, 0xcd, 0xf9, 0x39, 0x39, 0x81, 0xd1, 0x8a, 0xb4, 0x8b, 0x0a, 0x96, 0x91, 0xdb, 0xd2, | ||
|  | 	0x48, 0x2f, 0xb7, 0x71, 0xbe, 0x55, 0x8d, 0x56, 0xcb, 0xc3, 0x3b, 0x6b, 0x5f, 0xa3, 0xb5, 0xf2, | ||
|  | 	0xf0, 0x96, 0xea, 0x7b, 0x74, 0xbb, 0xdc, 0xbe, 0xb9, 0xa2, 0x1d, 0xdd, 0x11, 0xa0, 0x42, 0x7c, | ||
|  | 	0x16, 0xcb, 0x6d, 0xb4, 0x2e, 0x24, 0xba, 0x03, 0xcb, 0xb9, 0xf8, 0x2c, 0x3e, 0x65, 0xa2, 0x8d, | ||
|  | 	0x14, 0x78, 0xa5, 0x1c, 0x48, 0xa5, 0xbf, 0x2b, 0x39, 0xed, 0x76, 0xc1, 0x12, 0xb9, 0x56, 0x0d, | ||
|  | 	0xba, 0x27, 0xed, 0x30, 0x2d, 0x1f, 0xb2, 0x6c, 0xfe, 0xad, 0xa5, 0xfa, 0x77, 0x7c, 0xbe, 0x60, | ||
|  | 	0xd1, 0x7c, 0x07, 0x1f, 0xbd, 0x5d, 0x6e, 0x2f, 0xa9, 0x15, 0x8d, 0xfa, 0xe5, 0x99, 0x5b, 0x34, | ||
|  | 	0xa5, 0xd1, 0xfd, 0x72, 0x4b, 0x15, 0x9b, 0x50, 0xe8, 0x9d, 0x74, 0x27, 0x17, 0x3c, 0x2c, 0x77, | ||
|  | 	0x0d, 0xd1, 0xbb, 0xa9, 0x5e, 0xeb, 0x79, 0x7e, 0xc5, 0xae, 0x25, 0xda, 0x4c, 0x35, 0x2c, 0x70, | ||
|  | 	0xcc, 0xf7, 0x21, 0xd1, 0x7b, 0xb3, 0x38, 0x16, 0x9b, 0x87, 0xe8, 0xfd, 0x94, 0xa3, 0x5e, 0xcc, | ||
|  | 	0x6d, 0xd9, 0xbd, 0x08, 0x7d, 0x50, 0x1e, 0xa9, 0xf9, 0x0b, 0x08, 0xfa, 0x50, 0x68, 0x5b, 0xb0, | ||
|  | 	0xab, 0xf4, 0xef, 0x46, 0xe8, 0x9f, 0x05, 0xa3, 0x75, 0xb8, 0x9e, 0x53, 0xf4, 0xcc, 0x43, 0x25, | ||
|  | 	0xfa, 0x48, 0x20, 0x6f, 0xe5, 0x8f, 0xa1, 0xc2, 0xbb, 0x22, 0xfa, 0x17, 0xb1, 0x66, 0x71, 0x0f, | ||
|  | 	0xe5, 0x9a, 0x17, 0xe8, 0x41, 0x7a, 0x4c, 0x2e, 0x97, 0xa1, 0xb2, 0x9c, 0xf8, 0xaf, 0x69, 0x8a, | ||
|  | 	0xb9, 0x52, 0x0e, 0xa4, 0xde, 0xff, 0xb7, 0x72, 0x6e, 0x67, 0x2e, 0x49, 0xe8, 0xe3, 0x19, 0x1b, | ||
|  | 	0x3c, 0x8f, 0xfa, 0xa4, 0x7c, 0xcd, 0xdc, 0x75, 0x05, 0x7d, 0x2a, 0x58, 0x6d, 0xc0, 0x8d, 0x59, | ||
|  | 	0x7a, 0x26, 0x2e, 0xfd, 0x4c, 0x40, 0xef, 0xc1, 0xcd, 0x32, 0x68, 0x7e, 0xcf, 0x6f, 0x09, 0x70, | ||
|  | 	0x1f, 0xd6, 0xca, 0xc0, 0x67, 0xf6, 0xfe, 0x43, 0x21, 0xec, 0xbd, 0xbc, 0xee, 0x67, 0xee, 0x15, | ||
|  | 	0xc8, 0x59, 0x6a, 0x7e, 0x9f, 0x6c, 0xeb, 0x3b, 0x33, 0xc0, 0xc9, 0xc5, 0x02, 0xe1, 0xa5, 0xda, | ||
|  | 	0xf7, 0x25, 0x86, 0xca, 0xdf, 0x35, 0xd0, 0xd1, 0x52, 0xed, 0x87, 0x12, 0x43, 0xe5, 0xaa, 0x65, | ||
|  | 	0x34, 0x14, 0xac, 0x0a, 0xe1, 0x2c, 0x57, 0xd0, 0x68, 0x24, 0x18, 0x15, 0x8c, 0x59, 0x52, 0x13, | ||
|  | 	0x23, 0x57, 0xb0, 0x2b, 0x84, 0x61, 0x01, 0x8a, 0x3c, 0xc1, 0xf1, 0x2e, 0xac, 0x9c, 0x03, 0x63, | ||
|  | 	0x15, 0x2f, 0xf2, 0x05, 0xcb, 0x59, 0xab, 0x67, 0xd5, 0x2b, 0xfa, 0x9a, 0x43, 0x1f, 0xbe, 0x0f, | ||
|  | 	0xab, 0xb6, 0x37, 0xe9, 0x87, 0x56, 0xe4, 0x85, 0x23, 0x32, 0xb6, 0x0e, 0xc3, 0x7e, 0x14, 0xe0, | ||
|  | 	0x97, 0x5e, 0xd0, 0x1f, 0x93, 0x43, 0xfe, 0x6f, 0x7e, 0x87, 0xf1, 0xd1, 0xc3, 0xce, 0x01, 0x23, | ||
|  | 	0x0a, 0xae, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xe4, 0xc0, 0x85, 0x16, 0x28, 0x00, 0x00, | ||
|  | } |