From 7a0f3e2d13bad271ca36ac767653a5701b2aa1c0 Mon Sep 17 00:00:00 2001 From: soolmuk <72430756+soolmuk@users.noreply.github.com> Date: Sat, 5 Sep 2026 11:24:18 +0900 Subject: [PATCH 1/5] feat(renderer): --verify-model for a per-pass reflection model - templates/github.workflow.yml: inside the #[verify:begin/end] region, the reflection pass rewrites ~/.config/goose/config.yaml with GOOSE_MODEL: __GOOSE_VERIFY_MODEL__ before its first goose invocation - render.py: new --verify-model option (default: --model, preserving the single-model behavior); placeholder __GOOSE_VERIFY_MODEL__ substituted - verified: verify.py PASS for on/shadow/off renders; diff-model render shows review=deepseek-v4-flash-vision-exp / reflection=glm-5p3-flash --- scripts/render.py | 10 ++++++++-- templates/github.workflow.yml | 11 +++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/scripts/render.py b/scripts/render.py index 2351dee..51fd1e4 100644 --- a/scripts/render.py +++ b/scripts/render.py @@ -16,7 +16,7 @@ base URL that render.py used (release-only distribution model). Placeholders (all __UPPER__): - __PROVIDER__ __GOOSE_MODEL__ __LANGUAGE__ __API_KEY_NAME__ + __PROVIDER__ __GOOSE_MODEL__ __GOOSE_VERIFY_MODEL__ __LANGUAGE__ __API_KEY_NAME__ __VERIFY_PROFILE__ __VERIFY_MODE__ (verification gate, on/shadow only) __STYLE_ASSET__ (asset basename, e.g. instructions.graded.md; the rendered config downloads it at CI runtime and substitutes @@ -28,7 +28,9 @@ off the #[verify:begin]/#[verify:end] marked region is REMOVED The reflection instructions (instructions.reflection.md asset) are downloaded at CI runtime with the same pattern as inline_threads.py, - so a single model/provider/config serves both passes. + so a single model/provider/config serves both passes unless + --verify-model overrides __GOOSE_VERIFY_MODEL__ (the reflection + pass rewrites the config before its first goose invocation). """ import argparse import os @@ -191,6 +193,9 @@ def main(): ap.add_argument("platform", choices=list(SOURCES)) ap.add_argument("--provider", required=True) ap.add_argument("--model", required=True) + ap.add_argument("--verify-model", default=None, + help="model for the verification (reflection) pass; " + "defaults to --model (single-model behavior)") ap.add_argument("--style", required=True, choices=["graded-review", "changes-summary"]) ap.add_argument("--language", default="Korean") ap.add_argument("--local", action="store_true", @@ -239,6 +244,7 @@ def main(): ("__RECIPES_BASE__", release_base()), ("__PROVIDER__", provider), ("__GOOSE_MODEL__", args.model), + ("__GOOSE_VERIFY_MODEL__", args.verify_model or args.model), ("__API_KEY_NAME__", API_KEY_NAMES[provider]), ("__VERIFY_PROFILE__", args.verify_profile), ("__VERIFY_MODE__", verify_mode), diff --git a/templates/github.workflow.yml b/templates/github.workflow.yml index ad6ece9..723a43a 100644 --- a/templates/github.workflow.yml +++ b/templates/github.workflow.yml @@ -154,6 +154,17 @@ jobs: #[verify:begin] # Verification gate (issue #10): single reflection pass + merge. # Same step run block: the provider key binding stays exactly 1. + # Issue: verification (reflection) pass may run a different + # model than the review pass. __GOOSE_VERIFY_MODEL__ is + # substituted with the review model by default (single-model + # behavior preserved); render.py --verify-model overrides it. + # Rewriting the global config.yaml here only affects the + # remaining goose invocations in this step (reflection + retry). + cat <<'VEOF' > ~/.config/goose/config.yaml + GOOSE_PROVIDER: __PROVIDER__ + GOOSE_MODEL: __GOOSE_VERIFY_MODEL__ + keyring: false + VEOF # (The old "skip when the PR head moved" pre-check read the same # event payload twice — head.sha vs head.sha — so it never fired; # the posting step's live `gh pr view` check is the real guard.) From c31a2932ecc4da6a7b3db5423348e1da09f0fc48 Mon Sep 17 00:00:00 2001 From: soolmuk <72430756+soolmuk@users.noreply.github.com> Date: Sat, 5 Sep 2026 11:28:40 +0900 Subject: [PATCH 2/5] feat(setup recipe): expose goose_verify_model for a per-pass verification model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - new optional string parameter goose_verify_model (default "" = reuse goose_model for both passes — unchanged behavior) - renderer invocation documents --verify-model {{ goose_verify_model }} with explicit prompt guidance: when the user leaves it empty, do NOT pass the flag (single-model behavior preserved) - deeplinks regenerated (README.md, README.ko.md, docs/launch.html); update_deeplinks.py --check reports all up to date --- README.ko.md | 2 +- README.md | 2 +- codegoose-setup.yaml | 16 ++++++++++++++++ docs/launch.html | 4 ++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/README.ko.md b/README.ko.md index f24e6c5..ea267ca 100644 --- a/README.ko.md +++ b/README.ko.md @@ -128,7 +128,7 @@ goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBQUiBSZX ```text -goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gUHJvdmlkZXIgc2VjcmV0IHRoYXQgdGhlIHVzZXIgbXVzdCBhZGQsIGUuZy4gZm9yIHt7IGNpX3Byb3ZpZGVyIH19IHRoZVxuICByZXF1aXJlZCByZXBvIHNlY3JldCBuYW1lIGZyb20gdGhlIG1hcHBpbmcgYWJvdmUuXG4tIEhvdyB0byB0cmlnZ2VyOiBvcGVuL3VwZGF0ZSBhIHB1bGwgcmVxdWVzdDsgQ0kgcG9zdHMgdGhlIHt7IHJldmlld19zdHlsZSB9fVxuICByZXN1bHQgaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19LlxuLSBGb3IgZ3JhZGVkIHJldmlld3MgdGhlIENJIGFsc28gcG9zdHMgdXAgdG8gMTAgZGlmZi1hbmNob3JlZCBpbmxpbmUgY29tbWVudHNcbiAgKGxpa2UgQ29kZVJhYmJpdCk6IGVhY2ggZmluZGluZyBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgUFIvTVIgZGlmZiBiZWZvcmVcbiAgcG9zdGluZywgYW5kIGZpbmRpbmdzIHRoYXQgY2Fubm90IGJlIGFuY2hvcmVkIGFyZSByZWNhcHBlZCBpbiB0aGUgc3VtbWFyeVxuICBjb21tZW50IGluc3RlYWQg4oCUIG5vdGhpbmcgaXMgc2lsZW50bHkgZHJvcHBlZC5cbi0gVmVyaWZpY2F0aW9uIGdhdGUgKHt7IHZlcmlmaWNhdGlvbl9nYXRlIH19IHByb2ZpbGUge3sgdmVyaWZ5X2dhdGVfcHJvZmlsZSB9fSk6XG4gIHdoZW4gb24vc2hhZG93LCBldmVyeSBmaW5kaW5nIGlzIHJlLXZlcmlmaWVkIGJ5IGEgc2Vjb25kIGdvb3NlIHBhc3NcbiAgKHJlZmxlY3Rpb24pIGJlZm9yZSBwb3N0aW5nOyByZWZ1dGVkIGZpbmRpbmdzIGFyZSByZW1vdmVkLCBwbGF1c2libGUtYnV0LVxuICB1bnZlcmlmaWVkIGJsb2NrZXJzIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLCBhbmQgdGhlIHZlcmRpY3QgaXMgcmVjb21wdXRlZC5cbiAgVGhlIHBvc3RlZCByZXZpZXcgbm90ZXMgaG93IG1hbnkgZmluZGluZ3Mgd2VyZSBrZXB0L2RlbW90ZWQvZHJvcHBlZDsgdGhlXG4gIGRyb3BwZWQgZGV0YWlscyBsaXZlIGluIHRoZSBDSSBqb2IgbG9nIChkcm9wcGVkLmpzb24gYXJ0aWZhY3QpLCBuZXZlclxuICBzaWxlbnRseSBsb3N0LiBTaGFkb3cgbW9kZSByZWNvcmRzIG91dGNvbWVzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBvc3QuXG4gIENvc3Qgbm90ZTogb24vc2hhZG93IOKJiCAyeCBMTE0gc3BlbmQgcGVyIHJldmlldzsgY2hvb3NlIG9mZiB0byBkaXNhYmxlLlxuLSBSZW1pbmRlcjogaWYgdGhpcyByZXBvIGFscmVhZHkgaGFzIGEgQ29kZUdvb3NlLXJlbmRlcmVkIENJIGNvbmZpZywgdGhpc1xuICBydW4gcmUtcmVuZGVycyBpdCBpbiBwbGFjZSAodGhhdCBpcyB0aGUgaW50ZW5kZWQgZHJpZnQgY29udHJvbCkuXG5cbkRvIE5PVCBnaXQgY29tbWl0IG9yIHB1c2guIERvIE5PVCB0b3VjaCBvdGhlciBmaWxlcy5cbiIsImV4dGVuc2lvbnMiOlt7InR5cGUiOiJidWlsdGluIiwibmFtZSI6ImRldmVsb3BlciIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJ0aW1lb3V0IjpudWxsLCJidW5kbGVkIjpudWxsfSx7InR5cGUiOiJwbGF0Zm9ybSIsIm5hbWUiOiJhbmFseXplIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsImJ1bmRsZWQiOm51bGx9XSwic2V0dGluZ3MiOnsidGVtcGVyYXR1cmUiOjAuMX0sInBhcmFtZXRlcnMiOlt7ImtleSI6ImNpX3BsYXRmb3JtIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkNJIHBsYXRmb3JtIHRvIHNldCB1cCAoZ29vc2UgcmV2aWV3cyBwdWxsIHJlcXVlc3RzIC8gTVJzIHRoZXJlKSIsIm9wdGlvbnMiOlsiZ2l0aHViIiwiZ2l0bGFiIiwiZ2l0ZWEiLCJ0ZWFtY2l0eSJdfSx7ImtleSI6Im91dHB1dF9sYW5ndWFnZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMYW5ndWFnZSBmb3IgcmV2aWV3IGNvbW1lbnRzIGFuZCB0aGUgc2V0dXAgcmVwb3J0Iiwib3B0aW9ucyI6WyJLb3JlYW4iLCJFbmdsaXNoIiwiSmFwYW5lc2UiLCJDaGluZXNlIl19LHsia2V5IjoicmV2aWV3X3N0eWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IldoYXQgdGhlIENJIHBvc3RzIG9uIHRoZSBwdWxsIHJlcXVlc3QiLCJvcHRpb25zIjpbImdyYWRlZC1yZXZpZXciLCJjaGFuZ2VzLXN1bW1hcnkiXX0seyJrZXkiOiJjaV9wcm92aWRlciIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMTE0gcHJvdmlkZXIgdXNlZCBieSBnb29zZSBpbiBDSSIsIm9wdGlvbnMiOlsib2xsYW1hX2Nsb3VkIiwiYW50aHJvcGljIiwib3BlbmFpIiwib3BlbnJvdXRlciIsImZpcmV3b3Jrcy1haSJdfSx7ImtleSI6Imdvb3NlX21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ik1vZGVsIG5hbWUgZm9yIEdPT1NFX01PREVMIGluIHRoZSBDSSBjb25maWcgKGUuZy4gZ2xtLTUuMyBmb3Igb2xsYW1hX2Nsb3VkLCBjbGF1ZGUtc29ubmV0LTQtNSBmb3IgYW50aHJvcGljLCBncHQtNG8gZm9yIG9wZW5haSwgYW50aHJvcGljL2NsYXVkZS1zb25uZXQtNCBmb3Igb3BlbnJvdXRlciwgYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9kZWVwc2Vlay12NC1mbGFzaC0wNzMxIGZvciBmaXJld29ya3MtYWkpIn0seyJrZXkiOiJ2ZXJpZmljYXRpb25fZ2F0ZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJSZXZpZXcgdmVyaWZpY2F0aW9uIGdhdGUgKGlzc3VlICMxMCkuIEFmdGVyIHRoZSBmaXJzdCByZXZpZXcgcGFzcywgYSBzaW5nbGUgcmVmbGVjdGlvbiBwYXNzIHJlLWNoZWNrcyBldmVyeSBmaW5kaW5nICgwLTEwIHZhbGlkaXR5IHNjb3JlKSBhbmQgYSBkZXRlcm1pbmlzdGljIG1lcmdlIGdhdGUga2VlcHMvZGVtb3Rlcy9kcm9wcyBmaW5kaW5ncy4gb24gPSBnYXRlIGVuZm9yY2VkOyBzaGFkb3cgPSBnYXRlIG91dGNvbWVzIHJlY29yZGVkIGluIENJIGxvZ3Mgb25seSAocG9zdGVkIHJldmlldyBpcyB0aGUgdW5tb2RpZmllZCBmaXJzdCBwYXNzKTsgb2ZmID0gbm8gdmVyaWZpY2F0aW9uIHN0ZXAuIENvc3Q6IG9uL3NoYWRvdyByb3VnaGx5IGRvdWJsZXMgdGhlIExMTSBzcGVuZCBwZXIgcmV2aWV3LlxuIiwib3B0aW9ucyI6WyJvbiIsIm9mZiIsInNoYWRvdyJdfSx7ImtleSI6InZlcmlmeV9nYXRlX3Byb2ZpbGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiR2F0ZSBwcm9maWxlLiBjb25zZXJ2YXRpdmUgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGtlcHQsIFAwL1AxIGZpbmRpbmdzIHdpdGggYSA0LTYgdmFsaWRpdHkgc2NvcmUgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MuIHN0cmljdCA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUgZHJvcHBlZCwgYW5kIHRoZSBzYW1lIHRocmVzaG9sZHMgYXBwbHkgdG8gZXZlcnkgcHJpb3JpdHkgKHNjb3JlIDw9IDQgZHJvcCwgNS03IGRlbW90ZSwgPj0gOCBrZWVwKS4gS2VlcCB0aGUgZGVmYXVsdCB1bmxlc3Mgc2hhZG93IG1lYXN1cmVtZW50cyBqdXN0aWZ5IHRpZ2h0ZW5pbmcuXG4iLCJvcHRpb25zIjpbImNvbnNlcnZhdGl2ZSIsInN0cmljdCJdfV19 +goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXZlcmlmeS1tb2RlbCB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0gXFxcbiAgLS1zdHlsZSB7eyByZXZpZXdfc3R5bGUgfX0gXFxcbiAgLS1sYW5ndWFnZSB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0gXFxcbiAgLS12ZXJpZmljYXRpb24ge3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gXFxcbiAgLS12ZXJpZnktcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG5gYGBcblxuTm90ZSBmb3IgdGVhbWNpdHk6IHRoZSByZW5kZXJlciBwcm9kdWNlcyBgLnRlYW1jaXR5L3NldHRpbmdzLmt0c2A7IHRoZSByZXZpZXdcbnRleHQgaXMgcHVibGlzaGVkIGFzIHRoZSBidWlsZCBhcnRpZmFjdCBgcHJfcmV2aWV3LnR4dGAgKFRlYW1DaXR5IGNhbm5vdCBwb3N0XG5mb3JnZSBjb21tZW50cyB3aXRob3V0IGV4dHJhIFJFU1Qgc2V0dXApLlxuRm9yIGdpdGVhOiB0aGUgdXNlciBtdXN0IGFsc28gYWRkIGEgYFJFVklFV19UT0tFTmAgc2VjcmV0IChHaXRlYSBhY2Nlc3MgdG9rZW5cbndpdGggd3JpdGUgcGVybWlzc2lvbikg4oCUIGluY2x1ZGUgdGhhdCBpbiB0aGUgcmVwb3J0LlxuXG4jIyBTdGVwIDMg4oCUIFZlcmlmeSAodGhlIHNjcmlwdCdzIGV4aXQgY29kZSBpcyB0aGUgY29udHJhY3QpXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvdmVyaWZ5LnB5IC1vIC90bXAvdmVyaWZ5X2NpLnB5XG5weXRob24zIC90bXAvdmVyaWZ5X2NpLnB5IHt7IGNpX3BsYXRmb3JtIH19IDxyZW5kZXJlZC1jb25maWctcGF0aD5cbmBgYFxuRXhwZWN0ZWQgUkVTVUxUOiBQQVNTLiBJZiBGQUlMLCByZXBvcnQgdGhlIGZhaWxpbmcgY2hlY2tzOyBkbyBOT1QgaGFuZC1wYXRjaFxudGhlIGNvbmZpZy4gRml4ZXMgYmVsb25nIGluIHNvb2xtdWsvQ29kZUdvb3NlIHRlbXBsYXRlcy9zY3JpcHRzLlxuXG4jIyBTdGVwIDQg4oCUIFJlcG9ydCAoaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19KVxuLSBTdGF0dXMgKGNyZWF0ZWQvdXBkYXRlZCkgKyBjb25maWcgZmlsZSBwYXRoLCBhbmQgdGhhdCBpdCB3YXMgcmVuZGVyZWQgYnkgdGhlXG4gIGRldGVybWluaXN0aWMgcGlwZWxpbmUgKG5vdCBhdXRob3JlZCBieSB0aGUgTExNKS5cbi0gR09PU0VfTU9ERUw6IHt7IGdvb3NlX21vZGVsIH19IChoYXJkY29kZWQgaW50byB0aGUgY29uZmlnIGJ5IHRoZSByZW5kZXJlcikuXG4tIFZlcmlmaWNhdGlvbiBtb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IOKAlCB0aGUgbW9kZWwgdGhlIHJlZmxlY3Rpb25cbiAgcGFzcyB1c2VzLiBJZiB0aGUgdXNlciBsZWZ0IGl0IGVtcHR5LCBETyBOT1QgcGFzcyAtLXZlcmlmeS1tb2RlbCB0byB0aGVcbiAgcmVuZGVyZXIgKGJvdGggcGFzc2VzIHRoZW4gdXNlIEdPT1NFX01PREVMKS4gSWYgc2V0LCBwYXNzXG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBleGFjdGx5LlxuLSBQcm92aWRlciBzZWNyZXQgdGhhdCB0aGUgdXNlciBtdXN0IGFkZCwgZS5nLiBmb3Ige3sgY2lfcHJvdmlkZXIgfX0gdGhlXG4gIHJlcXVpcmVkIHJlcG8gc2VjcmV0IG5hbWUgZnJvbSB0aGUgbWFwcGluZyBhYm92ZS5cbi0gSG93IHRvIHRyaWdnZXI6IG9wZW4vdXBkYXRlIGEgcHVsbCByZXF1ZXN0OyBDSSBwb3N0cyB0aGUge3sgcmV2aWV3X3N0eWxlIH19XG4gIHJlc3VsdCBpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0uXG4tIEZvciBncmFkZWQgcmV2aWV3cyB0aGUgQ0kgYWxzbyBwb3N0cyB1cCB0byAxMCBkaWZmLWFuY2hvcmVkIGlubGluZSBjb21tZW50c1xuICAobGlrZSBDb2RlUmFiYml0KTogZWFjaCBmaW5kaW5nIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBQUi9NUiBkaWZmIGJlZm9yZVxuICBwb3N0aW5nLCBhbmQgZmluZGluZ3MgdGhhdCBjYW5ub3QgYmUgYW5jaG9yZWQgYXJlIHJlY2FwcGVkIGluIHRoZSBzdW1tYXJ5XG4gIGNvbW1lbnQgaW5zdGVhZCDigJQgbm90aGluZyBpcyBzaWxlbnRseSBkcm9wcGVkLlxuLSBWZXJpZmljYXRpb24gZ2F0ZSAoe3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19KTpcbiAgd2hlbiBvbi9zaGFkb3csIGV2ZXJ5IGZpbmRpbmcgaXMgcmUtdmVyaWZpZWQgYnkgYSBzZWNvbmQgZ29vc2UgcGFzc1xuICAocmVmbGVjdGlvbikgYmVmb3JlIHBvc3Rpbmc7IHJlZnV0ZWQgZmluZGluZ3MgYXJlIHJlbW92ZWQsIHBsYXVzaWJsZS1idXQtXG4gIHVudmVyaWZpZWQgYmxvY2tlcnMgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MsIGFuZCB0aGUgdmVyZGljdCBpcyByZWNvbXB1dGVkLlxuICBUaGUgcG9zdGVkIHJldmlldyBub3RlcyBob3cgbWFueSBmaW5kaW5ncyB3ZXJlIGtlcHQvZGVtb3RlZC9kcm9wcGVkOyB0aGVcbiAgZHJvcHBlZCBkZXRhaWxzIGxpdmUgaW4gdGhlIENJIGpvYiBsb2cgKGRyb3BwZWQuanNvbiBhcnRpZmFjdCksIG5ldmVyXG4gIHNpbGVudGx5IGxvc3QuIFNoYWRvdyBtb2RlIHJlY29yZHMgb3V0Y29tZXMgd2l0aG91dCBjaGFuZ2luZyB0aGUgcG9zdC5cbiAgQ29zdCBub3RlOiBvbi9zaGFkb3cg4omIIDJ4IExMTSBzcGVuZCBwZXIgcmV2aWV3OyBjaG9vc2Ugb2ZmIHRvIGRpc2FibGUuXG4tIFJlbWluZGVyOiBpZiB0aGlzIHJlcG8gYWxyZWFkeSBoYXMgYSBDb2RlR29vc2UtcmVuZGVyZWQgQ0kgY29uZmlnLCB0aGlzXG4gIHJ1biByZS1yZW5kZXJzIGl0IGluIHBsYWNlICh0aGF0IGlzIHRoZSBpbnRlbmRlZCBkcmlmdCBjb250cm9sKS5cblxuRG8gTk9UIGdpdCBjb21taXQgb3IgcHVzaC4gRG8gTk9UIHRvdWNoIG90aGVyIGZpbGVzLlxuIiwiZXh0ZW5zaW9ucyI6W3sidHlwZSI6ImJ1aWx0aW4iLCJuYW1lIjoiZGV2ZWxvcGVyIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsInRpbWVvdXQiOm51bGwsImJ1bmRsZWQiOm51bGx9LHsidHlwZSI6InBsYXRmb3JtIiwibmFtZSI6ImFuYWx5emUiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwiYnVuZGxlZCI6bnVsbH1dLCJzZXR0aW5ncyI6eyJ0ZW1wZXJhdHVyZSI6MC4xfSwicGFyYW1ldGVycyI6W3sia2V5IjoiY2lfcGxhdGZvcm0iLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiQ0kgcGxhdGZvcm0gdG8gc2V0IHVwIChnb29zZSByZXZpZXdzIHB1bGwgcmVxdWVzdHMgLyBNUnMgdGhlcmUpIiwib3B0aW9ucyI6WyJnaXRodWIiLCJnaXRsYWIiLCJnaXRlYSIsInRlYW1jaXR5Il19LHsia2V5Ijoib3V0cHV0X2xhbmd1YWdlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ikxhbmd1YWdlIGZvciByZXZpZXcgY29tbWVudHMgYW5kIHRoZSBzZXR1cCByZXBvcnQiLCJvcHRpb25zIjpbIktvcmVhbiIsIkVuZ2xpc2giLCJKYXBhbmVzZSIsIkNoaW5lc2UiXX0seyJrZXkiOiJyZXZpZXdfc3R5bGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiV2hhdCB0aGUgQ0kgcG9zdHMgb24gdGhlIHB1bGwgcmVxdWVzdCIsIm9wdGlvbnMiOlsiZ3JhZGVkLXJldmlldyIsImNoYW5nZXMtc3VtbWFyeSJdfSx7ImtleSI6ImNpX3Byb3ZpZGVyIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkxMTSBwcm92aWRlciB1c2VkIGJ5IGdvb3NlIGluIENJIiwib3B0aW9ucyI6WyJvbGxhbWFfY2xvdWQiLCJhbnRocm9waWMiLCJvcGVuYWkiLCJvcGVucm91dGVyIiwiZmlyZXdvcmtzLWFpIl19LHsia2V5IjoiZ29vc2VfbW9kZWwiLCJpbnB1dF90eXBlIjoic3RyaW5nIiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTW9kZWwgbmFtZSBmb3IgR09PU0VfTU9ERUwgaW4gdGhlIENJIGNvbmZpZyAoZS5nLiBnbG0tNS4zIGZvciBvbGxhbWFfY2xvdWQsIGNsYXVkZS1zb25uZXQtNC01IGZvciBhbnRocm9waWMsIGdwdC00byBmb3Igb3BlbmFpLCBhbnRocm9waWMvY2xhdWRlLXNvbm5ldC00IGZvciBvcGVucm91dGVyLCBhY2NvdW50cy9maXJld29ya3MvbW9kZWxzL2RlZXBzZWVrLXY0LWZsYXNoLTA3MzEgZm9yIGZpcmV3b3Jrcy1haSkifSx7ImtleSI6Imdvb3NlX3ZlcmlmeV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6Im9wdGlvbmFsIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbCBtb2RlbCBmb3IgdGhlIHZlcmlmaWNhdGlvbiAocmVmbGVjdGlvbikgcGFzcyBvbmx5LiBMZWF2ZSBlbXB0eSB0byByZXVzZSBnb29zZV9tb2RlbCBmb3IgYm90aCBwYXNzZXMgKGRlZmF1bHQpLiBFeGFtcGxlIGZvciBmaXJld29ya3MtYWk6IGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZ2xtLTVwMy1mbGFzaFxuIiwiZGVmYXVsdCI6IiJ9LHsia2V5IjoidmVyaWZpY2F0aW9uX2dhdGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiUmV2aWV3IHZlcmlmaWNhdGlvbiBnYXRlIChpc3N1ZSAjMTApLiBBZnRlciB0aGUgZmlyc3QgcmV2aWV3IHBhc3MsIGEgc2luZ2xlIHJlZmxlY3Rpb24gcGFzcyByZS1jaGVja3MgZXZlcnkgZmluZGluZyAoMC0xMCB2YWxpZGl0eSBzY29yZSkgYW5kIGEgZGV0ZXJtaW5pc3RpYyBtZXJnZSBnYXRlIGtlZXBzL2RlbW90ZXMvZHJvcHMgZmluZGluZ3MuIG9uID0gZ2F0ZSBlbmZvcmNlZDsgc2hhZG93ID0gZ2F0ZSBvdXRjb21lcyByZWNvcmRlZCBpbiBDSSBsb2dzIG9ubHkgKHBvc3RlZCByZXZpZXcgaXMgdGhlIHVubW9kaWZpZWQgZmlyc3QgcGFzcyk7IG9mZiA9IG5vIHZlcmlmaWNhdGlvbiBzdGVwLiBDb3N0OiBvbi9zaGFkb3cgcm91Z2hseSBkb3VibGVzIHRoZSBMTE0gc3BlbmQgcGVyIHJldmlldy5cbiIsIm9wdGlvbnMiOlsib24iLCJvZmYiLCJzaGFkb3ciXX0seyJrZXkiOiJ2ZXJpZnlfZ2F0ZV9wcm9maWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkdhdGUgcHJvZmlsZS4gY29uc2VydmF0aXZlID0gdW5tYXRjaGVkIGZpbmRpbmdzIGFyZSBrZXB0LCBQMC9QMSBmaW5kaW5ncyB3aXRoIGEgNC02IHZhbGlkaXR5IHNjb3JlIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLiBzdHJpY3QgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGRyb3BwZWQsIGFuZCB0aGUgc2FtZSB0aHJlc2hvbGRzIGFwcGx5IHRvIGV2ZXJ5IHByaW9yaXR5IChzY29yZSA8PSA0IGRyb3AsIDUtNyBkZW1vdGUsID49IDgga2VlcCkuIEtlZXAgdGhlIGRlZmF1bHQgdW5sZXNzIHNoYWRvdyBtZWFzdXJlbWVudHMganVzdGlmeSB0aWdodGVuaW5nLlxuIiwib3B0aW9ucyI6WyJjb25zZXJ2YXRpdmUiLCJzdHJpY3QiXX1dfQ ``` diff --git a/README.md b/README.md index d107bab..29ea1a0 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBQUiBSZX ```text -goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gUHJvdmlkZXIgc2VjcmV0IHRoYXQgdGhlIHVzZXIgbXVzdCBhZGQsIGUuZy4gZm9yIHt7IGNpX3Byb3ZpZGVyIH19IHRoZVxuICByZXF1aXJlZCByZXBvIHNlY3JldCBuYW1lIGZyb20gdGhlIG1hcHBpbmcgYWJvdmUuXG4tIEhvdyB0byB0cmlnZ2VyOiBvcGVuL3VwZGF0ZSBhIHB1bGwgcmVxdWVzdDsgQ0kgcG9zdHMgdGhlIHt7IHJldmlld19zdHlsZSB9fVxuICByZXN1bHQgaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19LlxuLSBGb3IgZ3JhZGVkIHJldmlld3MgdGhlIENJIGFsc28gcG9zdHMgdXAgdG8gMTAgZGlmZi1hbmNob3JlZCBpbmxpbmUgY29tbWVudHNcbiAgKGxpa2UgQ29kZVJhYmJpdCk6IGVhY2ggZmluZGluZyBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgUFIvTVIgZGlmZiBiZWZvcmVcbiAgcG9zdGluZywgYW5kIGZpbmRpbmdzIHRoYXQgY2Fubm90IGJlIGFuY2hvcmVkIGFyZSByZWNhcHBlZCBpbiB0aGUgc3VtbWFyeVxuICBjb21tZW50IGluc3RlYWQg4oCUIG5vdGhpbmcgaXMgc2lsZW50bHkgZHJvcHBlZC5cbi0gVmVyaWZpY2F0aW9uIGdhdGUgKHt7IHZlcmlmaWNhdGlvbl9nYXRlIH19IHByb2ZpbGUge3sgdmVyaWZ5X2dhdGVfcHJvZmlsZSB9fSk6XG4gIHdoZW4gb24vc2hhZG93LCBldmVyeSBmaW5kaW5nIGlzIHJlLXZlcmlmaWVkIGJ5IGEgc2Vjb25kIGdvb3NlIHBhc3NcbiAgKHJlZmxlY3Rpb24pIGJlZm9yZSBwb3N0aW5nOyByZWZ1dGVkIGZpbmRpbmdzIGFyZSByZW1vdmVkLCBwbGF1c2libGUtYnV0LVxuICB1bnZlcmlmaWVkIGJsb2NrZXJzIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLCBhbmQgdGhlIHZlcmRpY3QgaXMgcmVjb21wdXRlZC5cbiAgVGhlIHBvc3RlZCByZXZpZXcgbm90ZXMgaG93IG1hbnkgZmluZGluZ3Mgd2VyZSBrZXB0L2RlbW90ZWQvZHJvcHBlZDsgdGhlXG4gIGRyb3BwZWQgZGV0YWlscyBsaXZlIGluIHRoZSBDSSBqb2IgbG9nIChkcm9wcGVkLmpzb24gYXJ0aWZhY3QpLCBuZXZlclxuICBzaWxlbnRseSBsb3N0LiBTaGFkb3cgbW9kZSByZWNvcmRzIG91dGNvbWVzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBvc3QuXG4gIENvc3Qgbm90ZTogb24vc2hhZG93IOKJiCAyeCBMTE0gc3BlbmQgcGVyIHJldmlldzsgY2hvb3NlIG9mZiB0byBkaXNhYmxlLlxuLSBSZW1pbmRlcjogaWYgdGhpcyByZXBvIGFscmVhZHkgaGFzIGEgQ29kZUdvb3NlLXJlbmRlcmVkIENJIGNvbmZpZywgdGhpc1xuICBydW4gcmUtcmVuZGVycyBpdCBpbiBwbGFjZSAodGhhdCBpcyB0aGUgaW50ZW5kZWQgZHJpZnQgY29udHJvbCkuXG5cbkRvIE5PVCBnaXQgY29tbWl0IG9yIHB1c2guIERvIE5PVCB0b3VjaCBvdGhlciBmaWxlcy5cbiIsImV4dGVuc2lvbnMiOlt7InR5cGUiOiJidWlsdGluIiwibmFtZSI6ImRldmVsb3BlciIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJ0aW1lb3V0IjpudWxsLCJidW5kbGVkIjpudWxsfSx7InR5cGUiOiJwbGF0Zm9ybSIsIm5hbWUiOiJhbmFseXplIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsImJ1bmRsZWQiOm51bGx9XSwic2V0dGluZ3MiOnsidGVtcGVyYXR1cmUiOjAuMX0sInBhcmFtZXRlcnMiOlt7ImtleSI6ImNpX3BsYXRmb3JtIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkNJIHBsYXRmb3JtIHRvIHNldCB1cCAoZ29vc2UgcmV2aWV3cyBwdWxsIHJlcXVlc3RzIC8gTVJzIHRoZXJlKSIsIm9wdGlvbnMiOlsiZ2l0aHViIiwiZ2l0bGFiIiwiZ2l0ZWEiLCJ0ZWFtY2l0eSJdfSx7ImtleSI6Im91dHB1dF9sYW5ndWFnZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMYW5ndWFnZSBmb3IgcmV2aWV3IGNvbW1lbnRzIGFuZCB0aGUgc2V0dXAgcmVwb3J0Iiwib3B0aW9ucyI6WyJLb3JlYW4iLCJFbmdsaXNoIiwiSmFwYW5lc2UiLCJDaGluZXNlIl19LHsia2V5IjoicmV2aWV3X3N0eWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IldoYXQgdGhlIENJIHBvc3RzIG9uIHRoZSBwdWxsIHJlcXVlc3QiLCJvcHRpb25zIjpbImdyYWRlZC1yZXZpZXciLCJjaGFuZ2VzLXN1bW1hcnkiXX0seyJrZXkiOiJjaV9wcm92aWRlciIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMTE0gcHJvdmlkZXIgdXNlZCBieSBnb29zZSBpbiBDSSIsIm9wdGlvbnMiOlsib2xsYW1hX2Nsb3VkIiwiYW50aHJvcGljIiwib3BlbmFpIiwib3BlbnJvdXRlciIsImZpcmV3b3Jrcy1haSJdfSx7ImtleSI6Imdvb3NlX21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ik1vZGVsIG5hbWUgZm9yIEdPT1NFX01PREVMIGluIHRoZSBDSSBjb25maWcgKGUuZy4gZ2xtLTUuMyBmb3Igb2xsYW1hX2Nsb3VkLCBjbGF1ZGUtc29ubmV0LTQtNSBmb3IgYW50aHJvcGljLCBncHQtNG8gZm9yIG9wZW5haSwgYW50aHJvcGljL2NsYXVkZS1zb25uZXQtNCBmb3Igb3BlbnJvdXRlciwgYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9kZWVwc2Vlay12NC1mbGFzaC0wNzMxIGZvciBmaXJld29ya3MtYWkpIn0seyJrZXkiOiJ2ZXJpZmljYXRpb25fZ2F0ZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJSZXZpZXcgdmVyaWZpY2F0aW9uIGdhdGUgKGlzc3VlICMxMCkuIEFmdGVyIHRoZSBmaXJzdCByZXZpZXcgcGFzcywgYSBzaW5nbGUgcmVmbGVjdGlvbiBwYXNzIHJlLWNoZWNrcyBldmVyeSBmaW5kaW5nICgwLTEwIHZhbGlkaXR5IHNjb3JlKSBhbmQgYSBkZXRlcm1pbmlzdGljIG1lcmdlIGdhdGUga2VlcHMvZGVtb3Rlcy9kcm9wcyBmaW5kaW5ncy4gb24gPSBnYXRlIGVuZm9yY2VkOyBzaGFkb3cgPSBnYXRlIG91dGNvbWVzIHJlY29yZGVkIGluIENJIGxvZ3Mgb25seSAocG9zdGVkIHJldmlldyBpcyB0aGUgdW5tb2RpZmllZCBmaXJzdCBwYXNzKTsgb2ZmID0gbm8gdmVyaWZpY2F0aW9uIHN0ZXAuIENvc3Q6IG9uL3NoYWRvdyByb3VnaGx5IGRvdWJsZXMgdGhlIExMTSBzcGVuZCBwZXIgcmV2aWV3LlxuIiwib3B0aW9ucyI6WyJvbiIsIm9mZiIsInNoYWRvdyJdfSx7ImtleSI6InZlcmlmeV9nYXRlX3Byb2ZpbGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiR2F0ZSBwcm9maWxlLiBjb25zZXJ2YXRpdmUgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGtlcHQsIFAwL1AxIGZpbmRpbmdzIHdpdGggYSA0LTYgdmFsaWRpdHkgc2NvcmUgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MuIHN0cmljdCA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUgZHJvcHBlZCwgYW5kIHRoZSBzYW1lIHRocmVzaG9sZHMgYXBwbHkgdG8gZXZlcnkgcHJpb3JpdHkgKHNjb3JlIDw9IDQgZHJvcCwgNS03IGRlbW90ZSwgPj0gOCBrZWVwKS4gS2VlcCB0aGUgZGVmYXVsdCB1bmxlc3Mgc2hhZG93IG1lYXN1cmVtZW50cyBqdXN0aWZ5IHRpZ2h0ZW5pbmcuXG4iLCJvcHRpb25zIjpbImNvbnNlcnZhdGl2ZSIsInN0cmljdCJdfV19 +goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXZlcmlmeS1tb2RlbCB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0gXFxcbiAgLS1zdHlsZSB7eyByZXZpZXdfc3R5bGUgfX0gXFxcbiAgLS1sYW5ndWFnZSB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0gXFxcbiAgLS12ZXJpZmljYXRpb24ge3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gXFxcbiAgLS12ZXJpZnktcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG5gYGBcblxuTm90ZSBmb3IgdGVhbWNpdHk6IHRoZSByZW5kZXJlciBwcm9kdWNlcyBgLnRlYW1jaXR5L3NldHRpbmdzLmt0c2A7IHRoZSByZXZpZXdcbnRleHQgaXMgcHVibGlzaGVkIGFzIHRoZSBidWlsZCBhcnRpZmFjdCBgcHJfcmV2aWV3LnR4dGAgKFRlYW1DaXR5IGNhbm5vdCBwb3N0XG5mb3JnZSBjb21tZW50cyB3aXRob3V0IGV4dHJhIFJFU1Qgc2V0dXApLlxuRm9yIGdpdGVhOiB0aGUgdXNlciBtdXN0IGFsc28gYWRkIGEgYFJFVklFV19UT0tFTmAgc2VjcmV0IChHaXRlYSBhY2Nlc3MgdG9rZW5cbndpdGggd3JpdGUgcGVybWlzc2lvbikg4oCUIGluY2x1ZGUgdGhhdCBpbiB0aGUgcmVwb3J0LlxuXG4jIyBTdGVwIDMg4oCUIFZlcmlmeSAodGhlIHNjcmlwdCdzIGV4aXQgY29kZSBpcyB0aGUgY29udHJhY3QpXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvdmVyaWZ5LnB5IC1vIC90bXAvdmVyaWZ5X2NpLnB5XG5weXRob24zIC90bXAvdmVyaWZ5X2NpLnB5IHt7IGNpX3BsYXRmb3JtIH19IDxyZW5kZXJlZC1jb25maWctcGF0aD5cbmBgYFxuRXhwZWN0ZWQgUkVTVUxUOiBQQVNTLiBJZiBGQUlMLCByZXBvcnQgdGhlIGZhaWxpbmcgY2hlY2tzOyBkbyBOT1QgaGFuZC1wYXRjaFxudGhlIGNvbmZpZy4gRml4ZXMgYmVsb25nIGluIHNvb2xtdWsvQ29kZUdvb3NlIHRlbXBsYXRlcy9zY3JpcHRzLlxuXG4jIyBTdGVwIDQg4oCUIFJlcG9ydCAoaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19KVxuLSBTdGF0dXMgKGNyZWF0ZWQvdXBkYXRlZCkgKyBjb25maWcgZmlsZSBwYXRoLCBhbmQgdGhhdCBpdCB3YXMgcmVuZGVyZWQgYnkgdGhlXG4gIGRldGVybWluaXN0aWMgcGlwZWxpbmUgKG5vdCBhdXRob3JlZCBieSB0aGUgTExNKS5cbi0gR09PU0VfTU9ERUw6IHt7IGdvb3NlX21vZGVsIH19IChoYXJkY29kZWQgaW50byB0aGUgY29uZmlnIGJ5IHRoZSByZW5kZXJlcikuXG4tIFZlcmlmaWNhdGlvbiBtb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IOKAlCB0aGUgbW9kZWwgdGhlIHJlZmxlY3Rpb25cbiAgcGFzcyB1c2VzLiBJZiB0aGUgdXNlciBsZWZ0IGl0IGVtcHR5LCBETyBOT1QgcGFzcyAtLXZlcmlmeS1tb2RlbCB0byB0aGVcbiAgcmVuZGVyZXIgKGJvdGggcGFzc2VzIHRoZW4gdXNlIEdPT1NFX01PREVMKS4gSWYgc2V0LCBwYXNzXG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBleGFjdGx5LlxuLSBQcm92aWRlciBzZWNyZXQgdGhhdCB0aGUgdXNlciBtdXN0IGFkZCwgZS5nLiBmb3Ige3sgY2lfcHJvdmlkZXIgfX0gdGhlXG4gIHJlcXVpcmVkIHJlcG8gc2VjcmV0IG5hbWUgZnJvbSB0aGUgbWFwcGluZyBhYm92ZS5cbi0gSG93IHRvIHRyaWdnZXI6IG9wZW4vdXBkYXRlIGEgcHVsbCByZXF1ZXN0OyBDSSBwb3N0cyB0aGUge3sgcmV2aWV3X3N0eWxlIH19XG4gIHJlc3VsdCBpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0uXG4tIEZvciBncmFkZWQgcmV2aWV3cyB0aGUgQ0kgYWxzbyBwb3N0cyB1cCB0byAxMCBkaWZmLWFuY2hvcmVkIGlubGluZSBjb21tZW50c1xuICAobGlrZSBDb2RlUmFiYml0KTogZWFjaCBmaW5kaW5nIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBQUi9NUiBkaWZmIGJlZm9yZVxuICBwb3N0aW5nLCBhbmQgZmluZGluZ3MgdGhhdCBjYW5ub3QgYmUgYW5jaG9yZWQgYXJlIHJlY2FwcGVkIGluIHRoZSBzdW1tYXJ5XG4gIGNvbW1lbnQgaW5zdGVhZCDigJQgbm90aGluZyBpcyBzaWxlbnRseSBkcm9wcGVkLlxuLSBWZXJpZmljYXRpb24gZ2F0ZSAoe3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19KTpcbiAgd2hlbiBvbi9zaGFkb3csIGV2ZXJ5IGZpbmRpbmcgaXMgcmUtdmVyaWZpZWQgYnkgYSBzZWNvbmQgZ29vc2UgcGFzc1xuICAocmVmbGVjdGlvbikgYmVmb3JlIHBvc3Rpbmc7IHJlZnV0ZWQgZmluZGluZ3MgYXJlIHJlbW92ZWQsIHBsYXVzaWJsZS1idXQtXG4gIHVudmVyaWZpZWQgYmxvY2tlcnMgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MsIGFuZCB0aGUgdmVyZGljdCBpcyByZWNvbXB1dGVkLlxuICBUaGUgcG9zdGVkIHJldmlldyBub3RlcyBob3cgbWFueSBmaW5kaW5ncyB3ZXJlIGtlcHQvZGVtb3RlZC9kcm9wcGVkOyB0aGVcbiAgZHJvcHBlZCBkZXRhaWxzIGxpdmUgaW4gdGhlIENJIGpvYiBsb2cgKGRyb3BwZWQuanNvbiBhcnRpZmFjdCksIG5ldmVyXG4gIHNpbGVudGx5IGxvc3QuIFNoYWRvdyBtb2RlIHJlY29yZHMgb3V0Y29tZXMgd2l0aG91dCBjaGFuZ2luZyB0aGUgcG9zdC5cbiAgQ29zdCBub3RlOiBvbi9zaGFkb3cg4omIIDJ4IExMTSBzcGVuZCBwZXIgcmV2aWV3OyBjaG9vc2Ugb2ZmIHRvIGRpc2FibGUuXG4tIFJlbWluZGVyOiBpZiB0aGlzIHJlcG8gYWxyZWFkeSBoYXMgYSBDb2RlR29vc2UtcmVuZGVyZWQgQ0kgY29uZmlnLCB0aGlzXG4gIHJ1biByZS1yZW5kZXJzIGl0IGluIHBsYWNlICh0aGF0IGlzIHRoZSBpbnRlbmRlZCBkcmlmdCBjb250cm9sKS5cblxuRG8gTk9UIGdpdCBjb21taXQgb3IgcHVzaC4gRG8gTk9UIHRvdWNoIG90aGVyIGZpbGVzLlxuIiwiZXh0ZW5zaW9ucyI6W3sidHlwZSI6ImJ1aWx0aW4iLCJuYW1lIjoiZGV2ZWxvcGVyIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsInRpbWVvdXQiOm51bGwsImJ1bmRsZWQiOm51bGx9LHsidHlwZSI6InBsYXRmb3JtIiwibmFtZSI6ImFuYWx5emUiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwiYnVuZGxlZCI6bnVsbH1dLCJzZXR0aW5ncyI6eyJ0ZW1wZXJhdHVyZSI6MC4xfSwicGFyYW1ldGVycyI6W3sia2V5IjoiY2lfcGxhdGZvcm0iLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiQ0kgcGxhdGZvcm0gdG8gc2V0IHVwIChnb29zZSByZXZpZXdzIHB1bGwgcmVxdWVzdHMgLyBNUnMgdGhlcmUpIiwib3B0aW9ucyI6WyJnaXRodWIiLCJnaXRsYWIiLCJnaXRlYSIsInRlYW1jaXR5Il19LHsia2V5Ijoib3V0cHV0X2xhbmd1YWdlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ikxhbmd1YWdlIGZvciByZXZpZXcgY29tbWVudHMgYW5kIHRoZSBzZXR1cCByZXBvcnQiLCJvcHRpb25zIjpbIktvcmVhbiIsIkVuZ2xpc2giLCJKYXBhbmVzZSIsIkNoaW5lc2UiXX0seyJrZXkiOiJyZXZpZXdfc3R5bGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiV2hhdCB0aGUgQ0kgcG9zdHMgb24gdGhlIHB1bGwgcmVxdWVzdCIsIm9wdGlvbnMiOlsiZ3JhZGVkLXJldmlldyIsImNoYW5nZXMtc3VtbWFyeSJdfSx7ImtleSI6ImNpX3Byb3ZpZGVyIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkxMTSBwcm92aWRlciB1c2VkIGJ5IGdvb3NlIGluIENJIiwib3B0aW9ucyI6WyJvbGxhbWFfY2xvdWQiLCJhbnRocm9waWMiLCJvcGVuYWkiLCJvcGVucm91dGVyIiwiZmlyZXdvcmtzLWFpIl19LHsia2V5IjoiZ29vc2VfbW9kZWwiLCJpbnB1dF90eXBlIjoic3RyaW5nIiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTW9kZWwgbmFtZSBmb3IgR09PU0VfTU9ERUwgaW4gdGhlIENJIGNvbmZpZyAoZS5nLiBnbG0tNS4zIGZvciBvbGxhbWFfY2xvdWQsIGNsYXVkZS1zb25uZXQtNC01IGZvciBhbnRocm9waWMsIGdwdC00byBmb3Igb3BlbmFpLCBhbnRocm9waWMvY2xhdWRlLXNvbm5ldC00IGZvciBvcGVucm91dGVyLCBhY2NvdW50cy9maXJld29ya3MvbW9kZWxzL2RlZXBzZWVrLXY0LWZsYXNoLTA3MzEgZm9yIGZpcmV3b3Jrcy1haSkifSx7ImtleSI6Imdvb3NlX3ZlcmlmeV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6Im9wdGlvbmFsIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbCBtb2RlbCBmb3IgdGhlIHZlcmlmaWNhdGlvbiAocmVmbGVjdGlvbikgcGFzcyBvbmx5LiBMZWF2ZSBlbXB0eSB0byByZXVzZSBnb29zZV9tb2RlbCBmb3IgYm90aCBwYXNzZXMgKGRlZmF1bHQpLiBFeGFtcGxlIGZvciBmaXJld29ya3MtYWk6IGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZ2xtLTVwMy1mbGFzaFxuIiwiZGVmYXVsdCI6IiJ9LHsia2V5IjoidmVyaWZpY2F0aW9uX2dhdGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiUmV2aWV3IHZlcmlmaWNhdGlvbiBnYXRlIChpc3N1ZSAjMTApLiBBZnRlciB0aGUgZmlyc3QgcmV2aWV3IHBhc3MsIGEgc2luZ2xlIHJlZmxlY3Rpb24gcGFzcyByZS1jaGVja3MgZXZlcnkgZmluZGluZyAoMC0xMCB2YWxpZGl0eSBzY29yZSkgYW5kIGEgZGV0ZXJtaW5pc3RpYyBtZXJnZSBnYXRlIGtlZXBzL2RlbW90ZXMvZHJvcHMgZmluZGluZ3MuIG9uID0gZ2F0ZSBlbmZvcmNlZDsgc2hhZG93ID0gZ2F0ZSBvdXRjb21lcyByZWNvcmRlZCBpbiBDSSBsb2dzIG9ubHkgKHBvc3RlZCByZXZpZXcgaXMgdGhlIHVubW9kaWZpZWQgZmlyc3QgcGFzcyk7IG9mZiA9IG5vIHZlcmlmaWNhdGlvbiBzdGVwLiBDb3N0OiBvbi9zaGFkb3cgcm91Z2hseSBkb3VibGVzIHRoZSBMTE0gc3BlbmQgcGVyIHJldmlldy5cbiIsIm9wdGlvbnMiOlsib24iLCJvZmYiLCJzaGFkb3ciXX0seyJrZXkiOiJ2ZXJpZnlfZ2F0ZV9wcm9maWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkdhdGUgcHJvZmlsZS4gY29uc2VydmF0aXZlID0gdW5tYXRjaGVkIGZpbmRpbmdzIGFyZSBrZXB0LCBQMC9QMSBmaW5kaW5ncyB3aXRoIGEgNC02IHZhbGlkaXR5IHNjb3JlIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLiBzdHJpY3QgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGRyb3BwZWQsIGFuZCB0aGUgc2FtZSB0aHJlc2hvbGRzIGFwcGx5IHRvIGV2ZXJ5IHByaW9yaXR5IChzY29yZSA8PSA0IGRyb3AsIDUtNyBkZW1vdGUsID49IDgga2VlcCkuIEtlZXAgdGhlIGRlZmF1bHQgdW5sZXNzIHNoYWRvdyBtZWFzdXJlbWVudHMganVzdGlmeSB0aWdodGVuaW5nLlxuIiwib3B0aW9ucyI6WyJjb25zZXJ2YXRpdmUiLCJzdHJpY3QiXX1dfQ ``` diff --git a/codegoose-setup.yaml b/codegoose-setup.yaml index 351905b..07c875d 100644 --- a/codegoose-setup.yaml +++ b/codegoose-setup.yaml @@ -57,6 +57,16 @@ parameters: gpt-4o for openai, anthropic/claude-sonnet-4 for openrouter, accounts/fireworks/models/deepseek-v4-flash-0731 for fireworks-ai) + - key: goose_verify_model + input_type: string + requirement: optional + default: "" + description: > + Optional model for the verification (reflection) pass only. + Leave empty to reuse goose_model for both passes (default). + Example for fireworks-ai: + accounts/fireworks/models/glm-5p3-flash + - key: verification_gate input_type: select requirement: required @@ -110,6 +120,7 @@ prompt: | - review_style: {{ review_style }} - ci_provider: {{ ci_provider }} - goose_model: {{ goose_model }} + - goose_verify_model: {{ goose_verify_model }} (empty = same as goose_model) - verification_gate: {{ verification_gate }} - verify_gate_profile: {{ verify_gate_profile }} (Provider -> secret name: ollama_cloud=OLLAMA_CLOUD_API_KEY, @@ -129,6 +140,7 @@ prompt: | python3 /tmp/render.py {{ ci_platform }} \ --provider {{ ci_provider }} \ --model {{ goose_model }} \ + --verify-model {{ goose_verify_model }} \ --style {{ review_style }} \ --language {{ output_language }} \ --verification {{ verification_gate }} \ @@ -153,6 +165,10 @@ prompt: | - Status (created/updated) + config file path, and that it was rendered by the deterministic pipeline (not authored by the LLM). - GOOSE_MODEL: {{ goose_model }} (hardcoded into the config by the renderer). + - Verification model: {{ goose_verify_model }} — the model the reflection + pass uses. If the user left it empty, DO NOT pass --verify-model to the + renderer (both passes then use GOOSE_MODEL). If set, pass + --verify-model {{ goose_verify_model }} exactly. - Provider secret that the user must add, e.g. for {{ ci_provider }} the required repo secret name from the mapping above. - How to trigger: open/update a pull request; CI posts the {{ review_style }} diff --git a/docs/launch.html b/docs/launch.html index f0c5685..300cabe 100644 --- a/docs/launch.html +++ b/docs/launch.html @@ -163,13 +163,13 @@

