]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
fix
authorqydysky <32743305+qydysky@users.noreply.github.com>
Sun, 16 Oct 2022 07:55:11 +0000 (15:55 +0800)
committerqydysky <32743305+qydysky@users.noreply.github.com>
Sun, 16 Oct 2022 07:55:11 +0000 (15:55 +0800)
F/CookieCrypo.go
Reply/F.go
Reply/Reply.go
Reply/flvDecode_test.go
Reply/stream.go
Reply/tts.go
bili_danmu.go
demo/go.mod
demo/go.sum
go.mod
go.sum

index d9715a3b8d9f07b8553f4a5e29d79d38303099ea..70fba382abdb012bbd0c30653e902cc322fe1bd8 100644 (file)
@@ -4,11 +4,11 @@ import (
        "fmt"
 
        c "github.com/qydysky/bili_danmu/CV"
-       p "github.com/qydysky/part"
        crypto "github.com/qydysky/part/crypto"
+       file "github.com/qydysky/part/file"
 )
 
-//公私钥加密
+// 公私钥加密
 var (
        clog = c.C.Log.Base(`cookie加密`)
        pub  []byte
@@ -71,12 +71,7 @@ func CookieSet(source []byte) {
                                pub = d
                        }
                } else {
-                       f := p.File()
-                       f.FileWR(p.Filel{
-                               File:    `cookie.txt`,
-                               Loc:     0,
-                               Context: []interface{}{`nol`, source},
-                       })
+                       file.New(`cookie.txt`, 0, true).Write(append([]byte("nol"), source...), true)
                        return
                }
        }
@@ -84,11 +79,6 @@ func CookieSet(source []byte) {
                clog.L(`E: `, e)
                return
        } else {
-               f := p.File()
-               f.FileWR(p.Filel{
-                       File:    `cookie.txt`,
-                       Loc:     0,
-                       Context: []interface{}{`pem`, source},
-               })
+               file.New(`cookie.txt`, 0, true).Write(append([]byte("pem"), source...), true)
        }
 }
