mirror of
https://github.com/RoganDawes/P4wnP1_aloa.git
synced 2025-03-29 02:51:45 +01:00
TriggerAction GPIO support introduced
This commit is contained in:
parent
1ad1c35318
commit
5c0d8310ed
@ -1,50 +0,0 @@
|
||||
// +build linux,arm
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/mame82/P4wnP1_go/service"
|
||||
"log"
|
||||
pb "github.com/mame82/P4wnP1_go/proto"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ap_settings := &pb.WiFiSettings{
|
||||
Mode: pb.WiFiSettings_AP,
|
||||
AuthMode: pb.WiFiSettings_WPA2_PSK,
|
||||
Disabled: false,
|
||||
Reg: "US",
|
||||
ApChannel: 6,
|
||||
ApHideSsid: false,
|
||||
BssCfgAP: &pb.BSSCfg{
|
||||
SSID: "P4wnP1",
|
||||
PSK: "MaMe82-P4wnP1",
|
||||
},
|
||||
DisableNexmon: true,
|
||||
BssCfgClient: nil, //not needed
|
||||
}
|
||||
|
||||
sta_settings := &pb.WiFiSettings{
|
||||
Mode: pb.WiFiSettings_STA,
|
||||
AuthMode: pb.WiFiSettings_WPA2_PSK,
|
||||
Disabled: false,
|
||||
Reg: "DE",
|
||||
BssCfgClient: &pb.BSSCfg{
|
||||
SSID: "WLAN-579086",
|
||||
PSK: "5824989790864470",
|
||||
},
|
||||
DisableNexmon: true,
|
||||
BssCfgAP: nil, //not needed
|
||||
}
|
||||
|
||||
err := service.DeployWifiSettings(ap_settings)
|
||||
if err != nil { log.Println(err)}
|
||||
|
||||
err = service.DeployWifiSettings(sta_settings)
|
||||
if err != nil { log.Println(err)}
|
||||
|
||||
fmt.Println("Sleeping 10 seconds")
|
||||
time.Sleep(time.Second * 10)
|
||||
}
|
@ -1,719 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/mame82/P4wnP1_go/service"
|
||||
"log"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var iw_scan_out = `BSS 4e:66:41:a0:5b:35(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2437
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy SpectrumMgmt ShortSlotTime RadioMeasure (0x1511)
|
||||
signal: -43.01 dBm
|
||||
last seen: 13740 ms ago
|
||||
SSID: Android AP8905
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 6
|
||||
TIM: DTIM Count 0 DTIM Period 2 Bitmap Control 0x0 Bitmap[0] 0x0
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 20 dBm
|
||||
Power constraint: 0 dB
|
||||
TPC report: TX power: 17 dBm
|
||||
ERP: <no flags>
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
RSN: * Version: 1
|
||||
* Group cipher: CCMP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
|
||||
HT capabilities:
|
||||
Capabilities: 0x1ad
|
||||
RX LDPC
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 3839 bytes
|
||||
No DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 4 usec (0x05)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 6
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 1
|
||||
* HT protection: no
|
||||
* non-GF present: 0
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Extended capabilities: Extended Channel Switching, BSS Transition, 6
|
||||
WMM: * Parameter version 1
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS 5c:dc:96:b4:59:af(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2437
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortSlotTime RadioMeasure (0x1411)
|
||||
signal: -38.00 dBm
|
||||
last seen: 10 ms ago
|
||||
SSID: WLAN-579086
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 6
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 22 dBm
|
||||
ERP: <no flags>
|
||||
ERP D4.0: <no flags>
|
||||
RSN: * Version: 1
|
||||
* Group cipher: CCMP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x19fe
|
||||
HT20/HT40
|
||||
SM Power Save disabled
|
||||
RX Greenfield
|
||||
RX HT20 SGI
|
||||
RX HT40 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 7935 bytes
|
||||
DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 16 usec (0x07)
|
||||
HT RX MCS rate indexes supported: 0-15, 32
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 6
|
||||
* secondary channel offset: below
|
||||
* STA channel width: any
|
||||
* RIFS: 1
|
||||
* HT protection: no
|
||||
* non-GF present: 0
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Overlapping BSS scan params:
|
||||
* passive dwell: 20 TUs
|
||||
* active dwell: 10 TUs
|
||||
* channel width trigger scan interval: 300 s
|
||||
* scan passive total per channel: 200 TUs
|
||||
* scan active total per channel: 20 TUs
|
||||
* BSS width channel transition delay factor: 5
|
||||
* OBSS Scan Activity Threshold: 0.25 %
|
||||
Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, 6
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* Response Type: 3 (AP)
|
||||
* UUID: 7470bfaa-0621-242d-7915-13686f9ded23
|
||||
* Manufacturer: ARCADYAN
|
||||
* Model: DT724
|
||||
* Model Number: 1.0
|
||||
* Serial Number: 888
|
||||
* Primary Device Type: 6-0050f204-1
|
||||
* Device name: DT724
|
||||
* Config methods:
|
||||
* RF Bands: 0x3
|
||||
* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20
|
||||
WMM: * Parameter version 1
|
||||
* u-APSD
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS 4e:66:41:a0:5b:35(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2462
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS SpectrumMgmt ShortSlotTime RadioMeasure (0x1501)
|
||||
signal: -35.00 dBm
|
||||
last seen: 10 ms ago
|
||||
SSID: AndroidAP8905
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 11
|
||||
TIM: DTIM Count 0 DTIM Period 2 Bitmap Control 0x0 Bitmap[0] 0x0
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 20 dBm
|
||||
Power constraint: 0 dB
|
||||
TPC report: TX power: 17 dBm
|
||||
ERP: <no flags>
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x1ad
|
||||
RX LDPC
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 3839 bytes
|
||||
No DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 4 usec (0x05)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 11
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 1
|
||||
* HT protection: no
|
||||
* non-GF present: 0
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Extended capabilities: Extended Channel Switching, BSS Transition, 6
|
||||
WMM: * Parameter version 1
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS 88:e3:ab:9d:38:f5(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2412
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortSlotTime RadioMeasure (0x1411)
|
||||
signal: -84.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: WLAN-WGF3FG
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 1
|
||||
ERP: Barker_Preamble_Mode
|
||||
ERP D4.0: Barker_Preamble_Mode
|
||||
RSN: * Version: 1
|
||||
* Group cipher: CCMP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x19ac
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 7935 bytes
|
||||
DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 1
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 0
|
||||
* HT protection: no
|
||||
* non-GF present: 1
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Overlapping BSS scan params:
|
||||
* passive dwell: 20 TUs
|
||||
* active dwell: 10 TUs
|
||||
* channel width trigger scan interval: 300 s
|
||||
* scan passive total per channel: 200 TUs
|
||||
* scan active total per channel: 20 TUs
|
||||
* BSS width channel transition delay factor: 5
|
||||
* OBSS Scan Activity Threshold: 0.25 %
|
||||
Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, 6
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* Response Type: 3 (AP)
|
||||
* UUID: 13082394-62d2-8063-e9de-c42e3a2d1071
|
||||
* Manufacturer: Broadcom
|
||||
* Model: Broadcom
|
||||
* Model Number: 123456
|
||||
* Serial Number: 1234
|
||||
* Primary Device Type: 6-0050f204-1
|
||||
* Device name: BroadcomAP
|
||||
* Config methods:
|
||||
* RF Bands: 0x3
|
||||
* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20
|
||||
WMM: * Parameter version 1
|
||||
* u-APSD
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS b8:bc:1b:63:33:d9(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2412
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortSlotTime RadioMeasure (0x1411)
|
||||
signal: -81.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: schmidtderhit
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 1
|
||||
ERP: Barker_Preamble_Mode
|
||||
ERP D4.0: Barker_Preamble_Mode
|
||||
RSN: * Version: 1
|
||||
* Group cipher: CCMP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x19ac
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 7935 bytes
|
||||
DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 1
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 0
|
||||
* HT protection: no
|
||||
* non-GF present: 1
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Overlapping BSS scan params:
|
||||
* passive dwell: 20 TUs
|
||||
* active dwell: 10 TUs
|
||||
* channel width trigger scan interval: 300 s
|
||||
* scan passive total per channel: 200 TUs
|
||||
* scan active total per channel: 20 TUs
|
||||
* BSS width channel transition delay factor: 5
|
||||
* OBSS Scan Activity Threshold: 0.25 %
|
||||
Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, 6
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* Response Type: 3 (AP)
|
||||
* UUID: 8e998705-3ed2-399e-e43d-0d4c0a412fec
|
||||
* Manufacturer: Broadcom
|
||||
* Model: Broadcom
|
||||
* Model Number: 123456
|
||||
* Serial Number: 1234
|
||||
* Primary Device Type: 6-0050f204-1
|
||||
* Device name: BroadcomAP
|
||||
* Config methods:
|
||||
* RF Bands: 0x3
|
||||
* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20
|
||||
WMM: * Parameter version 1
|
||||
* u-APSD
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS 88:e3:ab:9d:38:f6(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2412
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS ShortSlotTime RadioMeasure (0x1401)
|
||||
signal: -84.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: Telekom_FON
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 1
|
||||
ERP: Barker_Preamble_Mode
|
||||
ERP D4.0: Barker_Preamble_Mode
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x19ac
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 7935 bytes
|
||||
DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 1
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 0
|
||||
* HT protection: no
|
||||
* non-GF present: 1
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Overlapping BSS scan params:
|
||||
* passive dwell: 20 TUs
|
||||
* active dwell: 10 TUs
|
||||
* channel width trigger scan interval: 300 s
|
||||
* scan passive total per channel: 200 TUs
|
||||
* scan active total per channel: 20 TUs
|
||||
* BSS width channel transition delay factor: 5
|
||||
* OBSS Scan Activity Threshold: 0.25 %
|
||||
Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, 6
|
||||
WMM: * Parameter version 1
|
||||
* u-APSD
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS b8:bc:1b:63:33:da(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2412
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS ShortSlotTime RadioMeasure (0x1401)
|
||||
signal: -83.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: Telekom_FON
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0
|
||||
DS Parameter set: channel 1
|
||||
ERP: Barker_Preamble_Mode
|
||||
ERP D4.0: Barker_Preamble_Mode
|
||||
Extended supported rates: 6.0 9.0 12.0 48.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x19ac
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 7935 bytes
|
||||
DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 1
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 0
|
||||
* HT protection: no
|
||||
* non-GF present: 1
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Overlapping BSS scan params:
|
||||
* passive dwell: 20 TUs
|
||||
* active dwell: 10 TUs
|
||||
* channel width trigger scan interval: 300 s
|
||||
* scan passive total per channel: 200 TUs
|
||||
* scan active total per channel: 20 TUs
|
||||
* BSS width channel transition delay factor: 5
|
||||
* OBSS Scan Activity Threshold: 0.25 %
|
||||
Extended capabilities: HT Information Exchange Supported, Extended Channel Switching, 6
|
||||
WMM: * Parameter version 1
|
||||
* u-APSD
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
BSS 24:65:11:89:1c:28(on wlan0) -- associated
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2462
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
|
||||
signal: -40.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: spycki3
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0* 9.0 12.0* 18.0
|
||||
DS Parameter set: channel 11
|
||||
TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x1
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 20 dBm
|
||||
ERP: <no flags>
|
||||
RSN: * Version: 1
|
||||
* Group cipher: TKIP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
|
||||
Extended supported rates: 24.0* 36.0 48.0 54.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x11ce
|
||||
HT20/HT40
|
||||
SM Power Save disabled
|
||||
RX HT40 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 3839 bytes
|
||||
DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT RX MCS rate indexes supported: 0-15
|
||||
HT TX MCS rate indexes are undefined
|
||||
HT operation:
|
||||
* primary channel: 11
|
||||
* secondary channel offset: below
|
||||
* STA channel width: any
|
||||
* RIFS: 1
|
||||
* HT protection: 20 MHz
|
||||
* non-GF present: 1
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
WPA: * Version: 1
|
||||
* Group cipher: TKIP
|
||||
* Pairwise ciphers: TKIP
|
||||
* Authentication suites: PSK
|
||||
WMM: * Parameter version 1
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* UUID: 0cb4b30f-b5d6-7e18-4ec8-246511891c10
|
||||
* RF Bands: 0x3
|
||||
BSS c0:25:06:eb:8e:7d(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2437
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
|
||||
signal: -84.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: FRITZ!Box Fon WLAN 7390
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0* 9.0 12.0* 18.0
|
||||
DS Parameter set: channel 6
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 20 dBm
|
||||
ERP: <no flags>
|
||||
Extended supported rates: 24.0* 36.0 48.0 54.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x18c
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 3839 bytes
|
||||
No DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT TX/RX MCS rate indexes supported: 0-15
|
||||
HT operation:
|
||||
* primary channel: 6
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 1
|
||||
* HT protection: no
|
||||
* non-GF present: 0
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Extended capabilities: 6
|
||||
WMM: * Parameter version 1
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
RSN: * Version: 1
|
||||
* Group cipher: TKIP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
|
||||
WPA: * Version: 1
|
||||
* Group cipher: TKIP
|
||||
* Pairwise ciphers: TKIP
|
||||
* Authentication suites: PSK
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* Response Type: 3 (AP)
|
||||
* UUID: 76fc7d2e-2e0b-5c3b-7135-c02506eb8e7c
|
||||
* Manufacturer: AVM
|
||||
* Model: FBox
|
||||
* Model Number: 0000
|
||||
* Serial Number: 0000
|
||||
* Primary Device Type: 6-0050f204-1
|
||||
* Device name: FBox
|
||||
* Config methods: Display, PBC, Keypad
|
||||
* RF Bands: 0x3
|
||||
* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20
|
||||
BSS c2:25:06:eb:8e:7d(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2437
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
|
||||
signal: -82.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: SDK Gast
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0* 9.0 12.0* 18.0
|
||||
DS Parameter set: channel 6
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 20 dBm
|
||||
ERP: <no flags>
|
||||
Extended supported rates: 24.0* 36.0 48.0 54.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x18c
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 3839 bytes
|
||||
No DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT TX/RX MCS rate indexes supported: 0-15
|
||||
HT operation:
|
||||
* primary channel: 6
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 1
|
||||
* HT protection: no
|
||||
* non-GF present: 0
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Extended capabilities: 6
|
||||
WMM: * Parameter version 1
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
RSN: * Version: 1
|
||||
* Group cipher: TKIP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
|
||||
WPA: * Version: 1
|
||||
* Group cipher: TKIP
|
||||
* Pairwise ciphers: TKIP
|
||||
* Authentication suites: PSK
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* Response Type: 3 (AP)
|
||||
* UUID: dfb77a7a-25b2-93f6-7ba8-01e7cd0bdb51
|
||||
* Manufacturer: AVM
|
||||
* Model: FBox
|
||||
* Model Number: 0000
|
||||
* Serial Number: 0000
|
||||
* Primary Device Type: 6-0050f204-1
|
||||
* Device name: FBox
|
||||
* Config methods: Display, PBC, Keypad
|
||||
* RF Bands: 0x3
|
||||
* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20
|
||||
BSS e0:28:6d:dd:b1:fc(on wlan0)
|
||||
TSF: 0 usec (0d, 00:00:00)
|
||||
freq: 2462
|
||||
beacon interval: 100 TUs
|
||||
capability: ESS Privacy ShortPreamble (0x0031)
|
||||
signal: -75.00 dBm
|
||||
last seen: 0 ms ago
|
||||
SSID: FRITZ!Box 7362 SL
|
||||
Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0* 9.0 12.0* 18.0
|
||||
DS Parameter set: channel 11
|
||||
Country: DE Environment: Indoor/Outdoor
|
||||
Channels [1 - 13] @ 20 dBm
|
||||
ERP: <no flags>
|
||||
Extended supported rates: 24.0* 36.0 48.0 54.0
|
||||
HT capabilities:
|
||||
Capabilities: 0x1ad
|
||||
RX LDPC
|
||||
HT20
|
||||
SM Power Save disabled
|
||||
RX HT20 SGI
|
||||
TX STBC
|
||||
RX STBC 1-stream
|
||||
Max AMSDU length: 3839 bytes
|
||||
No DSSS/CCK HT40
|
||||
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
|
||||
Minimum RX AMPDU time spacing: 8 usec (0x06)
|
||||
HT TX/RX MCS rate indexes supported: 0-23
|
||||
HT operation:
|
||||
* primary channel: 11
|
||||
* secondary channel offset: no secondary
|
||||
* STA channel width: 20 MHz
|
||||
* RIFS: 1
|
||||
* HT protection: no
|
||||
* non-GF present: 1
|
||||
* OBSS non-GF present: 0
|
||||
* dual beacon: 0
|
||||
* dual CTS protection: 0
|
||||
* STBC beacon: 0
|
||||
* L-SIG TXOP Prot: 0
|
||||
* PCO active: 0
|
||||
* PCO phase: 0
|
||||
Extended capabilities: 6
|
||||
WMM: * Parameter version 1
|
||||
* BE: CW 15-1023, AIFSN 3
|
||||
* BK: CW 15-1023, AIFSN 7
|
||||
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
|
||||
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
|
||||
RSN: * Version: 1
|
||||
* Group cipher: CCMP
|
||||
* Pairwise ciphers: CCMP
|
||||
* Authentication suites: PSK
|
||||
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
|
||||
WPS: * Version: 1.0
|
||||
* Wi-Fi Protected Setup State: 2 (Configured)
|
||||
* Response Type: 3 (AP)
|
||||
* UUID: 80ffd276-a392-0a84-6421-e0286dddb1fc
|
||||
* Manufacturer: AVM
|
||||
* Model: FBox
|
||||
* Model Number: 0000
|
||||
* Serial Number: 0000
|
||||
* Primary Device Type: 6-0050f204-1
|
||||
* Device name: FBox
|
||||
* Config methods: Display, PBC, Keypad
|
||||
* RF Bands: 0x1
|
||||
* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20`
|
||||
|
||||
func main() {
|
||||
//res, err := service.ParseIwScan(iw_scan_out)
|
||||
res, err := service.WifiScan("wlan0")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Parsed scan result:\n%v\n", res)
|
||||
err = service.WifiCreateWpaSupplicantConfigFile("spycki1 2 3", "a b c c b b", "/tmp/wpa_supplicant.conf")
|
||||
if err != nil { log.Fatal(err)}
|
||||
|
||||
}
|
@ -177,110 +177,6 @@ func (x GPIOInEdge) String() string {
|
||||
return GPIOInEdge_name[int(x)]
|
||||
}
|
||||
|
||||
type GPIONum int
|
||||
|
||||
const (
|
||||
GPIONum_NUM_1 GPIONum = 0
|
||||
GPIONum_NUM_2 GPIONum = 1
|
||||
GPIONum_NUM_3 GPIONum = 2
|
||||
GPIONum_NUM_4 GPIONum = 3
|
||||
GPIONum_NUM_5 GPIONum = 4
|
||||
GPIONum_NUM_6 GPIONum = 5
|
||||
GPIONum_NUM_7 GPIONum = 6
|
||||
GPIONum_NUM_8 GPIONum = 7
|
||||
GPIONum_NUM_9 GPIONum = 8
|
||||
GPIONum_NUM_10 GPIONum = 9
|
||||
GPIONum_NUM_11 GPIONum = 10
|
||||
GPIONum_NUM_12 GPIONum = 11
|
||||
GPIONum_NUM_13 GPIONum = 12
|
||||
GPIONum_NUM_14 GPIONum = 13
|
||||
GPIONum_NUM_15 GPIONum = 14
|
||||
GPIONum_NUM_16 GPIONum = 15
|
||||
GPIONum_NUM_17 GPIONum = 16
|
||||
GPIONum_NUM_18 GPIONum = 17
|
||||
GPIONum_NUM_19 GPIONum = 18
|
||||
GPIONum_NUM_20 GPIONum = 19
|
||||
GPIONum_NUM_21 GPIONum = 20
|
||||
GPIONum_NUM_22 GPIONum = 21
|
||||
GPIONum_NUM_23 GPIONum = 22
|
||||
GPIONum_NUM_24 GPIONum = 23
|
||||
GPIONum_NUM_25 GPIONum = 24
|
||||
GPIONum_NUM_26 GPIONum = 25
|
||||
GPIONum_NUM_27 GPIONum = 26
|
||||
GPIONum_NUM_28 GPIONum = 27
|
||||
GPIONum_NUM_29 GPIONum = 28
|
||||
GPIONum_NUM_30 GPIONum = 29
|
||||
)
|
||||
|
||||
var GPIONum_name = map[int]string{
|
||||
0: "NUM_1",
|
||||
1: "NUM_2",
|
||||
2: "NUM_3",
|
||||
3: "NUM_4",
|
||||
4: "NUM_5",
|
||||
5: "NUM_6",
|
||||
6: "NUM_7",
|
||||
7: "NUM_8",
|
||||
8: "NUM_9",
|
||||
9: "NUM_10",
|
||||
10: "NUM_11",
|
||||
11: "NUM_12",
|
||||
12: "NUM_13",
|
||||
13: "NUM_14",
|
||||
14: "NUM_15",
|
||||
15: "NUM_16",
|
||||
16: "NUM_17",
|
||||
17: "NUM_18",
|
||||
18: "NUM_19",
|
||||
19: "NUM_20",
|
||||
20: "NUM_21",
|
||||
21: "NUM_22",
|
||||
22: "NUM_23",
|
||||
23: "NUM_24",
|
||||
24: "NUM_25",
|
||||
25: "NUM_26",
|
||||
26: "NUM_27",
|
||||
27: "NUM_28",
|
||||
28: "NUM_29",
|
||||
29: "NUM_30",
|
||||
}
|
||||
var GPIONum_value = map[string]int{
|
||||
"NUM_1": 0,
|
||||
"NUM_2": 1,
|
||||
"NUM_3": 2,
|
||||
"NUM_4": 3,
|
||||
"NUM_5": 4,
|
||||
"NUM_6": 5,
|
||||
"NUM_7": 6,
|
||||
"NUM_8": 7,
|
||||
"NUM_9": 8,
|
||||
"NUM_10": 9,
|
||||
"NUM_11": 10,
|
||||
"NUM_12": 11,
|
||||
"NUM_13": 12,
|
||||
"NUM_14": 13,
|
||||
"NUM_15": 14,
|
||||
"NUM_16": 15,
|
||||
"NUM_17": 16,
|
||||
"NUM_18": 17,
|
||||
"NUM_19": 18,
|
||||
"NUM_20": 19,
|
||||
"NUM_21": 20,
|
||||
"NUM_22": 21,
|
||||
"NUM_23": 22,
|
||||
"NUM_24": 23,
|
||||
"NUM_25": 24,
|
||||
"NUM_26": 25,
|
||||
"NUM_27": 26,
|
||||
"NUM_28": 27,
|
||||
"NUM_29": 28,
|
||||
"NUM_30": 29,
|
||||
}
|
||||
|
||||
func (x GPIONum) String() string {
|
||||
return GPIONum_name[int(x)]
|
||||
}
|
||||
|
||||
type GPIOOutValue int
|
||||
|
||||
const (
|
||||
@ -2719,17 +2615,17 @@ func (m *TriggerGroupReceiveMulti) Unmarshal(rawBytes []byte) (*TriggerGroupRece
|
||||
}
|
||||
|
||||
type TriggerGPIOIn struct {
|
||||
GpioNum GPIONum
|
||||
GpioName string
|
||||
PullUpDown GPIOInPullUpDown
|
||||
GpioInEdge GPIOInEdge
|
||||
}
|
||||
|
||||
// GetGpioNum gets the GpioNum of the TriggerGPIOIn.
|
||||
func (m *TriggerGPIOIn) GetGpioNum() (x GPIONum) {
|
||||
// GetGpioName gets the GpioName of the TriggerGPIOIn.
|
||||
func (m *TriggerGPIOIn) GetGpioName() (x string) {
|
||||
if m == nil {
|
||||
return x
|
||||
}
|
||||
return m.GpioNum
|
||||
return m.GpioName
|
||||
}
|
||||
|
||||
// GetPullUpDown gets the PullUpDown of the TriggerGPIOIn.
|
||||
@ -2754,8 +2650,8 @@ func (m *TriggerGPIOIn) MarshalToWriter(writer jspb.Writer) {
|
||||
return
|
||||
}
|
||||
|
||||
if int(m.GpioNum) != 0 {
|
||||
writer.WriteEnum(1, int(m.GpioNum))
|
||||
if len(m.GpioName) > 0 {
|
||||
writer.WriteString(1, m.GpioName)
|
||||
}
|
||||
|
||||
if int(m.PullUpDown) != 0 {
|
||||
@ -2785,7 +2681,7 @@ func (m *TriggerGPIOIn) UnmarshalFromReader(reader jspb.Reader) *TriggerGPIOIn {
|
||||
|
||||
switch reader.GetFieldNumber() {
|
||||
case 1:
|
||||
m.GpioNum = GPIONum(reader.ReadEnum())
|
||||
m.GpioName = reader.ReadString()
|
||||
case 2:
|
||||
m.PullUpDown = GPIOInPullUpDown(reader.ReadEnum())
|
||||
case 3:
|
||||
@ -3064,16 +2960,16 @@ func (m *ActionLog) Unmarshal(rawBytes []byte) (*ActionLog, error) {
|
||||
}
|
||||
|
||||
type ActionGPIOOut struct {
|
||||
GpioNum GPIONum
|
||||
Value GPIOOutValue
|
||||
GpioName string
|
||||
Value GPIOOutValue
|
||||
}
|
||||
|
||||
// GetGpioNum gets the GpioNum of the ActionGPIOOut.
|
||||
func (m *ActionGPIOOut) GetGpioNum() (x GPIONum) {
|
||||
// GetGpioName gets the GpioName of the ActionGPIOOut.
|
||||
func (m *ActionGPIOOut) GetGpioName() (x string) {
|
||||
if m == nil {
|
||||
return x
|
||||
}
|
||||
return m.GpioNum
|
||||
return m.GpioName
|
||||
}
|
||||
|
||||
// GetValue gets the Value of the ActionGPIOOut.
|
||||
@ -3090,8 +2986,8 @@ func (m *ActionGPIOOut) MarshalToWriter(writer jspb.Writer) {
|
||||
return
|
||||
}
|
||||
|
||||
if int(m.GpioNum) != 0 {
|
||||
writer.WriteEnum(1, int(m.GpioNum))
|
||||
if len(m.GpioName) > 0 {
|
||||
writer.WriteString(1, m.GpioName)
|
||||
}
|
||||
|
||||
if int(m.Value) != 0 {
|
||||
@ -3117,7 +3013,7 @@ func (m *ActionGPIOOut) UnmarshalFromReader(reader jspb.Reader) *ActionGPIOOut {
|
||||
|
||||
switch reader.GetFieldNumber() {
|
||||
case 1:
|
||||
m.GpioNum = GPIONum(reader.ReadEnum())
|
||||
m.GpioName = reader.ReadString()
|
||||
case 2:
|
||||
m.Value = GPIOOutValue(reader.ReadEnum())
|
||||
default:
|
||||
@ -6642,6 +6538,8 @@ type P4WNP1Client interface {
|
||||
ListStoredHIDScripts(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error)
|
||||
ListStoredBashScripts(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error)
|
||||
ListStoredDBBackups(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error)
|
||||
// GPIO
|
||||
GetAvailableGpios(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error)
|
||||
}
|
||||
|
||||
type p4WNP1Client struct {
|
||||
@ -7370,3 +7268,12 @@ func (c *p4WNP1Client) ListStoredDBBackups(ctx context.Context, in *Empty, opts
|
||||
|
||||
return new(StringMessageArray).Unmarshal(resp)
|
||||
}
|
||||
|
||||
func (c *p4WNP1Client) GetAvailableGpios(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error) {
|
||||
resp, err := c.client.RPCCall(ctx, "GetAvailableGpios", in.Marshal(), opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return new(StringMessageArray).Unmarshal(resp)
|
||||
}
|
||||
|
790
proto/grpc.pb.go
790
proto/grpc.pb.go
@ -189,111 +189,6 @@ func (x GPIOInEdge) String() string {
|
||||
}
|
||||
func (GPIOInEdge) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
|
||||
|
||||
type GPIONum int32
|
||||
|
||||
const (
|
||||
GPIONum_NUM_1 GPIONum = 0
|
||||
GPIONum_NUM_2 GPIONum = 1
|
||||
GPIONum_NUM_3 GPIONum = 2
|
||||
GPIONum_NUM_4 GPIONum = 3
|
||||
GPIONum_NUM_5 GPIONum = 4
|
||||
GPIONum_NUM_6 GPIONum = 5
|
||||
GPIONum_NUM_7 GPIONum = 6
|
||||
GPIONum_NUM_8 GPIONum = 7
|
||||
GPIONum_NUM_9 GPIONum = 8
|
||||
GPIONum_NUM_10 GPIONum = 9
|
||||
GPIONum_NUM_11 GPIONum = 10
|
||||
GPIONum_NUM_12 GPIONum = 11
|
||||
GPIONum_NUM_13 GPIONum = 12
|
||||
GPIONum_NUM_14 GPIONum = 13
|
||||
GPIONum_NUM_15 GPIONum = 14
|
||||
GPIONum_NUM_16 GPIONum = 15
|
||||
GPIONum_NUM_17 GPIONum = 16
|
||||
GPIONum_NUM_18 GPIONum = 17
|
||||
GPIONum_NUM_19 GPIONum = 18
|
||||
GPIONum_NUM_20 GPIONum = 19
|
||||
GPIONum_NUM_21 GPIONum = 20
|
||||
GPIONum_NUM_22 GPIONum = 21
|
||||
GPIONum_NUM_23 GPIONum = 22
|
||||
GPIONum_NUM_24 GPIONum = 23
|
||||
GPIONum_NUM_25 GPIONum = 24
|
||||
GPIONum_NUM_26 GPIONum = 25
|
||||
GPIONum_NUM_27 GPIONum = 26
|
||||
GPIONum_NUM_28 GPIONum = 27
|
||||
GPIONum_NUM_29 GPIONum = 28
|
||||
GPIONum_NUM_30 GPIONum = 29
|
||||
)
|
||||
|
||||
var GPIONum_name = map[int32]string{
|
||||
0: "NUM_1",
|
||||
1: "NUM_2",
|
||||
2: "NUM_3",
|
||||
3: "NUM_4",
|
||||
4: "NUM_5",
|
||||
5: "NUM_6",
|
||||
6: "NUM_7",
|
||||
7: "NUM_8",
|
||||
8: "NUM_9",
|
||||
9: "NUM_10",
|
||||
10: "NUM_11",
|
||||
11: "NUM_12",
|
||||
12: "NUM_13",
|
||||
13: "NUM_14",
|
||||
14: "NUM_15",
|
||||
15: "NUM_16",
|
||||
16: "NUM_17",
|
||||
17: "NUM_18",
|
||||
18: "NUM_19",
|
||||
19: "NUM_20",
|
||||
20: "NUM_21",
|
||||
21: "NUM_22",
|
||||
22: "NUM_23",
|
||||
23: "NUM_24",
|
||||
24: "NUM_25",
|
||||
25: "NUM_26",
|
||||
26: "NUM_27",
|
||||
27: "NUM_28",
|
||||
28: "NUM_29",
|
||||
29: "NUM_30",
|
||||
}
|
||||
var GPIONum_value = map[string]int32{
|
||||
"NUM_1": 0,
|
||||
"NUM_2": 1,
|
||||
"NUM_3": 2,
|
||||
"NUM_4": 3,
|
||||
"NUM_5": 4,
|
||||
"NUM_6": 5,
|
||||
"NUM_7": 6,
|
||||
"NUM_8": 7,
|
||||
"NUM_9": 8,
|
||||
"NUM_10": 9,
|
||||
"NUM_11": 10,
|
||||
"NUM_12": 11,
|
||||
"NUM_13": 12,
|
||||
"NUM_14": 13,
|
||||
"NUM_15": 14,
|
||||
"NUM_16": 15,
|
||||
"NUM_17": 16,
|
||||
"NUM_18": 17,
|
||||
"NUM_19": 18,
|
||||
"NUM_20": 19,
|
||||
"NUM_21": 20,
|
||||
"NUM_22": 21,
|
||||
"NUM_23": 22,
|
||||
"NUM_24": 23,
|
||||
"NUM_25": 24,
|
||||
"NUM_26": 25,
|
||||
"NUM_27": 26,
|
||||
"NUM_28": 27,
|
||||
"NUM_29": 28,
|
||||
"NUM_30": 29,
|
||||
}
|
||||
|
||||
func (x GPIONum) String() string {
|
||||
return proto.EnumName(GPIONum_name, int32(x))
|
||||
}
|
||||
func (GPIONum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
|
||||
|
||||
type GPIOOutValue int32
|
||||
|
||||
const (
|
||||
@ -316,7 +211,7 @@ var GPIOOutValue_value = map[string]int32{
|
||||
func (x GPIOOutValue) String() string {
|
||||
return proto.EnumName(GPIOOutValue_name, int32(x))
|
||||
}
|
||||
func (GPIOOutValue) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
|
||||
func (GPIOOutValue) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
|
||||
|
||||
// WiFi2 (distinguish state and settings)
|
||||
type WiFiWorkingMode int32
|
||||
@ -344,7 +239,7 @@ var WiFiWorkingMode_value = map[string]int32{
|
||||
func (x WiFiWorkingMode) String() string {
|
||||
return proto.EnumName(WiFiWorkingMode_name, int32(x))
|
||||
}
|
||||
func (WiFiWorkingMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
|
||||
func (WiFiWorkingMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
|
||||
|
||||
type WiFiStateMode int32
|
||||
|
||||
@ -368,7 +263,7 @@ var WiFiStateMode_value = map[string]int32{
|
||||
func (x WiFiStateMode) String() string {
|
||||
return proto.EnumName(WiFiStateMode_name, int32(x))
|
||||
}
|
||||
func (WiFiStateMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
|
||||
func (WiFiStateMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
|
||||
|
||||
type WiFiAuthMode int32
|
||||
|
||||
@ -389,7 +284,7 @@ var WiFiAuthMode_value = map[string]int32{
|
||||
func (x WiFiAuthMode) String() string {
|
||||
return proto.EnumName(WiFiAuthMode_name, int32(x))
|
||||
}
|
||||
func (WiFiAuthMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
|
||||
func (WiFiAuthMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
|
||||
|
||||
type AccessibleFolder int32
|
||||
|
||||
@ -413,7 +308,7 @@ var AccessibleFolder_value = map[string]int32{
|
||||
func (x AccessibleFolder) String() string {
|
||||
return proto.EnumName(AccessibleFolder_name, int32(x))
|
||||
}
|
||||
func (AccessibleFolder) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
|
||||
func (AccessibleFolder) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
|
||||
|
||||
type ActionDeploySettingsTemplate_TemplateType int32
|
||||
|
||||
@ -1661,7 +1556,7 @@ func (m *TriggerGroupReceiveMulti) GetType() GroupReceiveMultiType {
|
||||
}
|
||||
|
||||
type TriggerGPIOIn struct {
|
||||
GpioNum GPIONum `protobuf:"varint,1,opt,name=gpioNum,enum=P4wnP1_grpc.GPIONum" json:"gpioNum,omitempty"`
|
||||
GpioName string `protobuf:"bytes,1,opt,name=gpio_name,json=gpioName" json:"gpio_name,omitempty"`
|
||||
PullUpDown GPIOInPullUpDown `protobuf:"varint,2,opt,name=pullUpDown,enum=P4wnP1_grpc.GPIOInPullUpDown" json:"pullUpDown,omitempty"`
|
||||
GpioInEdge GPIOInEdge `protobuf:"varint,3,opt,name=gpioInEdge,enum=P4wnP1_grpc.GPIOInEdge" json:"gpioInEdge,omitempty"`
|
||||
}
|
||||
@ -1671,11 +1566,11 @@ func (m *TriggerGPIOIn) String() string { return proto.CompactTextStr
|
||||
func (*TriggerGPIOIn) ProtoMessage() {}
|
||||
func (*TriggerGPIOIn) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
|
||||
|
||||
func (m *TriggerGPIOIn) GetGpioNum() GPIONum {
|
||||
func (m *TriggerGPIOIn) GetGpioName() string {
|
||||
if m != nil {
|
||||
return m.GpioNum
|
||||
return m.GpioName
|
||||
}
|
||||
return GPIONum_NUM_1
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *TriggerGPIOIn) GetPullUpDown() GPIOInPullUpDown {
|
||||
@ -1757,8 +1652,8 @@ func (*ActionLog) ProtoMessage() {}
|
||||
func (*ActionLog) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
|
||||
|
||||
type ActionGPIOOut struct {
|
||||
GpioNum GPIONum `protobuf:"varint,1,opt,name=gpioNum,enum=P4wnP1_grpc.GPIONum" json:"gpioNum,omitempty"`
|
||||
Value GPIOOutValue `protobuf:"varint,2,opt,name=value,enum=P4wnP1_grpc.GPIOOutValue" json:"value,omitempty"`
|
||||
GpioName string `protobuf:"bytes,1,opt,name=gpio_name,json=gpioName" json:"gpio_name,omitempty"`
|
||||
Value GPIOOutValue `protobuf:"varint,2,opt,name=value,enum=P4wnP1_grpc.GPIOOutValue" json:"value,omitempty"`
|
||||
}
|
||||
|
||||
func (m *ActionGPIOOut) Reset() { *m = ActionGPIOOut{} }
|
||||
@ -1766,11 +1661,11 @@ func (m *ActionGPIOOut) String() string { return proto.CompactTextStr
|
||||
func (*ActionGPIOOut) ProtoMessage() {}
|
||||
func (*ActionGPIOOut) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
|
||||
|
||||
func (m *ActionGPIOOut) GetGpioNum() GPIONum {
|
||||
func (m *ActionGPIOOut) GetGpioName() string {
|
||||
if m != nil {
|
||||
return m.GpioNum
|
||||
return m.GpioName
|
||||
}
|
||||
return GPIONum_NUM_1
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *ActionGPIOOut) GetValue() GPIOOutValue {
|
||||
@ -3113,7 +3008,6 @@ func init() {
|
||||
proto.RegisterEnum("P4wnP1_grpc.GroupReceiveMultiType", GroupReceiveMultiType_name, GroupReceiveMultiType_value)
|
||||
proto.RegisterEnum("P4wnP1_grpc.GPIOInPullUpDown", GPIOInPullUpDown_name, GPIOInPullUpDown_value)
|
||||
proto.RegisterEnum("P4wnP1_grpc.GPIOInEdge", GPIOInEdge_name, GPIOInEdge_value)
|
||||
proto.RegisterEnum("P4wnP1_grpc.GPIONum", GPIONum_name, GPIONum_value)
|
||||
proto.RegisterEnum("P4wnP1_grpc.GPIOOutValue", GPIOOutValue_name, GPIOOutValue_value)
|
||||
proto.RegisterEnum("P4wnP1_grpc.WiFiWorkingMode", WiFiWorkingMode_name, WiFiWorkingMode_value)
|
||||
proto.RegisterEnum("P4wnP1_grpc.WiFiStateMode", WiFiStateMode_name, WiFiStateMode_value)
|
||||
@ -3223,6 +3117,8 @@ type P4WNP1Client interface {
|
||||
ListStoredHIDScripts(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error)
|
||||
ListStoredBashScripts(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error)
|
||||
ListStoredDBBackups(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error)
|
||||
// GPIO
|
||||
GetAvailableGpios(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error)
|
||||
}
|
||||
|
||||
type p4WNP1Client struct {
|
||||
@ -3949,6 +3845,15 @@ func (c *p4WNP1Client) ListStoredDBBackups(ctx context.Context, in *Empty, opts
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *p4WNP1Client) GetAvailableGpios(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error) {
|
||||
out := new(StringMessageArray)
|
||||
err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetAvailableGpios", in, out, c.cc, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// Server API for P4WNP1 service
|
||||
|
||||
type P4WNP1Server interface {
|
||||
@ -4041,6 +3946,8 @@ type P4WNP1Server interface {
|
||||
ListStoredHIDScripts(context.Context, *Empty) (*StringMessageArray, error)
|
||||
ListStoredBashScripts(context.Context, *Empty) (*StringMessageArray, error)
|
||||
ListStoredDBBackups(context.Context, *Empty) (*StringMessageArray, error)
|
||||
// GPIO
|
||||
GetAvailableGpios(context.Context, *Empty) (*StringMessageArray, error)
|
||||
}
|
||||
|
||||
func RegisterP4WNP1Server(s *grpc.Server, srv P4WNP1Server) {
|
||||
@ -5436,6 +5343,24 @@ func _P4WNP1_ListStoredDBBackups_Handler(srv interface{}, ctx context.Context, d
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _P4WNP1_GetAvailableGpios_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(Empty)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(P4WNP1Server).GetAvailableGpios(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/P4wnP1_grpc.P4WNP1/GetAvailableGpios",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(P4WNP1Server).GetAvailableGpios(ctx, req.(*Empty))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
var _P4WNP1_serviceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "P4wnP1_grpc.P4WNP1",
|
||||
HandlerType: (*P4WNP1Server)(nil),
|
||||
@ -5744,6 +5669,10 @@ var _P4WNP1_serviceDesc = grpc.ServiceDesc{
|
||||
MethodName: "ListStoredDBBackups",
|
||||
Handler: _P4WNP1_ListStoredDBBackups_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetAvailableGpios",
|
||||
Handler: _P4WNP1_GetAvailableGpios_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
@ -5758,319 +5687,310 @@ var _P4WNP1_serviceDesc = grpc.ServiceDesc{
|
||||
func init() { proto.RegisterFile("grpc.proto", fileDescriptor0) }
|
||||
|
||||
var fileDescriptor0 = []byte{
|
||||
// 5022 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5c, 0x49, 0x73, 0x23, 0x47,
|
||||
0x76, 0xc6, 0xc2, 0x05, 0x78, 0x20, 0xc8, 0x62, 0x36, 0x17, 0x34, 0x7b, 0xaf, 0x69, 0x69, 0x5a,
|
||||
0x94, 0x44, 0xa9, 0xd9, 0xad, 0xee, 0x96, 0x46, 0xb2, 0x06, 0x1b, 0x01, 0x74, 0x83, 0x00, 0x54,
|
||||
0x05, 0x34, 0x35, 0x8b, 0x5d, 0x53, 0xa8, 0x4a, 0x82, 0xa5, 0x06, 0xaa, 0xe0, 0x5a, 0x48, 0xd1,
|
||||
0x8e, 0x98, 0x08, 0x4f, 0x84, 0x23, 0xe6, 0xe0, 0xbb, 0x0f, 0xfe, 0x0d, 0xf6, 0xcd, 0xe1, 0x5f,
|
||||
0xe4, 0x08, 0xfb, 0x32, 0x37, 0x5f, 0x7c, 0xb1, 0x23, 0x33, 0x6b, 0x05, 0xaa, 0xb8, 0xb5, 0x74,
|
||||
0xcb, 0x7c, 0xf9, 0xf2, 0xcb, 0xe5, 0x2d, 0xf9, 0xf2, 0x65, 0x01, 0x00, 0x23, 0x73, 0xaa, 0xec,
|
||||
0x4d, 0x4d, 0xc3, 0x36, 0x50, 0xa1, 0xf7, 0xfc, 0x4c, 0xef, 0x3d, 0x95, 0x08, 0x89, 0xff, 0x97,
|
||||
0x0c, 0xac, 0x1e, 0xca, 0x96, 0x8d, 0xcd, 0x3e, 0x9e, 0x4c, 0xc7, 0xb2, 0x8d, 0xd1, 0x0b, 0xd8,
|
||||
0xb6, 0xdd, 0xb2, 0xa4, 0xcb, 0x13, 0x2c, 0x0d, 0xc7, 0x0e, 0xb6, 0x0d, 0xc3, 0x3e, 0x29, 0xa5,
|
||||
0x1f, 0xa6, 0x9f, 0xe4, 0x85, 0x4d, 0xaf, 0xb9, 0x23, 0x4f, 0x70, 0xc5, 0x6b, 0x44, 0xbb, 0xb0,
|
||||
0x1e, 0xed, 0xe7, 0x58, 0xc3, 0x52, 0x86, 0xf6, 0x58, 0x0b, 0xf7, 0x18, 0x58, 0x43, 0xf4, 0x09,
|
||||
0xa0, 0x28, 0xef, 0x99, 0x76, 0xac, 0x95, 0xb2, 0x94, 0x99, 0x0b, 0x33, 0x1f, 0x69, 0xc7, 0x1a,
|
||||
0x2a, 0xc3, 0xbd, 0x28, 0xb7, 0x6d, 0x6a, 0xa3, 0x11, 0x36, 0x25, 0x59, 0xb1, 0x35, 0x43, 0xb7,
|
||||
0x4a, 0x0b, 0xb4, 0xe3, 0x4e, 0xb8, 0x63, 0x9f, 0xb1, 0x94, 0x19, 0x07, 0x7a, 0x0e, 0x5b, 0x11,
|
||||
0x08, 0x4b, 0xd2, 0xb1, 0x7d, 0x66, 0x98, 0xef, 0x4a, 0x8b, 0x0f, 0xb3, 0x4f, 0xf2, 0xc2, 0x46,
|
||||
0xb8, 0xaf, 0xd5, 0x61, 0x6d, 0xfc, 0xdf, 0xc3, 0x5d, 0x01, 0xff, 0xad, 0x83, 0x2d, 0x3b, 0xba,
|
||||
0x47, 0xa2, 0x6d, 0x98, 0xf2, 0x08, 0x23, 0x1e, 0x56, 0xfa, 0xa1, 0x7e, 0xee, 0xfe, 0x44, 0x68,
|
||||
0xe8, 0x25, 0xe4, 0x3c, 0x6c, 0xba, 0x1b, 0x85, 0xfd, 0x3b, 0x7b, 0x21, 0x09, 0xec, 0x45, 0x91,
|
||||
0x05, 0x9f, 0x99, 0xff, 0x87, 0x34, 0x3c, 0xf0, 0x77, 0xd7, 0x9d, 0x86, 0x88, 0x6d, 0x5b, 0xd3,
|
||||
0x47, 0xd6, 0x75, 0x26, 0xf0, 0x15, 0xe4, 0x2c, 0xb7, 0x9b, 0x3b, 0x81, 0xfb, 0x91, 0x09, 0xf8,
|
||||
0x63, 0x78, 0xe0, 0x82, 0xcf, 0xcf, 0xff, 0x63, 0x1a, 0xd6, 0xe7, 0xda, 0xd1, 0xaf, 0x20, 0xa3,
|
||||
0x68, 0x74, 0xac, 0xc2, 0xfe, 0xc7, 0xf1, 0x58, 0x55, 0x43, 0xb7, 0x4d, 0x63, 0x3c, 0xc6, 0x66,
|
||||
0x4b, 0x3f, 0x36, 0xcc, 0x89, 0x4c, 0xc4, 0x20, 0x64, 0x14, 0x0d, 0x3d, 0x83, 0x8c, 0xec, 0x4d,
|
||||
0xe4, 0x17, 0xf1, 0x9d, 0xcb, 0x23, 0xac, 0xfb, 0x4b, 0x15, 0x32, 0xb2, 0xc5, 0xef, 0xc2, 0x56,
|
||||
0x7c, 0x2b, 0xe2, 0x20, 0x3b, 0xd5, 0x74, 0x77, 0xe1, 0xa4, 0xc8, 0xff, 0x6f, 0x1a, 0xb6, 0x7d,
|
||||
0x66, 0x57, 0x92, 0x22, 0x36, 0x4f, 0x35, 0x05, 0x13, 0x35, 0x30, 0xf1, 0x48, 0x23, 0x3b, 0x2e,
|
||||
0x19, 0xa6, 0xe4, 0xe8, 0x5e, 0x8d, 0x02, 0xe4, 0x84, 0x0d, 0xaf, 0xde, 0x35, 0x07, 0x7e, 0x1b,
|
||||
0xd1, 0x6c, 0x0b, 0x9b, 0xa7, 0xac, 0x8f, 0x62, 0xe8, 0x3a, 0x56, 0x6c, 0xba, 0x82, 0x9c, 0xb0,
|
||||
0xc6, 0x1a, 0xba, 0x66, 0x95, 0x91, 0xd1, 0xd7, 0xb0, 0x60, 0x9f, 0x4f, 0x31, 0xd5, 0xe5, 0xd5,
|
||||
0xfd, 0x27, 0xf1, 0x0b, 0x8c, 0xce, 0xaa, 0x7f, 0x3e, 0xc5, 0x02, 0xed, 0x85, 0xee, 0x43, 0x61,
|
||||
0x22, 0x2b, 0x64, 0x18, 0xa2, 0xa4, 0xae, 0x5e, 0xe7, 0x27, 0xb2, 0xd2, 0x35, 0xa9, 0x2c, 0x1f,
|
||||
0x40, 0x61, 0x68, 0x6a, 0xea, 0x88, 0x29, 0x71, 0x69, 0x91, 0xb6, 0x03, 0x23, 0x11, 0x06, 0xfe,
|
||||
0xbf, 0x17, 0xe0, 0x4e, 0x8c, 0x10, 0xfc, 0xed, 0x2a, 0xc1, 0xf2, 0xd4, 0x38, 0xc3, 0x26, 0x56,
|
||||
0xdd, 0x15, 0x7b, 0x55, 0xf4, 0x10, 0x0a, 0xee, 0xd2, 0xe4, 0xe1, 0x18, 0xbb, 0xcb, 0x0b, 0x93,
|
||||
0xd0, 0x47, 0xc0, 0x1d, 0xcb, 0x96, 0x2d, 0x85, 0xd9, 0xb2, 0x6c, 0x17, 0x08, 0xbd, 0x1a, 0x62,
|
||||
0xe5, 0x61, 0x45, 0xd5, 0x2c, 0xc5, 0x38, 0xc5, 0x26, 0x65, 0x5b, 0xa0, 0x6c, 0x11, 0x1a, 0xda,
|
||||
0x81, 0xdc, 0xd0, 0xd0, 0x55, 0xda, 0xbe, 0x48, 0xdb, 0xfd, 0x3a, 0xda, 0x83, 0x5b, 0x63, 0x4d,
|
||||
0x7f, 0x27, 0x8d, 0xf1, 0x29, 0x1e, 0x4b, 0x16, 0x56, 0x1c, 0x53, 0xb3, 0xcf, 0x4b, 0x4b, 0x94,
|
||||
0x6d, 0x9d, 0x34, 0xb5, 0x49, 0x8b, 0xe8, 0x36, 0xa0, 0x7d, 0xd8, 0xa4, 0x4c, 0x58, 0xb2, 0xb4,
|
||||
0xc9, 0x74, 0x8c, 0xa5, 0xa9, 0xac, 0x99, 0x9a, 0x3e, 0x2a, 0x2d, 0xd3, 0x1e, 0xb7, 0x58, 0xa3,
|
||||
0x48, 0xdb, 0x7a, 0xac, 0x09, 0x6d, 0xc2, 0xd2, 0xd0, 0x94, 0xb0, 0x6a, 0x96, 0x72, 0x94, 0x69,
|
||||
0x71, 0x68, 0xd6, 0x55, 0x13, 0xdd, 0x03, 0x38, 0xd1, 0x46, 0x27, 0x92, 0x35, 0xc5, 0x58, 0x2d,
|
||||
0xe5, 0x69, 0x53, 0x9e, 0x50, 0x44, 0x42, 0x20, 0xcd, 0x63, 0xe3, 0x4c, 0xc2, 0x3a, 0x36, 0x47,
|
||||
0xe7, 0x25, 0x60, 0xcd, 0x63, 0xe3, 0xac, 0x4e, 0x09, 0x64, 0x17, 0x65, 0xf5, 0x14, 0x9b, 0xb6,
|
||||
0x66, 0x91, 0xe1, 0x0b, 0x6c, 0x17, 0x43, 0x24, 0xf4, 0x29, 0x20, 0x77, 0xaa, 0xee, 0x3e, 0x52,
|
||||
0x0f, 0xb6, 0xc2, 0x56, 0xc6, 0x5a, 0xaa, 0x41, 0x03, 0x19, 0x4f, 0xc5, 0x43, 0x67, 0x24, 0xbd,
|
||||
0xc3, 0xe7, 0x56, 0xa9, 0xc8, 0xc6, 0xa3, 0x94, 0x37, 0xf8, 0x9c, 0xc9, 0xd3, 0xd4, 0x4e, 0x65,
|
||||
0xe5, 0xbc, 0xb4, 0xea, 0xca, 0x93, 0x55, 0xd1, 0x97, 0x50, 0x52, 0x7c, 0xf9, 0x93, 0xb1, 0x8e,
|
||||
0xb5, 0x91, 0x63, 0x52, 0x3b, 0x2c, 0xad, 0x51, 0xd6, 0xed, 0xa0, 0xbd, 0x1a, 0x6e, 0x46, 0x1f,
|
||||
0xc0, 0xaa, 0x65, 0xcb, 0xb6, 0xa6, 0x48, 0xb2, 0xaa, 0x9a, 0xd8, 0xb2, 0x4a, 0x1c, 0xed, 0x50,
|
||||
0x64, 0xd4, 0x32, 0x23, 0xf2, 0x7f, 0x59, 0x80, 0xfb, 0x17, 0x1b, 0x3c, 0x99, 0x9e, 0x07, 0x41,
|
||||
0xd4, 0x6d, 0x45, 0xf0, 0xaa, 0xe8, 0x63, 0x58, 0xf7, 0xcf, 0x15, 0xe9, 0x14, 0x9b, 0x16, 0x99,
|
||||
0x17, 0x51, 0xba, 0xa2, 0xc0, 0xf9, 0x0d, 0x6f, 0x19, 0x9d, 0xa8, 0xd3, 0x44, 0xd6, 0x9d, 0x63,
|
||||
0x59, 0xb1, 0x1d, 0x13, 0x9b, 0x54, 0xeb, 0x8a, 0x42, 0x84, 0x86, 0x8e, 0x00, 0x59, 0xce, 0x74,
|
||||
0x6a, 0x98, 0x36, 0x56, 0x25, 0xdf, 0xe1, 0x2d, 0x50, 0x3f, 0xf3, 0xe4, 0x32, 0x27, 0xe5, 0x3b,
|
||||
0x9b, 0x75, 0x1f, 0xc3, 0x37, 0x19, 0x11, 0x38, 0xc5, 0x31, 0x4d, 0xac, 0xdb, 0x01, 0xec, 0xe2,
|
||||
0x35, 0x61, 0xd7, 0x5c, 0x04, 0x1f, 0xf4, 0x43, 0x58, 0x53, 0xc6, 0xb2, 0x65, 0x49, 0xc6, 0xb1,
|
||||
0xa4, 0x62, 0xe2, 0x05, 0xa8, 0x72, 0xaf, 0x08, 0x45, 0x4a, 0xee, 0x1e, 0xd7, 0x28, 0x11, 0x21,
|
||||
0x58, 0xa0, 0x96, 0xbe, 0x4c, 0x2d, 0x9d, 0x96, 0x89, 0x4a, 0x58, 0x27, 0x86, 0x69, 0x33, 0x1f,
|
||||
0x90, 0x63, 0x3e, 0x82, 0x52, 0xa8, 0x8f, 0x78, 0x04, 0x2b, 0x9a, 0x25, 0xc9, 0xa7, 0xb2, 0x36,
|
||||
0xa6, 0xb6, 0xc5, 0x54, 0xb8, 0xa0, 0x59, 0x65, 0x8f, 0x84, 0x7e, 0x05, 0x3b, 0x16, 0xf3, 0x3d,
|
||||
0xde, 0x31, 0x28, 0xb9, 0x0e, 0x4e, 0x97, 0xa7, 0xae, 0x52, 0x6f, 0xbb, 0x1c, 0x21, 0x5f, 0x85,
|
||||
0xcd, 0x8e, 0x3c, 0x45, 0xdf, 0xc0, 0x9d, 0x84, 0xce, 0x53, 0x59, 0x77, 0x5c, 0x95, 0x2f, 0xc5,
|
||||
0xf5, 0xee, 0xc9, 0xba, 0x83, 0xbe, 0x84, 0xdb, 0x09, 0xdd, 0x47, 0xba, 0x6b, 0x06, 0x5b, 0x71,
|
||||
0x9d, 0x1b, 0x3a, 0xff, 0x03, 0x70, 0x91, 0x63, 0x5d, 0xc4, 0x36, 0xaa, 0xc0, 0x6a, 0xf4, 0xa8,
|
||||
0x2f, 0xa5, 0x1f, 0x66, 0x9f, 0x14, 0xf6, 0x77, 0x22, 0xb2, 0x89, 0xb0, 0x08, 0x33, 0x3d, 0xc8,
|
||||
0x26, 0xd3, 0xd3, 0x93, 0x05, 0x2b, 0xb4, 0xcc, 0xff, 0x2b, 0x40, 0x31, 0xc2, 0x86, 0x56, 0x21,
|
||||
0xa3, 0x31, 0xaf, 0x59, 0x14, 0x32, 0x9a, 0x4a, 0x74, 0xdb, 0xd0, 0xb1, 0x78, 0x62, 0x78, 0x67,
|
||||
0x81, 0x57, 0x25, 0x9e, 0x4d, 0xb3, 0x48, 0xaf, 0x53, 0xcf, 0x41, 0xfa, 0x75, 0x74, 0x17, 0xf2,
|
||||
0xda, 0x64, 0xe2, 0xd8, 0x21, 0xb7, 0x18, 0x10, 0x50, 0x1b, 0x56, 0xdd, 0xb5, 0x8b, 0xb6, 0x4c,
|
||||
0xb4, 0xd0, 0xd5, 0x34, 0x3e, 0x6e, 0x35, 0x62, 0x84, 0xb3, 0x99, 0x12, 0x66, 0xfa, 0xa2, 0xef,
|
||||
0x01, 0x39, 0xd6, 0xb0, 0x21, 0xab, 0x23, 0xec, 0x79, 0x67, 0xac, 0x52, 0x3d, 0x2b, 0xec, 0x7f,
|
||||
0x18, 0x87, 0x38, 0x10, 0x2b, 0x33, 0xdc, 0xcd, 0x94, 0x10, 0x83, 0x81, 0x64, 0xd8, 0xf4, 0xa9,
|
||||
0x35, 0xe2, 0xd4, 0x3d, 0xf0, 0x65, 0x0a, 0xfe, 0xd1, 0x85, 0xe0, 0xe1, 0x0e, 0xcd, 0x94, 0x10,
|
||||
0x8f, 0x84, 0x5a, 0x50, 0x24, 0x41, 0x61, 0xb9, 0xe7, 0xed, 0x44, 0x8e, 0x42, 0x3f, 0x8a, 0x83,
|
||||
0x3e, 0x0a, 0x33, 0x36, 0x53, 0x42, 0xb4, 0x27, 0xd9, 0x07, 0x42, 0xf0, 0xa7, 0x5f, 0xb6, 0x44,
|
||||
0x5b, 0xa6, 0x76, 0x91, 0xb0, 0x0f, 0x47, 0x73, 0xdc, 0x64, 0x1f, 0xe6, 0x31, 0x68, 0x6c, 0x65,
|
||||
0x9d, 0xb4, 0x8d, 0x91, 0xa6, 0x53, 0xb3, 0x29, 0xec, 0xdf, 0x8d, 0x95, 0x94, 0xd8, 0xa4, 0x3c,
|
||||
0xcd, 0x94, 0xe0, 0xf3, 0x23, 0x01, 0x38, 0xf5, 0x44, 0x99, 0xb6, 0xb1, 0x6c, 0xe1, 0x86, 0x29,
|
||||
0xeb, 0x64, 0x8d, 0x05, 0x8a, 0xf1, 0x38, 0x0e, 0xa3, 0xd6, 0xac, 0xf6, 0xc2, 0xbc, 0xcd, 0x94,
|
||||
0x30, 0xd7, 0x1f, 0x1d, 0xc0, 0xca, 0xc8, 0x34, 0x9c, 0xa9, 0x80, 0x15, 0x4c, 0xb4, 0x6f, 0x85,
|
||||
0xe2, 0x3d, 0x8c, 0xc3, 0x6b, 0x84, 0xf8, 0x9a, 0x29, 0x21, 0xd2, 0x0f, 0x0d, 0x60, 0x3d, 0x5c,
|
||||
0x3f, 0x74, 0xc6, 0xb6, 0x46, 0x0f, 0x9f, 0xc2, 0xfe, 0x07, 0x97, 0x81, 0x51, 0xe6, 0x66, 0x4a,
|
||||
0x98, 0x47, 0x40, 0xcf, 0x61, 0x69, 0x34, 0xd5, 0x8c, 0x96, 0x4e, 0x0f, 0xab, 0x04, 0x23, 0x6d,
|
||||
0xf4, 0x5a, 0xdd, 0x16, 0xd9, 0x2a, 0x97, 0x17, 0xd5, 0x00, 0x86, 0xb2, 0x75, 0x22, 0x2a, 0xa6,
|
||||
0x36, 0xb5, 0xe9, 0xd9, 0x35, 0x6b, 0x10, 0xae, 0x3b, 0x20, 0xe2, 0xae, 0xf8, 0x9c, 0xcd, 0xb4,
|
||||
0x10, 0xea, 0x87, 0xca, 0x90, 0x3f, 0xd1, 0x54, 0x17, 0x84, 0x8b, 0xd1, 0xa5, 0x10, 0x48, 0xb3,
|
||||
0x55, 0xf3, 0x31, 0x82, 0x5e, 0x48, 0x81, 0x2d, 0x15, 0x4f, 0xc7, 0xc6, 0xb9, 0xe7, 0xc6, 0xbd,
|
||||
0x38, 0xbb, 0xb4, 0x1e, 0xa3, 0xf6, 0x0c, 0xaf, 0x16, 0xdb, 0xa1, 0x99, 0x16, 0x12, 0xa0, 0xd0,
|
||||
0x2e, 0x64, 0xc7, 0xc6, 0xa8, 0x84, 0x28, 0xe2, 0x56, 0x0c, 0x62, 0xdb, 0x18, 0x35, 0xd3, 0x02,
|
||||
0x61, 0x42, 0x2f, 0x60, 0x99, 0xec, 0x51, 0xd7, 0xb1, 0x4b, 0xb7, 0x62, 0x36, 0x94, 0xf1, 0x93,
|
||||
0xfd, 0xec, 0x3a, 0x64, 0x29, 0x1e, 0x33, 0xfa, 0x1a, 0xf2, 0x54, 0x38, 0x22, 0xd6, 0xd5, 0xd2,
|
||||
0x46, 0x8c, 0xde, 0xba, 0x3d, 0x3d, 0x1e, 0xb2, 0x0d, 0x7e, 0x87, 0x4a, 0x1e, 0x96, 0x5d, 0x51,
|
||||
0x55, 0x72, 0xb0, 0xc4, 0x58, 0xf9, 0x6d, 0xd8, 0x8c, 0x75, 0x4b, 0xfc, 0x1d, 0xb8, 0x9d, 0xe8,
|
||||
0x5d, 0xf8, 0xfb, 0x70, 0xf7, 0x22, 0xef, 0xc0, 0x6f, 0xc1, 0x46, 0x9c, 0x89, 0x87, 0x40, 0xe7,
|
||||
0x4d, 0x95, 0xff, 0x0c, 0xd6, 0x66, 0xec, 0x8e, 0x78, 0xdd, 0x31, 0x29, 0x0c, 0x2c, 0x37, 0xd4,
|
||||
0xcf, 0x0b, 0x01, 0x81, 0xbf, 0x0d, 0xdb, 0x09, 0x46, 0xc6, 0xb7, 0xe0, 0x56, 0x8c, 0x8a, 0x13,
|
||||
0x3c, 0xba, 0x1f, 0xa1, 0x4b, 0x57, 0x40, 0x40, 0x1b, 0xb0, 0x78, 0x2a, 0x8f, 0x1d, 0x76, 0xa0,
|
||||
0x2c, 0x0a, 0xac, 0xc2, 0xff, 0x39, 0x0d, 0xa5, 0x24, 0x73, 0xb9, 0x04, 0x70, 0x0b, 0x96, 0x28,
|
||||
0x86, 0x55, 0xca, 0x3e, 0xcc, 0x3e, 0x59, 0x14, 0xdc, 0x1a, 0x7a, 0xe1, 0x5e, 0x36, 0x16, 0xe8,
|
||||
0x65, 0x23, 0x6a, 0x13, 0x73, 0x63, 0x04, 0xd7, 0x0c, 0xfe, 0x3f, 0xd2, 0xfe, 0xe1, 0xc6, 0xac,
|
||||
0x0d, 0xed, 0x31, 0x4d, 0xea, 0x38, 0x13, 0x3a, 0xfa, 0xea, 0xfe, 0x46, 0x14, 0xac, 0xd7, 0xea,
|
||||
0x76, 0x9c, 0x89, 0xe0, 0x31, 0xa1, 0x6f, 0x00, 0xa6, 0xce, 0x78, 0x3c, 0x98, 0xd6, 0x8c, 0x33,
|
||||
0x16, 0xb7, 0xad, 0xee, 0xdf, 0x9b, 0xeb, 0xd2, 0xd2, 0x7b, 0x3e, 0x93, 0x10, 0xea, 0x80, 0x5e,
|
||||
0x02, 0x30, 0xe3, 0xae, 0xab, 0x23, 0xef, 0xae, 0xb4, 0x1d, 0xd3, 0x9d, 0x34, 0x0b, 0x21, 0x56,
|
||||
0xfe, 0x25, 0x6c, 0xc6, 0x1a, 0x3b, 0xba, 0x0f, 0x60, 0xd1, 0x52, 0x68, 0x07, 0x43, 0x14, 0xfe,
|
||||
0x05, 0x6c, 0xc4, 0x19, 0xf8, 0xa5, 0xfd, 0xfe, 0x27, 0x0d, 0x77, 0x2f, 0xb2, 0x64, 0x12, 0x9b,
|
||||
0xda, 0x31, 0x57, 0xf0, 0x30, 0x0d, 0xbd, 0x76, 0xe5, 0xc4, 0xf6, 0xe9, 0xc5, 0x95, 0xdd, 0xc4,
|
||||
0x9e, 0x57, 0x08, 0xc9, 0x0e, 0x07, 0x57, 0x7e, 0x42, 0x45, 0xeb, 0x50, 0x3c, 0x18, 0xb4, 0xdb,
|
||||
0x92, 0x58, 0xef, 0xf7, 0x5b, 0x9d, 0x86, 0xc8, 0xa5, 0x50, 0x01, 0x96, 0x3b, 0xf5, 0xfe, 0x51,
|
||||
0x57, 0x78, 0xc3, 0xa5, 0x51, 0x0e, 0x16, 0x8e, 0x5a, 0x07, 0x2d, 0x2e, 0x83, 0x96, 0x21, 0x3b,
|
||||
0x10, 0x2b, 0x5c, 0x16, 0x15, 0x21, 0x5f, 0x69, 0x0f, 0xea, 0xfd, 0x6e, 0xb7, 0xdf, 0xe4, 0x16,
|
||||
0xd0, 0x2d, 0x58, 0xeb, 0x0b, 0xad, 0x46, 0xa3, 0x2e, 0x48, 0xe5, 0x6a, 0xbf, 0xd5, 0xed, 0x88,
|
||||
0xdc, 0x22, 0x5f, 0x80, 0xbc, 0xef, 0x6e, 0xf8, 0x29, 0x14, 0x23, 0xbe, 0xe4, 0xda, 0xea, 0xf2,
|
||||
0x59, 0xd8, 0x22, 0x56, 0xf7, 0x6f, 0xcf, 0x71, 0x77, 0x1d, 0xfb, 0x2d, 0x61, 0xf0, 0x8c, 0xa5,
|
||||
0x0e, 0x6b, 0x33, 0x3e, 0xe8, 0x46, 0x36, 0x77, 0x06, 0x3b, 0xc4, 0x41, 0xbc, 0x47, 0xf6, 0xe4,
|
||||
0x8b, 0xb9, 0xec, 0x49, 0x74, 0xf2, 0x47, 0xda, 0x81, 0x16, 0x93, 0x38, 0xf9, 0xe7, 0x2c, 0xac,
|
||||
0x84, 0x9b, 0xfc, 0x40, 0x3e, 0x1d, 0x0a, 0xe4, 0x77, 0x20, 0xa7, 0x6a, 0x16, 0x09, 0xfc, 0x54,
|
||||
0x37, 0x84, 0xf4, 0xeb, 0x44, 0x2f, 0x4d, 0x3c, 0x72, 0xc6, 0xb2, 0x6d, 0x98, 0xe7, 0x6e, 0x66,
|
||||
0x2c, 0x44, 0x41, 0xdf, 0xc2, 0x0a, 0x89, 0x8d, 0x35, 0x7d, 0x24, 0x4d, 0x0c, 0xd5, 0x73, 0x01,
|
||||
0x77, 0xe7, 0xe6, 0x76, 0xc4, 0x98, 0x0e, 0x0d, 0x15, 0x0b, 0x85, 0xb3, 0xa0, 0x82, 0x5e, 0x40,
|
||||
0x5e, 0x76, 0xec, 0x13, 0xd6, 0x7b, 0x31, 0x46, 0x2c, 0xa4, 0x77, 0xd9, 0xb1, 0x4f, 0x68, 0xd7,
|
||||
0x9c, 0xec, 0x96, 0x48, 0xd8, 0xab, 0x9c, 0xc8, 0xba, 0x8e, 0xc7, 0x34, 0x92, 0x2c, 0x0a, 0x5e,
|
||||
0x15, 0xed, 0xc1, 0x92, 0x3c, 0x95, 0x2a, 0xa2, 0xe8, 0x46, 0x81, 0xdb, 0x73, 0x70, 0x15, 0x51,
|
||||
0xac, 0x1e, 0x8f, 0x84, 0x45, 0x79, 0x5a, 0x11, 0x45, 0xf4, 0x2d, 0xb9, 0x03, 0x69, 0xe4, 0x5e,
|
||||
0x55, 0x11, 0x45, 0x69, 0xac, 0x59, 0x76, 0x29, 0x47, 0x63, 0xf7, 0xc4, 0x8e, 0x45, 0xc6, 0x5f,
|
||||
0x11, 0xc5, 0xb6, 0x66, 0xd9, 0xe8, 0x0e, 0x3d, 0xd2, 0xb1, 0x64, 0x59, 0x9a, 0x77, 0x53, 0xcf,
|
||||
0x11, 0x82, 0x68, 0x69, 0x2a, 0xf1, 0x99, 0x3a, 0xfe, 0x71, 0x62, 0xe8, 0xee, 0xa5, 0xd9, 0xad,
|
||||
0xf1, 0xff, 0x96, 0x86, 0x3c, 0x95, 0x8c, 0x4d, 0xac, 0x77, 0x0f, 0x16, 0xe8, 0x06, 0x30, 0x2d,
|
||||
0xde, 0x99, 0x17, 0x2d, 0xe1, 0xa2, 0x3b, 0x40, 0xf9, 0xc2, 0xab, 0xcf, 0x44, 0x57, 0x8f, 0x60,
|
||||
0x81, 0xce, 0x83, 0x89, 0x8a, 0x96, 0x51, 0x15, 0x66, 0x2f, 0x7e, 0xee, 0x85, 0xf4, 0x02, 0x1d,
|
||||
0x9a, 0xed, 0xc1, 0xef, 0x03, 0x04, 0x5b, 0x40, 0x86, 0x11, 0xc5, 0x56, 0xcd, 0xd3, 0x23, 0x52,
|
||||
0x46, 0x1c, 0x64, 0x7b, 0xe2, 0x1b, 0xf7, 0xfa, 0x42, 0x8a, 0xfc, 0x23, 0x28, 0x8a, 0xb6, 0x49,
|
||||
0x44, 0x8d, 0x2d, 0x8b, 0xa8, 0x3a, 0x07, 0xd9, 0x89, 0x35, 0xf2, 0xd2, 0x64, 0x13, 0x6b, 0xc4,
|
||||
0x7f, 0x0e, 0x28, 0xc2, 0x52, 0x36, 0x4d, 0xf9, 0x9c, 0xa8, 0xe4, 0xc4, 0x1a, 0xd1, 0x32, 0xbd,
|
||||
0x48, 0xe5, 0x05, 0xbf, 0xce, 0xef, 0xc1, 0x4a, 0xfd, 0x14, 0xeb, 0xb6, 0x6b, 0x4d, 0x44, 0x45,
|
||||
0x89, 0xd0, 0xb0, 0x4e, 0xfc, 0x10, 0x85, 0xce, 0x0a, 0x21, 0x0a, 0x2f, 0x03, 0x50, 0x7e, 0x6a,
|
||||
0xd8, 0x68, 0x07, 0x96, 0x6d, 0x8b, 0x0e, 0xc8, 0x66, 0xd1, 0x4c, 0x09, 0x1e, 0x01, 0x6d, 0xc1,
|
||||
0xa2, 0x3d, 0x34, 0x0c, 0xb6, 0xa7, 0xb9, 0x66, 0x4a, 0x60, 0x55, 0x54, 0x82, 0x25, 0x5b, 0xd3,
|
||||
0xed, 0x17, 0xcf, 0xe9, 0xae, 0x66, 0x49, 0x4c, 0xc8, 0xea, 0x95, 0x45, 0xc8, 0x9e, 0xca, 0x63,
|
||||
0xbe, 0x0d, 0x8b, 0x74, 0x08, 0xb2, 0x2d, 0x76, 0x30, 0x0b, 0x96, 0x4c, 0xfb, 0xcc, 0x3f, 0x35,
|
||||
0x33, 0x31, 0x6a, 0x15, 0x4c, 0xcd, 0x3b, 0x4e, 0xf9, 0x3f, 0xc0, 0x06, 0xb1, 0xfd, 0x9a, 0x66,
|
||||
0x76, 0xcd, 0x03, 0x6d, 0x8c, 0xbd, 0x85, 0x72, 0x90, 0x55, 0x35, 0x2f, 0x6e, 0x20, 0x45, 0xa2,
|
||||
0x5c, 0x53, 0x13, 0x1f, 0x6b, 0x3f, 0xba, 0x9b, 0xee, 0xd6, 0xc8, 0x96, 0x18, 0xfa, 0xf8, 0xfc,
|
||||
0xc0, 0x18, 0xab, 0x6e, 0x9a, 0x22, 0x27, 0x84, 0x28, 0xe4, 0xf8, 0x9a, 0x19, 0xc1, 0x9a, 0x1a,
|
||||
0xba, 0x85, 0x99, 0xb9, 0x5b, 0xce, 0xd8, 0xee, 0xc9, 0x7e, 0x9e, 0x3d, 0x44, 0xe1, 0xff, 0x29,
|
||||
0x0d, 0x6b, 0x02, 0x96, 0xd5, 0xf0, 0xb4, 0xbe, 0x80, 0xa5, 0x63, 0x36, 0x50, 0x3a, 0xe6, 0xfc,
|
||||
0x2d, 0x2b, 0x0a, 0xb6, 0x2c, 0x6d, 0x38, 0xc6, 0x6c, 0x6c, 0xc1, 0x65, 0x26, 0x22, 0x3e, 0xd6,
|
||||
0xc6, 0x58, 0x0f, 0x6e, 0xbc, 0x7e, 0x9d, 0x78, 0x51, 0x8b, 0x9c, 0x8f, 0x6c, 0xbf, 0x05, 0x56,
|
||||
0x21, 0xeb, 0x1f, 0x63, 0x9d, 0xaa, 0x6e, 0x56, 0x20, 0x45, 0xbe, 0x06, 0x5c, 0x30, 0x1b, 0x77,
|
||||
0x09, 0x77, 0x21, 0x6f, 0x62, 0x59, 0xad, 0x1a, 0x8e, 0x6e, 0xbb, 0x72, 0x08, 0x08, 0x44, 0x40,
|
||||
0xaa, 0x6c, 0xcb, 0x74, 0xc4, 0x15, 0x81, 0x96, 0xf9, 0x7f, 0x4f, 0x03, 0x77, 0x64, 0x6a, 0x36,
|
||||
0xfe, 0x99, 0x57, 0xb5, 0x45, 0x1c, 0xd3, 0x94, 0xc4, 0xba, 0x4c, 0x22, 0x6e, 0x8d, 0xa6, 0x95,
|
||||
0x1c, 0xcb, 0xee, 0x18, 0x76, 0xfd, 0x47, 0xe2, 0x7d, 0xdc, 0x2c, 0x65, 0x98, 0xe6, 0xcf, 0x7b,
|
||||
0x31, 0x34, 0xef, 0x0f, 0x60, 0x8d, 0xcc, 0xb8, 0xa5, 0x1f, 0x1b, 0xde, 0xac, 0x11, 0x2c, 0x4c,
|
||||
0x03, 0xc9, 0xd1, 0x32, 0xff, 0x47, 0xe0, 0x02, 0x36, 0x77, 0x93, 0xe2, 0x8e, 0x01, 0xe2, 0x39,
|
||||
0xb4, 0xbf, 0x63, 0xd3, 0xce, 0x0a, 0xb4, 0x4c, 0x68, 0xd4, 0x2f, 0xb1, 0x4c, 0x97, 0xef, 0x7b,
|
||||
0x26, 0x86, 0xda, 0xd7, 0xdc, 0xc4, 0x70, 0x56, 0xf0, 0xaa, 0x44, 0x6c, 0x9a, 0x55, 0xd3, 0x4c,
|
||||
0x37, 0x8f, 0xca, 0x2a, 0xfc, 0x6f, 0x81, 0xf3, 0xe3, 0x9c, 0x90, 0xcd, 0xb2, 0xe0, 0x26, 0xac,
|
||||
0x67, 0x01, 0x05, 0x7d, 0x08, 0xab, 0xb6, 0x36, 0xc1, 0x86, 0x63, 0x8b, 0x58, 0x31, 0x74, 0xd5,
|
||||
0x72, 0xdd, 0xdc, 0x0c, 0x95, 0xbf, 0x0f, 0x2b, 0x3e, 0xf6, 0x6b, 0x63, 0x38, 0x9b, 0x1c, 0xe1,
|
||||
0x1f, 0x87, 0xc6, 0x7e, 0x6d, 0x0c, 0xa9, 0xbb, 0xe6, 0x20, 0xab, 0xa9, 0x2c, 0x3f, 0x53, 0x14,
|
||||
0x48, 0x91, 0x7f, 0x0b, 0xa5, 0x66, 0xab, 0x26, 0x38, 0xba, 0xae, 0xe9, 0xa3, 0xd7, 0xc6, 0x90,
|
||||
0x7a, 0x5b, 0x81, 0x6a, 0x7d, 0x08, 0x31, 0x4b, 0xd3, 0x2d, 0x08, 0x16, 0x4e, 0x27, 0x2d, 0xd5,
|
||||
0xdb, 0x25, 0x52, 0x26, 0x82, 0xb5, 0x0c, 0xc7, 0x54, 0xb0, 0xeb, 0x75, 0xdd, 0x1a, 0xff, 0x47,
|
||||
0x58, 0x0b, 0xad, 0x9c, 0xc2, 0x7d, 0x0c, 0xd9, 0x1f, 0x8c, 0xa1, 0xfb, 0x68, 0x11, 0x75, 0xbf,
|
||||
0xe1, 0x89, 0x0a, 0x84, 0x8b, 0xec, 0x92, 0x66, 0x1d, 0x68, 0xba, 0x66, 0x9d, 0xf8, 0x47, 0x73,
|
||||
0x88, 0x12, 0x58, 0xeb, 0x6b, 0xcb, 0xd0, 0x83, 0xc3, 0xd9, 0xa3, 0xf0, 0x7b, 0x50, 0x68, 0xd7,
|
||||
0x6b, 0xfe, 0xd9, 0xff, 0x00, 0x0a, 0x43, 0x9a, 0xce, 0x56, 0x7c, 0xdb, 0x28, 0x0a, 0x40, 0x49,
|
||||
0xd4, 0x38, 0xf8, 0x1f, 0xe1, 0xf6, 0x40, 0xac, 0xbc, 0x47, 0x94, 0xf2, 0x72, 0x2e, 0x4a, 0x89,
|
||||
0x3e, 0x32, 0xb1, 0xab, 0x55, 0x4c, 0x9c, 0xf2, 0x97, 0x45, 0x58, 0x8d, 0x36, 0x12, 0x35, 0xc3,
|
||||
0x3a, 0x0b, 0x4a, 0xdc, 0x27, 0x02, 0xb7, 0x4a, 0x04, 0x78, 0xaa, 0xa9, 0xde, 0x39, 0x73, 0xaa,
|
||||
0xa9, 0xec, 0xf5, 0xc5, 0x3b, 0xf3, 0x48, 0x71, 0x2e, 0x55, 0xcb, 0x9e, 0x30, 0xa2, 0xa9, 0x5a,
|
||||
0x9a, 0xb4, 0x36, 0x54, 0x47, 0xb1, 0xdd, 0x17, 0x0c, 0xaf, 0x4a, 0x05, 0x8a, 0x4d, 0x4d, 0x66,
|
||||
0xb1, 0x05, 0x11, 0x28, 0xad, 0xa1, 0xfb, 0x50, 0x70, 0x2c, 0x2c, 0x55, 0x6b, 0x55, 0xa9, 0x5e,
|
||||
0x3d, 0x74, 0xb3, 0xfa, 0x79, 0xc7, 0xc2, 0xd5, 0x5a, 0xb5, 0x5e, 0x3d, 0x24, 0x91, 0x00, 0x69,
|
||||
0x17, 0x3a, 0xb5, 0x96, 0xe8, 0xa6, 0xf3, 0x73, 0x8e, 0x85, 0x69, 0x1d, 0x3d, 0x01, 0x8e, 0x34,
|
||||
0x36, 0x5b, 0x35, 0xe9, 0x4d, 0xfd, 0x37, 0x95, 0x6e, 0x59, 0xa8, 0xb9, 0xd1, 0xc2, 0xaa, 0x63,
|
||||
0xe1, 0x66, 0xab, 0xe6, 0x51, 0x11, 0x0f, 0x45, 0x8f, 0xf3, 0xb0, 0x3b, 0x10, 0xeb, 0x6e, 0x2a,
|
||||
0xb4, 0xc0, 0xd8, 0x28, 0xc9, 0x9b, 0x0a, 0xe1, 0x11, 0xca, 0x47, 0x6e, 0xba, 0x33, 0xcf, 0x38,
|
||||
0x84, 0xf2, 0x11, 0xda, 0x86, 0x65, 0xd2, 0x3e, 0x38, 0x14, 0xdd, 0x6c, 0xe6, 0x92, 0x63, 0xe1,
|
||||
0xc1, 0xa1, 0x88, 0xee, 0x01, 0x90, 0x06, 0xb1, 0x2e, 0xb4, 0xca, 0x6d, 0x2f, 0x93, 0xef, 0x58,
|
||||
0x98, 0x11, 0xd0, 0x6b, 0x58, 0x35, 0x75, 0x55, 0xb3, 0x82, 0x24, 0xf3, 0x6a, 0xcc, 0x1b, 0x59,
|
||||
0x54, 0x56, 0x75, 0xfb, 0x04, 0x9b, 0x3a, 0xb6, 0x85, 0x22, 0xed, 0xea, 0x8b, 0xf0, 0x10, 0x38,
|
||||
0x45, 0x55, 0x24, 0xac, 0x4c, 0x02, 0xb4, 0xb5, 0xab, 0xa3, 0xad, 0x2a, 0xaa, 0x52, 0x57, 0x26,
|
||||
0x3e, 0x5c, 0x19, 0x56, 0x9c, 0x49, 0x68, 0x62, 0x5c, 0xcc, 0x2b, 0x62, 0x14, 0x6a, 0x70, 0x28,
|
||||
0x0a, 0x05, 0x67, 0x12, 0xcc, 0xe8, 0x29, 0x6c, 0xaa, 0xf8, 0x54, 0x22, 0x7e, 0x51, 0x3a, 0xd1,
|
||||
0x54, 0xe9, 0x1d, 0x3e, 0x1f, 0x1a, 0xb2, 0xa9, 0xd2, 0x3c, 0x47, 0x5e, 0x40, 0x2a, 0x3e, 0x25,
|
||||
0xfe, 0xa7, 0xa9, 0xa9, 0x6f, 0xdc, 0x16, 0xf4, 0x31, 0xa0, 0x48, 0x97, 0x89, 0xe1, 0x58, 0x98,
|
||||
0xe6, 0x39, 0xf2, 0xc2, 0x5a, 0xc0, 0x7f, 0x48, 0xc8, 0xe8, 0x97, 0xc0, 0x45, 0x98, 0x4d, 0xf9,
|
||||
0x8c, 0x26, 0x36, 0xf2, 0x42, 0x31, 0x60, 0x15, 0xe4, 0x33, 0xbe, 0x07, 0x5b, 0xf1, 0xab, 0xa6,
|
||||
0xd1, 0xa4, 0x61, 0xd9, 0xf4, 0xcd, 0xc3, 0x35, 0xb2, 0x1c, 0x21, 0x94, 0x55, 0xd5, 0x44, 0xb7,
|
||||
0x21, 0x47, 0xf0, 0x69, 0x1b, 0xd3, 0xff, 0x65, 0x15, 0x9f, 0x92, 0x26, 0xfe, 0x1b, 0x58, 0x9f,
|
||||
0x5b, 0x3c, 0xf1, 0xc8, 0x8a, 0x6a, 0x1a, 0x13, 0xd7, 0x84, 0x58, 0x85, 0xf8, 0x30, 0x72, 0x28,
|
||||
0x79, 0x89, 0x66, 0x52, 0xe6, 0xff, 0x9c, 0x86, 0xfb, 0xfe, 0xce, 0xdf, 0xdc, 0x03, 0x54, 0xe6,
|
||||
0x3c, 0x40, 0x34, 0xb3, 0xe9, 0x0d, 0xd1, 0xd2, 0x6d, 0x6c, 0x1e, 0xcb, 0x0a, 0x8e, 0x71, 0x06,
|
||||
0x12, 0x3c, 0x62, 0xf7, 0x50, 0xac, 0x26, 0xb2, 0xa3, 0xaf, 0x60, 0x81, 0x86, 0xea, 0x2c, 0xcd,
|
||||
0x7e, 0xd5, 0x41, 0x68, 0x1f, 0xfe, 0x4f, 0x59, 0xb8, 0x9d, 0x8c, 0x1c, 0x77, 0x36, 0x7e, 0xeb,
|
||||
0x9e, 0x83, 0xec, 0xde, 0xf8, 0xf1, 0xd5, 0x46, 0xdb, 0x0b, 0x05, 0xec, 0xc4, 0x95, 0x4f, 0xdd,
|
||||
0x17, 0xab, 0xe7, 0x9e, 0xab, 0x0e, 0x28, 0x24, 0x6e, 0xd0, 0xb1, 0x3d, 0x91, 0xad, 0x77, 0xcf,
|
||||
0x5d, 0x5f, 0xe5, 0xd7, 0xc3, 0x9e, 0x70, 0x31, 0xea, 0x09, 0xbb, 0x80, 0xd4, 0x13, 0x65, 0xca,
|
||||
0x5e, 0x26, 0xfc, 0xd8, 0x9e, 0x65, 0xd6, 0x1f, 0x44, 0x26, 0x59, 0x6b, 0x56, 0x7b, 0x51, 0x36,
|
||||
0x21, 0xa6, 0x2b, 0x7a, 0x0c, 0x45, 0x4f, 0x0c, 0x2d, 0x7d, 0x60, 0x61, 0xd7, 0xc5, 0x45, 0x89,
|
||||
0x7c, 0x15, 0x16, 0xe8, 0x1d, 0x0c, 0x60, 0xe9, 0xb0, 0xdc, 0x19, 0x94, 0xdb, 0x5c, 0x0a, 0xad,
|
||||
0x41, 0x81, 0x8c, 0x21, 0x55, 0xdb, 0xad, 0x7a, 0xa7, 0xcf, 0xa5, 0x7d, 0x82, 0x58, 0x17, 0xde,
|
||||
0xd6, 0x05, 0x2e, 0x43, 0xae, 0xfb, 0x83, 0xce, 0x61, 0xb9, 0x53, 0x6e, 0xd4, 0x6b, 0x5c, 0x96,
|
||||
0xff, 0xbf, 0x2c, 0xa0, 0xf9, 0x59, 0x05, 0xd1, 0x7c, 0xcf, 0x30, 0xfd, 0x33, 0x2a, 0xa0, 0xa0,
|
||||
0x27, 0xb0, 0xc6, 0x6a, 0xfe, 0x76, 0x7b, 0x1f, 0x77, 0xcc, 0x90, 0x69, 0xb2, 0x0d, 0xcb, 0x16,
|
||||
0x8d, 0xea, 0xdc, 0x1d, 0x0f, 0x08, 0x68, 0x17, 0x38, 0xdd, 0xb0, 0xc9, 0xc5, 0xd2, 0x30, 0x35,
|
||||
0x5b, 0xa6, 0x8f, 0x24, 0x2c, 0xf0, 0x9a, 0xa3, 0xa3, 0x3d, 0x40, 0xaa, 0xd1, 0x31, 0xec, 0x8a,
|
||||
0xa6, 0xab, 0xc1, 0xb0, 0x4c, 0x16, 0x31, 0x2d, 0x24, 0x7a, 0x51, 0xe4, 0xf1, 0x78, 0x28, 0x2b,
|
||||
0xef, 0xdc, 0x44, 0x2f, 0x3b, 0x46, 0x66, 0xa8, 0xe8, 0x39, 0x2c, 0x99, 0xb2, 0x3e, 0xc2, 0x56,
|
||||
0x69, 0x99, 0x6a, 0xf1, 0xdd, 0x04, 0x91, 0x09, 0x84, 0x49, 0x70, 0x79, 0xd1, 0x01, 0x2c, 0x1b,
|
||||
0x53, 0xf6, 0xc6, 0xc4, 0xee, 0xa9, 0x9f, 0x5c, 0x22, 0xe9, 0xbd, 0x2e, 0x63, 0xaf, 0xeb, 0xb6,
|
||||
0x79, 0x2e, 0x78, 0x9d, 0x51, 0x15, 0x0a, 0xec, 0x21, 0xb5, 0x69, 0x58, 0xb6, 0x55, 0xca, 0x53,
|
||||
0xac, 0x47, 0x49, 0x58, 0x3e, 0xa7, 0x10, 0xee, 0xb5, 0xf3, 0x15, 0xac, 0x84, 0xd1, 0xc9, 0x49,
|
||||
0xfc, 0x0e, 0x9f, 0xbb, 0x72, 0x23, 0xc5, 0x68, 0x46, 0x24, 0xef, 0x66, 0x44, 0xbe, 0xca, 0xbc,
|
||||
0x4a, 0xf3, 0x06, 0xac, 0xcd, 0xac, 0x91, 0x46, 0x34, 0xa4, 0xd0, 0x36, 0xce, 0xfc, 0x0c, 0x69,
|
||||
0x88, 0xe2, 0xb7, 0x0f, 0xa6, 0x53, 0xec, 0x79, 0xc0, 0x10, 0xc5, 0x97, 0x39, 0x8d, 0x4e, 0xc3,
|
||||
0x32, 0x27, 0x04, 0xfe, 0x15, 0x6c, 0xc4, 0xad, 0x88, 0xde, 0x4a, 0x65, 0xc5, 0xbf, 0x95, 0xca,
|
||||
0x0a, 0x8d, 0xfa, 0xa6, 0x2e, 0x7e, 0x46, 0x9b, 0xf2, 0xcb, 0xb0, 0x58, 0x9f, 0x4c, 0xed, 0xf3,
|
||||
0xdd, 0x57, 0xa1, 0xef, 0x1a, 0xe6, 0x3f, 0x9f, 0x40, 0xcb, 0x90, 0xed, 0x94, 0x7b, 0x5c, 0x0a,
|
||||
0xe5, 0x60, 0xa1, 0x57, 0xee, 0x0c, 0xb8, 0x34, 0x5a, 0x82, 0x4c, 0xa3, 0xc3, 0x65, 0x76, 0x5f,
|
||||
0xc3, 0x66, 0x6c, 0x2e, 0x14, 0xad, 0x40, 0x4e, 0xac, 0x7f, 0x37, 0xa8, 0x77, 0xaa, 0x75, 0x2e,
|
||||
0x45, 0x10, 0xca, 0x9d, 0x1a, 0xeb, 0xd7, 0x25, 0x66, 0x83, 0x60, 0xb5, 0xfe, 0x7d, 0xb9, 0xda,
|
||||
0x97, 0x7c, 0xa6, 0xec, 0xee, 0xa7, 0xc0, 0xcd, 0xe6, 0x35, 0x09, 0xff, 0xc0, 0x1d, 0xb9, 0xd6,
|
||||
0x3d, 0xea, 0x70, 0x69, 0x02, 0xd5, 0x3d, 0x38, 0xe0, 0x32, 0xbb, 0x9f, 0x01, 0x04, 0x79, 0x4c,
|
||||
0x62, 0xb5, 0x42, 0x4b, 0x6c, 0x75, 0x1a, 0x2c, 0x45, 0x77, 0x50, 0x6e, 0xb7, 0x49, 0x85, 0xa6,
|
||||
0xe8, 0x2a, 0xdd, 0x7e, 0x93, 0xcb, 0xec, 0xfe, 0x57, 0x06, 0x96, 0xdd, 0xe4, 0x19, 0xca, 0xc3,
|
||||
0x62, 0x67, 0x70, 0x28, 0x3d, 0xe5, 0x52, 0x5e, 0x71, 0x9f, 0x4b, 0x7b, 0xc5, 0x67, 0x5c, 0xc6,
|
||||
0x2b, 0x3e, 0xe7, 0xb2, 0x5e, 0xf1, 0x0b, 0x6e, 0xc1, 0x2b, 0xbe, 0xe0, 0x16, 0xbd, 0xe2, 0x4b,
|
||||
0x6e, 0xc9, 0x2b, 0xbe, 0xe2, 0x96, 0xbd, 0xe2, 0x97, 0x5c, 0x8e, 0xcc, 0x88, 0x0e, 0xf1, 0x39,
|
||||
0x97, 0xf7, 0xcb, 0x4f, 0x39, 0xf0, 0xcb, 0xfb, 0x5c, 0xc1, 0x2f, 0x3f, 0xe3, 0x56, 0xfc, 0xf2,
|
||||
0x73, 0xae, 0xe8, 0x97, 0xbf, 0xe0, 0x56, 0xfd, 0xf2, 0x0b, 0x6e, 0xcd, 0x2f, 0xbf, 0xe4, 0x38,
|
||||
0xbf, 0xfc, 0x8a, 0x5b, 0xf7, 0xcb, 0x5f, 0x72, 0xc8, 0x2b, 0xef, 0x7f, 0xce, 0xdd, 0xf2, 0xcb,
|
||||
0x4f, 0xb9, 0x0d, 0xbf, 0xbc, 0xcf, 0x6d, 0xfa, 0xe5, 0x67, 0xdc, 0x96, 0x5f, 0x7e, 0xce, 0x6d,
|
||||
0xfb, 0xe5, 0x2f, 0xb8, 0x92, 0x5f, 0x7e, 0xc1, 0xdd, 0xf6, 0xcb, 0x2f, 0xb9, 0x1d, 0xbf, 0xfc,
|
||||
0x8a, 0xbb, 0xe3, 0x97, 0xbf, 0xe4, 0xee, 0x7a, 0xe5, 0x67, 0x9f, 0x73, 0xf7, 0x76, 0x3f, 0x85,
|
||||
0x95, 0x70, 0xe2, 0x91, 0x08, 0xad, 0xdd, 0x3d, 0x62, 0x72, 0x6c, 0xb6, 0x1a, 0x4d, 0x2e, 0x4d,
|
||||
0xd8, 0xfb, 0xdd, 0x46, 0xa3, 0x5d, 0xe7, 0x32, 0xbb, 0x35, 0x58, 0x9b, 0x49, 0xa7, 0x11, 0x19,
|
||||
0x0e, 0x3a, 0x6f, 0x3a, 0x44, 0xe6, 0x29, 0xa2, 0x05, 0xe5, 0x1e, 0x93, 0xbd, 0xd8, 0x2f, 0x73,
|
||||
0x19, 0x74, 0x0b, 0xd6, 0xc4, 0x7e, 0x59, 0x3a, 0x28, 0xb7, 0xda, 0xdd, 0xb7, 0x75, 0x41, 0x2a,
|
||||
0xf7, 0xb8, 0xec, 0x6e, 0x0d, 0x8a, 0x91, 0xac, 0x12, 0xda, 0x84, 0x75, 0xc2, 0xd5, 0xe9, 0xf6,
|
||||
0xa5, 0x6a, 0xb7, 0xd3, 0xa9, 0x57, 0xfb, 0xf5, 0x1a, 0x13, 0x78, 0xb9, 0x27, 0x0d, 0x08, 0xe0,
|
||||
0x3a, 0x14, 0x09, 0x47, 0xd0, 0x9a, 0xd9, 0xfd, 0x90, 0xe5, 0x16, 0xbd, 0xe4, 0x1c, 0x51, 0xe4,
|
||||
0xa3, 0x5e, 0x79, 0x5f, 0xea, 0x89, 0x6f, 0xd8, 0xfc, 0xbb, 0xbd, 0x7a, 0x87, 0x4b, 0xef, 0xfe,
|
||||
0x15, 0x70, 0xb3, 0xf7, 0x65, 0x32, 0xbf, 0xfe, 0x21, 0x51, 0x57, 0x0e, 0x56, 0x2a, 0x65, 0xb1,
|
||||
0x29, 0x89, 0x55, 0xa1, 0xd5, 0xeb, 0x8b, 0xec, 0xe0, 0x20, 0x51, 0xad, 0x47, 0xc8, 0xec, 0xff,
|
||||
0xe7, 0x3e, 0x2c, 0xf5, 0x9e, 0x1f, 0x75, 0x7a, 0x4f, 0xd1, 0x31, 0x3c, 0x6a, 0x60, 0xfb, 0x92,
|
||||
0xaf, 0x3d, 0x50, 0xf4, 0x78, 0x26, 0x76, 0xbb, 0x73, 0x9d, 0xef, 0xc3, 0xf8, 0x14, 0xfa, 0x53,
|
||||
0x1a, 0x1e, 0xb3, 0x18, 0xe4, 0x92, 0xb1, 0xae, 0x83, 0x7b, 0xdd, 0x49, 0xbc, 0x85, 0xdb, 0xe1,
|
||||
0xc5, 0x46, 0x3f, 0x38, 0x8b, 0x5b, 0xe4, 0x55, 0xbe, 0x63, 0xe3, 0x53, 0xe8, 0x07, 0xb8, 0x3b,
|
||||
0xb3, 0xb6, 0x28, 0xf4, 0x55, 0x60, 0xae, 0x3a, 0xd6, 0xf7, 0xb0, 0x23, 0x86, 0xd6, 0x30, 0xf3,
|
||||
0x1d, 0xdc, 0xe3, 0xab, 0x7c, 0x97, 0xb6, 0x13, 0xb3, 0x54, 0x3e, 0x85, 0x7e, 0x07, 0xdb, 0x33,
|
||||
0xab, 0x08, 0x62, 0x88, 0x8b, 0x3f, 0x2c, 0xdc, 0xb9, 0xa4, 0x9d, 0x4f, 0xa1, 0xdf, 0xc3, 0x16,
|
||||
0x89, 0x7a, 0xf1, 0x3c, 0xf6, 0x27, 0xf1, 0x7d, 0xe3, 0x43, 0xe6, 0x84, 0xa9, 0xff, 0x16, 0x76,
|
||||
0x1a, 0xd8, 0xa6, 0x03, 0xa8, 0xf3, 0x23, 0x44, 0xb3, 0xbf, 0x91, 0xe4, 0xe8, 0x15, 0x66, 0xfe,
|
||||
0xd7, 0x70, 0xcf, 0x7d, 0xc4, 0xf9, 0x59, 0xe0, 0xbf, 0x23, 0xf0, 0x63, 0xcc, 0xbe, 0x3d, 0xbd,
|
||||
0x2e, 0x7c, 0xfc, 0x6e, 0x08, 0x70, 0x9f, 0x82, 0x79, 0x31, 0xff, 0x4f, 0x81, 0xd9, 0x87, 0x3b,
|
||||
0x6d, 0xcd, 0x4a, 0xdc, 0xe2, 0x38, 0xe3, 0x79, 0x90, 0x3c, 0x08, 0xcb, 0x3b, 0xa7, 0xd0, 0x21,
|
||||
0x94, 0x1a, 0xd8, 0xf6, 0xe6, 0x19, 0xb9, 0x6d, 0xc5, 0x42, 0x5e, 0x94, 0xfc, 0xe0, 0x53, 0xa8,
|
||||
0x09, 0xb7, 0x18, 0xd6, 0x7b, 0x23, 0x1d, 0xc0, 0x7a, 0x03, 0xdb, 0x33, 0x09, 0x94, 0x1b, 0xe0,
|
||||
0x74, 0x61, 0x5d, 0x9c, 0xc3, 0xb9, 0xa8, 0xcf, 0x65, 0x80, 0xbf, 0x86, 0xd5, 0x06, 0xb6, 0xc3,
|
||||
0x49, 0xa8, 0xb8, 0x59, 0x95, 0x22, 0xb4, 0x10, 0x37, 0x43, 0x10, 0xa3, 0x08, 0x89, 0xdc, 0x09,
|
||||
0xba, 0x50, 0x83, 0x95, 0x43, 0xc3, 0xd1, 0xed, 0xc1, 0xa1, 0x48, 0x23, 0xff, 0x4b, 0x12, 0x06,
|
||||
0x09, 0x28, 0x3d, 0xe0, 0xa8, 0x36, 0x0d, 0xc4, 0x4a, 0xf0, 0xf5, 0x5c, 0x84, 0x33, 0x31, 0x75,
|
||||
0x96, 0x80, 0xf8, 0x1d, 0x6c, 0xf8, 0x5e, 0x20, 0x8c, 0x7a, 0x91, 0xb6, 0x5f, 0xb2, 0xdd, 0x7d,
|
||||
0xcf, 0x27, 0xfe, 0xa4, 0xa8, 0x6f, 0x08, 0x6a, 0x60, 0xf3, 0x57, 0x45, 0x8d, 0x5f, 0x75, 0x1b,
|
||||
0x4a, 0x11, 0x6b, 0x7f, 0x3f, 0xb4, 0x0e, 0x6c, 0x06, 0x76, 0x1e, 0x86, 0xba, 0xb1, 0x85, 0xaf,
|
||||
0xb0, 0x4c, 0xb0, 0x7b, 0x43, 0xbb, 0x17, 0x9f, 0xa1, 0x75, 0xe5, 0xbc, 0x73, 0x37, 0xa9, 0xd9,
|
||||
0x72, 0xc6, 0x36, 0x85, 0x5b, 0x0b, 0xc3, 0xbd, 0x36, 0x86, 0x97, 0x21, 0x26, 0xa7, 0x84, 0xa9,
|
||||
0xa7, 0xdc, 0x6c, 0xb6, 0x6a, 0x44, 0x69, 0xfc, 0x3c, 0x31, 0xcb, 0x2a, 0x27, 0xf7, 0xba, 0x74,
|
||||
0x8a, 0x75, 0x40, 0xcd, 0x56, 0xad, 0x2a, 0xeb, 0x0a, 0x1e, 0x07, 0xb3, 0xbc, 0x00, 0x30, 0x49,
|
||||
0x10, 0xdb, 0x6c, 0x6a, 0x6e, 0x16, 0xdd, 0xe7, 0x8f, 0x17, 0xc5, 0xbd, 0x44, 0x7c, 0x22, 0x4e,
|
||||
0x3e, 0x85, 0x2a, 0xb0, 0xe5, 0x4f, 0xab, 0x3c, 0x1e, 0x5f, 0x02, 0x97, 0x14, 0x21, 0x6c, 0x46,
|
||||
0xe6, 0xe4, 0x65, 0xf6, 0x2f, 0x5a, 0xdd, 0x07, 0xb3, 0x4d, 0xb1, 0xaf, 0x02, 0x74, 0x82, 0x85,
|
||||
0x03, 0xd1, 0x7f, 0x35, 0x9a, 0x11, 0xeb, 0xec, 0x6b, 0x52, 0xc2, 0x04, 0xdf, 0x00, 0x1c, 0x88,
|
||||
0xde, 0x03, 0x16, 0x8a, 0x4a, 0x6a, 0xe6, 0x95, 0x6d, 0x66, 0xc7, 0x66, 0x5f, 0xbd, 0xa8, 0x04,
|
||||
0x8a, 0x07, 0x62, 0x03, 0xdb, 0xde, 0x5b, 0xcf, 0x0c, 0xde, 0xcc, 0x4b, 0xd1, 0x0c, 0xde, 0xec,
|
||||
0x03, 0x11, 0x9f, 0x42, 0x7f, 0x80, 0xcd, 0x03, 0xb1, 0x6a, 0x62, 0xd9, 0xc6, 0x91, 0xb7, 0x42,
|
||||
0x34, 0xf3, 0xe9, 0x63, 0xcc, 0x4b, 0xe5, 0x0e, 0x7f, 0x11, 0x8b, 0x3f, 0xc2, 0xaf, 0xa1, 0x40,
|
||||
0x5f, 0x3f, 0xdb, 0x34, 0x71, 0x33, 0x23, 0x95, 0xf0, 0x13, 0xef, 0xec, 0xf6, 0x91, 0x26, 0x3e,
|
||||
0xf5, 0x79, 0x1a, 0x35, 0xa0, 0x50, 0x57, 0x4e, 0xfc, 0xd7, 0xaf, 0x8b, 0xfc, 0xc7, 0x05, 0x6d,
|
||||
0x7c, 0x0a, 0xb5, 0x00, 0x31, 0x87, 0x14, 0xf9, 0x58, 0x22, 0xf9, 0x79, 0x7c, 0x67, 0x2b, 0xfe,
|
||||
0x89, 0x9e, 0x4f, 0xa1, 0xaf, 0x61, 0xa5, 0x81, 0xed, 0xe0, 0x69, 0x3f, 0x4e, 0x5f, 0x93, 0x7b,
|
||||
0x1f, 0xc0, 0x16, 0xdb, 0x0e, 0x9f, 0x58, 0x3d, 0x61, 0x69, 0x9f, 0xeb, 0xe1, 0x08, 0xb0, 0x4e,
|
||||
0x9d, 0xe2, 0x91, 0x76, 0x1c, 0xac, 0xe7, 0x97, 0x33, 0xec, 0x49, 0x5f, 0xa4, 0x24, 0x1e, 0x81,
|
||||
0x9b, 0xfe, 0x81, 0x15, 0xc1, 0xbd, 0x68, 0xdf, 0x93, 0xf7, 0x90, 0x22, 0x96, 0xc2, 0xe7, 0xd5,
|
||||
0x95, 0x41, 0x93, 0xd7, 0xdd, 0x26, 0x88, 0xc1, 0x59, 0x75, 0x65, 0xc4, 0xf8, 0x15, 0x1f, 0xc2,
|
||||
0xed, 0xc8, 0x61, 0xf5, 0x9e, 0x70, 0x5d, 0x26, 0xdc, 0x98, 0xa9, 0xdd, 0xf0, 0xb8, 0x92, 0xe0,
|
||||
0x01, 0x9b, 0x5a, 0x72, 0x36, 0xfb, 0x8a, 0x99, 0xf1, 0x84, 0x19, 0x1b, 0xf0, 0xcb, 0x06, 0xb6,
|
||||
0xcb, 0xe3, 0xf1, 0xe5, 0x09, 0xf9, 0xb8, 0x25, 0xec, 0x45, 0xb3, 0x89, 0x97, 0x61, 0xf0, 0x29,
|
||||
0x34, 0x86, 0xc7, 0xa1, 0x10, 0x3b, 0x79, 0xb4, 0x8b, 0x36, 0xff, 0x8a, 0x4b, 0xe6, 0x53, 0x48,
|
||||
0x71, 0xaf, 0x1e, 0xc9, 0xe3, 0xc4, 0xa7, 0xfa, 0xaf, 0x65, 0x36, 0x3f, 0x00, 0xef, 0x9b, 0xcd,
|
||||
0xcf, 0xbd, 0xa0, 0xdf, 0xc0, 0x07, 0x61, 0x83, 0xba, 0xd9, 0x70, 0xf1, 0xcb, 0xa0, 0xd0, 0x81,
|
||||
0x65, 0xfd, 0x94, 0xd0, 0xbf, 0x87, 0x5f, 0x04, 0x76, 0x71, 0x3d, 0x0d, 0xbb, 0x82, 0x91, 0x08,
|
||||
0x70, 0x27, 0xa4, 0x52, 0x73, 0xbf, 0xdc, 0xb8, 0x3c, 0x3c, 0x99, 0xed, 0x42, 0x0d, 0xcf, 0xbd,
|
||||
0x65, 0xcf, 0xb6, 0x09, 0x78, 0x3a, 0x96, 0x95, 0xd9, 0x78, 0x60, 0x96, 0xeb, 0xf2, 0x01, 0x7e,
|
||||
0x07, 0xb7, 0xe3, 0x07, 0x28, 0xab, 0xea, 0x7b, 0x83, 0xff, 0x8d, 0x97, 0x00, 0x9a, 0x9f, 0xfd,
|
||||
0xc4, 0x38, 0x7d, 0xff, 0xc9, 0x47, 0x6e, 0xdf, 0xb3, 0xed, 0x37, 0x96, 0x63, 0x1b, 0x36, 0x29,
|
||||
0xe2, 0x9c, 0x04, 0x2f, 0x99, 0x6e, 0xbc, 0xce, 0x0d, 0xe1, 0x17, 0x61, 0x4b, 0x49, 0x92, 0xe3,
|
||||
0x45, 0xca, 0x7c, 0x85, 0x7d, 0x7e, 0x70, 0xd1, 0x18, 0x44, 0x94, 0xef, 0x85, 0xdf, 0x23, 0x72,
|
||||
0x0c, 0x4c, 0x72, 0x6e, 0x63, 0xae, 0x6f, 0x89, 0xdf, 0xc1, 0xf6, 0x91, 0xac, 0xd9, 0x71, 0xdf,
|
||||
0x9a, 0x5f, 0xfa, 0xeb, 0x8d, 0x04, 0xc8, 0x16, 0xdc, 0x3a, 0xd0, 0x4c, 0x3c, 0xf7, 0x19, 0xed,
|
||||
0x45, 0x1f, 0xfa, 0x27, 0x42, 0x6d, 0xb0, 0xfd, 0x9c, 0xf9, 0xa9, 0xf8, 0x45, 0xbf, 0x64, 0x4e,
|
||||
0x80, 0x7a, 0x0b, 0xb7, 0xe8, 0xa6, 0xcd, 0x20, 0x7d, 0x34, 0x13, 0x65, 0x27, 0xff, 0xe8, 0x3a,
|
||||
0x31, 0xf1, 0xb4, 0xed, 0x3b, 0xfb, 0x19, 0xec, 0xab, 0xdf, 0xc0, 0xa3, 0x1d, 0xf9, 0x14, 0x3a,
|
||||
0x82, 0x9d, 0xb0, 0x22, 0xfd, 0x74, 0xc0, 0x1d, 0x02, 0x1c, 0x68, 0xd0, 0x35, 0x80, 0x93, 0xf4,
|
||||
0xa7, 0x14, 0x58, 0xfe, 0x0c, 0xda, 0x0d, 0xcd, 0xfe, 0x6b, 0xc8, 0xd5, 0x2a, 0x15, 0x59, 0x79,
|
||||
0xe7, 0x4c, 0x6f, 0x30, 0xa1, 0x6f, 0x20, 0x5f, 0xab, 0x08, 0xd8, 0x22, 0x13, 0xba, 0x51, 0x00,
|
||||
0xb8, 0x11, 0xac, 0xc7, 0xbf, 0x28, 0xde, 0xd8, 0x85, 0x45, 0xd2, 0x15, 0xc1, 0xaf, 0x06, 0xde,
|
||||
0xc3, 0x25, 0xde, 0x0a, 0xf0, 0xbc, 0x5d, 0xba, 0x29, 0xda, 0x70, 0x89, 0xfe, 0x31, 0xc3, 0xb3,
|
||||
0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x96, 0xc4, 0xbb, 0x95, 0xa6, 0x41, 0x00, 0x00,
|
||||
// 4874 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x7c, 0xc9, 0x73, 0x23, 0x47,
|
||||
0x76, 0x37, 0x16, 0x2e, 0xc0, 0x03, 0x41, 0x16, 0xb3, 0x9b, 0x24, 0x9a, 0xbd, 0xd7, 0xb4, 0x34,
|
||||
0x2d, 0x4a, 0xa2, 0x46, 0x54, 0x4f, 0x4b, 0xa3, 0x91, 0x3e, 0x0d, 0x36, 0x02, 0xe8, 0x06, 0x01,
|
||||
0xa8, 0x0a, 0x68, 0x6a, 0xb6, 0xaf, 0xa6, 0x50, 0x95, 0x04, 0x4b, 0x0d, 0x54, 0xc1, 0xb5, 0x90,
|
||||
0xa2, 0x1d, 0x31, 0x11, 0x9e, 0x08, 0x47, 0xf8, 0xe0, 0xbb, 0x0f, 0xbe, 0xfa, 0x6a, 0x47, 0xf8,
|
||||
0xe0, 0x3f, 0xca, 0x97, 0xb9, 0xf9, 0xe2, 0x8b, 0x1d, 0x99, 0x59, 0x3b, 0xaa, 0xb8, 0xb5, 0x74,
|
||||
0xab, 0x7c, 0xf9, 0xf2, 0x97, 0x2f, 0xdf, 0x96, 0x99, 0x2f, 0x41, 0x02, 0x4c, 0xcc, 0xb9, 0xb2,
|
||||
0x3f, 0x37, 0x0d, 0xdb, 0x40, 0xa5, 0xc1, 0x8b, 0x73, 0x7d, 0xf0, 0xa9, 0x44, 0x48, 0xfc, 0xbf,
|
||||
0xe4, 0x60, 0xfd, 0x48, 0xb6, 0x6c, 0x6c, 0x0e, 0xf1, 0x6c, 0x3e, 0x95, 0x6d, 0x8c, 0x5e, 0xc2,
|
||||
0x8e, 0xed, 0x7e, 0x4b, 0xba, 0x3c, 0xc3, 0xd2, 0x78, 0xea, 0x60, 0xdb, 0x30, 0xec, 0xd3, 0x4a,
|
||||
0xf6, 0x49, 0xf6, 0x79, 0x51, 0xd8, 0xf2, 0xba, 0x7b, 0xf2, 0x0c, 0xd7, 0xbc, 0x4e, 0xb4, 0x07,
|
||||
0x9b, 0xd1, 0x71, 0x8e, 0x35, 0xae, 0xe4, 0xe8, 0x88, 0x8d, 0xf0, 0x88, 0x91, 0x35, 0x46, 0x1f,
|
||||
0x01, 0x8a, 0xf2, 0x9e, 0x6b, 0x27, 0x5a, 0x25, 0x4f, 0x99, 0xb9, 0x30, 0xf3, 0xb1, 0x76, 0xa2,
|
||||
0xa1, 0x2a, 0x3c, 0x8c, 0x72, 0xdb, 0xa6, 0x36, 0x99, 0x60, 0x53, 0x92, 0x15, 0x5b, 0x33, 0x74,
|
||||
0xab, 0xb2, 0x44, 0x07, 0xee, 0x86, 0x07, 0x0e, 0x19, 0x4b, 0x95, 0x71, 0xa0, 0x17, 0xb0, 0x1d,
|
||||
0x81, 0xb0, 0x24, 0x1d, 0xdb, 0xe7, 0x86, 0xf9, 0xb6, 0xb2, 0xfc, 0x24, 0xff, 0xbc, 0x28, 0xdc,
|
||||
0x0d, 0x8f, 0xb5, 0x7a, 0xac, 0x8f, 0xff, 0x3b, 0x78, 0x20, 0xe0, 0xbf, 0x71, 0xb0, 0x65, 0x47,
|
||||
0x75, 0x24, 0xda, 0x86, 0x29, 0x4f, 0x30, 0xe2, 0x61, 0x6d, 0x18, 0x1a, 0xe7, 0xea, 0x27, 0x42,
|
||||
0x43, 0x9f, 0x43, 0xc1, 0xc3, 0xa6, 0xda, 0x28, 0x1d, 0xdc, 0xdf, 0x0f, 0x59, 0x60, 0x3f, 0x8a,
|
||||
0x2c, 0xf8, 0xcc, 0xfc, 0xdf, 0x67, 0xe1, 0xb1, 0xaf, 0x5d, 0x57, 0x0c, 0x11, 0xdb, 0xb6, 0xa6,
|
||||
0x4f, 0xac, 0x9b, 0x08, 0xf0, 0x25, 0x14, 0x2c, 0x77, 0x98, 0x2b, 0xc0, 0xa3, 0x88, 0x00, 0xfe,
|
||||
0x1c, 0x1e, 0xb8, 0xe0, 0xf3, 0xf3, 0xff, 0x90, 0x85, 0xcd, 0x85, 0x7e, 0xf4, 0x6b, 0xc8, 0x29,
|
||||
0x1a, 0x9d, 0xab, 0x74, 0xf0, 0x61, 0x32, 0x56, 0xdd, 0xd0, 0x6d, 0xd3, 0x98, 0x4e, 0xb1, 0xd9,
|
||||
0xd1, 0x4f, 0x0c, 0x73, 0x26, 0x13, 0x33, 0x08, 0x39, 0x45, 0x43, 0x9f, 0x41, 0x4e, 0xf6, 0x04,
|
||||
0xf9, 0x59, 0xf2, 0xe0, 0xea, 0x04, 0xeb, 0xfe, 0x52, 0x85, 0x9c, 0x6c, 0xf1, 0x7b, 0xb0, 0x9d,
|
||||
0xdc, 0x8b, 0x38, 0xc8, 0xcf, 0x35, 0xdd, 0x5d, 0x38, 0xf9, 0xe4, 0xff, 0x27, 0x0b, 0x3b, 0x3e,
|
||||
0xb3, 0x6b, 0x49, 0x11, 0x9b, 0x67, 0x9a, 0x82, 0x89, 0x1b, 0x98, 0x78, 0xa2, 0x11, 0x8d, 0x4b,
|
||||
0x86, 0x29, 0x39, 0xba, 0xd7, 0xa2, 0x00, 0x05, 0xe1, 0xae, 0xd7, 0xee, 0x9b, 0x23, 0xbf, 0x8f,
|
||||
0x78, 0xb6, 0x85, 0xcd, 0x33, 0x36, 0x46, 0x31, 0x74, 0x1d, 0x2b, 0x36, 0x5d, 0x41, 0x41, 0xd8,
|
||||
0x60, 0x1d, 0x7d, 0xb3, 0xce, 0xc8, 0xe8, 0x2b, 0x58, 0xb2, 0x2f, 0xe6, 0x98, 0xfa, 0xf2, 0xfa,
|
||||
0xc1, 0xf3, 0xe4, 0x05, 0x46, 0xa5, 0x1a, 0x5e, 0xcc, 0xb1, 0x40, 0x47, 0xa1, 0x47, 0x50, 0x9a,
|
||||
0xc9, 0x0a, 0x99, 0x86, 0x38, 0xa9, 0xeb, 0xd7, 0xc5, 0x99, 0xac, 0xf4, 0x4d, 0x6a, 0xcb, 0xc7,
|
||||
0x50, 0x1a, 0x9b, 0x9a, 0x3a, 0x61, 0x4e, 0x5c, 0x59, 0xa6, 0xfd, 0xc0, 0x48, 0x84, 0x81, 0xff,
|
||||
0xaf, 0x25, 0xb8, 0x9f, 0x60, 0x04, 0x5f, 0x5d, 0x15, 0x58, 0x9d, 0x1b, 0xe7, 0xd8, 0xc4, 0xaa,
|
||||
0xbb, 0x62, 0xaf, 0x89, 0x9e, 0x40, 0xc9, 0x5d, 0x9a, 0x3c, 0x9e, 0x62, 0x77, 0x79, 0x61, 0x12,
|
||||
0xfa, 0x00, 0xb8, 0x13, 0xd9, 0xb2, 0xa5, 0x30, 0x5b, 0x9e, 0x69, 0x81, 0xd0, 0xeb, 0x21, 0x56,
|
||||
0x1e, 0xd6, 0x54, 0xcd, 0x52, 0x8c, 0x33, 0x6c, 0x52, 0xb6, 0x25, 0xca, 0x16, 0xa1, 0xa1, 0x5d,
|
||||
0x28, 0x8c, 0x0d, 0x5d, 0xa5, 0xfd, 0xcb, 0xb4, 0xdf, 0x6f, 0xa3, 0x7d, 0xb8, 0x33, 0xd5, 0xf4,
|
||||
0xb7, 0xd2, 0x14, 0x9f, 0xe1, 0xa9, 0x64, 0x61, 0xc5, 0x31, 0x35, 0xfb, 0xa2, 0xb2, 0x42, 0xd9,
|
||||
0x36, 0x49, 0x57, 0x97, 0xf4, 0x88, 0x6e, 0x07, 0x3a, 0x80, 0x2d, 0xca, 0x84, 0x25, 0x4b, 0x9b,
|
||||
0xcd, 0xa7, 0x58, 0x9a, 0xcb, 0x9a, 0xa9, 0xe9, 0x93, 0xca, 0x2a, 0x1d, 0x71, 0x87, 0x75, 0x8a,
|
||||
0xb4, 0x6f, 0xc0, 0xba, 0xd0, 0x16, 0xac, 0x8c, 0x4d, 0x09, 0xab, 0x66, 0xa5, 0x40, 0x99, 0x96,
|
||||
0xc7, 0x66, 0x53, 0x35, 0xd1, 0x43, 0x80, 0x53, 0x6d, 0x72, 0x2a, 0x59, 0x73, 0x8c, 0xd5, 0x4a,
|
||||
0x91, 0x76, 0x15, 0x09, 0x45, 0x24, 0x04, 0xd2, 0x3d, 0x35, 0xce, 0x25, 0xac, 0x63, 0x73, 0x72,
|
||||
0x51, 0x01, 0xd6, 0x3d, 0x35, 0xce, 0x9b, 0x94, 0x40, 0xb4, 0x28, 0xab, 0x67, 0xd8, 0xb4, 0x35,
|
||||
0x8b, 0x4c, 0x5f, 0x62, 0x5a, 0x0c, 0x91, 0xd0, 0xc7, 0x80, 0x5c, 0x51, 0x5d, 0x3d, 0xd2, 0x0c,
|
||||
0xb6, 0xc6, 0x56, 0xc6, 0x7a, 0xea, 0x41, 0x07, 0x99, 0x4f, 0xc5, 0x63, 0x67, 0x22, 0xbd, 0xc5,
|
||||
0x17, 0x56, 0xa5, 0xcc, 0xe6, 0xa3, 0x94, 0xd7, 0xf8, 0x82, 0xd9, 0xd3, 0xd4, 0xce, 0x64, 0xe5,
|
||||
0xa2, 0xb2, 0xee, 0xda, 0x93, 0x35, 0xd1, 0xaf, 0xa0, 0xa2, 0xf8, 0xf6, 0x27, 0x73, 0x9d, 0x68,
|
||||
0x13, 0xc7, 0xa4, 0x71, 0x58, 0xd9, 0xa0, 0xac, 0x3b, 0x41, 0x7f, 0x3d, 0xdc, 0x8d, 0xde, 0x83,
|
||||
0x75, 0xcb, 0x96, 0x6d, 0x4d, 0x91, 0x64, 0x55, 0x35, 0xb1, 0x65, 0x55, 0x38, 0x3a, 0xa0, 0xcc,
|
||||
0xa8, 0x55, 0x46, 0xe4, 0xff, 0xba, 0x04, 0x8f, 0x2e, 0x0f, 0x78, 0x22, 0x9e, 0x07, 0x41, 0xdc,
|
||||
0x6d, 0x4d, 0xf0, 0x9a, 0xe8, 0x43, 0xd8, 0xf4, 0xf7, 0x15, 0xe9, 0x0c, 0x9b, 0x16, 0x91, 0x8b,
|
||||
0x38, 0x5d, 0x59, 0xe0, 0xfc, 0x8e, 0x37, 0x8c, 0x4e, 0xdc, 0x69, 0x26, 0xeb, 0xce, 0x89, 0xac,
|
||||
0xd8, 0x8e, 0x89, 0x4d, 0xea, 0x75, 0x65, 0x21, 0x42, 0x43, 0xc7, 0x80, 0x2c, 0x67, 0x3e, 0x37,
|
||||
0x4c, 0x1b, 0xab, 0x92, 0x9f, 0xf0, 0x96, 0x68, 0x9e, 0x79, 0x7e, 0x55, 0x92, 0xf2, 0x93, 0xcd,
|
||||
0xa6, 0x8f, 0xe1, 0x87, 0x8c, 0x08, 0x9c, 0xe2, 0x98, 0x26, 0xd6, 0xed, 0x00, 0x76, 0xf9, 0x86,
|
||||
0xb0, 0x1b, 0x2e, 0x82, 0x0f, 0xfa, 0x3e, 0x6c, 0x28, 0x53, 0xd9, 0xb2, 0x24, 0xe3, 0x44, 0x52,
|
||||
0x31, 0xc9, 0x02, 0xd4, 0xb9, 0xd7, 0x84, 0x32, 0x25, 0xf7, 0x4f, 0x1a, 0x94, 0x88, 0x10, 0x2c,
|
||||
0xd1, 0x48, 0x5f, 0xa5, 0x91, 0x4e, 0xbf, 0x89, 0x4b, 0x58, 0xa7, 0x86, 0x69, 0xb3, 0x1c, 0x50,
|
||||
0x60, 0x39, 0x82, 0x52, 0x68, 0x8e, 0x78, 0x0a, 0x6b, 0x9a, 0x25, 0xc9, 0x67, 0xb2, 0x36, 0xa5,
|
||||
0xb1, 0xc5, 0x5c, 0xb8, 0xa4, 0x59, 0x55, 0x8f, 0x84, 0x7e, 0x0d, 0xbb, 0x16, 0xcb, 0x3d, 0xde,
|
||||
0x36, 0x28, 0xb9, 0x09, 0x4e, 0x97, 0xe7, 0xae, 0x53, 0xef, 0xb8, 0x1c, 0xa1, 0x5c, 0x85, 0xcd,
|
||||
0x9e, 0x3c, 0x47, 0x5f, 0xc3, 0xfd, 0x94, 0xc1, 0x73, 0x59, 0x77, 0x5c, 0x97, 0xaf, 0x24, 0x8d,
|
||||
0x1e, 0xc8, 0xba, 0x83, 0x7e, 0x05, 0xf7, 0x52, 0x86, 0x4f, 0x74, 0x37, 0x0c, 0xb6, 0x93, 0x06,
|
||||
0xb7, 0x74, 0xfe, 0x7b, 0xe0, 0x22, 0xdb, 0xba, 0x88, 0x6d, 0x54, 0x83, 0xf5, 0xe8, 0x56, 0x5f,
|
||||
0xc9, 0x3e, 0xc9, 0x3f, 0x2f, 0x1d, 0xec, 0x46, 0x6c, 0x13, 0x61, 0x11, 0x62, 0x23, 0x88, 0x92,
|
||||
0xe9, 0xee, 0xc9, 0x0e, 0x2b, 0xf4, 0x9b, 0xff, 0x37, 0x80, 0x72, 0x84, 0x0d, 0xad, 0x43, 0x4e,
|
||||
0x63, 0x59, 0xb3, 0x2c, 0xe4, 0x34, 0x95, 0xf8, 0xb6, 0xa1, 0x63, 0xf1, 0xd4, 0xf0, 0xf6, 0x02,
|
||||
0xaf, 0x49, 0x32, 0x9b, 0x66, 0x91, 0x51, 0x67, 0x5e, 0x82, 0xf4, 0xdb, 0xe8, 0x01, 0x14, 0xb5,
|
||||
0xd9, 0xcc, 0xb1, 0x43, 0x69, 0x31, 0x20, 0xa0, 0x2e, 0xac, 0xbb, 0x6b, 0x17, 0x6d, 0x99, 0x78,
|
||||
0xa1, 0xeb, 0x69, 0x7c, 0xd2, 0x6a, 0xc4, 0x08, 0x67, 0x3b, 0x23, 0xc4, 0xc6, 0xa2, 0xef, 0x00,
|
||||
0x39, 0xd6, 0xb8, 0x25, 0xab, 0x13, 0xec, 0x65, 0x67, 0xac, 0x52, 0x3f, 0x2b, 0x1d, 0xbc, 0x9f,
|
||||
0x84, 0x38, 0x12, 0x6b, 0x31, 0xee, 0x76, 0x46, 0x48, 0xc0, 0x40, 0x32, 0x6c, 0xf9, 0xd4, 0x06,
|
||||
0x49, 0xea, 0x1e, 0xf8, 0x2a, 0x05, 0xff, 0xe0, 0x52, 0xf0, 0xf0, 0x80, 0x76, 0x46, 0x48, 0x46,
|
||||
0x42, 0x1d, 0x28, 0x93, 0x43, 0x61, 0x75, 0xe0, 0x69, 0xa2, 0x40, 0xa1, 0x9f, 0x26, 0x41, 0x1f,
|
||||
0x87, 0x19, 0xdb, 0x19, 0x21, 0x3a, 0x92, 0xe8, 0x81, 0x10, 0x7c, 0xf1, 0xab, 0x96, 0x68, 0xcb,
|
||||
0x34, 0x2e, 0x52, 0xf4, 0x70, 0xbc, 0xc0, 0x4d, 0xf4, 0xb0, 0x88, 0x41, 0xcf, 0x56, 0xd6, 0x69,
|
||||
0xd7, 0x98, 0x68, 0x3a, 0x0d, 0x9b, 0xd2, 0xc1, 0x83, 0x44, 0x4b, 0x89, 0x6d, 0xca, 0xd3, 0xce,
|
||||
0x08, 0x3e, 0x3f, 0x12, 0x80, 0x53, 0x4f, 0x95, 0x79, 0x17, 0xcb, 0x16, 0x6e, 0x99, 0xb2, 0x4e,
|
||||
0xd6, 0x58, 0xa2, 0x18, 0xcf, 0x92, 0x30, 0x1a, 0xed, 0xfa, 0x20, 0xcc, 0xdb, 0xce, 0x08, 0x0b,
|
||||
0xe3, 0xd1, 0x21, 0xac, 0x4d, 0x4c, 0xc3, 0x99, 0x0b, 0x58, 0xc1, 0xc4, 0xfb, 0xd6, 0x28, 0xde,
|
||||
0x93, 0x24, 0xbc, 0x56, 0x88, 0xaf, 0x9d, 0x11, 0x22, 0xe3, 0xd0, 0x08, 0x36, 0xc3, 0xed, 0x23,
|
||||
0x67, 0x6a, 0x6b, 0x74, 0xf3, 0x29, 0x1d, 0xbc, 0x77, 0x15, 0x18, 0x65, 0x6e, 0x67, 0x84, 0x45,
|
||||
0x04, 0xf4, 0x02, 0x56, 0x26, 0x73, 0xcd, 0xe8, 0xe8, 0x74, 0xb3, 0x4a, 0x09, 0xd2, 0xd6, 0xa0,
|
||||
0xd3, 0xef, 0x10, 0x55, 0xb9, 0xbc, 0xa8, 0x01, 0x30, 0x96, 0xad, 0x53, 0x51, 0x31, 0xb5, 0xb9,
|
||||
0x4d, 0xf7, 0xae, 0x78, 0x40, 0xb8, 0xe9, 0x80, 0x98, 0xbb, 0xe6, 0x73, 0xb6, 0xb3, 0x42, 0x68,
|
||||
0x1c, 0xaa, 0x42, 0xf1, 0x54, 0x53, 0x5d, 0x10, 0x2e, 0xc1, 0x97, 0x42, 0x20, 0xed, 0x4e, 0xc3,
|
||||
0xc7, 0x08, 0x46, 0x21, 0x05, 0xb6, 0x55, 0x3c, 0x9f, 0x1a, 0x17, 0x5e, 0x1a, 0xf7, 0xce, 0xd9,
|
||||
0x95, 0xcd, 0x04, 0xb7, 0x67, 0x78, 0x8d, 0xc4, 0x01, 0xed, 0xac, 0x90, 0x02, 0x85, 0xf6, 0x20,
|
||||
0x3f, 0x35, 0x26, 0x15, 0x44, 0x11, 0xb7, 0x13, 0x10, 0xbb, 0xc6, 0xa4, 0x9d, 0x15, 0x08, 0x13,
|
||||
0x7a, 0x09, 0xab, 0x44, 0x47, 0x7d, 0xc7, 0xae, 0xdc, 0x49, 0x50, 0x28, 0xe3, 0x27, 0xfa, 0xec,
|
||||
0x3b, 0x64, 0x29, 0x1e, 0x33, 0xfa, 0x0a, 0x8a, 0xd4, 0x38, 0x22, 0xd6, 0xd5, 0xca, 0xdd, 0x04,
|
||||
0xbf, 0x75, 0x47, 0x7a, 0x3c, 0x44, 0x0d, 0xfe, 0x80, 0x5a, 0x11, 0x56, 0x5d, 0x53, 0xd5, 0x0a,
|
||||
0xb0, 0xc2, 0x58, 0xf9, 0x1d, 0xd8, 0x4a, 0x4c, 0x4b, 0xfc, 0x7d, 0xb8, 0x97, 0x9a, 0x5d, 0xf8,
|
||||
0x47, 0xf0, 0xe0, 0xb2, 0xec, 0xc0, 0x6f, 0xc3, 0xdd, 0xa4, 0x10, 0x0f, 0x81, 0x2e, 0x86, 0x2a,
|
||||
0xff, 0x09, 0x6c, 0xc4, 0xe2, 0x8e, 0x64, 0xdd, 0x29, 0xf9, 0x18, 0x59, 0xee, 0x51, 0xbf, 0x28,
|
||||
0x04, 0x04, 0xfe, 0x1e, 0xec, 0xa4, 0x04, 0x19, 0xdf, 0x81, 0x3b, 0x09, 0x2e, 0x4e, 0xf0, 0xa8,
|
||||
0x3e, 0x42, 0x97, 0xae, 0x80, 0x80, 0xee, 0xc2, 0xf2, 0x99, 0x3c, 0x75, 0xd8, 0x86, 0xb2, 0x2c,
|
||||
0xb0, 0x06, 0xff, 0x8f, 0x59, 0xa8, 0xa4, 0x85, 0xcb, 0x15, 0x80, 0xdb, 0xb0, 0x42, 0x31, 0xac,
|
||||
0x4a, 0xfe, 0x49, 0xfe, 0xf9, 0xb2, 0xe0, 0xb6, 0xd0, 0x4b, 0xf7, 0xb2, 0xb1, 0x44, 0x2f, 0x1b,
|
||||
0xd1, 0x98, 0x58, 0x98, 0x23, 0xb8, 0x66, 0xf0, 0xff, 0x9a, 0xf5, 0x37, 0x37, 0x16, 0x6d, 0xe8,
|
||||
0x3e, 0x14, 0x89, 0x73, 0xb0, 0x23, 0x05, 0x9b, 0xbf, 0x40, 0x08, 0x74, 0xfa, 0xaf, 0x01, 0xe6,
|
||||
0xce, 0x74, 0x3a, 0x9a, 0x37, 0x8c, 0x73, 0x76, 0x48, 0x5b, 0x3f, 0x78, 0x18, 0x9d, 0x8c, 0xa2,
|
||||
0x0c, 0x7c, 0x26, 0x21, 0x34, 0x00, 0x7d, 0x0e, 0xc0, 0x22, 0xb9, 0xa9, 0x4e, 0xbc, 0x8b, 0xd1,
|
||||
0x4e, 0xc2, 0x70, 0xd2, 0x2d, 0x84, 0x58, 0xf9, 0xcf, 0x61, 0x2b, 0x31, 0xb2, 0xd1, 0x23, 0x00,
|
||||
0x8b, 0x7e, 0x85, 0xd4, 0x15, 0xa2, 0xf0, 0x2f, 0xe1, 0x6e, 0x52, 0x34, 0x5f, 0x39, 0xee, 0xbf,
|
||||
0xb3, 0xf0, 0xe0, 0xb2, 0xb0, 0x25, 0x07, 0x51, 0x3b, 0xe1, 0xbe, 0x1d, 0xa6, 0xa1, 0x57, 0xae,
|
||||
0x51, 0x98, 0x9e, 0x5e, 0x5e, 0x3b, 0x27, 0xec, 0x7b, 0x1f, 0x21, 0x43, 0xe1, 0xe0, 0x7e, 0x4f,
|
||||
0xa8, 0x68, 0x13, 0xca, 0x87, 0xa3, 0x6e, 0x57, 0x12, 0x9b, 0xc3, 0x61, 0xa7, 0xd7, 0x12, 0xb9,
|
||||
0x0c, 0x2a, 0xc1, 0x6a, 0xaf, 0x39, 0x3c, 0xee, 0x0b, 0xaf, 0xb9, 0x2c, 0x2a, 0xc0, 0xd2, 0x71,
|
||||
0xe7, 0xb0, 0xc3, 0xe5, 0xd0, 0x2a, 0xe4, 0x47, 0x62, 0x8d, 0xcb, 0xa3, 0x32, 0x14, 0x6b, 0xdd,
|
||||
0x51, 0x73, 0xd8, 0xef, 0x0f, 0xdb, 0xdc, 0x12, 0xba, 0x03, 0x1b, 0x43, 0xa1, 0xd3, 0x6a, 0x35,
|
||||
0x05, 0xa9, 0x5a, 0x1f, 0x76, 0xfa, 0x3d, 0x91, 0x5b, 0xe6, 0x4b, 0x50, 0xf4, 0x73, 0x0b, 0xff,
|
||||
0x47, 0x28, 0x47, 0x12, 0xc7, 0xe5, 0xbe, 0xf1, 0x49, 0xd8, 0xd7, 0xd7, 0x0f, 0xee, 0x2d, 0xd8,
|
||||
0xb5, 0xef, 0xd8, 0x6f, 0x08, 0x83, 0x17, 0x06, 0x4d, 0xd8, 0x88, 0x65, 0x97, 0x5b, 0x45, 0xd3,
|
||||
0x39, 0xec, 0x92, 0xd0, 0x7f, 0x87, 0xba, 0xc8, 0x2f, 0x17, 0xea, 0x22, 0x51, 0xe1, 0x8f, 0xb5,
|
||||
0x43, 0x2d, 0xa1, 0x24, 0xf2, 0xcf, 0x79, 0x58, 0x0b, 0x77, 0xf9, 0x47, 0xf4, 0x6c, 0xe8, 0x88,
|
||||
0xbe, 0x0b, 0x05, 0x55, 0xb3, 0xc8, 0x91, 0x4e, 0x75, 0x0f, 0x87, 0x7e, 0x9b, 0x38, 0xa1, 0x89,
|
||||
0x27, 0xce, 0x54, 0xb6, 0x0d, 0xf3, 0xc2, 0xad, 0x79, 0x85, 0x28, 0xe8, 0x1b, 0x58, 0x23, 0xa7,
|
||||
0x5e, 0x4d, 0x9f, 0x48, 0x33, 0x43, 0xf5, 0x82, 0xfb, 0xc1, 0x82, 0x6c, 0xc7, 0x8c, 0xe9, 0xc8,
|
||||
0x50, 0xb1, 0x50, 0x3a, 0x0f, 0x1a, 0xe8, 0x25, 0x14, 0x65, 0xc7, 0x3e, 0x65, 0xa3, 0x97, 0x13,
|
||||
0xcc, 0x42, 0x46, 0x57, 0x1d, 0xfb, 0x94, 0x0e, 0x2d, 0xc8, 0xee, 0x17, 0x39, 0xd0, 0x2a, 0xa7,
|
||||
0xb2, 0xae, 0xe3, 0x29, 0x3d, 0x23, 0x96, 0x05, 0xaf, 0x89, 0xf6, 0x61, 0x45, 0x9e, 0x4b, 0x35,
|
||||
0x51, 0x74, 0xcf, 0x77, 0x3b, 0x0b, 0x70, 0x35, 0x51, 0xac, 0x9f, 0x4c, 0x84, 0x65, 0x79, 0x5e,
|
||||
0x13, 0x45, 0xf4, 0x0d, 0xb9, 0xdd, 0x68, 0xe4, 0xc6, 0x54, 0x13, 0x45, 0x69, 0xaa, 0x59, 0x76,
|
||||
0xa5, 0x40, 0x4f, 0xe5, 0xa9, 0x03, 0xcb, 0x8c, 0xbf, 0x26, 0x8a, 0x5d, 0xcd, 0xa2, 0x2e, 0x77,
|
||||
0xaa, 0xa9, 0x58, 0xb2, 0x2c, 0xcd, 0xbb, 0x83, 0x17, 0x08, 0x41, 0xb4, 0x34, 0x95, 0x64, 0x43,
|
||||
0x1d, 0xff, 0x30, 0x33, 0x74, 0xf7, 0x3a, 0xec, 0xb6, 0xf8, 0x7f, 0xcf, 0x42, 0x91, 0x5a, 0xc6,
|
||||
0x26, 0xa1, 0xba, 0x0f, 0x4b, 0x54, 0x01, 0x59, 0xaa, 0x80, 0xdd, 0x45, 0xd3, 0x12, 0x2e, 0xaa,
|
||||
0x01, 0xca, 0x17, 0x5e, 0x7d, 0x2e, 0xba, 0x7a, 0x04, 0x4b, 0x54, 0x0e, 0x66, 0x2a, 0xfa, 0x8d,
|
||||
0xea, 0x10, 0xbf, 0xd2, 0xb9, 0x57, 0xcd, 0x4b, 0x7c, 0x28, 0x3e, 0x82, 0x3f, 0x00, 0x08, 0x54,
|
||||
0x40, 0xa6, 0x11, 0xc5, 0x4e, 0xc3, 0xf3, 0x23, 0xf2, 0x8d, 0x38, 0xc8, 0x0f, 0xc4, 0xd7, 0xee,
|
||||
0xc5, 0x84, 0x7c, 0xf2, 0x4f, 0xa1, 0x2c, 0xda, 0x26, 0x31, 0x35, 0xb6, 0x2c, 0xe2, 0xea, 0x1c,
|
||||
0xe4, 0x67, 0xd6, 0xc4, 0x2b, 0x80, 0xcd, 0xac, 0x09, 0xff, 0x0b, 0x40, 0x11, 0x96, 0xaa, 0x69,
|
||||
0xca, 0x17, 0xc4, 0x25, 0x67, 0xd6, 0x84, 0x7e, 0xd3, 0x2b, 0x52, 0x51, 0xf0, 0xdb, 0xfc, 0x3e,
|
||||
0xac, 0x35, 0xcf, 0xb0, 0x6e, 0xbb, 0xd1, 0x44, 0x5c, 0x94, 0x18, 0x0d, 0xeb, 0x24, 0xe9, 0x50,
|
||||
0xe8, 0xbc, 0x10, 0xa2, 0xf0, 0x32, 0x00, 0xe5, 0xa7, 0x81, 0x8d, 0x76, 0x61, 0xd5, 0xb6, 0xe8,
|
||||
0x84, 0x4c, 0x8a, 0x76, 0x46, 0xf0, 0x08, 0x68, 0x1b, 0x96, 0xed, 0xb1, 0x61, 0x30, 0x9d, 0x16,
|
||||
0xda, 0x19, 0x81, 0x35, 0x51, 0x05, 0x56, 0x6c, 0x4d, 0xb7, 0x5f, 0xbe, 0xa0, 0x5a, 0xcd, 0x93,
|
||||
0xd3, 0x1e, 0x6b, 0xd7, 0x96, 0x21, 0x7f, 0x26, 0x4f, 0xf9, 0x2e, 0x2c, 0xd3, 0x29, 0x88, 0x5a,
|
||||
0xec, 0x40, 0x0a, 0x56, 0x26, 0xfb, 0xc4, 0xdf, 0x0f, 0x73, 0x09, 0x6e, 0x15, 0x88, 0xe6, 0x6d,
|
||||
0x94, 0xfc, 0x9f, 0xe0, 0x2e, 0x89, 0xfd, 0x86, 0x66, 0xf6, 0xcd, 0x43, 0x6d, 0x8a, 0xbd, 0x85,
|
||||
0x72, 0x90, 0x57, 0x35, 0xef, 0x44, 0x40, 0x3e, 0x89, 0x73, 0xcd, 0x4d, 0x7c, 0xa2, 0xfd, 0xe0,
|
||||
0x2a, 0xdd, 0x6d, 0x11, 0x95, 0x18, 0xfa, 0xf4, 0xe2, 0xd0, 0x98, 0xaa, 0x6e, 0x01, 0xa2, 0x20,
|
||||
0x84, 0x28, 0x64, 0xaf, 0x8a, 0xcd, 0x60, 0xcd, 0x0d, 0xdd, 0xc2, 0x2c, 0xdc, 0x2d, 0x67, 0x6a,
|
||||
0x0f, 0x64, 0xbf, 0x82, 0x1e, 0xa2, 0xf0, 0xff, 0x94, 0x85, 0x0d, 0x01, 0xcb, 0x6a, 0x58, 0xac,
|
||||
0x5f, 0xc2, 0xca, 0x09, 0x9b, 0x28, 0x9b, 0xb0, 0xd9, 0x56, 0x15, 0x05, 0x5b, 0x96, 0x36, 0x9e,
|
||||
0x62, 0x36, 0xb7, 0xe0, 0x32, 0x13, 0x13, 0x9f, 0x68, 0x53, 0xac, 0x07, 0x77, 0x59, 0xbf, 0x4d,
|
||||
0xb2, 0xa8, 0x45, 0x36, 0x43, 0xa6, 0x6f, 0x81, 0x35, 0xc8, 0xfa, 0xa7, 0x58, 0xa7, 0xae, 0x9b,
|
||||
0x17, 0xc8, 0x27, 0xdf, 0x00, 0x2e, 0x90, 0xc6, 0x5d, 0xc2, 0x03, 0x28, 0x9a, 0x58, 0x56, 0xeb,
|
||||
0x86, 0xa3, 0xdb, 0xae, 0x1d, 0x02, 0x02, 0x31, 0x90, 0x2a, 0xdb, 0x32, 0x9d, 0x71, 0x4d, 0xa0,
|
||||
0xdf, 0xfc, 0x7f, 0x66, 0x81, 0x3b, 0x36, 0x35, 0x1b, 0xff, 0xc4, 0xab, 0xda, 0x26, 0x89, 0x69,
|
||||
0x4e, 0x4e, 0xb1, 0xcc, 0x22, 0x6e, 0x8b, 0x16, 0x8c, 0x1c, 0xcb, 0xee, 0x19, 0x76, 0xf3, 0x07,
|
||||
0x92, 0x7d, 0xdc, 0xfa, 0x63, 0x98, 0xe6, 0xcb, 0xbd, 0x1c, 0x92, 0xfb, 0x3d, 0xd8, 0x20, 0x12,
|
||||
0x77, 0xf4, 0x13, 0xc3, 0x93, 0x1a, 0xc1, 0xd2, 0x3c, 0xb0, 0x1c, 0xfd, 0xe6, 0xff, 0x0c, 0x5c,
|
||||
0xc0, 0xe6, 0x2a, 0x29, 0x69, 0x1b, 0x20, 0x99, 0x43, 0xfb, 0x5b, 0x26, 0x76, 0x5e, 0xa0, 0xdf,
|
||||
0x84, 0x46, 0xf3, 0x12, 0xab, 0x61, 0xf9, 0xb9, 0x67, 0x66, 0xa8, 0x43, 0xcd, 0x2d, 0xf9, 0xe6,
|
||||
0x05, 0xaf, 0x49, 0xcc, 0xa6, 0x59, 0x0d, 0xcd, 0x74, 0x2b, 0xa4, 0xac, 0xc1, 0xff, 0x0e, 0x38,
|
||||
0xff, 0x50, 0x13, 0x8a, 0x59, 0x76, 0x92, 0x09, 0xfb, 0x59, 0x40, 0x41, 0xef, 0xc3, 0xba, 0xad,
|
||||
0xcd, 0xb0, 0xe1, 0xd8, 0x22, 0x56, 0x0c, 0x5d, 0xb5, 0xdc, 0x34, 0x17, 0xa3, 0xf2, 0x8f, 0x60,
|
||||
0xcd, 0xc7, 0x7e, 0x65, 0x8c, 0xe3, 0x65, 0x0f, 0xfe, 0x59, 0x68, 0xee, 0x57, 0xc6, 0x98, 0xa6,
|
||||
0x6b, 0x0e, 0xf2, 0x9a, 0xca, 0x2a, 0x2f, 0x65, 0x81, 0x7c, 0xf2, 0x6f, 0xa0, 0xd2, 0xee, 0x34,
|
||||
0x04, 0x47, 0xd7, 0x35, 0x7d, 0xf2, 0xca, 0x18, 0xd3, 0x6c, 0x2b, 0x50, 0xaf, 0x0f, 0x21, 0xe6,
|
||||
0x69, 0x21, 0x05, 0xc1, 0xd2, 0xd9, 0xac, 0xa3, 0x7a, 0x5a, 0x22, 0xdf, 0xc4, 0xb0, 0x96, 0xe1,
|
||||
0x98, 0x0a, 0x76, 0xb3, 0xae, 0xdb, 0xe2, 0xff, 0x0c, 0x1b, 0xa1, 0x95, 0x53, 0xb8, 0x0f, 0x21,
|
||||
0xff, 0xbd, 0x31, 0x76, 0x9f, 0x23, 0xa2, 0xe9, 0x37, 0x2c, 0xa8, 0x40, 0xb8, 0x88, 0x96, 0x34,
|
||||
0xeb, 0x50, 0xd3, 0x35, 0xeb, 0xd4, 0xdf, 0x9a, 0x43, 0x94, 0x20, 0x5a, 0x5f, 0x59, 0x86, 0x1e,
|
||||
0x6c, 0xce, 0x1e, 0x85, 0xdf, 0x87, 0x52, 0xb7, 0xd9, 0xf0, 0xf7, 0xfe, 0xc7, 0x50, 0x1a, 0xd3,
|
||||
0x42, 0xb5, 0xe2, 0xc7, 0x46, 0x59, 0x00, 0x4a, 0xa2, 0xc1, 0xc1, 0xff, 0x00, 0xf7, 0x46, 0x62,
|
||||
0xed, 0x1d, 0x4e, 0x29, 0x9f, 0x2f, 0x9c, 0x52, 0xa2, 0xcf, 0x47, 0xec, 0xd2, 0x94, 0x70, 0x4e,
|
||||
0xf9, 0xeb, 0x32, 0xac, 0x47, 0x3b, 0x89, 0x9b, 0x61, 0x9d, 0x1d, 0x4a, 0xdc, 0xe2, 0xbf, 0xdb,
|
||||
0x24, 0x06, 0x3c, 0xd3, 0x54, 0x6f, 0x9f, 0x39, 0xd3, 0x54, 0xf6, 0xae, 0xe2, 0xed, 0x79, 0xe4,
|
||||
0x73, 0xa1, 0x08, 0xcb, 0x1e, 0x27, 0xa2, 0x45, 0x58, 0x5a, 0x8e, 0x36, 0x54, 0x47, 0xb1, 0xdd,
|
||||
0xb7, 0x09, 0xaf, 0x49, 0x0d, 0x8a, 0x4d, 0x4d, 0x66, 0x67, 0x0b, 0x62, 0x50, 0xda, 0x42, 0x8f,
|
||||
0xa0, 0xe4, 0x58, 0x58, 0xaa, 0x37, 0xea, 0x52, 0xb3, 0x7e, 0xe4, 0xd6, 0xeb, 0x8b, 0x8e, 0x85,
|
||||
0xeb, 0x8d, 0x7a, 0xb3, 0x7e, 0x44, 0x4e, 0x02, 0xa4, 0x5f, 0xe8, 0x35, 0x3a, 0xa2, 0x5b, 0xa8,
|
||||
0x2f, 0x38, 0x16, 0xa6, 0x6d, 0xf4, 0x1c, 0x38, 0xd2, 0xd9, 0xee, 0x34, 0xa4, 0xd7, 0xcd, 0xdf,
|
||||
0xd6, 0xfa, 0x55, 0xa1, 0xe1, 0x9e, 0x16, 0xd6, 0x1d, 0x0b, 0xb7, 0x3b, 0x0d, 0x8f, 0x8a, 0x78,
|
||||
0x28, 0x7b, 0x9c, 0x47, 0xfd, 0x91, 0xd8, 0x74, 0x8b, 0x9c, 0x25, 0xc6, 0x46, 0x49, 0x9e, 0x28,
|
||||
0x84, 0x47, 0xa8, 0x1e, 0xbb, 0x85, 0xcc, 0x22, 0xe3, 0x10, 0xaa, 0xc7, 0x68, 0x07, 0x56, 0x49,
|
||||
0xff, 0xe8, 0x48, 0x74, 0xeb, 0x94, 0x2b, 0x8e, 0x85, 0x47, 0x47, 0x22, 0x7a, 0x08, 0x40, 0x3a,
|
||||
0xc4, 0xa6, 0xd0, 0xa9, 0x76, 0xbd, 0x1a, 0xbd, 0x63, 0x61, 0x46, 0x40, 0xaf, 0x60, 0xdd, 0xd4,
|
||||
0x55, 0xcd, 0x0a, 0xca, 0xc7, 0xeb, 0x09, 0xaf, 0x5f, 0x51, 0x5b, 0x35, 0xed, 0x53, 0x6c, 0xea,
|
||||
0xd8, 0x16, 0xca, 0x74, 0xa8, 0x6f, 0xc2, 0x23, 0xe0, 0x14, 0x55, 0x91, 0xb0, 0x32, 0x0b, 0xd0,
|
||||
0x36, 0xae, 0x8f, 0xb6, 0xae, 0xa8, 0x4a, 0x53, 0x99, 0xf9, 0x70, 0x55, 0x58, 0x73, 0x66, 0x21,
|
||||
0xc1, 0xb8, 0x84, 0xf7, 0xc1, 0x28, 0xd4, 0xe8, 0x48, 0x14, 0x4a, 0xce, 0x2c, 0x90, 0xe8, 0x53,
|
||||
0xd8, 0x52, 0xf1, 0x99, 0x44, 0xf2, 0xa2, 0x74, 0xaa, 0xa9, 0xd2, 0x5b, 0x7c, 0x31, 0x36, 0x64,
|
||||
0x53, 0xa5, 0x15, 0x8c, 0xa2, 0x80, 0x54, 0x7c, 0x46, 0xf2, 0x4f, 0x5b, 0x53, 0x5f, 0xbb, 0x3d,
|
||||
0xe8, 0x43, 0x40, 0x91, 0x21, 0x33, 0xc3, 0xb1, 0x30, 0xad, 0x60, 0x14, 0x85, 0x8d, 0x80, 0xff,
|
||||
0x88, 0x90, 0xd1, 0xcf, 0x81, 0x8b, 0x30, 0x9b, 0xf2, 0x39, 0x2d, 0x59, 0x14, 0x85, 0x72, 0xc0,
|
||||
0x2a, 0xc8, 0xe7, 0xfc, 0x00, 0xb6, 0x93, 0x57, 0x4d, 0x4f, 0x93, 0x86, 0x65, 0xd3, 0xd7, 0x0c,
|
||||
0xef, 0x02, 0x43, 0x08, 0x55, 0x55, 0x35, 0xd1, 0x3d, 0x28, 0x10, 0x7c, 0xda, 0xc7, 0xfc, 0x7f,
|
||||
0x55, 0xc5, 0x67, 0xa4, 0x8b, 0xff, 0x1a, 0x36, 0x17, 0x16, 0x4f, 0x32, 0xb2, 0xa2, 0x9a, 0xc6,
|
||||
0xcc, 0x0d, 0x21, 0xd6, 0x20, 0x39, 0x8c, 0x6c, 0x4a, 0x5e, 0x09, 0x99, 0x7c, 0x93, 0x0b, 0xff,
|
||||
0x23, 0x5f, 0xf3, 0xb7, 0xcf, 0x00, 0xb5, 0x85, 0x0c, 0x10, 0xad, 0x59, 0x7a, 0x53, 0x74, 0x74,
|
||||
0x1b, 0x9b, 0x27, 0xb2, 0x82, 0x13, 0x92, 0x81, 0x04, 0x4f, 0xd9, 0xa5, 0x13, 0xab, 0xa9, 0xec,
|
||||
0xe8, 0x4b, 0x58, 0xa2, 0x47, 0x75, 0x56, 0x40, 0xbf, 0xee, 0x24, 0x74, 0x0c, 0xff, 0x97, 0x3c,
|
||||
0xdc, 0x4b, 0x47, 0x4e, 0xda, 0x1b, 0xbf, 0x71, 0xf7, 0x41, 0x76, 0x6f, 0xfc, 0xf0, 0x7a, 0xb3,
|
||||
0xed, 0x87, 0x0e, 0xec, 0x24, 0x95, 0xcf, 0xdd, 0xb7, 0xa8, 0x17, 0x5e, 0xaa, 0x0e, 0x28, 0xe4,
|
||||
0xdc, 0xa0, 0x63, 0x7b, 0x26, 0x5b, 0x6f, 0x5f, 0xb8, 0xb9, 0xca, 0x6f, 0x87, 0x33, 0xe1, 0x72,
|
||||
0x34, 0x13, 0xf6, 0x01, 0xa9, 0xa7, 0xca, 0x9c, 0xbd, 0x39, 0xf8, 0x67, 0x7b, 0x56, 0x33, 0x7f,
|
||||
0x1c, 0x11, 0xb2, 0xd1, 0xae, 0x0f, 0xa2, 0x6c, 0x42, 0xc2, 0x50, 0xf4, 0x0c, 0xca, 0x9e, 0x19,
|
||||
0x3a, 0xfa, 0xc8, 0xc2, 0x6e, 0x8a, 0x8b, 0x12, 0xf9, 0x3a, 0x2c, 0xd1, 0x3b, 0x18, 0xc0, 0xca,
|
||||
0x51, 0xb5, 0x37, 0xaa, 0x76, 0xb9, 0x0c, 0xda, 0x80, 0x12, 0x99, 0x43, 0xaa, 0x77, 0x3b, 0xcd,
|
||||
0xde, 0x90, 0xcb, 0xfa, 0x04, 0xb1, 0x29, 0xbc, 0x69, 0x0a, 0x5c, 0x8e, 0xdc, 0xed, 0x47, 0xbd,
|
||||
0xa3, 0x6a, 0xaf, 0xda, 0x6a, 0x36, 0xb8, 0x3c, 0xff, 0xbf, 0x79, 0x40, 0x8b, 0x52, 0x05, 0xa7,
|
||||
0xf9, 0x81, 0x61, 0xfa, 0x7b, 0x54, 0x40, 0x41, 0xcf, 0x61, 0x83, 0xb5, 0x7c, 0x75, 0x7b, 0x3f,
|
||||
0xdb, 0x88, 0x91, 0x69, 0x19, 0x0d, 0xcb, 0x16, 0x3d, 0xd5, 0xb9, 0x1a, 0x0f, 0x08, 0x68, 0x0f,
|
||||
0x38, 0xdd, 0xb0, 0xc9, 0xc5, 0xd2, 0x30, 0x35, 0x5b, 0xa6, 0xcf, 0x1f, 0xec, 0xe0, 0xb5, 0x40,
|
||||
0x47, 0xfb, 0x80, 0x54, 0xa3, 0x67, 0xd8, 0x35, 0x4d, 0x57, 0x83, 0x69, 0x99, 0x2d, 0x12, 0x7a,
|
||||
0xc8, 0xe9, 0x45, 0x91, 0xa7, 0xd3, 0xb1, 0xac, 0xbc, 0x75, 0x4b, 0xb8, 0x6c, 0x1b, 0x89, 0x51,
|
||||
0xd1, 0x0b, 0x58, 0x31, 0x65, 0x7d, 0x82, 0xad, 0xca, 0x2a, 0xf5, 0xe2, 0x07, 0x29, 0x26, 0x13,
|
||||
0x08, 0x93, 0xe0, 0xf2, 0xa2, 0x43, 0x58, 0x35, 0xe6, 0xec, 0xf5, 0x88, 0xdd, 0x53, 0x3f, 0xba,
|
||||
0xc2, 0xd2, 0xfb, 0x7d, 0xc6, 0xde, 0xd4, 0x6d, 0xf3, 0x42, 0xf0, 0x06, 0xa3, 0x3a, 0x94, 0xd8,
|
||||
0x13, 0x69, 0xdb, 0xb0, 0x6c, 0xab, 0x52, 0xa4, 0x58, 0x4f, 0xd3, 0xb0, 0x7c, 0x4e, 0x21, 0x3c,
|
||||
0x6a, 0xf7, 0x4b, 0x58, 0x0b, 0xa3, 0x93, 0x9d, 0xf8, 0x2d, 0xbe, 0x70, 0xed, 0x46, 0x3e, 0xa3,
|
||||
0x15, 0x91, 0xa2, 0x5b, 0x11, 0xf9, 0x32, 0xf7, 0x45, 0x96, 0x37, 0x60, 0x23, 0xb6, 0x46, 0x7a,
|
||||
0xa2, 0x21, 0x1f, 0x5d, 0xe3, 0xdc, 0xaf, 0x7d, 0x86, 0x28, 0x7e, 0xff, 0x68, 0x3e, 0xc7, 0x5e,
|
||||
0x06, 0x0c, 0x51, 0x7c, 0x9b, 0xd3, 0xd3, 0x69, 0xd8, 0xe6, 0x84, 0xc0, 0x7f, 0x01, 0x77, 0x93,
|
||||
0x56, 0x44, 0x6f, 0xa5, 0xb2, 0xe2, 0xdf, 0x4a, 0x65, 0x85, 0x9e, 0xfa, 0xe6, 0x2e, 0x7e, 0x4e,
|
||||
0x9b, 0xf3, 0xab, 0xb0, 0xdc, 0x9c, 0xcd, 0xed, 0x8b, 0xbd, 0x2f, 0x42, 0xbf, 0x58, 0x58, 0xfc,
|
||||
0x61, 0x04, 0x5a, 0x85, 0x7c, 0xaf, 0x3a, 0xe0, 0x32, 0xa8, 0x00, 0x4b, 0x83, 0x6a, 0x6f, 0xc4,
|
||||
0x65, 0xd1, 0x0a, 0xe4, 0x5a, 0x3d, 0x2e, 0xb7, 0xf7, 0x0a, 0xb6, 0x12, 0xab, 0x9c, 0x68, 0x0d,
|
||||
0x0a, 0x62, 0xf3, 0xdb, 0x51, 0xb3, 0x57, 0x6f, 0x72, 0x19, 0x82, 0x50, 0xed, 0x35, 0xd8, 0xb8,
|
||||
0x3e, 0x09, 0x1b, 0x04, 0xeb, 0xcd, 0xef, 0xaa, 0xf5, 0xa1, 0xe4, 0x33, 0xe5, 0xf7, 0x3e, 0x06,
|
||||
0x2e, 0x5e, 0xc4, 0x24, 0xfc, 0x23, 0x77, 0xe6, 0x46, 0xff, 0xb8, 0xc7, 0x65, 0x09, 0x54, 0xff,
|
||||
0xf0, 0x90, 0xcb, 0xed, 0x7d, 0x02, 0x10, 0x14, 0x2d, 0x49, 0xd4, 0x0a, 0x1d, 0xb1, 0xd3, 0x6b,
|
||||
0xb1, 0x7a, 0xdc, 0x61, 0xb5, 0xdb, 0x25, 0x0d, 0x5a, 0x8f, 0xab, 0xf5, 0x87, 0x6d, 0x2e, 0xb7,
|
||||
0xf7, 0x31, 0xac, 0x85, 0xab, 0x61, 0x04, 0xa9, 0xdb, 0x3f, 0x66, 0xe0, 0xed, 0x4e, 0xab, 0xcd,
|
||||
0x65, 0x09, 0xca, 0xb0, 0xdf, 0x6a, 0x75, 0x9b, 0x5c, 0x6e, 0xaf, 0x01, 0x1b, 0xb1, 0x1a, 0x0f,
|
||||
0x01, 0x1e, 0xf5, 0x5e, 0xf7, 0x88, 0x20, 0x19, 0x22, 0x5a, 0x75, 0xc0, 0x04, 0x12, 0x87, 0x55,
|
||||
0x2e, 0x87, 0xee, 0xc0, 0x86, 0x38, 0xac, 0x4a, 0x87, 0xd5, 0x4e, 0xb7, 0xff, 0xa6, 0x29, 0x48,
|
||||
0xd5, 0x01, 0x97, 0xdf, 0x6b, 0x40, 0x39, 0x52, 0xea, 0x40, 0x5b, 0xb0, 0x49, 0xb8, 0x7a, 0xfd,
|
||||
0xa1, 0x54, 0xef, 0xf7, 0x7a, 0xcd, 0xfa, 0xb0, 0xd9, 0xe0, 0x32, 0xa8, 0x08, 0xcb, 0xd5, 0x81,
|
||||
0x34, 0x22, 0x80, 0x9b, 0x50, 0x26, 0x1c, 0x41, 0x6f, 0x6e, 0xef, 0x7d, 0x56, 0xf0, 0xf2, 0x2a,
|
||||
0x46, 0x44, 0xbb, 0xc7, 0x83, 0xea, 0x81, 0x34, 0x10, 0x5f, 0x33, 0xf9, 0xfb, 0x83, 0x66, 0x8f,
|
||||
0xcb, 0xee, 0xfd, 0x3f, 0xe0, 0xe2, 0x97, 0x38, 0x22, 0xdf, 0xf0, 0x88, 0xe8, 0x90, 0x83, 0xb5,
|
||||
0x5a, 0x55, 0x6c, 0x4b, 0x62, 0x5d, 0xe8, 0x0c, 0x86, 0x22, 0xcb, 0x66, 0xe4, 0xa8, 0xe5, 0x11,
|
||||
0x72, 0x07, 0xff, 0xf1, 0x19, 0xac, 0x0c, 0x5e, 0x1c, 0xf7, 0x06, 0x9f, 0xa2, 0x13, 0x78, 0xda,
|
||||
0xc2, 0xf6, 0x15, 0x3f, 0x2e, 0x40, 0xd1, 0x3d, 0x83, 0x38, 0xd3, 0xee, 0x4d, 0x7e, 0x8e, 0xc4,
|
||||
0x67, 0xd0, 0x5f, 0xb2, 0xf0, 0x8c, 0x6d, 0x8c, 0x57, 0xcc, 0x75, 0x13, 0xdc, 0x9b, 0x0a, 0xf1,
|
||||
0x06, 0xee, 0x85, 0x17, 0x1b, 0xfd, 0x7d, 0x53, 0xd2, 0x22, 0xaf, 0xf3, 0xb3, 0x29, 0x3e, 0x83,
|
||||
0xbe, 0x87, 0x07, 0xb1, 0xb5, 0x45, 0xa1, 0xaf, 0x03, 0x73, 0xdd, 0xb9, 0xbe, 0x83, 0x5d, 0x31,
|
||||
0xb4, 0x86, 0xd8, 0xcf, 0xae, 0x9e, 0x5d, 0xe7, 0x67, 0x50, 0xbb, 0x09, 0x4b, 0xe5, 0x33, 0xe8,
|
||||
0xf7, 0xb0, 0x13, 0x5b, 0x45, 0xb0, 0xb1, 0x5d, 0xfe, 0x3b, 0xb6, 0xdd, 0x2b, 0xfa, 0xf9, 0x0c,
|
||||
0xfa, 0x03, 0x6c, 0x93, 0xa3, 0x18, 0x5e, 0xc4, 0xfe, 0x28, 0x79, 0x6c, 0xf2, 0x39, 0x2e, 0x45,
|
||||
0xf4, 0xdf, 0xc1, 0x6e, 0x0b, 0xdb, 0x74, 0x02, 0x75, 0x71, 0x86, 0x68, 0x49, 0x32, 0x52, 0xb1,
|
||||
0xbb, 0x86, 0xe4, 0x7f, 0x84, 0x87, 0xee, 0x33, 0xc2, 0x4f, 0x02, 0xff, 0x2d, 0x81, 0x9f, 0x62,
|
||||
0xf6, 0x53, 0xc7, 0x9b, 0xc2, 0x27, 0x6b, 0x43, 0x80, 0x47, 0x14, 0xcc, 0x3b, 0x88, 0xfe, 0x18,
|
||||
0x98, 0x43, 0xb8, 0xdf, 0xd5, 0xac, 0x54, 0x15, 0x27, 0x05, 0xcf, 0xe3, 0xf4, 0x49, 0x58, 0x31,
|
||||
0x34, 0x83, 0x8e, 0xa0, 0xd2, 0xc2, 0xb6, 0x27, 0x67, 0xe4, 0x0a, 0x90, 0x08, 0x79, 0xd9, 0x8d,
|
||||
0x9c, 0xcf, 0xa0, 0x36, 0xdc, 0x61, 0x58, 0xef, 0x8c, 0x74, 0x08, 0x9b, 0x2d, 0x6c, 0xc7, 0x6e,
|
||||
0xf5, 0xb7, 0xc0, 0xe9, 0xc3, 0xa6, 0xb8, 0x80, 0x73, 0xd9, 0x98, 0xab, 0x00, 0x7f, 0x03, 0xeb,
|
||||
0x2d, 0x6c, 0x87, 0x2b, 0x23, 0x49, 0x52, 0x55, 0x22, 0xb4, 0x10, 0x37, 0x43, 0x10, 0xa3, 0x08,
|
||||
0xa9, 0xdc, 0x29, 0xbe, 0xd0, 0x80, 0xb5, 0x23, 0xc3, 0xd1, 0xed, 0xd1, 0x91, 0x48, 0x8f, 0xa3,
|
||||
0x57, 0xdc, 0x62, 0x53, 0x50, 0x06, 0xc0, 0x51, 0x6f, 0x1a, 0x89, 0xb5, 0xe0, 0xc7, 0x5a, 0x11,
|
||||
0xce, 0xd4, 0x7a, 0x4e, 0x0a, 0xe2, 0xb7, 0x70, 0xd7, 0xcf, 0x02, 0x61, 0xd4, 0xcb, 0xbc, 0xfd,
|
||||
0x0a, 0x75, 0x0f, 0xbd, 0x9c, 0xf8, 0xa3, 0xa2, 0xbe, 0x26, 0xa8, 0x41, 0xcc, 0x5f, 0x17, 0x35,
|
||||
0x79, 0xd5, 0x5d, 0xa8, 0x44, 0xa2, 0xfd, 0xdd, 0xd0, 0x7a, 0xb0, 0x15, 0xc4, 0x79, 0x18, 0xea,
|
||||
0xd6, 0x11, 0xbe, 0xc6, 0xca, 0x93, 0xee, 0xb5, 0xe1, 0x61, 0x72, 0xd9, 0xd0, 0xb5, 0xf3, 0xee,
|
||||
0x83, 0xb4, 0x6e, 0xcb, 0x99, 0xda, 0x14, 0x6e, 0x23, 0x0c, 0xf7, 0xca, 0x18, 0x5f, 0x85, 0x98,
|
||||
0x5e, 0xa7, 0xa4, 0x99, 0x72, 0xab, 0xdd, 0x69, 0x10, 0xa7, 0xf1, 0x8b, 0x97, 0xac, 0xd4, 0x99,
|
||||
0x3e, 0xea, 0x4a, 0x11, 0x9b, 0x80, 0xda, 0x9d, 0x46, 0x5d, 0xd6, 0x15, 0x3c, 0x0d, 0xa4, 0xbc,
|
||||
0x04, 0x30, 0xcd, 0x10, 0x3b, 0x4c, 0x34, 0xb7, 0xb4, 0xeb, 0xf3, 0x27, 0x9b, 0xe2, 0x61, 0x2a,
|
||||
0x3e, 0x31, 0x27, 0x9f, 0x41, 0x35, 0xd8, 0xf6, 0xc5, 0xaa, 0x4e, 0xa7, 0x57, 0xc0, 0xa5, 0x9d,
|
||||
0x10, 0xb6, 0x22, 0x32, 0x79, 0xe5, 0xe6, 0xcb, 0x56, 0xf7, 0x5e, 0xbc, 0x2b, 0xb1, 0x54, 0x4d,
|
||||
0x05, 0x2c, 0x1d, 0x8a, 0xfe, 0x53, 0x46, 0xcc, 0xac, 0xf1, 0x27, 0x8e, 0x14, 0x01, 0x5f, 0x03,
|
||||
0x1c, 0x8a, 0xde, 0xab, 0x0a, 0x8a, 0x5a, 0x2a, 0xf6, 0xf4, 0x13, 0xd3, 0x58, 0xfc, 0x29, 0x86,
|
||||
0x5a, 0xa0, 0x7c, 0x28, 0xb6, 0xb0, 0xed, 0x3d, 0x40, 0xc4, 0xf0, 0x62, 0xcf, 0x17, 0x31, 0xbc,
|
||||
0xf8, 0xab, 0x05, 0x9f, 0x41, 0x7f, 0x82, 0xad, 0x43, 0xb1, 0x6e, 0x62, 0xd9, 0xc6, 0x91, 0x07,
|
||||
0x2c, 0x14, 0xfb, 0xa5, 0x5d, 0xc2, 0xf3, 0xd9, 0x2e, 0x7f, 0x19, 0x8b, 0x3f, 0xc3, 0x6f, 0xa0,
|
||||
0x44, 0x9f, 0xe4, 0xba, 0xb4, 0x9a, 0x10, 0xb3, 0x4a, 0xf8, 0xdd, 0x31, 0xae, 0x3e, 0xd2, 0xc5,
|
||||
0x67, 0x7e, 0x91, 0x45, 0x2d, 0x28, 0x35, 0x95, 0x53, 0xff, 0x49, 0xe6, 0xb2, 0xfc, 0x71, 0x49,
|
||||
0x1f, 0x9f, 0x41, 0x1d, 0x40, 0x2c, 0x21, 0x45, 0x5e, 0xf0, 0xd3, 0xdf, 0x6c, 0x77, 0xb7, 0x93,
|
||||
0xdf, 0x8d, 0xf9, 0x0c, 0xfa, 0x0a, 0xd6, 0x5a, 0xd8, 0x0e, 0xde, 0x9b, 0x93, 0xfc, 0x35, 0x7d,
|
||||
0xf4, 0x21, 0x6c, 0x33, 0x75, 0xf8, 0xc4, 0xfa, 0x29, 0xab, 0x45, 0xdc, 0x0c, 0x47, 0x80, 0x4d,
|
||||
0x9a, 0x14, 0x8f, 0xb5, 0x93, 0x60, 0x3d, 0x3f, 0x8f, 0xb1, 0xa7, 0xfd, 0x4c, 0x22, 0x75, 0x0b,
|
||||
0xdc, 0xf2, 0x37, 0xac, 0x08, 0xee, 0x65, 0x7a, 0x4f, 0xd7, 0x21, 0x45, 0xac, 0x84, 0xf7, 0xab,
|
||||
0x6b, 0x83, 0xa6, 0xaf, 0xbb, 0x4b, 0x10, 0x83, 0xbd, 0xea, 0xda, 0x88, 0xc9, 0x2b, 0x3e, 0x82,
|
||||
0x7b, 0x91, 0xcd, 0xea, 0x1d, 0xe1, 0xfa, 0xcc, 0xb8, 0x09, 0xa2, 0xdd, 0x72, 0xbb, 0x92, 0xe0,
|
||||
0x31, 0x13, 0x2d, 0xbd, 0xc4, 0x7a, 0xcd, 0x72, 0x6d, 0x8a, 0xc4, 0x06, 0xfc, 0xbc, 0x85, 0xed,
|
||||
0xea, 0x74, 0x7a, 0x75, 0x95, 0x38, 0x69, 0x09, 0xfb, 0xd1, 0x12, 0xd7, 0x55, 0x18, 0x7c, 0x06,
|
||||
0x4d, 0xe1, 0x59, 0xe8, 0x88, 0x9d, 0x3e, 0xdb, 0x65, 0xca, 0xbf, 0xe6, 0x92, 0xf9, 0x0c, 0x52,
|
||||
0xdc, 0xab, 0x47, 0xfa, 0x3c, 0xc9, 0xf5, 0xe7, 0x1b, 0x85, 0xcd, 0xf7, 0xc0, 0xfb, 0x61, 0xf3,
|
||||
0x53, 0x2f, 0xe8, 0xb7, 0xf0, 0x5e, 0x38, 0xa0, 0x6e, 0x37, 0x5d, 0xf2, 0x32, 0x28, 0x74, 0x10,
|
||||
0x59, 0x3f, 0x26, 0xf4, 0x1f, 0xe0, 0x67, 0x41, 0x5c, 0xdc, 0xcc, 0xc3, 0xae, 0x11, 0x24, 0x02,
|
||||
0xdc, 0x0f, 0xb9, 0xd4, 0xc2, 0x1f, 0x0a, 0x5c, 0x7d, 0x3c, 0x89, 0x0f, 0xa1, 0x81, 0xe7, 0xde,
|
||||
0xb2, 0xe3, 0x7d, 0x02, 0x9e, 0x4f, 0x65, 0x25, 0x7e, 0x1e, 0x88, 0x73, 0x5d, 0x3d, 0xc1, 0xef,
|
||||
0xe1, 0x5e, 0xf2, 0x04, 0x55, 0x55, 0x7d, 0x67, 0xf0, 0xff, 0xef, 0x15, 0x80, 0x16, 0xa5, 0x9f,
|
||||
0x19, 0x67, 0xef, 0x2e, 0x7c, 0xe4, 0xf6, 0x1d, 0xef, 0xbf, 0xb5, 0x1d, 0xbb, 0xb0, 0x45, 0x11,
|
||||
0x17, 0x2c, 0x78, 0x85, 0xb8, 0xc9, 0x3e, 0x37, 0x86, 0x9f, 0x85, 0x23, 0x25, 0xcd, 0x8e, 0x97,
|
||||
0x39, 0xf3, 0x35, 0xf4, 0xfc, 0xf8, 0xb2, 0x39, 0x88, 0x29, 0xdf, 0x09, 0x7f, 0x40, 0xec, 0x18,
|
||||
0x84, 0xe4, 0x82, 0x62, 0x6e, 0x1e, 0x89, 0xdf, 0xc2, 0xce, 0xb1, 0xac, 0xd9, 0x49, 0x3f, 0x6d,
|
||||
0xbe, 0xf2, 0x8f, 0x05, 0x52, 0x20, 0x3b, 0x70, 0xe7, 0x50, 0x33, 0xf1, 0xc2, 0x6f, 0x3b, 0x2f,
|
||||
0xfb, 0x5d, 0x79, 0x2a, 0xd4, 0x5d, 0xa6, 0xcf, 0xd8, 0x5f, 0x26, 0x5f, 0xf6, 0x87, 0xb3, 0x29,
|
||||
0x50, 0x6f, 0xe0, 0x0e, 0x55, 0x5a, 0x0c, 0xe9, 0x83, 0xd8, 0x29, 0x3b, 0xfd, 0x6f, 0x7c, 0x53,
|
||||
0x0b, 0x4f, 0x3b, 0x7e, 0xb2, 0x8f, 0x61, 0x5f, 0xff, 0x06, 0x1e, 0x1d, 0xc8, 0x67, 0xd0, 0x31,
|
||||
0xec, 0x86, 0x1d, 0xe9, 0xc7, 0x03, 0xee, 0x11, 0xe0, 0xc0, 0x83, 0x6e, 0x00, 0x9c, 0xe6, 0x3f,
|
||||
0x95, 0x20, 0xf2, 0x63, 0x68, 0xb7, 0x0c, 0xfb, 0xaf, 0xa0, 0xd0, 0xa8, 0xd5, 0x64, 0xe5, 0xad,
|
||||
0x33, 0xbf, 0x85, 0x40, 0x5f, 0x43, 0xb1, 0x51, 0x13, 0xb0, 0x45, 0x04, 0xba, 0xd5, 0x01, 0xf0,
|
||||
0x6e, 0xb0, 0x1e, 0xff, 0xa2, 0x78, 0xeb, 0x14, 0x16, 0x29, 0x57, 0x04, 0xbf, 0x5b, 0x7f, 0x87,
|
||||
0x94, 0x78, 0x27, 0xc0, 0xf3, 0xb4, 0x74, 0x6b, 0xb4, 0x57, 0xb4, 0x8a, 0xe8, 0xff, 0x35, 0x60,
|
||||
0x6b, 0xae, 0x19, 0xb7, 0xc5, 0x1a, 0xaf, 0xd0, 0xff, 0x29, 0xf0, 0xd9, 0xff, 0x05, 0x00, 0x00,
|
||||
0xff, 0xff, 0x64, 0x81, 0xd3, 0x75, 0x61, 0x40, 0x00, 0x00,
|
||||
}
|
||||
|
@ -117,6 +117,9 @@ service P4WNP1 {
|
||||
rpc ListStoredHIDScripts(Empty) returns (StringMessageArray) {}
|
||||
rpc ListStoredBashScripts(Empty) returns (StringMessageArray) {}
|
||||
rpc ListStoredDBBackups(Empty) returns (StringMessageArray) {}
|
||||
|
||||
/* GPIO */
|
||||
rpc GetAvailableGpios(Empty) returns (StringMessageArray) {}
|
||||
}
|
||||
|
||||
/* MasterTemplates */
|
||||
@ -271,40 +274,8 @@ enum GPIOInEdge {
|
||||
FALLING = 1;
|
||||
BOTH = 2;
|
||||
}
|
||||
enum GPIONum {
|
||||
NUM_1 = 0;
|
||||
NUM_2 = 1;
|
||||
NUM_3 = 2;
|
||||
NUM_4 = 3;
|
||||
NUM_5 = 4;
|
||||
NUM_6 = 5;
|
||||
NUM_7 = 6;
|
||||
NUM_8 = 7;
|
||||
NUM_9 = 8;
|
||||
NUM_10 = 9;
|
||||
NUM_11 = 10;
|
||||
NUM_12 = 11;
|
||||
NUM_13 = 12;
|
||||
NUM_14 = 13;
|
||||
NUM_15 = 14;
|
||||
NUM_16 = 15;
|
||||
NUM_17 = 16;
|
||||
NUM_18 = 17;
|
||||
NUM_19 = 18;
|
||||
NUM_20 = 19;
|
||||
NUM_21 = 20;
|
||||
NUM_22 = 21;
|
||||
NUM_23 = 22;
|
||||
NUM_24 = 23;
|
||||
NUM_25 = 24;
|
||||
NUM_26 = 25;
|
||||
NUM_27 = 26;
|
||||
NUM_28 = 27;
|
||||
NUM_29 = 28;
|
||||
NUM_30 = 29;
|
||||
}
|
||||
message TriggerGPIOIn {
|
||||
GPIONum gpioNum = 1;
|
||||
string gpio_name = 1;
|
||||
GPIOInPullUpDown pullUpDown = 2;
|
||||
GPIOInEdge gpioInEdge = 3;
|
||||
}
|
||||
@ -337,7 +308,7 @@ enum GPIOOutValue {
|
||||
}
|
||||
|
||||
message ActionGPIOOut {
|
||||
GPIONum gpioNum = 1;
|
||||
string gpio_name = 1;
|
||||
GPIOOutValue value = 2;
|
||||
}
|
||||
message ActionGroupSend {
|
||||
|
@ -254,6 +254,39 @@ func ConstructEventTriggerGroupReceive(groupName string, value int32) *pb.Event
|
||||
}
|
||||
}
|
||||
|
||||
func ConstructEventTriggerGpioIn(gpioName string, level bool) *pb.Event {
|
||||
return &pb.Event{
|
||||
Type: common_web.EVT_TRIGGER,
|
||||
Values: []*pb.EventValue{
|
||||
{Val: &pb.EventValue_Tint64{Tint64: int64(common_web.TRIGGER_EVT_TYPE_GPIO_IN)}},
|
||||
{Val: &pb.EventValue_Tstring{Tstring: gpioName}},
|
||||
{Val: &pb.EventValue_Tbool{Tbool: level}},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func DeconstructEventTriggerGpioIn(evt *pb.Event) (gpioName string, level bool, err error) {
|
||||
e := errors.New("Malformed GpioEvent")
|
||||
if evt.Type != common_web.EVT_TRIGGER {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
if evTypeInt64,match := evt.Values[0].Val.(*pb.EventValue_Tint64); !match {
|
||||
err = e
|
||||
return
|
||||
} else {
|
||||
evType := common_web.EvtTriggerType(evTypeInt64.Tint64)
|
||||
if evType != common_web.TRIGGER_EVT_TYPE_GPIO_IN {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
gpioName = evt.Values[1].GetTstring()
|
||||
level = evt.Values[2].GetTbool()
|
||||
return
|
||||
}
|
||||
|
||||
func DeconstructEventTriggerGroupReceive(evt *pb.Event) (groupName string, value int32, err error) {
|
||||
e := errors.New("Malformed GroupReceiveEvent")
|
||||
if evt.Type != common_web.EVT_TRIGGER {
|
||||
|
@ -1,86 +1,216 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"periph.io/x/periph"
|
||||
"periph.io/x/periph/conn/gpio"
|
||||
"periph.io/x/periph/conn/gpio/gpioreg"
|
||||
"periph.io/x/periph/conn/pin/pinreg"
|
||||
"periph.io/x/periph/host"
|
||||
"periph.io/x/periph/host/rpi"
|
||||
"sync"
|
||||
|
||||
pb "github.com/mame82/P4wnP1_go/proto"
|
||||
)
|
||||
|
||||
type GpioPinState byte
|
||||
const (
|
||||
GPIO_PIN_STATE_DISABLED GpioPinState = iota
|
||||
GPIO_PIN_STATE_INPUT
|
||||
GPIO_PIN_STATE_OUTPUT
|
||||
//GPIO_PIN_STATE_PWM
|
||||
//GPIO_PIN_STATE_CLOCK
|
||||
/*
|
||||
ToDo: Entprellen + StopAllEdgeDetecting (when new TriggerActionSet is deployed)
|
||||
ToDo: If a single item of the trigger action set changes, all GPIOTriggers have to be re-enumearted, to assure that there's no edge detection running for a trigger which doesn't exist anymore
|
||||
*/
|
||||
|
||||
var (
|
||||
EGpioNotAvailable = errors.New("sub system GPIO not available")
|
||||
EGpioPinInvalid = errors.New("invalid GPIO pin")
|
||||
)
|
||||
|
||||
type GpioPin struct {
|
||||
*sync.Mutex
|
||||
Number pb.GPIONum
|
||||
InUse bool
|
||||
State GpioPinState
|
||||
EdgeDetectState pb.GPIOInEdge
|
||||
PullUpDown pb.GPIOInPullUpDown
|
||||
type GpioManager struct {
|
||||
availableGpioPins []gpio.PinIO
|
||||
availableGpioNames []string
|
||||
|
||||
rootSvc *Service
|
||||
|
||||
edgeDetectingMutex *sync.Mutex
|
||||
edgeDetecting map[gpio.PinIO]bool
|
||||
|
||||
IsUsable bool
|
||||
|
||||
*periph.State
|
||||
}
|
||||
|
||||
var PI_GPIO_NUMS = []pb.GPIONum{
|
||||
pb.GPIONum_NUM_2, //SDA1
|
||||
pb.GPIONum_NUM_3, //SCL1
|
||||
pb.GPIONum_NUM_4,
|
||||
pb.GPIONum_NUM_5,
|
||||
pb.GPIONum_NUM_6,
|
||||
pb.GPIONum_NUM_7, //CE1
|
||||
pb.GPIONum_NUM_8, //CE0
|
||||
pb.GPIONum_NUM_9, //MISO
|
||||
pb.GPIONum_NUM_10, //MOSI
|
||||
pb.GPIONum_NUM_11, //SCLK
|
||||
pb.GPIONum_NUM_12,
|
||||
pb.GPIONum_NUM_13,
|
||||
pb.GPIONum_NUM_14, //TXD0
|
||||
pb.GPIONum_NUM_15, //RXD0
|
||||
pb.GPIONum_NUM_16,
|
||||
pb.GPIONum_NUM_17,
|
||||
pb.GPIONum_NUM_18,
|
||||
pb.GPIONum_NUM_19,
|
||||
pb.GPIONum_NUM_20,
|
||||
pb.GPIONum_NUM_21,
|
||||
pb.GPIONum_NUM_22,
|
||||
pb.GPIONum_NUM_23,
|
||||
pb.GPIONum_NUM_24,
|
||||
pb.GPIONum_NUM_25,
|
||||
pb.GPIONum_NUM_26,
|
||||
pb.GPIONum_NUM_27,
|
||||
func (gm *GpioManager) Start() {
|
||||
|
||||
}
|
||||
/*
|
||||
var PI_GPIO_NUMS = []pb.GPIONum{
|
||||
pb.GPIONum_NUM_2, //SDA1
|
||||
pb.GPIONum_NUM_3, //SCL1
|
||||
pb.GPIONum_NUM_4,
|
||||
pb.GPIONum_NUM_17,
|
||||
pb.GPIONum_NUM_27,
|
||||
pb.GPIONum_NUM_22,
|
||||
pb.GPIONum_NUM_10, //MOSI
|
||||
pb.GPIONum_NUM_9, //MISO
|
||||
pb.GPIONum_NUM_11, //SCLK
|
||||
pb.GPIONum_NUM_5,
|
||||
pb.GPIONum_NUM_6,
|
||||
pb.GPIONum_NUM_13,
|
||||
pb.GPIONum_NUM_19,
|
||||
pb.GPIONum_NUM_26,
|
||||
pb.GPIONum_NUM_14, //TXD0
|
||||
pb.GPIONum_NUM_15, //RXD0
|
||||
pb.GPIONum_NUM_18,
|
||||
pb.GPIONum_NUM_23,
|
||||
pb.GPIONum_NUM_24,
|
||||
pb.GPIONum_NUM_25,
|
||||
pb.GPIONum_NUM_8, //CE0
|
||||
pb.GPIONum_NUM_7, //CE1
|
||||
pb.GPIONum_NUM_12,
|
||||
pb.GPIONum_NUM_16,
|
||||
pb.GPIONum_NUM_20,
|
||||
pb.GPIONum_NUM_21,
|
||||
|
||||
func (gm *GpioManager) Stop() {
|
||||
}
|
||||
*/
|
||||
type GpioManager struct {
|
||||
availableGpioPins []byte
|
||||
|
||||
|
||||
func NewGpioManager(rootSvc *Service) (res *GpioManager) {
|
||||
gm := &GpioManager{
|
||||
rootSvc: rootSvc,
|
||||
}
|
||||
state,err := host.Init()
|
||||
if err != nil {
|
||||
gm.IsUsable = false
|
||||
return
|
||||
}
|
||||
|
||||
gm.State = state
|
||||
gm.IsUsable = rpi.Present()
|
||||
|
||||
gpios := gpioreg.All()
|
||||
for _,g := range gpios {
|
||||
if pinreg.IsConnected(g) {
|
||||
gm.availableGpioPins = append(gm.availableGpioPins,g)
|
||||
gm.availableGpioNames = append(gm.availableGpioNames, g.Name())
|
||||
}
|
||||
}
|
||||
|
||||
gm.edgeDetecting = make(map[gpio.PinIO]bool)
|
||||
gm.edgeDetectingMutex = &sync.Mutex{}
|
||||
|
||||
return gm
|
||||
}
|
||||
|
||||
func (gm GpioManager) GetAvailableGpios() (res []gpio.PinIO, err error) {
|
||||
if gm.IsUsable {
|
||||
return gm.availableGpioPins,nil
|
||||
}
|
||||
return res,EGpioNotAvailable
|
||||
}
|
||||
|
||||
func (gm GpioManager) GetAvailableGpioNames() (res []string, err error) {
|
||||
if gm.IsUsable {
|
||||
return gm.availableGpioNames,nil
|
||||
}
|
||||
return res,EGpioNotAvailable
|
||||
}
|
||||
|
||||
func (gm *GpioManager) DeployGpioTrigger(in *pb.TriggerGPIOIn) (err error) {
|
||||
if !gm.IsUsable {
|
||||
return EGpioNotAvailable
|
||||
}
|
||||
|
||||
p := gpioreg.ByName(in.GpioName)
|
||||
if p == nil {
|
||||
return EGpioPinInvalid
|
||||
}
|
||||
|
||||
pull := gpio.Float
|
||||
switch in.PullUpDown {
|
||||
case pb.GPIOInPullUpDown_DOWN:
|
||||
pull = gpio.PullDown
|
||||
case pb.GPIOInPullUpDown_UP:
|
||||
pull = gpio.PullUp
|
||||
}
|
||||
|
||||
edge := gpio.BothEdges
|
||||
switch in.GpioInEdge {
|
||||
case pb.GPIOInEdge_FALLING:
|
||||
edge = gpio.FallingEdge
|
||||
case pb.GPIOInEdge_RISING:
|
||||
edge = gpio.RisingEdge
|
||||
}
|
||||
|
||||
// If edge detection is already running, stop it
|
||||
if gm.isEdgeDetecting(p) {
|
||||
gm.stopEdgeDetectionForPin(p)
|
||||
}
|
||||
|
||||
p.In(pull,edge)
|
||||
|
||||
gm.edgeDetectingMutex.Lock()
|
||||
gm.edgeDetecting[p] = true
|
||||
gm.edgeDetectingMutex.Unlock()
|
||||
|
||||
go func() {
|
||||
for gm.isEdgeDetecting(p) {
|
||||
p.WaitForEdge(-1)
|
||||
|
||||
//Edge detected, check if still edge detecting before consuming
|
||||
if gm.isEdgeDetecting(p) {
|
||||
switch p.Read() {
|
||||
case gpio.High:
|
||||
fmt.Println("Gpio " + p.Name() + " changed to high")
|
||||
gm.rootSvc.SubSysEvent.Emit(ConstructEventTriggerGpioIn(p.Name(), bool(gpio.High)))
|
||||
case gpio.Low:
|
||||
fmt.Println("Gpio " + p.Name() + " changed to low")
|
||||
gm.rootSvc.SubSysEvent.Emit(ConstructEventTriggerGpioIn(p.Name(), bool(gpio.Low)))
|
||||
}
|
||||
|
||||
} else {
|
||||
//exit for loop
|
||||
break
|
||||
}
|
||||
}
|
||||
gm.edgeDetectingMutex.Lock()
|
||||
delete(gm.edgeDetecting, p)
|
||||
gm.edgeDetectingMutex.Unlock()
|
||||
}()
|
||||
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gm *GpioManager) FireGpioAction(out *pb.ActionGPIOOut) (err error) {
|
||||
if !gm.IsUsable {
|
||||
return EGpioNotAvailable
|
||||
}
|
||||
|
||||
p := gpioreg.ByName(out.GpioName)
|
||||
if p == nil {
|
||||
return EGpioPinInvalid
|
||||
}
|
||||
|
||||
// If edge detection is already running, stop it
|
||||
if gm.isEdgeDetecting(p) {
|
||||
gm.stopEdgeDetectionForPin(p)
|
||||
}
|
||||
|
||||
|
||||
level := gpio.Low
|
||||
switch out.Value {
|
||||
case pb.GPIOOutValue_HIGH:
|
||||
level = gpio.High
|
||||
case pb.GPIOOutValue_TOGGLE:
|
||||
if p.Read() == gpio.Low {
|
||||
level = gpio.High
|
||||
}
|
||||
}
|
||||
|
||||
p.Out(level)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
|
||||
func (gm *GpioManager) isEdgeDetecting(p gpio.PinIO) bool {
|
||||
fmt.Println("Check edge detection for " + p.Name())
|
||||
gm.edgeDetectingMutex.Lock()
|
||||
defer gm.edgeDetectingMutex.Unlock()
|
||||
if _,exists := gm.edgeDetecting[p]; exists && gm.edgeDetecting[p] {
|
||||
fmt.Println("Edge detection for " + p.Name() + " running")
|
||||
return true
|
||||
}
|
||||
fmt.Println("Edge detection for " + p.Name() + " not running")
|
||||
return false
|
||||
}
|
||||
|
||||
func (gm *GpioManager) stopEdgeDetectionForPin(p gpio.PinIO) {
|
||||
gm.edgeDetectingMutex.Lock()
|
||||
if _,exists := gm.edgeDetecting[p]; exists {
|
||||
gm.edgeDetecting[p] = false
|
||||
}
|
||||
gm.edgeDetectingMutex.Unlock()
|
||||
|
||||
//write high/low till gpio is deleted from map, to assure pending edge detection ended
|
||||
for gm.isEdgeDetecting(p) {
|
||||
p.Out(gpio.High)
|
||||
if gm.isEdgeDetecting(p) {
|
||||
p.Out(gpio.Low)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -252,8 +252,18 @@ func (tam *TriggerActionManager) onUsbGadgetDisconnected(evt *pb.Event, ta *pb.T
|
||||
}
|
||||
|
||||
func (tam *TriggerActionManager) onGpioIn(evt *pb.Event, ta *pb.TriggerAction, tt triggerType, at actionType) error {
|
||||
//ToDo: only trigger if PIN matches, important: Enum values have to be parsed for matching (0 != PIN0)
|
||||
evtGpioName, evtGpioLevel,err := DeconstructEventTriggerGpioIn(evt)
|
||||
if err != nil { return err }
|
||||
|
||||
taGpioName := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioName
|
||||
|
||||
if taGpioName != evtGpioName {
|
||||
return nil // ignore
|
||||
}
|
||||
|
||||
tam.executeAction(evt, ta, tt, at)
|
||||
fmt.Printf("Gpio in trigger '%s' new state: %v\n", evtGpioName, evtGpioLevel)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -380,10 +390,10 @@ func (tam *TriggerActionManager) executeActionGPIOOut(evt *pb.Event, ta *pb.Trig
|
||||
triggerName := triggerTypeString[tt]
|
||||
actionName := actionTypeString[at]
|
||||
|
||||
gpioNumName := pb.GPIONum_name[int32(action.GpioNum)]
|
||||
gpioNumName := action.GpioName
|
||||
fmt.Printf("Trigger '%s' fired -> executing action '%s' ('%s')\n", triggerName, actionName, gpioNumName)
|
||||
|
||||
// ToDo: Implement
|
||||
tam.rootSvc.SubSysGpio.FireGpioAction(action)
|
||||
}
|
||||
|
||||
func (tam *TriggerActionManager) executeActionGroupSend(evt *pb.Event, ta *pb.TriggerAction, tt triggerType, at actionType, action *pb.ActionGroupSend) {
|
||||
@ -408,9 +418,14 @@ func (tam *TriggerActionManager) executeActionStartHidScript(evt *pb.Event, ta *
|
||||
|
||||
switch tt {
|
||||
case triggerTypeGpioIn:
|
||||
gpioPin := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioNum
|
||||
gpioPinName := pb.GPIONum_name[int32(gpioPin)]
|
||||
gpioPinName := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioName
|
||||
preScript += fmt.Sprintf("var GPIO_PIN='%s';\n", gpioPinName)
|
||||
_,level,_ := DeconstructEventTriggerGpioIn(evt)
|
||||
if level {
|
||||
preScript += fmt.Sprintf("var GPIO_LEVEL=true;\n")
|
||||
} else {
|
||||
preScript += fmt.Sprintf("var GPIO_LEVEL=false;\n")
|
||||
}
|
||||
case triggerTypeGroupReceiveMulti:
|
||||
groupName := ta.Trigger.(*pb.TriggerAction_GroupReceiveMulti).GroupReceiveMulti.GroupName
|
||||
values := ta.Trigger.(*pb.TriggerAction_GroupReceiveMulti).GroupReceiveMulti.Values
|
||||
@ -479,9 +494,14 @@ func (tam *TriggerActionManager) executeActionBashScript(evt *pb.Event, ta *pb.T
|
||||
|
||||
switch tt {
|
||||
case triggerTypeGpioIn:
|
||||
gpioPin := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioNum
|
||||
gpioPinName := pb.GPIONum_name[int32(gpioPin)]
|
||||
gpioPinName := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioName
|
||||
env = append(env, fmt.Sprintf("GPIO_PIN=%s", gpioPinName))
|
||||
_,level,_ := DeconstructEventTriggerGpioIn(evt)
|
||||
if level {
|
||||
env = append(env, fmt.Sprintf("GPIO_LEVEL='HIGH'"))
|
||||
} else {
|
||||
env = append(env, fmt.Sprintf("GPIO_LEVEL='LOW'"))
|
||||
}
|
||||
case triggerTypeGroupReceiveMulti:
|
||||
groupName := ta.Trigger.(*pb.TriggerAction_GroupReceiveMulti).GroupReceiveMulti.GroupName
|
||||
values := ta.Trigger.(*pb.TriggerAction_GroupReceiveMulti).GroupReceiveMulti.Values
|
||||
@ -533,9 +553,9 @@ func (tam *TriggerActionManager) executeActionLog(evt *pb.Event, ta *pb.TriggerA
|
||||
|
||||
switch tt {
|
||||
case triggerTypeGpioIn:
|
||||
gpioPin := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioNum
|
||||
gpioPinName := pb.GPIONum_name[int32(gpioPin)]
|
||||
logMessage += fmt.Sprintf(" (GPIO_PIN=%s)", gpioPinName)
|
||||
gpioPinName := ta.Trigger.(*pb.TriggerAction_GpioIn).GpioIn.GpioName
|
||||
_,level,_ := DeconstructEventTriggerGpioIn(evt)
|
||||
logMessage += fmt.Sprintf(" (GPIO_PIN=%s GPIO_HIGH=%v)", gpioPinName, level)
|
||||
case triggerTypeGroupReceiveMulti:
|
||||
groupName := ta.Trigger.(*pb.TriggerAction_GroupReceiveMulti).GroupReceiveMulti.GroupName
|
||||
values := ta.Trigger.(*pb.TriggerAction_GroupReceiveMulti).GroupReceiveMulti.Values
|
||||
@ -636,6 +656,11 @@ func (tam *TriggerActionManager) AddTriggerAction(ta *pb.TriggerAction) (taAdded
|
||||
tam.groupReceiveSequenceCheckersMutex.Unlock()
|
||||
}
|
||||
|
||||
//if trigger is GpioIn, configure GPIO
|
||||
if triggerGpioIn,match := ta.Trigger.(*pb.TriggerAction_GpioIn); match {
|
||||
tam.rootSvc.SubSysGpio.DeployGpioTrigger(triggerGpioIn.GpioIn)
|
||||
}
|
||||
|
||||
return taAdded,nil
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,12 @@ type server struct {
|
||||
listenAddrWeb string
|
||||
}
|
||||
|
||||
func (s *server) GetAvailableGpios(context.Context, *pb.Empty) (res *pb.StringMessageArray, err error) {
|
||||
res = &pb.StringMessageArray{}
|
||||
res.MsgArray,err = s.rootSvc.SubSysGpio.GetAvailableGpioNames()
|
||||
return
|
||||
}
|
||||
|
||||
func (s *server) DeployMasterTemplate(ctx context.Context, mt *pb.MasterTemplate) (e *pb.Empty, err error) {
|
||||
e = &pb.Empty{}
|
||||
|
||||
|
@ -121,6 +121,7 @@ type Service struct {
|
||||
SubSysBluetooth *BtService
|
||||
SubSysRPC *server
|
||||
SubSysTriggerActions *TriggerActionManager
|
||||
SubSysGpio *GpioManager
|
||||
|
||||
SubSysDwc2ConnectWatcher *Dwc2ConnectWatcher
|
||||
}
|
||||
@ -148,12 +149,16 @@ func NewService() (svc *Service, err error) {
|
||||
|
||||
svc.SubSysWifi = NewWifiService(svc) //Depends on NetworkSubSys
|
||||
|
||||
svc.SubSysTriggerActions = NewTriggerActionManager(svc) //Depends on EventManager, UsbGadgetManager (to trigger HID scripts)
|
||||
svc.SubSysGpio = NewGpioManager(svc) //Depends on event subsys
|
||||
|
||||
svc.SubSysTriggerActions = NewTriggerActionManager(svc) //Depends on EventManager, UsbGadgetManager (to trigger HID scripts) and GpioManager
|
||||
|
||||
svc.SubSysDwc2ConnectWatcher = NewDwc2ConnectWatcher(svc) // Depends on EventManager, should be started before USB gadget settings are deployed (to avoid missing initial state change)
|
||||
|
||||
svc.SubSysBluetooth = NewBtService(svc, time.Second * 120) //Depends on NetworkSubSys (try to bring up bluetooth for up to 120s in background)
|
||||
|
||||
|
||||
|
||||
svc.SubSysRPC = NewRpcServerService(svc) //Depends on all other
|
||||
return
|
||||
}
|
||||
@ -163,6 +168,7 @@ func (s *Service) Start() {
|
||||
|
||||
s.SubSysEvent.Start()
|
||||
s.SubSysDwc2ConnectWatcher.Start()
|
||||
s.SubSysGpio.Start()
|
||||
s.SubSysLed.Start()
|
||||
s.SubSysRPC.StartRpcServerAndWeb("0.0.0.0", "50051", "8000", PATH_WEBROOT) //start gRPC service
|
||||
log.Println("Starting TriggerAction event listener ...")
|
||||
@ -192,7 +198,7 @@ func (s *Service) Start() {
|
||||
func (s *Service) Stop() {
|
||||
s.SubSysTriggerActions.Stop()
|
||||
s.SubSysLed.Stop()
|
||||
|
||||
s.SubSysGpio.Stop()
|
||||
s.SubSysBluetooth.Stop()
|
||||
s.SubSysDwc2ConnectWatcher.Stop()
|
||||
s.SubSysEvent.Stop()
|
||||
|
@ -78,19 +78,20 @@ func generateSelectOptionsGPIOOutValue() *js.Object {
|
||||
return tts
|
||||
}
|
||||
|
||||
func generateSelectOptionsGPIONum() *js.Object {
|
||||
func generateSelectOptionsGPIONames(vm *hvue.VM) *js.Object {
|
||||
tts := js.Global.Get("Array").New()
|
||||
type option struct {
|
||||
*js.Object
|
||||
Label string `js:"label"`
|
||||
Value GPIONum `js:"value"`
|
||||
Value string `js:"value"`
|
||||
}
|
||||
|
||||
for _, value := range availableGPIONums {
|
||||
label := gpioNumNames[value]
|
||||
gpioNames := vm.Store.Get("state").Get("GpioNamesList")
|
||||
for i := 0; i < gpioNames.Length(); i++ {
|
||||
gpioName := gpioNames.Index(i).String()
|
||||
o := option{Object:O()}
|
||||
o.Value = value
|
||||
o.Label = label
|
||||
o.Value = gpioName
|
||||
o.Label = gpioName
|
||||
tts.Call("push", o)
|
||||
}
|
||||
return tts
|
||||
@ -283,7 +284,7 @@ func InitComponentsTriggerActions() {
|
||||
case ta.IsTriggerGPIOIn():
|
||||
t := jsTriggerGPIOIn{Object: ta.TriggerData}
|
||||
strTrigger += " ("
|
||||
strTrigger += gpioNumNames[t.GpioNum]
|
||||
strTrigger += t.GpioName
|
||||
strTrigger += ": " + gpioInEdgeNames[t.Edge]
|
||||
strTrigger += ", resistor: " + gpioInPullUpDownNames[t.PullUpDown]
|
||||
strTrigger += ")"
|
||||
@ -304,7 +305,7 @@ func InitComponentsTriggerActions() {
|
||||
case ta.IsActionGPIOOut():
|
||||
a := jsActionGPIOOut{Object: ta.ActionData}
|
||||
strAction += " ("
|
||||
strAction += gpioNumNames[a.GpioNum]
|
||||
strAction += a.GpioName
|
||||
strAction += ": " + gpioOutValueNames[a.Value]
|
||||
strAction += ")"
|
||||
case ta.IsActionBashScript():
|
||||
@ -392,8 +393,8 @@ func InitComponentsTriggerActions() {
|
||||
hvue.Computed("edge", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsGPIOInEdges()
|
||||
}),
|
||||
hvue.Computed("gpionum", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsGPIONum()
|
||||
hvue.Computed("gpioname", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsGPIONames(vm)
|
||||
}),
|
||||
hvue.ComputedWithGetSet(
|
||||
"triggerType",
|
||||
@ -554,8 +555,8 @@ func InitComponentsTriggerActions() {
|
||||
hvue.Computed("gpiooutvalues", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsGPIOOutValue()
|
||||
}),
|
||||
hvue.Computed("gpionum", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsGPIONum()
|
||||
hvue.Computed("gpioname", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsGPIONames(vm)
|
||||
}),
|
||||
hvue.Computed("templatetypes", func(vm *hvue.VM) interface{} {
|
||||
return generateSelectOptionsTemplateTypes()
|
||||
@ -742,7 +743,7 @@ const templateTrigger = `
|
||||
<q-item-tile label>GPIO Number</q-item-tile>
|
||||
<q-item-tile sublabel>The number of the GPIO to monitor</q-item-tile>
|
||||
<q-item-tile>
|
||||
<q-select v-model="ta.TriggerData.GpioNum" :options="gpionum" inverted :disable="!ta.IsActive"></q-select>
|
||||
<q-select v-model="ta.TriggerData.GpioName" :options="gpioname" inverted :disable="!ta.IsActive"></q-select>
|
||||
</q-item-tile>
|
||||
</q-item-main>
|
||||
</q-item>
|
||||
@ -810,7 +811,7 @@ const templateAction = `
|
||||
<q-item-tile label>GPIO Number</q-item-tile>
|
||||
<q-item-tile sublabel>The number of the GPIO to output on</q-item-tile>
|
||||
<q-item-tile>
|
||||
<q-select v-model="ta.ActionData.GpioNum" :options="gpionum" color="secondary" inverted :disable="!ta.IsActive"></q-select>
|
||||
<q-select v-model="ta.ActionData.GpioName" :options="gpioname" color="secondary" inverted :disable="!ta.IsActive"></q-select>
|
||||
</q-item-tile>
|
||||
</q-item-main>
|
||||
</q-item>
|
||||
|
@ -114,7 +114,7 @@ func (dst *jsTriggerAction) fromGo(src *pb.TriggerAction) {
|
||||
dst.ChangeActionType(ActionGPIOOut)
|
||||
dstAction := &jsActionGPIOOut{Object: dst.ActionData}
|
||||
dstAction.Value = GPIOOutValue(srcAction.GpioOut.Value)
|
||||
dstAction.GpioNum = GPIONum(srcAction.GpioOut.GpioNum)
|
||||
dstAction.GpioName = srcAction.GpioOut.GpioName
|
||||
case *pb.TriggerAction_GroupSend:
|
||||
dst.ChangeActionType(ActionGroupSend)
|
||||
dstAction := &jsActionGroupSend{Object: dst.ActionData}
|
||||
@ -146,7 +146,7 @@ func (dst *jsTriggerAction) fromGo(src *pb.TriggerAction) {
|
||||
case *pb.TriggerAction_GpioIn:
|
||||
dst.ChangeTriggerType(TriggerGPIOIn)
|
||||
dstTrigger := &jsTriggerGPIOIn{Object: dst.TriggerData}
|
||||
dstTrigger.GpioNum = GPIONum(srcTrigger.GpioIn.GpioNum)
|
||||
dstTrigger.GpioName = srcTrigger.GpioIn.GpioName
|
||||
dstTrigger.Edge = GPIOInEdge(srcTrigger.GpioIn.GpioInEdge)
|
||||
dstTrigger.PullUpDown = GPIOInPullUpDown(srcTrigger.GpioIn.PullUpDown)
|
||||
case *pb.TriggerAction_GroupReceive:
|
||||
@ -206,7 +206,7 @@ func (ta *jsTriggerAction) toGo() (res *pb.TriggerAction) {
|
||||
actionData := &jsActionGPIOOut{Object: ta.ActionData}
|
||||
res.Action = &pb.TriggerAction_GpioOut{
|
||||
GpioOut: &pb.ActionGPIOOut{
|
||||
GpioNum: pb.GPIONum(actionData.GpioNum),
|
||||
GpioName: actionData.GpioName,
|
||||
Value: pb.GPIOOutValue(actionData.Value),
|
||||
},
|
||||
}
|
||||
@ -261,7 +261,7 @@ func (ta *jsTriggerAction) toGo() (res *pb.TriggerAction) {
|
||||
triggerData := &jsTriggerGPIOIn{Object: ta.TriggerData}
|
||||
res.Trigger = &pb.TriggerAction_GpioIn{
|
||||
GpioIn: &pb.TriggerGPIOIn{
|
||||
GpioNum: pb.GPIONum(triggerData.GpioNum),
|
||||
GpioName: triggerData.GpioName,
|
||||
PullUpDown: pb.GPIOInPullUpDown(triggerData.PullUpDown),
|
||||
GpioInEdge: pb.GPIOInEdge(triggerData.Edge),
|
||||
},
|
||||
@ -314,7 +314,7 @@ func (ta *jsTriggerAction) ChangeActionType(newAt actionType) {
|
||||
data = d.Object
|
||||
case ActionGPIOOut:
|
||||
d := &jsActionGPIOOut{Object:O()}
|
||||
d.GpioNum = 1
|
||||
d.GpioName = ""
|
||||
d.Value = GPIOOutValueHigh
|
||||
data = d.Object
|
||||
case ActionGroupSend:
|
||||
@ -381,7 +381,7 @@ func (ta *jsTriggerAction) ChangeTriggerType(newTt triggerType) {
|
||||
case TriggerGPIOIn:
|
||||
d := &jsTriggerGPIOIn{Object:O()}
|
||||
d.Edge = GPIOInEdgeRising
|
||||
d.GpioNum = 2
|
||||
d.GpioName = ""
|
||||
d.PullUpDown = GPIOInPullUp
|
||||
data = d.Object
|
||||
case TriggerGroupReceive:
|
||||
@ -505,7 +505,7 @@ var availableGroupReceiveMulti = []GroupReceiveMultiType{GroupReceiveMultiType_S
|
||||
|
||||
type jsTriggerGPIOIn struct {
|
||||
*js.Object
|
||||
GpioNum GPIONum `js:"GpioNum"`
|
||||
GpioName string `js:"GpioName"`
|
||||
PullUpDown GPIOInPullUpDown `js:"PullUpDown"` //PullUp resistor, pull down otherwise
|
||||
Edge GPIOInEdge `js:"Edge"` // 0 == GPIO.RISING, 1 == GPIO.FALLING, every value > 1 == GPIO.BOTH
|
||||
}
|
||||
@ -546,7 +546,7 @@ type jsActionDeploySettingsTemplate struct {
|
||||
}
|
||||
type jsActionGPIOOut struct {
|
||||
*js.Object
|
||||
GpioNum GPIONum `js:"GpioNum"`
|
||||
GpioName string `js:"GpioName"`
|
||||
Value GPIOOutValue `js:"Value"` //PullUp resistor, pull down otherwise
|
||||
}
|
||||
type GPIOOutValue int
|
||||
@ -570,53 +570,6 @@ type jsActionLog struct {
|
||||
*js.Object
|
||||
}
|
||||
|
||||
type GPIONum int
|
||||
const GPIO_NUM_1 = GPIONum(pb.GPIONum_NUM_1)
|
||||
const GPIO_NUM_2 = GPIONum(pb.GPIONum_NUM_2)
|
||||
const GPIO_NUM_3 = GPIONum(pb.GPIONum_NUM_3)
|
||||
const GPIO_NUM_4 = GPIONum(pb.GPIONum_NUM_4)
|
||||
const GPIO_NUM_5 = GPIONum(pb.GPIONum_NUM_5)
|
||||
const GPIO_NUM_6 = GPIONum(pb.GPIONum_NUM_6)
|
||||
const GPIO_NUM_7 = GPIONum(pb.GPIONum_NUM_7)
|
||||
const GPIO_NUM_8 = GPIONum(pb.GPIONum_NUM_8)
|
||||
const GPIO_NUM_9 = GPIONum(pb.GPIONum_NUM_9)
|
||||
const GPIO_NUM_10 = GPIONum(pb.GPIONum_NUM_10)
|
||||
const GPIO_NUM_11 = GPIONum(pb.GPIONum_NUM_11)
|
||||
const GPIO_NUM_12 = GPIONum(pb.GPIONum_NUM_12)
|
||||
const GPIO_NUM_13 = GPIONum(pb.GPIONum_NUM_13)
|
||||
const GPIO_NUM_14 = GPIONum(pb.GPIONum_NUM_14)
|
||||
const GPIO_NUM_15 = GPIONum(pb.GPIONum_NUM_15)
|
||||
const GPIO_NUM_16 = GPIONum(pb.GPIONum_NUM_16)
|
||||
const GPIO_NUM_17 = GPIONum(pb.GPIONum_NUM_17)
|
||||
const GPIO_NUM_18 = GPIONum(pb.GPIONum_NUM_18)
|
||||
const GPIO_NUM_19 = GPIONum(pb.GPIONum_NUM_19)
|
||||
const GPIO_NUM_20 = GPIONum(pb.GPIONum_NUM_20)
|
||||
var gpioNumNames = map[GPIONum]string{
|
||||
GPIO_NUM_1: "GPIO 1",
|
||||
GPIO_NUM_2: "GPIO 2",
|
||||
GPIO_NUM_3: "GPIO 3",
|
||||
GPIO_NUM_4: "GPIO 4",
|
||||
GPIO_NUM_5: "GPIO 5",
|
||||
GPIO_NUM_6: "GPIO 6",
|
||||
GPIO_NUM_7: "GPIO 7",
|
||||
GPIO_NUM_8: "GPIO 8",
|
||||
GPIO_NUM_9: "GPIO 9",
|
||||
GPIO_NUM_10: "GPIO 10",
|
||||
GPIO_NUM_11: "GPIO 11",
|
||||
GPIO_NUM_12: "GPIO 12",
|
||||
GPIO_NUM_13: "GPIO 13",
|
||||
GPIO_NUM_14: "GPIO 14",
|
||||
GPIO_NUM_15: "GPIO 15",
|
||||
GPIO_NUM_16: "GPIO 16",
|
||||
GPIO_NUM_17: "GPIO 17",
|
||||
GPIO_NUM_18: "GPIO 18",
|
||||
GPIO_NUM_19: "GPIO 19",
|
||||
GPIO_NUM_20: "GPIO 20",
|
||||
}
|
||||
var availableGPIONums = []GPIONum{
|
||||
GPIO_NUM_1, GPIO_NUM_2, GPIO_NUM_3, GPIO_NUM_4, GPIO_NUM_5, GPIO_NUM_6, GPIO_NUM_7, GPIO_NUM_8, GPIO_NUM_9, GPIO_NUM_10,
|
||||
GPIO_NUM_11, GPIO_NUM_12, GPIO_NUM_13, GPIO_NUM_14, GPIO_NUM_15, GPIO_NUM_16, GPIO_NUM_17, GPIO_NUM_18, GPIO_NUM_19, GPIO_NUM_20,
|
||||
}
|
||||
|
||||
type TemplateType int
|
||||
const TemplateTypeFullSettings = TemplateType(pb.ActionDeploySettingsTemplate_FULL_SETTINGS)
|
||||
|
@ -123,6 +123,9 @@ const (
|
||||
VUEX_MUTATION_SET_STORED_MASTER_TEMPLATE_LIST = "setStoredMasterTemplateList"
|
||||
|
||||
|
||||
//GPIO
|
||||
VUEX_ACTION_UPDATE_GPIO_NAMES_LIST = "updateGpioNamesList"
|
||||
VUEX_MUTATION_SET_GPIO_NAMES_LIST = "setStoredGpioNamesList"
|
||||
|
||||
//Bash scripts (used by TriggerActions)
|
||||
VUEX_ACTION_UPDATE_STORED_BASH_SCRIPTS_LIST = "updateStoredBashScriptsList"
|
||||
@ -161,6 +164,7 @@ type GlobalState struct {
|
||||
StoredUSBSettingsList []string `js:"StoredUSBSettingsList"`
|
||||
StoredBluetoothSettingsList []string `js:"StoredBluetoothSettingsList"`
|
||||
StoredMasterTemplateList []string `js:"StoredMasterTemplateList"`
|
||||
GpioNamesList []string `js:"GpioNamesList"`
|
||||
|
||||
ConnectRetryCount int `js:"ConnectRetryCount"`
|
||||
EventListenerRunning bool `js:"EventListenerRunning"`
|
||||
@ -191,6 +195,7 @@ func createGlobalStateStruct() GlobalState {
|
||||
state.StoredUSBSettingsList = []string{}
|
||||
state.StoredBluetoothSettingsList = []string{}
|
||||
state.StoredMasterTemplateList = []string{}
|
||||
state.GpioNamesList = []string{}
|
||||
|
||||
//Retrieve Interface settings
|
||||
state.InterfaceSettings = NewEthernetSettingsList()
|
||||
@ -277,6 +282,26 @@ func actionUpdateAllStates(store *mvuex.Store, context *mvuex.ActionContext, sta
|
||||
|
||||
}
|
||||
|
||||
func actionUpdateGpioNamesList(store *mvuex.Store, context *mvuex.ActionContext, state *GlobalState) {
|
||||
go func() {
|
||||
println("Trying to fetch GPIO names list")
|
||||
//fetch deployed gadget settings
|
||||
gpioList, err := RpcClient.GetGpioNamesList(defaultTimeout)
|
||||
if err != nil {
|
||||
println("Couldn't retrieve GPIO names list")
|
||||
return
|
||||
}
|
||||
|
||||
//commit to current
|
||||
|
||||
context.Commit(VUEX_MUTATION_SET_GPIO_NAMES_LIST, gpioList)
|
||||
}()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
|
||||
func actionDeployMasterTemplate(store *mvuex.Store, context *mvuex.ActionContext, state *GlobalState, mt *jsMasterTemplate) {
|
||||
go func() {
|
||||
println("Vuex dispatch " + VUEX_ACTION_DEPLOY_MASTER_TEMPLATE)
|
||||
@ -1364,8 +1389,13 @@ func initMVuex() *mvuex.Store {
|
||||
mvuex.Mutation(VUEX_MUTATION_SET_STORED_MASTER_TEMPLATE_LIST, func(store *mvuex.Store, state *GlobalState, mtList []interface{}) {
|
||||
hvue.Set(state, "StoredMasterTemplateList", mtList)
|
||||
}),
|
||||
mvuex.Mutation(VUEX_MUTATION_SET_GPIO_NAMES_LIST, func(store *mvuex.Store, state *GlobalState, mtList []interface{}) {
|
||||
hvue.Set(state, "GpioNamesList", mtList)
|
||||
}),
|
||||
|
||||
|
||||
mvuex.Action(VUEX_ACTION_UPDATE_GPIO_NAMES_LIST, actionUpdateGpioNamesList),
|
||||
|
||||
mvuex.Action(VUEX_ACTION_DEPLOY_MASTER_TEMPLATE, actionDeployMasterTemplate),
|
||||
mvuex.Action(VUEX_ACTION_UPDATE_STORED_MASTER_TEMPLATE_LIST, actionUpdateStoredMasterTemplateList),
|
||||
mvuex.Action(VUEX_ACTION_STORE_MASTER_TEMPLATE, actionStoreMasterTemplate),
|
||||
@ -1498,6 +1528,7 @@ func initMVuex() *mvuex.Store {
|
||||
|
||||
store.Dispatch(VUEX_ACTION_START_EVENT_LISTEN)
|
||||
|
||||
store.Dispatch(VUEX_ACTION_UPDATE_GPIO_NAMES_LIST) //Should be done one time at store start (not intended to change)
|
||||
/*
|
||||
// fetch deployed gadget settings
|
||||
store.Dispatch(VUEX_ACTION_UPDATE_CURRENT_USB_SETTINGS)
|
||||
|
@ -29,6 +29,17 @@ func NewRpcClient(addr string) Rpc {
|
||||
return rcl
|
||||
}
|
||||
|
||||
func (rpc *Rpc) GetGpioNamesList(timeout time.Duration) (ws []string, err error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
||||
defer cancel()
|
||||
|
||||
ma, err := rpc.Client.GetAvailableGpios(ctx, &pb.Empty{})
|
||||
if err != nil { return ws, err }
|
||||
return ma.MsgArray, err
|
||||
}
|
||||
|
||||
|
||||
|
||||
func (rpc *Rpc) DeployMasterTemplate(timeout time.Duration, mt *pb.MasterTemplate) (err error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
||||
defer cancel()
|
||||
|
Loading…
x
Reference in New Issue
Block a user