⚙️ CI Setup

Install or refresh the CodeGoose review pipeline on GitHub / GitLab / Gitea / TeamCity. Platform, language, style, provider and model are chosen via dropdowns.

- + Launch CI Setup
Deep link not working? Copy it manually Paste into your browser's address bar, press Enter → Open Goose.app.
From 4538348d30b31158427309ab1d2de58c2ff92b39 Mon Sep 17 00:00:00 2001 From: soolmuk <72430756+soolmuk@users.noreply.github.com> Date: Sat, 5 Sep 2026 11:44:42 +0900 Subject: [PATCH 3/5] fix(review): fail loud when --verify-model hits non-github platforms + recipe de-conflict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CodeGoose PR #2 AI review dispositions: - P2 applied (guard): the __GOOSE_VERIFY_MODEL__ switch only exists in the GitHub workflow template; on gitlab/gitea/teamcity the flag silently no-oped and the reflection pass kept the review model. render.py now rejects --verify-model with exit 2 on non-github platforms (ported templates are a tracked follow-up, not a rushed same-PR patch). - P3 applied (recipe): the Step 2 command embedded --verify-model {{ goose_verify_model }} unconditionally while Step 4 said to omit the flag when empty — an agent following the literal command with an empty default would make --style the flag value. The command block now matches the no-flag default and Step 4 instructs ADDING the line only when set. - deeplinks regenerated; recipe validate PASS; verify.py PASS; diff-model render still yields review/reflection split. --- README.ko.md | 2 +- README.md | 2 +- codegoose-setup.yaml | 10 ++++++---- docs/launch.html | 4 ++-- scripts/render.py | 10 +++++++++- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/README.ko.md b/README.ko.md index ea267ca..b4bdd99 100644 --- a/README.ko.md +++ b/README.ko.md @@ -128,7 +128,7 @@ goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBQUiBSZX ```text -goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXZlcmlmeS1tb2RlbCB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0gXFxcbiAgLS1zdHlsZSB7eyByZXZpZXdfc3R5bGUgfX0gXFxcbiAgLS1sYW5ndWFnZSB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0gXFxcbiAgLS12ZXJpZmljYXRpb24ge3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gXFxcbiAgLS12ZXJpZnktcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG5gYGBcblxuTm90ZSBmb3IgdGVhbWNpdHk6IHRoZSByZW5kZXJlciBwcm9kdWNlcyBgLnRlYW1jaXR5L3NldHRpbmdzLmt0c2A7IHRoZSByZXZpZXdcbnRleHQgaXMgcHVibGlzaGVkIGFzIHRoZSBidWlsZCBhcnRpZmFjdCBgcHJfcmV2aWV3LnR4dGAgKFRlYW1DaXR5IGNhbm5vdCBwb3N0XG5mb3JnZSBjb21tZW50cyB3aXRob3V0IGV4dHJhIFJFU1Qgc2V0dXApLlxuRm9yIGdpdGVhOiB0aGUgdXNlciBtdXN0IGFsc28gYWRkIGEgYFJFVklFV19UT0tFTmAgc2VjcmV0IChHaXRlYSBhY2Nlc3MgdG9rZW5cbndpdGggd3JpdGUgcGVybWlzc2lvbikg4oCUIGluY2x1ZGUgdGhhdCBpbiB0aGUgcmVwb3J0LlxuXG4jIyBTdGVwIDMg4oCUIFZlcmlmeSAodGhlIHNjcmlwdCdzIGV4aXQgY29kZSBpcyB0aGUgY29udHJhY3QpXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvdmVyaWZ5LnB5IC1vIC90bXAvdmVyaWZ5X2NpLnB5XG5weXRob24zIC90bXAvdmVyaWZ5X2NpLnB5IHt7IGNpX3BsYXRmb3JtIH19IDxyZW5kZXJlZC1jb25maWctcGF0aD5cbmBgYFxuRXhwZWN0ZWQgUkVTVUxUOiBQQVNTLiBJZiBGQUlMLCByZXBvcnQgdGhlIGZhaWxpbmcgY2hlY2tzOyBkbyBOT1QgaGFuZC1wYXRjaFxudGhlIGNvbmZpZy4gRml4ZXMgYmVsb25nIGluIHNvb2xtdWsvQ29kZUdvb3NlIHRlbXBsYXRlcy9zY3JpcHRzLlxuXG4jIyBTdGVwIDQg4oCUIFJlcG9ydCAoaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19KVxuLSBTdGF0dXMgKGNyZWF0ZWQvdXBkYXRlZCkgKyBjb25maWcgZmlsZSBwYXRoLCBhbmQgdGhhdCBpdCB3YXMgcmVuZGVyZWQgYnkgdGhlXG4gIGRldGVybWluaXN0aWMgcGlwZWxpbmUgKG5vdCBhdXRob3JlZCBieSB0aGUgTExNKS5cbi0gR09PU0VfTU9ERUw6IHt7IGdvb3NlX21vZGVsIH19IChoYXJkY29kZWQgaW50byB0aGUgY29uZmlnIGJ5IHRoZSByZW5kZXJlcikuXG4tIFZlcmlmaWNhdGlvbiBtb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IOKAlCB0aGUgbW9kZWwgdGhlIHJlZmxlY3Rpb25cbiAgcGFzcyB1c2VzLiBJZiB0aGUgdXNlciBsZWZ0IGl0IGVtcHR5LCBETyBOT1QgcGFzcyAtLXZlcmlmeS1tb2RlbCB0byB0aGVcbiAgcmVuZGVyZXIgKGJvdGggcGFzc2VzIHRoZW4gdXNlIEdPT1NFX01PREVMKS4gSWYgc2V0LCBwYXNzXG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBleGFjdGx5LlxuLSBQcm92aWRlciBzZWNyZXQgdGhhdCB0aGUgdXNlciBtdXN0IGFkZCwgZS5nLiBmb3Ige3sgY2lfcHJvdmlkZXIgfX0gdGhlXG4gIHJlcXVpcmVkIHJlcG8gc2VjcmV0IG5hbWUgZnJvbSB0aGUgbWFwcGluZyBhYm92ZS5cbi0gSG93IHRvIHRyaWdnZXI6IG9wZW4vdXBkYXRlIGEgcHVsbCByZXF1ZXN0OyBDSSBwb3N0cyB0aGUge3sgcmV2aWV3X3N0eWxlIH19XG4gIHJlc3VsdCBpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0uXG4tIEZvciBncmFkZWQgcmV2aWV3cyB0aGUgQ0kgYWxzbyBwb3N0cyB1cCB0byAxMCBkaWZmLWFuY2hvcmVkIGlubGluZSBjb21tZW50c1xuICAobGlrZSBDb2RlUmFiYml0KTogZWFjaCBmaW5kaW5nIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBQUi9NUiBkaWZmIGJlZm9yZVxuICBwb3N0aW5nLCBhbmQgZmluZGluZ3MgdGhhdCBjYW5ub3QgYmUgYW5jaG9yZWQgYXJlIHJlY2FwcGVkIGluIHRoZSBzdW1tYXJ5XG4gIGNvbW1lbnQgaW5zdGVhZCDigJQgbm90aGluZyBpcyBzaWxlbnRseSBkcm9wcGVkLlxuLSBWZXJpZmljYXRpb24gZ2F0ZSAoe3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19KTpcbiAgd2hlbiBvbi9zaGFkb3csIGV2ZXJ5IGZpbmRpbmcgaXMgcmUtdmVyaWZpZWQgYnkgYSBzZWNvbmQgZ29vc2UgcGFzc1xuICAocmVmbGVjdGlvbikgYmVmb3JlIHBvc3Rpbmc7IHJlZnV0ZWQgZmluZGluZ3MgYXJlIHJlbW92ZWQsIHBsYXVzaWJsZS1idXQtXG4gIHVudmVyaWZpZWQgYmxvY2tlcnMgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MsIGFuZCB0aGUgdmVyZGljdCBpcyByZWNvbXB1dGVkLlxuICBUaGUgcG9zdGVkIHJldmlldyBub3RlcyBob3cgbWFueSBmaW5kaW5ncyB3ZXJlIGtlcHQvZGVtb3RlZC9kcm9wcGVkOyB0aGVcbiAgZHJvcHBlZCBkZXRhaWxzIGxpdmUgaW4gdGhlIENJIGpvYiBsb2cgKGRyb3BwZWQuanNvbiBhcnRpZmFjdCksIG5ldmVyXG4gIHNpbGVudGx5IGxvc3QuIFNoYWRvdyBtb2RlIHJlY29yZHMgb3V0Y29tZXMgd2l0aG91dCBjaGFuZ2luZyB0aGUgcG9zdC5cbiAgQ29zdCBub3RlOiBvbi9zaGFkb3cg4omIIDJ4IExMTSBzcGVuZCBwZXIgcmV2aWV3OyBjaG9vc2Ugb2ZmIHRvIGRpc2FibGUuXG4tIFJlbWluZGVyOiBpZiB0aGlzIHJlcG8gYWxyZWFkeSBoYXMgYSBDb2RlR29vc2UtcmVuZGVyZWQgQ0kgY29uZmlnLCB0aGlzXG4gIHJ1biByZS1yZW5kZXJzIGl0IGluIHBsYWNlICh0aGF0IGlzIHRoZSBpbnRlbmRlZCBkcmlmdCBjb250cm9sKS5cblxuRG8gTk9UIGdpdCBjb21taXQgb3IgcHVzaC4gRG8gTk9UIHRvdWNoIG90aGVyIGZpbGVzLlxuIiwiZXh0ZW5zaW9ucyI6W3sidHlwZSI6ImJ1aWx0aW4iLCJuYW1lIjoiZGV2ZWxvcGVyIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsInRpbWVvdXQiOm51bGwsImJ1bmRsZWQiOm51bGx9LHsidHlwZSI6InBsYXRmb3JtIiwibmFtZSI6ImFuYWx5emUiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwiYnVuZGxlZCI6bnVsbH1dLCJzZXR0aW5ncyI6eyJ0ZW1wZXJhdHVyZSI6MC4xfSwicGFyYW1ldGVycyI6W3sia2V5IjoiY2lfcGxhdGZvcm0iLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiQ0kgcGxhdGZvcm0gdG8gc2V0IHVwIChnb29zZSByZXZpZXdzIHB1bGwgcmVxdWVzdHMgLyBNUnMgdGhlcmUpIiwib3B0aW9ucyI6WyJnaXRodWIiLCJnaXRsYWIiLCJnaXRlYSIsInRlYW1jaXR5Il19LHsia2V5Ijoib3V0cHV0X2xhbmd1YWdlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ikxhbmd1YWdlIGZvciByZXZpZXcgY29tbWVudHMgYW5kIHRoZSBzZXR1cCByZXBvcnQiLCJvcHRpb25zIjpbIktvcmVhbiIsIkVuZ2xpc2giLCJKYXBhbmVzZSIsIkNoaW5lc2UiXX0seyJrZXkiOiJyZXZpZXdfc3R5bGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiV2hhdCB0aGUgQ0kgcG9zdHMgb24gdGhlIHB1bGwgcmVxdWVzdCIsIm9wdGlvbnMiOlsiZ3JhZGVkLXJldmlldyIsImNoYW5nZXMtc3VtbWFyeSJdfSx7ImtleSI6ImNpX3Byb3ZpZGVyIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkxMTSBwcm92aWRlciB1c2VkIGJ5IGdvb3NlIGluIENJIiwib3B0aW9ucyI6WyJvbGxhbWFfY2xvdWQiLCJhbnRocm9waWMiLCJvcGVuYWkiLCJvcGVucm91dGVyIiwiZmlyZXdvcmtzLWFpIl19LHsia2V5IjoiZ29vc2VfbW9kZWwiLCJpbnB1dF90eXBlIjoic3RyaW5nIiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTW9kZWwgbmFtZSBmb3IgR09PU0VfTU9ERUwgaW4gdGhlIENJIGNvbmZpZyAoZS5nLiBnbG0tNS4zIGZvciBvbGxhbWFfY2xvdWQsIGNsYXVkZS1zb25uZXQtNC01IGZvciBhbnRocm9waWMsIGdwdC00byBmb3Igb3BlbmFpLCBhbnRocm9waWMvY2xhdWRlLXNvbm5ldC00IGZvciBvcGVucm91dGVyLCBhY2NvdW50cy9maXJld29ya3MvbW9kZWxzL2RlZXBzZWVrLXY0LWZsYXNoLTA3MzEgZm9yIGZpcmV3b3Jrcy1haSkifSx7ImtleSI6Imdvb3NlX3ZlcmlmeV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6Im9wdGlvbmFsIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbCBtb2RlbCBmb3IgdGhlIHZlcmlmaWNhdGlvbiAocmVmbGVjdGlvbikgcGFzcyBvbmx5LiBMZWF2ZSBlbXB0eSB0byByZXVzZSBnb29zZV9tb2RlbCBmb3IgYm90aCBwYXNzZXMgKGRlZmF1bHQpLiBFeGFtcGxlIGZvciBmaXJld29ya3MtYWk6IGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZ2xtLTVwMy1mbGFzaFxuIiwiZGVmYXVsdCI6IiJ9LHsia2V5IjoidmVyaWZpY2F0aW9uX2dhdGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiUmV2aWV3IHZlcmlmaWNhdGlvbiBnYXRlIChpc3N1ZSAjMTApLiBBZnRlciB0aGUgZmlyc3QgcmV2aWV3IHBhc3MsIGEgc2luZ2xlIHJlZmxlY3Rpb24gcGFzcyByZS1jaGVja3MgZXZlcnkgZmluZGluZyAoMC0xMCB2YWxpZGl0eSBzY29yZSkgYW5kIGEgZGV0ZXJtaW5pc3RpYyBtZXJnZSBnYXRlIGtlZXBzL2RlbW90ZXMvZHJvcHMgZmluZGluZ3MuIG9uID0gZ2F0ZSBlbmZvcmNlZDsgc2hhZG93ID0gZ2F0ZSBvdXRjb21lcyByZWNvcmRlZCBpbiBDSSBsb2dzIG9ubHkgKHBvc3RlZCByZXZpZXcgaXMgdGhlIHVubW9kaWZpZWQgZmlyc3QgcGFzcyk7IG9mZiA9IG5vIHZlcmlmaWNhdGlvbiBzdGVwLiBDb3N0OiBvbi9zaGFkb3cgcm91Z2hseSBkb3VibGVzIHRoZSBMTE0gc3BlbmQgcGVyIHJldmlldy5cbiIsIm9wdGlvbnMiOlsib24iLCJvZmYiLCJzaGFkb3ciXX0seyJrZXkiOiJ2ZXJpZnlfZ2F0ZV9wcm9maWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkdhdGUgcHJvZmlsZS4gY29uc2VydmF0aXZlID0gdW5tYXRjaGVkIGZpbmRpbmdzIGFyZSBrZXB0LCBQMC9QMSBmaW5kaW5ncyB3aXRoIGEgNC02IHZhbGlkaXR5IHNjb3JlIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLiBzdHJpY3QgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGRyb3BwZWQsIGFuZCB0aGUgc2FtZSB0aHJlc2hvbGRzIGFwcGx5IHRvIGV2ZXJ5IHByaW9yaXR5IChzY29yZSA8PSA0IGRyb3AsIDUtNyBkZW1vdGUsID49IDgga2VlcCkuIEtlZXAgdGhlIGRlZmF1bHQgdW5sZXNzIHNoYWRvdyBtZWFzdXJlbWVudHMganVzdGlmeSB0aWdodGVuaW5nLlxuIiwib3B0aW9ucyI6WyJjb25zZXJ2YXRpdmUiLCJzdHJpY3QiXX1dfQ +goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gVmVyaWZpY2F0aW9uIG1vZGVsOiB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0g4oCUIHRoZSBtb2RlbCB0aGUgcmVmbGVjdGlvblxuICBwYXNzIHVzZXMuIElmIHRoZSB1c2VyIGxlZnQgaXQgZW1wdHksIHJ1biB0aGUgU3RlcCAyIGNvbW1hbmQgZXhhY3RseSBhc1xuICB3cml0dGVuIChib3RoIHBhc3NlcyB0aGVuIHVzZSBHT09TRV9NT0RFTDsgbmV2ZXIgcGFzcyBhbiBlbXB0eSAtLXZlcmlmeS1cbiAgbW9kZWwgdmFsdWUg4oCUIGl0IHdvdWxkIHN3YWxsb3cgdGhlIG5leHQgZmxhZykuIElmIHNldCwgQUREIG9uZSBsaW5lIGludG9cbiAgdGhlIFN0ZXAgMiBjb21tYW5kIHJpZ2h0IGFmdGVyIC0tbW9kZWw6XG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBcXFxcXG4gIChrZWVwIHRoZSB0cmFpbGluZyBcXFxcIGNvbnRpbnVhdGlvbikuXG4tIFByb3ZpZGVyIHNlY3JldCB0aGF0IHRoZSB1c2VyIG11c3QgYWRkLCBlLmcuIGZvciB7eyBjaV9wcm92aWRlciB9fSB0aGVcbiAgcmVxdWlyZWQgcmVwbyBzZWNyZXQgbmFtZSBmcm9tIHRoZSBtYXBwaW5nIGFib3ZlLlxuLSBIb3cgdG8gdHJpZ2dlcjogb3Blbi91cGRhdGUgYSBwdWxsIHJlcXVlc3Q7IENJIHBvc3RzIHRoZSB7eyByZXZpZXdfc3R5bGUgfX1cbiAgcmVzdWx0IGluIHt7IG91dHB1dF9sYW5ndWFnZSB9fS5cbi0gRm9yIGdyYWRlZCByZXZpZXdzIHRoZSBDSSBhbHNvIHBvc3RzIHVwIHRvIDEwIGRpZmYtYW5jaG9yZWQgaW5saW5lIGNvbW1lbnRzXG4gIChsaWtlIENvZGVSYWJiaXQpOiBlYWNoIGZpbmRpbmcgaXMgdmFsaWRhdGVkIGFnYWluc3QgdGhlIFBSL01SIGRpZmYgYmVmb3JlXG4gIHBvc3RpbmcsIGFuZCBmaW5kaW5ncyB0aGF0IGNhbm5vdCBiZSBhbmNob3JlZCBhcmUgcmVjYXBwZWQgaW4gdGhlIHN1bW1hcnlcbiAgY29tbWVudCBpbnN0ZWFkIOKAlCBub3RoaW5nIGlzIHNpbGVudGx5IGRyb3BwZWQuXG4tIFZlcmlmaWNhdGlvbiBnYXRlICh7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBwcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX0pOlxuICB3aGVuIG9uL3NoYWRvdywgZXZlcnkgZmluZGluZyBpcyByZS12ZXJpZmllZCBieSBhIHNlY29uZCBnb29zZSBwYXNzXG4gIChyZWZsZWN0aW9uKSBiZWZvcmUgcG9zdGluZzsgcmVmdXRlZCBmaW5kaW5ncyBhcmUgcmVtb3ZlZCwgcGxhdXNpYmxlLWJ1dC1cbiAgdW52ZXJpZmllZCBibG9ja2VycyBhcmUgZGVtb3RlZCB0byBXYXJuaW5ncywgYW5kIHRoZSB2ZXJkaWN0IGlzIHJlY29tcHV0ZWQuXG4gIFRoZSBwb3N0ZWQgcmV2aWV3IG5vdGVzIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUga2VwdC9kZW1vdGVkL2Ryb3BwZWQ7IHRoZVxuICBkcm9wcGVkIGRldGFpbHMgbGl2ZSBpbiB0aGUgQ0kgam9iIGxvZyAoZHJvcHBlZC5qc29uIGFydGlmYWN0KSwgbmV2ZXJcbiAgc2lsZW50bHkgbG9zdC4gU2hhZG93IG1vZGUgcmVjb3JkcyBvdXRjb21lcyB3aXRob3V0IGNoYW5naW5nIHRoZSBwb3N0LlxuICBDb3N0IG5vdGU6IG9uL3NoYWRvdyDiiYggMnggTExNIHNwZW5kIHBlciByZXZpZXc7IGNob29zZSBvZmYgdG8gZGlzYWJsZS5cbi0gUmVtaW5kZXI6IGlmIHRoaXMgcmVwbyBhbHJlYWR5IGhhcyBhIENvZGVHb29zZS1yZW5kZXJlZCBDSSBjb25maWcsIHRoaXNcbiAgcnVuIHJlLXJlbmRlcnMgaXQgaW4gcGxhY2UgKHRoYXQgaXMgdGhlIGludGVuZGVkIGRyaWZ0IGNvbnRyb2wpLlxuXG5EbyBOT1QgZ2l0IGNvbW1pdCBvciBwdXNoLiBEbyBOT1QgdG91Y2ggb3RoZXIgZmlsZXMuXG4iLCJleHRlbnNpb25zIjpbeyJ0eXBlIjoiYnVpbHRpbiIsIm5hbWUiOiJkZXZlbG9wZXIiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwidGltZW91dCI6bnVsbCwiYnVuZGxlZCI6bnVsbH0seyJ0eXBlIjoicGxhdGZvcm0iLCJuYW1lIjoiYW5hbHl6ZSIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJidW5kbGVkIjpudWxsfV0sInNldHRpbmdzIjp7InRlbXBlcmF0dXJlIjowLjF9LCJwYXJhbWV0ZXJzIjpbeyJrZXkiOiJjaV9wbGF0Zm9ybSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJDSSBwbGF0Zm9ybSB0byBzZXQgdXAgKGdvb3NlIHJldmlld3MgcHVsbCByZXF1ZXN0cyAvIE1ScyB0aGVyZSkiLCJvcHRpb25zIjpbImdpdGh1YiIsImdpdGxhYiIsImdpdGVhIiwidGVhbWNpdHkiXX0seyJrZXkiOiJvdXRwdXRfbGFuZ3VhZ2UiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTGFuZ3VhZ2UgZm9yIHJldmlldyBjb21tZW50cyBhbmQgdGhlIHNldHVwIHJlcG9ydCIsIm9wdGlvbnMiOlsiS29yZWFuIiwiRW5nbGlzaCIsIkphcGFuZXNlIiwiQ2hpbmVzZSJdfSx7ImtleSI6InJldmlld19zdHlsZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJXaGF0IHRoZSBDSSBwb3N0cyBvbiB0aGUgcHVsbCByZXF1ZXN0Iiwib3B0aW9ucyI6WyJncmFkZWQtcmV2aWV3IiwiY2hhbmdlcy1zdW1tYXJ5Il19LHsia2V5IjoiY2lfcHJvdmlkZXIiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTExNIHByb3ZpZGVyIHVzZWQgYnkgZ29vc2UgaW4gQ0kiLCJvcHRpb25zIjpbIm9sbGFtYV9jbG91ZCIsImFudGhyb3BpYyIsIm9wZW5haSIsIm9wZW5yb3V0ZXIiLCJmaXJld29ya3MtYWkiXX0seyJrZXkiOiJnb29zZV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJNb2RlbCBuYW1lIGZvciBHT09TRV9NT0RFTCBpbiB0aGUgQ0kgY29uZmlnIChlLmcuIGdsbS01LjMgZm9yIG9sbGFtYV9jbG91ZCwgY2xhdWRlLXNvbm5ldC00LTUgZm9yIGFudGhyb3BpYywgZ3B0LTRvIGZvciBvcGVuYWksIGFudGhyb3BpYy9jbGF1ZGUtc29ubmV0LTQgZm9yIG9wZW5yb3V0ZXIsIGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZGVlcHNlZWstdjQtZmxhc2gtMDczMSBmb3IgZmlyZXdvcmtzLWFpKSJ9LHsia2V5IjoiZ29vc2VfdmVyaWZ5X21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50Ijoib3B0aW9uYWwiLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsIG1vZGVsIGZvciB0aGUgdmVyaWZpY2F0aW9uIChyZWZsZWN0aW9uKSBwYXNzIG9ubHkuIExlYXZlIGVtcHR5IHRvIHJldXNlIGdvb3NlX21vZGVsIGZvciBib3RoIHBhc3NlcyAoZGVmYXVsdCkuIEV4YW1wbGUgZm9yIGZpcmV3b3Jrcy1haTogYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9nbG0tNXAzLWZsYXNoXG4iLCJkZWZhdWx0IjoiIn0seyJrZXkiOiJ2ZXJpZmljYXRpb25fZ2F0ZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJSZXZpZXcgdmVyaWZpY2F0aW9uIGdhdGUgKGlzc3VlICMxMCkuIEFmdGVyIHRoZSBmaXJzdCByZXZpZXcgcGFzcywgYSBzaW5nbGUgcmVmbGVjdGlvbiBwYXNzIHJlLWNoZWNrcyBldmVyeSBmaW5kaW5nICgwLTEwIHZhbGlkaXR5IHNjb3JlKSBhbmQgYSBkZXRlcm1pbmlzdGljIG1lcmdlIGdhdGUga2VlcHMvZGVtb3Rlcy9kcm9wcyBmaW5kaW5ncy4gb24gPSBnYXRlIGVuZm9yY2VkOyBzaGFkb3cgPSBnYXRlIG91dGNvbWVzIHJlY29yZGVkIGluIENJIGxvZ3Mgb25seSAocG9zdGVkIHJldmlldyBpcyB0aGUgdW5tb2RpZmllZCBmaXJzdCBwYXNzKTsgb2ZmID0gbm8gdmVyaWZpY2F0aW9uIHN0ZXAuIENvc3Q6IG9uL3NoYWRvdyByb3VnaGx5IGRvdWJsZXMgdGhlIExMTSBzcGVuZCBwZXIgcmV2aWV3LlxuIiwib3B0aW9ucyI6WyJvbiIsIm9mZiIsInNoYWRvdyJdfSx7ImtleSI6InZlcmlmeV9nYXRlX3Byb2ZpbGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiR2F0ZSBwcm9maWxlLiBjb25zZXJ2YXRpdmUgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGtlcHQsIFAwL1AxIGZpbmRpbmdzIHdpdGggYSA0LTYgdmFsaWRpdHkgc2NvcmUgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MuIHN0cmljdCA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUgZHJvcHBlZCwgYW5kIHRoZSBzYW1lIHRocmVzaG9sZHMgYXBwbHkgdG8gZXZlcnkgcHJpb3JpdHkgKHNjb3JlIDw9IDQgZHJvcCwgNS03IGRlbW90ZSwgPj0gOCBrZWVwKS4gS2VlcCB0aGUgZGVmYXVsdCB1bmxlc3Mgc2hhZG93IG1lYXN1cmVtZW50cyBqdXN0aWZ5IHRpZ2h0ZW5pbmcuXG4iLCJvcHRpb25zIjpbImNvbnNlcnZhdGl2ZSIsInN0cmljdCJdfV19 ``` diff --git a/README.md b/README.md index 29ea1a0..a18ed8d 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBQUiBSZX ```text -goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXZlcmlmeS1tb2RlbCB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0gXFxcbiAgLS1zdHlsZSB7eyByZXZpZXdfc3R5bGUgfX0gXFxcbiAgLS1sYW5ndWFnZSB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0gXFxcbiAgLS12ZXJpZmljYXRpb24ge3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gXFxcbiAgLS12ZXJpZnktcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG5gYGBcblxuTm90ZSBmb3IgdGVhbWNpdHk6IHRoZSByZW5kZXJlciBwcm9kdWNlcyBgLnRlYW1jaXR5L3NldHRpbmdzLmt0c2A7IHRoZSByZXZpZXdcbnRleHQgaXMgcHVibGlzaGVkIGFzIHRoZSBidWlsZCBhcnRpZmFjdCBgcHJfcmV2aWV3LnR4dGAgKFRlYW1DaXR5IGNhbm5vdCBwb3N0XG5mb3JnZSBjb21tZW50cyB3aXRob3V0IGV4dHJhIFJFU1Qgc2V0dXApLlxuRm9yIGdpdGVhOiB0aGUgdXNlciBtdXN0IGFsc28gYWRkIGEgYFJFVklFV19UT0tFTmAgc2VjcmV0IChHaXRlYSBhY2Nlc3MgdG9rZW5cbndpdGggd3JpdGUgcGVybWlzc2lvbikg4oCUIGluY2x1ZGUgdGhhdCBpbiB0aGUgcmVwb3J0LlxuXG4jIyBTdGVwIDMg4oCUIFZlcmlmeSAodGhlIHNjcmlwdCdzIGV4aXQgY29kZSBpcyB0aGUgY29udHJhY3QpXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvdmVyaWZ5LnB5IC1vIC90bXAvdmVyaWZ5X2NpLnB5XG5weXRob24zIC90bXAvdmVyaWZ5X2NpLnB5IHt7IGNpX3BsYXRmb3JtIH19IDxyZW5kZXJlZC1jb25maWctcGF0aD5cbmBgYFxuRXhwZWN0ZWQgUkVTVUxUOiBQQVNTLiBJZiBGQUlMLCByZXBvcnQgdGhlIGZhaWxpbmcgY2hlY2tzOyBkbyBOT1QgaGFuZC1wYXRjaFxudGhlIGNvbmZpZy4gRml4ZXMgYmVsb25nIGluIHNvb2xtdWsvQ29kZUdvb3NlIHRlbXBsYXRlcy9zY3JpcHRzLlxuXG4jIyBTdGVwIDQg4oCUIFJlcG9ydCAoaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19KVxuLSBTdGF0dXMgKGNyZWF0ZWQvdXBkYXRlZCkgKyBjb25maWcgZmlsZSBwYXRoLCBhbmQgdGhhdCBpdCB3YXMgcmVuZGVyZWQgYnkgdGhlXG4gIGRldGVybWluaXN0aWMgcGlwZWxpbmUgKG5vdCBhdXRob3JlZCBieSB0aGUgTExNKS5cbi0gR09PU0VfTU9ERUw6IHt7IGdvb3NlX21vZGVsIH19IChoYXJkY29kZWQgaW50byB0aGUgY29uZmlnIGJ5IHRoZSByZW5kZXJlcikuXG4tIFZlcmlmaWNhdGlvbiBtb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IOKAlCB0aGUgbW9kZWwgdGhlIHJlZmxlY3Rpb25cbiAgcGFzcyB1c2VzLiBJZiB0aGUgdXNlciBsZWZ0IGl0IGVtcHR5LCBETyBOT1QgcGFzcyAtLXZlcmlmeS1tb2RlbCB0byB0aGVcbiAgcmVuZGVyZXIgKGJvdGggcGFzc2VzIHRoZW4gdXNlIEdPT1NFX01PREVMKS4gSWYgc2V0LCBwYXNzXG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBleGFjdGx5LlxuLSBQcm92aWRlciBzZWNyZXQgdGhhdCB0aGUgdXNlciBtdXN0IGFkZCwgZS5nLiBmb3Ige3sgY2lfcHJvdmlkZXIgfX0gdGhlXG4gIHJlcXVpcmVkIHJlcG8gc2VjcmV0IG5hbWUgZnJvbSB0aGUgbWFwcGluZyBhYm92ZS5cbi0gSG93IHRvIHRyaWdnZXI6IG9wZW4vdXBkYXRlIGEgcHVsbCByZXF1ZXN0OyBDSSBwb3N0cyB0aGUge3sgcmV2aWV3X3N0eWxlIH19XG4gIHJlc3VsdCBpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0uXG4tIEZvciBncmFkZWQgcmV2aWV3cyB0aGUgQ0kgYWxzbyBwb3N0cyB1cCB0byAxMCBkaWZmLWFuY2hvcmVkIGlubGluZSBjb21tZW50c1xuICAobGlrZSBDb2RlUmFiYml0KTogZWFjaCBmaW5kaW5nIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBQUi9NUiBkaWZmIGJlZm9yZVxuICBwb3N0aW5nLCBhbmQgZmluZGluZ3MgdGhhdCBjYW5ub3QgYmUgYW5jaG9yZWQgYXJlIHJlY2FwcGVkIGluIHRoZSBzdW1tYXJ5XG4gIGNvbW1lbnQgaW5zdGVhZCDigJQgbm90aGluZyBpcyBzaWxlbnRseSBkcm9wcGVkLlxuLSBWZXJpZmljYXRpb24gZ2F0ZSAoe3sgdmVyaWZpY2F0aW9uX2dhdGUgfX0gcHJvZmlsZSB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19KTpcbiAgd2hlbiBvbi9zaGFkb3csIGV2ZXJ5IGZpbmRpbmcgaXMgcmUtdmVyaWZpZWQgYnkgYSBzZWNvbmQgZ29vc2UgcGFzc1xuICAocmVmbGVjdGlvbikgYmVmb3JlIHBvc3Rpbmc7IHJlZnV0ZWQgZmluZGluZ3MgYXJlIHJlbW92ZWQsIHBsYXVzaWJsZS1idXQtXG4gIHVudmVyaWZpZWQgYmxvY2tlcnMgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MsIGFuZCB0aGUgdmVyZGljdCBpcyByZWNvbXB1dGVkLlxuICBUaGUgcG9zdGVkIHJldmlldyBub3RlcyBob3cgbWFueSBmaW5kaW5ncyB3ZXJlIGtlcHQvZGVtb3RlZC9kcm9wcGVkOyB0aGVcbiAgZHJvcHBlZCBkZXRhaWxzIGxpdmUgaW4gdGhlIENJIGpvYiBsb2cgKGRyb3BwZWQuanNvbiBhcnRpZmFjdCksIG5ldmVyXG4gIHNpbGVudGx5IGxvc3QuIFNoYWRvdyBtb2RlIHJlY29yZHMgb3V0Y29tZXMgd2l0aG91dCBjaGFuZ2luZyB0aGUgcG9zdC5cbiAgQ29zdCBub3RlOiBvbi9zaGFkb3cg4omIIDJ4IExMTSBzcGVuZCBwZXIgcmV2aWV3OyBjaG9vc2Ugb2ZmIHRvIGRpc2FibGUuXG4tIFJlbWluZGVyOiBpZiB0aGlzIHJlcG8gYWxyZWFkeSBoYXMgYSBDb2RlR29vc2UtcmVuZGVyZWQgQ0kgY29uZmlnLCB0aGlzXG4gIHJ1biByZS1yZW5kZXJzIGl0IGluIHBsYWNlICh0aGF0IGlzIHRoZSBpbnRlbmRlZCBkcmlmdCBjb250cm9sKS5cblxuRG8gTk9UIGdpdCBjb21taXQgb3IgcHVzaC4gRG8gTk9UIHRvdWNoIG90aGVyIGZpbGVzLlxuIiwiZXh0ZW5zaW9ucyI6W3sidHlwZSI6ImJ1aWx0aW4iLCJuYW1lIjoiZGV2ZWxvcGVyIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsInRpbWVvdXQiOm51bGwsImJ1bmRsZWQiOm51bGx9LHsidHlwZSI6InBsYXRmb3JtIiwibmFtZSI6ImFuYWx5emUiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwiYnVuZGxlZCI6bnVsbH1dLCJzZXR0aW5ncyI6eyJ0ZW1wZXJhdHVyZSI6MC4xfSwicGFyYW1ldGVycyI6W3sia2V5IjoiY2lfcGxhdGZvcm0iLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiQ0kgcGxhdGZvcm0gdG8gc2V0IHVwIChnb29zZSByZXZpZXdzIHB1bGwgcmVxdWVzdHMgLyBNUnMgdGhlcmUpIiwib3B0aW9ucyI6WyJnaXRodWIiLCJnaXRsYWIiLCJnaXRlYSIsInRlYW1jaXR5Il19LHsia2V5Ijoib3V0cHV0X2xhbmd1YWdlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ikxhbmd1YWdlIGZvciByZXZpZXcgY29tbWVudHMgYW5kIHRoZSBzZXR1cCByZXBvcnQiLCJvcHRpb25zIjpbIktvcmVhbiIsIkVuZ2xpc2giLCJKYXBhbmVzZSIsIkNoaW5lc2UiXX0seyJrZXkiOiJyZXZpZXdfc3R5bGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiV2hhdCB0aGUgQ0kgcG9zdHMgb24gdGhlIHB1bGwgcmVxdWVzdCIsIm9wdGlvbnMiOlsiZ3JhZGVkLXJldmlldyIsImNoYW5nZXMtc3VtbWFyeSJdfSx7ImtleSI6ImNpX3Byb3ZpZGVyIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkxMTSBwcm92aWRlciB1c2VkIGJ5IGdvb3NlIGluIENJIiwib3B0aW9ucyI6WyJvbGxhbWFfY2xvdWQiLCJhbnRocm9waWMiLCJvcGVuYWkiLCJvcGVucm91dGVyIiwiZmlyZXdvcmtzLWFpIl19LHsia2V5IjoiZ29vc2VfbW9kZWwiLCJpbnB1dF90eXBlIjoic3RyaW5nIiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTW9kZWwgbmFtZSBmb3IgR09PU0VfTU9ERUwgaW4gdGhlIENJIGNvbmZpZyAoZS5nLiBnbG0tNS4zIGZvciBvbGxhbWFfY2xvdWQsIGNsYXVkZS1zb25uZXQtNC01IGZvciBhbnRocm9waWMsIGdwdC00byBmb3Igb3BlbmFpLCBhbnRocm9waWMvY2xhdWRlLXNvbm5ldC00IGZvciBvcGVucm91dGVyLCBhY2NvdW50cy9maXJld29ya3MvbW9kZWxzL2RlZXBzZWVrLXY0LWZsYXNoLTA3MzEgZm9yIGZpcmV3b3Jrcy1haSkifSx7ImtleSI6Imdvb3NlX3ZlcmlmeV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6Im9wdGlvbmFsIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbCBtb2RlbCBmb3IgdGhlIHZlcmlmaWNhdGlvbiAocmVmbGVjdGlvbikgcGFzcyBvbmx5LiBMZWF2ZSBlbXB0eSB0byByZXVzZSBnb29zZV9tb2RlbCBmb3IgYm90aCBwYXNzZXMgKGRlZmF1bHQpLiBFeGFtcGxlIGZvciBmaXJld29ya3MtYWk6IGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZ2xtLTVwMy1mbGFzaFxuIiwiZGVmYXVsdCI6IiJ9LHsia2V5IjoidmVyaWZpY2F0aW9uX2dhdGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiUmV2aWV3IHZlcmlmaWNhdGlvbiBnYXRlIChpc3N1ZSAjMTApLiBBZnRlciB0aGUgZmlyc3QgcmV2aWV3IHBhc3MsIGEgc2luZ2xlIHJlZmxlY3Rpb24gcGFzcyByZS1jaGVja3MgZXZlcnkgZmluZGluZyAoMC0xMCB2YWxpZGl0eSBzY29yZSkgYW5kIGEgZGV0ZXJtaW5pc3RpYyBtZXJnZSBnYXRlIGtlZXBzL2RlbW90ZXMvZHJvcHMgZmluZGluZ3MuIG9uID0gZ2F0ZSBlbmZvcmNlZDsgc2hhZG93ID0gZ2F0ZSBvdXRjb21lcyByZWNvcmRlZCBpbiBDSSBsb2dzIG9ubHkgKHBvc3RlZCByZXZpZXcgaXMgdGhlIHVubW9kaWZpZWQgZmlyc3QgcGFzcyk7IG9mZiA9IG5vIHZlcmlmaWNhdGlvbiBzdGVwLiBDb3N0OiBvbi9zaGFkb3cgcm91Z2hseSBkb3VibGVzIHRoZSBMTE0gc3BlbmQgcGVyIHJldmlldy5cbiIsIm9wdGlvbnMiOlsib24iLCJvZmYiLCJzaGFkb3ciXX0seyJrZXkiOiJ2ZXJpZnlfZ2F0ZV9wcm9maWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkdhdGUgcHJvZmlsZS4gY29uc2VydmF0aXZlID0gdW5tYXRjaGVkIGZpbmRpbmdzIGFyZSBrZXB0LCBQMC9QMSBmaW5kaW5ncyB3aXRoIGEgNC02IHZhbGlkaXR5IHNjb3JlIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLiBzdHJpY3QgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGRyb3BwZWQsIGFuZCB0aGUgc2FtZSB0aHJlc2hvbGRzIGFwcGx5IHRvIGV2ZXJ5IHByaW9yaXR5IChzY29yZSA8PSA0IGRyb3AsIDUtNyBkZW1vdGUsID49IDgga2VlcCkuIEtlZXAgdGhlIGRlZmF1bHQgdW5sZXNzIHNoYWRvdyBtZWFzdXJlbWVudHMganVzdGlmeSB0aWdodGVuaW5nLlxuIiwib3B0aW9ucyI6WyJjb25zZXJ2YXRpdmUiLCJzdHJpY3QiXX1dfQ +goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gVmVyaWZpY2F0aW9uIG1vZGVsOiB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0g4oCUIHRoZSBtb2RlbCB0aGUgcmVmbGVjdGlvblxuICBwYXNzIHVzZXMuIElmIHRoZSB1c2VyIGxlZnQgaXQgZW1wdHksIHJ1biB0aGUgU3RlcCAyIGNvbW1hbmQgZXhhY3RseSBhc1xuICB3cml0dGVuIChib3RoIHBhc3NlcyB0aGVuIHVzZSBHT09TRV9NT0RFTDsgbmV2ZXIgcGFzcyBhbiBlbXB0eSAtLXZlcmlmeS1cbiAgbW9kZWwgdmFsdWUg4oCUIGl0IHdvdWxkIHN3YWxsb3cgdGhlIG5leHQgZmxhZykuIElmIHNldCwgQUREIG9uZSBsaW5lIGludG9cbiAgdGhlIFN0ZXAgMiBjb21tYW5kIHJpZ2h0IGFmdGVyIC0tbW9kZWw6XG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBcXFxcXG4gIChrZWVwIHRoZSB0cmFpbGluZyBcXFxcIGNvbnRpbnVhdGlvbikuXG4tIFByb3ZpZGVyIHNlY3JldCB0aGF0IHRoZSB1c2VyIG11c3QgYWRkLCBlLmcuIGZvciB7eyBjaV9wcm92aWRlciB9fSB0aGVcbiAgcmVxdWlyZWQgcmVwbyBzZWNyZXQgbmFtZSBmcm9tIHRoZSBtYXBwaW5nIGFib3ZlLlxuLSBIb3cgdG8gdHJpZ2dlcjogb3Blbi91cGRhdGUgYSBwdWxsIHJlcXVlc3Q7IENJIHBvc3RzIHRoZSB7eyByZXZpZXdfc3R5bGUgfX1cbiAgcmVzdWx0IGluIHt7IG91dHB1dF9sYW5ndWFnZSB9fS5cbi0gRm9yIGdyYWRlZCByZXZpZXdzIHRoZSBDSSBhbHNvIHBvc3RzIHVwIHRvIDEwIGRpZmYtYW5jaG9yZWQgaW5saW5lIGNvbW1lbnRzXG4gIChsaWtlIENvZGVSYWJiaXQpOiBlYWNoIGZpbmRpbmcgaXMgdmFsaWRhdGVkIGFnYWluc3QgdGhlIFBSL01SIGRpZmYgYmVmb3JlXG4gIHBvc3RpbmcsIGFuZCBmaW5kaW5ncyB0aGF0IGNhbm5vdCBiZSBhbmNob3JlZCBhcmUgcmVjYXBwZWQgaW4gdGhlIHN1bW1hcnlcbiAgY29tbWVudCBpbnN0ZWFkIOKAlCBub3RoaW5nIGlzIHNpbGVudGx5IGRyb3BwZWQuXG4tIFZlcmlmaWNhdGlvbiBnYXRlICh7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBwcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX0pOlxuICB3aGVuIG9uL3NoYWRvdywgZXZlcnkgZmluZGluZyBpcyByZS12ZXJpZmllZCBieSBhIHNlY29uZCBnb29zZSBwYXNzXG4gIChyZWZsZWN0aW9uKSBiZWZvcmUgcG9zdGluZzsgcmVmdXRlZCBmaW5kaW5ncyBhcmUgcmVtb3ZlZCwgcGxhdXNpYmxlLWJ1dC1cbiAgdW52ZXJpZmllZCBibG9ja2VycyBhcmUgZGVtb3RlZCB0byBXYXJuaW5ncywgYW5kIHRoZSB2ZXJkaWN0IGlzIHJlY29tcHV0ZWQuXG4gIFRoZSBwb3N0ZWQgcmV2aWV3IG5vdGVzIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUga2VwdC9kZW1vdGVkL2Ryb3BwZWQ7IHRoZVxuICBkcm9wcGVkIGRldGFpbHMgbGl2ZSBpbiB0aGUgQ0kgam9iIGxvZyAoZHJvcHBlZC5qc29uIGFydGlmYWN0KSwgbmV2ZXJcbiAgc2lsZW50bHkgbG9zdC4gU2hhZG93IG1vZGUgcmVjb3JkcyBvdXRjb21lcyB3aXRob3V0IGNoYW5naW5nIHRoZSBwb3N0LlxuICBDb3N0IG5vdGU6IG9uL3NoYWRvdyDiiYggMnggTExNIHNwZW5kIHBlciByZXZpZXc7IGNob29zZSBvZmYgdG8gZGlzYWJsZS5cbi0gUmVtaW5kZXI6IGlmIHRoaXMgcmVwbyBhbHJlYWR5IGhhcyBhIENvZGVHb29zZS1yZW5kZXJlZCBDSSBjb25maWcsIHRoaXNcbiAgcnVuIHJlLXJlbmRlcnMgaXQgaW4gcGxhY2UgKHRoYXQgaXMgdGhlIGludGVuZGVkIGRyaWZ0IGNvbnRyb2wpLlxuXG5EbyBOT1QgZ2l0IGNvbW1pdCBvciBwdXNoLiBEbyBOT1QgdG91Y2ggb3RoZXIgZmlsZXMuXG4iLCJleHRlbnNpb25zIjpbeyJ0eXBlIjoiYnVpbHRpbiIsIm5hbWUiOiJkZXZlbG9wZXIiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwidGltZW91dCI6bnVsbCwiYnVuZGxlZCI6bnVsbH0seyJ0eXBlIjoicGxhdGZvcm0iLCJuYW1lIjoiYW5hbHl6ZSIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJidW5kbGVkIjpudWxsfV0sInNldHRpbmdzIjp7InRlbXBlcmF0dXJlIjowLjF9LCJwYXJhbWV0ZXJzIjpbeyJrZXkiOiJjaV9wbGF0Zm9ybSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJDSSBwbGF0Zm9ybSB0byBzZXQgdXAgKGdvb3NlIHJldmlld3MgcHVsbCByZXF1ZXN0cyAvIE1ScyB0aGVyZSkiLCJvcHRpb25zIjpbImdpdGh1YiIsImdpdGxhYiIsImdpdGVhIiwidGVhbWNpdHkiXX0seyJrZXkiOiJvdXRwdXRfbGFuZ3VhZ2UiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTGFuZ3VhZ2UgZm9yIHJldmlldyBjb21tZW50cyBhbmQgdGhlIHNldHVwIHJlcG9ydCIsIm9wdGlvbnMiOlsiS29yZWFuIiwiRW5nbGlzaCIsIkphcGFuZXNlIiwiQ2hpbmVzZSJdfSx7ImtleSI6InJldmlld19zdHlsZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJXaGF0IHRoZSBDSSBwb3N0cyBvbiB0aGUgcHVsbCByZXF1ZXN0Iiwib3B0aW9ucyI6WyJncmFkZWQtcmV2aWV3IiwiY2hhbmdlcy1zdW1tYXJ5Il19LHsia2V5IjoiY2lfcHJvdmlkZXIiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTExNIHByb3ZpZGVyIHVzZWQgYnkgZ29vc2UgaW4gQ0kiLCJvcHRpb25zIjpbIm9sbGFtYV9jbG91ZCIsImFudGhyb3BpYyIsIm9wZW5haSIsIm9wZW5yb3V0ZXIiLCJmaXJld29ya3MtYWkiXX0seyJrZXkiOiJnb29zZV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJNb2RlbCBuYW1lIGZvciBHT09TRV9NT0RFTCBpbiB0aGUgQ0kgY29uZmlnIChlLmcuIGdsbS01LjMgZm9yIG9sbGFtYV9jbG91ZCwgY2xhdWRlLXNvbm5ldC00LTUgZm9yIGFudGhyb3BpYywgZ3B0LTRvIGZvciBvcGVuYWksIGFudGhyb3BpYy9jbGF1ZGUtc29ubmV0LTQgZm9yIG9wZW5yb3V0ZXIsIGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZGVlcHNlZWstdjQtZmxhc2gtMDczMSBmb3IgZmlyZXdvcmtzLWFpKSJ9LHsia2V5IjoiZ29vc2VfdmVyaWZ5X21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50Ijoib3B0aW9uYWwiLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsIG1vZGVsIGZvciB0aGUgdmVyaWZpY2F0aW9uIChyZWZsZWN0aW9uKSBwYXNzIG9ubHkuIExlYXZlIGVtcHR5IHRvIHJldXNlIGdvb3NlX21vZGVsIGZvciBib3RoIHBhc3NlcyAoZGVmYXVsdCkuIEV4YW1wbGUgZm9yIGZpcmV3b3Jrcy1haTogYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9nbG0tNXAzLWZsYXNoXG4iLCJkZWZhdWx0IjoiIn0seyJrZXkiOiJ2ZXJpZmljYXRpb25fZ2F0ZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJSZXZpZXcgdmVyaWZpY2F0aW9uIGdhdGUgKGlzc3VlICMxMCkuIEFmdGVyIHRoZSBmaXJzdCByZXZpZXcgcGFzcywgYSBzaW5nbGUgcmVmbGVjdGlvbiBwYXNzIHJlLWNoZWNrcyBldmVyeSBmaW5kaW5nICgwLTEwIHZhbGlkaXR5IHNjb3JlKSBhbmQgYSBkZXRlcm1pbmlzdGljIG1lcmdlIGdhdGUga2VlcHMvZGVtb3Rlcy9kcm9wcyBmaW5kaW5ncy4gb24gPSBnYXRlIGVuZm9yY2VkOyBzaGFkb3cgPSBnYXRlIG91dGNvbWVzIHJlY29yZGVkIGluIENJIGxvZ3Mgb25seSAocG9zdGVkIHJldmlldyBpcyB0aGUgdW5tb2RpZmllZCBmaXJzdCBwYXNzKTsgb2ZmID0gbm8gdmVyaWZpY2F0aW9uIHN0ZXAuIENvc3Q6IG9uL3NoYWRvdyByb3VnaGx5IGRvdWJsZXMgdGhlIExMTSBzcGVuZCBwZXIgcmV2aWV3LlxuIiwib3B0aW9ucyI6WyJvbiIsIm9mZiIsInNoYWRvdyJdfSx7ImtleSI6InZlcmlmeV9nYXRlX3Byb2ZpbGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiR2F0ZSBwcm9maWxlLiBjb25zZXJ2YXRpdmUgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGtlcHQsIFAwL1AxIGZpbmRpbmdzIHdpdGggYSA0LTYgdmFsaWRpdHkgc2NvcmUgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MuIHN0cmljdCA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUgZHJvcHBlZCwgYW5kIHRoZSBzYW1lIHRocmVzaG9sZHMgYXBwbHkgdG8gZXZlcnkgcHJpb3JpdHkgKHNjb3JlIDw9IDQgZHJvcCwgNS03IGRlbW90ZSwgPj0gOCBrZWVwKS4gS2VlcCB0aGUgZGVmYXVsdCB1bmxlc3Mgc2hhZG93IG1lYXN1cmVtZW50cyBqdXN0aWZ5IHRpZ2h0ZW5pbmcuXG4iLCJvcHRpb25zIjpbImNvbnNlcnZhdGl2ZSIsInN0cmljdCJdfV19 ``` diff --git a/codegoose-setup.yaml b/codegoose-setup.yaml index 07c875d..a756404 100644 --- a/codegoose-setup.yaml +++ b/codegoose-setup.yaml @@ -140,7 +140,6 @@ prompt: | python3 /tmp/render.py {{ ci_platform }} \ --provider {{ ci_provider }} \ --model {{ goose_model }} \ - --verify-model {{ goose_verify_model }} \ --style {{ review_style }} \ --language {{ output_language }} \ --verification {{ verification_gate }} \ @@ -166,9 +165,12 @@ prompt: | deterministic pipeline (not authored by the LLM). - GOOSE_MODEL: {{ goose_model }} (hardcoded into the config by the renderer). - Verification model: {{ goose_verify_model }} — the model the reflection - pass uses. If the user left it empty, DO NOT pass --verify-model to the - renderer (both passes then use GOOSE_MODEL). If set, pass - --verify-model {{ goose_verify_model }} exactly. + pass uses. If the user left it empty, run the Step 2 command exactly as + written (both passes then use GOOSE_MODEL; never pass an empty --verify- + model value — it would swallow the next flag). If set, ADD one line into + the Step 2 command right after --model: + --verify-model {{ goose_verify_model }} \\ + (keep the trailing \\ continuation). - Provider secret that the user must add, e.g. for {{ ci_provider }} the required repo secret name from the mapping above. - How to trigger: open/update a pull request; CI posts the {{ review_style }} diff --git a/docs/launch.html b/docs/launch.html index 300cabe..a2ebff5 100644 --- a/docs/launch.html +++ b/docs/launch.html @@ -163,13 +163,13 @@

