]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
Fix sqlite3 lock
authorqydysky <qydysky@foxmail.com>
Tue, 25 Apr 2023 14:05:06 +0000 (22:05 +0800)
committerqydysky <qydysky@foxmail.com>
Tue, 25 Apr 2023 14:05:33 +0000 (22:05 +0800)
F/api.go
Reply/F.go
Send/Send.go
Send/Send_pm.go
bili_danmu.go
go.mod
go.sum

index 1a62f62064f295dcf893ca21ce3575dc77a4e3da..8a9e1b1115839afe7f1b7e94f773eb5101b0cb2b 100644 (file)
--- a/F/api.go
+++ b/F/api.go
@@ -26,7 +26,6 @@ import (
        limit "github.com/qydysky/part/limit"
        reqf "github.com/qydysky/part/reqf"
        psync "github.com/qydysky/part/sync"
-       sys "github.com/qydysky/part/sys"
 
        "github.com/mdp/qrterminal/v3"
        qr "github.com/skip2/go-qrcode"
@@ -1367,7 +1366,7 @@ func (c *GetFunc) Get_cookie() (missKey []string) {
                        WhiteChar: `OO`,
                })
                apilog.L(`W: `, `手机扫命令行二维码登录`)
-               sys.Sys().Timeoutf(1)
+               time.Sleep(time.Second)
        }
 
        //有新实例,退出