index 80857eef60c87b4c432ad5abd6b9e572555926f7..9ac697bdae1f92c43e3bb19bc9c475e3ac81708c 100644 (file)
@@ -37,6 +37,7 @@ import (
        websocket "github.com/qydysky/part/websocket"
 
        obsws "github.com/christopher-dG/go-obs-websocket"
+       encoder "golang.org/x/text/encoding"
 )
 
 /*
@@ -144,10 +145,10 @@ func ShowRevf() {
 
 // Ass 弹幕转字幕
 type Ass struct {
-       file   string                    //弹幕ass文件名
-       startT time.Time                 //开始记录的基准时间
-       header string                    //ass开头
-       wrap   func(io.Writer) io.Writer //编码
+       file   string           //弹幕ass文件名
+       startT time.Time        //开始记录的基准时间
+       header string           //ass开头
+       wrap   encoder.Encoding //编码
 }
 
 var (
@@ -174,7 +175,7 @@ Style: Default,,` + strconv.Itoa(Ass_font) + `,&H40FFFFFF,&H000017FF,&H80000000,
 [Events]
 Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
 `,
-       wrap: simplifiedchinese.GB18030.NewEncoder().Writer,
+       wrap: simplifiedchinese.GB18030,
 }
 
 func init() {
@@ -193,12 +194,12 @@ func init() {
 }
 
 // 设定字幕文件名,为""时停止输出
-func Ass_f(save_path string, file string, st time.Time) {
+func Ass_f(save_path string, filePath string, st time.Time) {
        if !IsOn(`仅保存当前直播间流`) {
                return
        }
-       ass.file = file
-       if file == "" {
+       ass.file = filePath
+       if filePath == "" {
                return
        }
 
@@ -208,12 +209,14 @@ func Ass_f(save_path string, file string, st time.Time) {
                c.C.Log.Base(`Ass`).L(`I: `, "保存到", ass.file+".ass")
                c.C.Log.Base(`Ass`).L(`W: `, err)
        }
-       p.File().FileWR(p.Filel{
-               File:       ass.file + ".ass",
-               Loc:        0,
-               Context:    []interface{}{ass.header},
-               WrapWriter: ass.wrap,
-       })
+       f := &file.File{
+               Config: file.Config{
+                       FilePath:  ass.file + ".ass",
+                       AutoClose: true,
+                       Coder:     ass.wrap,
+               },
+       }
+       f.Write([]byte(ass.header), true)
        ass.startT = st
 }
 
@@ -238,12 +241,12 @@ func Assf(s string) {
        b += `Dialogue: 0,`
        b += dtos(st) + `,` + dtos(et)
        b += `,Default,,0,0,0,,{\fad(200,500)\blur3}` + s + "\n"
-       p.File().FileWR(p.Filel{
-               File:       ass.file + ".ass",
-               Loc:        -1,
-               Context:    []interface{}{b},
-               WrapWriter: ass.wrap,
-       })
+
+       f := file.New(ass.file+".ass", -1, true)
+       f.Config.Coder = ass.wrap
+       if _, e := f.Write([]byte(b), true); e != nil {
+               flog.Base(`Assf`).L(`E: `, e)
+       }
 }
 
 // 时间转化为0:00:00.00规格字符串
@@ -471,12 +474,20 @@ func Autobanf(s string) bool {
                return false
        }
 
-       if len(autoban.Banbuf) == 0 {
-               f := p.File().FileWR(p.Filel{
-                       File: "Autoban.txt",
-               })
+       l := c.C.Log.Base("autoban")
 
-               autoban.Banbuf = append(autoban.Banbuf, strings.Split(f, "\n")...)
+       if len(autoban.Banbuf) == 0 {
+               f := file.New("Autoban.txt", -1, false)
+               for {
+                       if data, e := f.ReadUntil('\n', 50, 5000); e != nil {
+                               if !errors.Is(e, io.EOF) {
+                                       l.L(`E: `, e)
+                               }
+                               break
+                       } else {
+                               autoban.Banbuf = append(autoban.Banbuf, string(data))
+                       }
+               }
        }
 
        if len(autoban.buf) < 10 {
@@ -513,7 +524,6 @@ func Autobanf(s string) bool {
                } //ban字符重复低去除
                res = append(res, pt)
        }
-       l := c.C.Log.Base("autoban")
        l.L(`W: `, res)
        return true
 }
@@ -898,26 +908,22 @@ func Jiezouf(s []string) bool {
 
 // 保存所有消息到json
 func init() {
-       Save_to_json(0, []interface{}{`[`})
+       Save_to_json(0, []byte{'['})
        c.C.Danmu_Main_mq.Pull_tag(msgq.FuncMap{
                `change_room`: func(data interface{}) bool { //房间改变
-                       Save_to_json(0, []interface{}{`[`})
+                       Save_to_json(0, []byte{'['})
                        return false
                },
                `flash_room`: func(data interface{}) bool { //房间改变
-                       Save_to_json(0, []interface{}{`[`})
+                       Save_to_json(0, []byte{'['})
                        return false
                },
        })
 }
 
-func Save_to_json(Loc int, Context []interface{}) {
+func Save_to_json(Loc int, context []byte) {
        if path, ok := c.C.K_v.LoadV(`save_to_json`).(string); ok && path != `` {
-               p.File().FileWR(p.Filel{
-                       File:    path,
-                       Loc:     int64(Loc),
-                       Context: Context,
-               })
+               file.New(path, int64(Loc), true).Write(context, true)
        }
 }
 
index a05b2e14eea8b6abefdef46a772435d6a8b30874..e7c15f3d59dfa5d63a6292f9de536d07a3c57023 100644 (file)
@@ -64,7 +64,9 @@ func Reply(b []byte) {
                switch head.OpeaT {
                case c.WS_OP_MESSAGE:
                        Msg(contain)
-                       Save_to_json(-1, []interface{}{contain, `,`})
+                       var tmp []byte
+                       copy(tmp, contain)
+                       Save_to_json(-1, append(tmp, ','))
                case c.WS_OP_HEARTBEAT_REPLY: //心跳响应
                        Heart(contain)
                        return //忽略剩余内容
index ea69a4bafac60eaf68947d8f68131bc90858c067..98cf0bfda9e397a0676dcb47ccc755bbf494734c 100644 (file)
@@ -1,15 +1 @@
 package reply
-
-import (
-       "bytes"
-       "testing"
-
-       p "github.com/qydysky/part"
-)
-
-func Test_flv(t *testing.T) {
-       f := p.File().FileWR(p.Filel{
-               File: "1.flv",
-       })
-       Seach_stream_tag(bytes.NewBufferString(f).Bytes())
-}
index 3f2d4c2908623b2f6075eacc9d316962428008fd..54e17a3cab97d20239a97a51b634db7cfdaf8aae 100644 (file)
@@ -19,6 +19,7 @@ import (
        F "github.com/qydysky/bili_danmu/F"
 
        p "github.com/qydysky/part"
+       file "github.com/qydysky/part/file"
        funcCtrl "github.com/qydysky/part/funcCtrl"
        idpool "github.com/qydysky/part/idpool"
        log "github.com/qydysky/part/log"
@@ -760,11 +761,7 @@ func (t *M4SStream) saveStreamM4s() (e error) {
 
                if !t.config.save_as_mp4 {
                        // 添加m3u8字节
-                       p.File().FileWR(p.Filel{
-                               File:    t.Current_save_path + "0.m3u8.dtmp",
-                               Loc:     -1,
-                               Context: []interface{}{m3u8_addon},
-                       })
+                       file.New(t.Current_save_path+"0.m3u8.dtmp", -1, true).Write(m3u8_addon, true)
                }
        }
 
@@ -774,12 +771,7 @@ func (t *M4SStream) saveStreamM4s() (e error) {
        if !t.config.save_as_mp4 {
                // 结束
                if p.Checkfile().IsExist(t.Current_save_path + "0.m3u8.dtmp") {
-                       f := p.File()
-                       f.FileWR(p.Filel{
-                               File:    t.Current_save_path + "0.m3u8.dtmp",
-                               Loc:     -1,
-                               Context: []interface{}{"#EXT-X-ENDLIST"},
-                       })
+                       file.New(t.Current_save_path+"0.m3u8.dtmp", -1, true).Write([]byte("#EXT-X-ENDLIST"), true)
                        p.FileMove(t.Current_save_path+"0.m3u8.dtmp", t.Current_save_path+"0.m3u8")
                }
        }
index b62afa137c103399827cd3e5da3ae276520dc3fa..22fc404662f76e2bcd42f3b1f3b5754961523fb3 100644 (file)
@@ -16,6 +16,7 @@ import (
        c "github.com/qydysky/bili_danmu/CV"
 
        p "github.com/qydysky/part"
+       file "github.com/qydysky/part/file"
        funcCtrl "github.com/qydysky/part/funcCtrl"
        limit "github.com/qydysky/part/limit"
        msgq "github.com/qydysky/part/msgq"
@@ -408,10 +409,7 @@ func init() {
                                        }
                                }
                                if len(buf) != 0 {
-                                       p.File().FileWR(p.Filel{
-                                               File:    sys.Sys().Cdir() + `/tts.mp3`,
-                                               Context: []interface{}{buf},
-                                       })
+                                       file.New(sys.Sys().Cdir()+`/tts.mp3`, 0, true).Write(buf, true)
                                        play()
                                }
                                xfwsClient.Close()
index 15b056fba094a4a02d484919a74ea619aa6cc7f1..8b149a52525c14559a9afd1aba5d731ef7cdbff0 100644 (file)
@@ -323,7 +323,7 @@ func Start(roomid ...int) {
                                }
                        }
                        { //附加功能 ws信息保存
-                               reply.Save_to_json(-1, []interface{}{`{}]`})
+                               reply.Save_to_json(-1, []byte("{}]"))
                                if v, ok := c.C.K_v.LoadV(`仅保存当前直播间流`).(bool); ok && v {
                                        reply.StreamOStop(-2) //停止其他房间录制
                                }
index fc8f0d979b90b052eed04625526de3150deb5e58..b7d4422a0672b7650c2d5687c8ab1f6e425ec491 100644 (file)
@@ -1,10 +1,35 @@
 module github.com/qydysky/bili_danmu/demo
 
-go 1.14
+go 1.18
+
+require github.com/qydysky/bili_danmu v0.5.9
 
 require (
-       github.com/qydysky/bili_danmu v0.5.9
+       github.com/andybalholm/brotli v1.0.4 // indirect
+       github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 // indirect
+       github.com/go-ole/go-ole v1.2.6 // indirect
+       github.com/gofrs/uuid v4.3.0+incompatible // indirect
+       github.com/gorilla/websocket v1.5.0 // indirect
+       github.com/gotk3/gotk3 v0.6.1 // indirect
+       github.com/klauspost/compress v1.15.11 // indirect
+       github.com/mdp/qrterminal/v3 v3.0.0 // indirect
+       github.com/miekg/dns v1.1.50 // indirect
+       github.com/mitchellh/mapstructure v1.5.0 // indirect
+       github.com/qydysky/part v0.10.11 // indirect
+       github.com/shirou/gopsutil v3.21.11+incompatible // indirect
+       github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
+       github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
        github.com/stretchr/testify v1.7.1 // indirect
+       github.com/thedevsaddam/gojsonq/v2 v2.5.2 // indirect
+       github.com/tklauser/go-sysconf v0.3.10 // indirect
+       github.com/tklauser/numcpus v0.5.0 // indirect
+       github.com/yusufpapurcu/wmi v1.2.2 // indirect
+       golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
+       golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect
+       golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 // indirect
+       golang.org/x/text v0.3.8 // indirect
+       golang.org/x/tools v0.1.12 // indirect
+       rsc.io/qr v0.2.0 // indirect
 )
 
 replace (
index 170dfd247600e8b71c3d2f0d7ff35a9cb68522ec..8529123f75417ff53bf8828d1c1af9886de2b9f4 100644 (file)
@@ -34,6 +34,8 @@ github.com/klauspost/compress v1.13.1 h1:wXr2uRxZTJXHLly6qhJabee5JqIhTRoLBhDOA74
 github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
 github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
 github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
+github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c=
+github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
 github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
@@ -99,6 +101,14 @@ github.com/qydysky/part v0.10.5 h1:R9TF+pf6k0AsjE4bdrX5lorCDXRugeeEBEPh4SSBiZQ=
 github.com/qydysky/part v0.10.5/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
 github.com/qydysky/part v0.10.6 h1:eDNuYCPVwDAQKVSiNA3RLTFOiufXCvZHAGRtOX7Rdq4=
 github.com/qydysky/part v0.10.6/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
+github.com/qydysky/part v0.10.8 h1:3VSWkV1SaIUXfUdsOFn04N7wNfPTOYEScrkuni/0e1M=
+github.com/qydysky/part v0.10.8/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.9 h1:WkmHRkmPYDCmgWGRFH1A8PcqkHJ+vmC2Ge0jktkgdYY=
+github.com/qydysky/part v0.10.9/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.10 h1:R0GhqB1d1oFuOywJ1lFO8pqgBgZBa981sAF6nrzCqRw=
+github.com/qydysky/part v0.10.10/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.11 h1:6KeTx3accgmzv+HwMP8mcYmWhWxAO7wxyPisQWJTfS4=
+github.com/qydysky/part v0.10.11/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
 github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil v3.21.5+incompatible h1:OloQyEerMi7JUrXiNzy8wQ5XN+baemxSl12QgIzt0jc=
 github.com/shirou/gopsutil v3.21.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
@@ -149,6 +159,8 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI=
 golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.0.0-20221014081412-f15817d10f9b h1:tvrvnPFcdzp294diPnrdZZZ8XUt2Tyj7svb7X52iDuU=
+golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -177,6 +189,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220913175220-63ea55921009 h1:PuvuRMeLWqsf/ZdT1UUZz0syhioyv1mzuFZsXs4fvhw=
 golang.org/x/sys v0.0.0-20220913175220-63ea55921009/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 h1:OK7RB6t2WQX54srQQYSXMW8dF5C6/8+oA/s5QBmmto4=
+golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -186,6 +200,8 @@ golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
diff --git a/go.mod b/go.mod
index 7e8017b7c6313a22e516fefb82b31c34a43418d7..0013a7e2da183b04679dfffd04f8f2fba9e97a41 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -1,31 +1,34 @@
 module github.com/qydysky/bili_danmu
 
-go 1.15
+go 1.18
 
 require (
-       github.com/StackExchange/wmi v1.2.1 // indirect
-       github.com/andybalholm/brotli v1.0.4 // indirect
        github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5
-       github.com/go-ole/go-ole v1.2.6 // indirect
        github.com/gofrs/uuid v4.3.0+incompatible
-       github.com/golang/snappy v0.0.3 // indirect
-       github.com/gorilla/websocket v1.5.0 // indirect
        github.com/gotk3/gotk3 v0.6.1
-       github.com/klauspost/compress v1.15.9 // indirect
        github.com/mdp/qrterminal/v3 v3.0.0
+       github.com/qydysky/part v0.10.11
+       github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
+       github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
+       golang.org/x/text v0.3.8
+)
+
+require (
+       github.com/andybalholm/brotli v1.0.4 // indirect
+       github.com/go-ole/go-ole v1.2.6 // indirect
+       github.com/gorilla/websocket v1.5.0 // indirect
+       github.com/klauspost/compress v1.15.11 // indirect
        github.com/miekg/dns v1.1.50 // indirect
        github.com/mitchellh/mapstructure v1.5.0 // indirect
-       github.com/qydysky/part v0.10.6
        github.com/shirou/gopsutil v3.21.11+incompatible // indirect
-       github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
-       github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
        github.com/stretchr/testify v1.7.1 // indirect
+       github.com/thedevsaddam/gojsonq/v2 v2.5.2 // indirect
        github.com/tklauser/go-sysconf v0.3.10 // indirect
        github.com/tklauser/numcpus v0.5.0 // indirect
        github.com/yusufpapurcu/wmi v1.2.2 // indirect
-       golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect
-       golang.org/x/sys v0.0.0-20220913175220-63ea55921009 // indirect
-       golang.org/x/text v0.3.7
+       golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
+       golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect
+       golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 // indirect
        golang.org/x/tools v0.1.12 // indirect
-       golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
+       rsc.io/qr v0.2.0 // indirect
 )
diff --git a/go.sum b/go.sum
index 55eedeaae2716d3ae982a8c250cea04e1fac8fdd..3e916ec6064c4876a2b05a78a8223e363f57dddf 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -1,94 +1,47 @@
 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46 h1:5sXbqlSomvdjlRbWyNqkPsJ3Fg+tQZCbgeX1VGljbQY=
-github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
-github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
-github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
-github.com/andybalholm/brotli v1.0.3 h1:fpcw+r1N1h0Poc1F/pHbW40cUm/lMEQslZtCkBQ0UnM=
-github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
 github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 h1:UFBgEMSPv6a2vgzowHOPphVit+ZBNQ3+4Q+dEBgwIww=
 github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5/go.mod h1:P5w+dDqQEbCMFAkmucNcEQ6xgAt/NP+Aw58OQfY/H/o=
 github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY=
 github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
 github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
-github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
-github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
-github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
-github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 github.com/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc=
 github.com/gofrs/uuid v4.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
-github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
 github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gotk3/gotk3 v0.6.0 h1:Aqlq4/6VabNwtCyA9M9zFNad5yHAqCi5heWnZ9y+3dA=
-github.com/gotk3/gotk3 v0.6.0/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
 github.com/gotk3/gotk3 v0.6.1 h1:GJ400a0ecEEWrzjBvzBzH+pB/esEMIGdB9zPSmBdoeo=
 github.com/gotk3/gotk3 v0.6.1/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
 github.com/klauspost/compress v1.11.6/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.13.1 h1:wXr2uRxZTJXHLly6qhJabee5JqIhTRoLBhDOA74hDEQ=
-github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
-github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
-github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
+github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c=
+github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
 github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mdp/qrterminal v1.0.1 h1:07+fzVDlPuBlXS8tB0ktTAyf+Lp1j2+2zK3fBOL5b7c=
 github.com/mdp/qrterminal v1.0.1/go.mod h1:Z33WhxQe9B6CdW37HaVqcRKzP+kByF3q/qLxOGe12xQ=
 github.com/mdp/qrterminal/v3 v3.0.0 h1:ywQqLRBXWTktytQNDKFjhAvoGkLVN3J2tAFZ0kMd9xQ=
 github.com/mdp/qrterminal/v3 v3.0.0/go.mod h1:NJpfAs7OAm77Dy8EkWrtE4aq+cE6McoLXlBqXQEwvE0=
 github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
-github.com/miekg/dns v1.1.42 h1:gWGe42RGaIqXQZ+r3WUGEKBEtvPHY2SXo4dqixDNxuY=
-github.com/miekg/dns v1.1.42/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
 github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
 github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
-github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
 github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/qydysky/part v0.9.7 h1:XaMB1QF5lCK5EsL30ffeaNw8/QpDPCs2MxWSWwTLR4s=
-github.com/qydysky/part v0.9.7/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.9.8 h1:9mfT7ZrwnfRI1PWds38DjGuTxMenaC0aiFGMO6aFNNQ=
-github.com/qydysky/part v0.9.8/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.9.9 h1:7MWPq5WnFqHyE8owATgl90cdnxbPMVQWspvv1Fz7nts=
-github.com/qydysky/part v0.9.9/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.9.10 h1:fVSdBqNO1jC3bYDzd/VOl54UeZYyoEdaZgCNy3ADg5c=
-github.com/qydysky/part v0.9.10/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.9.11 h1:5UIhZpjLyI13twnvYYz5yMfP/BKHHfk2twt+MN/jh6k=
-github.com/qydysky/part v0.9.11/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.9.12 h1:1AUWAx1w8+rqGp4VDq/QniKkz7DjN6MzofLUEqzeBOI=
-github.com/qydysky/part v0.9.12/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.9.13 h1:DUqKA767ERpf4dyzfNy6+Jgjyt/JpqO9dooPJ2kGedY=
-github.com/qydysky/part v0.9.13/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.0 h1:b6Z+FEW80XjaEVmbq+bvHmEUX2h3H5vAW3XZ68MjtIk=
-github.com/qydysky/part v0.10.0/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.1 h1:O9dFJ9vE/RQ/0QX7D8YKQ8QBuuOc3aHw8u6a9hpLKEs=
-github.com/qydysky/part v0.10.1/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.2 h1:2wTinRZlRY7A7JllAKfU4+uvIf0Imu486n6VnvR5qPY=
-github.com/qydysky/part v0.10.2/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.3 h1:C2SM8Dl/9cjhHWxqpukBukSeuoangbQexW8R8LoEh2Q=
-github.com/qydysky/part v0.10.3/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.4 h1:AdsiIuiFLXtGFMItbsSis3nFs5Vh9TTTBi8larMSKMQ=
-github.com/qydysky/part v0.10.4/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.5 h1:R9TF+pf6k0AsjE4bdrX5lorCDXRugeeEBEPh4SSBiZQ=
-github.com/qydysky/part v0.10.5/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
-github.com/qydysky/part v0.10.6 h1:eDNuYCPVwDAQKVSiNA3RLTFOiufXCvZHAGRtOX7Rdq4=
-github.com/qydysky/part v0.10.6/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
+github.com/qydysky/part v0.10.8 h1:3VSWkV1SaIUXfUdsOFn04N7wNfPTOYEScrkuni/0e1M=
+github.com/qydysky/part v0.10.8/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.9 h1:WkmHRkmPYDCmgWGRFH1A8PcqkHJ+vmC2Ge0jktkgdYY=
+github.com/qydysky/part v0.10.9/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.10 h1:R0GhqB1d1oFuOywJ1lFO8pqgBgZBa981sAF6nrzCqRw=
+github.com/qydysky/part v0.10.10/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
+github.com/qydysky/part v0.10.11 h1:6KeTx3accgmzv+HwMP8mcYmWhWxAO7wxyPisQWJTfS4=
+github.com/qydysky/part v0.10.11/go.mod h1:B3GD/j5jmvwfKtnzDWqRYFqnwOXEyoUg/jShFk1yQSM=
 github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shirou/gopsutil v3.21.5+incompatible h1:OloQyEerMi7JUrXiNzy8wQ5XN+baemxSl12QgIzt0jc=
-github.com/shirou/gopsutil v3.21.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
 github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
@@ -96,23 +49,13 @@ github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDq
 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/thedevsaddam/gojsonq v2.3.0+incompatible h1:i2lFTvGY4LvoZ2VUzedsFlRiyaWcJm3Uh6cQ9+HyQA8=
 github.com/thedevsaddam/gojsonq v2.3.0+incompatible/go.mod h1:RBcQaITThgJAAYKH7FNp2onYodRz8URfsuEGpAch0NA=
 github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0=
 github.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs=
-github.com/tklauser/go-sysconf v0.3.6 h1:oc1sJWvKkmvIxhDHeKWvZS4f6AW+YcoguSfRF2/Hmo4=
-github.com/tklauser/go-sysconf v0.3.6/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI=
 github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
 github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
-github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA=
-github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM=
-github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
 github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
 github.com/tklauser/numcpus v0.5.0 h1:ooe7gN0fg6myJ0EKoTAf5hebTZrH52px3New/D9iJ+A=
 github.com/tklauser/numcpus v0.5.0/go.mod h1:OGzpTxpcIMNGYQdit2BYL1pvk/dSOaJWjKoflh+RQjo=
@@ -122,84 +65,60 @@ github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPR
 github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
-golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q=
-golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.0.0-20220812174116-3211cb980234 h1:RDqmgfe7SvlMWoqC3xwQ2blLO3fcWcxMa3eBLRdRW7E=
-golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI=
-golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.0.0-20221014081412-f15817d10f9b h1:tvrvnPFcdzp294diPnrdZZZ8XUt2Tyj7svb7X52iDuU=
+golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210113000019-eaf3bda374d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210611083646-a4fc73990273 h1:faDu4veV+8pcThn4fewv6TVlNCezafGoC1gM/mxQLbQ=
-golang.org/x/sys v0.0.0-20210611083646-a4fc73990273/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220817070843-5a390386f1f2 h1:fqTvyMIIj+HRzMmnzr9NtpHP6uVpvB5fkHcgPDC4nu8=
-golang.org/x/sys v0.0.0-20220817070843-5a390386f1f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220913175220-63ea55921009 h1:PuvuRMeLWqsf/ZdT1UUZz0syhioyv1mzuFZsXs4fvhw=
-golang.org/x/sys v0.0.0-20220913175220-63ea55921009/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 h1:OK7RB6t2WQX54srQQYSXMW8dF5C6/8+oA/s5QBmmto4=
+golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 h1:BonxutuHCTL0rBDnZlKjpGIQFTjyUVTexFOdWkB6Fg0=
 golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
 rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=