⚙️ CI Setup

Install or refresh the CodeGoose review pipeline on GitHub / GitLab / Gitea / TeamCity. Platform, language, style, provider and model are chosen via dropdowns.

- + Launch CI Setup
Deep link not working? Copy it manually Paste into your browser's address bar, press Enter → Open Goose.app.
diff --git a/scripts/render.py b/scripts/render.py index 51fd1e4..dcb42b7 100644 --- a/scripts/render.py +++ b/scripts/render.py @@ -195,7 +195,8 @@ def main(): ap.add_argument("--model", required=True) ap.add_argument("--verify-model", default=None, help="model for the verification (reflection) pass; " - "defaults to --model (single-model behavior)") + "defaults to --model (single-model behavior). " + "GitHub workflows only — rejected elsewhere") ap.add_argument("--style", required=True, choices=["graded-review", "changes-summary"]) ap.add_argument("--language", default="Korean") ap.add_argument("--local", action="store_true", @@ -215,6 +216,13 @@ def main(): print(f"FAIL: unknown provider {args.provider}") return 2 + if args.verify_model and args.platform != "github": + # The __GOOSE_VERIFY_MODEL__ switch only exists in the GitHub workflow + # template; on other platforms the flag would silently no-op and the + # reflection pass would keep the review model. Fail loud instead. + print("FAIL: --verify-model is only supported on the github platform") + return 2 + spec = SOURCES[args.platform] if args.local: # Development mode: render straight from the working-tree templates From a294437fca3746b1a1ae0e2317d79915635cadb0 Mon Sep 17 00:00:00 2001 From: soolmuk <72430756+soolmuk@users.noreply.github.com> Date: Sat, 5 Sep 2026 11:51:26 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix(review):=20round-2=20dispositions=20?= =?UTF-8?q?=E2=80=94=20lazy=20verify-model=20switch=20+=20platform/provide?= =?UTF-8?q?r=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - P2 applied (recipe): Step 4 guidance now states the GITHUB ONLY constraint explicitly — on gitlab/gitea/teamcity a set verify model means re-run WITHOUT the flag (the renderer rejects it with exit 2), so non-github users have a documented action path instead of a guaranteed render failure. - P3 applied (template): the __GOOSE_VERIFY_MODEL__ config rewrite moved after the findings-exist + head-unchanged guards — empty findings or single-model usage no longer performs a pointless config write. Reflection + retry still read the rewritten config. - P3 applied (render.py): --verify-model + --verification off now prints a WARN (the switch is stripped with the verify region, so the value is dead input); help text documents both constraints (github-only, unused with off). - P3 acknowledged (same-provider note): the rewritten config keeps the review provider — same-provider requirement documented in the recipe guidance. - deeplinks regenerated; recipe validate PASS; verify.py PASS; guard matrix re-tested (gitlab+vm=FAIL, github+vm+off=WARN, github+vm+on=dual model). --- README.ko.md | 2 +- README.md | 2 +- codegoose-setup.yaml | 16 +++++++++++----- docs/launch.html | 4 ++-- scripts/render.py | 8 +++++++- templates/github.workflow.yml | 20 +++++++++----------- 6 files changed, 31 insertions(+), 21 deletions(-) diff --git a/README.ko.md b/README.ko.md index b4bdd99..c56c04c 100644 --- a/README.ko.md +++ b/README.ko.md @@ -128,7 +128,7 @@ goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBQUiBSZX ```text -goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gVmVyaWZpY2F0aW9uIG1vZGVsOiB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0g4oCUIHRoZSBtb2RlbCB0aGUgcmVmbGVjdGlvblxuICBwYXNzIHVzZXMuIElmIHRoZSB1c2VyIGxlZnQgaXQgZW1wdHksIHJ1biB0aGUgU3RlcCAyIGNvbW1hbmQgZXhhY3RseSBhc1xuICB3cml0dGVuIChib3RoIHBhc3NlcyB0aGVuIHVzZSBHT09TRV9NT0RFTDsgbmV2ZXIgcGFzcyBhbiBlbXB0eSAtLXZlcmlmeS1cbiAgbW9kZWwgdmFsdWUg4oCUIGl0IHdvdWxkIHN3YWxsb3cgdGhlIG5leHQgZmxhZykuIElmIHNldCwgQUREIG9uZSBsaW5lIGludG9cbiAgdGhlIFN0ZXAgMiBjb21tYW5kIHJpZ2h0IGFmdGVyIC0tbW9kZWw6XG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBcXFxcXG4gIChrZWVwIHRoZSB0cmFpbGluZyBcXFxcIGNvbnRpbnVhdGlvbikuXG4tIFByb3ZpZGVyIHNlY3JldCB0aGF0IHRoZSB1c2VyIG11c3QgYWRkLCBlLmcuIGZvciB7eyBjaV9wcm92aWRlciB9fSB0aGVcbiAgcmVxdWlyZWQgcmVwbyBzZWNyZXQgbmFtZSBmcm9tIHRoZSBtYXBwaW5nIGFib3ZlLlxuLSBIb3cgdG8gdHJpZ2dlcjogb3Blbi91cGRhdGUgYSBwdWxsIHJlcXVlc3Q7IENJIHBvc3RzIHRoZSB7eyByZXZpZXdfc3R5bGUgfX1cbiAgcmVzdWx0IGluIHt7IG91dHB1dF9sYW5ndWFnZSB9fS5cbi0gRm9yIGdyYWRlZCByZXZpZXdzIHRoZSBDSSBhbHNvIHBvc3RzIHVwIHRvIDEwIGRpZmYtYW5jaG9yZWQgaW5saW5lIGNvbW1lbnRzXG4gIChsaWtlIENvZGVSYWJiaXQpOiBlYWNoIGZpbmRpbmcgaXMgdmFsaWRhdGVkIGFnYWluc3QgdGhlIFBSL01SIGRpZmYgYmVmb3JlXG4gIHBvc3RpbmcsIGFuZCBmaW5kaW5ncyB0aGF0IGNhbm5vdCBiZSBhbmNob3JlZCBhcmUgcmVjYXBwZWQgaW4gdGhlIHN1bW1hcnlcbiAgY29tbWVudCBpbnN0ZWFkIOKAlCBub3RoaW5nIGlzIHNpbGVudGx5IGRyb3BwZWQuXG4tIFZlcmlmaWNhdGlvbiBnYXRlICh7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBwcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX0pOlxuICB3aGVuIG9uL3NoYWRvdywgZXZlcnkgZmluZGluZyBpcyByZS12ZXJpZmllZCBieSBhIHNlY29uZCBnb29zZSBwYXNzXG4gIChyZWZsZWN0aW9uKSBiZWZvcmUgcG9zdGluZzsgcmVmdXRlZCBmaW5kaW5ncyBhcmUgcmVtb3ZlZCwgcGxhdXNpYmxlLWJ1dC1cbiAgdW52ZXJpZmllZCBibG9ja2VycyBhcmUgZGVtb3RlZCB0byBXYXJuaW5ncywgYW5kIHRoZSB2ZXJkaWN0IGlzIHJlY29tcHV0ZWQuXG4gIFRoZSBwb3N0ZWQgcmV2aWV3IG5vdGVzIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUga2VwdC9kZW1vdGVkL2Ryb3BwZWQ7IHRoZVxuICBkcm9wcGVkIGRldGFpbHMgbGl2ZSBpbiB0aGUgQ0kgam9iIGxvZyAoZHJvcHBlZC5qc29uIGFydGlmYWN0KSwgbmV2ZXJcbiAgc2lsZW50bHkgbG9zdC4gU2hhZG93IG1vZGUgcmVjb3JkcyBvdXRjb21lcyB3aXRob3V0IGNoYW5naW5nIHRoZSBwb3N0LlxuICBDb3N0IG5vdGU6IG9uL3NoYWRvdyDiiYggMnggTExNIHNwZW5kIHBlciByZXZpZXc7IGNob29zZSBvZmYgdG8gZGlzYWJsZS5cbi0gUmVtaW5kZXI6IGlmIHRoaXMgcmVwbyBhbHJlYWR5IGhhcyBhIENvZGVHb29zZS1yZW5kZXJlZCBDSSBjb25maWcsIHRoaXNcbiAgcnVuIHJlLXJlbmRlcnMgaXQgaW4gcGxhY2UgKHRoYXQgaXMgdGhlIGludGVuZGVkIGRyaWZ0IGNvbnRyb2wpLlxuXG5EbyBOT1QgZ2l0IGNvbW1pdCBvciBwdXNoLiBEbyBOT1QgdG91Y2ggb3RoZXIgZmlsZXMuXG4iLCJleHRlbnNpb25zIjpbeyJ0eXBlIjoiYnVpbHRpbiIsIm5hbWUiOiJkZXZlbG9wZXIiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwidGltZW91dCI6bnVsbCwiYnVuZGxlZCI6bnVsbH0seyJ0eXBlIjoicGxhdGZvcm0iLCJuYW1lIjoiYW5hbHl6ZSIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJidW5kbGVkIjpudWxsfV0sInNldHRpbmdzIjp7InRlbXBlcmF0dXJlIjowLjF9LCJwYXJhbWV0ZXJzIjpbeyJrZXkiOiJjaV9wbGF0Zm9ybSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJDSSBwbGF0Zm9ybSB0byBzZXQgdXAgKGdvb3NlIHJldmlld3MgcHVsbCByZXF1ZXN0cyAvIE1ScyB0aGVyZSkiLCJvcHRpb25zIjpbImdpdGh1YiIsImdpdGxhYiIsImdpdGVhIiwidGVhbWNpdHkiXX0seyJrZXkiOiJvdXRwdXRfbGFuZ3VhZ2UiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTGFuZ3VhZ2UgZm9yIHJldmlldyBjb21tZW50cyBhbmQgdGhlIHNldHVwIHJlcG9ydCIsIm9wdGlvbnMiOlsiS29yZWFuIiwiRW5nbGlzaCIsIkphcGFuZXNlIiwiQ2hpbmVzZSJdfSx7ImtleSI6InJldmlld19zdHlsZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJXaGF0IHRoZSBDSSBwb3N0cyBvbiB0aGUgcHVsbCByZXF1ZXN0Iiwib3B0aW9ucyI6WyJncmFkZWQtcmV2aWV3IiwiY2hhbmdlcy1zdW1tYXJ5Il19LHsia2V5IjoiY2lfcHJvdmlkZXIiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTExNIHByb3ZpZGVyIHVzZWQgYnkgZ29vc2UgaW4gQ0kiLCJvcHRpb25zIjpbIm9sbGFtYV9jbG91ZCIsImFudGhyb3BpYyIsIm9wZW5haSIsIm9wZW5yb3V0ZXIiLCJmaXJld29ya3MtYWkiXX0seyJrZXkiOiJnb29zZV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJNb2RlbCBuYW1lIGZvciBHT09TRV9NT0RFTCBpbiB0aGUgQ0kgY29uZmlnIChlLmcuIGdsbS01LjMgZm9yIG9sbGFtYV9jbG91ZCwgY2xhdWRlLXNvbm5ldC00LTUgZm9yIGFudGhyb3BpYywgZ3B0LTRvIGZvciBvcGVuYWksIGFudGhyb3BpYy9jbGF1ZGUtc29ubmV0LTQgZm9yIG9wZW5yb3V0ZXIsIGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZGVlcHNlZWstdjQtZmxhc2gtMDczMSBmb3IgZmlyZXdvcmtzLWFpKSJ9LHsia2V5IjoiZ29vc2VfdmVyaWZ5X21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50Ijoib3B0aW9uYWwiLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsIG1vZGVsIGZvciB0aGUgdmVyaWZpY2F0aW9uIChyZWZsZWN0aW9uKSBwYXNzIG9ubHkuIExlYXZlIGVtcHR5IHRvIHJldXNlIGdvb3NlX21vZGVsIGZvciBib3RoIHBhc3NlcyAoZGVmYXVsdCkuIEV4YW1wbGUgZm9yIGZpcmV3b3Jrcy1haTogYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9nbG0tNXAzLWZsYXNoXG4iLCJkZWZhdWx0IjoiIn0seyJrZXkiOiJ2ZXJpZmljYXRpb25fZ2F0ZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJSZXZpZXcgdmVyaWZpY2F0aW9uIGdhdGUgKGlzc3VlICMxMCkuIEFmdGVyIHRoZSBmaXJzdCByZXZpZXcgcGFzcywgYSBzaW5nbGUgcmVmbGVjdGlvbiBwYXNzIHJlLWNoZWNrcyBldmVyeSBmaW5kaW5nICgwLTEwIHZhbGlkaXR5IHNjb3JlKSBhbmQgYSBkZXRlcm1pbmlzdGljIG1lcmdlIGdhdGUga2VlcHMvZGVtb3Rlcy9kcm9wcyBmaW5kaW5ncy4gb24gPSBnYXRlIGVuZm9yY2VkOyBzaGFkb3cgPSBnYXRlIG91dGNvbWVzIHJlY29yZGVkIGluIENJIGxvZ3Mgb25seSAocG9zdGVkIHJldmlldyBpcyB0aGUgdW5tb2RpZmllZCBmaXJzdCBwYXNzKTsgb2ZmID0gbm8gdmVyaWZpY2F0aW9uIHN0ZXAuIENvc3Q6IG9uL3NoYWRvdyByb3VnaGx5IGRvdWJsZXMgdGhlIExMTSBzcGVuZCBwZXIgcmV2aWV3LlxuIiwib3B0aW9ucyI6WyJvbiIsIm9mZiIsInNoYWRvdyJdfSx7ImtleSI6InZlcmlmeV9nYXRlX3Byb2ZpbGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiR2F0ZSBwcm9maWxlLiBjb25zZXJ2YXRpdmUgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGtlcHQsIFAwL1AxIGZpbmRpbmdzIHdpdGggYSA0LTYgdmFsaWRpdHkgc2NvcmUgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MuIHN0cmljdCA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUgZHJvcHBlZCwgYW5kIHRoZSBzYW1lIHRocmVzaG9sZHMgYXBwbHkgdG8gZXZlcnkgcHJpb3JpdHkgKHNjb3JlIDw9IDQgZHJvcCwgNS03IGRlbW90ZSwgPj0gOCBrZWVwKS4gS2VlcCB0aGUgZGVmYXVsdCB1bmxlc3Mgc2hhZG93IG1lYXN1cmVtZW50cyBqdXN0aWZ5IHRpZ2h0ZW5pbmcuXG4iLCJvcHRpb25zIjpbImNvbnNlcnZhdGl2ZSIsInN0cmljdCJdfV19 +goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gVmVyaWZpY2F0aW9uIG1vZGVsOiB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0g4oCUIHRoZSBtb2RlbCB0aGUgcmVmbGVjdGlvblxuICBwYXNzIHVzZXMuIEdJVEhVQiBPTkxZOiB0aGUgcmVuZGVyZXIgcmVqZWN0cyAtLXZlcmlmeS1tb2RlbCBvblxuICBnaXRsYWIvZ2l0ZWEvdGVhbWNpdHkgKGV4aXQgMiksIHNvIGlmIHt7IGNpX3BsYXRmb3JtIH19IGlzIG5vdCBnaXRodWJcbiAgYW5kIHRoZSB1c2VyIHNldCBhIHZhbHVlLCByZXBvcnQgdGhlIGNvbnN0cmFpbnQgYW5kIFJFLVJVTiBXSVRIT1VUIHRoZVxuICBmbGFnIGluc3RlYWQgb2YgcGFzc2luZyBpdC4gSWYgdGhlIHVzZXIgbGVmdCBpdCBlbXB0eSwgcnVuIHRoZSBTdGVwIDJcbiAgY29tbWFuZCBleGFjdGx5IGFzIHdyaXR0ZW4gKGJvdGggcGFzc2VzIHRoZW4gdXNlIEdPT1NFX01PREVMOyBuZXZlclxuICBwYXNzIGFuIGVtcHR5IC0tdmVyaWZ5LW1vZGVsIHZhbHVlIOKAlCBpdCB3b3VsZCBzd2FsbG93IHRoZSBuZXh0IGZsYWcpLlxuICBJZiBzZXQgQU5EIHRoZSBwbGF0Zm9ybSBpcyBnaXRodWIsIEFERCBvbmUgbGluZSBpbnRvIHRoZSBTdGVwIDIgY29tbWFuZFxuICByaWdodCBhZnRlciAtLW1vZGVsOlxuICAtLXZlcmlmeS1tb2RlbCB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0gXFxcXFxuICAoa2VlcCB0aGUgdHJhaWxpbmcgXFxcXCBjb250aW51YXRpb247IG11c3QgYmUgYSBtb2RlbCBmcm9tIHRoZSBTQU1FXG4gIHByb3ZpZGVyIHt7IGNpX3Byb3ZpZGVyIH19IOKAlCB0aGUgcmV3cml0dGVuIGNvbmZpZyBrZWVwcyB0aGUgcmV2aWV3XG4gIHByb3ZpZGVyKS5cbi0gUHJvdmlkZXIgc2VjcmV0IHRoYXQgdGhlIHVzZXIgbXVzdCBhZGQsIGUuZy4gZm9yIHt7IGNpX3Byb3ZpZGVyIH19IHRoZVxuICByZXF1aXJlZCByZXBvIHNlY3JldCBuYW1lIGZyb20gdGhlIG1hcHBpbmcgYWJvdmUuXG4tIEhvdyB0byB0cmlnZ2VyOiBvcGVuL3VwZGF0ZSBhIHB1bGwgcmVxdWVzdDsgQ0kgcG9zdHMgdGhlIHt7IHJldmlld19zdHlsZSB9fVxuICByZXN1bHQgaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19LlxuLSBGb3IgZ3JhZGVkIHJldmlld3MgdGhlIENJIGFsc28gcG9zdHMgdXAgdG8gMTAgZGlmZi1hbmNob3JlZCBpbmxpbmUgY29tbWVudHNcbiAgKGxpa2UgQ29kZVJhYmJpdCk6IGVhY2ggZmluZGluZyBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgUFIvTVIgZGlmZiBiZWZvcmVcbiAgcG9zdGluZywgYW5kIGZpbmRpbmdzIHRoYXQgY2Fubm90IGJlIGFuY2hvcmVkIGFyZSByZWNhcHBlZCBpbiB0aGUgc3VtbWFyeVxuICBjb21tZW50IGluc3RlYWQg4oCUIG5vdGhpbmcgaXMgc2lsZW50bHkgZHJvcHBlZC5cbi0gVmVyaWZpY2F0aW9uIGdhdGUgKHt7IHZlcmlmaWNhdGlvbl9nYXRlIH19IHByb2ZpbGUge3sgdmVyaWZ5X2dhdGVfcHJvZmlsZSB9fSk6XG4gIHdoZW4gb24vc2hhZG93LCBldmVyeSBmaW5kaW5nIGlzIHJlLXZlcmlmaWVkIGJ5IGEgc2Vjb25kIGdvb3NlIHBhc3NcbiAgKHJlZmxlY3Rpb24pIGJlZm9yZSBwb3N0aW5nOyByZWZ1dGVkIGZpbmRpbmdzIGFyZSByZW1vdmVkLCBwbGF1c2libGUtYnV0LVxuICB1bnZlcmlmaWVkIGJsb2NrZXJzIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLCBhbmQgdGhlIHZlcmRpY3QgaXMgcmVjb21wdXRlZC5cbiAgVGhlIHBvc3RlZCByZXZpZXcgbm90ZXMgaG93IG1hbnkgZmluZGluZ3Mgd2VyZSBrZXB0L2RlbW90ZWQvZHJvcHBlZDsgdGhlXG4gIGRyb3BwZWQgZGV0YWlscyBsaXZlIGluIHRoZSBDSSBqb2IgbG9nIChkcm9wcGVkLmpzb24gYXJ0aWZhY3QpLCBuZXZlclxuICBzaWxlbnRseSBsb3N0LiBTaGFkb3cgbW9kZSByZWNvcmRzIG91dGNvbWVzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBvc3QuXG4gIENvc3Qgbm90ZTogb24vc2hhZG93IOKJiCAyeCBMTE0gc3BlbmQgcGVyIHJldmlldzsgY2hvb3NlIG9mZiB0byBkaXNhYmxlLlxuLSBSZW1pbmRlcjogaWYgdGhpcyByZXBvIGFscmVhZHkgaGFzIGEgQ29kZUdvb3NlLXJlbmRlcmVkIENJIGNvbmZpZywgdGhpc1xuICBydW4gcmUtcmVuZGVycyBpdCBpbiBwbGFjZSAodGhhdCBpcyB0aGUgaW50ZW5kZWQgZHJpZnQgY29udHJvbCkuXG5cbkRvIE5PVCBnaXQgY29tbWl0IG9yIHB1c2guIERvIE5PVCB0b3VjaCBvdGhlciBmaWxlcy5cbiIsImV4dGVuc2lvbnMiOlt7InR5cGUiOiJidWlsdGluIiwibmFtZSI6ImRldmVsb3BlciIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJ0aW1lb3V0IjpudWxsLCJidW5kbGVkIjpudWxsfSx7InR5cGUiOiJwbGF0Zm9ybSIsIm5hbWUiOiJhbmFseXplIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsImJ1bmRsZWQiOm51bGx9XSwic2V0dGluZ3MiOnsidGVtcGVyYXR1cmUiOjAuMX0sInBhcmFtZXRlcnMiOlt7ImtleSI6ImNpX3BsYXRmb3JtIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkNJIHBsYXRmb3JtIHRvIHNldCB1cCAoZ29vc2UgcmV2aWV3cyBwdWxsIHJlcXVlc3RzIC8gTVJzIHRoZXJlKSIsIm9wdGlvbnMiOlsiZ2l0aHViIiwiZ2l0bGFiIiwiZ2l0ZWEiLCJ0ZWFtY2l0eSJdfSx7ImtleSI6Im91dHB1dF9sYW5ndWFnZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMYW5ndWFnZSBmb3IgcmV2aWV3IGNvbW1lbnRzIGFuZCB0aGUgc2V0dXAgcmVwb3J0Iiwib3B0aW9ucyI6WyJLb3JlYW4iLCJFbmdsaXNoIiwiSmFwYW5lc2UiLCJDaGluZXNlIl19LHsia2V5IjoicmV2aWV3X3N0eWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IldoYXQgdGhlIENJIHBvc3RzIG9uIHRoZSBwdWxsIHJlcXVlc3QiLCJvcHRpb25zIjpbImdyYWRlZC1yZXZpZXciLCJjaGFuZ2VzLXN1bW1hcnkiXX0seyJrZXkiOiJjaV9wcm92aWRlciIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMTE0gcHJvdmlkZXIgdXNlZCBieSBnb29zZSBpbiBDSSIsIm9wdGlvbnMiOlsib2xsYW1hX2Nsb3VkIiwiYW50aHJvcGljIiwib3BlbmFpIiwib3BlbnJvdXRlciIsImZpcmV3b3Jrcy1haSJdfSx7ImtleSI6Imdvb3NlX21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ik1vZGVsIG5hbWUgZm9yIEdPT1NFX01PREVMIGluIHRoZSBDSSBjb25maWcgKGUuZy4gZ2xtLTUuMyBmb3Igb2xsYW1hX2Nsb3VkLCBjbGF1ZGUtc29ubmV0LTQtNSBmb3IgYW50aHJvcGljLCBncHQtNG8gZm9yIG9wZW5haSwgYW50aHJvcGljL2NsYXVkZS1zb25uZXQtNCBmb3Igb3BlbnJvdXRlciwgYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9kZWVwc2Vlay12NC1mbGFzaC0wNzMxIGZvciBmaXJld29ya3MtYWkpIn0seyJrZXkiOiJnb29zZV92ZXJpZnlfbW9kZWwiLCJpbnB1dF90eXBlIjoic3RyaW5nIiwicmVxdWlyZW1lbnQiOiJvcHRpb25hbCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgbW9kZWwgZm9yIHRoZSB2ZXJpZmljYXRpb24gKHJlZmxlY3Rpb24pIHBhc3Mgb25seS4gTGVhdmUgZW1wdHkgdG8gcmV1c2UgZ29vc2VfbW9kZWwgZm9yIGJvdGggcGFzc2VzIChkZWZhdWx0KS4gRXhhbXBsZSBmb3IgZmlyZXdvcmtzLWFpOiBhY2NvdW50cy9maXJld29ya3MvbW9kZWxzL2dsbS01cDMtZmxhc2hcbiIsImRlZmF1bHQiOiIifSx7ImtleSI6InZlcmlmaWNhdGlvbl9nYXRlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IlJldmlldyB2ZXJpZmljYXRpb24gZ2F0ZSAoaXNzdWUgIzEwKS4gQWZ0ZXIgdGhlIGZpcnN0IHJldmlldyBwYXNzLCBhIHNpbmdsZSByZWZsZWN0aW9uIHBhc3MgcmUtY2hlY2tzIGV2ZXJ5IGZpbmRpbmcgKDAtMTAgdmFsaWRpdHkgc2NvcmUpIGFuZCBhIGRldGVybWluaXN0aWMgbWVyZ2UgZ2F0ZSBrZWVwcy9kZW1vdGVzL2Ryb3BzIGZpbmRpbmdzLiBvbiA9IGdhdGUgZW5mb3JjZWQ7IHNoYWRvdyA9IGdhdGUgb3V0Y29tZXMgcmVjb3JkZWQgaW4gQ0kgbG9ncyBvbmx5IChwb3N0ZWQgcmV2aWV3IGlzIHRoZSB1bm1vZGlmaWVkIGZpcnN0IHBhc3MpOyBvZmYgPSBubyB2ZXJpZmljYXRpb24gc3RlcC4gQ29zdDogb24vc2hhZG93IHJvdWdobHkgZG91YmxlcyB0aGUgTExNIHNwZW5kIHBlciByZXZpZXcuXG4iLCJvcHRpb25zIjpbIm9uIiwib2ZmIiwic2hhZG93Il19LHsia2V5IjoidmVyaWZ5X2dhdGVfcHJvZmlsZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJHYXRlIHByb2ZpbGUuIGNvbnNlcnZhdGl2ZSA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUga2VwdCwgUDAvUDEgZmluZGluZ3Mgd2l0aCBhIDQtNiB2YWxpZGl0eSBzY29yZSBhcmUgZGVtb3RlZCB0byBXYXJuaW5ncy4gc3RyaWN0ID0gdW5tYXRjaGVkIGZpbmRpbmdzIGFyZSBkcm9wcGVkLCBhbmQgdGhlIHNhbWUgdGhyZXNob2xkcyBhcHBseSB0byBldmVyeSBwcmlvcml0eSAoc2NvcmUgPD0gNCBkcm9wLCA1LTcgZGVtb3RlLCA-PSA4IGtlZXApLiBLZWVwIHRoZSBkZWZhdWx0IHVubGVzcyBzaGFkb3cgbWVhc3VyZW1lbnRzIGp1c3RpZnkgdGlnaHRlbmluZy5cbiIsIm9wdGlvbnMiOlsiY29uc2VydmF0aXZlIiwic3RyaWN0Il19XX0 ``` diff --git a/README.md b/README.md index a18ed8d..9ce22f4 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBQUiBSZX ```text -goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gVmVyaWZpY2F0aW9uIG1vZGVsOiB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0g4oCUIHRoZSBtb2RlbCB0aGUgcmVmbGVjdGlvblxuICBwYXNzIHVzZXMuIElmIHRoZSB1c2VyIGxlZnQgaXQgZW1wdHksIHJ1biB0aGUgU3RlcCAyIGNvbW1hbmQgZXhhY3RseSBhc1xuICB3cml0dGVuIChib3RoIHBhc3NlcyB0aGVuIHVzZSBHT09TRV9NT0RFTDsgbmV2ZXIgcGFzcyBhbiBlbXB0eSAtLXZlcmlmeS1cbiAgbW9kZWwgdmFsdWUg4oCUIGl0IHdvdWxkIHN3YWxsb3cgdGhlIG5leHQgZmxhZykuIElmIHNldCwgQUREIG9uZSBsaW5lIGludG9cbiAgdGhlIFN0ZXAgMiBjb21tYW5kIHJpZ2h0IGFmdGVyIC0tbW9kZWw6XG4gIC0tdmVyaWZ5LW1vZGVsIHt7IGdvb3NlX3ZlcmlmeV9tb2RlbCB9fSBcXFxcXG4gIChrZWVwIHRoZSB0cmFpbGluZyBcXFxcIGNvbnRpbnVhdGlvbikuXG4tIFByb3ZpZGVyIHNlY3JldCB0aGF0IHRoZSB1c2VyIG11c3QgYWRkLCBlLmcuIGZvciB7eyBjaV9wcm92aWRlciB9fSB0aGVcbiAgcmVxdWlyZWQgcmVwbyBzZWNyZXQgbmFtZSBmcm9tIHRoZSBtYXBwaW5nIGFib3ZlLlxuLSBIb3cgdG8gdHJpZ2dlcjogb3Blbi91cGRhdGUgYSBwdWxsIHJlcXVlc3Q7IENJIHBvc3RzIHRoZSB7eyByZXZpZXdfc3R5bGUgfX1cbiAgcmVzdWx0IGluIHt7IG91dHB1dF9sYW5ndWFnZSB9fS5cbi0gRm9yIGdyYWRlZCByZXZpZXdzIHRoZSBDSSBhbHNvIHBvc3RzIHVwIHRvIDEwIGRpZmYtYW5jaG9yZWQgaW5saW5lIGNvbW1lbnRzXG4gIChsaWtlIENvZGVSYWJiaXQpOiBlYWNoIGZpbmRpbmcgaXMgdmFsaWRhdGVkIGFnYWluc3QgdGhlIFBSL01SIGRpZmYgYmVmb3JlXG4gIHBvc3RpbmcsIGFuZCBmaW5kaW5ncyB0aGF0IGNhbm5vdCBiZSBhbmNob3JlZCBhcmUgcmVjYXBwZWQgaW4gdGhlIHN1bW1hcnlcbiAgY29tbWVudCBpbnN0ZWFkIOKAlCBub3RoaW5nIGlzIHNpbGVudGx5IGRyb3BwZWQuXG4tIFZlcmlmaWNhdGlvbiBnYXRlICh7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBwcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX0pOlxuICB3aGVuIG9uL3NoYWRvdywgZXZlcnkgZmluZGluZyBpcyByZS12ZXJpZmllZCBieSBhIHNlY29uZCBnb29zZSBwYXNzXG4gIChyZWZsZWN0aW9uKSBiZWZvcmUgcG9zdGluZzsgcmVmdXRlZCBmaW5kaW5ncyBhcmUgcmVtb3ZlZCwgcGxhdXNpYmxlLWJ1dC1cbiAgdW52ZXJpZmllZCBibG9ja2VycyBhcmUgZGVtb3RlZCB0byBXYXJuaW5ncywgYW5kIHRoZSB2ZXJkaWN0IGlzIHJlY29tcHV0ZWQuXG4gIFRoZSBwb3N0ZWQgcmV2aWV3IG5vdGVzIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUga2VwdC9kZW1vdGVkL2Ryb3BwZWQ7IHRoZVxuICBkcm9wcGVkIGRldGFpbHMgbGl2ZSBpbiB0aGUgQ0kgam9iIGxvZyAoZHJvcHBlZC5qc29uIGFydGlmYWN0KSwgbmV2ZXJcbiAgc2lsZW50bHkgbG9zdC4gU2hhZG93IG1vZGUgcmVjb3JkcyBvdXRjb21lcyB3aXRob3V0IGNoYW5naW5nIHRoZSBwb3N0LlxuICBDb3N0IG5vdGU6IG9uL3NoYWRvdyDiiYggMnggTExNIHNwZW5kIHBlciByZXZpZXc7IGNob29zZSBvZmYgdG8gZGlzYWJsZS5cbi0gUmVtaW5kZXI6IGlmIHRoaXMgcmVwbyBhbHJlYWR5IGhhcyBhIENvZGVHb29zZS1yZW5kZXJlZCBDSSBjb25maWcsIHRoaXNcbiAgcnVuIHJlLXJlbmRlcnMgaXQgaW4gcGxhY2UgKHRoYXQgaXMgdGhlIGludGVuZGVkIGRyaWZ0IGNvbnRyb2wpLlxuXG5EbyBOT1QgZ2l0IGNvbW1pdCBvciBwdXNoLiBEbyBOT1QgdG91Y2ggb3RoZXIgZmlsZXMuXG4iLCJleHRlbnNpb25zIjpbeyJ0eXBlIjoiYnVpbHRpbiIsIm5hbWUiOiJkZXZlbG9wZXIiLCJkZXNjcmlwdGlvbiI6IiIsImRpc3BsYXlfbmFtZSI6bnVsbCwidGltZW91dCI6bnVsbCwiYnVuZGxlZCI6bnVsbH0seyJ0eXBlIjoicGxhdGZvcm0iLCJuYW1lIjoiYW5hbHl6ZSIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJidW5kbGVkIjpudWxsfV0sInNldHRpbmdzIjp7InRlbXBlcmF0dXJlIjowLjF9LCJwYXJhbWV0ZXJzIjpbeyJrZXkiOiJjaV9wbGF0Zm9ybSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJDSSBwbGF0Zm9ybSB0byBzZXQgdXAgKGdvb3NlIHJldmlld3MgcHVsbCByZXF1ZXN0cyAvIE1ScyB0aGVyZSkiLCJvcHRpb25zIjpbImdpdGh1YiIsImdpdGxhYiIsImdpdGVhIiwidGVhbWNpdHkiXX0seyJrZXkiOiJvdXRwdXRfbGFuZ3VhZ2UiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTGFuZ3VhZ2UgZm9yIHJldmlldyBjb21tZW50cyBhbmQgdGhlIHNldHVwIHJlcG9ydCIsIm9wdGlvbnMiOlsiS29yZWFuIiwiRW5nbGlzaCIsIkphcGFuZXNlIiwiQ2hpbmVzZSJdfSx7ImtleSI6InJldmlld19zdHlsZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJXaGF0IHRoZSBDSSBwb3N0cyBvbiB0aGUgcHVsbCByZXF1ZXN0Iiwib3B0aW9ucyI6WyJncmFkZWQtcmV2aWV3IiwiY2hhbmdlcy1zdW1tYXJ5Il19LHsia2V5IjoiY2lfcHJvdmlkZXIiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiTExNIHByb3ZpZGVyIHVzZWQgYnkgZ29vc2UgaW4gQ0kiLCJvcHRpb25zIjpbIm9sbGFtYV9jbG91ZCIsImFudGhyb3BpYyIsIm9wZW5haSIsIm9wZW5yb3V0ZXIiLCJmaXJld29ya3MtYWkiXX0seyJrZXkiOiJnb29zZV9tb2RlbCIsImlucHV0X3R5cGUiOiJzdHJpbmciLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJNb2RlbCBuYW1lIGZvciBHT09TRV9NT0RFTCBpbiB0aGUgQ0kgY29uZmlnIChlLmcuIGdsbS01LjMgZm9yIG9sbGFtYV9jbG91ZCwgY2xhdWRlLXNvbm5ldC00LTUgZm9yIGFudGhyb3BpYywgZ3B0LTRvIGZvciBvcGVuYWksIGFudGhyb3BpYy9jbGF1ZGUtc29ubmV0LTQgZm9yIG9wZW5yb3V0ZXIsIGFjY291bnRzL2ZpcmV3b3Jrcy9tb2RlbHMvZGVlcHNlZWstdjQtZmxhc2gtMDczMSBmb3IgZmlyZXdvcmtzLWFpKSJ9LHsia2V5IjoiZ29vc2VfdmVyaWZ5X21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50Ijoib3B0aW9uYWwiLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsIG1vZGVsIGZvciB0aGUgdmVyaWZpY2F0aW9uIChyZWZsZWN0aW9uKSBwYXNzIG9ubHkuIExlYXZlIGVtcHR5IHRvIHJldXNlIGdvb3NlX21vZGVsIGZvciBib3RoIHBhc3NlcyAoZGVmYXVsdCkuIEV4YW1wbGUgZm9yIGZpcmV3b3Jrcy1haTogYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9nbG0tNXAzLWZsYXNoXG4iLCJkZWZhdWx0IjoiIn0seyJrZXkiOiJ2ZXJpZmljYXRpb25fZ2F0ZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJSZXZpZXcgdmVyaWZpY2F0aW9uIGdhdGUgKGlzc3VlICMxMCkuIEFmdGVyIHRoZSBmaXJzdCByZXZpZXcgcGFzcywgYSBzaW5nbGUgcmVmbGVjdGlvbiBwYXNzIHJlLWNoZWNrcyBldmVyeSBmaW5kaW5nICgwLTEwIHZhbGlkaXR5IHNjb3JlKSBhbmQgYSBkZXRlcm1pbmlzdGljIG1lcmdlIGdhdGUga2VlcHMvZGVtb3Rlcy9kcm9wcyBmaW5kaW5ncy4gb24gPSBnYXRlIGVuZm9yY2VkOyBzaGFkb3cgPSBnYXRlIG91dGNvbWVzIHJlY29yZGVkIGluIENJIGxvZ3Mgb25seSAocG9zdGVkIHJldmlldyBpcyB0aGUgdW5tb2RpZmllZCBmaXJzdCBwYXNzKTsgb2ZmID0gbm8gdmVyaWZpY2F0aW9uIHN0ZXAuIENvc3Q6IG9uL3NoYWRvdyByb3VnaGx5IGRvdWJsZXMgdGhlIExMTSBzcGVuZCBwZXIgcmV2aWV3LlxuIiwib3B0aW9ucyI6WyJvbiIsIm9mZiIsInNoYWRvdyJdfSx7ImtleSI6InZlcmlmeV9nYXRlX3Byb2ZpbGUiLCJpbnB1dF90eXBlIjoic2VsZWN0IiwicmVxdWlyZW1lbnQiOiJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIjoiR2F0ZSBwcm9maWxlLiBjb25zZXJ2YXRpdmUgPSB1bm1hdGNoZWQgZmluZGluZ3MgYXJlIGtlcHQsIFAwL1AxIGZpbmRpbmdzIHdpdGggYSA0LTYgdmFsaWRpdHkgc2NvcmUgYXJlIGRlbW90ZWQgdG8gV2FybmluZ3MuIHN0cmljdCA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUgZHJvcHBlZCwgYW5kIHRoZSBzYW1lIHRocmVzaG9sZHMgYXBwbHkgdG8gZXZlcnkgcHJpb3JpdHkgKHNjb3JlIDw9IDQgZHJvcCwgNS03IGRlbW90ZSwgPj0gOCBrZWVwKS4gS2VlcCB0aGUgZGVmYXVsdCB1bmxlc3Mgc2hhZG93IG1lYXN1cmVtZW50cyBqdXN0aWZ5IHRpZ2h0ZW5pbmcuXG4iLCJvcHRpb25zIjpbImNvbnNlcnZhdGl2ZSIsInN0cmljdCJdfV19 +goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IkNvZGVHb29zZSBDSSBTZXR1cCIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyByZXBvIGhhcyBubyBnb29zZSBBSSBjb2RlIHJldmlldyBDSSwgY3JlYXRlIHRoZSBjb25maWcgZmlsZSBmb3IgdGhlIHNlbGVjdGVkIHBsYXRmb3JtOyBpZiBvbmUgZXhpc3RzLCB1cGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGNob3NlbiBvcHRpb25zLiBDSSBwbGF0Zm9ybSAoZ2l0aHViL2dpdGxhYi9naXRlYS90ZWFtY2l0eSksIHJldmlldyBjb21tZW50IGxhbmd1YWdlLCBQUiBjb21tZW50IHN0eWxlLCBhbmQgTExNIHByb3ZpZGVyIGFyZSBhbGwgY2hvc2VuIHZpYSBkcm9wZG93bnMuIEJhc2VkIG9uIHRoZSBvZmZpY2lhbCBnb29zZSBDSS9DRCB0dXRvcmlhbCAoaHR0cHM6Ly9nb29zZS1kb2NzLmFpL2RvY3MvdHV0b3JpYWxzL2NpY2QpLiBUaGUgZ2VuZXJhdGVkIGNvbmZpZyBpcyByZW5kZXJlZCBkZXRlcm1pbmlzdGljYWxseSBmcm9tIHRlbXBsYXRlcyBpbiBzb29sbXVrL0NvZGVHb29zZSAoc2NyaXB0cy9yZW5kZXIucHkpLCBOT1QgYXV0aG9yZWQgYnkgdGhlIExMTS5cbiIsInByb21wdCI6IllvdSBhcmUgYSBDSS9DRCBzZXR1cCBzcGVjaWFsaXN0IGZvciBnb29zZS4gU2V0IHVwIGdvb3NlIEFJIGNvZGUgcmV2aWV3IENJIGZvclxuVEhJUyByZXBvc2l0b3J5ICh0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb24ge3sgY2lfcGxhdGZvcm0gfX0uXG5cbiMjIENSSVRJQ0FMOiBZb3UgYXJlIGEgZHJpdmVyLCBub3QgYW4gYXV0aG9yLlxuRG8gTk9UIHdyaXRlIENJIFlBTUwgYnkgaGFuZC4gVGhlIHJlbmRlcmVkIGNvbmZpZ3MgYXJlIFBST0RVQ0VEIGJ5IHRoZSBzaGFyZWRcbnBpcGVsaW5lIGluIHNvb2xtdWsvQ29kZUdvb3NlOiBhIHB5dGhvbiByZW5kZXJlciBkb3dubG9hZHMgcGxhdGZvcm1cbnRlbXBsYXRlcyBmcm9tIHRoYXQgcmVwbyBhbmQgc3Vic3RpdHV0ZXMgcGFyYW1ldGVycyBkZXRlcm1pbmlzdGljYWxseS5cbllvdXIgam9iOiAoMSkgc2VsZWN0IHBhcmFtZXRlcnMsICgyKSBSVU4gdGhlIHNjcmlwdHMsICgzKSByZXBvcnQuIE5ldmVyXG5oYW5kLWVkaXQgdGhlIGdlbmVyYXRlZCBjb25maWc7IGlmIHNvbWV0aGluZyBpcyB3cm9uZywgZml4IHRoZSB0ZW1wbGF0ZXMgaW5cbnNvb2xtdWsvQ29kZUdvb3NlIGluc3RlYWQuXG5cbiMjIFBhcmFtZXRlcnMgKGNob3NlbiBieSB0aGUgdXNlciB2aWEgdGhpcyByZWNpcGUpXG4tIGNpX3BsYXRmb3JtOiB7eyBjaV9wbGF0Zm9ybSB9fVxuLSBvdXRwdXRfbGFuZ3VhZ2U6IHt7IG91dHB1dF9sYW5ndWFnZSB9fVxuLSByZXZpZXdfc3R5bGU6IHt7IHJldmlld19zdHlsZSB9fVxuLSBjaV9wcm92aWRlcjoge3sgY2lfcHJvdmlkZXIgfX1cbi0gZ29vc2VfbW9kZWw6IHt7IGdvb3NlX21vZGVsIH19XG4tIGdvb3NlX3ZlcmlmeV9tb2RlbDoge3sgZ29vc2VfdmVyaWZ5X21vZGVsIH19IChlbXB0eSA9IHNhbWUgYXMgZ29vc2VfbW9kZWwpXG4tIHZlcmlmaWNhdGlvbl9nYXRlOiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fVxuLSB2ZXJpZnlfZ2F0ZV9wcm9maWxlOiB7eyB2ZXJpZnlfZ2F0ZV9wcm9maWxlIH19XG4oUHJvdmlkZXIgLT4gc2VjcmV0IG5hbWU6IG9sbGFtYV9jbG91ZD1PTExBTUFfQ0xPVURfQVBJX0tFWSxcbmFudGhyb3BpYz1BTlRIUk9QSUNfQVBJX0tFWSwgb3BlbmFpPU9QRU5BSV9BUElfS0VZLCBvcGVucm91dGVyPU9QRU5ST1VURVJfQVBJX0tFWSxcbmZpcmV3b3Jrcy1haT1GSVJFV09SS1NfQVBJX0tFWSlcblxuIyMgU3RlcCAxIOKAlCBJbnNwZWN0IChyZWFkLW9ubHkpXG5DaGVjayBmb3IgZXhpc3RpbmcgQ0kgY29uZmlnczogZ2l0aHViIGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAsXG5naXRsYWIgYC5naXRsYWItY2kueW1sYCwgZ2l0ZWEgYC5naXRlYS93b3JrZmxvd3MvKi55bWxgLCB0ZWFtY2l0eSBgLnRlYW1jaXR5Lyoua3RzYC5cbklmIGFuIGV4aXN0aW5nIGNvbmZpZyB3YXMgcmVuZGVyZWQgYnkgdGhpcyBwaXBlbGluZSBiZWZvcmUgKGl0IGNhcnJpZXMgdGhlXG5tYXJrZXIgY29tbWVudCBgUmVuZGVyZWQgYnkgc29vbG11ay9Db2RlR29vc2VgKSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlblxuYnkgdGhlIHNhbWUgcmVuZGVyZXIg4oCUIHRoYXQgaXMgZXhwZWN0ZWQgZHJpZnQgY29udHJvbC5cblxuIyMgU3RlcCAyIOKAlCBEb3dubG9hZCBhbmQgcnVuIHRoZSByZW5kZXJlciAoe3sgY2lfcGxhdGZvcm0gfX0pXG5gYGBiYXNoXG5jdXJsIC1mc1NMIGh0dHBzOi8vZ2l0aHViLmNvbS9zb29sbXVrL0NvZGVHb29zZS9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvcmVuZGVyLnB5IC1vIC90bXAvcmVuZGVyLnB5XG5weXRob24zIC90bXAvcmVuZGVyLnB5IHt7IGNpX3BsYXRmb3JtIH19IFxcXG4gIC0tcHJvdmlkZXIge3sgY2lfcHJvdmlkZXIgfX0gXFxcbiAgLS1tb2RlbCB7eyBnb29zZV9tb2RlbCB9fSBcXFxuICAtLXN0eWxlIHt7IHJldmlld19zdHlsZSB9fSBcXFxuICAtLWxhbmd1YWdlIHt7IG91dHB1dF9sYW5ndWFnZSB9fSBcXFxuICAtLXZlcmlmaWNhdGlvbiB7eyB2ZXJpZmljYXRpb25fZ2F0ZSB9fSBcXFxuICAtLXZlcmlmeS1wcm9maWxlIHt7IHZlcmlmeV9nYXRlX3Byb2ZpbGUgfX1cbmBgYFxuXG5Ob3RlIGZvciB0ZWFtY2l0eTogdGhlIHJlbmRlcmVyIHByb2R1Y2VzIGAudGVhbWNpdHkvc2V0dGluZ3Mua3RzYDsgdGhlIHJldmlld1xudGV4dCBpcyBwdWJsaXNoZWQgYXMgdGhlIGJ1aWxkIGFydGlmYWN0IGBwcl9yZXZpZXcudHh0YCAoVGVhbUNpdHkgY2Fubm90IHBvc3RcbmZvcmdlIGNvbW1lbnRzIHdpdGhvdXQgZXh0cmEgUkVTVCBzZXR1cCkuXG5Gb3IgZ2l0ZWE6IHRoZSB1c2VyIG11c3QgYWxzbyBhZGQgYSBgUkVWSUVXX1RPS0VOYCBzZWNyZXQgKEdpdGVhIGFjY2VzcyB0b2tlblxud2l0aCB3cml0ZSBwZXJtaXNzaW9uKSDigJQgaW5jbHVkZSB0aGF0IGluIHRoZSByZXBvcnQuXG5cbiMjIFN0ZXAgMyDigJQgVmVyaWZ5ICh0aGUgc2NyaXB0J3MgZXhpdCBjb2RlIGlzIHRoZSBjb250cmFjdClcbmBgYGJhc2hcbmN1cmwgLWZzU0wgaHR0cHM6Ly9naXRodWIuY29tL3Nvb2xtdWsvQ29kZUdvb3NlL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC92ZXJpZnkucHkgLW8gL3RtcC92ZXJpZnlfY2kucHlcbnB5dGhvbjMgL3RtcC92ZXJpZnlfY2kucHkge3sgY2lfcGxhdGZvcm0gfX0gPHJlbmRlcmVkLWNvbmZpZy1wYXRoPlxuYGBgXG5FeHBlY3RlZCBSRVNVTFQ6IFBBU1MuIElmIEZBSUwsIHJlcG9ydCB0aGUgZmFpbGluZyBjaGVja3M7IGRvIE5PVCBoYW5kLXBhdGNoXG50aGUgY29uZmlnLiBGaXhlcyBiZWxvbmcgaW4gc29vbG11ay9Db2RlR29vc2UgdGVtcGxhdGVzL3NjcmlwdHMuXG5cbiMjIFN0ZXAgNCDigJQgUmVwb3J0IChpbiB7eyBvdXRwdXRfbGFuZ3VhZ2UgfX0pXG4tIFN0YXR1cyAoY3JlYXRlZC91cGRhdGVkKSArIGNvbmZpZyBmaWxlIHBhdGgsIGFuZCB0aGF0IGl0IHdhcyByZW5kZXJlZCBieSB0aGVcbiAgZGV0ZXJtaW5pc3RpYyBwaXBlbGluZSAobm90IGF1dGhvcmVkIGJ5IHRoZSBMTE0pLlxuLSBHT09TRV9NT0RFTDoge3sgZ29vc2VfbW9kZWwgfX0gKGhhcmRjb2RlZCBpbnRvIHRoZSBjb25maWcgYnkgdGhlIHJlbmRlcmVyKS5cbi0gVmVyaWZpY2F0aW9uIG1vZGVsOiB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0g4oCUIHRoZSBtb2RlbCB0aGUgcmVmbGVjdGlvblxuICBwYXNzIHVzZXMuIEdJVEhVQiBPTkxZOiB0aGUgcmVuZGVyZXIgcmVqZWN0cyAtLXZlcmlmeS1tb2RlbCBvblxuICBnaXRsYWIvZ2l0ZWEvdGVhbWNpdHkgKGV4aXQgMiksIHNvIGlmIHt7IGNpX3BsYXRmb3JtIH19IGlzIG5vdCBnaXRodWJcbiAgYW5kIHRoZSB1c2VyIHNldCBhIHZhbHVlLCByZXBvcnQgdGhlIGNvbnN0cmFpbnQgYW5kIFJFLVJVTiBXSVRIT1VUIHRoZVxuICBmbGFnIGluc3RlYWQgb2YgcGFzc2luZyBpdC4gSWYgdGhlIHVzZXIgbGVmdCBpdCBlbXB0eSwgcnVuIHRoZSBTdGVwIDJcbiAgY29tbWFuZCBleGFjdGx5IGFzIHdyaXR0ZW4gKGJvdGggcGFzc2VzIHRoZW4gdXNlIEdPT1NFX01PREVMOyBuZXZlclxuICBwYXNzIGFuIGVtcHR5IC0tdmVyaWZ5LW1vZGVsIHZhbHVlIOKAlCBpdCB3b3VsZCBzd2FsbG93IHRoZSBuZXh0IGZsYWcpLlxuICBJZiBzZXQgQU5EIHRoZSBwbGF0Zm9ybSBpcyBnaXRodWIsIEFERCBvbmUgbGluZSBpbnRvIHRoZSBTdGVwIDIgY29tbWFuZFxuICByaWdodCBhZnRlciAtLW1vZGVsOlxuICAtLXZlcmlmeS1tb2RlbCB7eyBnb29zZV92ZXJpZnlfbW9kZWwgfX0gXFxcXFxuICAoa2VlcCB0aGUgdHJhaWxpbmcgXFxcXCBjb250aW51YXRpb247IG11c3QgYmUgYSBtb2RlbCBmcm9tIHRoZSBTQU1FXG4gIHByb3ZpZGVyIHt7IGNpX3Byb3ZpZGVyIH19IOKAlCB0aGUgcmV3cml0dGVuIGNvbmZpZyBrZWVwcyB0aGUgcmV2aWV3XG4gIHByb3ZpZGVyKS5cbi0gUHJvdmlkZXIgc2VjcmV0IHRoYXQgdGhlIHVzZXIgbXVzdCBhZGQsIGUuZy4gZm9yIHt7IGNpX3Byb3ZpZGVyIH19IHRoZVxuICByZXF1aXJlZCByZXBvIHNlY3JldCBuYW1lIGZyb20gdGhlIG1hcHBpbmcgYWJvdmUuXG4tIEhvdyB0byB0cmlnZ2VyOiBvcGVuL3VwZGF0ZSBhIHB1bGwgcmVxdWVzdDsgQ0kgcG9zdHMgdGhlIHt7IHJldmlld19zdHlsZSB9fVxuICByZXN1bHQgaW4ge3sgb3V0cHV0X2xhbmd1YWdlIH19LlxuLSBGb3IgZ3JhZGVkIHJldmlld3MgdGhlIENJIGFsc28gcG9zdHMgdXAgdG8gMTAgZGlmZi1hbmNob3JlZCBpbmxpbmUgY29tbWVudHNcbiAgKGxpa2UgQ29kZVJhYmJpdCk6IGVhY2ggZmluZGluZyBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgUFIvTVIgZGlmZiBiZWZvcmVcbiAgcG9zdGluZywgYW5kIGZpbmRpbmdzIHRoYXQgY2Fubm90IGJlIGFuY2hvcmVkIGFyZSByZWNhcHBlZCBpbiB0aGUgc3VtbWFyeVxuICBjb21tZW50IGluc3RlYWQg4oCUIG5vdGhpbmcgaXMgc2lsZW50bHkgZHJvcHBlZC5cbi0gVmVyaWZpY2F0aW9uIGdhdGUgKHt7IHZlcmlmaWNhdGlvbl9nYXRlIH19IHByb2ZpbGUge3sgdmVyaWZ5X2dhdGVfcHJvZmlsZSB9fSk6XG4gIHdoZW4gb24vc2hhZG93LCBldmVyeSBmaW5kaW5nIGlzIHJlLXZlcmlmaWVkIGJ5IGEgc2Vjb25kIGdvb3NlIHBhc3NcbiAgKHJlZmxlY3Rpb24pIGJlZm9yZSBwb3N0aW5nOyByZWZ1dGVkIGZpbmRpbmdzIGFyZSByZW1vdmVkLCBwbGF1c2libGUtYnV0LVxuICB1bnZlcmlmaWVkIGJsb2NrZXJzIGFyZSBkZW1vdGVkIHRvIFdhcm5pbmdzLCBhbmQgdGhlIHZlcmRpY3QgaXMgcmVjb21wdXRlZC5cbiAgVGhlIHBvc3RlZCByZXZpZXcgbm90ZXMgaG93IG1hbnkgZmluZGluZ3Mgd2VyZSBrZXB0L2RlbW90ZWQvZHJvcHBlZDsgdGhlXG4gIGRyb3BwZWQgZGV0YWlscyBsaXZlIGluIHRoZSBDSSBqb2IgbG9nIChkcm9wcGVkLmpzb24gYXJ0aWZhY3QpLCBuZXZlclxuICBzaWxlbnRseSBsb3N0LiBTaGFkb3cgbW9kZSByZWNvcmRzIG91dGNvbWVzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBvc3QuXG4gIENvc3Qgbm90ZTogb24vc2hhZG93IOKJiCAyeCBMTE0gc3BlbmQgcGVyIHJldmlldzsgY2hvb3NlIG9mZiB0byBkaXNhYmxlLlxuLSBSZW1pbmRlcjogaWYgdGhpcyByZXBvIGFscmVhZHkgaGFzIGEgQ29kZUdvb3NlLXJlbmRlcmVkIENJIGNvbmZpZywgdGhpc1xuICBydW4gcmUtcmVuZGVycyBpdCBpbiBwbGFjZSAodGhhdCBpcyB0aGUgaW50ZW5kZWQgZHJpZnQgY29udHJvbCkuXG5cbkRvIE5PVCBnaXQgY29tbWl0IG9yIHB1c2guIERvIE5PVCB0b3VjaCBvdGhlciBmaWxlcy5cbiIsImV4dGVuc2lvbnMiOlt7InR5cGUiOiJidWlsdGluIiwibmFtZSI6ImRldmVsb3BlciIsImRlc2NyaXB0aW9uIjoiIiwiZGlzcGxheV9uYW1lIjpudWxsLCJ0aW1lb3V0IjpudWxsLCJidW5kbGVkIjpudWxsfSx7InR5cGUiOiJwbGF0Zm9ybSIsIm5hbWUiOiJhbmFseXplIiwiZGVzY3JpcHRpb24iOiIiLCJkaXNwbGF5X25hbWUiOm51bGwsImJ1bmRsZWQiOm51bGx9XSwic2V0dGluZ3MiOnsidGVtcGVyYXR1cmUiOjAuMX0sInBhcmFtZXRlcnMiOlt7ImtleSI6ImNpX3BsYXRmb3JtIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IkNJIHBsYXRmb3JtIHRvIHNldCB1cCAoZ29vc2UgcmV2aWV3cyBwdWxsIHJlcXVlc3RzIC8gTVJzIHRoZXJlKSIsIm9wdGlvbnMiOlsiZ2l0aHViIiwiZ2l0bGFiIiwiZ2l0ZWEiLCJ0ZWFtY2l0eSJdfSx7ImtleSI6Im91dHB1dF9sYW5ndWFnZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMYW5ndWFnZSBmb3IgcmV2aWV3IGNvbW1lbnRzIGFuZCB0aGUgc2V0dXAgcmVwb3J0Iiwib3B0aW9ucyI6WyJLb3JlYW4iLCJFbmdsaXNoIiwiSmFwYW5lc2UiLCJDaGluZXNlIl19LHsia2V5IjoicmV2aWV3X3N0eWxlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IldoYXQgdGhlIENJIHBvc3RzIG9uIHRoZSBwdWxsIHJlcXVlc3QiLCJvcHRpb25zIjpbImdyYWRlZC1yZXZpZXciLCJjaGFuZ2VzLXN1bW1hcnkiXX0seyJrZXkiOiJjaV9wcm92aWRlciIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJMTE0gcHJvdmlkZXIgdXNlZCBieSBnb29zZSBpbiBDSSIsIm9wdGlvbnMiOlsib2xsYW1hX2Nsb3VkIiwiYW50aHJvcGljIiwib3BlbmFpIiwib3BlbnJvdXRlciIsImZpcmV3b3Jrcy1haSJdfSx7ImtleSI6Imdvb3NlX21vZGVsIiwiaW5wdXRfdHlwZSI6InN0cmluZyIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6Ik1vZGVsIG5hbWUgZm9yIEdPT1NFX01PREVMIGluIHRoZSBDSSBjb25maWcgKGUuZy4gZ2xtLTUuMyBmb3Igb2xsYW1hX2Nsb3VkLCBjbGF1ZGUtc29ubmV0LTQtNSBmb3IgYW50aHJvcGljLCBncHQtNG8gZm9yIG9wZW5haSwgYW50aHJvcGljL2NsYXVkZS1zb25uZXQtNCBmb3Igb3BlbnJvdXRlciwgYWNjb3VudHMvZmlyZXdvcmtzL21vZGVscy9kZWVwc2Vlay12NC1mbGFzaC0wNzMxIGZvciBmaXJld29ya3MtYWkpIn0seyJrZXkiOiJnb29zZV92ZXJpZnlfbW9kZWwiLCJpbnB1dF90eXBlIjoic3RyaW5nIiwicmVxdWlyZW1lbnQiOiJvcHRpb25hbCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgbW9kZWwgZm9yIHRoZSB2ZXJpZmljYXRpb24gKHJlZmxlY3Rpb24pIHBhc3Mgb25seS4gTGVhdmUgZW1wdHkgdG8gcmV1c2UgZ29vc2VfbW9kZWwgZm9yIGJvdGggcGFzc2VzIChkZWZhdWx0KS4gRXhhbXBsZSBmb3IgZmlyZXdvcmtzLWFpOiBhY2NvdW50cy9maXJld29ya3MvbW9kZWxzL2dsbS01cDMtZmxhc2hcbiIsImRlZmF1bHQiOiIifSx7ImtleSI6InZlcmlmaWNhdGlvbl9nYXRlIiwiaW5wdXRfdHlwZSI6InNlbGVjdCIsInJlcXVpcmVtZW50IjoicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiI6IlJldmlldyB2ZXJpZmljYXRpb24gZ2F0ZSAoaXNzdWUgIzEwKS4gQWZ0ZXIgdGhlIGZpcnN0IHJldmlldyBwYXNzLCBhIHNpbmdsZSByZWZsZWN0aW9uIHBhc3MgcmUtY2hlY2tzIGV2ZXJ5IGZpbmRpbmcgKDAtMTAgdmFsaWRpdHkgc2NvcmUpIGFuZCBhIGRldGVybWluaXN0aWMgbWVyZ2UgZ2F0ZSBrZWVwcy9kZW1vdGVzL2Ryb3BzIGZpbmRpbmdzLiBvbiA9IGdhdGUgZW5mb3JjZWQ7IHNoYWRvdyA9IGdhdGUgb3V0Y29tZXMgcmVjb3JkZWQgaW4gQ0kgbG9ncyBvbmx5IChwb3N0ZWQgcmV2aWV3IGlzIHRoZSB1bm1vZGlmaWVkIGZpcnN0IHBhc3MpOyBvZmYgPSBubyB2ZXJpZmljYXRpb24gc3RlcC4gQ29zdDogb24vc2hhZG93IHJvdWdobHkgZG91YmxlcyB0aGUgTExNIHNwZW5kIHBlciByZXZpZXcuXG4iLCJvcHRpb25zIjpbIm9uIiwib2ZmIiwic2hhZG93Il19LHsia2V5IjoidmVyaWZ5X2dhdGVfcHJvZmlsZSIsImlucHV0X3R5cGUiOiJzZWxlY3QiLCJyZXF1aXJlbWVudCI6InJlcXVpcmVkIiwiZGVzY3JpcHRpb24iOiJHYXRlIHByb2ZpbGUuIGNvbnNlcnZhdGl2ZSA9IHVubWF0Y2hlZCBmaW5kaW5ncyBhcmUga2VwdCwgUDAvUDEgZmluZGluZ3Mgd2l0aCBhIDQtNiB2YWxpZGl0eSBzY29yZSBhcmUgZGVtb3RlZCB0byBXYXJuaW5ncy4gc3RyaWN0ID0gdW5tYXRjaGVkIGZpbmRpbmdzIGFyZSBkcm9wcGVkLCBhbmQgdGhlIHNhbWUgdGhyZXNob2xkcyBhcHBseSB0byBldmVyeSBwcmlvcml0eSAoc2NvcmUgPD0gNCBkcm9wLCA1LTcgZGVtb3RlLCA-PSA4IGtlZXApLiBLZWVwIHRoZSBkZWZhdWx0IHVubGVzcyBzaGFkb3cgbWVhc3VyZW1lbnRzIGp1c3RpZnkgdGlnaHRlbmluZy5cbiIsIm9wdGlvbnMiOlsiY29uc2VydmF0aXZlIiwic3RyaWN0Il19XX0 ``` diff --git a/codegoose-setup.yaml b/codegoose-setup.yaml index a756404..f3be15c 100644 --- a/codegoose-setup.yaml +++ b/codegoose-setup.yaml @@ -165,12 +165,18 @@ prompt: | deterministic pipeline (not authored by the LLM). - GOOSE_MODEL: {{ goose_model }} (hardcoded into the config by the renderer). - Verification model: {{ goose_verify_model }} — the model the reflection - pass uses. If the user left it empty, run the Step 2 command exactly as - written (both passes then use GOOSE_MODEL; never pass an empty --verify- - model value — it would swallow the next flag). If set, ADD one line into - the Step 2 command right after --model: + pass uses. GITHUB ONLY: the renderer rejects --verify-model on + gitlab/gitea/teamcity (exit 2), so if {{ ci_platform }} is not github + and the user set a value, report the constraint and RE-RUN WITHOUT the + flag instead of passing it. If the user left it empty, run the Step 2 + command exactly as written (both passes then use GOOSE_MODEL; never + pass an empty --verify-model value — it would swallow the next flag). + If set AND the platform is github, ADD one line into the Step 2 command + right after --model: --verify-model {{ goose_verify_model }} \\ - (keep the trailing \\ continuation). + (keep the trailing \\ continuation; must be a model from the SAME + provider {{ ci_provider }} — the rewritten config keeps the review + provider). - Provider secret that the user must add, e.g. for {{ ci_provider }} the required repo secret name from the mapping above. - How to trigger: open/update a pull request; CI posts the {{ review_style }} diff --git a/docs/launch.html b/docs/launch.html index a2ebff5..ce9e3cf 100644 --- a/docs/launch.html +++ b/docs/launch.html @@ -163,13 +163,13 @@

⚙️ CI Setup

Install or refresh the CodeGoose review pipeline on GitHub / GitLab / Gitea / TeamCity. Platform, language, style, provider and model are chosen via dropdowns.

- + Launch CI Setup
Deep link not working? Copy it manually Paste into your browser's address bar, press Enter → Open Goose.app.
diff --git a/scripts/render.py b/scripts/render.py index dcb42b7..d4de76c 100644 --- a/scripts/render.py +++ b/scripts/render.py @@ -196,7 +196,8 @@ def main(): ap.add_argument("--verify-model", default=None, help="model for the verification (reflection) pass; " "defaults to --model (single-model behavior). " - "GitHub workflows only — rejected elsewhere") + "GitHub workflows only — rejected elsewhere. " + "With --verification off the value is unused") ap.add_argument("--style", required=True, choices=["graded-review", "changes-summary"]) ap.add_argument("--language", default="Korean") ap.add_argument("--local", action="store_true", @@ -222,6 +223,11 @@ def main(): # reflection pass would keep the review model. Fail loud instead. print("FAIL: --verify-model is only supported on the github platform") return 2 + if args.verify_model and args.verification == "off": + # --verification off strips the whole verify region including the + # model switch, so --verify-model would be dead input. Warn (not + # fail): the render is still valid, the user just gave a no-op value. + print("WARN: --verify-model has no effect with --verification off") spec = SOURCES[args.platform] if args.local: diff --git a/templates/github.workflow.yml b/templates/github.workflow.yml index 723a43a..8b07217 100644 --- a/templates/github.workflow.yml +++ b/templates/github.workflow.yml @@ -154,17 +154,6 @@ jobs: #[verify:begin] # Verification gate (issue #10): single reflection pass + merge. # Same step run block: the provider key binding stays exactly 1. - # Issue: verification (reflection) pass may run a different - # model than the review pass. __GOOSE_VERIFY_MODEL__ is - # substituted with the review model by default (single-model - # behavior preserved); render.py --verify-model overrides it. - # Rewriting the global config.yaml here only affects the - # remaining goose invocations in this step (reflection + retry). - cat <<'VEOF' > ~/.config/goose/config.yaml - GOOSE_PROVIDER: __PROVIDER__ - GOOSE_MODEL: __GOOSE_VERIFY_MODEL__ - keyring: false - VEOF # (The old "skip when the PR head moved" pre-check read the same # event payload twice — head.sha vs head.sha — so it never fired; # the posting step's live `gh pr view` check is the real guard.) @@ -180,6 +169,15 @@ jobs: python3 verify_findings.py hunks --diff pr.diff --findings findings.json --out hunks.txt cat hunks.txt } >> reflection_input.txt + # Verify-model switch (render.py --verify-model): rewrite the + # config ONLY when the reflection pass will actually run — + # findings exist and the PR head is unchanged. Empty findings or + # single-model usage skips the rewrite entirely (no wasted I/O). + cat <<'VEOF' > ~/.config/goose/config.yaml + GOOSE_PROVIDER: __PROVIDER__ + GOOSE_MODEL: __GOOSE_VERIFY_MODEL__ + keyring: false + VEOF goose run --instructions reflection_input.txt > reflect_raw.txt if python3 verify_findings.py reflect-parse --raw reflect_raw.txt --out scores.json; then python3 verify_findings.py merge --body body.md --scores scores.json \ From 224acddcfc60fe6dde358ea4feeeb10b11bcbca0 Mon Sep 17 00:00:00 2001 From: soolmuk <72430756+soolmuk@users.noreply.github.com> Date: Sat, 5 Sep 2026 11:57:53 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix(review):=20round-3=20dispositions=20?= =?UTF-8?q?=E2=80=94=20cross-provider=20warn=20+=20sed-based=20model=20swa?= =?UTF-8?q?p?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - P2 applied (render.py): cheap prefix heuristic WARN when --verify-model looks like another provider model (accounts/fireworks/models/ vs claude-/ gpt-/o1/o3) while the rewritten config keeps the review provider — the failure mode (reflection auth fail → parse fail → retry → fail-open with green CI) is silent, so a render-time warning is the cheapest visibility. Heuristic, not a catalog: unknown prefixes pass. - P3 applied (template): comment now matches reality — the swap runs only when findings exist; a head-move after that point is tolerated by the post step live guard; single-model renders perform a value no-op sed (not a skip). - P3 applied (template): full-file heredoc rewrite replaced with sed on the GOOSE_MODEL line only — keys added to Configure goose by future releases survive into the reflection pass. Verified against the real config format (YAML block-scalar strips the indent; keys are bare). - verify.py PASS; cross-provider WARN confirmed (claude model on fireworks provider); same-provider render produces no warning. --- scripts/render.py | 18 ++++++++++++++++++ templates/github.workflow.yml | 18 +++++++++--------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/scripts/render.py b/scripts/render.py index d4de76c..43fbb73 100644 --- a/scripts/render.py +++ b/scripts/render.py @@ -228,6 +228,24 @@ def main(): # model switch, so --verify-model would be dead input. Warn (not # fail): the render is still valid, the user just gave a no-op value. print("WARN: --verify-model has no effect with --verification off") + # Cheap prefix heuristic: warn when the verify model id looks like it + # belongs to a different provider than the one configured. The rewritten + # config keeps the REVIEW provider, so a mismatched model id fails at + # runtime — and the reflection gate fails open (review still posts). + # This is a heuristic, not a catalog check: unknown prefixes pass. + if args.verify_model and args.verify_model != args.model: + _pfx = {"fireworks-ai": "accounts/fireworks/models/", + "openai": ["gpt-", "o1", "o3", "chatgpt"], + "anthropic": ["claude-"], + "openrouter": [], + "ollama_cloud": []} + _own = _pfx.get(provider, []) + _own_list = _own if isinstance(_own, list) else [_own] + if _own_list and not any(args.verify_model.startswith(p) for p in _own_list): + _foreign = [name for name, pfx in _pfx.items() + if name != provider and any(args.verify_model.startswith(p) for p in (pfx if isinstance(pfx, list) else [pfx]))] + if _foreign: + print(f"WARN: --verify-model looks like a {_foreign[0]} model but the config keeps provider {provider} — the reflection pass will fail auth if the provider does not serve it") spec = SOURCES[args.platform] if args.local: diff --git a/templates/github.workflow.yml b/templates/github.workflow.yml index 8b07217..93ffb46 100644 --- a/templates/github.workflow.yml +++ b/templates/github.workflow.yml @@ -169,15 +169,15 @@ jobs: python3 verify_findings.py hunks --diff pr.diff --findings findings.json --out hunks.txt cat hunks.txt } >> reflection_input.txt - # Verify-model switch (render.py --verify-model): rewrite the - # config ONLY when the reflection pass will actually run — - # findings exist and the PR head is unchanged. Empty findings or - # single-model usage skips the rewrite entirely (no wasted I/O). - cat <<'VEOF' > ~/.config/goose/config.yaml - GOOSE_PROVIDER: __PROVIDER__ - GOOSE_MODEL: __GOOSE_VERIFY_MODEL__ - keyring: false - VEOF + # Verify-model switch (render.py --verify-model): swap ONLY the + # GOOSE_MODEL line for the reflection + retry invocations. Runs + # only here — findings exist. (A head-move after this point is + # tolerated: the post step's live guard skips a stale review.) + # When --verify-model is unset the substituted value equals the + # review model and this sed is a value no-op. sed (not a full + # rewrite) so keys added to Configure goose by future releases + # survive into the reflection pass. + sed -i.bak 's|^GOOSE_MODEL: .*|GOOSE_MODEL: __GOOSE_VERIFY_MODEL__|' ~/.config/goose/config.yaml && rm -f ~/.config/goose/config.yaml.bak goose run --instructions reflection_input.txt > reflect_raw.txt if python3 verify_findings.py reflect-parse --raw reflect_raw.txt --out scores.json; then python3 verify_findings.py merge --body body.md --scores scores.json \