diff --git a/.github/pipeline-descriptor.yml b/.github/pipeline-descriptor.yml
index 0a7fd07c..ec83f04f 100644
--- a/.github/pipeline-descriptor.yml
+++ b/.github/pipeline-descriptor.yml
@@ -32,6 +32,8 @@ actions:
target: ghcr.io/paketo-buildpacks/actions/cf-java-index-dependency
- source: clojure-tools-dependency
target: ghcr.io/paketo-buildpacks/actions/clojure-tools-dependency
+- source: draft-release
+ target: ghcr.io/paketo-buildpacks/actions/draft-release
- source: foojay-dependency
target: ghcr.io/paketo-buildpacks/actions/foojay-dependency
- source: gcs-dependency
diff --git a/.github/workflows/create-action-draft-release.yml b/.github/workflows/create-action-draft-release.yml
new file mode 100644
index 00000000..a4aa7e5d
--- /dev/null
+++ b/.github/workflows/create-action-draft-release.yml
@@ -0,0 +1,55 @@
+name: Create Action draft-release
+"on":
+ pull_request:
+ paths:
+ - actions/*
+ - actions/draft-release/*
+ push:
+ branches:
+ - main
+ paths:
+ - actions/*
+ - actions/draft-release/*
+ release:
+ types:
+ - published
+jobs:
+ create-action:
+ name: Create Action
+ runs-on:
+ - ubuntu-latest
+ steps:
+ - name: Docker login ghcr.io
+ if: ${{ (github.event_name != 'pull_request' || ! github.event.pull_request.head.repo.fork) && (github.actor != 'dependabot[bot]') }}
+ uses: docker/login-action@v1
+ with:
+ password: ${{ secrets.JAVA_GITHUB_TOKEN }}
+ registry: ghcr.io
+ username: ${{ secrets.JAVA_GITHUB_USERNAME }}
+ - uses: actions/checkout@v3
+ - name: Create Action
+ run: |
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ echo "::group::Building ${TARGET}:${VERSION}"
+ docker build \
+ --file actions/Dockerfile \
+ --build-arg "SOURCE=${SOURCE}" \
+ --tag "${TARGET}:${VERSION}" \
+ .
+ echo "::endgroup::"
+
+ if [[ "${PUSH}" == "true" ]]; then
+ echo "::group::Pushing ${TARGET}:${VERSION}"
+ docker push "${TARGET}:${VERSION}"
+ echo "::endgroup::"
+ else
+ echo "Skipping push"
+ fi
+ env:
+ PUSH: ${{ github.event_name != 'pull_request' }}
+ SOURCE: draft-release
+ TARGET: ghcr.io/paketo-buildpacks/actions/draft-release
+ VERSION: main
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 33ea0334..3037484a 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -5,6 +5,85 @@ name: Tests
branches:
- main
jobs:
+ integration:
+ name: Integration Test
+ runs-on:
+ - ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/cache@v2
+ with:
+ key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+ path: ${{ env.HOME }}/go/pkg/mod
+ restore-keys: ${{ runner.os }}-go-
+ - uses: actions/setup-go@v2
+ with:
+ go-version: "1.17"
+ - name: Install create-package
+ run: |
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ GO111MODULE=on go get -u -ldflags="-s -w" github.com/paketo-buildpacks/libpak/cmd/create-package
+ - name: Install pack
+ run: |
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ echo "Installing pack ${PACK_VERSION}"
+
+ mkdir -p "${HOME}"/bin
+ echo "${HOME}/bin" >> "${GITHUB_PATH}"
+
+ curl \
+ --location \
+ --show-error \
+ --silent \
+ "https://github.com/buildpacks/pack/releases/download/v${PACK_VERSION}/pack-v${PACK_VERSION}-linux.tgz" \
+ | tar -C "${HOME}"/bin -xz pack
+ env:
+ PACK_VERSION: 0.24.0
+ - name: Enable pack Experimental
+ if: ${{ false }}
+ run: |
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ echo "Enabling pack experimental features"
+
+ mkdir -p "${HOME}"/.pack
+ echo "experimental = true" >> "${HOME}"/.pack/config.toml
+ - name: Install richgo
+ run: |
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ echo "Installing richgo ${RICHGO_VERSION}"
+
+ mkdir -p "${HOME}"/bin
+ echo "${HOME}/bin" >> "${GITHUB_PATH}"
+
+ curl \
+ --location \
+ --show-error \
+ --silent \
+ "https://github.com/kyoh86/richgo/releases/download/v${RICHGO_VERSION}/richgo_${RICHGO_VERSION}_linux_amd64.tar.gz" \
+ | tar -C "${HOME}"/bin -xz richgo
+ env:
+ RICHGO_VERSION: 0.3.10
+ - name: Run Tests
+ run: |
+ #!/usr/bin/env bash
+
+ set -euo pipefail
+
+ richgo test ./integration/... -run Integration
+ env:
+ RICHGO_FORCE_COLOR: "1"
unit:
name: Unit Test
runs-on:
@@ -44,6 +123,6 @@ jobs:
set -euo pipefail
- richgo test ./...
+ richgo test ./... -run Unit
env:
RICHGO_FORCE_COLOR: "1"
diff --git a/actions/action.go b/actions/action.go
index cfa3e374..0ef4741b 100644
--- a/actions/action.go
+++ b/actions/action.go
@@ -29,7 +29,7 @@ import (
type Inputs map[string]string
func NewInputs() Inputs {
- re := regexp.MustCompile("^INPUT_([A-Z0-9-_]+)=(.+)$")
+ re := regexp.MustCompile("^INPUT_([A-Z0-9-_]+)=((?s).+)$")
i := make(Inputs)
for _, s := range os.Environ() {
diff --git a/actions/draft-release/draft.template b/actions/draft-release/draft.template
new file mode 100644
index 00000000..e340d43d
--- /dev/null
+++ b/actions/draft-release/draft.template
@@ -0,0 +1,67 @@
+**ID**: `{{ .PrimaryBuildpack.Info.ID }}`
+**Digest**:
+
+{{ if .NestedBuildpacks -}}
+#### Included Buildpackages:
+Name | ID | Version
+:--- | :- | :------
+{{ range .NestedBuildpacks -}}
+{{ .Info.Name }} | `{{ .Info.ID }}` | `{{ .Info.Version }}`
+{{ end -}}
+{{ end -}}
+
+{{ if .PrimaryBuildpack.Stacks }}
+#### Supported Stacks:
+{{ range .PrimaryBuildpack.Stacks -}}
+- `{{ .ID }}`
+{{ end -}}
+{{ end }}
+
+{{ if .PrimaryBuildpack.Dependencies }}
+#### Dependencies:
+Name | Version | SHA256
+:--- | :------ | :-----
+{{ range .PrimaryBuildpack.Dependencies -}}
+{{ .Name }} | `{{ .Version }}` | `{{ .SHA256 }}`
+{{ end }}
+{{ end }}
+{{ if .PrimaryBuildpack.OrderGroups }}
+
+Order Groupings
+
+{{ range .PrimaryBuildpack.OrderGroups -}}
+ID | Version | Optional
+:- | :------ | :-------
+{{ range .Groups -}}
+`{{ .ID }}` | `{{ .Version }}` | `{{ .Optional }}`
+{{ end }}
+{{ end -}}
+
+{{ end }}
+---
+
+{{ range .NestedBuildpacks -}}
+
+{{- .Info.Name }} {{ .Info.Version -}}
+
+**ID**: `{{ .Info.ID }}`
+
+{{ if .Stacks -}}
+#### Supported Stacks:
+{{ range .Stacks -}}
+- `{{ .ID }}`
+{{ end -}}
+{{ end }}
+{{ if .Dependencies -}}
+#### Dependencies:
+Name | Version | SHA256
+:--- | :------ | :-----
+{{ range .Dependencies -}}
+{{ .Name }} | `{{ .Version }}` | `{{ .SHA256 }}`
+{{ end -}}
+{{ end -}}
+
+---
+
+{{ end }}
+{{ .Release.Body -}}
\ No newline at end of file
diff --git a/actions/draft-release/main.go b/actions/draft-release/main.go
new file mode 100644
index 00000000..41ef8742
--- /dev/null
+++ b/actions/draft-release/main.go
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2018-2022 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package main
+
+import (
+ _ "embed"
+
+ "fmt"
+ "io/ioutil"
+ "path/filepath"
+
+ "github.com/paketo-buildpacks/libpak/effect"
+ "github.com/paketo-buildpacks/pipeline-builder/actions"
+ "github.com/paketo-buildpacks/pipeline-builder/drafts"
+)
+
+//go:embed "draft.template"
+var templateContents string
+
+func main() {
+ inputs := actions.NewInputs()
+
+ drafter := drafts.Drafter{Loader: drafts.RegistryBuildpackLoader{}}
+ payload, err := drafter.CreatePayload(inputs, ".")
+ if err != nil {
+ panic(err)
+ }
+
+ scratchDir, err := ioutil.TempDir("", "drafts")
+ if err != nil {
+ panic(err)
+ }
+
+ err = drafter.BuildAndWriteReleaseToFileDraftFromTemplate(
+ filepath.Join(scratchDir, "body"), templateContents, payload)
+ if err != nil {
+ panic(err)
+ }
+
+ name := payload.Release.Name
+ if payload.PrimaryBuildpack.Info.Name != "" {
+ name = fmt.Sprintf("%s %s", payload.PrimaryBuildpack.Info.Name, payload.Release.Name)
+ }
+
+ err = ioutil.WriteFile(filepath.Join(scratchDir, "name"), []byte(name), 0644)
+ if err != nil {
+ panic(err)
+ }
+
+ execution := effect.Execution{
+ Command: "gh",
+ Args: []string{
+ "api",
+ "--method", "PATCH",
+ fmt.Sprintf("/repos/:owner/:repo/releases/%s", payload.Release.ID),
+ "--field", fmt.Sprintf("tag_name=%s", payload.Release.Tag),
+ "--field", fmt.Sprintf("name=@%s/name", scratchDir),
+ "--field", fmt.Sprintf("body=@%s/body", scratchDir),
+ },
+ }
+ if _, dryRun := inputs["dry_run"]; dryRun {
+ bits, err := ioutil.ReadFile(filepath.Join(scratchDir, "body"))
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Println("Title:", name)
+ fmt.Println("Body:", string(bits))
+ fmt.Println("Would execute:", execution)
+ } else {
+ err = effect.NewExecutor().Execute(execution)
+ if err != nil {
+ panic(fmt.Errorf("unable to execute %s\n%w", execution, err))
+ }
+ }
+}
diff --git a/drafts/drafts.go b/drafts/drafts.go
new file mode 100644
index 00000000..e558d565
--- /dev/null
+++ b/drafts/drafts.go
@@ -0,0 +1,404 @@
+/*
+ * Copyright 2018-2022 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package drafts
+
+import (
+ "archive/tar"
+ "bytes"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strings"
+ "text/template"
+
+ "github.com/BurntSushi/toml"
+ "github.com/buildpacks/libcnb"
+ "github.com/google/go-containerregistry/pkg/authn"
+ "github.com/google/go-containerregistry/pkg/name"
+ "github.com/google/go-containerregistry/pkg/v1/mutate"
+ "github.com/google/go-containerregistry/pkg/v1/remote"
+ "github.com/paketo-buildpacks/libpak"
+ "github.com/paketo-buildpacks/pipeline-builder/actions"
+)
+
+type Payload struct {
+ PrimaryBuildpack Buildpack
+ Builder Builder
+ NestedBuildpacks []Buildpack
+ OrderGroups [][]libcnb.BuildpackOrderBuildpack
+ Release Release
+}
+
+type Buildpack struct {
+ libcnb.Buildpack
+ OrderGroups []libcnb.BuildpackOrder `toml:"order"`
+ Dependencies []libpak.BuildpackDependency
+}
+
+type Builder struct {
+ Description string
+ Buildpacks []struct {
+ URI string
+ }
+ OrderGroups []libcnb.BuildpackOrder `toml:"order"`
+ Stack BuilderStack `toml:"stack"`
+}
+
+type BuilderStack struct {
+ ID string `toml:"id"`
+ BuildImage string `toml:"build-image"`
+ RunImage string `toml:"run-image"`
+}
+
+func (b Builder) Flatten() []string {
+ tmp := []string{}
+
+ for _, bp := range b.Buildpacks {
+ tmp = append(tmp, strings.TrimPrefix(bp.URI, "docker://"))
+ }
+
+ return tmp
+}
+
+type Package struct {
+ Dependencies []struct {
+ URI string `toml:"uri"`
+ }
+}
+
+func (b Package) Flatten() []string {
+ tmp := []string{}
+
+ for _, bp := range b.Dependencies {
+ tmp = append(tmp, strings.TrimPrefix(bp.URI, "docker://"))
+ }
+
+ return tmp
+}
+
+type Release struct {
+ ID string
+ Name string
+ Body string
+ Tag string
+}
+
+//go:generate mockery --name BuildpackLoader --case=underscore
+
+type BuildpackLoader interface {
+ LoadBuildpack(id string) (Buildpack, error)
+ LoadBuildpacks(uris []string) ([]Buildpack, error)
+}
+
+type Drafter struct {
+ Loader BuildpackLoader
+}
+
+func (d Drafter) BuildAndWriteReleaseToFileDraftFromTemplate(outputPath, templateContents string, context interface{}) error {
+ fp, err := os.Create(outputPath)
+ if err != nil {
+ return fmt.Errorf("unable to create file %s\n%w", outputPath, err)
+ }
+ defer fp.Close()
+
+ return d.BuildAndWriteReleaseDraftFromTemplate(fp, templateContents, context)
+}
+
+func (d Drafter) BuildAndWriteReleaseDraftFromTemplate(output io.Writer, templateContents string, context interface{}) error {
+ tmpl, err := template.New("draft").Parse(templateContents)
+ if err != nil {
+ return fmt.Errorf("unable to parse template %q\n%w", templateContents, err)
+ }
+
+ err = tmpl.Execute(output, context)
+ if err != nil {
+ return fmt.Errorf("unable to execute template %q\n%w", templateContents, err)
+ }
+
+ return nil
+}
+
+func (d Drafter) CreatePayload(inputs actions.Inputs, buildpackPath string) (Payload, error) {
+ release := Release{
+ ID: inputs["release_id"],
+ Name: inputs["release_name"],
+ Body: inputs["release_body"],
+ Tag: inputs["release_tag_name"],
+ }
+
+ builder, err := loadBuilderTOML(buildpackPath)
+ if err != nil {
+ return Payload{}, err
+ }
+
+ if builder != nil {
+ bps, err := d.Loader.LoadBuildpacks(builder.Flatten())
+ if err != nil {
+ return Payload{}, fmt.Errorf("unable to load buildpacks\n%w", err)
+ }
+
+ return Payload{
+ PrimaryBuildpack: Buildpack{},
+ Builder: *builder,
+ NestedBuildpacks: bps,
+ Release: release,
+ }, nil
+ }
+
+ bp, err := loadBuildpackTOMLFromFile(buildpackPath)
+ if err != nil {
+ return Payload{}, err
+ }
+
+ pkg, err := loadPackage(buildpackPath)
+ if err != nil {
+ return Payload{}, err
+ }
+
+ if bp != nil && pkg == nil { // component
+ return Payload{
+ PrimaryBuildpack: *bp,
+ Release: release,
+ }, nil
+ } else if bp != nil && pkg != nil { // composite
+ bps, err := d.Loader.LoadBuildpacks(pkg.Flatten())
+ if err != nil {
+ return Payload{}, fmt.Errorf("unable to load buildpacks\n%w", err)
+ }
+
+ return Payload{
+ NestedBuildpacks: bps,
+ PrimaryBuildpack: *bp,
+ Release: release,
+ }, nil
+ }
+
+ return Payload{}, fmt.Errorf("unable to generate payload, need buildpack.toml or buildpack.toml + package.toml or builder.toml")
+}
+
+func loadBuildpackTOMLFromFile(buildpackPath string) (*Buildpack, error) {
+ rawTOML, err := ioutil.ReadFile(filepath.Join(buildpackPath, "buildpack.toml"))
+ if err != nil && os.IsNotExist(err) {
+ return nil, nil
+ } else if err != nil {
+ return nil, fmt.Errorf("unable to read buildpack toml\n%w", err)
+ }
+
+ return loadBuildpackTOML(rawTOML)
+}
+
+func loadBuildpackTOML(TOML []byte) (*Buildpack, error) {
+ bp := &Buildpack{}
+ if err := toml.Unmarshal(TOML, bp); err != nil {
+ return nil, fmt.Errorf("unable to parse buildpack TOML\n%w", err)
+ }
+
+ if deps, found := bp.Metadata["dependencies"]; found {
+ if depList, ok := deps.([]map[string]interface{}); ok {
+ for _, dep := range depList {
+ bpDep := libpak.BuildpackDependency{
+ ID: asString(dep, "id"),
+ Name: asString(dep, "name"),
+ Version: asString(dep, "version"),
+ URI: asString(dep, "uri"),
+ SHA256: asString(dep, "sha256"),
+ PURL: asString(dep, "purl"),
+ }
+
+ if stacks, ok := dep["stacks"].([]interface{}); ok {
+ for _, stack := range stacks {
+ if stack, ok := stack.(string); ok {
+ bpDep.Stacks = append(bpDep.Stacks, stack)
+ }
+ }
+ }
+
+ if cpes, ok := dep["cpes"].([]interface{}); ok {
+ for _, cpe := range cpes {
+ if cpe, ok := cpe.(string); ok {
+ bpDep.CPEs = append(bpDep.CPEs, cpe)
+ }
+ }
+ }
+
+ if licenses, ok := dep["licenses"].([]map[string]interface{}); ok {
+ for _, license := range licenses {
+ bpDep.Licenses = append(bpDep.Licenses, libpak.BuildpackDependencyLicense{
+ Type: asString(license, "type"),
+ URI: asString(license, "uri"),
+ })
+ }
+ }
+
+ bp.Dependencies = append(bp.Dependencies, bpDep)
+ }
+ } else {
+ return nil, fmt.Errorf("unable to read dependencies from %v", bp.Metadata)
+ }
+ }
+
+ return bp, nil
+}
+
+func asString(m map[string]interface{}, key string) string {
+ if tmp, ok := m[key].(string); ok {
+ return tmp
+ }
+
+ return ""
+}
+
+func loadPackage(buildpackPath string) (*Package, error) {
+ rawTOML, err := ioutil.ReadFile(filepath.Join(buildpackPath, "package.toml"))
+ if err != nil && os.IsNotExist(err) {
+ return nil, nil
+ } else if err != nil {
+ return nil, fmt.Errorf("unable to read package toml\n%w", err)
+ }
+
+ pkg := &Package{}
+ if err := toml.Unmarshal(rawTOML, pkg); err != nil {
+ return nil, fmt.Errorf("unable to parse package TOML\n%w", err)
+ }
+
+ return pkg, nil
+}
+
+func loadBuilderTOML(buildpackPath string) (*Builder, error) {
+ rawTOML, err := ioutil.ReadFile(filepath.Join(buildpackPath, "builder.toml"))
+ if err != nil && os.IsNotExist(err) {
+ return nil, nil
+ } else if err != nil {
+ return nil, fmt.Errorf("unable to read builder toml\n%w", err)
+ }
+
+ builder := &Builder{}
+ if err := toml.Unmarshal(rawTOML, builder); err != nil {
+ return nil, fmt.Errorf("unable to parse builder TOML\n%w", err)
+ }
+
+ return builder, nil
+}
+
+type RegistryBuildpackLoader struct{}
+
+func (r RegistryBuildpackLoader) LoadBuildpacks(uris []string) ([]Buildpack, error) {
+ buildpacks := []Buildpack{}
+
+ for _, uri := range uris {
+ bp, err := r.LoadBuildpack(uri)
+ if err != nil {
+ return []Buildpack{}, fmt.Errorf("unable to process %s\n%w", uri, err)
+ }
+ buildpacks = append(buildpacks, bp)
+ }
+
+ return buildpacks, nil
+}
+
+func (r RegistryBuildpackLoader) LoadBuildpack(uri string) (Buildpack, error) {
+ tarFile, err := ioutil.TempFile("", "tarfiles")
+ if err != nil {
+ return Buildpack{}, fmt.Errorf("unable to create tempfile\n%w", err)
+ }
+ defer os.Remove(tarFile.Name())
+
+ err = loadBuildpackImage(uri, tarFile)
+ if err != nil {
+ return Buildpack{}, fmt.Errorf("unable to load %s\n%w", uri, err)
+ }
+
+ _, err = tarFile.Seek(0, 0)
+ if err != nil {
+ return Buildpack{}, fmt.Errorf("unable to reset file pointer\n%w", err)
+ }
+
+ bpTOML, err := readBuildpackTOML(tarFile)
+ if err != nil {
+ return Buildpack{}, err
+ }
+
+ bp, err := loadBuildpackTOML(bpTOML)
+ if err != nil {
+ return Buildpack{}, fmt.Errorf("unable to load buildpack toml from image\n%w", err)
+ }
+
+ return *bp, nil
+}
+
+func loadBuildpackImage(ref string, to io.Writer) error {
+ reference, err := name.ParseReference(ref)
+ if err != nil {
+ return fmt.Errorf("unable to parse reference for existing buildpack tag\n%w", err)
+ }
+
+ img, err := remote.Image(reference, remote.WithAuthFromKeychain(authn.DefaultKeychain))
+ if err != nil {
+ return fmt.Errorf("unable to fetch remote image\n%w", err)
+ }
+
+ layers, err := img.Layers()
+ if err != nil {
+ return fmt.Errorf("unable to fetch layer\n%w", err)
+ }
+
+ if len(layers) == 1 {
+ l := layers[0]
+ rc, err := l.Uncompressed()
+ if err != nil {
+ return fmt.Errorf("unable to get uncompressed reader\n%w", err)
+ }
+ _, err = io.Copy(to, rc)
+ return err
+ }
+
+ fs := mutate.Extract(img)
+ _, err = io.Copy(to, fs)
+ return err
+}
+
+func readBuildpackTOML(tarFile *os.File) ([]byte, error) {
+ t := tar.NewReader(tarFile)
+ for {
+ f, err := t.Next()
+ if err != nil && err == io.EOF {
+ break
+ } else if err != nil {
+ return []byte{}, fmt.Errorf("unable to read TAR file\n%w", err)
+ }
+
+ if strings.HasSuffix(f.Name, "buildpack.toml") {
+ info := f.FileInfo()
+
+ if info.IsDir() || (info.Mode()&os.ModeSymlink != 0) {
+ return []byte{}, fmt.Errorf("unable to read buildpack.toml, unexpected file type (directory or symlink)")
+ }
+
+ buf := &bytes.Buffer{}
+ _, err := io.Copy(buf, t)
+ if err != nil {
+ return []byte{}, fmt.Errorf("unable to read buildpack.toml\n%w", err)
+ }
+
+ return buf.Bytes(), nil
+ }
+ }
+
+ return []byte{}, fmt.Errorf("unable to find buildpack.toml in image")
+}
diff --git a/drafts/drafts_test.go b/drafts/drafts_test.go
new file mode 100644
index 00000000..3213b754
--- /dev/null
+++ b/drafts/drafts_test.go
@@ -0,0 +1,373 @@
+/*
+ * Copyright 2018-2022 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package drafts_test
+
+import (
+ "bytes"
+ "io/ioutil"
+ "os"
+ "testing"
+
+ "github.com/buildpacks/libcnb"
+ . "github.com/onsi/gomega"
+ "github.com/paketo-buildpacks/libpak"
+ "github.com/paketo-buildpacks/pipeline-builder/actions"
+ "github.com/paketo-buildpacks/pipeline-builder/drafts"
+ "github.com/paketo-buildpacks/pipeline-builder/drafts/mocks"
+ "github.com/sclevine/spec"
+ "github.com/stretchr/testify/mock"
+)
+
+func testDrafts(t *testing.T, context spec.G, it spec.S) {
+ var (
+ Expect = NewWithT(t).Expect
+
+ dir string
+
+ bpLoader mocks.BuildpackLoader
+ )
+
+ context("draft a release", func() {
+ it.Before(func() {
+ var err error
+ dir, err = ioutil.TempDir("", "drafts")
+ Expect(err).To(Not(HaveOccurred()))
+ })
+
+ it.After(func() {
+ Expect(os.RemoveAll(dir)).To(Succeed())
+ })
+
+ context("payloads", func() {
+ it("creates a payload for a component buildpack", func() {
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ }, "testdata/component")
+ Expect(err).ToNot(HaveOccurred())
+
+ Expect(p.Release).To(Equal(drafts.Release{
+ ID: "foo-id",
+ Name: "foo-name",
+ Body: "foo-body",
+ Tag: "foo-tag",
+ }))
+ Expect(p.NestedBuildpacks).To(HaveLen(0))
+ Expect(p.Builder.OrderGroups).To(HaveLen(0))
+ Expect(p.Builder.Stack.ID).To(BeEmpty())
+ Expect(p.Builder.Buildpacks).To(HaveLen(0))
+ Expect(p.PrimaryBuildpack.OrderGroups).To(HaveLen(0))
+ Expect(p.PrimaryBuildpack.Info.ID).To(Equal("example/component"))
+ Expect(p.PrimaryBuildpack.Info.Version).To(Equal("2.1.1"))
+ Expect(p.PrimaryBuildpack.Info.Name).To(Equal("Example Component Buildpack"))
+ Expect(p.PrimaryBuildpack.Stacks).To(ContainElements(
+ libcnb.BuildpackStack{ID: "stack1"},
+ libcnb.BuildpackStack{ID: "stack2"},
+ libcnb.BuildpackStack{ID: "*"}))
+ Expect(p.PrimaryBuildpack.Dependencies).To(HaveLen(2))
+ Expect(p.PrimaryBuildpack.Dependencies[0].ID).To(Equal("dep"))
+ Expect(p.PrimaryBuildpack.Dependencies[0].Version).To(Equal("8.5.78"))
+ Expect(p.PrimaryBuildpack.Dependencies[0].Version).To(Equal("8.5.78"))
+ Expect(p.PrimaryBuildpack.Dependencies[1].Version).To(Equal("9.0.62"))
+ Expect(p.PrimaryBuildpack.Dependencies[0].Stacks).To(Equal([]string{"stack1", "stack2", "*"}))
+ Expect(p.PrimaryBuildpack.Dependencies[1].CPEs).To(Equal([]string{"cpe:2.3:a:example:dep:9.0.62:*:*:*:*:*:*:*"}))
+ Expect(p.PrimaryBuildpack.Dependencies[0].Licenses).To(HaveLen(1))
+ Expect(p.PrimaryBuildpack.Dependencies[0].Licenses[0]).To(
+ Equal(libpak.BuildpackDependencyLicense{Type: "Apache-2.0", URI: "https://www.apache.org/licenses/"}))
+ })
+
+ it("creates a payload for a component buildpack without dependencies", func() {
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ }, "testdata/component-no-deps")
+ Expect(err).ToNot(HaveOccurred())
+
+ Expect(p.Release).To(Equal(drafts.Release{
+ ID: "foo-id",
+ Name: "foo-name",
+ Body: "foo-body",
+ Tag: "foo-tag",
+ }))
+ Expect(p.NestedBuildpacks).To(HaveLen(0))
+ Expect(p.Builder.OrderGroups).To(HaveLen(0))
+ Expect(p.Builder.Stack.ID).To(BeEmpty())
+ Expect(p.Builder.Buildpacks).To(HaveLen(0))
+ Expect(p.PrimaryBuildpack.OrderGroups).To(HaveLen(0))
+ Expect(p.PrimaryBuildpack.Info.ID).To(Equal("example/component"))
+ Expect(p.PrimaryBuildpack.Info.Version).To(Equal("2.1.1"))
+ Expect(p.PrimaryBuildpack.Info.Name).To(Equal("Example Component Buildpack"))
+ Expect(p.PrimaryBuildpack.Stacks).To(ContainElements(
+ libcnb.BuildpackStack{ID: "stack1"},
+ libcnb.BuildpackStack{ID: "stack2"},
+ libcnb.BuildpackStack{ID: "*"}))
+ Expect(p.PrimaryBuildpack.Dependencies).To(HaveLen(0))
+ })
+
+ it("creates a payload for a composite buildpack", func() {
+ bpLoader.On("LoadBuildpacks", mock.Anything).Return([]drafts.Buildpack{
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp1"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp2"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp3"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp4"}}},
+ }, nil)
+
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ }, "testdata/composite")
+ Expect(err).ToNot(HaveOccurred())
+
+ Expect(p.Release).To(Equal(drafts.Release{
+ ID: "foo-id",
+ Name: "foo-name",
+ Body: "foo-body",
+ Tag: "foo-tag",
+ }))
+ Expect(p.Builder.OrderGroups).To(HaveLen(0))
+ Expect(p.Builder.Stack.ID).To(BeEmpty())
+ Expect(p.Builder.Buildpacks).To(HaveLen(0))
+
+ Expect(p.PrimaryBuildpack.Info.ID).To(Equal("example/composite"))
+ Expect(p.PrimaryBuildpack.Info.Version).To(Equal("1.1.8"))
+ Expect(p.PrimaryBuildpack.Info.Name).To(Equal("Example Composite Buildpack"))
+ Expect(p.PrimaryBuildpack.Stacks).To(HaveLen(0))
+ Expect(p.PrimaryBuildpack.OrderGroups).To(HaveLen(2))
+ Expect(p.PrimaryBuildpack.OrderGroups[0].Groups).To(Equal([]libcnb.BuildpackOrderBuildpack{
+ {ID: "example/bp1", Version: "3.1.0", Optional: true},
+ {ID: "example/bp2", Version: "9.3.1", Optional: false},
+ {ID: "example/bp3", Version: "1.10.0", Optional: true},
+ }))
+ Expect(p.PrimaryBuildpack.OrderGroups[1].Groups).To(Equal([]libcnb.BuildpackOrderBuildpack{
+ {ID: "example/bp1", Version: "3.1.0", Optional: true},
+ {ID: "example/bp3", Version: "1.10.0", Optional: true},
+ {ID: "example/bp4", Version: "6.5.0", Optional: true},
+ }))
+
+ Expect(p.NestedBuildpacks).To(HaveLen(4))
+ for i, expectedBp := range []string{"bp1", "bp2", "bp3", "bp4"} {
+ Expect(p.NestedBuildpacks[i].Info.ID).To(Equal(expectedBp))
+ }
+ })
+
+ it("creates a payload for a builder", func() {
+ bpLoader.On("LoadBuildpacks", mock.Anything).Return([]drafts.Buildpack{
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp1"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp2"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp3"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp4"}}},
+ }, nil)
+
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ }, "testdata/builder")
+ Expect(err).ToNot(HaveOccurred())
+
+ Expect(p.Release).To(Equal(drafts.Release{
+ ID: "foo-id",
+ Name: "foo-name",
+ Body: "foo-body",
+ Tag: "foo-tag",
+ }))
+
+ Expect(p.PrimaryBuildpack.Info.ID).To(BeEmpty())
+ Expect(p.PrimaryBuildpack.Info.Name).To(BeEmpty())
+ Expect(p.PrimaryBuildpack.Info.Version).To(BeEmpty())
+ Expect(p.PrimaryBuildpack.Stacks).To(HaveLen(0))
+ Expect(p.PrimaryBuildpack.OrderGroups).To(HaveLen(0))
+
+ Expect(p.Builder.Stack).To(Equal(drafts.BuilderStack{
+ ID: "stack1",
+ BuildImage: "example.com/example/build:base-cnb",
+ RunImage: "example.com/example/run:base-cnb",
+ }))
+
+ Expect(p.Builder.Buildpacks).To(HaveLen(4))
+ for i, expected := range []string{
+ "docker://example.com/example/bp1:1.1.2",
+ "docker://example.com/example/bp2:1.4.1",
+ "docker://example.com/example/bp3:0.2.1",
+ "docker://example.com/example/bp4:5.0.3",
+ } {
+ Expect(p.Builder.Buildpacks[i].URI).To(Equal(expected))
+ }
+
+ Expect(p.Builder.OrderGroups).To(HaveLen(1))
+ Expect(p.Builder.OrderGroups[0].Groups).To(Equal([]libcnb.BuildpackOrderBuildpack{
+ {ID: "example/bp1"},
+ {ID: "example/bp2"},
+ {ID: "example/bp3"},
+ {ID: "example/bp4"},
+ }))
+
+ Expect(p.NestedBuildpacks).To(HaveLen(4))
+ for i, expectedBp := range []string{"bp1", "bp2", "bp3", "bp4"} {
+ Expect(p.NestedBuildpacks[i].Info.ID).To(Equal(expectedBp))
+ }
+ })
+ })
+
+ context("generates body", func() {
+ var templateContent string
+
+ it.Before(func() {
+ tc, err := ioutil.ReadFile("../actions/draft-release/draft.template")
+ Expect(err).ToNot(HaveOccurred())
+ templateContent = string(tc)
+ })
+
+ it("generates component", func() {
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ "dry_run": "true",
+ }, "testdata/component")
+ Expect(err).ToNot(HaveOccurred())
+
+ buf := &bytes.Buffer{}
+ err = d.BuildAndWriteReleaseDraftFromTemplate(buf, templateContent, p)
+ Expect(err).ToNot(HaveOccurred())
+
+ body := buf.String()
+ Expect(body).To(ContainSubstring("**ID**: `example/component`"))
+ Expect(body).To(ContainSubstring("**Digest**: "))
+ Expect(body).To(ContainSubstring("#### Supported Stacks:"))
+ Expect(body).To(ContainSubstring("- `stack1`"))
+ Expect(body).To(ContainSubstring("- `stack2`"))
+ Expect(body).To(ContainSubstring("- `*`"))
+ Expect(body).To(ContainSubstring("#### Dependencies:"))
+ Expect(body).To(ContainSubstring("Example Dep | `8.5.78` | `84c7707db0ce495473df2efdc93da21b6d47bf25cd0a79de52e5472ff9e5f094`"))
+ Expect(body).To(ContainSubstring("Example Dep | `9.0.62` | `03157728a832cf9c83048cdc28d09600cbb3e4fa087f8b97d74c8b4f34cd89bb`"))
+ Expect(body).To(ContainSubstring("foo-body"))
+ })
+
+ it.Focus("generates composite", func() {
+ bpLoader.On("LoadBuildpacks", mock.Anything).Return([]drafts.Buildpack{
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp1", Name: "BP 1", Version: "3.1.0"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp2", Name: "BP 2", Version: "9.3.1"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp3", Name: "BP 3", Version: "1.10.0"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp4", Name: "BP 4", Version: "6.5.0"}}},
+ }, nil)
+
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ "dry_run": "true",
+ }, "testdata/composite")
+ Expect(err).ToNot(HaveOccurred())
+
+ buf := &bytes.Buffer{}
+ err = d.BuildAndWriteReleaseDraftFromTemplate(buf, templateContent, p)
+ Expect(err).ToNot(HaveOccurred())
+
+ body := buf.String()
+ Expect(body).To(ContainSubstring("**ID**: `example/composite`"))
+ Expect(body).To(ContainSubstring("**Digest**: "))
+ Expect(body).ToNot(ContainSubstring("#### Supported Stacks:"))
+ Expect(body).To(ContainSubstring("#### Included Buildpackages:"))
+ Expect(body).To(ContainSubstring("BP 1 | `bp1` | `3.1.0`"))
+ Expect(body).To(ContainSubstring("BP 2 | `bp2` | `9.3.1`"))
+ Expect(body).To(ContainSubstring("BP 3 | `bp3` | `1.10.0`"))
+ Expect(body).To(ContainSubstring("BP 4 | `bp4` | `6.5.0`"))
+ Expect(body).To(ContainSubstring("Order Groupings"))
+ Expect(body).To(ContainSubstring("`example/bp1` | `3.1.0` | `true`"))
+ Expect(body).To(ContainSubstring("`example/bp2` | `9.3.1` | `false`"))
+ Expect(body).To(ContainSubstring("`example/bp3` | `1.10.0` | `true`"))
+ Expect(body).To(ContainSubstring("BP 1 3.1.0"))
+ Expect(body).To(ContainSubstring("**ID**: `bp1`"))
+ Expect(body).To(ContainSubstring("BP 2 9.3.1"))
+ Expect(body).To(ContainSubstring("**ID**: `bp2`"))
+ Expect(body).To(ContainSubstring("BP 3 1.10.0"))
+ Expect(body).To(ContainSubstring("**ID**: `bp3`"))
+ Expect(body).To(ContainSubstring("BP 4 6.5.0"))
+ Expect(body).To(ContainSubstring("**ID**: `bp4`"))
+ })
+
+ it("generates builder", func() {
+ bpLoader.On("LoadBuildpacks", mock.Anything).Return([]drafts.Buildpack{
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp1", Name: "BP 1", Version: "3.1.0"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp2", Name: "BP 2", Version: "9.3.1"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp3", Name: "BP 3", Version: "1.10.0"}}},
+ {Buildpack: libcnb.Buildpack{Info: libcnb.BuildpackInfo{ID: "bp4", Name: "BP 4", Version: "6.5.0"}}},
+ }, nil)
+
+ d := drafts.Drafter{Loader: &bpLoader}
+
+ p, err := d.CreatePayload(actions.Inputs{
+ "release_id": "foo-id",
+ "release_name": "foo-name",
+ "release_body": "foo-body",
+ "release_tag_name": "foo-tag",
+ "dry_run": "true",
+ }, "testdata/builder")
+ Expect(err).ToNot(HaveOccurred())
+
+ buf := &bytes.Buffer{}
+ err = d.BuildAndWriteReleaseDraftFromTemplate(buf, templateContent, p)
+ Expect(err).ToNot(HaveOccurred())
+
+ body := buf.String()
+ Expect(body).To(ContainSubstring("**ID**: `example/builder`"))
+ Expect(body).To(ContainSubstring("**Digest**: "))
+ Expect(body).ToNot(ContainSubstring("#### Supported Stacks:"))
+ Expect(body).To(ContainSubstring("#### Included Buildpackages:"))
+ Expect(body).To(ContainSubstring("BP 1 | `bp1` | `3.1.0`"))
+ Expect(body).To(ContainSubstring("BP 2 | `bp2` | `9.3.1`"))
+ Expect(body).To(ContainSubstring("BP 3 | `bp3` | `1.10.0`"))
+ Expect(body).To(ContainSubstring("BP 4 | `bp4` | `6.5.0`"))
+ Expect(body).To(ContainSubstring("Order Groupings"))
+ Expect(body).To(ContainSubstring("`example/bp1` | `3.1.0` | `true`"))
+ Expect(body).To(ContainSubstring("`example/bp2` | `9.3.1` | `false`"))
+ Expect(body).To(ContainSubstring("`example/bp3` | `1.10.0` | `true`"))
+ Expect(body).To(ContainSubstring("BP 1 3.1.0"))
+ Expect(body).To(ContainSubstring("**ID**: `bp1`"))
+ Expect(body).To(ContainSubstring("BP 2 9.3.1"))
+ Expect(body).To(ContainSubstring("**ID**: `bp2`"))
+ Expect(body).To(ContainSubstring("BP 3 1.10.0"))
+ Expect(body).To(ContainSubstring("**ID**: `bp3`"))
+ Expect(body).To(ContainSubstring("BP 4 6.5.0"))
+ Expect(body).To(ContainSubstring("**ID**: `bp4`"))
+ })
+ })
+ })
+
+}
diff --git a/drafts/init_test.go b/drafts/init_test.go
new file mode 100644
index 00000000..cc4818f5
--- /dev/null
+++ b/drafts/init_test.go
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2018-2020 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package drafts_test
+
+import (
+ "testing"
+
+ "github.com/sclevine/spec"
+ "github.com/sclevine/spec/report"
+)
+
+func TestUnit(t *testing.T) {
+ suite := spec.New("drafts", spec.Report(report.Terminal{}))
+ suite("Tests", testDrafts)
+ suite.Run(t)
+}
diff --git a/drafts/mocks/buildpack_loader.go b/drafts/mocks/buildpack_loader.go
new file mode 100644
index 00000000..e6bd9cd6
--- /dev/null
+++ b/drafts/mocks/buildpack_loader.go
@@ -0,0 +1,57 @@
+// Code generated by mockery v2.10.0. DO NOT EDIT.
+
+package mocks
+
+import (
+ drafts "github.com/paketo-buildpacks/pipeline-builder/drafts"
+ mock "github.com/stretchr/testify/mock"
+)
+
+// BuildpackLoader is an autogenerated mock type for the BuildpackLoader type
+type BuildpackLoader struct {
+ mock.Mock
+}
+
+// LoadBuildpack provides a mock function with given fields: id
+func (_m *BuildpackLoader) LoadBuildpack(id string) (drafts.Buildpack, error) {
+ ret := _m.Called(id)
+
+ var r0 drafts.Buildpack
+ if rf, ok := ret.Get(0).(func(string) drafts.Buildpack); ok {
+ r0 = rf(id)
+ } else {
+ r0 = ret.Get(0).(drafts.Buildpack)
+ }
+
+ var r1 error
+ if rf, ok := ret.Get(1).(func(string) error); ok {
+ r1 = rf(id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// LoadBuildpacks provides a mock function with given fields: uris
+func (_m *BuildpackLoader) LoadBuildpacks(uris []string) ([]drafts.Buildpack, error) {
+ ret := _m.Called(uris)
+
+ var r0 []drafts.Buildpack
+ if rf, ok := ret.Get(0).(func([]string) []drafts.Buildpack); ok {
+ r0 = rf(uris)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).([]drafts.Buildpack)
+ }
+ }
+
+ var r1 error
+ if rf, ok := ret.Get(1).(func([]string) error); ok {
+ r1 = rf(uris)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
diff --git a/drafts/testdata/builder/builder.toml b/drafts/testdata/builder/builder.toml
new file mode 100644
index 00000000..186a67f8
--- /dev/null
+++ b/drafts/testdata/builder/builder.toml
@@ -0,0 +1,37 @@
+description = "description"
+
+[[buildpacks]]
+ id = "example/bp1"
+ uri = "docker://example.com/example/bp1:1.1.2"
+
+[[buildpacks]]
+ id = "example/bp2"
+ uri = "docker://example.com/example/bp2:1.4.1"
+
+[[buildpacks]]
+ id = "example/bp3"
+ uri = "docker://example.com/example/bp3:0.2.1"
+
+[[buildpacks]]
+ id = "example/bp4"
+ uri = "docker://example.com/example/bp4:5.0.3"
+
+[[order]]
+
+ [[order.group]]
+ id = "example/bp1"
+
+ [[order.group]]
+ id = "example/bp2"
+
+ [[order.group]]
+ id = "example/bp3"
+
+ [[order.group]]
+ id = "example/bp4"
+ optional = false
+
+[stack]
+ build-image = "example.com/example/build:base-cnb"
+ id = "stack1"
+ run-image = "example.com/example/run:base-cnb"
diff --git a/drafts/testdata/component-no-deps/buildpack.toml b/drafts/testdata/component-no-deps/buildpack.toml
new file mode 100644
index 00000000..2efcdb3a
--- /dev/null
+++ b/drafts/testdata/component-no-deps/buildpack.toml
@@ -0,0 +1,41 @@
+# Copyright 2018-2020 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+api = "0.7"
+
+[buildpack]
+ description = "description"
+ homepage = "https://example.com/example/component"
+ id = "example/component"
+ keywords = ["example", "component"]
+ name = "Example Component Buildpack"
+ sbom-formats = ["application/vnd.cyclonedx+json", "application/vnd.syft+json"]
+ version = "2.1.1"
+
+ [[buildpack.licenses]]
+ type = "Apache-2.0"
+ uri = "https://example.com/example/component/blob/main/LICENSE"
+
+[metadata]
+ include-files = ["LICENSE", "NOTICE", "README.md", "bin/build", "bin/detect", "bin/helper", "bin/main", "buildpack.toml", "resources/context.xml", "resources/logging.properties", "resources/server.xml", "resources/web.xml"]
+ pre-package = "scripts/build.sh"
+
+[[stacks]]
+ id = "stack1"
+
+[[stacks]]
+ id = "stack2"
+
+[[stacks]]
+ id = "*"
\ No newline at end of file
diff --git a/drafts/testdata/component/buildpack.toml b/drafts/testdata/component/buildpack.toml
new file mode 100644
index 00000000..f9c22da7
--- /dev/null
+++ b/drafts/testdata/component/buildpack.toml
@@ -0,0 +1,68 @@
+# Copyright 2018-2020 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+api = "0.7"
+
+[buildpack]
+ description = "description"
+ homepage = "https://example.com/example/component"
+ id = "example/component"
+ keywords = ["example", "component"]
+ name = "Example Component Buildpack"
+ sbom-formats = ["application/vnd.cyclonedx+json", "application/vnd.syft+json"]
+ version = "2.1.1"
+
+ [[buildpack.licenses]]
+ type = "Apache-2.0"
+ uri = "https://example.com/example/component/blob/main/LICENSE"
+
+[metadata]
+ include-files = ["LICENSE", "NOTICE", "README.md", "bin/build", "bin/detect", "bin/helper", "bin/main", "buildpack.toml", "resources/context.xml", "resources/logging.properties", "resources/server.xml", "resources/web.xml"]
+ pre-package = "scripts/build.sh"
+
+ [[metadata.dependencies]]
+ id = "dep"
+ name = "Example Dep"
+ purl = "pkg:generic/example-dep@8.5.78"
+ sha256 = "84c7707db0ce495473df2efdc93da21b6d47bf25cd0a79de52e5472ff9e5f094"
+ stacks = ["stack1", "stack2", "*"]
+ uri = "https://archive.example.org/dist/dep/dep-8/v8.5.78/bin/example-dep-8.5.78.tar.gz"
+ version = "8.5.78"
+
+ [[metadata.dependencies.licenses]]
+ type = "Apache-2.0"
+ uri = "https://www.apache.org/licenses/"
+
+ [[metadata.dependencies]]
+ cpes = ["cpe:2.3:a:example:dep:9.0.62:*:*:*:*:*:*:*"]
+ id = "dep"
+ name = "Example Dep"
+ purl = "pkg:generic/example-dep@9.0.62"
+ sha256 = "03157728a832cf9c83048cdc28d09600cbb3e4fa087f8b97d74c8b4f34cd89bb"
+ stacks = ["stack1", "stack2", "*"]
+ uri = "https://archive.example.org/dist/dep/dep-9/v9.0.62/bin/example-dep-9.0.62.tar.gz"
+ version = "9.0.62"
+
+ [[metadata.dependencies.licenses]]
+ type = "Apache-2.0"
+ uri = "https://www.apache.org/licenses/"
+
+[[stacks]]
+ id = "stack1"
+
+[[stacks]]
+ id = "stack2"
+
+[[stacks]]
+ id = "*"
\ No newline at end of file
diff --git a/drafts/testdata/composite/buildpack.toml b/drafts/testdata/composite/buildpack.toml
new file mode 100644
index 00000000..184e5059
--- /dev/null
+++ b/drafts/testdata/composite/buildpack.toml
@@ -0,0 +1,62 @@
+# Copyright 2018-2022 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+api = "0.7"
+
+[buildpack]
+ description = "description"
+ homepage = "https://example.com/homepage"
+ id = "example/composite"
+ keywords = ["example", "composite"]
+ name = "Example Composite Buildpack"
+ version = "1.1.8"
+
+ [[buildpack.licenses]]
+ type = "Apache-2.0"
+ uri = "https://example.com/example/example-composite/blob/main/LICENSE"
+
+[metadata]
+ include-files = ["LICENSE", "NOTICE", "README.md", "buildpack.toml"]
+
+[[order]]
+
+ [[order.group]]
+ id = "example/bp1"
+ optional = true
+ version = "3.1.0"
+
+ [[order.group]]
+ id = "example/bp2"
+ version = "9.3.1"
+
+ [[order.group]]
+ id = "example/bp3"
+ optional = true
+ version = "1.10.0"
+
+[[order]]
+ [[order.group]]
+ id = "example/bp1"
+ optional = true
+ version = "3.1.0"
+
+ [[order.group]]
+ id = "example/bp3"
+ optional = true
+ version = "1.10.0"
+
+ [[order.group]]
+ id = "example/bp4"
+ optional = true
+ version = "6.5.0"
diff --git a/drafts/testdata/composite/package.toml b/drafts/testdata/composite/package.toml
new file mode 100644
index 00000000..ed3675ac
--- /dev/null
+++ b/drafts/testdata/composite/package.toml
@@ -0,0 +1,22 @@
+# Copyright 2018-2022 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[[dependencies]]
+ uri = "docker://example.com/example/foo:3.1.0"
+
+[[dependencies]]
+ uri = "docker://example.com/example/bar:9.3.1"
+
+[[dependencies]]
+ uri = "docker://example.com/example/baz:1.10.0"
diff --git a/go.mod b/go.mod
index 1c1c573a..d5f1d27e 100644
--- a/go.mod
+++ b/go.mod
@@ -3,11 +3,11 @@ module github.com/paketo-buildpacks/pipeline-builder
go 1.17
require (
- cloud.google.com/go/storage v1.21.0
- github.com/BurntSushi/toml v1.0.0
+ cloud.google.com/go/storage v1.22.0
+ github.com/BurntSushi/toml v1.1.0
github.com/Masterminds/semver/v3 v3.1.1
- github.com/aws/aws-sdk-go v1.43.27
- github.com/buildpacks/libcnb v1.25.5
+ github.com/aws/aws-sdk-go v1.43.39
+ github.com/buildpacks/libcnb v1.26.0
github.com/disiqueira/gotree v1.0.0
github.com/gocolly/colly v1.2.0
github.com/google/go-containerregistry v0.8.0
@@ -18,11 +18,22 @@ require (
github.com/rakyll/statik v0.1.7
github.com/sclevine/spec v1.4.0
github.com/spf13/pflag v1.0.5
- golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a
- google.golang.org/api v0.73.0
+ github.com/stretchr/testify v1.7.1
+ golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5
+ google.golang.org/api v0.74.0
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
)
+require (
+ github.com/creack/pty v1.1.18 // indirect
+ github.com/googleapis/go-type-adapters v1.0.0 // indirect
+ github.com/heroku/color v0.0.6 // indirect
+ github.com/imdario/mergo v0.3.12 // indirect
+ github.com/mattn/go-colorable v0.1.12 // indirect
+ github.com/mattn/go-isatty v0.0.14 // indirect
+ github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
+)
+
require (
cloud.google.com/go v0.100.2 // indirect
cloud.google.com/go/compute v1.5.0 // indirect
@@ -30,40 +41,44 @@ require (
github.com/PuerkitoBio/goquery v1.8.0 // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/antchfx/htmlquery v1.2.4 // indirect
- github.com/antchfx/xmlquery v1.3.9 // indirect
+ github.com/antchfx/xmlquery v1.3.10 // indirect
github.com/antchfx/xpath v1.2.0 // indirect
- github.com/containerd/stargz-snapshotter/estargz v0.11.1 // indirect
- github.com/docker/cli v20.10.12+incompatible // indirect
- github.com/docker/distribution v2.8.0+incompatible // indirect
- github.com/docker/docker v20.10.12+incompatible // indirect
+ github.com/containerd/stargz-snapshotter/estargz v0.11.3 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/docker/cli v20.10.14+incompatible // indirect
+ github.com/docker/distribution v2.8.1+incompatible // indirect
+ github.com/docker/docker v20.10.14+incompatible // indirect
github.com/docker/docker-credential-helpers v0.6.4 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-cmp v0.5.7 // indirect
github.com/google/go-querystring v1.1.0 // indirect
- github.com/googleapis/gax-go/v2 v2.1.1 // indirect
+ github.com/googleapis/gax-go/v2 v2.3.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/kennygrant/sanitize v1.2.4 // indirect
- github.com/klauspost/compress v1.14.4 // indirect
+ github.com/klauspost/compress v1.15.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.2 // indirect
+ github.com/paketo-buildpacks/libpak v1.59.0
github.com/pkg/errors v0.9.1 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
github.com/sirupsen/logrus v1.8.1 // indirect
+ github.com/stretchr/objx v0.3.0 // indirect
github.com/temoto/robotstxt v1.1.2 // indirect
github.com/vbatts/tar-split v0.11.2 // indirect
go.opencensus.io v0.23.0 // indirect
- golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect
- golang.org/x/net v0.0.0-20220225172249-27dd8689420f // indirect
+ golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
+ golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
- golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 // indirect
+ golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
golang.org/x/text v0.3.7 // indirect
- golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
+ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6 // indirect
+ google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9 // indirect
google.golang.org/grpc v1.45.0 // indirect
- google.golang.org/protobuf v1.27.1 // indirect
+ google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
diff --git a/go.sum b/go.sum
index 5eaed26a..80788f31 100644
--- a/go.sum
+++ b/go.sum
@@ -28,7 +28,6 @@ cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW
cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=
cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
-cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U=
cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y=
cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
@@ -38,14 +37,12 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
-cloud.google.com/go/compute v1.2.0/go.mod h1:xlogom/6gr8RJGBe7nT2eGsQYAFUbbv8dbC29qE3Xmw=
cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
cloud.google.com/go/compute v1.5.0 h1:b1zWmYuuHz7gO9kDcM/EpHGr06UgsYNRpNJzI2kFiLM=
cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=
-cloud.google.com/go/iam v0.1.1/go.mod h1:CKqrcnI/suGpybEHxZ7BMehL0oA4LpdyJdUlTl9jVMw=
cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
@@ -57,8 +54,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.21.0 h1:HwnT2u2D309SFDHQII6m18HlrCi3jAXhUMTLOWXYH14=
-cloud.google.com/go/storage v1.21.0/go.mod h1:XmRlxkgPjlBONznT2dDUU/5XlpU2OjMnKuqnZI01LAA=
+cloud.google.com/go/storage v1.22.0 h1:NUV0NNp9nkBuW66BFRLuMgldN60C57ET3dhbwLIYio8=
+cloud.google.com/go/storage v1.22.0/go.mod h1:GbaLEoMqbVm6sx3Z0R++gSiBlgMv6yUi2q1DeGFKQgE=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
@@ -73,8 +70,9 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU=
github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I=
+github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
@@ -114,8 +112,8 @@ github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x0
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/antchfx/htmlquery v1.2.4 h1:qLteofCMe/KGovBI6SQgmou2QNyedFUW+pE+BpeZ494=
github.com/antchfx/htmlquery v1.2.4/go.mod h1:2xO6iu3EVWs7R2JYqBbp8YzG50gj/ofqs5/0VZoDZLc=
-github.com/antchfx/xmlquery v1.3.9 h1:Y+zyMdiUZ4fasTQTkDb3DflOXP7+obcYEh80SISBmnQ=
-github.com/antchfx/xmlquery v1.3.9/go.mod h1:wojC/BxjEkjJt6dPiAqUzoXO5nIMWtxHS8PD8TmN4ks=
+github.com/antchfx/xmlquery v1.3.10 h1:U2yMwr8U0KmGM2iDG2Ky/3LfxNsiK4uw1bSBkeMO9+g=
+github.com/antchfx/xmlquery v1.3.10/go.mod h1:wojC/BxjEkjJt6dPiAqUzoXO5nIMWtxHS8PD8TmN4ks=
github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8=
github.com/antchfx/xpath v1.2.0/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@@ -127,8 +125,8 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0=
-github.com/aws/aws-sdk-go v1.43.27 h1:de0u6uSrtjPtSZ7I/452GUU2iNDdbYIawR2qkYoD1z0=
-github.com/aws/aws-sdk-go v1.43.27/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
+github.com/aws/aws-sdk-go v1.43.39 h1:5W8pton/8OuS5hpbAkzfr7e+meAAFkK7LsUehB39L3I=
+github.com/aws/aws-sdk-go v1.43.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -144,8 +142,9 @@ github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7
github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50=
github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
-github.com/buildpacks/libcnb v1.25.5 h1:D8UoXv39+0jkG4M+u/pfxYjLWZMOQv1TH6dZDRFpVsg=
github.com/buildpacks/libcnb v1.25.5/go.mod h1:KUVN17jE9c+iLqz8FHwfYyCEossLkKEbz1ixPYqwFNI=
+github.com/buildpacks/libcnb v1.26.0 h1:DIXbU5ofxPxPsWNvwQ5Uj/rBN7EPl82X7uF6t32GRx0=
+github.com/buildpacks/libcnb v1.26.0/go.mod h1:Y+uoFTeAmumUXR3CPzJdjPfmQ8Cq+bBw5e8ZVSlGFUo=
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -237,8 +236,8 @@ github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFY
github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY=
github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY=
github.com/containerd/stargz-snapshotter/estargz v0.10.1/go.mod h1:aE5PCyhFMwR8sbrErO5eM2GcvkyXTTJremG883D4qF0=
-github.com/containerd/stargz-snapshotter/estargz v0.11.1 h1:mNQqxcAWmDrV6d6yUvzFhfY8puNzoQz9v4diW+Pmei4=
-github.com/containerd/stargz-snapshotter/estargz v0.11.1/go.mod h1:6VoPcf4M1wvnogWxqc4TqBWWErCS+R+ucnPZId2VbpQ=
+github.com/containerd/stargz-snapshotter/estargz v0.11.3 h1:k2kN16Px6LYuv++qFqK+JTcYqc8bEVxzGpf8/gFBL5M=
+github.com/containerd/stargz-snapshotter/estargz v0.11.3/go.mod h1:7vRJIcImfY8bpifnMjt+HTJoQxASq7T28MYbP15/Nf0=
github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o=
github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o=
github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8=
@@ -283,6 +282,9 @@ github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
+github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
+github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4=
github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ=
github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s=
@@ -299,15 +301,17 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8
github.com/disiqueira/gotree v1.0.0 h1:en5wk87n7/Jyk6gVME3cx3xN9KmUCstJ1IjHr4Se4To=
github.com/disiqueira/gotree v1.0.0/go.mod h1:7CwL+VWsWAU95DovkdRZAtA7YbtHwGk+tLV/kNi8niU=
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/docker/cli v20.10.12+incompatible h1:lZlz0uzG+GH+c0plStMUdF/qk3ppmgnswpR5EbqzVGA=
github.com/docker/cli v20.10.12+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v20.10.14+incompatible h1:dSBKJOVesDgHo7rbxlYjYsXe7gPzrTT+/cKQgpDAazg=
+github.com/docker/cli v20.10.14+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY=
github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/distribution v2.8.0+incompatible h1:l9EaZDICImO1ngI+uTifW+ZYvvz7fKISBAKpg+MbWbY=
-github.com/docker/distribution v2.8.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v20.10.12+incompatible h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U=
+github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
+github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v20.10.14+incompatible h1:+T9/PRYWNDo5SZl5qS1r9Mo/0Q8AwxKKPtu9S1yxM0w=
+github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o=
github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
@@ -474,9 +478,13 @@ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
-github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU=
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
+github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=
+github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI=
+github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
+github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA=
+github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
@@ -491,6 +499,7 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/h2non/filetype v1.1.3/go.mod h1:319b3zT68BvV+WRj7cwy856M2ehB3HqNOt6sy1HndBY=
github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=
github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -523,6 +532,8 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn
github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
+github.com/heroku/color v0.0.6 h1:UTFFMrmMLFcL3OweqP1lAdp8i1y/9oHqkeHjQ/b/Ny0=
+github.com/heroku/color v0.0.6/go.mod h1:ZBvOcx7cTF2QKOv4LbmoBtNl5uB17qWxGuzZrsi1wLU=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
@@ -532,6 +543,7 @@ github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ
github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
+github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA=
@@ -561,9 +573,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
-github.com/klauspost/compress v1.14.3/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
-github.com/klauspost/compress v1.14.4 h1:eijASRJcobkVtSt81Olfh7JX43osYLwy5krOJo6YEu4=
-github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A=
+github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -586,9 +597,11 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN
github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
+github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
@@ -596,6 +609,7 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
@@ -610,6 +624,8 @@ github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXx
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
+github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
+github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
@@ -642,6 +658,7 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
@@ -685,6 +702,8 @@ github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mo
github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE=
github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo=
github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8=
+github.com/paketo-buildpacks/libpak v1.59.0 h1:9Kt1G0IZZbnIrgsfxU9SuAqJB5EBnVwNJqMgw5qFMa0=
+github.com/paketo-buildpacks/libpak v1.59.0/go.mod h1:hqdnjXrMRmt25/tw+FLC3UbT2uQXH1et2zZ8Br3ZXAo=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
@@ -789,16 +808,18 @@ github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h
github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As=
+github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
@@ -828,6 +849,7 @@ github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs=
+github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -880,8 +902,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE=
-golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA=
+golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -979,8 +1001,10 @@ golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4=
+golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -998,8 +1022,10 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a h1:qfl7ob3DIEs3Ml9oLuPwY2N04gymzAW04WsUQHIClgM=
+golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
+golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE=
+golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1115,11 +1141,12 @@ golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/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-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng=
-golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
+golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/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.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1202,8 +1229,9 @@ golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
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-20191204190536-9bdfabe68543/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-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
@@ -1238,13 +1266,11 @@ google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUb
google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=
google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
-google.golang.org/api v0.64.0/go.mod h1:931CdxA8Rm4t6zqTFGSsgwbAEZ2+GMYurbndwSimebM=
-google.golang.org/api v0.66.0/go.mod h1:I1dmXYpX7HGwz/ejRxwQp2qj5bFAz93HiCU1C1oYd9M=
google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=
-google.golang.org/api v0.69.0/go.mod h1:boanBiw+h5c3s+tBPgEzLDRHfFLWV0qXxRHz3ws7C80=
google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=
-google.golang.org/api v0.73.0 h1:O9bThUh35K1rvUrQwTUQ1eqLC/IYyzUpWavYIO2EXvo=
-google.golang.org/api v0.73.0/go.mod h1:lbd/q6BRFJbdpV6OUCXstVeiI5mL/d3/WifG7iNKnjI=
+google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=
+google.golang.org/api v0.74.0 h1:ExR2D+5TYIrMphWgs5JCgwRhEDlPDXXrLwHHMgPHTXE=
+google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1296,6 +1322,7 @@ google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
@@ -1321,18 +1348,17 @@ google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ6
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220114231437-d2e6a121cae0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220201184016-50beb8ab5c44/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220211171837-173942840c17/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6 h1:FglFEfyj61zP3c6LgjmVHxYxZWXYul9oiS1EZqD5gLc=
+google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
+google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=
+google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9 h1:XGQ6tc+EnM35IAazg4y6AHmUg4oK8NXsXaILte1vRlk=
+google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1381,8 +1407,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/integration/drafts_test.go b/integration/drafts_test.go
new file mode 100644
index 00000000..9336aa09
--- /dev/null
+++ b/integration/drafts_test.go
@@ -0,0 +1,34 @@
+package integration_test
+
+import (
+ "testing"
+
+ "github.com/paketo-buildpacks/pipeline-builder/drafts"
+ "github.com/sclevine/spec"
+
+ . "github.com/onsi/gomega"
+)
+
+func testDrafts(t *testing.T, context spec.G, it spec.S) {
+ var (
+ Expect = NewWithT(t).Expect
+ )
+
+ context("registry buildpack loader", func() {
+ it("fetches buildpack.toml from a remote buildpack", func() {
+ bp, err := drafts.RegistryBuildpackLoader{}.LoadBuildpack("gcr.io/paketo-buildpacks/bellsoft-liberica:latest")
+ Expect(err).ToNot(HaveOccurred())
+
+ Expect(bp.Info.ID).To(Equal("paketo-buildpacks/bellsoft-liberica"))
+ Expect(bp.Dependencies).ToNot(BeEmpty())
+ Expect(bp.OrderGroups).To(BeEmpty())
+ Expect(bp.Stacks).ToNot(BeEmpty())
+ })
+
+ it("fails fetching an image that does not exist", func() {
+ _, err := drafts.RegistryBuildpackLoader{}.LoadBuildpack("lasjdflaksdjfl")
+ Expect(err).To(HaveOccurred())
+ Expect(err).To(MatchError(HavePrefix("unable to load lasjdflaksdjfl")))
+ })
+ })
+}
diff --git a/integration/init_test.go b/integration/init_test.go
new file mode 100644
index 00000000..c556938b
--- /dev/null
+++ b/integration/init_test.go
@@ -0,0 +1,18 @@
+package integration_test
+
+import (
+ "testing"
+
+ "github.com/sclevine/spec"
+ "github.com/sclevine/spec/report"
+)
+
+func TestIntegration(t *testing.T) {
+ if testing.Short() {
+ t.Skip("Skip integration tests in short mode")
+ }
+
+ suite := spec.New("Integration", spec.Report(report.Terminal{}), spec.Parallel())
+ suite("Default", testDrafts)
+ suite.Run(t)
+}
diff --git a/octo/draft_release.go b/octo/draft_release.go
index 746c1887..37ae086d 100644
--- a/octo/draft_release.go
+++ b/octo/draft_release.go
@@ -139,13 +139,13 @@ func ContributeDraftRelease(descriptor Descriptor) ([]Contribution, error) {
},
actions.Step{
Name: "Update draft release with buildpack information",
- Run: StatikString("/update-draft-release-buildpack.sh"),
- Env: map[string]string{
- "GITHUB_TOKEN": descriptor.GitHub.Token,
- "RELEASE_ID": "${{ steps.release-drafter.outputs.id }}",
- "RELEASE_TAG_NAME": "${{ steps.release-drafter.outputs.tag_name }}",
- "RELEASE_NAME": "${{ steps.release-drafter.outputs.name }}",
- "RELEASE_BODY": "${{ steps.release-drafter.outputs.body }}",
+ Uses: "ghcr.io/paketo-buildpacks/actions/draft-release",
+ With: map[string]interface{}{
+ "github_token": descriptor.GitHub.Token,
+ "release_id": "${{ steps.release-drafter.outputs.id }}",
+ "release_tag_name": "${{ steps.release-drafter.outputs.tag_name }}",
+ "release_name": "${{ steps.release-drafter.outputs.name }}",
+ "release_body": "${{ steps.release-drafter.outputs.body }}",
},
},
)
diff --git a/octo/statik/statik.go b/octo/statik/statik.go
index dbd0ca7c..77d5eeef 100644
--- a/octo/statik/statik.go
+++ b/octo/statik/statik.go
@@ -8,7 +8,7 @@ import (
func init() {
- data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00 \x00check-republish-version.shUT\x05\x00\x01\x8d@\x06bt\x92Ao\x1a?\x10\xc5\xef\xf3)\xde\xdf\xe1\x00\x7fi\xa1\xe9q#\x0e(\"\x88C\x9a\nhT)\x8a*\xb3\x0c\x8b\xc5\xd6^ymT\x89\xf8\xbbW\xde5\xc9\xd2\xaa7\xdb\xf3f\xfc\xfc{\xbe\xf9o\xe2\x1b;\xd9*=a}\xc2V6\x07\xa2\x86\x1d2\xf6\x06\xb5\xaay/UET\x18\xed\xa4\xd2\xcdp\x843\x01\x95)d\x85\xcdl1\x15\x83\xf3m\x10\x84v38of\x8b\x9bSxW,\x1fg\x8b\xf9:\x8a>\x07A\x04\xec\x8d\xed\x0e\xa14\x06\xe7\xae\x1e\xee\xb03\x04\x00j\x8f\x97\x17\x88vN\x10\x98N\xe3\xba\x15\x05\x81\xd7\xd7;\xb8\x03\xebV pq0\x10y\xbe\xe3\xad/\xf3\xfc\xc1x\xbdC\xeaL\x12\xcb\xce[\x8dO\xedv\xaf\x08\xd8\x19\xcd\xd1G\xaa\xdcR J&\x07\xc3\xc2J\xcd\xa8\x9a\xce\xc0j1\xdf\x041\"\x8a\x9e7\xb3E\xebxX*\x07'KdU\xb2\xf9\xe3\xebj\xfe\xb0\xfc\x1e\xfe\x17xCc\xacC\xf6\x8c\xccb\x94\x1e\xf5<_\xad\x97O_\x12\x9b\xeb\x1e\x11\xae\x04i\x15\x01R\xcb\xe2B=^\x95\x8aA\xbc#Y\x07\xd1\x03\xd2\xe1\xe8S\x18c}Tu\xadt9\x16\xd4'\xd6\xb0\xcb\x8cw\xb5w\xd0\xf2'O\x9b\xa3\xaa\xf3\xdcY\xcfI\xf7K9j\x81\xd1GSi\x8d\xaf\xf3\xfc\xfe\xc0\xc5Q\xe9\x12\xc6\xbb+\xda\x11L\x11\x8b\xb1\x90e\x18\xff}*>\xf4\x97\xa9\xacwip\xff\xf4O\x83N\xda\x92]\x9e\xf7(\x10\xb0\xb5,\x8f\xd4%\xda\xfd\xab\x94Q?\xc7\xf5\xd3\xb7\xd5}\xfc=o(-\xd7\xc8N\x10\x95t\xdc\xb8\xeb\xbc.q\xfd\x93\x91\xf1\xb6\xe0ha\xf9\x98\x9e\x10)\xb5\xb7\xff\x0e\x00\x00\xff\xffPK\x07\x08\xe6=dt\xb0\x01\x00\x00E\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00 \x00checkout-next-version.shUT\x05\x00\x01\x8d@\x06bd\x91O\x8f\xda0\x10\xc5\xef\xf3)^\xbd\x1c\xa0R\xa0\xdb\xa3W\x1cP\xc5F\x1c\xfaG\x80V\x95V\xab*$&X\xa4v\xe4?\xa8\x12\xf5w\xafl\xbcK\xe8\xdef\xe6\xbd\x99\xbc\xfc|\xf7a\xe6\xad\x99\xed\xa4\x9a u\xc2\xae\xb2\x07\"+\x1c\n\xe15z\xd9\x8b}%;\xa2Z+WIe\xc7\x13\x9c \xe8t]u\xd8.\xca9\x1b\x9d\xef\x03#\xa4ft\xde.\xca\xbbSxs\xac\xbe.\xca\xe5&\x9a>\x07F\x04\xec\xb5\xb9\x0c!\x15F\xe7\x8b\x1e\x1e\xd0h\x02\x00\xb9\xc7\xf33X\xba\x13\x18\xe6\xf3X'S`xyy\x80;\x08\x95\x9c\x80\xa8\x0f\x1a\x8c\xf3F\xec|\xcb\xf9\xa3\xf6\xaaA\xde\xcc\x16#\x9c7\n\x9fR\xbb\x97\x044Z\x89\x98#+\xf7\x14\x88r\xc8\xd1\xb86\x95\x12\xe8\xec%\xc0\xba\\n\x03\x9b\x10\xc5\xcc\xdbE\x99\x12\x8f[\xe9\xe0\xaa\x16E\x97c\xfe\xfa\xb1^>\xae~\x86\x8f\x0c\x7fa\xb5q(\x9eP\x18L\xf2O=-\xd7\x9b\xd5\xf7o\x99\xcd\xcdJ\xb8\x91s\x15\xf1Q\"\xf1\xca<~(\x8b\x81\xbd\x01\xd9\x046\xc0q\x811d0\xc5\xe6(\xfb^\xaav\xcah\xc8\xcb\nWh\xefz\xef\xa0\xaa\xdfbn\x8f\xb2\xe7\xdc\x19/\xb2\xef\x8ft\x94p\xd1u\xa95\xda\xf7\x9c\x7f9\x88\xfa(U\x0b\xed\xdd\x0d\xeb\x88\xa5\x8eb\x14\x8a\x02\xd3\xf7Sv\xf5\xbf^\x15\xaa\xc9\x87\x87\xd3\xff\x03\x9e\x84\xb1R+\xce\x07\x18(\xe7L\xef\xf9/\x00\x00\xff\xffPK\x07\x08\x9f\xa1C{}\x01\x00\x00\xc5\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xceQ~T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x00compute-version.shUT\x05\x00\x01\x84-Db\x9c\x91\xcfn\xd3@\x18\xc4\xef\xfb\x14\xc3b) ecZ\xa9\x07\x0cAr!\xc5AJ+%\x85\x8b\xb1\"\xa7\xf9\\/8^kwm\xfe\x98\xe5\xd9\x91\x93B\x9c\x0bT\x9c,\x8dgF\xbfo\xf6\xf1#\xbf6\xda_\xcb\xd2\xa7\xb2\xc1:59c\x86,\x04\xd5\n\x95\xac(Ke\xc1\x98\xcc\x10C|\x07\xf7\xda\xb7\xb3\x9b\xe8\xfd\xc5j1\xbd<1d\x1dG\xf2\x026\xa7\x92\x01t\x9b+\xf0\x83\x01]\x93U\x88\xfb)\xf1\xb2.\x0d\xd9W.y\x8aumarU\x17\x1b\x94\xd4\x90\xc6\x9a@\xdb\xca~\x83\xd2\xd8\xd9xW\xfbUZ\x9c\x9d\x9f\xb3L\xeeIb\xf4\x0b\x1d&?\xa1)3\xbeM\xef\x8c\xdf\x0c\xe3g\xe2yr\xf2q|\xfc\x1d!9\x90~\x98.\x96\xb3\xeb\xab\x89\xd7^\x84\xcbh\xb5\x98\xce\xc3\x9b\xd7Q|\x9a8\xc6\x80y\xf8\xeez\xb1\xfa\xed\xe1\xdep\x7f\x98\xd7\xdeK\x8e\xe3\x07\xd2/\x9f!.1\x18\x0f0h+-K\x0b\xef\x14n0\xea\x90\xe7\xb3\xab\xffm\xe0c\x0e\xefl_\xf4g\xd3 0d\x85\xaamU[\x94\xe9\x96&\x0di#U)\xb6\xe9'\xa5\x83\xc0k\x8f\xa0\x1d\x7fHT\x96\xf7\xd1>\xad\xe3\x8c\x8a\xbf\xad\x9cS\xba1\xfep\xfc\xe0E\xa90\xd4w\x0c\xef\xa4\x85\xa6FT\xa96\x04!L\xae\xb4E4\x0d\xdf\x8cvo\xfc\x0f\xf0\x0e\xb9\x07\xbb3/\xa9\xa0[K\x1b\x1c~!\xd3j\xcb\x80'\x1dvp|\xccN6y\xda\x93\x97Q\xe8\x18g\xbf\x02\x00\x00\xff\xffPK\x07\x08jI\xb5)\x85\x01\x00\x00\x12\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x00create-action.shUT\x05\x00\x01\xf4\xc1#a|\x8f=O\x84@\x10\x86\xfb\xf9\x15\xaf+-\xd2c(\xfc j\xe3]\xe0\xce\xe6\xbc\x82\x8f\x01&G\x96\x0d\xcb\xda\x10\xfe\xbb\x01Or1j\xb7\xd9yf\xde\xe7\xbd\xbe\n\x9c\xed\x83\\t\xc0\xfa\x03yf\x1b\"\xcb\x03|v\x1d\x8c\x18\xae2i\x89\xb8h:\xa80\xac\xfb\xce\x990\xbcw\xd2\x96\xa2kx\xe3\xee.y\x8awS\xe8\x8doq\x92\xbel^'E@\xd9\x15'\xee\x91\xcf\x1c\xde \x00|\xbf\x92\x96\x91\x15\x83t\xda\x06\x8f\x0b\xb1|}\xcf\x17\xda\xcf\xfa\x1a*\xdd\xec\x93\x878\xf2\xc6\xaf\xc7\xa4Vh\xc8j\xa8_c\xcf\xc8\xcd*\xcb\xba<\xfb*\"\xa9p8\xcc\x9b\xdb}\xfa<)D\x11\xd4\xd0;V8\x1eo14\xac \xf8Qs\xebl\xf3_\xcb\xb5\xa7q\xb6\xf9\xc3\xea\xe2\xea\xa5\x0f\xb7\x96\xd7Qz\x12c\xe6\xa0\xf9\x8e\xa2J\xe83\x00\x00\xff\xffPK\x07\x08_n\x1bS\xe6\x00\x00\x00\x98\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00create-builder.shUT\x05\x00\x01\xf4\xc1#a\xac\x8e\xcdJ\x031\x18E\xf7y\x8ak\x9c\x85\"q\xf6\x117\xc5\x82\x03E\xa5\xa5nj\x17\x99\xf4\x9b\xce\x87i\x12&\x89\x08\xc3\xbc\xbb\x0c\xfe\xec\xdcuy9\x1c\xee\xb9\xbc\xa8K\x1a\xea\x96}M\xfe\x03\xadI\xbd\x10\x892\x14\x95\x80\xc8\x91:\xc3N\x08\xee\xb0\xdbAy\xc8j|\xd9.V\xcd\xe6\xf1\xe6s\x92\xd8\xef\xef\x90{\xf2\x02\x88\xc6\xbe\xa3-\xec\x0e4\xc0\x0ed2\xe1M\x00\x98\x9d\xc5\xb6Y=,\xd7\x93\xae\xc6\xd7\xe5z\xd3\x01\x00\x00\x81\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x00enable-pack-experimental.shUT\x05\x00\x01\xf4\xc1#a\\\xccO\xaa\xc20\x10\x80\xf1\xfd\x9cb^\x9e\xdb6'\xb0\xbb\x82\x1b\xf1\x0c\xd38i\x87&\x93\x90?\"\x88w\x17\xc1\x8d\xee\xbf\xdf\xf7\xffg{-v\x11\xb5\xac7\\\xa8n\x00\x95\x1b\x0e\xdc\x13f\xc9\xecI\x02\x00\xbb-\xa1\x99\x95\x96 \xbab&\xb7#\xdf3\x17\x89\xac\x8d\x02z\xa6\xd6\x0bW\x03\x10\xf7\xab\x14\x1c2\x9a\xc3\xe3t9\xcfOc\xc77\xf8L\xbe\xd8\x11[\xe9lp\x9a~k\xeb\x92zY\xc7\x96b\x80W\x00\x00\x00\xff\xffPK\x07\x08hy\x98\xea\x84\x00\x00\x00\xa7\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00D\x80fT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x00install-crane.shUT\x05\x00\x01\x00\xdb$bl\x90AO\x021\x10\x85\xef\xfd\x15c\xe5Zz1\xc4x AB\x84D\xc1 z\"\xd9\x942v\x1bKg3\xed\xc2\n\xf2\xdf\xcd\xeaz!\x1e\xdf\x97\xbc\x97|\xef\xfaJ\xd7\x89\xf5\xc6G\x8dq\x0f\x1b\x93J!\x12fPX\x13T\xbe\xc2w\xe3\x83\x10hK\x029\x8b)\x9b\x10|t`\xd9D\x84\xdei\xbc\x1c\xcd'\xc5\xdbd\xf92[\xcc\xcfR\x88\xdd\xc7\xd63\xa8\nd\xef4]`\xcc]\x08dM\xf6\x14\x7f\xa2,s\xae\xd2\x9d\xd6\xce\xe7\xb2\xde\xf4-\xed\xb4#r\x01\xb5#e)f\xe3#2\xa3\xf3)\xf3\xa7f\x0ch\x12&\xbd\xa5C\x0cd\xb6z\x7f\xa9\xf2o\xb1x\xf4\xb1n\x8a\xe6vP\x0cn\xfa\xd9p\xdf\x1d%\xac\xc5\x17d\xc3\xa0\xc6\x17\x86\xaa9\xfe\x1e%\xbe\x03\x00\x00\xff\xffPK\x07\x08\x85\"\x0ei\xfb\x00\x00\x00h\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00rsKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x00install-create-package.shUT\x05\x00\x01Yr\x06b\x14\xca\xc1\x0e\x820\x0c\x00\xd0\xfb\xbe\xa2\xe2\xb96|\x007\x8d\x17\x0d'?\xa0\x1be4\x0c\xb6\xd0M\x7f\xdfp}y\xd7\x0b5;\xc8\xebN\xb2\x7f\xc1\xb3-\xce\x99T@i\x19\x8a\x16\x99Y\x93s\xcf\xb1\xef\xfb\xf7x\xff\xbc\x1eC\xde!f\x88gj\x80i\x9a\x13G\x1b:4\xc0_\x07Q\xeb\xd2\xfc-\xe4\x8d\n\xafR3\xfa\xa6i*\x1cV\xa3\xa4\xbe\xf0Ja\x9b(\x1c\xc2U\xf0t\x8e\xe2\xfe\x01\x00\x00\xff\xffPK\x07\x08&\x95T\xcd}\x00\x00\x00\x89\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00rsKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00install-octo.shUT\x05\x00\x01Yr\x06b$\xcc?\xae\xc20\x0c\x80\xf1=\xa7\xf0\xeb\x9b\x83\xd5\x03t\x03\xb1\x80:q\x80\xfcqS\xabi\x1c\xd5 \\\x1fU\xac\x9f>\xfd\xfe\xff\xb0\xeb\x81\x9e\x0bRy\x83w\xba\x1a\xa3\xd4\xc0R\x17\xa8\\iq\x9c\x8d\xb9\xcf\xe38>\xe7\xeb\xebq\x9b\xa4@\x12H\xe7\xd4\xc1\xe6\xb8d\x97t\x1a\xac\x82\xfd\x0c\x90\xb8\xad\xdd_\x82\xecX\xddFM\xac\xef\x9ccuaS<\xc1\xcc\x85~\x8d\x0e\x0c{D M\xcc7\x00\x00\xff\xffPK\x07\x08\xc6\xd7y\xcb~\x00\x00\x00\x89\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00install-pack.shUT\x05\x00\x01\xf4\xc1#a\\\x90\xcfk\xfa@\x10\xc5\xef\xfbW\xccw\xbf^\xd7\xbd\xf7 X\x91&\x94VimO\x82l\x92i28\xee\x86\xfd\xa1\xa2\xf5\x7f/\x1b\xd2C\xbd\x0c\xbc\x0f\xf3\x867\xef\xff?\x9d\x82\xd7\x15Y\x8d\xf6\x08\x95 \x9d\x10\x01#(L\x0ez\xea\xf1\xcb\x10\x0b\x81u\xe7@\x966D\xc3L\xb6\x85\xde\xd4{\x98\\\xd7\xf3\xc5\xf3\xees\xf9\xf6^\xae^oR\x88\xc3\xbe!\x0f\xaa\x079\xb9\x16\xab\x97\xe5M\xe6\xdb\xa3}D\x99H\x98\xcd2x*7\xc5\xc7\xe3n=\xdf\x14\xd9^'\xcf\xb0\x15\x00J\xb1\xabM$gG\x19:wR\xe8\xbd\xf3\xbf\x80\x18m\x1c\x84\xecb\xec\xc3\x83\xd6-\xc5.U\xd3\xda\x1dt\x95\x88\x9b\x1c2\xe8<\xb5GF\x130\xe8\xc6\x9d,;\xd3\xe8\xe3]\xfaaO\xddS\xc5d\xd3y\x1a\xdb\x8b\x84\xad\xf8\x86h<\xa8\xc5\xdf\xf7@\x9d/C!\xe2'\x00\x00\xff\xffPK\x07\x08\xdbZX\xfe\xeb\x00\x00\x00O\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00install-richgo.shUT\x05\x00\x01\xf4\xc1#ad\x901O\xc30\x10\x85w\xff\x8a\xc3tu\xbc\xa0\n1T\x82\xaaj2@P)L\x95\"'1\xb1U\xc7\x17\x9d\x9d\xb6\xb4\xf4\xbf\xa3@\x18\xaa\x8e\xef\xbb\xbb\xa7w\xef\xf6F\xf6\x81di\xbd\xd4~\x07\xa5\n\x86\xb1\xa0#\x08\xdd#t\xb6\xd3\x9f\xca:\xc6te\x10x\xe6CT\xceY\xdf\x00\xd9\xca4\x08\x93\xd3*\x9b\xa7\xcb\xbc\xf8X\xac\xde\xb2\xfc\xe5\xcc\x19k\xb7\xb5%\x10\x1d\xf0\xc9)\xcd\x9f\x17g>\xf8\x8f\x16#\x1a\x08\x87\xd9l\x00\xcbl\x9d\xbe?\x15\xaf\x8f\xebt8\xafzr\xb0a\x00B8\xacT\xb4\xe8G\x19\x0c\xee\x85&B\xfa\x07\xd6i\x1f\x7f\x0571v\xe1A\xca\xc6F\xd3\x97I\x85\xad\xdc~\xa1\xb9\x9f\xca\xbf\xa8\x92\xb4\xd3*\xe8 k\xdc{\x87\xaa\x96\xbb\xab\xf4\xe3nq5(\x9c\xf5\xfd\xa1Pm=\xbdK\xa2\xa2\xa49r\xd8\xb0o\x88\x8a@\xcc/_\x05q8\x8e\x05\xb1\x9f\x00\x00\x00\xff\xffPK\x07\x08-\xdb\xfd\x81\xf6\x00\x00\x00a\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00rsKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x00 \x00install-update-build-image-dependency.shUT\x05\x00\x01Yr\x06b$\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb\x8c\x97~@7\x8d\x8b\xa6\x93\x1fp\xc0\x95^J\xe1\"\xa0\xf1\xef\x8dq~\xefx\xc0^\x9f\xe8$#\xe7\x178\xaa\xab1\x95\x1bX\xee\x05T\x94\x17\x92d\xccu\x1e\xc7\xf1>\x9f\x1f\xb7\xcbT2\xc4\x02\xf1\x97:\xd8\x14\x96D\xb1N\x83\xad`\xdf\x03Dikw'_vT\xda\xb8\x15\xeb\xba\xa4\xa0\xe4\xb7\x8aI\x9c\xd2\x86~\x0f\xd85P\xe3?Z\xd9)\xb2\x0d\xac\x9c\x03g\xff1\xdf\x00\x00\x00\xff\xffPK\x07\x08\x80\xfd\xc2u\x86\x00\x00\x00\x98\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x97}fT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&\x00 \x00install-update-buildpack-dependency.shUT\x05\x00\x01\xee\xd6$bD\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb\x8c\x97~@7\x8d\x8b\xa6\x93\x1fp\xc0\x95\x92R\xb8\x08\xa7\xf1\xef\x8d\x93\xf3{\xc7\x03j{\xa2K\x05\xb9\xbc\xc0Q[\x8di\xdc\xc1\xb2V\x90$\xbcP\xca\xc6\\\xe7q\x1c\xef\xf3\xf9q\xbbL\xb5@\xac\x10\x7fI\xc1\xe6\xb0d\x8am\x1al\x03\xfb\x1e \xa6\xbe\xaa;\xf9\xba\xa3\xd0\xc6\xbdZ\xa7)\x07!\xbf5\xcc\xc9 m\xe8\xf7\x80*\x81:\xff\xd1\x06\x16.\x81\x8b\xff\x98o\x00\x00\x00\xff\xffPK\x07\x08D\x9aU\x15\x83\x00\x00\x00\x96\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00rsKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00 \x00install-update-buildpack-image-id.shUT\x05\x00\x01Yr\x06bD\xcc1\x0e\xc20\x0c@\xd1=\xa70e6V\x0f\xd0\x0d\xc4\x02\xea\xc4\x01\x9c\xc6M\xad\xa6I\xd4$p}T1\xb0~=\xfd\xf3\x89Z\xd9\xc9j$\x89o\xb0\\\x16c\x8aT@i \xb2f\x99Y\x831\xf7\xb1\xef\xfb\xe7x}=nC\x8a\xe0\x13\xf8\x035\xc0\xe0\xe6\xc0\xbe\x0c\x1d\x16\xc0O\x07^\xeb\xd2\xeceJ\x1be^\xa5&\xb4M\x83\xcb<\xad\x85\x8ea\xd0(\xbf&;M\x9b\xa3\x96\x1dW\xf93\xd4\x8d\xbd\xa0:\xf3\x0d\x00\x00\xff\xffPK\x07\x08\x81i\"\xe9\x86\x00\x00\x00\x9e\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00rsKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&\x00 \x00install-update-lifecycle-dependency.shUT\x05\x00\x01Yr\x06b\x14\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb\x8c\xa4\x1f\xd0M\xe3\xa2\xe9\xe4\x07\x1cp\xa5\x97^\xe1\"\xa0\xe9\xdf\x1b\xf7w>\xb9^\xdf\xcesv\x94?\xe0\xb1\xae\xc6Tj`\xa9\x17PVZ\x90\xc5\x98\xfb<\x8e\xe3s\xbe\xbe\x1e\xb7\xa9dH\x05\xd2\x1fu\xb0\x12\x17\xc1T\xa7\xc1V\xb0\xdf\x01\x12\xb7\xb5\xfbK(\xbbS\xdc\xa8\x15\xeb;KT\x0c[u\xc2^qsa\x8f\xaek\xc4FVx\xa1p\x04!\x1bI)G\xca\xe10\xbf\x00\x00\x00\xff\xffPK\x07\x08[\xf5\xeb\xb7\x86\x00\x00\x00\x96\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00rsKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00 \x00install-update-package-dependency.shUT\x05\x00\x01Yr\x06b\x14\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb|^\xfa\x01\xdd4.\x9aN~\xc0\x01WJJ\xe1\"\xa0\xf1\xefM\xd7\x97w>Q\xafo\xb21\x93\xe4\x0fX\xae\xab1U\x1a\xa0\xf4\x02\x1aU\x16\x8e\xc9\x98\xfb<\x8e\xe3s\xbe\xbe\x1e\xb7\xa9d\x08\x05\xc2\x91:`\xf2K\xe2P\xa7\x01+\xe0w\x80\x10\xdb\xda\xed\xc5\x95\x9d\x947i\x05m\x8f\xc9+\xbb\xadR\x8aVy#\xb7{\xea\xea\xb9 \x1e\xceA\xd0\x8bJ\xf6\x92\xdd\xcf\xfc\x03\x00\x00\xff\xffPK\x07\x08(\x19B-\x84\x00\x00\x00\x94\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00 \x00install-yj.shUT\x05\x00\x01\xf4\xc1#ad\x8fMK\xc3@\x10\x86\xef\xfb+\xc6\xb57Y\xe7\xee\xa1\xa0PL\x04\xadh\x15\x04\xa1l\x92\xb1\xbbq\xb3\x13\xf6#m(\xfd\xef\x12\x89\x87\xe2\xf1}\x86w\x9e\x99\xcb\x0b\xcc1`e=\x92\x1f\xa0\xd2\xd1\x08\x11)\x81\xa2\xcc\xd0\xdb\x9e\xbe\xb4uBPm\x18d\xe9c\xd2\xceY\xbf\x83\xb1\x85\xc5\xf1\xe3a\xfb\xbezy-\xd7O')D\xf7\xdd\xd8\x00\xaa\x07\xb98\x16\xeb\xc7\xd5IN{\xe7\xea\x8c&\"a\xb9\x9c\xc0}\xb9)\xde\xee\xb6\xcf\xb7\x9bb\xaa\xd798\xf8\x14\x00J9\xaeu\xb2\xec\xe7\x18\x0d\xef\x15\x85\xc0\xe1\x0fXG>\xcd\x81s\xeas:\x97\xe2\xd8\xfeN\xa5I\xa9\x8f7\x88;\x9bL\xae\xaek\xee0\xd6\x8e\x06\xeb \xc7\x16\x039\xd2\x91\"6\xbc\xf7\x8eu\x83\xc3\xd9W8\xb6\xcaY\x9f\x0f\xd3}\xa6\xe3\x06\xae\x0e\xffL\xe2'\x00\x00\xff\xffPK\x07\x08Z}\x1a\x0e\xe4\x00\x00\x00E\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x9bX~T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00package-buildpack.shUT\x05\x00\x01V9Db\xbc\x93Qo\xd30\x14\x85\xdf\xfd+\xce\xbc\xa8j\x1fBy\x0e\x8aD\x81B\x0b\xebZ\xb5\x83\x97RMNr\x93ZK\xed\xc8v\xd0P\x95\xff\x8e\x92\xb4!\x9b4\x18 \xd1\x17\xd7\xb1\xcfwo\xce\xb9\xb9\xbc\x18\x97\xd6\x8c#\xa9\xc6\xa4\xbe!\x12v\xcf\x98%\x07\x9fJ\x8dB\x16\x94\n\x993\xc6V\x93\xb7\x9f&\x1f\xa6\xb7W\xf3\xcdM8\xf4N\xdb\xcd\x88]bz\xef\x8c\x88\x1dRi\xac\x83\xa1Bc\xf8N\xc7wd0+\xa3\x11\x84\x85\xdb\x13\x0eB*8\x8dB\xc4w\"#\x0c`(\x93\xd6\x919\xc3C\xef\xd8/\xb3}\xb9\xab\x18\x93)\xb6[p\xef\xb8\xfa\xfc\xe6j\xbe\x99\x05\xfe}\xc5\x11\x86\xe0\xce\x94\xc4\xb1\xdb\xbd\xaa\xf1\x8a\xa1!#*e\x9e4\xff\xce\x85\xbe2\x00\x0d\xa1\x85W\x81w\xfc2]o\xe6\xcb\xeb\x8a\x9fN}?\xd6*\x95Y}m\xb6\\L+>>\xc9_8}\xc8\xbb[E\x19\xe5\xb2\xf6\x08h\x1b\xf3\x15:\xda\xedb~\xbd\\\x07~\x85\xc1\xe0\xd1\xc1\xe4c{\xd0\xeb\x16\x88\x8dP\x04'\xb2'\x9b\xe3\x8f\xd8\x15\xff\x0ba]\xbb\x11\xa6\x92=G\x9b\x0bG\xd61\x80\xe2\xbd\x06\x0f\x02K\xce\xd7\xa5+J\x07%\x0e\x14&2#\xeb\x82\xc0\x1b\xb6\xb0v\xff\x14o\xc4k\xb7.\x11\xeb\xe2{\x9d\xbfv{2\xcd\x98X\xe9\xb4\x91da\x0b\x8ae*)\xa9\x9b\xd4\x06+H\xd5\xc3\xb5\xd3\xf0zwz\xfbD7K\x9b\x00\xb8\xb7\xe2\xb8\x08\xeb\xb5\xbd\xcd\xd1\xf7\xf8\xa7]M\xfd_\xf8\xb5z\xf0\xa4\x13\xff{\xcc\x0f\xba8\x1b\xff\xac\x9c\xffP\xd9\x05\xdd\xfe\x9a\xb8\x7fO\xe8\xe2\xeei\x12\xad\x881\xca-\xfd\x9f\xcf*\xd5\xe6 \x9a z\xbf\\/&7\x15g\xa9\xfc\x11\x00\x00\xff\xffPK\x07\x08J\xed3\xf2\xc0\x01\x00\x00\x9c\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x00republish-image.shUT\x05\x00\x01\x8d@\x06btQ\xcdJ\xf3@\x14\xdd\xcfS\x9co>\x97\x0d\x01\xa1\x9b\x91.\xc4\x06\xe9\xc2\x16\xdaZ\x17*2\xed\xdc&\x17\xeb$d&\x8d\x8b>\xbc\x98\x98Q\x12\xb2\x0b\xe7\xef\xe6\x9c\xf9\xff/\xae\\\x19\xef\xd9\xc6d\xcf\xd8k\x97 \xe1\xc8#\xa2*G\xc1\x05\x1d5\x9f\x84\xe0#\x9e!\xaf6\xab\xc7\xf5]\"1\x9bAJ\xbc\xe2ri\xe0\xed\xed\xfa>\xd9\x0e\xe0V\xfd\xb6K\xd6\x9b\xc5j9\xe2\x1a\xa5\x97\xc9\xd3b\x1e\xd0\x1b\xf8\x8c\xac\x00\x00:d9\xe4\x03;\xc76\x85\xcb\xab\xf2@\x13x]\xa6\xe4'8S\xe98\xb7\xd0\xd6\xc4y K5\x1b%\xff\x18\xbf\xbf\xb0i\\\n]\xa3\x1e\xbfkC\x02\x1f~\xb2\x9f\xb3m\xae*t\x13\x8c\xe6\xf4\xca\xf6s\x96Tc1W\xf8i\xdd\xd2\x9f\xecq=\x9d\x8a#\x0bQ\x15F{\x8a\xf6\x15\x9fL\xa1\x0f\xef\x11\x7f\xe8\x94\"6xi\xc4Q\x0b\x84\xd5\xd5`\xfd\xa03\xbf\xe3vX7\xda\xf0Q:\x85\xa5:\\h5j\xd0\xe9+\x00\x00\xff\xffPK\x07\x08\xcd\x81\x9d\xa8\x08\x01\x00\x00M\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xceQ~T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00 \x00run-integration-tests.shUT\x05\x00\x01\x84-DbD\xc8\xc1\x0d\xc5 \x08\x00\xd0;S\xf0\xf3\xcf\xc2\x1c\x1dC\x1b\xaa$\x0d\x1a\xc0\xce\xdfc\xaf\xef\xff\xe3\x1d\xceM\x8d\xc5\x1el5\x06@Hb\x91=q\xe9\x92\xab\xea\x0d\xe0z\x8e>1%\x12\x89\xd5R\xba\xd7\xd4iLDX|\x1b\x1e\x1f\xc2\x1b\x00\x00\xff\xffPK\x07\x08t4b\x1aN\x00\x00\x00W\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00run-tests.shUT\x05\x00\x01\xf4\xc1#a\x04\xc0A\x0e\x84 \x0c\x05\xd0}O\xf1'\xb3\xb6=\x13\x98\xaf41@h\xf1\xfc\xbe\xff\xcfv,\xab\xde\x8d\xfdE-\xd1D\x82\x89\x83{`\xfa\xe4U\xfc\x11Y~\xb6{ \x19 5U\x95/\x00\x00\xff\xffPK\x07\x08\xa4\xd5!O?\x00\x00\x00:\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xceQ~T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00run-unit-tests.shUT\x05\x00\x01\x84-Db\x04\xc0\xc1\x0d\xc5 \x08\x06\xe0;S\xfc/\xef,L\xd3\x01\xb4\xa1\x95\xa4A#\xd8\xf9\xfb\xfd\x7f\xb2cI3\x17\xf5\x17\xadF'\nM\x14\xdd\x03\xd3\xa6^\xd5\x1e\xa2eg\xbf\x07R#\xc1\xc2\xcc(k;\x0e\xb7\xa4/\x00\x00\xff\xffPK\x07\x08!\xdd\xeceF\x00\x00\x00D\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x00update-build-image-dependency.shUT\x05\x00\x01\x8d@\x06b\x9c\x91Qk\xdb0\x14\x85\xdf\xf5+N5C\xe2\x0d9\xb4\x8f^\xb3\x91m\xee\x08d-4\xd0=\xccc(\xf6M\xac\xc4\x965IN)\x89\xff\xfbp\x92\x0d\x87\xd1\xc2\xf6\xaa\xc3w\xefwt_]\x8c\x1agG\x0b\xa5G\xa4\xb7XHW0\xe6\xc8CPS\xc3(CK\xa9J\xc6\xeef\x9f~<$\xf7\xf3\xe9\xdd\xed8\x18>\xad!\xfc\x1a\xd7X4\xaa\xcc\xc9F\xbe\xaeJ\xec\xb1\xfe a\xc1#\xe7e\xb6\x89R~\x88\x85\xaa\xe4\x8aR\x8e=2i|ci\x98\xf2`7\xfd2\xf9\x9c\xb4\xf1\xf0\xfd\xf5\x96\xacS\xb5~\x17\xbd\x11\xc1\xee\xe3l2\x9fOo\xa6\xc9}\x1b\xa6<\xc4\x1e\xd1)\xe7!\xbbM\xbe\xf6,2+5\xa1t\xf83\xad\xdb\xb1\xb2d\xc0\xa3\xd7\xe7\xb3\xba\xc4\xd5\xd6C<`\x0f/U \xa1q\x192\xd6\x98\\z\x12=U\x91\x93!\x9d\x93\xce\x9e\x902@\x88SMq\xa8y\xd6\xf9\x98\x9f\x0c;\x91\x9eb\xcb\x19[)\x0f\x99\xe7g\xd0\xe11+(\xdb\xd4\x8d\x87\x10\x88\x18SK|\x03\x0f\x86\x94\x155x\xd0\xfb\xee\xce\\>n n0\x88\x06\x18\xec\x8cU\xda#\xb8l\x07!\xc7\xc5\xb8G\xf5v\xbfL}\x7f\x0b_\x90f\xc0l\xf2!\x99\x8d\xb9\xa3jK6\xae\xe4\xba\xb6\x9cQ\xf9\xef:W\xff\xa5s\xf5\xb2\x8e\xd2G\x1dG\x7feF\xfa\xac\xe0l\xa9\x18;\xae\x8bcG^\xd4\x8d7\x8d\x87\x96\x15\x8d\xeb2\xff}\x998\x0ev\xbd\x12-\x7f\x16\xd2\xf4\xd8\x87\xce\xcf\xf9\x1ct\x02D)\x17Tv\xd8\xc1\xb5\xe5\xecW\x00\x00\x00\xff\xffPK\x07\x08t\x02$\xb3\x98\x01\x00\x00_\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00 \x00update-buildpack-dependency.shUT\x05\x00\x01\x8d@\x06b\x94\x92]o\xda0\x18\x85\xef\xfd+N\xbdH\xc0\x85\x83\x86\xd4^d\xcb\x05\x1bLCB-\xa2\xedn\xba\xaa2\xf1\xcbb\x08\x8e\x17;T\x15\xf0\xdf'>\xe5\xb1\xcf\xde\x9es\x9e\xf8q\xe47\x17\xed\xdaU\xed\x896m2KL\xa4\xcb\x19s\xe4!\xa8.a\xb5\xa5\xa9\xd4\x05c7\xc3\xde\xd3\x97\xfe\xf8vps\x9dF\xcd\x97\x19\x84\x9f\xe1=&\xb5.\x94\x95\xd9<\xf6\xe5\xa2\xc0\x1a\xb3\xef\x10\x158\x03\xe2\x05y\xa9\xa4\x97\xb1\"KF\x91\xc94\xb9\x87G\xac\x19\xe0\xa8\xa0\xcc7\x11k\x854\x05\x99e<\xe8\xa1\xf5s\xb7\xa4\xca\xe9\xd2`\x0dO\xce7w\xab\x83\xc3\xd3\xa8{w\xd7\x1f_\xa3u\x80\x8ec\xdeb\xac\xb6Jz\x12'7q\x12x\xc1W\x06\x88\xa0\xdai\x9f\xddb\xbf\xd1\n\xc8\x83g\xe1F\x8a0b<\xa4\xfc\x1bDX^;\x8e\xa4\n|\xbaI e)]b\x16;\xce\xf9\xf0\xcb\xe9\xd9pt\x88~\xdc!\xc7aK\xb8\xbc\x04\x9fB\xb4a1I\xf1\xe2k\xa0\x92u\x0c\xb3\xd9\x1bP\xd7\x94;\x00\xf9\x81\x8e{\xf3'\xf8\x1c|\x01S\x07\x00\xc0\xf7\xb1X\xdd\xc8\x84\xe7&\x80:?\xec\xcf;\xd40z\xf7\xfb\xe4tt>|\xff+\xa0\x8e\xbb\xbd\x01_\xdd\xc0\xa0\x16\xd7\xcb\x8f\x01t;\xb9\xd7\x1d\x04\xa9`k,\xb6p\x08\x9d\xc2M\xd7s\x96\xac\xce\x80\x8a\x7f\x17\xff\xf8S\x13\xbd\x8d\xf9T\xec\xe3O]\xcfq\x00\x96\x89(i\xc28t\\s\xbc\x86\xf2\x898KA\xf3\x88A\xa1\xad\xbc\x9c\x05\x1b\xc1`\x07\x0b\x9c\xaa\x8d\xa0.r\xdf\xf6\x83\xe7\xfd0\xf4\xde\xbao\x07l\x8dW\xf4(x\xee!O#6\x9f]\x07\xc0{\x03$1\xee\x17\x02s\n\xf4{\x9a\x08\xa5\xc3\x17\xc0\xef\x10\xf8\xb0\x03\x85\x05|_\x82\xaf\xc1F2\x897\x8a\xfa\x1c\xaf\xa9\xd4\xf0\xa5\x12,\xf5\x17\xc9:M8\xe5J\xc2\xff\xc1\xf7oYL\x16X\x10 (\\\xf0(\xdc\x83\x0d{a/\xac\xd6\x05r\x00H\xc2i5\xe3z\x1b\xafh#\xe3ZY\x8dmx<\xcet5\xf9\x82A\xf5\xc0\xce(-\xa0\x1b\x10\x9aRN(_0\xfa\x8f\x94j\x97\xc9\xa2\xf8\xefD\"\xfb\x06\x93e\x89n\xafYLa\xf2\xe1\xe2\x10\x04\xc5D\xeb\xe0\x13\xe8v\xe1\xc3\xe4t\\\xd0im\x9d'\x17\xe5c\xed\x8f:?t\xc4;\xd4\xd6=%\xf8\xcf\x0f\xe1\xb2\xd4\xff0\xebz\x961\x0c`\xe0.\x19\xaf\xb05\xd2\xd6\xe7\x9a\x9f\n\xc6\xd5\xff\xb2\xd1Q!\xf5\x04B\xc6\x04>\x8dO\xc7\xc3\x8b\xf1\xfc\xe3\xf0\xb7\xb1\xb6)\x7f[\xc3\xae\x0b\x92\xc6t\xa1\xdc\xf6\x9e\x0c4<]Dh\xfa\xb8\xd5\xd4\xed\x94\xc3x\x08<\x08Cs\xb4\xba\xde5\xf1\x8f4\xae\x933\x8d'\xd4\x0e~\x96\xea\xbb\xb3\xd1\x972U\xfd\x9dSu\x08]\x02#n\xe4\xf5\x1d\xc8iG%\x06\x8c\x18\x96\xbd\xded\xd4\xeb\xf5\xe1jZ\xdf\xbdB\xce\x1b's\xc3\x17\xf1\x86P2/\xf6\xf1\x8aJ\xed\x1a.\x1d\x00tppp\x00\x13k\x04\xef\xcaF}\xf4B[|\xd49\xdf\xc1D\xd7\xce\x1fTH\x96\xf0l\xa3\xef\xfb\xba\x05\xfb\xd9?\xf3g6\\\x88`\x072\x11j\x1em\xdd\x9a\xf0\xb0\x03,\x17\x8c\xcdIr\xcb\x17X\x9a|\xadq\xea\xa2i\xddT\xef\\UV5\xb3\xc6\xe2\xb7\x0c\x93w\x85<\xf0\x0c0\xe4\xcc,{\xa9t\xdd\xba\xb2\xc2\xf6b\x93\xeaaB \\\x98\xed\xbeE-\xcb\xa8\x19iG\xea\x1b\x04F\xe6fHB\x97x\x13\xaby1\x01\xb7s\x8bP\xba\xa4\x82c\x94Y\xc2\xa8\xb0\xcc\xf5\xcd\xa5\xbfO\xf3\x86\xd8\x1a\xa8J\xe6\x94+\xc1h\x85\xc3W\xbam'\xa1)|\xa5\xdbB\xd0o8\xde\xd0\x16F\xfbY\xde\xa0\xb0\xdf\xaa\x96\x8bE\x0d;\xb88\x19\xbe|\xf5\xbaV2\xe6\xaf\xf8UbR\x807\xc5\x12\x86\xf0`&\xa6\x15\xbb\xbc`\x8a\x8a\xb0\xdf\xf2\x1a\xbf|\xf5Zs\xabSK\x04\xa1b\xbe\x12\xc9&e|%\xdd$g7 Ta\x16\xcb\xa3\x0c\xf7@n\xd6z\x8a\x1c\x9d\xe9\x03p\x9c\x1f\x18\x84\xf9Ffg\x89$\x16\xdf\xa5\x19\xbf\x954\xc2\x0e\xceR\xc5\x12\x8ecc\\\xcb\xe9\xfe\x97o\xb7]\x08\x0c\xbe\xdc%\xa0\xbc\xf8\xf4\x08x\x01\xae\x9d\x0f\x05k\xbd\\Q\x01y/\xa0\x98\x9eAb\xa3\x1b\xbbL\x9fb\xe9J\x0f\xc1\x99\xbe\xc6\x13\xc6]\x04\xc8\xb3\xd5`D\x03\x98Y\x01\x07aU\x9e\xbd\xa0v\xda\xee\xa7\x8d\x9bZI\x19q\xd3|\x18g^z\xbd\x11[Q\xa9\xf4\x08\x1b<\xf3}\x18M\x8e\xc7\x17\x9f\xe1\xfct\xf8~|rf^\x86\xbe_U\xd6\xb2HK\x97\x98&\xd22\xe5\xaaf^\xcdE~3dCB\xbb\xb1\xe3\xa2\xb9\xd5vtM\x15&X\xe1\x00\xd9\xb6\xf7\xf3^7\x8f\x99\x87f\xc1\x13\x9d<\x1a\xb9\xdc\x9dY\xccR\xb7>j\xdf\xe6\xde4\x86vW\xef\x90\x86I\xddC51H\x17rc\xa2p*U9Y\xfb\xeb\xa8\xad\xef\xaa7\\~\x83G\xf7\\\x03\xf7\xb6\xa4\xb9L\xef\xa9\xa3\xa8\x99\xfc\xa8%\xe9\xd1\xcf$\xfb\x91\xc3\xad\x91\x1eLn\xab]\xdd]k2\xa3J\x12Q>t\x10z\xa0\xcbK/I\x9d\xb1f\xc3\x07\xd5\xf0\xb5\x82\xb8\xac\xbc?\xff\xfe3\xa1Q:\x81\xa7GV)\xb95\x1a\x9d\xf2\x0b\xcb\xd1\xc3m\x19c\xa5(/\xc6\xdc\x94#\xcf\xe9V^xQB\xb6\x8e\xb3\xba\x06\x9c2\xfbx[Su\x9d\x108\x1f~~\x7fb\x96P(h\x9a\xc8\xb0\x9f\xdcr*\xc2\xbe\xfe\n\x05\x8d)\x96T\x86\xfb\x97\xddd\xff\x00\\2\x1a\x13@\n\xaf\xe6\x9a\xe4\xe1\xde\xe8\xf3\xf0\xb8\xfc\xda-L\x8d\xd9/\x16\x97yx\xd6\x0c4\xd2\xbd\x81\xfeB\xce_\x01\x00\x00\xff\xffPK\x07\x08p\xe2\xc0a\x1a\x05\x00\x00\xb8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00 \x00update-lifecycle-dependency.shUT\x05\x00\x01\x8d@\x06b\x94\x91Q\x8b\x131\x10\xc7\xdf\xe7S\xfc/.lKI\x16\xefq\xbd*\x8a'\x08\xc5\x03\x05_n\x0fIw\xa7nzi6f\x93\x1e\xa5\xedw\x17\xdbUz\x8az}\x0b\x99\xf9M~\xff\xcc\xb3\x8b\"\xf5\xa1\x98\x1bW\xb0[c\xae\xfb\x96\xa8\xe7\x08\xc9\xa9\x837\x9e\x17\xdaX\xa2\x9b\xd9\xdb/\x9f\xaf?~z\x7f\xf3a\x9a\x8d6K\xc8\xb8\xc4\x15\xe6\xc9\xd8\x86\x83\x8a\xdd\xcab\x87\xe57\xc8\x80\\Y\xb3\xe0zS[V)\x18\xecPk\x1fS\xe0\x91P\x93b=zu\xb5\xe6\xd0\x9b\xce\xbd\xbc\xad\xaa\xe6nRU\xea\xb7\xc3\xb8P\x131\xc6\x0ej\xe8\xcc\xc7D\xc97:\xb2\xfc5[6\xec\xd95\xec\xea\x0d*\x02\xa4\x1cl\xe4\xc1\xe6\x91\xda\xb1>\x0c\x83\xc8\xb6C\x96\xbd \xfaj\"t\xd3<\x02\x0e\x97u\xcb\xf5}\x97\"\xa4\x84\"2\x0b\xdcBd#\xae\xdb\x0e\";\xf9\x11\x81\x1d\xf4\xc3=\xe4;\xe4*G\xbe\xf5\xc1\xb8\x88\xec\xf9>\x1f\x0b\\LO\xa8'\x11w/\x10[v\x04\xcc^\xbf\xb9\x9eME\xcf\xab5\x87r\xa5\x97]\x10\xc4\xf6|\x95\xcb\xb3U.\xff\xadb\xdcQ\xa5\xe7?j^\xc7\xba\x15\xb40D\xc7\xa7\xca\xb2\xe7(\xbb\x14}\x8apz\xc5\xd3\xce6?\xb7Q\x96\xd9\xf6$\xc0^\xfc\x15r\xfcp\n\xfd\x1f\x18\x9a\xa5\xd5s\xb6?\x90\x83\xe7^\xd0\xf7\x00\x00\x00\xff\xffPK\x07\x08\xd2/:\xe4d\x01\x00\x00\xf6\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00update-netrc.shUT\x05\x00\x01\xf4\xc1#a\x14\xcb1\xae\xc2 \x18\x07\xf0\x9dS\xfc\x1f\x8fU\xb9A\x93&\x92\xb8\xd4\x9a\xa2q\xa6\xf8)$\x15\x08\xb4:\x10\xeen<\xc0\xef\xffOn%\xcb\xd9\x07I\xe1\x8d\xd9\x14\xc7X\xa1\x15;\xda\"\x92O\xf40~a\x8c\xac\x8b\xe0/c\x9d\x0f\x04Q\x8f\xa3\xbe4,\xf1\xe9\x03D\xbdj5\x9d\xfaA5$S\xca'\xe6;D=\xf7Z\xdf\xc6\xe9\xd08\xba\x0e\xfcg\x06\xd5\xb8\xdc\x07Z\xb3e\xdf\x00\x00\x00\xff\xffPK\x07\x08\xab\xefq\n{\x00\x00\x00z\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe4VKT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00 \x00update-package-dependency.shUT\x05\x00\x01\x8d@\x06b\xbc\x93Qo\xda>\x14\xc5\xdf\xfd)N\xfd\x8f\x04\xfc'\xa7j\x1f\xb3\xb2i]\xb3i\x1a\xa2h\x93:M\x80*\x93\\\xc0\x10\x9c\xccv\xa8*\xc2w\x9f\x12`$\xea\xda\xad\x9b\xb4G|\xef\xf1\xf9\xf9\x1c\xf2\xdf\xc9in\xcd\xe9D\xe9S\xd2kL\xa4\x9d3f\xc9AP\x9e\"S\x19M\xa5J\x18\xeb\x87_no\xc2O\x9f?\\\xf7\xbb^;2R\x13\x12\x0b\xeem\xae\xc2A\xd8\xbf\n\xfbo\xbfn9\n\xcc\x0ce\x10k$\xd2\x91u(`S\xe3 nP\xc0I\x95@h\x9cu\x18SS\x0c\x87\x10\x84I\xae\x92\x98\x8c\xef\xd2U\x82\xf1\xf8%\xdc\x9c4\x03\xae{W5\xc3\xfb\x05\x84[\xe0\xa2\xb9^`\xf1\x0d\xc2\x80\xfb\xd5q&\xa3\xa5\x1d\x8e\xfd\xdc(\x14\x88d\xe6rC\xed\x11\xf7\xffoP\x06\xed\xd7\x17k2V\xa5\xfa\x95\xff\xa23\xe2\x1d\x14\xf0\xf7'\xbc\xc3\x18\x90g\xb1t$\xca\x0b\xe5\x8cDL\x19\xe9\x98tt\x8f\x11\x03\x00!\xf6\x1c\xa2\xe2h@\x1d6T\xfc \x9d\xc3h\xefU\xcek\xb9nyi=S\x0e2\x8e\x1bw\xb2\xa9\xaa%\xb6\xa7\xfa\xdd\xc4\x1a\xeb\xc7\xc4~\xbcI\xd1?\xcd\xac\x9c\xd7R+\x7f\xfe,\xb7\xcb\xc1\xed\xd1>\x10\xde\xb3s\xfc5\xceaT\xb97Rj\xa2\x0c>\xbe\xffK\x96F\xa7\xc7\x17\xd7=\xab\x8a\xcb\xbdhN\xd12\xcd\x1d\x84\x80\xbfk\x1d\xdckS4O\xc1\xbdZ\xc7\xe5\xc7&\xef\x96\x10\xef\xd0\xf2[hm2\xa3\xb4\x83w\xb6mu8N\xba5U\x0d\xe8i\xd5\xf1\xcf\xd4{s\x19\xf6\xba\xdc\xd2jM&X\xc9Ej8\xa3\xe4\xf98\xe7\x7f\x84s\xfe4\x8e\xd2;\x1cK\x0ff\x99t\xd1\x9cWq\xee\xec\x82\xc0\x92\x13i\xee\xb2\xdcA\xcb\x15u\xd3$>\xd4\x15\x04\xde\xa6\xf6\x88-\x7fT\xa4\xe9\xae.jv\xfc\x98h/\x10\x89\x9cPR\xca*\xd6-g\xdf\x03\x00\x00\xff\xffPK\x07\x08d\xb7\xc2\xd1\xe7\x01\x00\x00w\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V}\x17S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x00update-pipeline.shUT\x05\x00\x01\xf4\xc1#a\x9c\x92_k\xdb0\x10\xc0\xdf\xefS\xdc4\x8f4\x0f\xb2\xf2\x9c\xe1AX<(\x848\xc4a\x7fhK\x91\xed\xb3\xad\xc6\x91%\xf2\x9a\xf2\xa3\xe9\x01\x00\x00\x81\x02\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xd6\x07\x00\x00create-package.shUT\x05\x00\x01\x8d@\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17Shy\x98\xea\x84\x00\x00\x00\xa7\x00\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\\ \x00\x00enable-pack-experimental.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00D\x80fT\x85\"\x0ei\xfb\x00\x00\x00h\x01\x00\x00\x10\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x812\n\x00\x00install-crane.shUT\x05\x00\x01\x00\xdb$bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00rsKT&\x95T\xcd}\x00\x00\x00\x89\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81t\x0b\x00\x00install-create-package.shUT\x05\x00\x01Yr\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00rsKT\xc6\xd7y\xcb~\x00\x00\x00\x89\x00\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81A\x0c\x00\x00install-octo.shUT\x05\x00\x01Yr\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17S\xdbZX\xfe\xeb\x00\x00\x00O\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x05\x0d\x00\x00install-pack.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17S-\xdb\xfd\x81\xf6\x00\x00\x00a\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x816\x0e\x00\x00install-richgo.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00rsKT\x80\xfd\xc2u\x86\x00\x00\x00\x98\x00\x00\x00(\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81t\x0f\x00\x00install-update-build-image-dependency.shUT\x05\x00\x01Yr\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x97}fTD\x9aU\x15\x83\x00\x00\x00\x96\x00\x00\x00&\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81Y\x10\x00\x00install-update-buildpack-dependency.shUT\x05\x00\x01\xee\xd6$bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00rsKT\x81i\"\xe9\x86\x00\x00\x00\x9e\x00\x00\x00$\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x819\x11\x00\x00install-update-buildpack-image-id.shUT\x05\x00\x01Yr\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00rsKT[\xf5\xeb\xb7\x86\x00\x00\x00\x96\x00\x00\x00&\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x1a\x12\x00\x00install-update-lifecycle-dependency.shUT\x05\x00\x01Yr\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00rsKT(\x19B-\x84\x00\x00\x00\x94\x00\x00\x00$\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xfd\x12\x00\x00install-update-package-dependency.shUT\x05\x00\x01Yr\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17SZ}\x1a\x0e\xe4\x00\x00\x00E\x01\x00\x00\x0d\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xdc\x13\x00\x00install-yj.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x9bX~TJ\xed3\xf2\xc0\x01\x00\x00\x9c\x04\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x04\x15\x00\x00package-buildpack.shUT\x05\x00\x01V9DbPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe4VKT\xcd\x81\x9d\xa8\x08\x01\x00\x00M\x02\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x0f\x17\x00\x00republish-image.shUT\x05\x00\x01\x8d@\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xceQ~Tt4b\x1aN\x00\x00\x00W\x00\x00\x00\x18\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81`\x18\x00\x00run-integration-tests.shUT\x05\x00\x01\x84-DbPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17S\xa4\xd5!O?\x00\x00\x00:\x00\x00\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xfd\x18\x00\x00run-tests.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xceQ~T!\xdd\xeceF\x00\x00\x00D\x00\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x7f\x19\x00\x00run-unit-tests.shUT\x05\x00\x01\x84-DbPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe4VKTt\x02$\xb3\x98\x01\x00\x00_\x03\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x0d\x1a\x00\x00update-build-image-dependency.shUT\x05\x00\x01\x8d@\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe4VKT\xe8/\xa4\xeb\xb5\x01\x00\x00\x04\x04\x00\x00\x1e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xfc\x1b\x00\x00update-buildpack-dependency.shUT\x05\x00\x01\x8d@\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17Sp\xe2\xc0a\x1a\x05\x00\x00\xb8\x10\x00\x00!\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x06\x1e\x00\x00update-draft-release-buildpack.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe4VKT\xd2/:\xe4d\x01\x00\x00\xf6\x02\x00\x00\x1e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81x#\x00\x00update-lifecycle-dependency.shUT\x05\x00\x01\x8d@\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17S\xab\xefq\n{\x00\x00\x00z\x00\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x811%\x00\x00update-netrc.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe4VKTd\xb7\xc2\xd1\xe7\x01\x00\x00w\x05\x00\x00\x1c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xf2%\x00\x00update-package-dependency.shUT\x05\x00\x01\x8d@\x06bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17S\xddd\x12\xe6\x98\x01\x00\x00%\x03\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81,(\x00\x00update-pipeline.shUT\x05\x00\x01\xf4\xc1#aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V}\x17S\xbc\xfb5Z\x1e\x01\x00\x00{\x02\x00\x00\x18\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x0d*\x00\x00update-release-digest.shUT\x05\x00\x01\xf4\xc1#aPK\x05\x06\x00\x00\x00\x00\x1f\x00\x1f\x00\x88 \x00\x00z+\x00\x00\x00\x00"
+ data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\xe6\xa9TT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00 \x00check-republish-version.shUT\x05\x00\x01a\xaf\x12bt\x92Ao\x1a?\x10\xc5\xef\xf3)\xde\xdf\xe1\x00\x7fi\xa1\xe9q#\x0e(\"\x88C\x9a\nhT)\x8a*\xb3\x0c\x8b\xc5\xd6^ymT\x89\xf8\xbbW\xde5\xc9\xd2\xaa7\xdb\xf3f\xfc\xfc{\xbe\xf9o\xe2\x1b;\xd9*=a}\xc2V6\x07\xa2\x86\x1d2\xf6\x06\xb5\xaay/UET\x18\xed\xa4\xd2\xcdp\x843\x01\x95)d\x85\xcdl1\x15\x83\xf3m\x10\x84v38of\x8b\x9bSxW,\x1fg\x8b\xf9:\x8a>\x07A\x04\xec\x8d\xed\x0e\xa14\x06\xe7\xae\x1e\xee\xb03\x04\x00j\x8f\x97\x17\x88vN\x10\x98N\xe3\xba\x15\x05\x81\xd7\xd7;\xb8\x03\xebV pq0\x10y\xbe\xe3\xad/\xf3\xfc\xc1x\xbdC\xeaL\x12\xcb\xce[\x8dO\xedv\xaf\x08\xd8\x19\xcd\xd1G\xaa\xdcR J&\x07\xc3\xc2J\xcd\xa8\x9a\xce\xc0j1\xdf\x041\"\x8a\x9e7\xb3E\xebxX*\x07'KdU\xb2\xf9\xe3\xebj\xfe\xb0\xfc\x1e\xfe\x17xCc\xacC\xf6\x8c\xccb\x94\x1e\xf5<_\xad\x97O_\x12\x9b\xeb\x1e\x11\xae\x04i\x15\x01R\xcb\xe2B=^\x95\x8aA\xbc#Y\x07\xd1\x03\xd2\xe1\xe8S\x18c}Tu\xadt9\x16\xd4'\xd6\xb0\xcb\x8cw\xb5w\xd0\xf2'O\x9b\xa3\xaa\xf3\xdcY\xcfI\xf7K9j\x81\xd1GSi\x8d\xaf\xf3\xfc\xfe\xc0\xc5Q\xe9\x12\xc6\xbb+\xda\x11L\x11\x8b\xb1\x90e\x18\xff}*>\xf4\x97\xa9\xacwip\xff\xf4O\x83N\xda\x92]\x9e\xf7(\x10\xb0\xb5,\x8f\xd4%\xda\xfd\xab\x94Q?\xc7\xf5\xd3\xb7\xd5}\xfc=o(-\xd7\xc8N\x10\x95t\xdc\xb8\xeb\xbc.q\xfd\x93\x91\xf1\xb6\xe0ha\xf9\x98\x9e\x10)\xb5\xb7\xff\x0e\x00\x00\xff\xffPK\x07\x08\xe6=dt\xb0\x01\x00\x00E\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x91\x99IT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00 \x00checkout-next-version.shUT\x05\x00\x01#\x12\x04bd\x91O\x8f\xda0\x10\xc5\xef\xf3)^\xbd\x1c\xa0R\xa0\xdb\xa3W\x1cP\xc5F\x1c\xfaG\x80V\x95V\xab*$&X\xa4v\xe4?\xa8\x12\xf5w\xafl\xbcK\xe8\xdef\xe6\xbd\x99\xbc\xfc|\xf7a\xe6\xad\x99\xed\xa4\x9a u\xc2\xae\xb2\x07\"+\x1c\n\xe15z\xd9\x8b}%;\xa2Z+WIe\xc7\x13\x9c \xe8t]u\xd8.\xca9\x1b\x9d\xef\x03#\xa4ft\xde.\xca\xbbSxs\xac\xbe.\xca\xe5&\x9a>\x07F\x04\xec\xb5\xb9\x0c!\x15F\xe7\x8b\x1e\x1e\xd0h\x02\x00\xb9\xc7\xf33X\xba\x13\x18\xe6\xf3X'S`xyy\x80;\x08\x95\x9c\x80\xa8\x0f\x1a\x8c\xf3F\xec|\xcb\xf9\xa3\xf6\xaaA\xde\xcc\x16#\x9c7\n\x9fR\xbb\x97\x044Z\x89\x98#+\xf7\x14\x88r\xc8\xd1\xb86\x95\x12\xe8\xec%\xc0\xba\\n\x03\x9b\x10\xc5\xcc\xdbE\x99\x12\x8f[\xe9\xe0\xaa\x16E\x97c\xfe\xfa\xb1^>\xae~\x86\x8f\x0c\x7fa\xb5q(\x9eP\x18L\xf2O=-\xd7\x9b\xd5\xf7o\x99\xcd\xcdJ\xb8\x91s\x15\xf1Q\"\xf1\xca<~(\x8b\x81\xbd\x01\xd9\x046\xc0q\x811d0\xc5\xe6(\xfb^\xaav\xcah\xc8\xcb\nWh\xefz\xef\xa0\xaa\xdfbn\x8f\xb2\xe7\xdc\x19/\xb2\xef\x8ft\x94p\xd1u\xa95\xda\xf7\x9c\x7f9\x88\xfa(U\x0b\xed\xdd\x0d\xeb\x88\xa5\x8eb\x14\x8a\x02\xd3\xf7Sv\xf5\xbf^\x15\xaa\xc9\x87\x87\xd3\xff\x03\x9e\x84\xb1R+\xce\x07\x18(\xe7L\xef\xf9/\x00\x00\xff\xffPK\x07\x08\x9f\xa1C{}\x01\x00\x00\xc5\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00A~|T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x00compute-version.shUT\x05\x00\x01*\xd9Ab\x9c\x91\xcfn\xd3@\x18\xc4\xef\xfb\x14\xc3b) ecZ\xa9\x07\x0cAr!\xc5AJ+%\x85\x8b\xb1\"\xa7\xf9\\/8^kwm\xfe\x98\xe5\xd9\x91\x93B\x9c\x0bT\x9c,\x8dgF\xbfo\xf6\xf1#\xbf6\xda_\xcb\xd2\xa7\xb2\xc1:59c\x86,\x04\xd5\n\x95\xac(Ke\xc1\x98\xcc\x10C|\x07\xf7\xda\xb7\xb3\x9b\xe8\xfd\xc5j1\xbd<1d\x1dG\xf2\x026\xa7\x92\x01t\x9b+\xf0\x83\x01]\x93U\x88\xfb)\xf1\xb2.\x0d\xd9W.y\x8aumarU\x17\x1b\x94\xd4\x90\xc6\x9a@\xdb\xca~\x83\xd2\xd8\xd9xW\xfbUZ\x9c\x9d\x9f\xb3L\xeeIb\xf4\x0b\x1d&?\xa1)3\xbeM\xef\x8c\xdf\x0c\xe3g\xe2yr\xf2q|\xfc\x1d!9\x90~\x98.\x96\xb3\xeb\xab\x89\xd7^\x84\xcbh\xb5\x98\xce\xc3\x9b\xd7Q|\x9a8\xc6\x80y\xf8\xeez\xb1\xfa\xed\xe1\xdep\x7f\x98\xd7\xdeK\x8e\xe3\x07\xd2/\x9f!.1\x18\x0f0h+-K\x0b\xef\x14n0\xea\x90\xe7\xb3\xab\xffm\xe0c\x0e\xefl_\xf4g\xd3 0d\x85\xaamU[\x94\xe9\x96&\x0di#U)\xb6\xe9'\xa5\x83\xc0k\x8f\xa0\x1d\x7fHT\x96\xf7\xd1>\xad\xe3\x8c\x8a\xbf\xad\x9cS\xba1\xfep\xfc\xe0E\xa90\xd4w\x0c\xef\xa4\x85\xa6FT\xa96\x04!L\xae\xb4E4\x0d\xdf\x8cvo\xfc\x0f\xf0\x0e\xb9\x07\xbb3/\xa9\xa0[K\x1b\x1c~!\xd3j\xcb\x80'\x1dvp|\xccN6y\xda\x93\x97Q\xe8\x18g\xbf\x02\x00\x00\xff\xffPK\x07\x08jI\xb5)\x85\x01\x00\x00\x12\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x00create-action.shUT\x05\x00\x01\xcf\x8a\x9e`|\x8f=O\x84@\x10\x86\xfb\xf9\x15\xaf+-\xd2c(\xfc j\xe3]\xe0\xce\xe6\xbc\x82\x8f\x01&G\x96\x0d\xcb\xda\x10\xfe\xbb\x01Or1j\xb7\xd9yf\xde\xe7\xbd\xbe\n\x9c\xed\x83\\t\xc0\xfa\x03yf\x1b\"\xcb\x03|v\x1d\x8c\x18\xae2i\x89\xb8h:\xa80\xac\xfb\xce\x990\xbcw\xd2\x96\xa2kx\xe3\xee.y\x8awS\xe8\x8doq\x92\xbel^'E@\xd9\x15'\xee\x91\xcf\x1c\xde \x00|\xbf\x92\x96\x91\x15\x83t\xda\x06\x8f\x0b\xb1|}\xcf\x17\xda\xcf\xfa\x1a*\xdd\xec\x93\x878\xf2\xc6\xaf\xc7\xa4Vh\xc8j\xa8_c\xcf\xc8\xcd*\xcb\xba<\xfb*\"\xa9p8\xcc\x9b\xdb}\xfa<)D\x11\xd4\xd0;V8\x1eo14\xac \xf8Qs\xebl\xf3_\xcb\xb5\xa7q\xb6\xf9\xc3\xea\xe2\xea\xa5\x0f\xb7\x96\xd7Qz\x12c\xe6\xa0\xf9\x8e\xa2J\xe83\x00\x00\xff\xffPK\x07\x08_n\x1bS\xe6\x00\x00\x00\x98\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00Gx\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00create-builder.shUT\x05\x00\x01\xf6\x90\x9e`\xac\x8e\xcdJ\x031\x18E\xf7y\x8ak\x9c\x85\"q\xf6\x117\xc5\x82\x03E\xa5\xa5nj\x17\x99\xf4\x9b\xce\x87i\x12&\x89\x08\xc3\xbc\xbb\x0c\xfe\xec\xdcuy9\x1c\xee\xb9\xbc\xa8K\x1a\xea\x96}M\xfe\x03\xadI\xbd\x10\x892\x14\x95\x80\xc8\x91:\xc3N\x08\xee\xb0\xdbAy\xc8j|\xd9.V\xcd\xe6\xf1\xe6s\x92\xd8\xef\xef\x90{\xf2\x02\x88\xc6\xbe\xa3-\xec\x0e4\xc0\x0ed2\xe1M\x00\x98\x9d\xc5\xb6Y=,\xd7\x93\xae\xc6\xd7\xe5z\xd3\x01\x00\x00\x81\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x00enable-pack-experimental.shUT\x05\x00\x01\xcf\x8a\x9e`\\\xccO\xaa\xc20\x10\x80\xf1\xfd\x9cb^\x9e\xdb6'\xb0\xbb\x82\x1b\xf1\x0c\xd38i\x87&\x93\x90?\"\x88w\x17\xc1\x8d\xee\xbf\xdf\xf7\xffg{-v\x11\xb5\xac7\\\xa8n\x00\x95\x1b\x0e\xdc\x13f\xc9\xecI\x02\x00\xbb-\xa1\x99\x95\x96 \xbab&\xb7#\xdf3\x17\x89\xac\x8d\x02z\xa6\xd6\x0bW\x03\x10\xf7\xab\x14\x1c2\x9a\xc3\xe3t9\xcfOc\xc77\xf8L\xbe\xd8\x11[\xe9lp\x9a~k\xeb\x92zY\xc7\x96b\x80W\x00\x00\x00\xff\xffPK\x07\x08hy\x98\xea\x84\x00\x00\x00\xa7\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x00install-crane.shUT\x05\x00\x01\xcf\x8a\x9e`l\x90AO\x021\x10\x85\xef\xfd\x15c\xe5Zz1\xc4x AB\x84D\xc1 z\"\xd9\x942v\x1bKg3\xed\xc2\n\xf2\xdf\xcd\xeaz!\x1e\xdf\x97\xbc\x97|\xef\xfaJ\xd7\x89\xf5\xc6G\x8dq\x0f\x1b\x93J!\x12fPX\x13T\xbe\xc2w\xe3\x83\x10hK\x029\x8b)\x9b\x10|t`\xd9D\x84\xdei\xbc\x1c\xcd'\xc5\xdbd\xf92[\xcc\xcfR\x88\xdd\xc7\xd63\xa8\nd\xef4]`\xcc]\x08dM\xf6\x14\x7f\xa2,s\xae\xd2\x9d\xd6\xce\xe7\xb2\xde\xf4-\xed\xb4#r\x01\xb5#e)f\xe3#2\xa3\xf3)\xf3\xa7f\x0ch\x12&\xbd\xa5C\x0cd\xb6z\x7f\xa9\xf2o\xb1x\xf4\xb1n\x8a\xe6vP\x0cn\xfa\xd9p\xdf\x1d%\xac\xc5\x17d\xc3\xa0\xc6\x17\x86\xaa9\xfe\x1e%\xbe\x03\x00\x00\xff\xffPK\x07\x08\x85\"\x0ei\xfb\x00\x00\x00h\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x00install-create-package.shUT\x05\x00\x01\xcf\x8a\x9e`\x14\xca\xc1\x0e\x820\x0c\x00\xd0\xfb\xbe\xa2\xe2\xb96|\x007\x8d\x17\x0d'?\xa0\x1be4\x0c\xb6\xd0M\x7f\xdfp}y\xd7\x0b5;\xc8\xebN\xb2\x7f\xc1\xb3-\xce\x99T@i\x19\x8a\x16\x99Y\x93s\xcf\xb1\xef\xfb\xf7x\xff\xbc\x1eC\xde!f\x88gj\x80i\x9a\x13G\x1b:4\xc0_\x07Q\xeb\xd2\xfc-\xe4\x8d\n\xafR3\xfa\xa6i*\x1cV\xa3\xa4\xbe\xf0Ja\x9b(\x1c\xc2U\xf0t\x8e\xe2\xfe\x01\x00\x00\xff\xffPK\x07\x08&\x95T\xcd}\x00\x00\x00\x89\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00install-octo.shUT\x05\x00\x01\xcf\x8a\x9e`$\xcc?\xae\xc20\x0c\x80\xf1=\xa7\xf0\xeb\x9b\x83\xd5\x03t\x03\xb1\x80:q\x80\xfcqS\xabi\x1c\xd5 \\\x1fU\xac\x9f>\xfd\xfe\xff\xb0\xeb\x81\x9e\x0bRy\x83w\xba\x1a\xa3\xd4\xc0R\x17\xa8\\iq\x9c\x8d\xb9\xcf\xe38>\xe7\xeb\xebq\x9b\xa4@\x12H\xe7\xd4\xc1\xe6\xb8d\x97t\x1a\xac\x82\xfd\x0c\x90\xb8\xad\xdd_\x82\xecX\xddFM\xac\xef\x9ccuaS<\xc1\xcc\x85~\x8d\x0e\x0c{D M\xcc7\x00\x00\xff\xffPK\x07\x08\xc6\xd7y\xcb~\x00\x00\x00\x89\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00install-pack.shUT\x05\x00\x01\xcf\x8a\x9e`\\\x90\xcfk\xfa@\x10\xc5\xef\xfbW\xccw\xbf^\xd7\xbd\xf7 X\x91&\x94VimO\x82l\x92i28\xee\x86\xfd\xa1\xa2\xf5\x7f/\x1b\xd2C\xbd\x0c\xbc\x0f\xf3\x867\xef\xff?\x9d\x82\xd7\x15Y\x8d\xf6\x08\x95 \x9d\x10\x01#(L\x0ez\xea\xf1\xcb\x10\x0b\x81u\xe7@\x966D\xc3L\xb6\x85\xde\xd4{\x98\\\xd7\xf3\xc5\xf3\xees\xf9\xf6^\xae^oR\x88\xc3\xbe!\x0f\xaa\x079\xb9\x16\xab\x97\xe5M\xe6\xdb\xa3}D\x99H\x98\xcd2x*7\xc5\xc7\xe3n=\xdf\x14\xd9^'\xcf\xb0\x15\x00J\xb1\xabM$gG\x19:wR\xe8\xbd\xf3\xbf\x80\x18m\x1c\x84\xecb\xec\xc3\x83\xd6-\xc5.U\xd3\xda\x1dt\x95\x88\x9b\x1c2\xe8<\xb5GF\x130\xe8\xc6\x9d,;\xd3\xe8\xe3]\xfaaO\xddS\xc5d\xd3y\x1a\xdb\x8b\x84\xad\xf8\x86h<\xa8\xc5\xdf\xf7@\x9d/C!\xe2'\x00\x00\xff\xffPK\x07\x08\xdbZX\xfe\xeb\x00\x00\x00O\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00install-richgo.shUT\x05\x00\x01\xcf\x8a\x9e`d\x901O\xc30\x10\x85w\xff\x8a\xc3tu\xbc\xa0\n1T\x82\xaaj2@P)L\x95\"'1\xb1U\xc7\x17\x9d\x9d\xb6\xb4\xf4\xbf\xa3@\x18\xaa\x8e\xef\xbb\xbb\xa7w\xef\xf6F\xf6\x81di\xbd\xd4~\x07\xa5\n\x86\xb1\xa0#\x08\xdd#t\xb6\xd3\x9f\xca:\xc6te\x10x\xe6CT\xceY\xdf\x00\xd9\xca4\x08\x93\xd3*\x9b\xa7\xcb\xbc\xf8X\xac\xde\xb2\xfc\xe5\xcc\x19k\xb7\xb5%\x10\x1d\xf0\xc9)\xcd\x9f\x17g>\xf8\x8f\x16#\x1a\x08\x87\xd9l\x00\xcbl\x9d\xbe?\x15\xaf\x8f\xebt8\xafzr\xb0a\x00B8\xacT\xb4\xe8G\x19\x0c\xee\x85&B\xfa\x07\xd6i\x1f\x7f\x0571v\xe1A\xca\xc6F\xd3\x97I\x85\xad\xdc~\xa1\xb9\x9f\xca\xbf\xa8\x92\xb4\xd3*\xe8 k\xdc{\x87\xaa\x96\xbb\xab\xf4\xe3nq5(\x9c\xf5\xfd\xa1Pm=\xbdK\xa2\xa2\xa49r\xd8\xb0o\x88\x8a@\xcc/_\x05q8\x8e\x05\xb1\x9f\x00\x00\x00\xff\xffPK\x07\x08-\xdb\xfd\x81\xf6\x00\x00\x00a\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x00 \x00install-update-build-image-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`$\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb\x8c\x97~@7\x8d\x8b\xa6\x93\x1fp\xc0\x95^J\xe1\"\xa0\xf1\xef\x8dq~\xefx\xc0^\x9f\xe8$#\xe7\x178\xaa\xab1\x95\x1bX\xee\x05T\x94\x17\x92d\xccu\x1e\xc7\xf1>\x9f\x1f\xb7\xcbT2\xc4\x02\xf1\x97:\xd8\x14\x96D\xb1N\x83\xad`\xdf\x03Dikw'_vT\xda\xb8\x15\xeb\xba\xa4\xa0\xe4\xb7\x8aI\x9c\xd2\x86~\x0f\xd85P\xe3?Z\xd9)\xb2\x0d\xac\x9c\x03g\xff1\xdf\x00\x00\x00\xff\xffPK\x07\x08\x80\xfd\xc2u\x86\x00\x00\x00\x98\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&\x00 \x00install-update-buildpack-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`D\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb\x8c\x97~@7\x8d\x8b\xa6\x93\x1fp\xc0\x95\x92R\xb8\x08\xa7\xf1\xef\x8d\x93\xf3{\xc7\x03j{\xa2K\x05\xb9\xbc\xc0Q[\x8di\xdc\xc1\xb2V\x90$\xbcP\xca\xc6\\\xe7q\x1c\xef\xf3\xf9q\xbbL\xb5@\xac\x10\x7fI\xc1\xe6\xb0d\x8am\x1al\x03\xfb\x1e \xa6\xbe\xaa;\xf9\xba\xa3\xd0\xc6\xbdZ\xa7)\x07!\xbf5\xcc\xc9 m\xe8\xf7\x80*\x81:\xff\xd1\x06\x16.\x81\x8b\xff\x98o\x00\x00\x00\xff\xffPK\x07\x08D\x9aU\x15\x83\x00\x00\x00\x96\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00H\xa2hS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00 \x00install-update-buildpack-image-id.shUT\x05\x00\x01 \x86\x89aD\xcc1\x0e\xc20\x0c@\xd1=\xa70e6V\x0f\xd0\x0d\xc4\x02\xea\xc4\x01\x9c\xc6M\xad\xa6I\xd4$p}T1\xb0~=\xfd\xf3\x89Z\xd9\xc9j$\x89o\xb0\\\x16c\x8aT@i \xb2f\x99Y\x831\xf7\xb1\xef\xfb\xe7x}=nC\x8a\xe0\x13\xf8\x035\xc0\xe0\xe6\xc0\xbe\x0c\x1d\x16\xc0O\x07^\xeb\xd2\xeceJ\x1be^\xa5&\xb4M\x83\xcb<\xad\x85\x8ea\xd0(\xbf&;M\x9b\xa3\x96\x1dW\xf93\xd4\x8d\xbd\xa0:\xf3\x0d\x00\x00\xff\xffPK\x07\x08\x81i\"\xe9\x86\x00\x00\x00\x9e\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&\x00 \x00install-update-lifecycle-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`\x14\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb\x8c\xa4\x1f\xd0M\xe3\xa2\xe9\xe4\x07\x1cp\xa5\x97^\xe1\"\xa0\xe9\xdf\x1b\xf7w>\xb9^\xdf\xcesv\x94?\xe0\xb1\xae\xc6Tj`\xa9\x17PVZ\x90\xc5\x98\xfb<\x8e\xe3s\xbe\xbe\x1e\xb7\xa9dH\x05\xd2\x1fu\xb0\x12\x17\xc1T\xa7\xc1V\xb0\xdf\x01\x12\xb7\xb5\xfbK(\xbbS\xdc\xa8\x15\xeb;KT\x0c[u\xc2^qsa\x8f\xaek\xc4FVx\xa1p\x04!\x1bI)G\xca\xe10\xbf\x00\x00\x00\xff\xffPK\x07\x08[\xf5\xeb\xb7\x86\x00\x00\x00\x96\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00 \x00install-update-package-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`\x14\xca\xb1\x0e\xc2 \x10\x00\xd0\x9d\xaf8\xeb|^\xfa\x01\xdd4.\x9aN~\xc0\x01WJJ\xe1\"\xa0\xf1\xefM\xd7\x97w>Q\xafo\xb21\x93\xe4\x0fX\xae\xab1U\x1a\xa0\xf4\x02\x1aU\x16\x8e\xc9\x98\xfb<\x8e\xe3s\xbe\xbe\x1e\xb7\xa9d\x08\x05\xc2\x91:`\xf2K\xe2P\xa7\x01+\xe0w\x80\x10\xdb\xda\xed\xc5\x95\x9d\x947i\x05m\x8f\xc9+\xbb\xadR\x8aVy#\xb7{\xea\xea\xb9 \x1e\xceA\xd0\x8bJ\xf6\x92\xdd\xcf\xfc\x03\x00\x00\xff\xffPK\x07\x08(\x19B-\x84\x00\x00\x00\x94\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00 \x00install-yj.shUT\x05\x00\x01\xcf\x8a\x9e`d\x8fMK\xc3@\x10\x86\xef\xfb+\xc6\xb57Y\xe7\xee\xa1\xa0PL\x04\xadh\x15\x04\xa1l\x92\xb1\xbbq\xb3\x13\xf6#m(\xfd\xef\x12\x89\x87\xe2\xf1}\x86w\x9e\x99\xcb\x0b\xcc1`e=\x92\x1f\xa0\xd2\xd1\x08\x11)\x81\xa2\xcc\xd0\xdb\x9e\xbe\xb4uBPm\x18d\xe9c\xd2\xceY\xbf\x83\xb1\x85\xc5\xf1\xe3a\xfb\xbezy-\xd7O')D\xf7\xdd\xd8\x00\xaa\x07\xb98\x16\xeb\xc7\xd5IN{\xe7\xea\x8c&\"a\xb9\x9c\xc0}\xb9)\xde\xee\xb6\xcf\xb7\x9bb\xaa\xd798\xf8\x14\x00J9\xaeu\xb2\xec\xe7\x18\x0d\xef\x15\x85\xc0\xe1\x0fXG>\xcd\x81s\xeas:\x97\xe2\xd8\xfeN\xa5I\xa9\x8f7\x88;\x9bL\xae\xaek\xee0\xd6\x8e\x06\xeb \xc7\x16\x039\xd2\x91\"6\xbc\xf7\x8eu\x83\xc3\xd9W8\xb6\xcaY\x9f\x0f\xd3}\xa6\xe3\x06\xae\x0e\xffL\xe2'\x00\x00\xff\xffPK\x07\x08Z}\x1a\x0e\xe4\x00\x00\x00E\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe9{\x88T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00package-buildpack.shUT\x05\x00\x01GUPb\xbc\x93Qo\xd30\x14\x85\xdf\xfd+\xce\xbc\xa8j\x1fBy\x0e\x8aD\x81B\x0b\xebZ\xb5\x83\x97RMNr\x93ZK\xed\xc8v\xd0P\x95\xff\x8e\x92\xb4!\x9b4\x18 \xd1\x17\xd7\xb1\xcfwo\xce\xb9\xb9\xbc\x18\x97\xd6\x8c#\xa9\xc6\xa4\xbe!\x12v\xcf\x98%\x07\x9fJ\x8dB\x16\x94\n\x993\xc6V\x93\xb7\x9f&\x1f\xa6\xb7W\xf3\xcdM8\xf4N\xdb\xcd\x88]bz\xef\x8c\x88\x1dRi\xac\x83\xa1Bc\xf8N\xc7wd0+\xa3\x11\x84\x85\xdb\x13\x0eB*8\x8dB\xc4w\"#\x0c`(\x93\xd6\x919\xc3C\xef\xd8/\xb3}\xb9\xab\x18\x93)\xb6[p\xef\xb8\xfa\xfc\xe6j\xbe\x99\x05\xfe}\xc5\x11\x86\xe0\xce\x94\xc4\xb1\xdb\xbd\xaa\xf1\x8a\xa1!#*e\x9e4\xff\xce\x85\xbe2\x00\x0d\xa1\x85W\x81w\xfc2]o\xe6\xcb\xeb\x8a\x9fN}?\xd6*\x95Y}m\xb6\\L+>>\xc9_8}\xc8\xbb[E\x19\xe5\xb2\xf6\x08h\x1b\xf3\x15:\xda\xedb~\xbd\\\x07~\x85\xc1\xe0\xd1\xc1\xe4c{\xd0\xeb\x16\x88\x8dP\x04'\xb2'\x9b\xe3\x8f\xd8\x15\xff\x0ba]\xbb\x11\xa6\x92=G\x9b\x0bG\xd61\x80\xe2\xbd\x06\x0f\x02K\xce\xd7\xa5+J\x07%\x0e\x14&2#\xeb\x82\xc0\x1b\xb6\xb0v\xff\x14o\xc4k\xb7.\x11\xeb\xe2{\x9d\xbfv{2\xcd\x98X\xe9\xb4\x91da\x0b\x8ae*)\xa9\x9b\xd4\x06+H\xd5\xc3\xb5\xd3\xf0zwz\xfbD7K\x9b\x00\xb8\xb7\xe2\xb8\x08\xeb\xb5\xbd\xcd\xd1\xf7\xf8\xa7]M\xfd_\xf8\xb5z\xf0\xa4\x13\xff{\xcc\x0f\xba8\x1b\xff\xac\x9c\xffP\xd9\x05\xdd\xfe\x9a\xb8\x7fO\xe8\xe2\xeei\x12\xad\x881\xca-\xfd\x9f\xcf*\xd5\xe6 \x9a z\xbf\\/&7\x15g\xa9\xfc\x11\x00\x00\xff\xffPK\x07\x08J\xed3\xf2\xc0\x01\x00\x00\x9c\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x1a\x80kS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x00republish-image.shUT\x05\x00\x014>\x8datQ\xcdJ\xf3@\x14\xdd\xcfS\x9co>\x97\x0d\x01\xa1\x9b\x91.\xc4\x06\xe9\xc2\x16\xdaZ\x17*2\xed\xdc&\x17\xeb$d&\x8d\x8b>\xbc\x98\x98Q\x12\xb2\x0b\xe7\xef\xe6\x9c\xf9\xff/\xae\\\x19\xef\xd9\xc6d\xcf\xd8k\x97 \xe1\xc8#\xa2*G\xc1\x05\x1d5\x9f\x84\xe0#\x9e!\xaf6\xab\xc7\xf5]\"1\x9bAJ\xbc\xe2ri\xe0\xed\xed\xfa>\xd9\x0e\xe0V\xfd\xb6K\xd6\x9b\xc5j9\xe2\x1a\xa5\x97\xc9\xd3b\x1e\xd0\x1b\xf8\x8c\xac\x00\x00:d9\xe4\x03;\xc76\x85\xcb\xab\xf2@\x13x]\xa6\xe4'8S\xe98\xb7\xd0\xd6\xc4y K5\x1b%\xff\x18\xbf\xbf\xb0i\\\n]\xa3\x1e\xbfkC\x02\x1f~\xb2\x9f\xb3m\xae*t\x13\x8c\xe6\xf4\xca\xf6s\x96Tc1W\xf8i\xdd\xd2\x9f\xecq=\x9d\x8a#\x0bQ\x15F{\x8a\xf6\x15\x9fL\xa1\x0f\xef\x11\x7f\xe8\x94\"6xi\xc4Q\x0b\x84\xd5\xd5`\xfd\xa03\xbf\xe3vX7\xda\xf0Q:\x85\xa5:\\h5j\xd0\xe9+\x00\x00\xff\xffPK\x07\x08\xcd\x81\x9d\xa8\x08\x01\x00\x00M\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V\x18kT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00 \x00run-integration-tests.shUT\x05\x00\x01\xd4\xbb*bD\xc8\xc1\x0d\xc5 \x08\x00\xd0;S\xf0\xf3\xcf\xc2\x1c\x1dC\x1b\xaa$\x0d\x1a\xc0\xce\xdfc\xaf\xef\xff\xe3\x1d\xceM\x8d\xc5\x1el5\x06@Hb\x91=q\xe9\x92\xab\xea\x0d\xe0z\x8e>1%\x12\x89\xd5R\xba\xd7\xd4iLDX|\x1b\x1e\x1f\xc2\x1b\x00\x00\xff\xffPK\x07\x08t4b\x1aN\x00\x00\x00W\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00run-tests.shUT\x05\x00\x01\xcf\x8a\x9e`\x04\xc0A\x0e\x84 \x0c\x05\xd0}O\xf1'\xb3\xb6=\x13\x98\xaf41@h\xf1\xfc\xbe\xff\xcfv,\xab\xde\x8d\xfdE-\xd1D\x82\x89\x83{`\xfa\xe4U\xfc\x11Y~\xb6{ \x19 5U\x95/\x00\x00\xff\xffPK\x07\x08\xa4\xd5!O?\x00\x00\x00:\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00V\x18kT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00run-unit-tests.shUT\x05\x00\x01\xd4\xbb*b\x04\xc0\xc1\x0d\xc5 \x08\x06\xe0;S\xfc/\xef,L\xd3\x01\xb4\xa1\x95\xa4A#\xd8\xf9\xfb\xfd\x7f\xb2cI3\x17\xf5\x17\xadF'\nM\x14\xdd\x03\xd3\xa6^\xd5\x1e\xa2eg\xbf\x07R#\xc1\xc2\xcc(k;\x0e\xb7\xa4/\x00\x00\xff\xffPK\x07\x08!\xdd\xeceF\x00\x00\x00D\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00z\x8eZS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x00update-build-image-dependency.shUT\x05\x00\x019@xa\x9c\x91Qk\xdb0\x14\x85\xdf\xf5+N5C\xe2\x0d9\xb4\x8f^\xb3\x91m\xee\x08d-4\xd0=\xccc(\xf6M\xac\xc4\x965IN)\x89\xff\xfbp\x92\x0d\x87\xd1\xc2\xf6\xaa\xc3w\xefwt_]\x8c\x1agG\x0b\xa5G\xa4\xb7XHW0\xe6\xc8CPS\xc3(CK\xa9J\xc6\xeef\x9f~<$\xf7\xf3\xe9\xdd\xed8\x18>\xad!\xfc\x1a\xd7X4\xaa\xcc\xc9F\xbe\xaeJ\xec\xb1\xfe a\xc1#\xe7e\xb6\x89R~\x88\x85\xaa\xe4\x8aR\x8e=2i|ci\x98\xf2`7\xfd2\xf9\x9c\xb4\xf1\xf0\xfd\xf5\x96\xacS\xb5~\x17\xbd\x11\xc1\xee\xe3l2\x9fOo\xa6\xc9}\x1b\xa6<\xc4\x1e\xd1)\xe7!\xbbM\xbe\xf6,2+5\xa1t\xf83\xad\xdb\xb1\xb2d\xc0\xa3\xd7\xe7\xb3\xba\xc4\xd5\xd6C<`\x0f/U \xa1q\x192\xd6\x98\\z\x12=U\x91\x93!\x9d\x93\xce\x9e\x902@\x88SMq\xa8y\xd6\xf9\x98\x9f\x0c;\x91\x9eb\xcb\x19[)\x0f\x99\xe7g\xd0\xe11+(\xdb\xd4\x8d\x87\x10\x88\x18SK|\x03\x0f\x86\x94\x155x\xd0\xfb\xee\xce\\>n n0\x88\x06\x18\xec\x8cU\xda#\xb8l\x07!\xc7\xc5\xb8G\xf5v\xbfL}\x7f\x0b_\x90f\xc0l\xf2!\x99\x8d\xb9\xa3jK6\xae\xe4\xba\xb6\x9cQ\xf9\xef:W\xff\xa5s\xf5\xb2\x8e\xd2G\x1dG\x7feF\xfa\xac\xe0l\xa9\x18;\xae\x8bcG^\xd4\x8d7\x8d\x87\x96\x15\x8d\xeb2\xff}\x998\x0ev\xbd\x12-\x7f\x16\xd2\xf4\xd8\x87\xce\xcf\xf9\x1ct\x02D)\x17Tv\xd8\xc1\xb5\xe5\xecW\x00\x00\x00\xff\xffPK\x07\x08t\x02$\xb3\x98\x01\x00\x00_\x03\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\n\x95\x83S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00 \x00update-buildpack-dependency.shUT\x05\x00\x01\x95d\xaaa\x94\x92]o\xda0\x18\x85\xef\xfd+N\xbdH\xc0\x85\x83\x86\xd4^d\xcb\x05\x1bLCB-\xa2\xedn\xba\xaa2\xf1\xcbb\x08\x8e\x17;T\x15\xf0\xdf'>\xe5\xb1\xcf\xde\x9es\x9e\xf8q\xe47\x17\xed\xdaU\xed\x896m2KL\xa4\xcb\x19s\xe4!\xa8.a\xb5\xa5\xa9\xd4\x05c7\xc3\xde\xd3\x97\xfe\xf8vps\x9dF\xcd\x97\x19\x84\x9f\xe1=&\xb5.\x94\x95\xd9<\xf6\xe5\xa2\xc0\x1a\xb3\xef\x10\x158\x03\xe2\x05y\xa9\xa4\x97\xb1\"KF\x91\xc94\xb9\x87G\xac\x19\xe0\xa8\xa0\xcc7\x11k\x854\x05\x99e<\xe8\xa1\xf5s\xb7\xa4\xca\xe9\xd2`\x0dO\xce7w\xab\x83\xc3\xd3\xa8{w\xd7\x1f_\xa3u\x80\x8ec\xdeb\xac\xb6Jz\x12'7q\x12x\xc1W\x06\x88\xa0\xdai\x9f\xddb\xbf\xd1\nTI\xfc\xf8}\x9f\xe7\xfde\xab\x07/\x82\xb5\x14A\xc8x@\xf97\x08\xb1\\:\x8e\xa4\n|\xba\x8e!a \x9dc\x169\x0e\x9d-c@-\xf3\x83\xfe\xe0\xe2rp\xdc\xbb\x1e\xf4\xc1\x87\xcf\x92\x02\x11x\xae|A#\x8a%\x05'~\x8f\xc0\x87-(,\xe0\xfb\x1c|M6\x94q\xb4V\xd4\xe7xE\xa5\xa6/\x95`\x89?\x8bWI\xcc)W\x12~\x05\xdf\xbfc\x11\x99aA$\xa0`\xc6\xc3`G6h\x05\xad\xa0\\\x17\xc8\x01 1\xa7\xe5\x8c\xebe\xbc\xa0{\x19\xd7\x91\xd5\xdcz'\x834\xae&_\xd0-o\xd8\x9aH\x0bh\xb6 M('\x94\xcf\x18\xfdW\x91\xaa\x0f\x93e\xf1\xff\x05\x89\xec\x1aL\x16Ct\xb7d\x11\x85\xe1\xc7\xabC\x10z>\xf8Bc\x9bM\xf88<\x1b\xe4rj[\xe7\xd9E\xf9T\xfb\xa3\xc6\x0f\xed\xf1\x1e\xd5uO\x81\xfe\xcbC\x18\x15\xfa\x1f&M\xcf*\x86.t\xdd9\xe3%\xb5&\xb4\xd5\xb9\xe6'\x82q\xf5K::J\xa2\x9e!\xc8@\xe0rp6\xe8]\x0d\xa6\x9fz\x7f\x0c4\xa6\xf8n\x81M\x17$\x8d\xe8L\xb9\xf5=\xd9\xd6\xf4t\x11\xa1\xf1\xd3\xa8\xb1\xdb(\xba\xf1\x10x\x10\x04fk\xf9{\xd3\xf8?\xd2\xbcN\xcf5\x9f@\x1b\xf8Y\xa9\x1f\xce\xfb_\x8aR\xf5{&\xd5!t\x0e\x8c\xb8\xa1\xd7q \x93\x1d\x16\x140bT\xb6Z\xc3~\xab\xd5\x81\x9bqu\xf5\x069\xef\x9c\xd4\x0c\x9fEkB\xc94_\xc7\x0b*\xb5i\x189\x00\xe8\xe0\xe0\xe0\x00\x86\x16\x04\x1f\x8a\xa0\x0ez\xa5\x11\x9ft\xce\xb70\xd4\xb5\xf3'\x15\x92\xc5<]\xe8\xf8\xben\xc1N\xfa\xc7\xfc\xcc\x82\x0b!lA\xc6BM\xc3\x8d[ =\xdb\xb1\xf5npi|\xf2O7z\x08N\xf41\x1e3\xee\"@\x9e\xad\x06\x134\x80\x89\x0d`7(\x87g\x17P;mw\xd3\xc6MlH\x19q\x93l\x18\xa7VZ\xad>[P\xa9\xf4\x08\xeb\xbe\xf0}\xe8\x0fO\x06W\xd7pq\xd6;\x1e\x9c\x9e\x9b\x9b\xa1\xef\x97#kU$\x85CL\x0b\xa9\x99re\x98W1\x91\x9d\x0c\xe9\x90\xd0f\xec\xb8\xd8_\xaa\xdb\xba\xa2\n\x13\xacp\x1b\xd9\xb6\xf7\xb3^7\x97\x99\xc7f\xc13\x8d<\xe9\xb9\xd8\x9d\xa9\xcfB\xb7>\x89\xaf3o\x1aC\x9b\xabv\xc8\x1e\xa4j\xa1\x9c\x18\xa4\x0byo\xa2p*U1Y\xbb\xe3\xa8\xae\xef\xca'\\v\x82\x87\x0f\x1c\x03\x0f\xb6\xa49L\x1f\xa8\xa3p?\xf9aM\xd2\xc3\x9fI\xf6\x13\x9bk==\x9a\xdcZ\\\xd5\\m2\xc3R\x12Q6t\x10z\xa4\xcb\x0b7I\x9d\xb1\xfd\x86o\x97\xddW\nbT\xba\x7f\xfe\xf3k\xc2^\xe9\xb4==\xb2\n\xc9\xad\xc8h\x14oX\x8e\x1en\xf3\x08+Ey>\xe6\xc6\x1cyN\xb3t\xc3\x0bc\xb2q\x9c\xc5\x12p\xc2\xec\xe5mE\xd52&p\xd1\xbb>>5\x9fP h\x12\xcb\xa0\x13\xdfq*\x82\x8e~\x0b\xec\xff\nd\xb0\xbb\xd9\x0dw\x17\xc09\xa3\x11\x01\xa4\xf0b\xaaE\x1e\xee@\xd7\xbd\x93\xe2m7\x87\x1a\xd8o\x96\x97\xb9xV\x00\x9a\xe9\x0e\xa0\xdf\x90\xf3w\x00\x00\x00\xff\xffPK\x07\x08\xfc\x7f\x86\xd0D\x05\x00\x00\xfd\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00z\x8eZS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00 \x00update-lifecycle-dependency.shUT\x05\x00\x019@xa\x94\x91Q\x8b\x131\x10\xc7\xdf\xe7S\xfc/.lKI\x16\xefq\xbd*\x8a'\x08\xc5\x03\x05_n\x0fIw\xa7nzi6f\x93\x1e\xa5\xedw\x17\xdbUz\x8az}\x0b\x99\xf9M~\xff\xcc\xb3\x8b\"\xf5\xa1\x98\x1bW\xb0[c\xae\xfb\x96\xa8\xe7\x08\xc9\xa9\x837\x9e\x17\xdaX\xa2\x9b\xd9\xdb/\x9f\xaf?~z\x7f\xf3a\x9a\x8d6K\xc8\xb8\xc4\x15\xe6\xc9\xd8\x86\x83\x8a\xdd\xcab\x87\xe57\xc8\x80\\Y\xb3\xe0zS[V)\x18\xecPk\x1fS\xe0\x91P\x93b=zu\xb5\xe6\xd0\x9b\xce\xbd\xbc\xad\xaa\xe6nRU\xea\xb7\xc3\xb8P\x131\xc6\x0ej\xe8\xcc\xc7D\xc97:\xb2\xfc5[6\xec\xd95\xec\xea\x0d*\x02\xa4\x1cl\xe4\xc1\xe6\x91\xda\xb1>\x0c\x83\xc8\xb6C\x96\xbd \xfaj\"t\xd3<\x02\x0e\x97u\xcb\xf5}\x97\"\xa4\x84\"2\x0b\xdcBd#\xae\xdb\x0e\";\xf9\x11\x81\x1d\xf4\xc3=\xe4;\xe4*G\xbe\xf5\xc1\xb8\x88\xec\xf9>\x1f\x0b\\LO\xa8'\x11w/\x10[v\x04\xcc^\xbf\xb9\x9eME\xcf\xab5\x87r\xa5\x97]\x10\xc4\xf6|\x95\xcb\xb3U.\xff\xadb\xdcQ\xa5\xe7?j^\xc7\xba\x15\xb40D\xc7\xa7\xca\xb2\xe7(\xbb\x14}\x8apz\xc5\xd3\xce6?\xb7Q\x96\xd9\xf6$\xc0^\xfc\x15r\xfcp\n\xfd\x1f\x18\x9a\xa5\xd5s\xb6?\x90\x83\xe7^\xd0\xf7\x00\x00\x00\xff\xffPK\x07\x08\xd2/:\xe4d\x01\x00\x00\xf6\x02\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00update-netrc.shUT\x05\x00\x01\xcf\x8a\x9e`\x14\xcb1\xae\xc2 \x18\x07\xf0\x9dS\xfc\x1f\x8fU\xb9A\x93&\x92\xb8\xd4\x9a\xa2q\xa6\xf8)$\x15\x08\xb4:\x10\xeen<\xc0\xef\xffOn%\xcb\xd9\x07I\xe1\x8d\xd9\x14\xc7X\xa1\x15;\xda\"\x92O\xf40~a\x8c\xac\x8b\xe0/c\x9d\x0f\x04Q\x8f\xa3\xbe4,\xf1\xe9\x03D\xbdj5\x9d\xfaA5$S\xca'\xe6;D=\xf7Z\xdf\xc6\xe9\xd08\xba\x0e\xfcg\x06\xd5\xb8\xdc\x07Z\xb3e\xdf\x00\x00\x00\xff\xffPK\x07\x08\xab\xefq\n{\x00\x00\x00z\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00z\x8eZS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00 \x00update-package-dependency.shUT\x05\x00\x019@xa\xbc\x93Qo\xda>\x14\xc5\xdf\xfd)N\xfd\x8f\x04\xfc'\xa7j\x1f\xb3\xb2i]\xb3i\x1a\xa2h\x93:M\x80*\x93\\\xc0\x10\x9c\xccv\xa8*\xc2w\x9f\x12`$\xea\xda\xad\x9b\xb4G|\xef\xf1\xf9\xf9\x1c\xf2\xdf\xc9in\xcd\xe9D\xe9S\xd2kL\xa4\x9d3f\xc9AP\x9e\"S\x19M\xa5J\x18\xeb\x87_no\xc2O\x9f?\\\xf7\xbb^;2R\x13\x12\x0b\xeem\xae\xc2A\xd8\xbf\n\xfbo\xbfn9\n\xcc\x0ce\x10k$\xd2\x91u(`S\xe3 nP\xc0I\x95@h\x9cu\x18SS\x0c\x87\x10\x84I\xae\x92\x98\x8c\xef\xd2U\x82\xf1\xf8%\xdc\x9c4\x03\xae{W5\xc3\xfb\x05\x84[\xe0\xa2\xb9^`\xf1\x0d\xc2\x80\xfb\xd5q&\xa3\xa5\x1d\x8e\xfd\xdc(\x14\x88d\xe6rC\xed\x11\xf7\xffoP\x06\xed\xd7\x17k2V\xa5\xfa\x95\xff\xa23\xe2\x1d\x14\xf0\xf7'\xbc\xc3\x18\x90g\xb1t$\xca\x0b\xe5\x8cDL\x19\xe9\x98tt\x8f\x11\x03\x00!\xf6\x1c\xa2\xe2h@\x1d6T\xfc \x9d\xc3h\xefU\xcek\xb9nyi=S\x0e2\x8e\x1bw\xb2\xa9\xaa%\xb6\xa7\xfa\xdd\xc4\x1a\xeb\xc7\xc4~\xbcI\xd1?\xcd\xac\x9c\xd7R+\x7f\xfe,\xb7\xcb\xc1\xed\xd1>\x10\xde\xb3s\xfc5\xceaT\xb97Rj\xa2\x0c>\xbe\xffK\x96F\xa7\xc7\x17\xd7=\xab\x8a\xcb\xbdhN\xd12\xcd\x1d\x84\x80\xbfk\x1d\xdckS4O\xc1\xbdZ\xc7\xe5\xc7&\xef\x96\x10\xef\xd0\xf2[hm2\xa3\xb4\x83w\xb6mu8N\xba5U\x0d\xe8i\xd5\xf1\xcf\xd4{s\x19\xf6\xba\xdc\xd2jM&X\xc9Ej8\xa3\xe4\xf98\xe7\x7f\x84s\xfe4\x8e\xd2;\x1cK\x0ff\x99t\xd1\x9cWq\xee\xec\x82\xc0\x92\x13i\xee\xb2\xdcA\xcb\x15u\xd3$>\xd4\x15\x04\xde\xa6\xf6\x88-\x7fT\xa4\xe9\xae.jv\xfc\x98h/\x10\x89\x9cPR\xca*\xd6-g\xdf\x03\x00\x00\xff\xffPK\x07\x08d\xb7\xc2\xd1\xe7\x01\x00\x00w\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00}t\xaeR\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x00update-pipeline.shUT\x05\x00\x01\xcf\x8a\x9e`\x9c\x92_k\xdb0\x10\xc0\xdf\xefS\xdc4\x8f4\x0f\xb2\xf2\x9c\xe1AX<(\x848\xc4a\x7fhK\x91\xed\xb3\xad\xc6\x91%\xf2\x9a\xf2\xa3\xe9\x01\x00\x00\x81\x02\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xd6\x07\x00\x00create-package.shUT\x05\x00\x01\x19\xa2\x02bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeRhy\x98\xea\x84\x00\x00\x00\xa7\x00\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\\ \x00\x00enable-pack-experimental.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\x85\"\x0ei\xfb\x00\x00\x00h\x01\x00\x00\x10\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x812\n\x00\x00install-crane.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR&\x95T\xcd}\x00\x00\x00\x89\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81t\x0b\x00\x00install-create-package.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\xc6\xd7y\xcb~\x00\x00\x00\x89\x00\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81A\x0c\x00\x00install-octo.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\xdbZX\xfe\xeb\x00\x00\x00O\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x05\x0d\x00\x00install-pack.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR-\xdb\xfd\x81\xf6\x00\x00\x00a\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x816\x0e\x00\x00install-richgo.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\x80\xfd\xc2u\x86\x00\x00\x00\x98\x00\x00\x00(\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81t\x0f\x00\x00install-update-build-image-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeRD\x9aU\x15\x83\x00\x00\x00\x96\x00\x00\x00&\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81Y\x10\x00\x00install-update-buildpack-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00H\xa2hS\x81i\"\xe9\x86\x00\x00\x00\x9e\x00\x00\x00$\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x819\x11\x00\x00install-update-buildpack-image-id.shUT\x05\x00\x01 \x86\x89aPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR[\xf5\xeb\xb7\x86\x00\x00\x00\x96\x00\x00\x00&\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x1a\x12\x00\x00install-update-lifecycle-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR(\x19B-\x84\x00\x00\x00\x94\x00\x00\x00$\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xfd\x12\x00\x00install-update-package-dependency.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeRZ}\x1a\x0e\xe4\x00\x00\x00E\x01\x00\x00\x0d\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xdc\x13\x00\x00install-yj.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe9{\x88TJ\xed3\xf2\xc0\x01\x00\x00\x9c\x04\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x04\x15\x00\x00package-buildpack.shUT\x05\x00\x01GUPbPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x1a\x80kS\xcd\x81\x9d\xa8\x08\x01\x00\x00M\x02\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x0f\x17\x00\x00republish-image.shUT\x05\x00\x014>\x8daPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V\x18kTt4b\x1aN\x00\x00\x00W\x00\x00\x00\x18\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81`\x18\x00\x00run-integration-tests.shUT\x05\x00\x01\xd4\xbb*bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\xa4\xd5!O?\x00\x00\x00:\x00\x00\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xfd\x18\x00\x00run-tests.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00V\x18kT!\xdd\xeceF\x00\x00\x00D\x00\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x7f\x19\x00\x00run-unit-tests.shUT\x05\x00\x01\xd4\xbb*bPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00z\x8eZSt\x02$\xb3\x98\x01\x00\x00_\x03\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x0d\x1a\x00\x00update-build-image-dependency.shUT\x05\x00\x019@xaPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\n\x95\x83S\xe8/\xa4\xeb\xb5\x01\x00\x00\x04\x04\x00\x00\x1e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xfc\x1b\x00\x00update-buildpack-dependency.shUT\x05\x00\x01\x95d\xaaaPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xad\x9d\x8dT\xfc\x7f\x86\xd0D\x05\x00\x00\xfd\x10\x00\x00!\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x06\x1e\x00\x00update-draft-release-buildpack.shUT\x05\x00\x01W(WbPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00z\x8eZS\xd2/:\xe4d\x01\x00\x00\xf6\x02\x00\x00\x1e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\xa2#\x00\x00update-lifecycle-dependency.shUT\x05\x00\x019@xaPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\xab\xefq\n{\x00\x00\x00z\x00\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81[%\x00\x00update-netrc.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00z\x8eZSd\xb7\xc2\xd1\xe7\x01\x00\x00w\x05\x00\x00\x1c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81\x1c&\x00\x00update-package-dependency.shUT\x05\x00\x019@xaPK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\xddd\x12\xe6\x98\x01\x00\x00%\x03\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x81V(\x00\x00update-pipeline.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00}t\xaeR\xbc\xfb5Z\x1e\x01\x00\x00{\x02\x00\x00\x18\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x817*\x00\x00update-release-digest.shUT\x05\x00\x01\xcf\x8a\x9e`PK\x05\x06\x00\x00\x00\x00\x1f\x00\x1f\x00\x88 \x00\x00\xa4+\x00\x00\x00\x00"
fs.Register(data)
}
\ No newline at end of file
diff --git a/octo/update-draft-release-buildpack.sh b/octo/update-draft-release-buildpack.sh
index 21e72095..c8279e7d 100755
--- a/octo/update-draft-release-buildpack.sh
+++ b/octo/update-draft-release-buildpack.sh
@@ -2,6 +2,8 @@
set -euo pipefail
+echo "****** DEPRECATED - Use draft-release action instead *******"
+
PAYLOAD="{}"
if [[ -e buildpack.toml ]]; then