@@ -1384,7 +1383,7 @@ func (c *GetFunc) Get_cookie() (missKey []string) {
 
                for {
                        //3s刷新查看是否通过
-                       sys.Sys().Timeoutf(3)
+                       time.Sleep(time.Duration(3) * time.Second)
 
                        //有新实例,退出
                        if boot_Get_cookie.NeedExit(id) {
@@ -1931,7 +1930,7 @@ func Gift_list() (list []Gift_list_type_Data_List) {
        req := c.C.ReqPool.Get()
        defer c.C.ReqPool.Put(req)
        if err := req.Reqf(reqf.Rval{
-               Url: `https://api.live.bilibili.com/xlive/web-room/v1/gift/bag_list?t=` + strconv.Itoa(int(sys.Sys().GetMTime())) + `&room_id=` + strconv.Itoa(c.C.Roomid),
+               Url: `https://api.live.bilibili.com/xlive/web-room/v1/gift/bag_list?t=` + strconv.Itoa(int(time.Now().UnixNano()/int64(time.Millisecond))) + `&room_id=` + strconv.Itoa(c.C.Roomid),
                Header: map[string]string{
                        `Host`:            `api.live.bilibili.com`,
                        `User-Agent`:      `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0`,
index 701a5a175e0c8699e8df28f835449bdf94c29425..eb2696efcc996d06721c62beb6e67f96c2065a34 100644 (file)
@@ -35,7 +35,6 @@ import (
        limit "github.com/qydysky/part/limit"
        msgq "github.com/qydysky/part/msgq"
        psync "github.com/qydysky/part/sync"
-       sys "github.com/qydysky/part/sys"
        websocket "github.com/qydysky/part/websocket"
 
        encoder "golang.org/x/text/encoding"
@@ -607,7 +606,7 @@ func Danmuji_auto() {
                        if msg := list[i]; msg != `` {
                                Msg_senddanmu(msg)
                        }
-                       sys.Sys().Timeoutf(timeout)
+                       time.Sleep(time.Duration(timeout) * time.Second)
                }
        }()
 }
@@ -1563,6 +1562,7 @@ func (t *SaveDanmuToSqlite3) init(c *c.Common) {
                        if db, e := sql.Open("sqlite", v); e != nil {
                                panic(e)
                        } else {
+                               db.SetMaxOpenConns(1)
                                t.db = db
                        }
 
@@ -1583,11 +1583,9 @@ func (t *SaveDanmuToSqlite3) init(c *c.Common) {
 
 func (t *SaveDanmuToSqlite3) danmu(item Danmu_item) {
        if t.db != nil {
-               ctx := context.Background()
-               tx := psql.BeginTx[any](t.db, ctx, &sql.TxOptions{})
-               tx = tx.Do(psql.SqlFunc[any]{
+               if e := psql.BeginTx[any](t.db, context.Background(), &sql.TxOptions{}).Do(psql.SqlFunc[any]{
                        Ty:    psql.Execf,
-                       Ctx:   ctx,
+                       Ctx:   context.Background(),
                        Query: "insert into danmu values (?, ?, ?, ?, ?, ?, ?)",
                        Args:  []any{time.Now().Format(time.DateTime), time.Now().Unix(), item.msg, item.color, item.auth, item.uid, item.roomid},
                        AfterEF: func(_ *any, result sql.Result, txE error) (_ *any, stopErr error) {
@@ -1598,8 +1596,7 @@ func (t *SaveDanmuToSqlite3) danmu(item Danmu_item) {
                                }
                                return nil, nil
                        },
-               })
-               if e := tx.Fin(); e != nil {
+               }).Fin(); e != nil {
                        c.C.Log.Base_add("保存弹幕至sqlite").L(`E: `, e)
                }
        }
index 7903f0330cc84d2b3b452e86540d9aa412167d23..35fa455603ee88dfe2c35709fd9f9afa48022056 100644 (file)
@@ -5,13 +5,13 @@ import (
        "errors"
        "io"
        "strconv"
+       "time"
 
        c "github.com/qydysky/bili_danmu/CV"
 
        file "github.com/qydysky/part/file"
        limit "github.com/qydysky/part/limit"
        reqf "github.com/qydysky/part/reqf"
-       sys "github.com/qydysky/part/sys"
 )
 
 // 每5s一个令牌,最多等20秒
@@ -92,7 +92,7 @@ func Danmu_s2(data map[string]string) {
        if _, ok := data[`fontsize`]; !ok {
                data[`fontsize`] = `25`
        }
-       data[`rnd`] = strconv.Itoa(int(sys.Sys().GetSTime()))
+       data[`rnd`] = strconv.Itoa(int(time.Now().Unix()))
        data[`csrf`] = csrf
        data[`csrf_token`] = csrf
 
index ba2ad0a0fe55d05ce98195df0301abeb147c6320..797da9f7c1d2d3220e00370f93629d90e72b5990 100644 (file)
@@ -13,7 +13,7 @@ import (
        reqf "github.com/qydysky/part/reqf"
        sys "github.com/qydysky/part/sys"
 
-       uuid "github.com/gofrs/uuid"
+       "github.com/google/uuid"
 )
 
 type Pm_item struct {
@@ -44,21 +44,11 @@ func Send_pm(uid int, msg string) error {
                return errors.New("Cookie错误,无bili_jct=")
        }
 
-       var new_uuid string
-       {
-               if tmp_uuid, e := uuid.NewV4(); e == nil {
-                       new_uuid = tmp_uuid.String()
-               } else {
-                       log.L(`E: `, e)
-                       return e
-               }
-       }
-
        if pm_limit.TO() {
                return errors.New("TO")
        }
 
-       var send_str = `msg[sender_uid]=` + strconv.Itoa(c.C.Uid) + `&msg[receiver_id]=` + strconv.Itoa(uid) + `&msg[receiver_type]=1&msg[msg_type]=1&msg[msg_status]=0&msg[content]={"content":"` + msg + `"}&msg[timestamp]=` + strconv.Itoa(int(sys.Sys().GetSTime())) + `&msg[new_face_version]=0&msg[dev_id]=` + strings.ToUpper(new_uuid) + `&from_firework=0&build=0&mobi_app=web&csrf_token=` + csrf + `&csrf=` + csrf
+       var send_str = `msg[sender_uid]=` + strconv.Itoa(c.C.Uid) + `&msg[receiver_id]=` + strconv.Itoa(uid) + `&msg[receiver_type]=1&msg[msg_type]=1&msg[msg_status]=0&msg[content]={"content":"` + msg + `"}&msg[timestamp]=` + strconv.Itoa(int(sys.Sys().GetSTime())) + `&msg[new_face_version]=0&msg[dev_id]=` + strings.ToUpper(uuid.New().String()) + `&from_firework=0&build=0&mobi_app=web&csrf_token=` + csrf + `&csrf=` + csrf
 
        Cookie := make(map[string]string)
        c.C.Cookie.Range(func(k, v interface{}) bool {
index eb42acacdcf8c6329adfbff0636d085f1c5d616a..724f59933fcce95ec41f6c5528be26e25c4cfa70 100644 (file)
@@ -239,7 +239,7 @@ func Start() {
                                        }
                                        //30s获取一次人气
                                        go func() {
-                                               sys.Sys().MTimeoutf(500) //500ms
+                                               time.Sleep(time.Millisecond * time.Duration(500)) //500ms
                                                danmulog.L(`T: `, "获取人气")
                                                go func() {
                                                        heartbeatmsg, heartinterval := F.Heartbeat()
@@ -353,7 +353,7 @@ func Start() {
                                        reply.StreamOStop(-2) //停止其他房间录制
                                }
                        }
-                       sys.Sys().Timeoutf(1)
+                       time.Sleep(time.Second)
                }
 
                { //附加功能 直播流停止 ws信息保存
diff --git a/go.mod b/go.mod
index a2171dbc71e9f1be365b8af21a6c29cd104af69b..a931c119bfb155675bc0f348fae2681afe1cece0 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -3,31 +3,32 @@ module github.com/qydysky/bili_danmu
 go 1.20
 
 require (
-       github.com/gofrs/uuid v4.4.0+incompatible
        github.com/gotk3/gotk3 v0.6.1
        github.com/mdp/qrterminal/v3 v3.0.0
-       github.com/qydysky/part v0.24.16
+       github.com/qydysky/part v0.24.19
        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.9.0
 )
 
-require golang.org/x/exp v0.0.0-20230420155640-133eef4313cb
+require (
+       github.com/google/uuid v1.3.0
+       golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53
+)
 
 require (
-       github.com/google/uuid v1.3.0 // indirect
        github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
-       github.com/mattn/go-isatty v0.0.16 // indirect
+       github.com/mattn/go-isatty v0.0.18 // indirect
        github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
-       lukechampine.com/uint128 v1.2.0 // indirect
+       lukechampine.com/uint128 v1.3.0 // indirect
        modernc.org/cc/v3 v3.40.0 // indirect
        modernc.org/ccgo/v3 v3.16.13 // indirect
-       modernc.org/libc v1.22.4 // indirect
+       modernc.org/libc v1.22.5 // indirect
        modernc.org/mathutil v1.5.0 // indirect
        modernc.org/memory v1.5.0 // indirect
        modernc.org/opt v0.1.3 // indirect
        modernc.org/strutil v1.1.3 // indirect
-       modernc.org/token v1.0.1 // indirect
+       modernc.org/token v1.1.0 // indirect
 )
 
 require (
@@ -36,7 +37,7 @@ require (
        github.com/dustin/go-humanize v1.0.1
        github.com/go-ole/go-ole v1.2.6 // indirect
        github.com/gorilla/websocket v1.5.0 // indirect
-       github.com/klauspost/compress v1.16.4 // indirect
+       github.com/klauspost/compress v1.16.5 // indirect
        github.com/miekg/dns v1.1.53 // indirect
        github.com/shirou/gopsutil v3.21.11+incompatible // indirect
        github.com/thedevsaddam/gojsonq/v2 v2.5.2 // indirect
diff --git a/go.sum b/go.sum
index daae466155abb7a5b390f01439639e85c6b4504b..d9b3095eacad0030f6df4c3dd9c1a42b3c53a80a 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -6,8 +6,6 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp
 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
 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.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=
-github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
 github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
 github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
@@ -18,12 +16,12 @@ 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/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
-github.com/klauspost/compress v1.16.4 h1:91KN02FnsOYhuunwU4ssRe8lc2JosWmizWa91B5v1PU=
-github.com/klauspost/compress v1.16.4/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
+github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
 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/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
+github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
 github.com/mdp/qrterminal v1.0.1/go.mod h1:Z33WhxQe9B6CdW37HaVqcRKzP+kByF3q/qLxOGe12xQ=
 github.com/mdp/qrterminal/v3 v3.0.0 h1:ywQqLRBXWTktytQNDKFjhAvoGkLVN3J2tAFZ0kMd9xQ=
@@ -31,8 +29,10 @@ github.com/mdp/qrterminal/v3 v3.0.0/go.mod h1:NJpfAs7OAm77Dy8EkWrtE4aq+cE6McoLXl
 github.com/miekg/dns v1.1.53 h1:ZBkuHr5dxHtB1caEOlZTLPo7D3L3TWckgUUs/RHfDxw=
 github.com/miekg/dns v1.1.53/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/qydysky/part v0.24.16 h1:w+dqb0pacS8bYkLi8pb0wY0sz4q5TCsdEmiO0g9EYeM=
-github.com/qydysky/part v0.24.16/go.mod h1:vZgRwVF/3s1R07lJO3lbnyfFaY/3xeLkkaeFCPpzjlI=
+github.com/qydysky/part v0.24.18 h1:TDW9rknY7Y8CtsAcS6A7eWXbojQQWYjZxMnCkmQSoyo=
+github.com/qydysky/part v0.24.18/go.mod h1:vZgRwVF/3s1R07lJO3lbnyfFaY/3xeLkkaeFCPpzjlI=
+github.com/qydysky/part v0.24.19 h1:wsXqz4M5f5P5wtZlfUzgUWq4Qv49am7sgEhFPNolVuI=
+github.com/qydysky/part v0.24.19/go.mod h1:88d8rYyw4cHZSs8u5Q2MkqOnIdKDXpDSwfiSlwo3Tx4=
 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
@@ -51,8 +51,8 @@ github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYm
 github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4=
 github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
 github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
-golang.org/x/exp v0.0.0-20230420155640-133eef4313cb h1:rhjz/8Mbfa8xROFiH+MQphmAmgqRM0bOMnytznhWEXk=
-golang.org/x/exp v0.0.0-20230420155640-133eef4313cb/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
+golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 h1:5llv2sWeaMSnA3w2kS57ouQQ4pudlXrR0dCgw51QK9o=
+golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
 golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
 golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
@@ -60,8 +60,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
 golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
 golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
@@ -71,16 +71,16 @@ golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
-lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
+lukechampine.com/uint128 v1.3.0 h1:cDdUVfRwDUDovz610ABgFD17nXD4/uDgVHl2sC3+sbo=
+lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
 modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
 modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0=
 modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw=
 modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY=
 modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk=
 modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
-modernc.org/libc v1.22.4 h1:wymSbZb0AlrjdAVX3cjreCHTPCpPARbQXNz6BHPzdwQ=
-modernc.org/libc v1.22.4/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY=
+modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE=
+modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY=
 modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
 modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
 modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
@@ -92,8 +92,8 @@ modernc.org/sqlite v1.22.0/go.mod h1:cxbLkB5WS32DnQqeH4h4o1B0eMr8W/y8/RGuxQ3JsC0
 modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY=
 modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
 modernc.org/tcl v1.15.1 h1:mOQwiEK4p7HruMZcwKTZPw/aqtGM4aY00uzWhlKKYws=
-modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg=
-modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
+modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
 modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE=
 rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
 rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=