From 300d5d42052945b92f1abc45d3f90e30429a626d Mon Sep 17 00:00:00 2001 From: "Jason S. McMullan" Date: Fri, 12 Mar 2021 21:11:31 -0500 Subject: [PATCH 1/5] ctb: Fix bug where missing preview images would corrupt bottom lift height & speed --- README.md | 7 ------- cmd/uv3dp/info.go | 38 +++++++++++++++++--------------------- ctb/format.go | 23 ++++++++++++++++++----- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index a34d32a..794a8c9 100644 --- a/README.md +++ b/README.md @@ -205,10 +205,3 @@ The command line tool is designed to be used in a 'pipeline' style, for example: Known resins: (from local user ChiTuBox config) - Profile bottom 5 layers, 50; nominal 15 - Voxelab Black for 0.05mm bottom 6 layers, 50; nominal 10 - Voxelab Green for 0.05mm bottom 6 layers, 50; nominal 10 - Voxelab Grey for 0.05mm bottom 6 layers, 50; nominal 8 - Voxelab Red for 0.05mm bottom 6 layers, 50; nominal 10 - Voxelab Transparent for 0.05mm bottom 6 layers, 50; nominal 10 - Voxelab White for 0.05mm bottom 6 layers, 50; nominal 9 diff --git a/cmd/uv3dp/info.go b/cmd/uv3dp/info.go index dc05df2..b4f416a 100644 --- a/cmd/uv3dp/info.go +++ b/cmd/uv3dp/info.go @@ -37,7 +37,22 @@ func NewInfoCommand() (info *InfoCommand) { return } +func printExposure(mode string, exp *uv3dp.Exposure) { + fmt.Printf("%v:\n", mode) + fmt.Printf(" Exposure: %.2gs on, %.2gs off", exp.LightOnTime, exp.LightOffTime) + if exp.LightPWM != 255 { + fmt.Printf(", PWM %v", exp.LightPWM) + } + fmt.Printf(" Lift: %v mm, %v mm/min\n", + exp.LiftHeight, exp.LiftSpeed) + fmt.Printf(" Retract: %v mm, %v mm/min\n", + exp.RetractHeight, exp.RetractSpeed) +} + func (info *InfoCommand) Filter(input uv3dp.Printable) (output uv3dp.Printable, err error) { + exp := input.Exposure() + bot := input.Bottom() + if info.SizeSummary { size := input.Size() fmt.Printf("Layers: %v, %vx%v slices, %.2f x %.2f x %.2f mm bed required\n", @@ -55,27 +70,8 @@ func (info *InfoCommand) Filter(input uv3dp.Printable) (output uv3dp.Printable, } if info.ExposureSummary { - exp := input.Exposure() - bot := input.Bottom() - - fmt.Printf("Exposure: %.2gs on, %.2gs off", - exp.LightOnTime, - exp.LightOffTime) - if exp.LightPWM != 255 { - fmt.Printf(", PWM %v", exp.LightPWM) - } - fmt.Println() - fmt.Printf("Bottom: %.2gs on, %.2gs off", - bot.Exposure.LightOnTime, - bot.Exposure.LightOffTime) - if bot.Exposure.LightPWM != 255 { - fmt.Printf(", PWM %v", bot.Exposure.LightPWM) - } - fmt.Printf(" (%v layers)\n", bot.Count) - fmt.Printf("Lift: %v mm, %v mm/min\n", - exp.LiftHeight, exp.LiftSpeed) - fmt.Printf("Retract: %v mm, %v mm/min\n", - exp.RetractHeight, exp.RetractSpeed) + printExposure(fmt.Sprintf("Bottom (%v layers)", bot.Count), &bot.Exposure) + printExposure("Normal", &exp) keys := input.MetadataKeys() diff --git a/ctb/format.go b/ctb/format.go index 1ecd446..fc9ff2b 100644 --- a/ctb/format.go +++ b/ctb/format.go @@ -37,7 +37,7 @@ const ( type ctbHeader struct { Magic uint32 // 00: - Version uint32 // 04: Always '2' + Version uint32 // 04: Always '3' BedSizeMM [3]float32 // 08: _ [2]uint32 // 14: HeightMM float32 // 1c: @@ -220,7 +220,6 @@ func (cf *Formatter) Encode(writer uv3dp.Writer, printable uv3dp.Printable) (err return base } - base += uint32(previewSize) size := pic.Bounds().Size() if size == image.Pt(0, 0) { return base @@ -232,6 +231,8 @@ func (cf *Formatter) Encode(writer uv3dp.Writer, printable uv3dp.Printable) (err return base } + base += uint32(previewSize) + rleHash[hash] = rleInfo{offset: base, rle: rle} rleHashList = append(rleHashList, hash) @@ -246,7 +247,14 @@ func (cf *Formatter) Encode(writer uv3dp.Writer, printable uv3dp.Printable) (err previewHugeBase := headerBase + uint32(headerSize) previewTinyBase := savePreview(previewHugeBase, &previewHuge, uv3dp.PreviewTypeHuge) + if previewTinyBase == previewHugeBase { + previewHugeBase = 0 + } + paramBase := savePreview(previewTinyBase, &previewTiny, uv3dp.PreviewTypeTiny) + if paramBase == previewTinyBase { + previewTinyBase = 0 + } param := ctbParam{} paramSize, _ := restruct.SizeOf(¶m) @@ -440,8 +448,13 @@ func (cf *Formatter) Encode(writer uv3dp.Writer, printable uv3dp.Printable) (err fileData[base], _ = restruct.Pack(binary.LittleEndian, &layer) } - fileData[int(previewHugeBase)], _ = restruct.Pack(binary.LittleEndian, &previewHuge) - fileData[int(previewTinyBase)], _ = restruct.Pack(binary.LittleEndian, &previewTiny) + if previewHugeBase > 0 { + fileData[int(previewHugeBase)], _ = restruct.Pack(binary.LittleEndian, &previewHuge) + } + + if previewTinyBase > 0 { + fileData[int(previewTinyBase)], _ = restruct.Pack(binary.LittleEndian, &previewTiny) + } for _, hash := range rleHashList { info := rleHash[hash] @@ -623,7 +636,7 @@ func (cf *Formatter) Decode(file uv3dp.Reader, filesize int64) (printable uv3dp. var param ctbParam addr := int(header.ParamOffset) - err = restruct.Unpack(data[addr:], binary.LittleEndian, ¶m) + err = restruct.Unpack(data[addr:addr+int(header.ParamSize)], binary.LittleEndian, ¶m) if err != nil { return } From daf5fa0e33b86b4e124891aeb6691d089c116f55 Mon Sep 17 00:00:00 2001 From: "Jason S. McMullan" Date: Wed, 7 Aug 2024 15:50:09 -0400 Subject: [PATCH 2/5] Create dependabot.yml --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..cd88554 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "gomod" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From d9507c81e263b525f0531f5b7c3b36caef3a3767 Mon Sep 17 00:00:00 2001 From: "Jason S. McMullan" Date: Wed, 7 Aug 2024 15:52:56 -0400 Subject: [PATCH 3/5] Update go.mod to Go 1.18 --- .github/workflows/release.yml | 20 ++++++-------------- .github/workflows/test.yml | 20 ++++++-------------- go.mod | 10 ++++++---- go.sum | 8 ++++++-- 4 files changed, 24 insertions(+), 34 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 062fca9..28e2e61 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,24 +13,16 @@ jobs: id: release run: | echo ::set-output name=TAG::${GITHUB_REF/refs\/tags\//} + + - name: Check out code into the Go module directory + uses: actions/checkout@v4 - - name: Set up Go 1.13 - uses: actions/setup-go@v1 + - name: Set up Go 1.18 + uses: actions/setup-go@v5 with: - go-version: 1.13 + go-version: 1.18 id: go - - name: Check out code into the Go module directory - uses: actions/checkout@v1 - - - name: Get dependencies - run: | - go get -v -t -d ./... - if [ -f Gopkg.toml ]; then - curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - dep ensure - fi - - name: Craft Linux Artifacts run: | go get -ldflags "-X main.Version=${{ steps.release.outputs.TAG }}" github.com/${GITHUB_REPOSITORY}/cmd/uv3dp diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2088072..4a98a4c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,22 +7,14 @@ jobs: runs-on: ubuntu-latest steps: - - name: Set up Go 1.13 - uses: actions/setup-go@v1 - with: - go-version: 1.13 - id: go - - name: Check out code into the Go module directory - uses: actions/checkout@v1 + uses: actions/checkout@v4 - - name: Get dependencies - run: | - go get -v -t -d ./... - if [ -f Gopkg.toml ]; then - curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - dep ensure - fi + - name: Set up Go 1.18 + uses: actions/setup-go@v4 + with: + go-version: 1.18 + id: go - name: Run Tests run: | diff --git a/go.mod b/go.mod index 172d8b2..bb8e504 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,12 @@ module github.com/ezrec/uv3dp -go 1.13 +go 1.18 require ( - github.com/go-restruct/restruct v0.0.0-20191227155143-5734170a48a1 - github.com/google/go-cmp v0.4.0 + github.com/go-restruct/restruct v1.2.0-alpha + github.com/google/go-cmp v0.6.0 github.com/spf13/pflag v1.0.5 - golang.org/x/image v0.0.0-20200119044424-58c23975cae1 + golang.org/x/image v0.19.0 ) + +require github.com/pkg/errors v0.8.1 // indirect diff --git a/go.sum b/go.sum index 28624a7..e75c947 100644 --- a/go.sum +++ b/go.sum @@ -2,24 +2,28 @@ 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/go-restruct/restruct v0.0.0-20191227155143-5734170a48a1 h1:LoN2wx/aN8JPGebG+2DaUyk4M+xRcqJXfuIbs8AWHdE= github.com/go-restruct/restruct v0.0.0-20191227155143-5734170a48a1/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk= +github.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc= +github.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ= +golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From c21169cb86b9341e15a651433da696e9d0ae9826 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 19:59:36 +0000 Subject: [PATCH 4/5] build(deps): bump golang.org/x/image from 0.19.0 to 0.21.0 Bumps [golang.org/x/image](https://github.com/golang/image) from 0.19.0 to 0.21.0. - [Commits](https://github.com/golang/image/compare/v0.19.0...v0.21.0) --- updated-dependencies: - dependency-name: golang.org/x/image dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index bb8e504..29e2722 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/go-restruct/restruct v1.2.0-alpha github.com/google/go-cmp v0.6.0 github.com/spf13/pflag v1.0.5 - golang.org/x/image v0.19.0 + golang.org/x/image v0.21.0 ) require github.com/pkg/errors v0.8.1 // indirect diff --git a/go.sum b/go.sum index e75c947..fa8fb70 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,7 @@ 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/go-restruct/restruct v0.0.0-20191227155143-5734170a48a1 h1:LoN2wx/aN8JPGebG+2DaUyk4M+xRcqJXfuIbs8AWHdE= -github.com/go-restruct/restruct v0.0.0-20191227155143-5734170a48a1/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk= github.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc= github.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= @@ -17,13 +13,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ= -golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= +golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 355fe766c85ba87cf204fd81a684110a24381c5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 19:46:00 +0000 Subject: [PATCH 5/5] build(deps): bump golang.org/x/image from 0.21.0 to 0.23.0 Bumps [golang.org/x/image](https://github.com/golang/image) from 0.21.0 to 0.23.0. - [Commits](https://github.com/golang/image/compare/v0.21.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/image dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 29e2722..1f1b516 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/go-restruct/restruct v1.2.0-alpha github.com/google/go-cmp v0.6.0 github.com/spf13/pflag v1.0.5 - golang.org/x/image v0.21.0 + golang.org/x/image v0.23.0 ) require github.com/pkg/errors v0.8.1 // indirect diff --git a/go.sum b/go.sum index fa8fb70..f4534f2 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= -golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= +golang.org/x/image v0.23.0 h1:HseQ7c2OpPKTPVzNjG5fwJsOTCiiwS4QdsYi5XU6H68= +golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=