diff --git a/.github/Dockerfile-cloudrun b/.github/Dockerfile-cloudrun index 7db71c9d4..a9dc88b87 100644 --- a/.github/Dockerfile-cloudrun +++ b/.github/Dockerfile-cloudrun @@ -2,7 +2,7 @@ FROM busybox:latest@sha256:1ceb872bcc68a8fcd34c97952658b58086affdcb604c90c1dee2735bde5edc2f as build RUN touch /config.yaml -FROM gcr.io/distroless/base:latest@sha256:46c5b9bd3e3efff512e28350766b54355fce6337a0b44ba3f822ab918eca4520 +FROM gcr.io/distroless/base:latest@sha256:b31a6e02605827e77b7ebb82a0ac9669ec51091edd62c2c076175e05556f4ab9 ENV AUTOCERT_DIR /data/autocert WORKDIR /pomerium COPY pomerium* /bin/ diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 73a24f008..b7bb78dc6 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -20,7 +20,7 @@ jobs: platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 with: @@ -43,7 +43,7 @@ jobs: - name: start cluster run: | export POMERIUM_TAG=dev - cd ./integration/clusters/single + cd ./integration/clusters/single-stateful docker-compose up -d - name: integration tests diff --git a/.github/workflows/docker-main.yaml b/.github/workflows/docker-main.yaml index acfa673ea..914a51e87 100644 --- a/.github/workflows/docker-main.yaml +++ b/.github/workflows/docker-main.yaml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Set up QEMU uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 @@ -75,7 +75,7 @@ jobs: needs: publish steps: - name: Checkout Gitops Repo - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 with: repository: pomerium/gitops-argocd token: ${{ secrets.APPARITOR_GITHUB_TOKEN }} diff --git a/.github/workflows/docker-version-branches.yaml b/.github/workflows/docker-version-branches.yaml index a10107674..9b179f88d 100644 --- a/.github/workflows/docker-version-branches.yaml +++ b/.github/workflows/docker-version-branches.yaml @@ -13,7 +13,7 @@ jobs: labels: linux steps: - name: Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Docker meta id: meta diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index be1f32cc6..ecb894aa6 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -11,7 +11,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 with: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 04c70334e..d8307f998 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -20,7 +20,7 @@ jobs: tag: ${{ steps.tagName.outputs.tag }} steps: - name: Checkout - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Unshallow run: git fetch --prune --unshallow @@ -121,7 +121,7 @@ jobs: needs: goreleaser steps: - name: Checkout Gitops Repo - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 with: repository: pomerium/gitops-argocd token: ${{ secrets.APPARITOR_GITHUB_TOKEN }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index d9d23c2cb..c8a96984a 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -16,9 +16,10 @@ jobs: node-version: [16.x] platform: [ubuntu-latest] deployment: [multi, single] + authenticate-flow: [stateful, stateless] runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 with: @@ -41,12 +42,12 @@ jobs: - name: start cluster run: | export POMERIUM_TAG=dev - cd ./integration/clusters/${{matrix.deployment}} + cd ./integration/clusters/${{matrix.deployment}}-${{matrix.authenticate-flow}} docker-compose up -d - name: integration tests run: | - (cd ./integration/clusters/${{matrix.deployment}} && docker-compose logs -f &) + (cd ./integration/clusters/${{matrix.deployment}}-${{matrix.authenticate-flow}} && docker-compose logs -f &) go test -v ./integration/... build: @@ -57,7 +58,7 @@ jobs: platform: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 with: @@ -101,7 +102,7 @@ jobs: build-docker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Set up Docker Buildx uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 @@ -119,7 +120,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 with: fetch-depth: 0 diff --git a/authenticate/handlers.go b/authenticate/handlers.go index 351ea5192..ca5afe92b 100644 --- a/authenticate/handlers.go +++ b/authenticate/handlers.go @@ -84,6 +84,7 @@ func (a *Authenticate) mountDashboard(r *mux.Router) { AllowedHeaders: []string{"*"}, }) sr.Use(c.Handler) + sr.Use(a.RetrieveSession) // routes that don't need a session: sr.Path("/sign_out").Handler(httputil.HandlerFunc(a.SignOut)) @@ -91,7 +92,6 @@ func (a *Authenticate) mountDashboard(r *mux.Router) { // routes that need a session: sr = sr.NewRoute().Subrouter() - sr.Use(a.RetrieveSession) sr.Use(a.VerifySession) sr.Path("/").Handler(a.requireValidSignatureOnRedirect(a.userInfo)) sr.Path("/sign_in").Handler(httputil.HandlerFunc(a.SignIn)) @@ -475,7 +475,9 @@ func (a *Authenticate) revokeSession(ctx context.Context, w http.ResponseWriter, return "" } - return state.flow.RevokeSession(ctx, r, authenticator, nil) + sessionState, _ := a.getSessionFromCtx(ctx) + + return state.flow.RevokeSession(ctx, r, authenticator, sessionState) } // Callback handles the result of a successful call to the authenticate service diff --git a/authenticate/handlers_test.go b/authenticate/handlers_test.go index d4cf4c5f2..7a3424098 100644 --- a/authenticate/handlers_test.go +++ b/authenticate/handlers_test.go @@ -5,6 +5,7 @@ import ( "encoding/base64" "errors" "fmt" + "io" "net/http" "net/http/httptest" "net/url" @@ -248,6 +249,40 @@ func TestAuthenticate_SignOut(t *testing.T) { } } +func TestAuthenticate_SignOutDoesNotRequireSession(t *testing.T) { + // A direct sign_out request would not be signed. + f := new(stubFlow) + f.verifySignatureErr = errors.New("no signature") + + sessionStore := &mstore.Store{LoadError: errors.New("no session")} + a := &Authenticate{ + cfg: getAuthenticateConfig(WithGetIdentityProvider(func(options *config.Options, idpID string) (identity.Authenticator, error) { + return identity.MockProvider{}, nil + })), + state: atomicutil.NewValue(&authenticateState{ + cookieSecret: cryptutil.NewKey(), + sessionLoader: sessionStore, + sessionStore: sessionStore, + sharedEncoder: mock.Encoder{}, + flow: f, + }), + options: config.NewAtomicOptions(), + } + r := httptest.NewRequest(http.MethodGet, "/.pomerium/sign_out", nil) + w := httptest.NewRecorder() + + a.Handler().ServeHTTP(w, r) + result := w.Result() + + // The handler should serve a sign out confirmation page, not a login redirect. + expectedStatus := "200 OK" + if result.Status != expectedStatus { + t.Fatalf("wrong status code: got %q want %q", result.Status, expectedStatus) + } + body, _ := io.ReadAll(result.Body) + assert.Contains(t, string(body), `"page":"SignOutConfirm"`) +} + func TestAuthenticate_OAuthCallback(t *testing.T) { t.Parallel() diff --git a/authenticate/state.go b/authenticate/state.go index 213060e11..f8db3960d 100644 --- a/authenticate/state.go +++ b/authenticate/state.go @@ -144,13 +144,17 @@ func newAuthenticateStateFromConfig( } } - state.flow, err = authenticateflow.NewStateless( - cfg, - cookieStore, - authenticateConfig.getIdentityProvider, - authenticateConfig.profileTrimFn, - authenticateConfig.authEventFn, - ) + if cfg.Options.UseStatelessAuthenticateFlow() { + state.flow, err = authenticateflow.NewStateless( + cfg, + cookieStore, + authenticateConfig.getIdentityProvider, + authenticateConfig.profileTrimFn, + authenticateConfig.authEventFn, + ) + } else { + state.flow, err = authenticateflow.NewStateful(cfg, cookieStore) + } if err != nil { return nil, err } diff --git a/authorize/state.go b/authorize/state.go index bb2d9e277..115b0bea2 100644 --- a/authorize/state.go +++ b/authorize/state.go @@ -83,7 +83,11 @@ func newAuthorizeStateFromConfig( return nil, fmt.Errorf("authorize: invalid session store: %w", err) } - state.authenticateFlow, err = authenticateflow.NewStateless(cfg, nil, nil, nil, nil) + if cfg.Options.UseStatelessAuthenticateFlow() { + state.authenticateFlow, err = authenticateflow.NewStateless(cfg, nil, nil, nil, nil) + } else { + state.authenticateFlow, err = authenticateflow.NewStateful(cfg, nil) + } if err != nil { return nil, err } diff --git a/config/options.go b/config/options.go index 210ee67e0..43a757e6c 100644 --- a/config/options.go +++ b/config/options.go @@ -827,6 +827,25 @@ func (o *Options) GetInternalAuthenticateURL() (*url.URL, error) { return urlutil.ParseAndValidateURL(o.AuthenticateInternalURLString) } +// UseStatelessAuthenticateFlow returns true if the stateless authentication +// flow should be used (i.e. for hosted authenticate). +func (o *Options) UseStatelessAuthenticateFlow() bool { + if flow := os.Getenv("DEBUG_FORCE_AUTHENTICATE_FLOW"); flow != "" { + if flow == "stateless" { + return true + } else if flow == "stateful" { + return false + } + log.Warn(context.Background()). + Msgf("ignoring unknown DEBUG_FORCE_AUTHENTICATE_FLOW setting %q", flow) + } + u, err := o.GetInternalAuthenticateURL() + if err != nil { + return false + } + return urlutil.IsHostedAuthenticateDomain(u.Hostname()) +} + // GetAuthorizeURLs returns the AuthorizeURLs in the options or 127.0.0.1:5443. func (o *Options) GetAuthorizeURLs() ([]*url.URL, error) { if IsAll(o.Services) && o.AuthorizeURLString == "" && len(o.AuthorizeURLStrings) == 0 { diff --git a/config/options_test.go b/config/options_test.go index 39e9b753a..8b3d17553 100644 --- a/config/options_test.go +++ b/config/options_test.go @@ -856,6 +856,31 @@ func TestOptions_DefaultURL(t *testing.T) { } } +func TestOptions_UseStatelessAuthenticateFlow(t *testing.T) { + t.Run("enabled by default", func(t *testing.T) { + options := &Options{} + assert.True(t, options.UseStatelessAuthenticateFlow()) + }) + t.Run("enabled explicitly", func(t *testing.T) { + options := &Options{AuthenticateURLString: "https://authenticate.pomerium.app"} + assert.True(t, options.UseStatelessAuthenticateFlow()) + }) + t.Run("disabled", func(t *testing.T) { + options := &Options{AuthenticateURLString: "https://authenticate.example.com"} + assert.False(t, options.UseStatelessAuthenticateFlow()) + }) + t.Run("force enabled", func(t *testing.T) { + options := &Options{AuthenticateURLString: "https://authenticate.example.com"} + t.Setenv("DEBUG_FORCE_AUTHENTICATE_FLOW", "stateless") + assert.True(t, options.UseStatelessAuthenticateFlow()) + }) + t.Run("force disabled", func(t *testing.T) { + options := &Options{} + t.Setenv("DEBUG_FORCE_AUTHENTICATE_FLOW", "stateful") + assert.False(t, options.UseStatelessAuthenticateFlow()) + }) +} + func TestOptions_GetOauthOptions(t *testing.T) { opts := &Options{AuthenticateURLString: "https://authenticate.example.com"} oauthOptions, err := opts.GetOauthOptions() diff --git a/go.mod b/go.mod index 26804388f..662c660d9 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( github.com/pomerium/zero-sdk v0.0.0-20231127153820-dcd408d87b54 github.com/prometheus/client_golang v1.17.0 github.com/prometheus/client_model v0.5.0 - github.com/prometheus/common v0.44.0 + github.com/prometheus/common v0.45.0 github.com/prometheus/procfs v0.12.0 github.com/rs/cors v1.10.1 github.com/rs/zerolog v1.31.0 @@ -173,7 +173,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/miekg/dns v1.1.55 // indirect github.com/minio/md5-simd v1.1.2 // indirect github.com/minio/sha256-simd v1.0.1 // indirect diff --git a/go.sum b/go.sum index 8f6fb032a..f88eff07f 100644 --- a/go.sum +++ b/go.sum @@ -540,8 +540,8 @@ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mholt/acmez v1.2.0 h1:1hhLxSgY5FvH5HCnGUuwbKY2VQVo8IU7rxXKSnZ7F30= github.com/mholt/acmez v1.2.0/go.mod h1:VT9YwH1xgNX1kmYY89gY8xPJC84BFAisjo8Egigt4kE= github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= @@ -671,8 +671,8 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= diff --git a/integration/authentication_test.go b/integration/authentication_test.go new file mode 100644 index 000000000..6c2f5fcae --- /dev/null +++ b/integration/authentication_test.go @@ -0,0 +1,77 @@ +package main + +import ( + "context" + "net/http" + "net/url" + "testing" + "time" + + "github.com/go-jose/go-jose/v3/jwt" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/pomerium/pomerium/integration/flows" +) + +func TestRouteSessions(t *testing.T) { + ctx, clearTimeout := context.WithTimeout(context.Background(), time.Second*30) + defer clearTimeout() + + client := getClient(t) + + // Sign in to access one route. + url1 := mustParseURL("https://httpdetails.localhost.pomerium.io/by-domain") + res, err := flows.Authenticate(ctx, client, url1, flows.WithEmail("user1@dogs.test")) + require.NoError(t, err) + require.Equal(t, http.StatusOK, res.StatusCode, "expected OK for httpdetails") + + // Now request a different route. This should not require signing in again, + // but will redirect through the authenticate service if using the + // stateless authentication flow. + client.CheckRedirect = nil + url2 := mustParseURL("https://restricted-httpdetails.localhost.pomerium.io/by-domain") + req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url2.String(), nil) + res, err = client.Do(req) + require.NoError(t, err) + require.Equal(t, http.StatusOK, res.StatusCode, "expected OK for restricted-httpdetails") + + // Now examine the session cookies saved for each route. + claims1 := getSessionCookieJWTClaims(t, client, url1) + claims2 := getSessionCookieJWTClaims(t, client, url2) + + if AuthenticateFlow == "stateless" { + // Under the stateless authenticate flow, each route should have its + // own session. + assert.NotEqual(t, claims1.ID, claims2.ID) + } else { + // Under the stateful authenticate flow, the two routes should share + // the same session. + assert.Equal(t, claims1.ID, claims2.ID) + } +} + +func getSessionCookieJWTClaims(t *testing.T, client *http.Client, u *url.URL) *jwt.Claims { + t.Helper() + cookie := getSessionCookie(t, client, u) + + token, err := jwt.ParseSigned(cookie.Value) + require.NoError(t, err) + + var claims jwt.Claims + err = token.UnsafeClaimsWithoutVerification(&claims) + require.NoError(t, err) + + return &claims +} + +func getSessionCookie(t *testing.T, client *http.Client, u *url.URL) *http.Cookie { + t.Helper() + for _, c := range client.Jar.Cookies(u) { + if c.Name == "_pomerium" { + return c + } + } + t.Fatalf("no session cookie found for URL %q", u.String()) + return nil +} diff --git a/integration/clusters/multi/compose.yml b/integration/clusters/multi-stateful/compose.yml similarity index 100% rename from integration/clusters/multi/compose.yml rename to integration/clusters/multi-stateful/compose.yml diff --git a/integration/clusters/multi-stateless/compose.yml b/integration/clusters/multi-stateless/compose.yml new file mode 100644 index 000000000..0d1e5ef97 --- /dev/null +++ b/integration/clusters/multi-stateless/compose.yml @@ -0,0 +1,981 @@ +networks: + main: + ipam: + config: + - subnet: 172.20.0.0/16 +services: + fortio: + command: + - server + - -cert + - /fortio_config/trusted.pem + - -key + - /fortio_config/trusted-key.pem + depends_on: + fortio-init: + condition: service_completed_successfully + image: fortio/fortio:1.17.0 + networks: + main: + aliases: + - fortio + ports: + - 8079:8079/tcp + volumes: + - fortio_config:/fortio_config + fortio-init: + command: + - sh + - -c + - | + echo "$$CERT" >/fortio_config/trusted.pem + echo "$$KEY" >/fortio_config/trusted-key.pem + environment: + CERT: | + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + KEY: | + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + image: busybox:latest + networks: + main: + aliases: + - fortio-init + volumes: + - fortio_config:/fortio_config + fortio-ready: + command: + - -wait + - http://fortio:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - fortio-ready + mock-idp: + command: + - --provider + - oidc + - --port + - "8024" + - --root-url + - https://mock-idp.localhost.pomerium.io/ + image: pomerium/mock-idps:${MOCK_IDPS_TAG:-master} + networks: + main: + aliases: + - mock-idp + ports: + - 8024:8024/tcp + mock-idp-ready: + command: + - -wait + - http://mock-idp:8024/.well-known/openid-configuration + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - mock-idp-ready + pomerium-authenticate: + depends_on: + fortio-ready: + condition: service_completed_successfully + mock-idp-ready: + condition: service_completed_successfully + postgres-ready: + condition: service_completed_successfully + trusted-1-httpdetails-ready: + condition: service_completed_successfully + trusted-2-httpdetails-ready: + condition: service_completed_successfully + trusted-3-httpdetails-ready: + condition: service_completed_successfully + trusted-httpdetails-ready: + condition: service_completed_successfully + untrusted-httpdetails-ready: + condition: service_completed_successfully + verify-ready: + condition: service_completed_successfully + websocket-echo-ready: + condition: service_completed_successfully + wrongly-named-httpdetails-ready: + condition: service_completed_successfully + environment: + AUTHENTICATE_INTERNAL_SERVICE_URL: https://pomerium-authenticate + AUTHENTICATE_SERVICE_URL: https://authenticate.localhost.pomerium.io + AUTHORIZE_SERVICE_URL: https://pomerium-authorize:5443 + CERTIFICATE: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVVakNDQXJxZ0F3SUJBZ0lSQUtOYUVxQ21tWmZobWNZZ1p5MDFXQ3N3RFFZSktvWklodmNOQVFFTEJRQXcKZ1lNeEhqQWNCZ05WQkFvVEZXMXJZMlZ5ZENCa1pYWmxiRzl3YldWdWRDQkRRVEVzTUNvR0ExVUVDd3dqWTJGcwpaV0pBWTJGc1pXSXRjR010YkdsdWRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNreE16QXhCZ05WQkFNTUttMXJZMlZ5CmRDQmpZV3hsWWtCallXeGxZaTF3WXkxc2FXNTFlQ0FvUTJGc1pXSWdSRzk0YzJWNUtUQWVGdzB5TXpFeE1UQXkKTURBNE5EUmFGdzB6TXpFeE1EY3lNREE0TkRSYU1GY3hKekFsQmdOVkJBb1RIbTFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCalpYSjBhV1pwWTJGMFpURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnCktFTmhiR1ZpSUVSdmVITmxlU2t3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzgKSExCQUl6WGtQZWVnbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRAp5VmhEVDBRbEkvTy9FS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2Cld5bCtGb1BEVi92c1ozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXQKak9ic2FRZ0o1TEx4Q1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcQpiWlVERytaaW9BclBtcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkCjlyNnJPQnhweHduVER2SGtCbjZ2QWdNQkFBR2piREJxTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUUKRERBS0JnZ3JCZ0VGQlFjREFUQWZCZ05WSFNNRUdEQVdnQlNGaGxoWWdFZktUcGxWT2VuZVZHMyszSUUvVFRBaQpCZ05WSFJFRUd6QVpnaGNxTG14dlkyRnNhRzl6ZEM1d2IyMWxjbWwxYlM1cGJ6QU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBWUVBcHFWekozUWY5VnFrdWpGYmMwTUJEcVdELzhnamZkN21XMjlmUnRNSVAzemRKbGl5ZXZSajczQUwKaWZYNVpadW5UN24vajUyWnppRmliNGo4dWM0UjZWd0FFN2xMcERlc2ZzTDRBZ3ZHNnVqSmFKTGgrcTZmUEZWbQo4VXdJcjMvSGpaQUdQdmJ3Y2VBTzAwbXRmcW44YUsxS2VLeGZFazlVaFRVV2hzcXVieTg4RWNKVmh4a1RzQUhvCmtLUWtFYWY5TkxhemhaMFAwdTlKLzE0VkdoTU44UVVIdklMVmpja0NEaElqMzhJVUs3VXRaSGtNNzJHbUtyajIKU0M0MElEZE50NHpiMUFUTFZleU9MZHdLandFRmdLV3prdkkvN1VqOXBBMjYvZVlHUFE3b3hSRitJRXhWSWhEcgpFSnZIcldRMHMwRUtOUGRwVS9JaHF0azByWWtqODFwZXFNOFRtSTZ2cXJacUFFUHphMXRZazZXUXN6RG9ucFBXCnVLbGZyOUdZWWY1TXU5YTJ5MjZBZ2x1RG5pQWNuZldqUlhtcjFydlJIQnB6c0xTRDNTVG5QRTV0NkhKaWVQN3IKdjZrL2ZsWFE5U0V3MFUzbEkvblpLS3dpTGZXQzJPNUJwS3dNejE5Y1o4L2tMU0pXSGc0bGtEYjJVbzFKS25pVwora01FSTluTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + CERTIFICATE_AUTHORITY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQzhITEJBSXpYa1BlZWcKbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PLwpFS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2V3lsK0ZvUERWL3ZzClozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXRqT2JzYVFnSjVMTHgKQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUAptcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkOXI2ck9CeHB4d25UCkR2SGtCbjZ2QWdNQkFBRUNnZ0VBQjI4aTBBWVVOU2IxSm5XRmJLenJ1VWN0dTN0Q05Yb3ZKZzZLM0JpUFZNa3EKRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBVwo4ZUplcVJMWkVmc1NTSk9YVEc3UmRHc240cUhGSjAwczJaVGxjSUhTUHduRm0rWGpKaTk5VThHNFhzVW9YbzByCkd5KzBWQ3VVN004Z0lDRUhIc3JRTzlYREQzblQyaml1NVRqckt3anV0M0Vtb0pzc0k1YnF4MzMrT0J1NUJwQ1AKQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVApiTGtMRnlXQk5UV1VaMlIvMnd4bXVvQzZtTFp3ODc5TUxDS012azFkb1FLQmdRRGhtd0dhZkpOeW1UaUVRWlJJClNzUXg0c2VxZk9LZmdGQzdvaHFIOWNST091OElKMW83cTJwTTJXNFhpVitTM3dUZFBHbWNhNklPalgyM2lzVkIKMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzNwpheHpsYU1yeEV1M0xJOVVFN050cmRRaUJ5UUtCZ1FEVmRJNmNlSVZCVDZSZ3ZWR3Q4emtMalBJRmpoUUVIQUlwCnVoaXJncXBTNkNYOUJseWYyK280MHptZmozaGU1ckNjRW9CNU1zZU0rRGdGYmNWaDJlL01WbllpTk53NkpDREIKQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleQp1QkhWQnYvNHR3S0JnSHdIdWVQeTVTVTFzMnFTbXpEN1djMkxQZll1M25DT0hOUnJGR2IyNk11UmZ1UmVyaTdyCjJHOFRnb0VTRnljcDBRVElOOCsxSk0wWFlLeE5jSkQ2QjhWMXdLYmJwUXN5bW5lSTFnanV0aUIvSWd3L1BrREsKQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWgpmTjJZZVlieVljYU0xMXAxVmlsdWxWVFZqWTNpL0ZaaURSNFNML0lHSldqTi9Temc0aVhZc0tGbXUrZHVsT1psCmNCQUxwRUtycXBtelhZdHJONmJzdjE4KzVlTzNxR2JLMkRyRXEzZVdWZXYyS29UTW9ieHo3ZysrWEJJV0ptTEEKSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkUwpLcmx0d21vZEhpcVhOYlZrd2JXMUFGUEpiaVlhaTRZRmZLNElBYmlmL1lteGY5Rzc4YU9rcjlacENJek9rRFBaCllwRXdRR1dzQWhFbENGdmM4RS81ZEhFU1NwK3RXdFArTmx1aW1wRnFpRGczL1NVbk13TzJ4SDBuaExhMHplamgKZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + COOKIE_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + DATABROKER_SERVICE_URL: https://pomerium-databroker:5443 + DATABROKER_STORAGE_CONNECTION_STRING: postgres://pomerium:password@postgres:5432/test + DATABROKER_STORAGE_TYPE: postgres + DEBUG_FORCE_AUTHENTICATE_FLOW: stateless + DOWNSTREAM_MTLS_CRL: LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tCk1JSUNXakNCd3dJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBNk1SNHdIQVlEVlFRS0V4VnRhMk5sY25RZ1pHVjIKWld4dmNHMWxiblFnUTBFeEdEQVdCZ05WQkFNVEQyUnZkMjV6ZEhKbFlXMGdRMEVnTVJjTk1qTXdOekU1TWpFeApPRFExV2hjTk16TXdOekUyTWpFeE9EUTFXakFqTUNFQ0VFWTlqblU4Vmt0Mk1ZdWVza1JkN2J3WERUSXpNRGN4Ck9USXhNVGMwTjFxZ01EQXVNQjhHQTFVZEl3UVlNQmFBRk5IMU5BejhVajI0UGhDR2RCa0dpMENNUUdNTE1Bc0cKQTFVZEZBUUVBZ0lRQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQTR3M293NGoxRGF1ZmlCQlhoZEMwRUN5WQp6RHhPdUFDZFI0enlvWWJqTjFnMmtjMGJ1Y2hKNytWMGVUWS9SblNOYyt1cU5ZK0xZcHJYUXF1WktscjlkRlVyCnZKL3BYSit1eUxSL016ZWhpVHIzSG9UTENQbGlLWkREYXlQbW9admFxSEQ4SW9HRW5RWDZrQ0Vob3BiN2d0cUoKVTdUZkhhZXhpMHA0M0ZIMDBnblpmYURNa2NBZDh6Q2xzRVhVckFGQ1FSRDFNNVB1Q09UTzdDZVFjSTUzdUJ2ZAo4YUd2eUhsS0EvMk8xN2duaU1uZ2NvQ083Mk5BVWx0SnpNYnVncWVYT29pR0hZb1NzS1RiWTdNZExoWTNNRUJhCjNaa0NGZ3QzSExIVHo1UzBQZUJWclQ3L3k3U3o1Y2owUUEwSktMM0ozcHNuZ1ZicFM0b0h1NmN5dmcvLzdOZEcKS05CcWRhcytLUEFzbVYrM3k2NENyMmhuditXc1dqaXV4RGdJRUZ6cFFPY3lOT1p6bUlTQUN3N1lYandGdUluZQpPaWlNdVlzLzJOdndRMU9QZnEzamczSWY4a0JVY1NWaCtUZTRGSTMrMDd0V1V2TjZuVllDNFZtWEFjRzFIdXhRCkdubmU5ZjVoZ0VKUFZmTFQrdUozMVZWMTYrdkJuWkQ4NURaSlRyRE0KLS0tLS1FTkQgWDUwOSBDUkwtLS0tLQotLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0KTUlJQ05UQ0JuZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREE2TVI0d0hBWURWUVFLRXhWdGEyTmxjblFnWkdWMgpaV3h2Y0cxbGJuUWdRMEV4R0RBV0JnTlZCQU1URDJSdmQyNXpkSEpsWVcwZ1EwRWdNaGNOTWpNd056RTVNakUxCk1ERTFXaGNOTXpNd056RTJNakUxTURFMVdxQXdNQzR3SHdZRFZSMGpCQmd3Rm9BVUN4UTJjQmE1WXpxVnphbXAKaU5DeDhLd0ZGeVF3Q3dZRFZSMFVCQVFDQWhBQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQ1lhbXg4cE0rUgpDbHlza2N1N291aHUvUjFKeTFuV0d5V3RLcGhZcTBYRmJPTGxuazJaN2VEZkFYOEVlajJGYXZxeHphcFIyeDJPCjRpSk5EQ21pd1lZWVVTMlgyTEozclJSSlh5WHZXaHRmSHJ4VVJkNkJpdEMySVhweWtCdFZsZjN6QW5aOEdaRlEKUzFqZGZ5TE11RUFpRHdJYWkzWXQ4SHNEcC9xRzA4OW9YY29TdHlRZy91UnBtV3kwNUE5dUNWT2ZOSFNMU1p1OApscjRxYXRsZXUwd1diVjFhbUw4dE85eDRDUmtPMG8xWWFRcTREb09ydVByKzNOa1RtUHZHaWRoM0Y3MVY2SUVBCmgrS3pkYlJYeEZtQ0NXTFdtcEpEY3JnUjdLVXFaT2hVVXQrRFVxYXFoVjQ0cUkwbnJwUitRWkxvaG9Eb3I5THcKSyt1ZmozbjI5ZVNSWCszUHgrb1ZXUFQ4WVpQMnVLUGRpemk5Nm1lMmpXVHI1MXg5QWpFb0pEc1RuWVJsOSt1WQpTaGlVeFduVGRRc29va25JZmNTLzB6ZmdaODdHdlVWemluQ1F6SnB3VnhkNEFsdDhBbFIrZlhBcU5Jb09ndXl2CnAvQ3RSVm5qVkU3bDdIVy9oUVJxMUowaWpDQ0t3bXlmL0tUZDZFSzRUZHJ2YlgvVTltc1ZNOFk9Ci0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0K + ENVOY_ADMIN_ADDRESS: 0.0.0.0:9901 + GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT: ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ== + GRPC_ADDRESS: :5443 + GRPC_INSECURE: "false" + IDP_CLIENT_ID: CLIENT_ID + IDP_CLIENT_SECRET: CLIENT_SECRET + IDP_PROVIDER: oidc + IDP_PROVIDER_URL: https://mock-idp.localhost.pomerium.io/ + JWT_CLAIMS_HEADERS: email,groups,user + LOG_LEVEL: info + POLICY: Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy1pcC1hZGRyZXNzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovLzE3Mi4yMC4wLjUwOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNraXAtdmVyaWZ5LWVuYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogdHJ1ZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1kaXNhYmxlZCIsCiJ0bHNfc2tpcF92ZXJpZnkiOiBmYWxzZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1lbmFibGVkIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3Qubm90cG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly93cm9uZ2x5LW5hbWVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNlcnZlci1uYW1lLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZW5hYmxlZCIsCiJ0bHNfY3VzdG9tX2NhIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVV5UkVORFFUQkRaMEYzU1VKQlowbFNRVXhrT1VkaFNsSTVNbkZwTjNGTU1XVklSMDAyU3pCM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYY0taMWxOZUVocVFXTkNaMDVXUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZ6VFVOdlIwRXhWVVZEZDNkcVdUSkdjd3BhVjBwQldUSkdjMXBYU1hSalIwMTBZa2RzZFdSWVoyZExSVTVvWWtkV2FVbEZVblpsU0U1c1pWTnJlRTE2UVhoQ1owNVdRa0ZOVFV0dE1YSlpNbFo1Q21SRFFtcFpWM2hzV1d0Q2FsbFhlR3haYVRGM1dYa3hjMkZYTlRGbFEwRnZVVEpHYzFwWFNXZFNSemswWXpKV05VdFVRV1ZHZHpCNVRWUkJORTFVUlhrS1RWUlZNazFVUW1GR2R6QjZUVlJCTkUxVVJYbE5WRlV5VFZSQ1lVMUpSMFJOVWpSM1NFRlpSRlpSVVV0RmVGWjBZVEpPYkdOdVVXZGFSMVl5V2xkNGRncGpSekZzWW01UloxRXdSWGhNUkVGeFFtZE9Wa0pCYzAxSk1rNW9Za2RXYVZGSFRtaGlSMVpwVEZoQ2FreFhlSEJpYmxZMFNVTm9SRmxYZUd4WmFVSkZDbUl6YUhwYVdHdHdUVlJOZDAxUldVUldVVkZFUkVOd2RHRXlUbXhqYmxGbldUSkdjMXBYU2tGWk1rWnpXbGRKZEdOSFRYUmlSMngxWkZoblowdEZUbWdLWWtkV2FVbEZVblpsU0U1c1pWTnJkMmRuUjJsTlFUQkhRMU54UjFOSllqTkVVVVZDUVZGVlFVRTBTVUpxZDBGM1oyZEhTMEZ2U1VKblVVUlhXWEJXWlFwQ1UyNWxaVEpqUVVKWmIyWlRiMWQ0UjAxNVJtRk5VVEJ1U210Wk1GVlhUVGxqYTNsVmFEZFdabWRPS3k5aFJsTlhNbHBUYlZoMWRqVmtjbU53YVRJd0Nub3paV3hvVUZSbE9UaGlRVTVpYWlzdllta3dNREUxVVZkdVRXVnVTekExV2tzMmNVUjBSbmR2TDBoV1F5OVpZMkZ5ZFhVNU5pc3hTakowYjJWWGRVVUtkSGxyVnpOTlEzQkRNWEJJV1ZNMVp6bHBWa1JyY0dSeWVtNTJXRXRzV1hWVGFXdHFjbW8zU3pWMGIybFVkblZ0T1RkTWVFdHJkV28yUkZocVlYQlFSQW8xZG5SbFUwNHhaRkZuVHpsRFV6TnpjV3hqZDFsQk5sSnFWVWgzV1RKV1JXZ3lZV1JRTXpkQ1duSmFkMDhyZVVweE9YRkdOWGsxUjJ4bmFUaHNUalJqQ2t0c1NXeEdWWE12ZUZOd1VYTjRUbUpPVVZoMFRqbHRhelJwYlZsc1drZDZXVmxpWW0wclptOUNWbEJRWW05aE5XcFdkMHRFY0ZvMk5XMVBjemRLUjFBS05ubHFLemRXTjFWQ1RVWndWeXRuUzIxS2RHZG9MMnRyUVhneE9EVm9PVE54ZDB4R1VHTTRMMVEzYmlzclVERmlkU3RtWVd0WVVFZFFSVEl4Y2tSbFRBcFFibFZ0ZFdOSlduQktielZPY0ZsV1VYWTBWM1pVUzNFdmVrMVNPVk56Y0hveVVFWktia1ZTVkdaVWRuRXJSakZ4TTFwT1lXWkZlbWxRYzBJNWIyVlRDbTVxZUhkdFlWcFBVMVl3ZGxoeEwzRmxiM0Y0TkhZMlRVSjZWa0ZaTUM4NFVqSk1ZM0JLTkhWbk1FOWFNM2N3WWpKME5ubHZPRFpRTlZFNFEwRjNSVUVLUVdGT1JrMUZUWGRFWjFsRVZsSXdVRUZSU0M5Q1FWRkVRV2RKUlUxQ1NVZEJNVlZrUlhkRlFpOTNVVWxOUVZsQ1FXWTRRMEZSUVhkSVVWbEVWbEl3VHdwQ1FsbEZSa3hqV1RoRmIwNXZaazFqY25KNGVubDRTVzR6VnpaYVQwMVdXRTFCTUVkRFUzRkhVMGxpTTBSUlJVSkRkMVZCUVRSSlFtZFJRMXA2UkVOMkNrdEpTRmd6UjNacVRsTlpOWGMxWWs5dU5FVXpkemRSU0ZBd09VRkNhbFF2ZDNWVU5FeEVhMXBJU2sxdGJISk1iek56T0dKamMxRXdjMDFFTVZrdkx5OEtjekEzWTNBMGVGbHNjVVEzUWtFd1FXTndkbGxXV1hFMU9IaExlSE52UTNkV1dHMUhOV05GWlU5dldtMVhaak54V1RKdFV6aGxWemsyZGs5R2NtUkpZZ3BNTkU5R05IaFpWVTlOVW5GQlQwZEJRWEkyVm14UE4yZFlZVFF3TmtoNmNuTkJNV2haV25keVpWaG9UMVJEV2xwUVdrOVZia0YxTURWVFNFWmtaMkZOQ2xSS1RrSXZiekF4ZEhCM1VXeHlWSGhPYldaeWIzQnZUM3A1ZFhaSU1IcFZNbEp5VFhNd0swVmlUM1ZETkVFeVkxRTRNMFJKUm5oMmNUWTNiSGxWTUVFS2N6RlJOblJTVFRBclZVUnRTazlNZWpOVFpHZE9LMFF3TUdoamRYVnFPVEpIVmpSaVNEaENabmxWZGpoT1Exa3dka1JwYWpCVVUycHFOR00wVVhSak53cEpVRXhVV2pKbk5UUTFiMk42YUU1blFXMVVOMlFyUWpWSmJubG1hVk5KUzJWdFdIRmxjekpxY0dsQlpucFFUbXc1UWxaNGMyRnJZM012V1hwdldYTXhDaXR4VkdwQlYzVmhSSE5MYjJoRmJrODBRa3AxZW5Zd2VISmpaVFF3Wlc1U1oxaDVSMGRHZGxoMU1uTTBSbGt5ZGtweFZGTnZObmx6UkZkdWFFa3pURmNLWkdObk5rOHlSalJCVUVOSFIyVTNlbk4xY1dseGEzQmphMjVDWVdKbmVrVnpPV1p2U0hFeWJXWnZOMWhwUlhwbFpFMU9PRUpPY1daVFlrRTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiLAoidGxzX3NlcnZlcl9uYW1lIjogImh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL3VudHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZGlzYWJsZWQiLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtcmVxdWlyZWQubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2ExIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2EyIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVZCcWRtZE1Za1ZKVm1vdlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjVUVUkwV0VSVVNYcE5SRmwzVDFSQmQwNUVVWHBQUm05WVJGUk5lazFFV1hkUFZFRjNUa1JSZWs5R2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVNYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlF5ODRTMjluTWxwNk9HVTJPRVZIY0dacFdFNDNkUXBZWjJGMU16aG9Oak41WkhOd2RXTnlhbWgwYmxOVVYxaDBTRTh4YUZsTWJWVlpWMEZsZDJrM09XbEhXWHBQZFZsblYwTkVNMk5HZUdRcmRFMUxUSEpDQ25sdmNtbEtNMHRwYjFSMFdUQndiWGxNUkVveFZGaE5VMkZHUjJkdVduRnFXRWh0YWsxMmFXOHdlQzlxVVU1clEySlphMFpDUjFGVFdscDJhMEU0YzFFS2JUVkJjMUpFWlVsVlVHdFFiR2hHVFc1aU1uZzBhVkpqVEVKUU5ucEVUa1ptV0N0NU1YRlRiMnhMWW1nelN6a3ZSVE5RVkRSVmJtcGhPR2RQWW5wRFNncHVjazlqUmpWVFFuRlVUMnBTU0dsbUwxTXZkMW81VkZOR1YzcE1iWEZIVEdoeE56TlNZV2g1VkdsaFdWQTBObFYyU21oeVRtSTFUVzg1U0dKaU9UUXZDalI2VXpWQ01scDFielJ3YzJoVFdrUlhjSEYzZGtKbFkxRk9NRlpoVEZaMlNYbHRkVk41WnpWVWVuVklOR3QwVFRCd2RIcDJObkpZYVc1RWJHRTNjbm9LVFhVdlJuSkdWbEZRYTNOUGFGUkVkRFZWUTFOeFQwUjNVRnBwVHpkbk5WTlVNSE1yYWsxd1luQXhXRTQ0UzFBeWNISjBSV3hWVjJSaFluWkliR0l3VFFwRU1rVXdhRWhXYVRRME5GbHJVWGhhWVVOdlpXUXliMkp5VkVJeVJHWXlRM2RJUVZSblJrdDJURVl4VTBkVE1sRTVkakJ3WWxWak5sb3JNRzg1TVRKaUNtNVNaa2Q2YVRKd04ybENjMWRWVEhWSlRra3pibUpPUVhwc2JWZFFiVWRwZDFZeFUxa3hXVEJrVlRoRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWkJjMVZPYmtGWGRWZE5OZ3BzWXpKd2NWbHFVWE5tUTNOQ1VtTnJUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNWVFpaYVZKWVVUUnFhM0p4ZFdkMGRVeHFNbUUxQ2tGUksxVlNVR3htYTBaR1RqQkNSSEJYUTBsNlZqVXdkeXRaTVZwMFNESklka2RZTkRSNlJHcGlVVlIzZGl0QlZUUlVLMFkzTlVNNFVHNWpOWGwyV1c4S2RqWkdTVTFQVDFwSmNuWnBiRzlyZVZabU0yUkxVa016V1RKalVXRmpOSFUyTkdGUmF5dFlVaTl4YW1sWmIwWkxNRUk1ZVhjNFZVRXpUemQzUVRRMllncGpaVzlhVlVaYVRHTTFiMU56YmtJNWRGYzNNbWs0YkVWclFrWjBNbGcyTW5KeFUxRk9SMWwwZWtOV05qUmlUU3RsZWtOelFsbFFZVU5KUzFjd1FWSkNDakJEWWs1R1IyOWhVRXA2UVhWMVIzVnJkazlqUWtSNWRFb3pVa3BDV0VvM2JETTJNalpMVGtkNFEweHpVazFqUkdOVWVIWllRbVkzWjBaWGRHVjBWemtLYTNWdlpuWnNTazFwVUdrelFrUk5iQzlHUVVVMWFXdHFNRlZTTkRkeWFsbFZlRTB5VTBZMlJpdDZPSEJGWTFCalpWQlRXWHBEYkUxRlEwdzVZUzh3TWdwSk1USnpSVzVWTTFKbUsxSndkMU5VU0ZORGFubFlSM1JYYkRSa1IxTktiRTlGYkhkeVdVMUNRWGxZTmpKa1prWlpPVWRGUjJkSVEyNTVUekYwYWpNNUNrcEphR2RwU1VKRlduTkNURGxNVDA5TE9IWlVXWHBhTld0Q2Exb3hUbGhvTWtKcU0yNVRMMEl2VFRWNmIzUndOQzlUTmxBek1FeHBORFF2U21Kd2RtTUtOekJtV0hKMVJqWTVlbmRRVFdNMVlqTjROM2xZTjJoUVRGbElhekJvYlROQ1QxZGhiMlJRU1RSME1EMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZW5hYmxlZCIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJjb3JzX2FsbG93X3ByZWZsaWdodCI6IGZhbHNlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZGlzYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWVuYWJsZWQiLAoicHJlc2VydmVfaG9zdF9oZWFkZXIiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWRpc2FibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogZmFsc2UsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9yZXN0cmljdGVkLWh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF9kb21haW5zIjogWwoiZG9ncy50ZXN0IgpdLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoicHJlZml4IjogIi9ieS1kb21haW4iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF91c2VycyI6IFsKInVzZXIxQGRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktdXNlciIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJPVU5EX1JPQklOIiwKInByZWZpeCI6ICIvcm91bmQtcm9iaW4iLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJJTkdfSEFTSCIsCiJwcmVmaXgiOiAiL3JpbmctaGFzaCIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJsYl9wb2xpY3kiOiAiTUFHTEVWIiwKInByZWZpeCI6ICIvbWFnbGV2IiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIlgtQ3VzdG9tLVJlcXVlc3QtSGVhZGVyIjogImN1c3RvbS1yZXF1ZXN0LWhlYWRlci12YWx1ZSIKfSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImFsbG93X3dlYnNvY2tldHMiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2VuYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZGlzYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJlbmFibGVfZ29vZ2xlX2Nsb3VkX3NlcnZlcmxlc3NfYXV0aGVudGljYXRpb24iOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Nsb3VkcnVuLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIngtaWRwIjogIm9pZGMiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vYXV0aGVudGljYXRlLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0bHNfc2tpcF92ZXJpZnkiOiB0cnVlLAoidG8iOiAiaHR0cHM6Ly9wb21lcml1bS1hdXRoZW50aWNhdGUiCn0KXQ== + SERVICES: authenticate + SHARED_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + SIGNING_KEY: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + SIGNING_KEY_ALGORITHM: ES256 + image: pomerium/pomerium:${POMERIUM_TAG:-main} + networks: + main: + aliases: + - pomerium-authenticate + - authenticate.localhost.pomerium.io + ports: + - 9903:9901/tcp + - 5445:5443/tcp + pomerium-authorize: + depends_on: + fortio-ready: + condition: service_completed_successfully + mock-idp-ready: + condition: service_completed_successfully + postgres-ready: + condition: service_completed_successfully + trusted-1-httpdetails-ready: + condition: service_completed_successfully + trusted-2-httpdetails-ready: + condition: service_completed_successfully + trusted-3-httpdetails-ready: + condition: service_completed_successfully + trusted-httpdetails-ready: + condition: service_completed_successfully + untrusted-httpdetails-ready: + condition: service_completed_successfully + verify-ready: + condition: service_completed_successfully + websocket-echo-ready: + condition: service_completed_successfully + wrongly-named-httpdetails-ready: + condition: service_completed_successfully + environment: + AUTHENTICATE_INTERNAL_SERVICE_URL: https://pomerium-authenticate + AUTHENTICATE_SERVICE_URL: https://authenticate.localhost.pomerium.io + AUTHORIZE_SERVICE_URL: https://pomerium-authorize:5443 + CERTIFICATE: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVYekNDQXNlZ0F3SUJBZ0lSQU5NalQzSmp2cEdtbjRUTzVPWUFyazh3RFFZSktvWklodmNOQVFFTEJRQXcKZ1lNeEhqQWNCZ05WQkFvVEZXMXJZMlZ5ZENCa1pYWmxiRzl3YldWdWRDQkRRVEVzTUNvR0ExVUVDd3dqWTJGcwpaV0pBWTJGc1pXSXRjR010YkdsdWRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNreE16QXhCZ05WQkFNTUttMXJZMlZ5CmRDQmpZV3hsWWtCallXeGxZaTF3WXkxc2FXNTFlQ0FvUTJGc1pXSWdSRzk0YzJWNUtUQWVGdzB4T1RBMk1ERXcKTURBd01EQmFGdzB6TVRFeE1UVXhPVEV4TlRWYU1Gc3hKekFsQmdOVkJBb1RIbTFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCalpYSjBhV1pwWTJGMFpURXdNQzRHQTFVRUN3d25ZMkZzWldKQVkyRnNaV0l0YkdGd2RHOXdMV3hwCmJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQTlqUkR2Mkl5V1FaV3V1STkxdWdlbWF3R0RxK1BERUpUaVNDZ3ZhWWkwSEc0SEowNndwVjk4cDNTYWZVbgpwWU12ajlmY3lqbkJaOHlvcGU5VUQrakFSMVhEYmI1YlUvVU1iV3JkU29LWVM4a0dzYllDdDAzMHk4QWRaejY5CmI3Q2t2Y25IQUpPcDV4VXRYU1ExaEo3ZjQzZ29aaEdSbHJKU2cxSkpWKzJTTlUxMHNnM1V3YjNieGdBL1hrRk0KaUIzWnF2STRJNTh3RzBqakxVSEFmQ043eTFEQWFiVlNJQll6b1B5cjJxUUEvR0lHMWJsbzljWWdrRFlkb1d3UgpwZ21maHBLQ2NrNUxWZWdZejNBcSs4NkpPVGxHbWc5WlIxaUdNSEpNYklsUGJNdEU2MXovQjhtWUc5aUptUHJTCmYzNHVZVlJ4VDZTMkZWTkU1cDZVbHZXNHd3SURBUUFCbzNVd2N6QU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WUQKVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0V3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlNGaGxoWQpnRWZLVHBsVk9lbmVWRzMrM0lFL1RUQWRCZ05WSFJFRUZqQVVnaEp3YjIxbGNtbDFiUzFoZFhSb2IzSnBlbVV3CkRRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFESHNQT1p6WHh5eWMrZ1EwYkxSbG5WejNZMDV6cTNmV2gxeWp0U04KMmtQTFJ1aU02ZkZWUGlDV1VuUzk0cnNDeDV6Sk0xQnRNR3VNcUNMWGxmZERWYlZNcDM2d0NHMms5TWt3aE01dgpuTFRXTkkzclFZSUJnU0xvdFNTeTZYdUV5U1pJQlhUZ2RHODFYcG5pVjBUc1dKMjJEdGxlMlhOZUo1cHNnMS93CjdMbTZLdElkL3FEYUF5T1pLR1Y2Z21GL0YyNTB4RDkxYys3Mk9DUkFrK0x2WXhydFBVY3lwV0lNV2lMUEtlRkMKQnB6Q3BsNDB3c0o5YzVFMTdJcWNjMVVzanRwUnVXSlFRb0FBb3NhQ2RVUThXN04yMXdyNTcyTjFKcmNVOElBeAprN3U3T0Rrc24vK0NaODQ2N3dYclB5OXZGL3F2QkxtYWVFMWswd3VnTldlSnZNT0JLcGRKNG5iS0VCbU5xcmpMCmRRM21aTW90ZWNlelRDY29WYmRhdC9NVHNKR3hPSG42ZExoeHlKQzQ5K0FxbjJ2OGJ1ajZEbk56M3d3VHZxdXUKOGJEOW83SzlHdmRaaEtBNUxISmpFOXNkdmxzZVpNUnZqUGVnUDRWeWpaWmlBejBFUW04d292MHYvK2J5d2RUZgp5QjQ4eVJjSVdzdzZyU3BNdHR5ZU1neGJiQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_AUTHORITY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRRDJORU8vWWpKWkJsYTYKNGozVzZCNlpyQVlPcjQ4TVFsT0pJS0M5cGlMUWNiZ2NuVHJDbFgzeW5kSnA5U2VsZ3krUDE5ektPY0ZuektpbAo3MVFQNk1CSFZjTnR2bHRUOVF4dGF0MUtncGhMeVFheHRnSzNUZlRMd0IxblByMXZzS1M5eWNjQWs2bm5GUzFkCkpEV0VudC9qZUNobUVaR1dzbEtEVWtsWDdaSTFUWFN5RGRUQnZkdkdBRDllUVV5SUhkbXE4amdqbnpBYlNPTXQKUWNCOEkzdkxVTUJwdFZJZ0ZqT2cvS3ZhcEFEOFlnYlZ1V2oxeGlDUU5oMmhiQkdtQ1orR2tvSnlUa3RWNkJqUApjQ3I3em9rNU9VYWFEMWxIV0lZd2NreHNpVTlzeTBUclhQOEh5WmdiMkltWSt0Si9maTVoVkhGUHBMWVZVMFRtCm5wU1c5YmpEQWdNQkFBRUNnZ0VBWk9ML3krSEtMYzY2SlhSbDBMVm5MS05nREE2R2VJaUpRSXk5TVZsdHRLcVUKdml6emtoNjk4SGdaYTgvSWdqc2lkemdHUWx1dVZBRjZMaHpHL29ucW1KQ2ROMUFramwvQXl1bGFhcGpmSFZidgp4a3lHQ21VSVphR0Fxdmo3bVZQeC9jODhHNUZtc3NscndGb0JFQ29tSmtqcmpQK3YvK2RzaG1GbXFvQXdSR1IrCkp0ZW1xTlo3QWNwajhzV09ZeWQxZDlLbWtxS1RlaFZTSmpUaExlNjhvWXpxV3JxZWtVY2psbkI0a2ppbEU5VzAKYm15N0JqQlJqTlRGTWtSRUQ0eWtWUXlscGVZd1JXQkhYdzUxMlVVQVYxQnEyb0k0TGJoc0xYR1U2YXZSKy9XagpoemhKQ3ZpUTlxSUJ1OVhsRWtkcjdrQjVOQVVOd25pZUJhRE1VZmpxd1FLQmdRRDVrV3RtWmk0T3U4T1Z3QjF5CkZraE93T3RyM1oyTjBTOVZJbjAwc3ROTVlUVGNxT0J1Ynl2Y3RPdzA4UDJDVTVRcUtxRzY5QUtPRlBubm0vOEkKR1Vvc2k1eEh3S2Q3MTdoN1VhK0VTdG9GNkRDemZhR1BadXkrN0JnVFloeS96cjA5L0VJYkRPZHBOZEpmbis2ago1K0lDSjVqdEJRMUVUZXRJRTVQbWZVMXRvUUtCZ1FEOGpLYXYrZGRIUmwvMGZGN1plWit5TnZheGlCWGhXZkh2ClVXZVVaOXlKK04vbXhOckpqYTkzam5aZzFCTnIrdlYxUzNXTEwwN01wZm9HZ0IzWW82K3hXSlVhamRreTJMdE0KeGwxU1VmSERBRmQ1bWpGWVNTM3IvUGJxNDdJQ2hFK0ZmYndWNk9PNlpkYW1US3Y0TjFncUpvZWl0d2hvcEVGeApPYjBybm9DajR3S0JnQVB6NTYyUmhMMDdBQmdKR081THFBMkhSTE5LcVVvcnZBSXZMNmg4QkppN0dXazlTNEMwClJnK1MxZ0xvcGp0QU02S1BWa3h0dlBTZkpHNGtyRjltZHlSSmVjb3hKUFh6THJyVlNtQmdCeC84MDNpa1RzREUKc284N2tnNE1pY1FIOUR0ZEdYYndOMklWTmlYSmxMQUg1aTUramcrQyt2alAreUFESDE2Uk1YN0JBb0dCQU80WQpSRVgveTMvOHp4WVY4dTRoQmZma2JhdHQyd0w3NDJWMlg2ckFTR0VqYXlPTFQ2RlpuS1dnZitaRnlwR3dwWjBSCnFSMnhXaDhDRTdmeExUSkRENjZwRHRsY0Jmc3o3VkV5YW1UanNJUGhYSmJlVWNza0l0RXJTamFrdC93N2RTVXIKSnhtWTJLbXd2UzlIZFpHcnk4amhUbHFQS0xST3R3dmlIWUIwREY5MUFvR0FkeDJ3TGllTzVUcThBdkZhOXVydApCaVhwVFlMQ2JaWVBGZkVYTmZCYkt2NmFiWExBd2ZyRkQ1dkdrM0pFY2JqUTlnbWN6YW53QTFkUVhmN1NJLzRwCkZrUWhaSjhhdGJEaWl3SEVaeHpUeSt3cGx6OVlSN2tNQ0hkMndacXBsRCt1eXVxRWtZVVE5R09YZ2IzSUthVk4KVmd4QnJWSzlCNjdXM3FQZVRYMWxJdFU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + COOKIE_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + DATABROKER_SERVICE_URL: https://pomerium-databroker:5443 + DATABROKER_STORAGE_CONNECTION_STRING: postgres://pomerium:password@postgres:5432/test + DATABROKER_STORAGE_TYPE: postgres + DEBUG_FORCE_AUTHENTICATE_FLOW: stateless + DOWNSTREAM_MTLS_CRL: LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tCk1JSUNXakNCd3dJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBNk1SNHdIQVlEVlFRS0V4VnRhMk5sY25RZ1pHVjIKWld4dmNHMWxiblFnUTBFeEdEQVdCZ05WQkFNVEQyUnZkMjV6ZEhKbFlXMGdRMEVnTVJjTk1qTXdOekU1TWpFeApPRFExV2hjTk16TXdOekUyTWpFeE9EUTFXakFqTUNFQ0VFWTlqblU4Vmt0Mk1ZdWVza1JkN2J3WERUSXpNRGN4Ck9USXhNVGMwTjFxZ01EQXVNQjhHQTFVZEl3UVlNQmFBRk5IMU5BejhVajI0UGhDR2RCa0dpMENNUUdNTE1Bc0cKQTFVZEZBUUVBZ0lRQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQTR3M293NGoxRGF1ZmlCQlhoZEMwRUN5WQp6RHhPdUFDZFI0enlvWWJqTjFnMmtjMGJ1Y2hKNytWMGVUWS9SblNOYyt1cU5ZK0xZcHJYUXF1WktscjlkRlVyCnZKL3BYSit1eUxSL016ZWhpVHIzSG9UTENQbGlLWkREYXlQbW9admFxSEQ4SW9HRW5RWDZrQ0Vob3BiN2d0cUoKVTdUZkhhZXhpMHA0M0ZIMDBnblpmYURNa2NBZDh6Q2xzRVhVckFGQ1FSRDFNNVB1Q09UTzdDZVFjSTUzdUJ2ZAo4YUd2eUhsS0EvMk8xN2duaU1uZ2NvQ083Mk5BVWx0SnpNYnVncWVYT29pR0hZb1NzS1RiWTdNZExoWTNNRUJhCjNaa0NGZ3QzSExIVHo1UzBQZUJWclQ3L3k3U3o1Y2owUUEwSktMM0ozcHNuZ1ZicFM0b0h1NmN5dmcvLzdOZEcKS05CcWRhcytLUEFzbVYrM3k2NENyMmhuditXc1dqaXV4RGdJRUZ6cFFPY3lOT1p6bUlTQUN3N1lYandGdUluZQpPaWlNdVlzLzJOdndRMU9QZnEzamczSWY4a0JVY1NWaCtUZTRGSTMrMDd0V1V2TjZuVllDNFZtWEFjRzFIdXhRCkdubmU5ZjVoZ0VKUFZmTFQrdUozMVZWMTYrdkJuWkQ4NURaSlRyRE0KLS0tLS1FTkQgWDUwOSBDUkwtLS0tLQotLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0KTUlJQ05UQ0JuZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREE2TVI0d0hBWURWUVFLRXhWdGEyTmxjblFnWkdWMgpaV3h2Y0cxbGJuUWdRMEV4R0RBV0JnTlZCQU1URDJSdmQyNXpkSEpsWVcwZ1EwRWdNaGNOTWpNd056RTVNakUxCk1ERTFXaGNOTXpNd056RTJNakUxTURFMVdxQXdNQzR3SHdZRFZSMGpCQmd3Rm9BVUN4UTJjQmE1WXpxVnphbXAKaU5DeDhLd0ZGeVF3Q3dZRFZSMFVCQVFDQWhBQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQ1lhbXg4cE0rUgpDbHlza2N1N291aHUvUjFKeTFuV0d5V3RLcGhZcTBYRmJPTGxuazJaN2VEZkFYOEVlajJGYXZxeHphcFIyeDJPCjRpSk5EQ21pd1lZWVVTMlgyTEozclJSSlh5WHZXaHRmSHJ4VVJkNkJpdEMySVhweWtCdFZsZjN6QW5aOEdaRlEKUzFqZGZ5TE11RUFpRHdJYWkzWXQ4SHNEcC9xRzA4OW9YY29TdHlRZy91UnBtV3kwNUE5dUNWT2ZOSFNMU1p1OApscjRxYXRsZXUwd1diVjFhbUw4dE85eDRDUmtPMG8xWWFRcTREb09ydVByKzNOa1RtUHZHaWRoM0Y3MVY2SUVBCmgrS3pkYlJYeEZtQ0NXTFdtcEpEY3JnUjdLVXFaT2hVVXQrRFVxYXFoVjQ0cUkwbnJwUitRWkxvaG9Eb3I5THcKSyt1ZmozbjI5ZVNSWCszUHgrb1ZXUFQ4WVpQMnVLUGRpemk5Nm1lMmpXVHI1MXg5QWpFb0pEc1RuWVJsOSt1WQpTaGlVeFduVGRRc29va25JZmNTLzB6ZmdaODdHdlVWemluQ1F6SnB3VnhkNEFsdDhBbFIrZlhBcU5Jb09ndXl2CnAvQ3RSVm5qVkU3bDdIVy9oUVJxMUowaWpDQ0t3bXlmL0tUZDZFSzRUZHJ2YlgvVTltc1ZNOFk9Ci0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0K + ENVOY_ADMIN_ADDRESS: 0.0.0.0:9901 + GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT: ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ== + GRPC_ADDRESS: :5443 + GRPC_INSECURE: "false" + IDP_CLIENT_ID: CLIENT_ID + IDP_CLIENT_SECRET: CLIENT_SECRET + IDP_PROVIDER: oidc + IDP_PROVIDER_URL: https://mock-idp.localhost.pomerium.io/ + JWT_CLAIMS_HEADERS: email,groups,user + LOG_LEVEL: info + POLICY: Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy1pcC1hZGRyZXNzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovLzE3Mi4yMC4wLjUwOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNraXAtdmVyaWZ5LWVuYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogdHJ1ZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1kaXNhYmxlZCIsCiJ0bHNfc2tpcF92ZXJpZnkiOiBmYWxzZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1lbmFibGVkIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3Qubm90cG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly93cm9uZ2x5LW5hbWVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNlcnZlci1uYW1lLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZW5hYmxlZCIsCiJ0bHNfY3VzdG9tX2NhIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVV5UkVORFFUQkRaMEYzU1VKQlowbFNRVXhrT1VkaFNsSTVNbkZwTjNGTU1XVklSMDAyU3pCM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYY0taMWxOZUVocVFXTkNaMDVXUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZ6VFVOdlIwRXhWVVZEZDNkcVdUSkdjd3BhVjBwQldUSkdjMXBYU1hSalIwMTBZa2RzZFdSWVoyZExSVTVvWWtkV2FVbEZVblpsU0U1c1pWTnJlRTE2UVhoQ1owNVdRa0ZOVFV0dE1YSlpNbFo1Q21SRFFtcFpWM2hzV1d0Q2FsbFhlR3haYVRGM1dYa3hjMkZYTlRGbFEwRnZVVEpHYzFwWFNXZFNSemswWXpKV05VdFVRV1ZHZHpCNVRWUkJORTFVUlhrS1RWUlZNazFVUW1GR2R6QjZUVlJCTkUxVVJYbE5WRlV5VFZSQ1lVMUpSMFJOVWpSM1NFRlpSRlpSVVV0RmVGWjBZVEpPYkdOdVVXZGFSMVl5V2xkNGRncGpSekZzWW01UloxRXdSWGhNUkVGeFFtZE9Wa0pCYzAxSk1rNW9Za2RXYVZGSFRtaGlSMVpwVEZoQ2FreFhlSEJpYmxZMFNVTm9SRmxYZUd4WmFVSkZDbUl6YUhwYVdHdHdUVlJOZDAxUldVUldVVkZFUkVOd2RHRXlUbXhqYmxGbldUSkdjMXBYU2tGWk1rWnpXbGRKZEdOSFRYUmlSMngxWkZoblowdEZUbWdLWWtkV2FVbEZVblpsU0U1c1pWTnJkMmRuUjJsTlFUQkhRMU54UjFOSllqTkVVVVZDUVZGVlFVRTBTVUpxZDBGM1oyZEhTMEZ2U1VKblVVUlhXWEJXWlFwQ1UyNWxaVEpqUVVKWmIyWlRiMWQ0UjAxNVJtRk5VVEJ1U210Wk1GVlhUVGxqYTNsVmFEZFdabWRPS3k5aFJsTlhNbHBUYlZoMWRqVmtjbU53YVRJd0Nub3paV3hvVUZSbE9UaGlRVTVpYWlzdllta3dNREUxVVZkdVRXVnVTekExV2tzMmNVUjBSbmR2TDBoV1F5OVpZMkZ5ZFhVNU5pc3hTakowYjJWWGRVVUtkSGxyVnpOTlEzQkRNWEJJV1ZNMVp6bHBWa1JyY0dSeWVtNTJXRXRzV1hWVGFXdHFjbW8zU3pWMGIybFVkblZ0T1RkTWVFdHJkV28yUkZocVlYQlFSQW8xZG5SbFUwNHhaRkZuVHpsRFV6TnpjV3hqZDFsQk5sSnFWVWgzV1RKV1JXZ3lZV1JRTXpkQ1duSmFkMDhyZVVweE9YRkdOWGsxUjJ4bmFUaHNUalJqQ2t0c1NXeEdWWE12ZUZOd1VYTjRUbUpPVVZoMFRqbHRhelJwYlZsc1drZDZXVmxpWW0wclptOUNWbEJRWW05aE5XcFdkMHRFY0ZvMk5XMVBjemRLUjFBS05ubHFLemRXTjFWQ1RVWndWeXRuUzIxS2RHZG9MMnRyUVhneE9EVm9PVE54ZDB4R1VHTTRMMVEzYmlzclVERmlkU3RtWVd0WVVFZFFSVEl4Y2tSbFRBcFFibFZ0ZFdOSlduQktielZPY0ZsV1VYWTBWM1pVUzNFdmVrMVNPVk56Y0hveVVFWktia1ZTVkdaVWRuRXJSakZ4TTFwT1lXWkZlbWxRYzBJNWIyVlRDbTVxZUhkdFlWcFBVMVl3ZGxoeEwzRmxiM0Y0TkhZMlRVSjZWa0ZaTUM4NFVqSk1ZM0JLTkhWbk1FOWFNM2N3WWpKME5ubHZPRFpRTlZFNFEwRjNSVUVLUVdGT1JrMUZUWGRFWjFsRVZsSXdVRUZSU0M5Q1FWRkVRV2RKUlUxQ1NVZEJNVlZrUlhkRlFpOTNVVWxOUVZsQ1FXWTRRMEZSUVhkSVVWbEVWbEl3VHdwQ1FsbEZSa3hqV1RoRmIwNXZaazFqY25KNGVubDRTVzR6VnpaYVQwMVdXRTFCTUVkRFUzRkhVMGxpTTBSUlJVSkRkMVZCUVRSSlFtZFJRMXA2UkVOMkNrdEpTRmd6UjNacVRsTlpOWGMxWWs5dU5FVXpkemRSU0ZBd09VRkNhbFF2ZDNWVU5FeEVhMXBJU2sxdGJISk1iek56T0dKamMxRXdjMDFFTVZrdkx5OEtjekEzWTNBMGVGbHNjVVEzUWtFd1FXTndkbGxXV1hFMU9IaExlSE52UTNkV1dHMUhOV05GWlU5dldtMVhaak54V1RKdFV6aGxWemsyZGs5R2NtUkpZZ3BNTkU5R05IaFpWVTlOVW5GQlQwZEJRWEkyVm14UE4yZFlZVFF3TmtoNmNuTkJNV2haV25keVpWaG9UMVJEV2xwUVdrOVZia0YxTURWVFNFWmtaMkZOQ2xSS1RrSXZiekF4ZEhCM1VXeHlWSGhPYldaeWIzQnZUM3A1ZFhaSU1IcFZNbEp5VFhNd0swVmlUM1ZETkVFeVkxRTRNMFJKUm5oMmNUWTNiSGxWTUVFS2N6RlJOblJTVFRBclZVUnRTazlNZWpOVFpHZE9LMFF3TUdoamRYVnFPVEpIVmpSaVNEaENabmxWZGpoT1Exa3dka1JwYWpCVVUycHFOR00wVVhSak53cEpVRXhVV2pKbk5UUTFiMk42YUU1blFXMVVOMlFyUWpWSmJubG1hVk5KUzJWdFdIRmxjekpxY0dsQlpucFFUbXc1UWxaNGMyRnJZM012V1hwdldYTXhDaXR4VkdwQlYzVmhSSE5MYjJoRmJrODBRa3AxZW5Zd2VISmpaVFF3Wlc1U1oxaDVSMGRHZGxoMU1uTTBSbGt5ZGtweFZGTnZObmx6UkZkdWFFa3pURmNLWkdObk5rOHlSalJCVUVOSFIyVTNlbk4xY1dseGEzQmphMjVDWVdKbmVrVnpPV1p2U0hFeWJXWnZOMWhwUlhwbFpFMU9PRUpPY1daVFlrRTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiLAoidGxzX3NlcnZlcl9uYW1lIjogImh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL3VudHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZGlzYWJsZWQiLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtcmVxdWlyZWQubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2ExIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2EyIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVZCcWRtZE1Za1ZKVm1vdlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjVUVUkwV0VSVVNYcE5SRmwzVDFSQmQwNUVVWHBQUm05WVJGUk5lazFFV1hkUFZFRjNUa1JSZWs5R2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVNYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlF5ODRTMjluTWxwNk9HVTJPRVZIY0dacFdFNDNkUXBZWjJGMU16aG9Oak41WkhOd2RXTnlhbWgwYmxOVVYxaDBTRTh4YUZsTWJWVlpWMEZsZDJrM09XbEhXWHBQZFZsblYwTkVNMk5HZUdRcmRFMUxUSEpDQ25sdmNtbEtNMHRwYjFSMFdUQndiWGxNUkVveFZGaE5VMkZHUjJkdVduRnFXRWh0YWsxMmFXOHdlQzlxVVU1clEySlphMFpDUjFGVFdscDJhMEU0YzFFS2JUVkJjMUpFWlVsVlVHdFFiR2hHVFc1aU1uZzBhVkpqVEVKUU5ucEVUa1ptV0N0NU1YRlRiMnhMWW1nelN6a3ZSVE5RVkRSVmJtcGhPR2RQWW5wRFNncHVjazlqUmpWVFFuRlVUMnBTU0dsbUwxTXZkMW81VkZOR1YzcE1iWEZIVEdoeE56TlNZV2g1VkdsaFdWQTBObFYyU21oeVRtSTFUVzg1U0dKaU9UUXZDalI2VXpWQ01scDFielJ3YzJoVFdrUlhjSEYzZGtKbFkxRk9NRlpoVEZaMlNYbHRkVk41WnpWVWVuVklOR3QwVFRCd2RIcDJObkpZYVc1RWJHRTNjbm9LVFhVdlJuSkdWbEZRYTNOUGFGUkVkRFZWUTFOeFQwUjNVRnBwVHpkbk5WTlVNSE1yYWsxd1luQXhXRTQ0UzFBeWNISjBSV3hWVjJSaFluWkliR0l3VFFwRU1rVXdhRWhXYVRRME5GbHJVWGhhWVVOdlpXUXliMkp5VkVJeVJHWXlRM2RJUVZSblJrdDJURVl4VTBkVE1sRTVkakJ3WWxWak5sb3JNRzg1TVRKaUNtNVNaa2Q2YVRKd04ybENjMWRWVEhWSlRra3pibUpPUVhwc2JWZFFiVWRwZDFZeFUxa3hXVEJrVlRoRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWkJjMVZPYmtGWGRWZE5OZ3BzWXpKd2NWbHFVWE5tUTNOQ1VtTnJUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNWVFpaYVZKWVVUUnFhM0p4ZFdkMGRVeHFNbUUxQ2tGUksxVlNVR3htYTBaR1RqQkNSSEJYUTBsNlZqVXdkeXRaTVZwMFNESklka2RZTkRSNlJHcGlVVlIzZGl0QlZUUlVLMFkzTlVNNFVHNWpOWGwyV1c4S2RqWkdTVTFQVDFwSmNuWnBiRzlyZVZabU0yUkxVa016V1RKalVXRmpOSFUyTkdGUmF5dFlVaTl4YW1sWmIwWkxNRUk1ZVhjNFZVRXpUemQzUVRRMllncGpaVzlhVlVaYVRHTTFiMU56YmtJNWRGYzNNbWs0YkVWclFrWjBNbGcyTW5KeFUxRk9SMWwwZWtOV05qUmlUU3RsZWtOelFsbFFZVU5KUzFjd1FWSkNDakJEWWs1R1IyOWhVRXA2UVhWMVIzVnJkazlqUWtSNWRFb3pVa3BDV0VvM2JETTJNalpMVGtkNFEweHpVazFqUkdOVWVIWllRbVkzWjBaWGRHVjBWemtLYTNWdlpuWnNTazFwVUdrelFrUk5iQzlHUVVVMWFXdHFNRlZTTkRkeWFsbFZlRTB5VTBZMlJpdDZPSEJGWTFCalpWQlRXWHBEYkUxRlEwdzVZUzh3TWdwSk1USnpSVzVWTTFKbUsxSndkMU5VU0ZORGFubFlSM1JYYkRSa1IxTktiRTlGYkhkeVdVMUNRWGxZTmpKa1prWlpPVWRGUjJkSVEyNTVUekYwYWpNNUNrcEphR2RwU1VKRlduTkNURGxNVDA5TE9IWlVXWHBhTld0Q2Exb3hUbGhvTWtKcU0yNVRMMEl2VFRWNmIzUndOQzlUTmxBek1FeHBORFF2U21Kd2RtTUtOekJtV0hKMVJqWTVlbmRRVFdNMVlqTjROM2xZTjJoUVRGbElhekJvYlROQ1QxZGhiMlJRU1RSME1EMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZW5hYmxlZCIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJjb3JzX2FsbG93X3ByZWZsaWdodCI6IGZhbHNlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZGlzYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWVuYWJsZWQiLAoicHJlc2VydmVfaG9zdF9oZWFkZXIiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWRpc2FibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogZmFsc2UsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9yZXN0cmljdGVkLWh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF9kb21haW5zIjogWwoiZG9ncy50ZXN0IgpdLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoicHJlZml4IjogIi9ieS1kb21haW4iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF91c2VycyI6IFsKInVzZXIxQGRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktdXNlciIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJPVU5EX1JPQklOIiwKInByZWZpeCI6ICIvcm91bmQtcm9iaW4iLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJJTkdfSEFTSCIsCiJwcmVmaXgiOiAiL3JpbmctaGFzaCIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJsYl9wb2xpY3kiOiAiTUFHTEVWIiwKInByZWZpeCI6ICIvbWFnbGV2IiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIlgtQ3VzdG9tLVJlcXVlc3QtSGVhZGVyIjogImN1c3RvbS1yZXF1ZXN0LWhlYWRlci12YWx1ZSIKfSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImFsbG93X3dlYnNvY2tldHMiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2VuYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZGlzYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJlbmFibGVfZ29vZ2xlX2Nsb3VkX3NlcnZlcmxlc3NfYXV0aGVudGljYXRpb24iOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Nsb3VkcnVuLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIngtaWRwIjogIm9pZGMiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vYXV0aGVudGljYXRlLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0bHNfc2tpcF92ZXJpZnkiOiB0cnVlLAoidG8iOiAiaHR0cHM6Ly9wb21lcml1bS1hdXRoZW50aWNhdGUiCn0KXQ== + SERVICES: authorize + SHARED_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + SIGNING_KEY: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + SIGNING_KEY_ALGORITHM: ES256 + image: pomerium/pomerium:${POMERIUM_TAG:-main} + networks: + main: + aliases: + - pomerium-authorize + ports: + - 9904:9901/tcp + - 5446:5443/tcp + pomerium-databroker: + depends_on: + fortio-ready: + condition: service_completed_successfully + mock-idp-ready: + condition: service_completed_successfully + postgres-ready: + condition: service_completed_successfully + trusted-1-httpdetails-ready: + condition: service_completed_successfully + trusted-2-httpdetails-ready: + condition: service_completed_successfully + trusted-3-httpdetails-ready: + condition: service_completed_successfully + trusted-httpdetails-ready: + condition: service_completed_successfully + untrusted-httpdetails-ready: + condition: service_completed_successfully + verify-ready: + condition: service_completed_successfully + websocket-echo-ready: + condition: service_completed_successfully + wrongly-named-httpdetails-ready: + condition: service_completed_successfully + environment: + AUTHENTICATE_INTERNAL_SERVICE_URL: https://pomerium-authenticate + AUTHENTICATE_SERVICE_URL: https://authenticate.localhost.pomerium.io + AUTHORIZE_SERVICE_URL: https://pomerium-authorize:5443 + CERTIFICATE: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVYekNDQXNlZ0F3SUJBZ0lRWDBCTFVEUmE0cHI3TFlueGRkYzRKREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEU1TURZd01UQXcKTURBd01Gb1hEVE14TVRFeE5URTVNVEl5TjFvd1d6RW5NQ1VHQTFVRUNoTWViV3RqWlhKMElHUmxkbVZzYjNCdApaVzUwSUdObGNuUnBabWxqWVhSbE1UQXdMZ1lEVlFRTERDZGpZV3hsWWtCallXeGxZaTFzWVhCMGIzQXRiR2x1CmRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNrd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUIKQVFEYVhWcVp4MXNXLzREdTlBdTJnSjNsT2JubVlzQzhpV2JLSTJ4UWVrSWljc0NHMm5qYkVPejMza2FuL3VsaQpNbXh2TEF2UUcwTjhDU3djSzlhakFydHJvbE96S2NZajFmUzNmK25yRWZpa3NiemNHNFFiMDc0MUtlcTJLZFJkCllwR0E0TSs2Y0c0QTQvVnhDOWxnNU5UMDJXd2tYUlRUVWVjUWJIdTV5blEzcjR1MWk3R3RCb3RDODRQVGlFdXUKUVpEbFcxMUx2UjlTUW5ZenVZUmM0aG9QR1pKN1dBNE1jdlIxY3MyUHZWU3FOWjc4aGZDRGgyQ21mYUxGQVhxVgpSUk5sbUVlclMvWjQ1N3JnbHhrOTlKSlBrd1FTWm43KzBrcHJKMm9ubmRtUFpxN2JnT1FOdG13WFQ0cTRjSEFCCjFyTWRGTEdXODJqMGFnbmhMdXl4MEtuTkFnTUJBQUdqZGpCME1BNEdBMVVkRHdFQi93UUVBd0lGb0RBVEJnTlYKSFNVRUREQUtCZ2dyQmdFRkJRY0RBVEFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGSVdHV0ZpQQpSOHBPbVZVNTZkNVViZjdjZ1Q5Tk1CNEdBMVVkRVFRWE1CV0NFM0J2YldWeWFYVnRMV1JoZEdGaWNtOXJaWEl3CkRRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFGSkovQzVRT3hBRnFxMXRjZDN5REdPbzB6V29NejBzZDZEZnQ1cVAKTXRaOWx5WTU4dnpZN1pIWEVwVzU2Mm9hYmpuRmRTMVYyZTFtTFM5ZGRFQkZIdzRxQm1hZmZHcFVQdzZkTndXawpCSmJVRUhXVFhvVmRaejhYMUExei9mUkNEY0NxRW50amZkUXo3NFkrZFZZcDhzQ215UmVIdy8rQ2tCMmtNblRZCmticzJBMUxpYnZ4ZUlrOVRmN0k0THZFbjNSRXZ1bjZjcSs4R1gvN1QxTm1KUS9sSkZjS0hrSXpvZFVBUTR4TUcKL29xUXFFalhHalM1cTRKMGNjVExDMlQ1Y0VsSDlHdnFwV3Q1L3RJSi96aTlFajl2UVROZVJ4Nllsc2RGNXA4OQpmbm9EWkZUb3BteXF3MGdySk5EN25mNU93R3BTNzlwN1NFcmUvWi9QTmlTSmdWNlU0L21IY25PVXk2UVk0SjBjClhqd2laK1J6cjlRam5DS2xPMEprNDI1U0J2Q0M2L0ZDcHViQ1JpSjViR0Rkd1k3bE9ydmNRV3R2NDJ1WUp4UEEKeG0yM0Q2WWowdjQrVWhNMWwvVURGdjlFcGgwSXdGM1I5Sk5WOGYvZUszM0VDc2QyQW5PWDkrTVljMG0weHRJMwpVMUYwM3czTlR5c2hKYXQ0ZHp4QytBbTBaZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_AUTHORITY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRRGFYVnFaeDFzVy80RHUKOUF1MmdKM2xPYm5tWXNDOGlXYktJMnhRZWtJaWNzQ0cybmpiRU96MzNrYW4vdWxpTW14dkxBdlFHME44Q1N3YwpLOWFqQXJ0cm9sT3pLY1lqMWZTM2YrbnJFZmlrc2J6Y0c0UWIwNzQxS2VxMktkUmRZcEdBNE0rNmNHNEE0L1Z4CkM5bGc1TlQwMld3a1hSVFRVZWNRYkh1NXluUTNyNHUxaTdHdEJvdEM4NFBUaUV1dVFaRGxXMTFMdlI5U1FuWXoKdVlSYzRob1BHWko3V0E0TWN2UjFjczJQdlZTcU5aNzhoZkNEaDJDbWZhTEZBWHFWUlJObG1FZXJTL1o0NTdyZwpseGs5OUpKUGt3UVNabjcrMGtwckoyb25uZG1QWnE3YmdPUU50bXdYVDRxNGNIQUIxck1kRkxHVzgyajBhZ25oCkx1eXgwS25OQWdNQkFBRUNnZ0VCQUxmYjlLWVllalVDQ3dDbmtaa244RXFLY1dGdmN0TU1hZlQzSUlNZWZjTGQKbGdlMXVoN1J3SVR2cmRSVHlSUTZXcHk4bkhHc0V3VkQvOVQwZ0hPZW9Fbi9VclEvRHlzclFqS2pURVQyUzhINApPWW1telhSVXRBbTFjbi9ROXBOdXBBNjh1NHRDa1F6RTQrczhTOXJPc2hRN1lWZTQzQWtXSkJUckVyNGJuZ0VuCmlyU1ZOdDhPQ0E0emxtR0VEYzBEOE1mMTNCbUpOditmNmtpa1p4d1pTUzNKSUwwcWUvcENvYWE5KzMyaVJGRngKVGo2cmlrTHkyYktxMUgwYW02dXViR2UxUEx0ZWpXS3AvcmRQejIza0RVTEJUSS9IZXU5dVlxY1pGZUNlQ2dIeApnWkxvd0d1emJVd0xUQUZqZ3FqSStMdlBuazZyR0dxaURpTkV5SEdqUWFFQ2dZRUE2dnNwQ212SE9iT3JtaU1MCkhpNWFNSTlDQW80c2RXWU5sd2tZdVQyK2tyT0VpM3d6RHNLaVpuUmxTWE1SV2YzVHR1OW9ETkVuNVk2dE9NdHUKVzg3OTUwNEtONmU3Ulk3aXZCQThPSlQxUFd3M3BySEJ4QkNmeEQxd2J3V2MyUGIyQlZnQzd1U01KWHR4UVNaOApLRStmaEwyMHVmL1NMZ0Z3ZTEwVURMbUVqVWtDZ1lFQTdlV3hnbnBpbUZ2UFRZYTBvNHFGQ2RueThPSmQ5V2VMCitZQkkxOWw0Q29yU2pqNkJ1ZmdzcWRDYUZKbDEwTnMwSzFTRldIMEM4Q3JkZkpvV3I4RllsVUphbXpWQUkvTGMKTnQrZG8xTmRCV2Q5ZnBTWk94S0dxOFMxNTZCRVV4cm9lbmdzNFU2bXRlWDMvMzhKbU9va3pYUlVMLzVOQS9BVgpGbFdEV1I0NWpHVUNnWUVBdVFaVFpwVS9KanhIWHZOQkNkN052WGJRTDFycnZ2VkF0akMvZXYwWFZrUnNsYmlTCks0a3VmeVlmcXhva0M0eEdiTUZPV09sSVZRVm5lRlVXN011c09ibkZhZFYxTEd3Nk5JTkVKL21Dc1g3SXcwVXMKb2NuRlE2eHRINzUzcG8rdllMM1FjWE1jdDFiZjhzRHUrbjdYeUpubitKMXJUalpyNzNkM0ZoM3VOYUVDZ1lBQwpCM2FISldJWDZKaVJFYmdTdVFpL2Q4Tnh1SXlTbmtwOFcxTER2SkFnanVTUzRBZWRQWGVzRHlKeFVJbkh1VWJ0Cm82L3JmRTE5SFBCOHNwZkU4Z0krYTYxNEszRWJuV094ZUNEUkZ0SHhUTnV1SzdoTzM2NlVZbjRtdHFBK2tUa3cKYWp2L3cvcjZERGNjVDhvV0t0RWJpNFY0VDFQNjE1NW1iVjVNY1V5T1hRS0JnUURJRFRnYnJGRE9sZ0ozOTVRNApwRWdsdjNUNDA0Wll0N05oUVFNd3FMaC9aYmZMVVhqUk8wZmI2VDZmOEV4L3Q4V1NaQnlVQ1NKcGloRzRXWTFPCnJlYWFhbzIwanVSMVdudU5mWDNiTVhNSEZ0ZEpDOFd1V3ZCK2MvcGttSDZRVFRjMXIySlJ3cEYzWXF0Mi9vVzcKRmFRbUdNNG8vVVBlSWhxaUhqMzZleDBwOGc9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg== + COOKIE_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + DATABROKER_SERVICE_URL: https://pomerium-databroker:5443 + DATABROKER_STORAGE_CONNECTION_STRING: postgres://pomerium:password@postgres:5432/test + DATABROKER_STORAGE_TYPE: postgres + DEBUG_FORCE_AUTHENTICATE_FLOW: stateless + DOWNSTREAM_MTLS_CRL: LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tCk1JSUNXakNCd3dJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBNk1SNHdIQVlEVlFRS0V4VnRhMk5sY25RZ1pHVjIKWld4dmNHMWxiblFnUTBFeEdEQVdCZ05WQkFNVEQyUnZkMjV6ZEhKbFlXMGdRMEVnTVJjTk1qTXdOekU1TWpFeApPRFExV2hjTk16TXdOekUyTWpFeE9EUTFXakFqTUNFQ0VFWTlqblU4Vmt0Mk1ZdWVza1JkN2J3WERUSXpNRGN4Ck9USXhNVGMwTjFxZ01EQXVNQjhHQTFVZEl3UVlNQmFBRk5IMU5BejhVajI0UGhDR2RCa0dpMENNUUdNTE1Bc0cKQTFVZEZBUUVBZ0lRQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQTR3M293NGoxRGF1ZmlCQlhoZEMwRUN5WQp6RHhPdUFDZFI0enlvWWJqTjFnMmtjMGJ1Y2hKNytWMGVUWS9SblNOYyt1cU5ZK0xZcHJYUXF1WktscjlkRlVyCnZKL3BYSit1eUxSL016ZWhpVHIzSG9UTENQbGlLWkREYXlQbW9admFxSEQ4SW9HRW5RWDZrQ0Vob3BiN2d0cUoKVTdUZkhhZXhpMHA0M0ZIMDBnblpmYURNa2NBZDh6Q2xzRVhVckFGQ1FSRDFNNVB1Q09UTzdDZVFjSTUzdUJ2ZAo4YUd2eUhsS0EvMk8xN2duaU1uZ2NvQ083Mk5BVWx0SnpNYnVncWVYT29pR0hZb1NzS1RiWTdNZExoWTNNRUJhCjNaa0NGZ3QzSExIVHo1UzBQZUJWclQ3L3k3U3o1Y2owUUEwSktMM0ozcHNuZ1ZicFM0b0h1NmN5dmcvLzdOZEcKS05CcWRhcytLUEFzbVYrM3k2NENyMmhuditXc1dqaXV4RGdJRUZ6cFFPY3lOT1p6bUlTQUN3N1lYandGdUluZQpPaWlNdVlzLzJOdndRMU9QZnEzamczSWY4a0JVY1NWaCtUZTRGSTMrMDd0V1V2TjZuVllDNFZtWEFjRzFIdXhRCkdubmU5ZjVoZ0VKUFZmTFQrdUozMVZWMTYrdkJuWkQ4NURaSlRyRE0KLS0tLS1FTkQgWDUwOSBDUkwtLS0tLQotLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0KTUlJQ05UQ0JuZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREE2TVI0d0hBWURWUVFLRXhWdGEyTmxjblFnWkdWMgpaV3h2Y0cxbGJuUWdRMEV4R0RBV0JnTlZCQU1URDJSdmQyNXpkSEpsWVcwZ1EwRWdNaGNOTWpNd056RTVNakUxCk1ERTFXaGNOTXpNd056RTJNakUxTURFMVdxQXdNQzR3SHdZRFZSMGpCQmd3Rm9BVUN4UTJjQmE1WXpxVnphbXAKaU5DeDhLd0ZGeVF3Q3dZRFZSMFVCQVFDQWhBQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQ1lhbXg4cE0rUgpDbHlza2N1N291aHUvUjFKeTFuV0d5V3RLcGhZcTBYRmJPTGxuazJaN2VEZkFYOEVlajJGYXZxeHphcFIyeDJPCjRpSk5EQ21pd1lZWVVTMlgyTEozclJSSlh5WHZXaHRmSHJ4VVJkNkJpdEMySVhweWtCdFZsZjN6QW5aOEdaRlEKUzFqZGZ5TE11RUFpRHdJYWkzWXQ4SHNEcC9xRzA4OW9YY29TdHlRZy91UnBtV3kwNUE5dUNWT2ZOSFNMU1p1OApscjRxYXRsZXUwd1diVjFhbUw4dE85eDRDUmtPMG8xWWFRcTREb09ydVByKzNOa1RtUHZHaWRoM0Y3MVY2SUVBCmgrS3pkYlJYeEZtQ0NXTFdtcEpEY3JnUjdLVXFaT2hVVXQrRFVxYXFoVjQ0cUkwbnJwUitRWkxvaG9Eb3I5THcKSyt1ZmozbjI5ZVNSWCszUHgrb1ZXUFQ4WVpQMnVLUGRpemk5Nm1lMmpXVHI1MXg5QWpFb0pEc1RuWVJsOSt1WQpTaGlVeFduVGRRc29va25JZmNTLzB6ZmdaODdHdlVWemluQ1F6SnB3VnhkNEFsdDhBbFIrZlhBcU5Jb09ndXl2CnAvQ3RSVm5qVkU3bDdIVy9oUVJxMUowaWpDQ0t3bXlmL0tUZDZFSzRUZHJ2YlgvVTltc1ZNOFk9Ci0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0K + ENVOY_ADMIN_ADDRESS: 0.0.0.0:9901 + GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT: ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ== + GRPC_ADDRESS: :5443 + GRPC_INSECURE: "false" + IDP_CLIENT_ID: CLIENT_ID + IDP_CLIENT_SECRET: CLIENT_SECRET + IDP_PROVIDER: oidc + IDP_PROVIDER_URL: https://mock-idp.localhost.pomerium.io/ + JWT_CLAIMS_HEADERS: email,groups,user + LOG_LEVEL: info + POLICY: Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy1pcC1hZGRyZXNzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovLzE3Mi4yMC4wLjUwOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNraXAtdmVyaWZ5LWVuYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogdHJ1ZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1kaXNhYmxlZCIsCiJ0bHNfc2tpcF92ZXJpZnkiOiBmYWxzZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1lbmFibGVkIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3Qubm90cG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly93cm9uZ2x5LW5hbWVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNlcnZlci1uYW1lLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZW5hYmxlZCIsCiJ0bHNfY3VzdG9tX2NhIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVV5UkVORFFUQkRaMEYzU1VKQlowbFNRVXhrT1VkaFNsSTVNbkZwTjNGTU1XVklSMDAyU3pCM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYY0taMWxOZUVocVFXTkNaMDVXUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZ6VFVOdlIwRXhWVVZEZDNkcVdUSkdjd3BhVjBwQldUSkdjMXBYU1hSalIwMTBZa2RzZFdSWVoyZExSVTVvWWtkV2FVbEZVblpsU0U1c1pWTnJlRTE2UVhoQ1owNVdRa0ZOVFV0dE1YSlpNbFo1Q21SRFFtcFpWM2hzV1d0Q2FsbFhlR3haYVRGM1dYa3hjMkZYTlRGbFEwRnZVVEpHYzFwWFNXZFNSemswWXpKV05VdFVRV1ZHZHpCNVRWUkJORTFVUlhrS1RWUlZNazFVUW1GR2R6QjZUVlJCTkUxVVJYbE5WRlV5VFZSQ1lVMUpSMFJOVWpSM1NFRlpSRlpSVVV0RmVGWjBZVEpPYkdOdVVXZGFSMVl5V2xkNGRncGpSekZzWW01UloxRXdSWGhNUkVGeFFtZE9Wa0pCYzAxSk1rNW9Za2RXYVZGSFRtaGlSMVpwVEZoQ2FreFhlSEJpYmxZMFNVTm9SRmxYZUd4WmFVSkZDbUl6YUhwYVdHdHdUVlJOZDAxUldVUldVVkZFUkVOd2RHRXlUbXhqYmxGbldUSkdjMXBYU2tGWk1rWnpXbGRKZEdOSFRYUmlSMngxWkZoblowdEZUbWdLWWtkV2FVbEZVblpsU0U1c1pWTnJkMmRuUjJsTlFUQkhRMU54UjFOSllqTkVVVVZDUVZGVlFVRTBTVUpxZDBGM1oyZEhTMEZ2U1VKblVVUlhXWEJXWlFwQ1UyNWxaVEpqUVVKWmIyWlRiMWQ0UjAxNVJtRk5VVEJ1U210Wk1GVlhUVGxqYTNsVmFEZFdabWRPS3k5aFJsTlhNbHBUYlZoMWRqVmtjbU53YVRJd0Nub3paV3hvVUZSbE9UaGlRVTVpYWlzdllta3dNREUxVVZkdVRXVnVTekExV2tzMmNVUjBSbmR2TDBoV1F5OVpZMkZ5ZFhVNU5pc3hTakowYjJWWGRVVUtkSGxyVnpOTlEzQkRNWEJJV1ZNMVp6bHBWa1JyY0dSeWVtNTJXRXRzV1hWVGFXdHFjbW8zU3pWMGIybFVkblZ0T1RkTWVFdHJkV28yUkZocVlYQlFSQW8xZG5SbFUwNHhaRkZuVHpsRFV6TnpjV3hqZDFsQk5sSnFWVWgzV1RKV1JXZ3lZV1JRTXpkQ1duSmFkMDhyZVVweE9YRkdOWGsxUjJ4bmFUaHNUalJqQ2t0c1NXeEdWWE12ZUZOd1VYTjRUbUpPVVZoMFRqbHRhelJwYlZsc1drZDZXVmxpWW0wclptOUNWbEJRWW05aE5XcFdkMHRFY0ZvMk5XMVBjemRLUjFBS05ubHFLemRXTjFWQ1RVWndWeXRuUzIxS2RHZG9MMnRyUVhneE9EVm9PVE54ZDB4R1VHTTRMMVEzYmlzclVERmlkU3RtWVd0WVVFZFFSVEl4Y2tSbFRBcFFibFZ0ZFdOSlduQktielZPY0ZsV1VYWTBWM1pVUzNFdmVrMVNPVk56Y0hveVVFWktia1ZTVkdaVWRuRXJSakZ4TTFwT1lXWkZlbWxRYzBJNWIyVlRDbTVxZUhkdFlWcFBVMVl3ZGxoeEwzRmxiM0Y0TkhZMlRVSjZWa0ZaTUM4NFVqSk1ZM0JLTkhWbk1FOWFNM2N3WWpKME5ubHZPRFpRTlZFNFEwRjNSVUVLUVdGT1JrMUZUWGRFWjFsRVZsSXdVRUZSU0M5Q1FWRkVRV2RKUlUxQ1NVZEJNVlZrUlhkRlFpOTNVVWxOUVZsQ1FXWTRRMEZSUVhkSVVWbEVWbEl3VHdwQ1FsbEZSa3hqV1RoRmIwNXZaazFqY25KNGVubDRTVzR6VnpaYVQwMVdXRTFCTUVkRFUzRkhVMGxpTTBSUlJVSkRkMVZCUVRSSlFtZFJRMXA2UkVOMkNrdEpTRmd6UjNacVRsTlpOWGMxWWs5dU5FVXpkemRSU0ZBd09VRkNhbFF2ZDNWVU5FeEVhMXBJU2sxdGJISk1iek56T0dKamMxRXdjMDFFTVZrdkx5OEtjekEzWTNBMGVGbHNjVVEzUWtFd1FXTndkbGxXV1hFMU9IaExlSE52UTNkV1dHMUhOV05GWlU5dldtMVhaak54V1RKdFV6aGxWemsyZGs5R2NtUkpZZ3BNTkU5R05IaFpWVTlOVW5GQlQwZEJRWEkyVm14UE4yZFlZVFF3TmtoNmNuTkJNV2haV25keVpWaG9UMVJEV2xwUVdrOVZia0YxTURWVFNFWmtaMkZOQ2xSS1RrSXZiekF4ZEhCM1VXeHlWSGhPYldaeWIzQnZUM3A1ZFhaSU1IcFZNbEp5VFhNd0swVmlUM1ZETkVFeVkxRTRNMFJKUm5oMmNUWTNiSGxWTUVFS2N6RlJOblJTVFRBclZVUnRTazlNZWpOVFpHZE9LMFF3TUdoamRYVnFPVEpIVmpSaVNEaENabmxWZGpoT1Exa3dka1JwYWpCVVUycHFOR00wVVhSak53cEpVRXhVV2pKbk5UUTFiMk42YUU1blFXMVVOMlFyUWpWSmJubG1hVk5KUzJWdFdIRmxjekpxY0dsQlpucFFUbXc1UWxaNGMyRnJZM012V1hwdldYTXhDaXR4VkdwQlYzVmhSSE5MYjJoRmJrODBRa3AxZW5Zd2VISmpaVFF3Wlc1U1oxaDVSMGRHZGxoMU1uTTBSbGt5ZGtweFZGTnZObmx6UkZkdWFFa3pURmNLWkdObk5rOHlSalJCVUVOSFIyVTNlbk4xY1dseGEzQmphMjVDWVdKbmVrVnpPV1p2U0hFeWJXWnZOMWhwUlhwbFpFMU9PRUpPY1daVFlrRTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiLAoidGxzX3NlcnZlcl9uYW1lIjogImh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL3VudHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZGlzYWJsZWQiLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtcmVxdWlyZWQubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2ExIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2EyIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVZCcWRtZE1Za1ZKVm1vdlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjVUVUkwV0VSVVNYcE5SRmwzVDFSQmQwNUVVWHBQUm05WVJGUk5lazFFV1hkUFZFRjNUa1JSZWs5R2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVNYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlF5ODRTMjluTWxwNk9HVTJPRVZIY0dacFdFNDNkUXBZWjJGMU16aG9Oak41WkhOd2RXTnlhbWgwYmxOVVYxaDBTRTh4YUZsTWJWVlpWMEZsZDJrM09XbEhXWHBQZFZsblYwTkVNMk5HZUdRcmRFMUxUSEpDQ25sdmNtbEtNMHRwYjFSMFdUQndiWGxNUkVveFZGaE5VMkZHUjJkdVduRnFXRWh0YWsxMmFXOHdlQzlxVVU1clEySlphMFpDUjFGVFdscDJhMEU0YzFFS2JUVkJjMUpFWlVsVlVHdFFiR2hHVFc1aU1uZzBhVkpqVEVKUU5ucEVUa1ptV0N0NU1YRlRiMnhMWW1nelN6a3ZSVE5RVkRSVmJtcGhPR2RQWW5wRFNncHVjazlqUmpWVFFuRlVUMnBTU0dsbUwxTXZkMW81VkZOR1YzcE1iWEZIVEdoeE56TlNZV2g1VkdsaFdWQTBObFYyU21oeVRtSTFUVzg1U0dKaU9UUXZDalI2VXpWQ01scDFielJ3YzJoVFdrUlhjSEYzZGtKbFkxRk9NRlpoVEZaMlNYbHRkVk41WnpWVWVuVklOR3QwVFRCd2RIcDJObkpZYVc1RWJHRTNjbm9LVFhVdlJuSkdWbEZRYTNOUGFGUkVkRFZWUTFOeFQwUjNVRnBwVHpkbk5WTlVNSE1yYWsxd1luQXhXRTQ0UzFBeWNISjBSV3hWVjJSaFluWkliR0l3VFFwRU1rVXdhRWhXYVRRME5GbHJVWGhhWVVOdlpXUXliMkp5VkVJeVJHWXlRM2RJUVZSblJrdDJURVl4VTBkVE1sRTVkakJ3WWxWak5sb3JNRzg1TVRKaUNtNVNaa2Q2YVRKd04ybENjMWRWVEhWSlRra3pibUpPUVhwc2JWZFFiVWRwZDFZeFUxa3hXVEJrVlRoRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWkJjMVZPYmtGWGRWZE5OZ3BzWXpKd2NWbHFVWE5tUTNOQ1VtTnJUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNWVFpaYVZKWVVUUnFhM0p4ZFdkMGRVeHFNbUUxQ2tGUksxVlNVR3htYTBaR1RqQkNSSEJYUTBsNlZqVXdkeXRaTVZwMFNESklka2RZTkRSNlJHcGlVVlIzZGl0QlZUUlVLMFkzTlVNNFVHNWpOWGwyV1c4S2RqWkdTVTFQVDFwSmNuWnBiRzlyZVZabU0yUkxVa016V1RKalVXRmpOSFUyTkdGUmF5dFlVaTl4YW1sWmIwWkxNRUk1ZVhjNFZVRXpUemQzUVRRMllncGpaVzlhVlVaYVRHTTFiMU56YmtJNWRGYzNNbWs0YkVWclFrWjBNbGcyTW5KeFUxRk9SMWwwZWtOV05qUmlUU3RsZWtOelFsbFFZVU5KUzFjd1FWSkNDakJEWWs1R1IyOWhVRXA2UVhWMVIzVnJkazlqUWtSNWRFb3pVa3BDV0VvM2JETTJNalpMVGtkNFEweHpVazFqUkdOVWVIWllRbVkzWjBaWGRHVjBWemtLYTNWdlpuWnNTazFwVUdrelFrUk5iQzlHUVVVMWFXdHFNRlZTTkRkeWFsbFZlRTB5VTBZMlJpdDZPSEJGWTFCalpWQlRXWHBEYkUxRlEwdzVZUzh3TWdwSk1USnpSVzVWTTFKbUsxSndkMU5VU0ZORGFubFlSM1JYYkRSa1IxTktiRTlGYkhkeVdVMUNRWGxZTmpKa1prWlpPVWRGUjJkSVEyNTVUekYwYWpNNUNrcEphR2RwU1VKRlduTkNURGxNVDA5TE9IWlVXWHBhTld0Q2Exb3hUbGhvTWtKcU0yNVRMMEl2VFRWNmIzUndOQzlUTmxBek1FeHBORFF2U21Kd2RtTUtOekJtV0hKMVJqWTVlbmRRVFdNMVlqTjROM2xZTjJoUVRGbElhekJvYlROQ1QxZGhiMlJRU1RSME1EMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZW5hYmxlZCIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJjb3JzX2FsbG93X3ByZWZsaWdodCI6IGZhbHNlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZGlzYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWVuYWJsZWQiLAoicHJlc2VydmVfaG9zdF9oZWFkZXIiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWRpc2FibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogZmFsc2UsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9yZXN0cmljdGVkLWh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF9kb21haW5zIjogWwoiZG9ncy50ZXN0IgpdLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoicHJlZml4IjogIi9ieS1kb21haW4iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF91c2VycyI6IFsKInVzZXIxQGRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktdXNlciIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJPVU5EX1JPQklOIiwKInByZWZpeCI6ICIvcm91bmQtcm9iaW4iLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJJTkdfSEFTSCIsCiJwcmVmaXgiOiAiL3JpbmctaGFzaCIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJsYl9wb2xpY3kiOiAiTUFHTEVWIiwKInByZWZpeCI6ICIvbWFnbGV2IiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIlgtQ3VzdG9tLVJlcXVlc3QtSGVhZGVyIjogImN1c3RvbS1yZXF1ZXN0LWhlYWRlci12YWx1ZSIKfSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImFsbG93X3dlYnNvY2tldHMiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2VuYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZGlzYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJlbmFibGVfZ29vZ2xlX2Nsb3VkX3NlcnZlcmxlc3NfYXV0aGVudGljYXRpb24iOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Nsb3VkcnVuLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIngtaWRwIjogIm9pZGMiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vYXV0aGVudGljYXRlLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0bHNfc2tpcF92ZXJpZnkiOiB0cnVlLAoidG8iOiAiaHR0cHM6Ly9wb21lcml1bS1hdXRoZW50aWNhdGUiCn0KXQ== + SERVICES: databroker + SHARED_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + SIGNING_KEY: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + SIGNING_KEY_ALGORITHM: ES256 + image: pomerium/pomerium:${POMERIUM_TAG:-main} + networks: + main: + aliases: + - pomerium-databroker + ports: + - 9902:9901/tcp + - 5444:5443/tcp + pomerium-proxy: + depends_on: + fortio-ready: + condition: service_completed_successfully + mock-idp-ready: + condition: service_completed_successfully + postgres-ready: + condition: service_completed_successfully + trusted-1-httpdetails-ready: + condition: service_completed_successfully + trusted-2-httpdetails-ready: + condition: service_completed_successfully + trusted-3-httpdetails-ready: + condition: service_completed_successfully + trusted-httpdetails-ready: + condition: service_completed_successfully + untrusted-httpdetails-ready: + condition: service_completed_successfully + verify-ready: + condition: service_completed_successfully + websocket-echo-ready: + condition: service_completed_successfully + wrongly-named-httpdetails-ready: + condition: service_completed_successfully + environment: + AUTHENTICATE_INTERNAL_SERVICE_URL: https://pomerium-authenticate + AUTHENTICATE_SERVICE_URL: https://authenticate.localhost.pomerium.io + AUTHORIZE_SERVICE_URL: https://pomerium-authorize:5443 + CERTIFICATE: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVVakNDQXJxZ0F3SUJBZ0lSQUtOYUVxQ21tWmZobWNZZ1p5MDFXQ3N3RFFZSktvWklodmNOQVFFTEJRQXcKZ1lNeEhqQWNCZ05WQkFvVEZXMXJZMlZ5ZENCa1pYWmxiRzl3YldWdWRDQkRRVEVzTUNvR0ExVUVDd3dqWTJGcwpaV0pBWTJGc1pXSXRjR010YkdsdWRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNreE16QXhCZ05WQkFNTUttMXJZMlZ5CmRDQmpZV3hsWWtCallXeGxZaTF3WXkxc2FXNTFlQ0FvUTJGc1pXSWdSRzk0YzJWNUtUQWVGdzB5TXpFeE1UQXkKTURBNE5EUmFGdzB6TXpFeE1EY3lNREE0TkRSYU1GY3hKekFsQmdOVkJBb1RIbTFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCalpYSjBhV1pwWTJGMFpURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnCktFTmhiR1ZpSUVSdmVITmxlU2t3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzgKSExCQUl6WGtQZWVnbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRAp5VmhEVDBRbEkvTy9FS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2Cld5bCtGb1BEVi92c1ozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXQKak9ic2FRZ0o1TEx4Q1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcQpiWlVERytaaW9BclBtcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkCjlyNnJPQnhweHduVER2SGtCbjZ2QWdNQkFBR2piREJxTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUUKRERBS0JnZ3JCZ0VGQlFjREFUQWZCZ05WSFNNRUdEQVdnQlNGaGxoWWdFZktUcGxWT2VuZVZHMyszSUUvVFRBaQpCZ05WSFJFRUd6QVpnaGNxTG14dlkyRnNhRzl6ZEM1d2IyMWxjbWwxYlM1cGJ6QU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBWUVBcHFWekozUWY5VnFrdWpGYmMwTUJEcVdELzhnamZkN21XMjlmUnRNSVAzemRKbGl5ZXZSajczQUwKaWZYNVpadW5UN24vajUyWnppRmliNGo4dWM0UjZWd0FFN2xMcERlc2ZzTDRBZ3ZHNnVqSmFKTGgrcTZmUEZWbQo4VXdJcjMvSGpaQUdQdmJ3Y2VBTzAwbXRmcW44YUsxS2VLeGZFazlVaFRVV2hzcXVieTg4RWNKVmh4a1RzQUhvCmtLUWtFYWY5TkxhemhaMFAwdTlKLzE0VkdoTU44UVVIdklMVmpja0NEaElqMzhJVUs3VXRaSGtNNzJHbUtyajIKU0M0MElEZE50NHpiMUFUTFZleU9MZHdLandFRmdLV3prdkkvN1VqOXBBMjYvZVlHUFE3b3hSRitJRXhWSWhEcgpFSnZIcldRMHMwRUtOUGRwVS9JaHF0azByWWtqODFwZXFNOFRtSTZ2cXJacUFFUHphMXRZazZXUXN6RG9ucFBXCnVLbGZyOUdZWWY1TXU5YTJ5MjZBZ2x1RG5pQWNuZldqUlhtcjFydlJIQnB6c0xTRDNTVG5QRTV0NkhKaWVQN3IKdjZrL2ZsWFE5U0V3MFUzbEkvblpLS3dpTGZXQzJPNUJwS3dNejE5Y1o4L2tMU0pXSGc0bGtEYjJVbzFKS25pVwora01FSTluTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + CERTIFICATE_AUTHORITY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQzhITEJBSXpYa1BlZWcKbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PLwpFS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2V3lsK0ZvUERWL3ZzClozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXRqT2JzYVFnSjVMTHgKQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUAptcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkOXI2ck9CeHB4d25UCkR2SGtCbjZ2QWdNQkFBRUNnZ0VBQjI4aTBBWVVOU2IxSm5XRmJLenJ1VWN0dTN0Q05Yb3ZKZzZLM0JpUFZNa3EKRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBVwo4ZUplcVJMWkVmc1NTSk9YVEc3UmRHc240cUhGSjAwczJaVGxjSUhTUHduRm0rWGpKaTk5VThHNFhzVW9YbzByCkd5KzBWQ3VVN004Z0lDRUhIc3JRTzlYREQzblQyaml1NVRqckt3anV0M0Vtb0pzc0k1YnF4MzMrT0J1NUJwQ1AKQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVApiTGtMRnlXQk5UV1VaMlIvMnd4bXVvQzZtTFp3ODc5TUxDS012azFkb1FLQmdRRGhtd0dhZkpOeW1UaUVRWlJJClNzUXg0c2VxZk9LZmdGQzdvaHFIOWNST091OElKMW83cTJwTTJXNFhpVitTM3dUZFBHbWNhNklPalgyM2lzVkIKMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzNwpheHpsYU1yeEV1M0xJOVVFN050cmRRaUJ5UUtCZ1FEVmRJNmNlSVZCVDZSZ3ZWR3Q4emtMalBJRmpoUUVIQUlwCnVoaXJncXBTNkNYOUJseWYyK280MHptZmozaGU1ckNjRW9CNU1zZU0rRGdGYmNWaDJlL01WbllpTk53NkpDREIKQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleQp1QkhWQnYvNHR3S0JnSHdIdWVQeTVTVTFzMnFTbXpEN1djMkxQZll1M25DT0hOUnJGR2IyNk11UmZ1UmVyaTdyCjJHOFRnb0VTRnljcDBRVElOOCsxSk0wWFlLeE5jSkQ2QjhWMXdLYmJwUXN5bW5lSTFnanV0aUIvSWd3L1BrREsKQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWgpmTjJZZVlieVljYU0xMXAxVmlsdWxWVFZqWTNpL0ZaaURSNFNML0lHSldqTi9Temc0aVhZc0tGbXUrZHVsT1psCmNCQUxwRUtycXBtelhZdHJONmJzdjE4KzVlTzNxR2JLMkRyRXEzZVdWZXYyS29UTW9ieHo3ZysrWEJJV0ptTEEKSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkUwpLcmx0d21vZEhpcVhOYlZrd2JXMUFGUEpiaVlhaTRZRmZLNElBYmlmL1lteGY5Rzc4YU9rcjlacENJek9rRFBaCllwRXdRR1dzQWhFbENGdmM4RS81ZEhFU1NwK3RXdFArTmx1aW1wRnFpRGczL1NVbk13TzJ4SDBuaExhMHplamgKZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + COOKIE_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + DATABROKER_SERVICE_URL: https://pomerium-databroker:5443 + DATABROKER_STORAGE_CONNECTION_STRING: postgres://pomerium:password@postgres:5432/test + DATABROKER_STORAGE_TYPE: postgres + DEBUG_FORCE_AUTHENTICATE_FLOW: stateless + DOWNSTREAM_MTLS_CRL: LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tCk1JSUNXakNCd3dJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBNk1SNHdIQVlEVlFRS0V4VnRhMk5sY25RZ1pHVjIKWld4dmNHMWxiblFnUTBFeEdEQVdCZ05WQkFNVEQyUnZkMjV6ZEhKbFlXMGdRMEVnTVJjTk1qTXdOekU1TWpFeApPRFExV2hjTk16TXdOekUyTWpFeE9EUTFXakFqTUNFQ0VFWTlqblU4Vmt0Mk1ZdWVza1JkN2J3WERUSXpNRGN4Ck9USXhNVGMwTjFxZ01EQXVNQjhHQTFVZEl3UVlNQmFBRk5IMU5BejhVajI0UGhDR2RCa0dpMENNUUdNTE1Bc0cKQTFVZEZBUUVBZ0lRQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQTR3M293NGoxRGF1ZmlCQlhoZEMwRUN5WQp6RHhPdUFDZFI0enlvWWJqTjFnMmtjMGJ1Y2hKNytWMGVUWS9SblNOYyt1cU5ZK0xZcHJYUXF1WktscjlkRlVyCnZKL3BYSit1eUxSL016ZWhpVHIzSG9UTENQbGlLWkREYXlQbW9admFxSEQ4SW9HRW5RWDZrQ0Vob3BiN2d0cUoKVTdUZkhhZXhpMHA0M0ZIMDBnblpmYURNa2NBZDh6Q2xzRVhVckFGQ1FSRDFNNVB1Q09UTzdDZVFjSTUzdUJ2ZAo4YUd2eUhsS0EvMk8xN2duaU1uZ2NvQ083Mk5BVWx0SnpNYnVncWVYT29pR0hZb1NzS1RiWTdNZExoWTNNRUJhCjNaa0NGZ3QzSExIVHo1UzBQZUJWclQ3L3k3U3o1Y2owUUEwSktMM0ozcHNuZ1ZicFM0b0h1NmN5dmcvLzdOZEcKS05CcWRhcytLUEFzbVYrM3k2NENyMmhuditXc1dqaXV4RGdJRUZ6cFFPY3lOT1p6bUlTQUN3N1lYandGdUluZQpPaWlNdVlzLzJOdndRMU9QZnEzamczSWY4a0JVY1NWaCtUZTRGSTMrMDd0V1V2TjZuVllDNFZtWEFjRzFIdXhRCkdubmU5ZjVoZ0VKUFZmTFQrdUozMVZWMTYrdkJuWkQ4NURaSlRyRE0KLS0tLS1FTkQgWDUwOSBDUkwtLS0tLQotLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0KTUlJQ05UQ0JuZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREE2TVI0d0hBWURWUVFLRXhWdGEyTmxjblFnWkdWMgpaV3h2Y0cxbGJuUWdRMEV4R0RBV0JnTlZCQU1URDJSdmQyNXpkSEpsWVcwZ1EwRWdNaGNOTWpNd056RTVNakUxCk1ERTFXaGNOTXpNd056RTJNakUxTURFMVdxQXdNQzR3SHdZRFZSMGpCQmd3Rm9BVUN4UTJjQmE1WXpxVnphbXAKaU5DeDhLd0ZGeVF3Q3dZRFZSMFVCQVFDQWhBQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQ1lhbXg4cE0rUgpDbHlza2N1N291aHUvUjFKeTFuV0d5V3RLcGhZcTBYRmJPTGxuazJaN2VEZkFYOEVlajJGYXZxeHphcFIyeDJPCjRpSk5EQ21pd1lZWVVTMlgyTEozclJSSlh5WHZXaHRmSHJ4VVJkNkJpdEMySVhweWtCdFZsZjN6QW5aOEdaRlEKUzFqZGZ5TE11RUFpRHdJYWkzWXQ4SHNEcC9xRzA4OW9YY29TdHlRZy91UnBtV3kwNUE5dUNWT2ZOSFNMU1p1OApscjRxYXRsZXUwd1diVjFhbUw4dE85eDRDUmtPMG8xWWFRcTREb09ydVByKzNOa1RtUHZHaWRoM0Y3MVY2SUVBCmgrS3pkYlJYeEZtQ0NXTFdtcEpEY3JnUjdLVXFaT2hVVXQrRFVxYXFoVjQ0cUkwbnJwUitRWkxvaG9Eb3I5THcKSyt1ZmozbjI5ZVNSWCszUHgrb1ZXUFQ4WVpQMnVLUGRpemk5Nm1lMmpXVHI1MXg5QWpFb0pEc1RuWVJsOSt1WQpTaGlVeFduVGRRc29va25JZmNTLzB6ZmdaODdHdlVWemluQ1F6SnB3VnhkNEFsdDhBbFIrZlhBcU5Jb09ndXl2CnAvQ3RSVm5qVkU3bDdIVy9oUVJxMUowaWpDQ0t3bXlmL0tUZDZFSzRUZHJ2YlgvVTltc1ZNOFk9Ci0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0K + ENVOY_ADMIN_ADDRESS: 0.0.0.0:9901 + GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT: ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ== + GRPC_ADDRESS: :5443 + GRPC_INSECURE: "false" + IDP_CLIENT_ID: CLIENT_ID + IDP_CLIENT_SECRET: CLIENT_SECRET + IDP_PROVIDER: oidc + IDP_PROVIDER_URL: https://mock-idp.localhost.pomerium.io/ + JWT_CLAIMS_HEADERS: email,groups,user + LOG_LEVEL: info + POLICY: Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy1pcC1hZGRyZXNzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovLzE3Mi4yMC4wLjUwOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNraXAtdmVyaWZ5LWVuYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogdHJ1ZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1kaXNhYmxlZCIsCiJ0bHNfc2tpcF92ZXJpZnkiOiBmYWxzZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1lbmFibGVkIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3Qubm90cG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly93cm9uZ2x5LW5hbWVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNlcnZlci1uYW1lLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZW5hYmxlZCIsCiJ0bHNfY3VzdG9tX2NhIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVV5UkVORFFUQkRaMEYzU1VKQlowbFNRVXhrT1VkaFNsSTVNbkZwTjNGTU1XVklSMDAyU3pCM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYY0taMWxOZUVocVFXTkNaMDVXUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZ6VFVOdlIwRXhWVVZEZDNkcVdUSkdjd3BhVjBwQldUSkdjMXBYU1hSalIwMTBZa2RzZFdSWVoyZExSVTVvWWtkV2FVbEZVblpsU0U1c1pWTnJlRTE2UVhoQ1owNVdRa0ZOVFV0dE1YSlpNbFo1Q21SRFFtcFpWM2hzV1d0Q2FsbFhlR3haYVRGM1dYa3hjMkZYTlRGbFEwRnZVVEpHYzFwWFNXZFNSemswWXpKV05VdFVRV1ZHZHpCNVRWUkJORTFVUlhrS1RWUlZNazFVUW1GR2R6QjZUVlJCTkUxVVJYbE5WRlV5VFZSQ1lVMUpSMFJOVWpSM1NFRlpSRlpSVVV0RmVGWjBZVEpPYkdOdVVXZGFSMVl5V2xkNGRncGpSekZzWW01UloxRXdSWGhNUkVGeFFtZE9Wa0pCYzAxSk1rNW9Za2RXYVZGSFRtaGlSMVpwVEZoQ2FreFhlSEJpYmxZMFNVTm9SRmxYZUd4WmFVSkZDbUl6YUhwYVdHdHdUVlJOZDAxUldVUldVVkZFUkVOd2RHRXlUbXhqYmxGbldUSkdjMXBYU2tGWk1rWnpXbGRKZEdOSFRYUmlSMngxWkZoblowdEZUbWdLWWtkV2FVbEZVblpsU0U1c1pWTnJkMmRuUjJsTlFUQkhRMU54UjFOSllqTkVVVVZDUVZGVlFVRTBTVUpxZDBGM1oyZEhTMEZ2U1VKblVVUlhXWEJXWlFwQ1UyNWxaVEpqUVVKWmIyWlRiMWQ0UjAxNVJtRk5VVEJ1U210Wk1GVlhUVGxqYTNsVmFEZFdabWRPS3k5aFJsTlhNbHBUYlZoMWRqVmtjbU53YVRJd0Nub3paV3hvVUZSbE9UaGlRVTVpYWlzdllta3dNREUxVVZkdVRXVnVTekExV2tzMmNVUjBSbmR2TDBoV1F5OVpZMkZ5ZFhVNU5pc3hTakowYjJWWGRVVUtkSGxyVnpOTlEzQkRNWEJJV1ZNMVp6bHBWa1JyY0dSeWVtNTJXRXRzV1hWVGFXdHFjbW8zU3pWMGIybFVkblZ0T1RkTWVFdHJkV28yUkZocVlYQlFSQW8xZG5SbFUwNHhaRkZuVHpsRFV6TnpjV3hqZDFsQk5sSnFWVWgzV1RKV1JXZ3lZV1JRTXpkQ1duSmFkMDhyZVVweE9YRkdOWGsxUjJ4bmFUaHNUalJqQ2t0c1NXeEdWWE12ZUZOd1VYTjRUbUpPVVZoMFRqbHRhelJwYlZsc1drZDZXVmxpWW0wclptOUNWbEJRWW05aE5XcFdkMHRFY0ZvMk5XMVBjemRLUjFBS05ubHFLemRXTjFWQ1RVWndWeXRuUzIxS2RHZG9MMnRyUVhneE9EVm9PVE54ZDB4R1VHTTRMMVEzYmlzclVERmlkU3RtWVd0WVVFZFFSVEl4Y2tSbFRBcFFibFZ0ZFdOSlduQktielZPY0ZsV1VYWTBWM1pVUzNFdmVrMVNPVk56Y0hveVVFWktia1ZTVkdaVWRuRXJSakZ4TTFwT1lXWkZlbWxRYzBJNWIyVlRDbTVxZUhkdFlWcFBVMVl3ZGxoeEwzRmxiM0Y0TkhZMlRVSjZWa0ZaTUM4NFVqSk1ZM0JLTkhWbk1FOWFNM2N3WWpKME5ubHZPRFpRTlZFNFEwRjNSVUVLUVdGT1JrMUZUWGRFWjFsRVZsSXdVRUZSU0M5Q1FWRkVRV2RKUlUxQ1NVZEJNVlZrUlhkRlFpOTNVVWxOUVZsQ1FXWTRRMEZSUVhkSVVWbEVWbEl3VHdwQ1FsbEZSa3hqV1RoRmIwNXZaazFqY25KNGVubDRTVzR6VnpaYVQwMVdXRTFCTUVkRFUzRkhVMGxpTTBSUlJVSkRkMVZCUVRSSlFtZFJRMXA2UkVOMkNrdEpTRmd6UjNacVRsTlpOWGMxWWs5dU5FVXpkemRSU0ZBd09VRkNhbFF2ZDNWVU5FeEVhMXBJU2sxdGJISk1iek56T0dKamMxRXdjMDFFTVZrdkx5OEtjekEzWTNBMGVGbHNjVVEzUWtFd1FXTndkbGxXV1hFMU9IaExlSE52UTNkV1dHMUhOV05GWlU5dldtMVhaak54V1RKdFV6aGxWemsyZGs5R2NtUkpZZ3BNTkU5R05IaFpWVTlOVW5GQlQwZEJRWEkyVm14UE4yZFlZVFF3TmtoNmNuTkJNV2haV25keVpWaG9UMVJEV2xwUVdrOVZia0YxTURWVFNFWmtaMkZOQ2xSS1RrSXZiekF4ZEhCM1VXeHlWSGhPYldaeWIzQnZUM3A1ZFhaSU1IcFZNbEp5VFhNd0swVmlUM1ZETkVFeVkxRTRNMFJKUm5oMmNUWTNiSGxWTUVFS2N6RlJOblJTVFRBclZVUnRTazlNZWpOVFpHZE9LMFF3TUdoamRYVnFPVEpIVmpSaVNEaENabmxWZGpoT1Exa3dka1JwYWpCVVUycHFOR00wVVhSak53cEpVRXhVV2pKbk5UUTFiMk42YUU1blFXMVVOMlFyUWpWSmJubG1hVk5KUzJWdFdIRmxjekpxY0dsQlpucFFUbXc1UWxaNGMyRnJZM012V1hwdldYTXhDaXR4VkdwQlYzVmhSSE5MYjJoRmJrODBRa3AxZW5Zd2VISmpaVFF3Wlc1U1oxaDVSMGRHZGxoMU1uTTBSbGt5ZGtweFZGTnZObmx6UkZkdWFFa3pURmNLWkdObk5rOHlSalJCVUVOSFIyVTNlbk4xY1dseGEzQmphMjVDWVdKbmVrVnpPV1p2U0hFeWJXWnZOMWhwUlhwbFpFMU9PRUpPY1daVFlrRTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiLAoidGxzX3NlcnZlcl9uYW1lIjogImh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL3VudHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZGlzYWJsZWQiLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtcmVxdWlyZWQubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2ExIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2EyIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVZCcWRtZE1Za1ZKVm1vdlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjVUVUkwV0VSVVNYcE5SRmwzVDFSQmQwNUVVWHBQUm05WVJGUk5lazFFV1hkUFZFRjNUa1JSZWs5R2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVNYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlF5ODRTMjluTWxwNk9HVTJPRVZIY0dacFdFNDNkUXBZWjJGMU16aG9Oak41WkhOd2RXTnlhbWgwYmxOVVYxaDBTRTh4YUZsTWJWVlpWMEZsZDJrM09XbEhXWHBQZFZsblYwTkVNMk5HZUdRcmRFMUxUSEpDQ25sdmNtbEtNMHRwYjFSMFdUQndiWGxNUkVveFZGaE5VMkZHUjJkdVduRnFXRWh0YWsxMmFXOHdlQzlxVVU1clEySlphMFpDUjFGVFdscDJhMEU0YzFFS2JUVkJjMUpFWlVsVlVHdFFiR2hHVFc1aU1uZzBhVkpqVEVKUU5ucEVUa1ptV0N0NU1YRlRiMnhMWW1nelN6a3ZSVE5RVkRSVmJtcGhPR2RQWW5wRFNncHVjazlqUmpWVFFuRlVUMnBTU0dsbUwxTXZkMW81VkZOR1YzcE1iWEZIVEdoeE56TlNZV2g1VkdsaFdWQTBObFYyU21oeVRtSTFUVzg1U0dKaU9UUXZDalI2VXpWQ01scDFielJ3YzJoVFdrUlhjSEYzZGtKbFkxRk9NRlpoVEZaMlNYbHRkVk41WnpWVWVuVklOR3QwVFRCd2RIcDJObkpZYVc1RWJHRTNjbm9LVFhVdlJuSkdWbEZRYTNOUGFGUkVkRFZWUTFOeFQwUjNVRnBwVHpkbk5WTlVNSE1yYWsxd1luQXhXRTQ0UzFBeWNISjBSV3hWVjJSaFluWkliR0l3VFFwRU1rVXdhRWhXYVRRME5GbHJVWGhhWVVOdlpXUXliMkp5VkVJeVJHWXlRM2RJUVZSblJrdDJURVl4VTBkVE1sRTVkakJ3WWxWak5sb3JNRzg1TVRKaUNtNVNaa2Q2YVRKd04ybENjMWRWVEhWSlRra3pibUpPUVhwc2JWZFFiVWRwZDFZeFUxa3hXVEJrVlRoRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWkJjMVZPYmtGWGRWZE5OZ3BzWXpKd2NWbHFVWE5tUTNOQ1VtTnJUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNWVFpaYVZKWVVUUnFhM0p4ZFdkMGRVeHFNbUUxQ2tGUksxVlNVR3htYTBaR1RqQkNSSEJYUTBsNlZqVXdkeXRaTVZwMFNESklka2RZTkRSNlJHcGlVVlIzZGl0QlZUUlVLMFkzTlVNNFVHNWpOWGwyV1c4S2RqWkdTVTFQVDFwSmNuWnBiRzlyZVZabU0yUkxVa016V1RKalVXRmpOSFUyTkdGUmF5dFlVaTl4YW1sWmIwWkxNRUk1ZVhjNFZVRXpUemQzUVRRMllncGpaVzlhVlVaYVRHTTFiMU56YmtJNWRGYzNNbWs0YkVWclFrWjBNbGcyTW5KeFUxRk9SMWwwZWtOV05qUmlUU3RsZWtOelFsbFFZVU5KUzFjd1FWSkNDakJEWWs1R1IyOWhVRXA2UVhWMVIzVnJkazlqUWtSNWRFb3pVa3BDV0VvM2JETTJNalpMVGtkNFEweHpVazFqUkdOVWVIWllRbVkzWjBaWGRHVjBWemtLYTNWdlpuWnNTazFwVUdrelFrUk5iQzlHUVVVMWFXdHFNRlZTTkRkeWFsbFZlRTB5VTBZMlJpdDZPSEJGWTFCalpWQlRXWHBEYkUxRlEwdzVZUzh3TWdwSk1USnpSVzVWTTFKbUsxSndkMU5VU0ZORGFubFlSM1JYYkRSa1IxTktiRTlGYkhkeVdVMUNRWGxZTmpKa1prWlpPVWRGUjJkSVEyNTVUekYwYWpNNUNrcEphR2RwU1VKRlduTkNURGxNVDA5TE9IWlVXWHBhTld0Q2Exb3hUbGhvTWtKcU0yNVRMMEl2VFRWNmIzUndOQzlUTmxBek1FeHBORFF2U21Kd2RtTUtOekJtV0hKMVJqWTVlbmRRVFdNMVlqTjROM2xZTjJoUVRGbElhekJvYlROQ1QxZGhiMlJRU1RSME1EMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZW5hYmxlZCIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJjb3JzX2FsbG93X3ByZWZsaWdodCI6IGZhbHNlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZGlzYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWVuYWJsZWQiLAoicHJlc2VydmVfaG9zdF9oZWFkZXIiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWRpc2FibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogZmFsc2UsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9yZXN0cmljdGVkLWh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF9kb21haW5zIjogWwoiZG9ncy50ZXN0IgpdLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoicHJlZml4IjogIi9ieS1kb21haW4iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF91c2VycyI6IFsKInVzZXIxQGRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktdXNlciIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJPVU5EX1JPQklOIiwKInByZWZpeCI6ICIvcm91bmQtcm9iaW4iLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJJTkdfSEFTSCIsCiJwcmVmaXgiOiAiL3JpbmctaGFzaCIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJsYl9wb2xpY3kiOiAiTUFHTEVWIiwKInByZWZpeCI6ICIvbWFnbGV2IiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIlgtQ3VzdG9tLVJlcXVlc3QtSGVhZGVyIjogImN1c3RvbS1yZXF1ZXN0LWhlYWRlci12YWx1ZSIKfSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImFsbG93X3dlYnNvY2tldHMiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2VuYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZGlzYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJlbmFibGVfZ29vZ2xlX2Nsb3VkX3NlcnZlcmxlc3NfYXV0aGVudGljYXRpb24iOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Nsb3VkcnVuLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIngtaWRwIjogIm9pZGMiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vYXV0aGVudGljYXRlLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0bHNfc2tpcF92ZXJpZnkiOiB0cnVlLAoidG8iOiAiaHR0cHM6Ly9wb21lcml1bS1hdXRoZW50aWNhdGUiCn0KXQ== + SERVICES: proxy + SHARED_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + SIGNING_KEY: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + SIGNING_KEY_ALGORITHM: ES256 + image: pomerium/pomerium:${POMERIUM_TAG:-main} + networks: + main: + aliases: + - pomerium-proxy + - mock-idp.localhost.pomerium.io + ports: + - 80:80/tcp + - 443:443/tcp + - 5443:5443/tcp + - 9901:9901/tcp + postgres: + environment: + POSTGRES_DB: test + POSTGRES_PASSWORD: password + POSTGRES_USER: pomerium + image: postgres:14.3-alpine + networks: + main: + aliases: + - postgres + postgres-ready: + command: + - -wait + - tcp://postgres:5432 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - postgres-ready + trusted-1-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-1-httpdetails + trusted-1-httpdetails-ready: + command: + - -wait + - http://trusted-1-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-1-httpdetails-ready + trusted-2-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-2-httpdetails + trusted-2-httpdetails-ready: + command: + - -wait + - http://trusted-2-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-2-httpdetails-ready + trusted-3-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-3-httpdetails + trusted-3-httpdetails-ready: + command: + - -wait + - http://trusted-3-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-3-httpdetails-ready + trusted-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEhDCCAuygAwIBAgIQX48RpK9MrVcpPDQc6AScZzANBgkqhkiG9w0BAQsFADCB + gzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNjYWxl + YkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTEzMDEGA1UEAwwqbWtjZXJ0 + IGNhbGViQGNhbGViLXBjLWxpbnV4IChDYWxlYiBEb3hzZXkpMB4XDTIzMTExMDIw + MDg1NVoXDTMzMTEwNzIwMDg1NVowVzEnMCUGA1UEChMebWtjZXJ0IGRldmVsb3Bt + ZW50IGNlcnRpZmljYXRlMSwwKgYDVQQLDCNjYWxlYkBjYWxlYi1wYy1saW51eCAo + Q2FsZWIgRG94c2V5KTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOKX + FodoNha0ADYcXwj0mNPHP6R6GjLHavHZmeug4sLuqntGRCh1MNHyi1zDKLmu26IL + VNHT8YYSqqIG2pT1jC0NLKKyo6AemZO9WnB1caSUqBAJcQpBkJnKCBjyLppsVegb + 4NxuNlUq4NqtCPTsl7V5kpBVUh0QWK3X2buX2RtG7F12nBYudlHvWGVWlf+6eIxv + xVIJxv2HqcwhFyEnh5Qe7DMu5VzHdKrRkMogGIY8GeP+MjyJxmgSVTpJOnyQ3hrR + vXmzIvni6gKzv8QMIOa2AC1c1d7P9m3vqghIvDOduA5Hk3udlhQUD6FoDvpBetnc + zVyw3DN5/gQnZzGkNo8CAwEAAaOBnjCBmzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l + BAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAUhYZYWIBHyk6ZVTnp3lRt/tyBP00w + UwYDVR0RBEwwSoITdHJ1c3RlZC1odHRwZGV0YWlsc4ItdHJ1c3RlZC1odHRwZGV0 + YWlscy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FshwSsFAAyMA0GCSqGSIb3DQEB + CwUAA4IBgQAq6NK/ZvxVajdlevUp5Zv8f2NaYKo7jF8fs7FLLP8mIO6eYQcmqANA + dvVfAN/5OOEWgLulYaepmbqKMJTLtwySQ4N6F2XKD8HUqPQsTfOLBu13PF3guCYD + vbi22hjLrtCHk/0mTxbH9JIsmhFn375ru2VTTcagQxKhfk+YOEIwOUJcfV87eQGL + bLpbRRKpOCl5RTNbB+bM3CD7AjL9mx2cs6+VuyCckteC+8K8JApkOP639rxCbX4M + zCZ8M7jaJbWXxDvuODDkf3d7R8KrsFOKbOCV2vdeVvmGyL4Edy7Lvio3KMbpuIxr + n+dnCcHtXdI0gPTjoGC+wwR3ndtLCD+rYDmk9Pxp3DTbVb3LAA7i57FvbmX8wF/Y + DzUn1FjisC9Q8U4p01kATVZLBcUBzO63oRTKzsGq0Y3kFZ9dcHBNVkf0eX4G2efr + Ot1BIWiQg+j9icz6Wb8iP7m7zgwrYcY44fNPQz2VsDmJbSmI3b6LNpjqtVf5N5Cs + oKZ7WL8izlI= + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDilxaHaDYWtAA2 + HF8I9JjTxz+kehoyx2rx2ZnroOLC7qp7RkQodTDR8otcwyi5rtuiC1TR0/GGEqqi + BtqU9YwtDSyisqOgHpmTvVpwdXGklKgQCXEKQZCZyggY8i6abFXoG+DcbjZVKuDa + rQj07Je1eZKQVVIdEFit19m7l9kbRuxddpwWLnZR71hlVpX/uniMb8VSCcb9h6nM + IRchJ4eUHuwzLuVcx3Sq0ZDKIBiGPBnj/jI8icZoElU6STp8kN4a0b15syL54uoC + s7/EDCDmtgAtXNXez/Zt76oISLwznbgOR5N7nZYUFA+haA76QXrZ3M1csNwzef4E + J2cxpDaPAgMBAAECggEAYTddrR7jBf6YkJ6/j4ISB9rWzWSt1NeGZNltlpDieawY + bOeK2qjdF1auwE/jKzeAeBfQfm4mk9VybC3wnjRzveiHHA708P/v+FknclSRO4Gk + Ua0bWMEknzb1Hm7Z29tbSEidwzVuDkBlVK0kyKCxvmS4o0BYCKw4v+16N2hA99g5 + LahplROhz5qRZwhNFJrDZr7HFCjay8s+kP6Q83ZMugxd9WKuMA6WODD51Jx2Uxy9 + S4b6sXAzBNY2kPWOiTDP4CHi/KVCzSIMy3fVGfOTQ8qP3EwnKb8RYBiEWhopurWT + 0cfKSzUgNSZMAAJJy8cxIRntoGMQLD8IOZIam+ItkQKBgQDlnwm76VnK80f2nNgY + MteUV/Pq1t+eDDZx2+Vkb1y7dRjExnHeIx8Zka9NuEC5Aob/T0M1/riR6QKahYPK + wzfV6AS/Rx3HciqjWpwW3gG4fIMXd22cF2KkzTcjY0sbsvyDzF/cdvF1DVEIZOQg + 92K9BI1R9wMtXSOOjHLMpv9AXQKBgQD8nujGxztXfOnojSwFnOOMAVVJ1rOqWRJW + 8jUpWAwFKq+f+G6NKesEMqblXsQyYNiEPsgTWEjxcQLXwcoe5+Ct35HXCx9QU/r5 + 5FcYOvFlV+HYiIVrElYu6TGJ6p3+tS/nL0fpigD4TwKtJ19CNXtnPzRKFZt4CNaf + ULeR8nJT2wKBgQDiNWoOgBVglYi4j81nEXdFgdwe5y4G8nsUchArgHX3iqUq/WCh + +TGjK91qkHDakn3RuRE6eUT1IXraJVwvfWBdT6SVl4bjvDn7EcGh2XYSfD9c99+4 + nWUle7GtIB2XHR4c7VMmytqWeNbykQoY2/2evoRGUjUEFLR5sy1JJd9iVQKBgGEd + Dctsx8lIQfueWbAGsgsecBUkrojsGPrHvdwY9vX9hOpwbL9jv+8rMbG3jqD3TgT4 + xZ16MQBwO3GKFBNxfJQbAEu1AOK2hiMOvtSXxDj7Yd0GDpQsxmjeSKcGRJqoOLQd + Hv4OiXTrmtHJ8vrW6Iu2ZnmceNnaO/ee5hL7KyxFAoGAealomMLKdpx8sqU3x+q2 + +ZjwHcujFJAwMXXaAi/1cgln1JuVWr577t44VbfYNvaCQah4yZJqKpbzWzdJdatD + JR855qFt2gBQBn6fwliFDB+e3Phrd4IwjwH3/sjl7Z7SB1ANj5DYXpceu7gaNlyZ + /5jXf1x0Dk3QDs0JXbgJmPs= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-httpdetails + ipv4_address: 172.20.0.50 + trusted-httpdetails-ready: + command: + - -wait + - http://trusted-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-httpdetails-ready + untrusted-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKKYU7PSAFxZbhuLUlbv3iAwDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDE1NTZaFw0zMzExMDcyMDE1NTZaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCg + VDM59lGzCRjdUQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHG + oryKGDOkRV1SDb3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2v + JX4qTwgrqQtLOJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqP + qpc6AEFuklmoBHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPw + ve8VoGIlx4uvHTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxG + mgByfa2rxbNg15PFwF+ZAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBS3GPBKDaHzHK68c8sSJ91umTjFVzAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEAbRDRZhw7pZlU29/u33iRrwzs4Ky4gxgHWi44ZznOAMS4/v2AUPCFyKFk + iew/5jUeR/x3/IoPYyDA5240aSWS+aGa8Tg7cgjv1HlQIIGUNFqMtdIaiR1/yFUK + riAux798LhIx9fselljmVZFNoocg1kHKMuDO/Vv8eHps4541q4P8VjET58hk9ENc + EnbUt/PeoNw2XuOY4qhTfPgDjMhtI73WBqRIMWfLhpbJZEyZc0VCV5cZhwA2p6x4 + WRwPjkFfxqJ22S+JcKb2euKF0LcUKWYlSf6fVod5HDew8vNwCMOC2u9/8W4F4KSb + EN6BevjXYVgxMvevsefPr3+Z1wlh8mL6xD35oiJU8kkkfX9P/v0AqX5b/HCyVnCK + YbDVotVLrkjX4yC06umdq66LgdfrF1j5B1ijWrjxOnx5Q0tjgoJx8/oaAZdBZigH + juB9WeAK7F/Omb4Gaz2p6vIOkcAnr09im4tcb47mu5dz0HnN7FSD05yg4Q6qGbWW + XD0HZE10 + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCgVDM59lGzCRjd + UQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHGoryKGDOkRV1S + Db3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2vJX4qTwgrqQtL + OJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqPqpc6AEFuklmo + BHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPwve8VoGIlx4uv + HTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxGmgByfa2rxbNg + 15PFwF+ZAgMBAAECggEADTzGefunZTPUFLnSZ/D7jDglwz5KdC/9zYleY+jY5B/8 + nmjkSfK6I6GLLSh8l2QO8YqQLIqxANglS1gNHdpcYPwfC4WL1S1P0qXboKsI5Sfy + jGoD3et4caq6ecdTfAvmLobW8uFRmGE9qHlFQ1cn47OnPVZUpKFCTVslyTLNo70h + 28gx/lnpgkbeWotJ5GygE/H0jKJlG8/V3+Ppfuq6wypA5ELcGUeMAwmCfUNNlDy3 + BhXSa6STgL26ar70KZIjTp9B97hIfDWObxgjzMX2JoiWXziszvbfaknfBsmfTm45 + oUZYO0DuvLdLpxic0GZQwZCT6GzuexxJ9zR/pdahrQKBgQDEiwc0e+M1KaOoIIcw + V7pxoGjvd+CC5whS00jSf/rXPSPFxat9Ml5serOzLdRLM/NQ5wB9S7TYc6PJi3Mb + 8pmbGadIXiGIJY8vX79P/velHT4csgULJAKJF9U65knhaidPPPmXloHOhRWrE8Zq + mexVgJZrHLI8197qmi+ctT5rEwKBgQDQ1J84AwI1hEsXHxoSetSznt+ae7pSUb/J + byqK9KEp0DLyf8GcS7vxyYGQo0mJDlHaJt56LKv+zdX4wGG85ztbOFVPee6XLKSs + I+h7rzc2hKrl+SaI91h1234WsTeJvfUSHyBy9vAwLhd0hplNrt7Tql5Z0VTWHmFE + 2XbEwcTUIwKBgQDBpioHMDmBW/F/6ezJWOa+pco+h+KRl4i/8qVBog9Im1jvt/9r + b4FRaOQ9mt4c6qbGA5Sb30fkLKwoHFniI3ntM616xCRNvJQDnVcmPpVJ/jIAm/YU + L/q/kNfrHJOWobzxeaaCESz8imv7D5Tj25zb8cJC7xc+k4Nzq09WG83QOQKBgG28 + LOZ7/j8tA2BlAYhQb1Dr3UgKWEBFoOgyuEJIhh+4vezb4VtGGL7XSnQ8ubmBgtWF + s0a0DrVYaGXMgg+H2pL2qS2YPx3FYcrrG5FS40qMsFkkcXFruFpGOp2mBi8lWJBr + NtvykwheUAj1ab1+dKz5S5ca/t99G1PYiiaeQ9XNAoGAVXk4HvdUc5q+BNiYvKUS + M2/TDU3cYY72mPCEw7G6Kpn6zMaakQcA1+Z8LkYcLaQKRD/66n99WWT+BcY+QXtC + 0ZPHjeepDL8q+yXRY8zlcgAukg18Ta5yD1J1014y8UIV+HY8ongTni1sI8N+vKd4 + +TF2C2Cynf5vQr5man7ShPw= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - untrusted-httpdetails + untrusted-httpdetails-ready: + command: + - -wait + - http://untrusted-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - untrusted-httpdetails-ready + verify: + depends_on: + verify-init: + condition: service_completed_successfully + environment: + SSL_CERT_FILE: /verify_config/ca.pem + image: pomerium/verify:${VERIFY_TAG:-latest} + networks: + main: + aliases: + - verify + volumes: + - verify_config:/verify_config + verify-init: + command: + - sh + - -c + - |- + echo '-----BEGIN CERTIFICATE----- + MIIE1zCCAz+gAwIBAgIQZ139cd/paPdkS2JyAu7kEDANBgkqhkiG9w0BAQsFADCB + gzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNjYWxl + YkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTEzMDEGA1UEAwwqbWtjZXJ0 + IGNhbGViQGNhbGViLXBjLWxpbnV4IChDYWxlYiBEb3hzZXkpMB4XDTIxMDgxMDE3 + MzIwOVoXDTMxMDgxMDE3MzIwOVowgYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9w + bWVudCBDQTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXggKENhbGViIERv + eHNleSkxMzAxBgNVBAMMKm1rY2VydCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2Fs + ZWIgRG94c2V5KTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANbKyMz5 + MVW6YKdjh1oIN1Mn7PE2pH5SbJSpWxdAGhdBkBkpAa7OxarjH5KVkCTSa7oncla7 + qNuJZS6mBmoxF+R+cR3jyGdUAYlozl1jlfqLIfC/+g7V7VmOJn98tjB42fatxLl6 + WPAw1JDNsWtQfhKhbcHut7RsF0rMOOHcwywTR7LOyCmIel1pcmpV4hbVcT6eVwoP + HXyJSa9cqaMQ5Xrdogai4IqZZIGLHeLsTVutOgJFXEevlX/QT3sWomEctzh38Js4 + 9DiAPD6d4Y7/CPLYEfk29JQ9NZhpgDsi9hu5FHHZcXwf1IHlw/CBVgn6j+jmvKKz + 90Ma1oquv3W6dttid/xCcLGu2S+96Tzrykmoy5VacLtVEP41YmoVls91rlo7olpe + QWFbnmco739TI/4h+HodolperQERQl7uCnpKVPZ3WokKuRh5pkqkQp/arQjtwcRt + G43CrDpbl+uSjMCAxha958eTYvtojTMnvLtsGID1hGXnqlw+5KjKrgRHrQIDAQAB + o0UwQzAOBgNVHQ8BAf8EBAMCAgQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E + FgQUhYZYWIBHyk6ZVTnp3lRt/tyBP00wDQYJKoZIhvcNAQELBQADggGBAA1F/apr + l6pNT3Mp/MxhUUgo6usEJCryGQcLRfexyQXGN3huCmIrP55VFa8ETPAtjsr6PMe7 + 7vvEj8eFu2JtKovlQwNewYU9cjAMCVaFiNbrQa20hzhWc2js6dyildE6/DPzbeds + KDAxhFNp35SlwtRtKk1SzxJxsqSwjfxI8fp+R/0wO8g0fWTdM2gCpRwYMNwJELEg + +dSlvJCwuu+rzxLalzaPF1PMTW72OELal/j5sD+2VytQ4k+HUDbyt2DnQT7YQ3zo + q02x2u2sm1WW/o/uh8pjPxkGQqL2mryZs6VH9VCU3QkKNDssNd71lr3wPoE4YRHe + UvzD1eDeelzBUFNIpDCjdCsL55yIPqUsr6lmjpBPL0vea33QTMbcsSxu0umGXDbU + 66juU4Z1jOE0wClIvaO699J+E2gBe1jUN6At6b8BSoZqCqXYoDHGei9RBUdvgqto + kVsoJfDI/TFMekYgpL5UVYmLdfgqLPPRP9pQBLDx3mszeAqnvfTICAzfXg== + -----END CERTIFICATE----- + ' > /verify_config/ca.pem + image: busybox:latest + networks: + main: + aliases: + - verify-init + volumes: + - verify_config:/verify_config + verify-ready: + command: + - -wait + - http://verify:8000/ + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - verify-ready + websocket-echo: + command: + - --port + - "80" + - tee + image: pvtmert/websocketd:latest + networks: + main: + aliases: + - websocket-echo + websocket-echo-ready: + command: + - -wait + - tcp://websocket-echo:80 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - websocket-echo-ready + wrongly-named-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEWDCCAsCgAwIBAgIRAK1MkqoHP+DPILewhMcnnu4wDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDM2MjlaFw0zMzExMDcyMDM2MjlaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDV + DWPhOpNWAYNTQZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM + 3cvyRs40dygZeogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV + 6ttf6y0+4Nq1hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3E + lxIYQsCr85FyW8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC + 8X2vHBBIbnZipb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3 + OIkJji4rpJqxG1Z7MvPzAgMBAAGjcjBwMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAo + BgNVHREEITAfgh1pbnZhbGlkLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG + 9w0BAQsFAAOCAYEAperIfzle1M52uBSVnBm3feNWlxvGcym7qepmDbSWbA//ijoJ + qVBzKN1jnP1L4zBA/9SVP9aC5qCnxlKwhZ15Dme9m/IHPKRLIlPPKtCo0eOLtWLa + N14FSVGH8mvK6upFAIGcYrVjkRTeKc2BBSxmLuQz15nvKVTnAeDqj8oy8Iu/lRTS + /PEGBHMt+xs0ZI/p9HhNNxBP1mxTJQq7Tcscnnpn4cgix3HUxE1CjstJFqlH1pPz + vPUUXTOVJyANCjrOYMvVeeY/tS8fIv7MFJmje/1N+6mqxn/WWZs7W9NzaI7G8uzT + VQdQDVfeWY/Ku/Uow/yngRVY4/ZS2QhtiGO8Yltxe3tv6Ebx/2Gfv+xAbIz0Qj1Y + yKVMyCWNSXQFGq40SpvixWdj249ttWL5cIITFhDx0AmPQxcSPNIA2VVIz33mTITQ + gMOwu6+YbFYeCIVMqDl6dkuUfcGh/h7LBerEO7TL884EEQe4FOpOZx90dp13IXHn + wlvPuRsZGUsBJaD4 + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDVDWPhOpNWAYNT + QZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM3cvyRs40dygZ + eogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV6ttf6y0+4Nq1 + hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3ElxIYQsCr85Fy + W8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC8X2vHBBIbnZi + pb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3OIkJji4rpJqx + G1Z7MvPzAgMBAAECggEBAM3XhRO7+1QSXCaZdCZ6WuWXzojxrkf8++gpzXPCZ75L + vvMyP8xmXc38Za5VyL+MAr7joENxY5NPON/9AgyUBFdbat3RW323vAt0Ssy8Dfti + ScpuGWTT2CcWS/iJPwJp9bzPj6qJ1wo0Rzsv23FpcjgfcuB+4pHpDwJZ8IxcclTN + jv5XdmanN0Ai2ONDkIHQyvMTsYAX99OK7nXIs3OW7s4wsm8Wg+loCqTvojTzWuwE + TZNFonHAZ81jkrYfNjz+sM/tPuOYD+vWQ89+1IeQKFw1U0iBpF1VvhA7UeQZMeI8 + S1NpDQTQW0kxmUAlLj7ldnIvknT/x0lKzoafVpk47/kCgYEA+SxnMLHe3Wxb4Kkf + 7Gwktbth/wlWzUWzQ7c0TdhfEDjcRB7SeGIjrL4/HPyXEsCcGIj84TEob1EA0KVP + l6Jeqh5t/sr9da+uLFf6H41yZUaTccoyclnjHsqT+WLTtiTKqf7cXACg5NKbJwUT + ldCEu+4Ovur+8Ax6s/mGWNEzar0CgYEA2uOmD+SCIhj16P+3GnpZ0UzyDhUKedTy + LisZznroF6RI3BHzNT+YotHORDMiJtmX0slFcInAWaB3htLPbHmvredjlsH35eHW + B6wkWmbniJEovPysWdg7xjrj8DoL2dcm6liM1KpSo9k6XWJu36//xF4RTnL8JPEH + RPuBWmBXHG8CgYBjJy886lr0I61//eztKK+G/bTmRvIapzTJqnqOy54wl1/XX6iD + LRJjKCV3RHBdjvXOsZxnhCdB/KrlXBMLFRq0eX1t2Zr4nNsjXDL1IVU3Rdlge4SN + ioVdeGFf6Nq0bXmUIg3QMpPT2pbQ9S0w/ZQEMJv/jwW5wk2FlrLGXyElxQKBgQC3 + skUzITp1Ey2NFM290uB93m1llBLum9+DD3jg6BTPgngC+K17Cpw2SI0qfx8yK3pW + 08MK5xAeJ6Un6NNa3eSptX7GjpJUwmq0lasMkz/MRMZDlGmwHOBNRC729D/t2bo3 + AYlvEGG6UBvDM1CJOVMUoT008Rrahczr/4ZXKnLw0QKBgExc+SXb5IRJIMHEQLkg + E7va23sR7x4j75mK6HnSwAM3jKx4GDgpkY1EO+rh+99mq/bIouL8ob/PG7A5RtKp + +Sgpqk5N6NpSFMaubsu1EQhqT5pmy0dN5KXecR4s1IylPvth/h3tdXPKGcLMD2M2 + EN59YIA1o4qWjJsfEiuQ6x7M + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - wrongly-named-httpdetails + wrongly-named-httpdetails-ready: + command: + - -wait + - http://wrongly-named-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - wrongly-named-httpdetails-ready +volumes: + fortio_config: {} + verify_config: {} diff --git a/integration/clusters/single/compose.yml b/integration/clusters/single-stateful/compose.yml similarity index 100% rename from integration/clusters/single/compose.yml rename to integration/clusters/single-stateful/compose.yml diff --git a/integration/clusters/single-stateless/compose.yml b/integration/clusters/single-stateless/compose.yml new file mode 100644 index 000000000..00caed3b5 --- /dev/null +++ b/integration/clusters/single-stateless/compose.yml @@ -0,0 +1,793 @@ +networks: + main: + ipam: + config: + - subnet: 172.20.0.0/16 +services: + fortio: + command: + - server + - -cert + - /fortio_config/trusted.pem + - -key + - /fortio_config/trusted-key.pem + depends_on: + fortio-init: + condition: service_completed_successfully + image: fortio/fortio:1.17.0 + networks: + main: + aliases: + - fortio + ports: + - 8079:8079/tcp + volumes: + - fortio_config:/fortio_config + fortio-init: + command: + - sh + - -c + - | + echo "$$CERT" >/fortio_config/trusted.pem + echo "$$KEY" >/fortio_config/trusted-key.pem + environment: + CERT: | + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + KEY: | + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + image: busybox:latest + networks: + main: + aliases: + - fortio-init + volumes: + - fortio_config:/fortio_config + fortio-ready: + command: + - -wait + - http://fortio:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - fortio-ready + mock-idp: + command: + - --provider + - oidc + - --port + - "8024" + - --root-url + - https://mock-idp.localhost.pomerium.io/ + image: pomerium/mock-idps:${MOCK_IDPS_TAG:-master} + networks: + main: + aliases: + - mock-idp + ports: + - 8024:8024/tcp + mock-idp-ready: + command: + - -wait + - http://mock-idp:8024/.well-known/openid-configuration + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - mock-idp-ready + pomerium: + depends_on: + fortio-ready: + condition: service_completed_successfully + mock-idp-ready: + condition: service_completed_successfully + postgres-ready: + condition: service_completed_successfully + trusted-1-httpdetails-ready: + condition: service_completed_successfully + trusted-2-httpdetails-ready: + condition: service_completed_successfully + trusted-3-httpdetails-ready: + condition: service_completed_successfully + trusted-httpdetails-ready: + condition: service_completed_successfully + untrusted-httpdetails-ready: + condition: service_completed_successfully + verify-ready: + condition: service_completed_successfully + websocket-echo-ready: + condition: service_completed_successfully + wrongly-named-httpdetails-ready: + condition: service_completed_successfully + environment: + AUTHENTICATE_SERVICE_URL: https://authenticate.localhost.pomerium.io + CERTIFICATE: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVVakNDQXJxZ0F3SUJBZ0lSQUtOYUVxQ21tWmZobWNZZ1p5MDFXQ3N3RFFZSktvWklodmNOQVFFTEJRQXcKZ1lNeEhqQWNCZ05WQkFvVEZXMXJZMlZ5ZENCa1pYWmxiRzl3YldWdWRDQkRRVEVzTUNvR0ExVUVDd3dqWTJGcwpaV0pBWTJGc1pXSXRjR010YkdsdWRYZ2dLRU5oYkdWaUlFUnZlSE5sZVNreE16QXhCZ05WQkFNTUttMXJZMlZ5CmRDQmpZV3hsWWtCallXeGxZaTF3WXkxc2FXNTFlQ0FvUTJGc1pXSWdSRzk0YzJWNUtUQWVGdzB5TXpFeE1UQXkKTURBNE5EUmFGdzB6TXpFeE1EY3lNREE0TkRSYU1GY3hKekFsQmdOVkJBb1RIbTFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCalpYSjBhV1pwWTJGMFpURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnCktFTmhiR1ZpSUVSdmVITmxlU2t3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzgKSExCQUl6WGtQZWVnbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRAp5VmhEVDBRbEkvTy9FS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2Cld5bCtGb1BEVi92c1ozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXQKak9ic2FRZ0o1TEx4Q1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcQpiWlVERytaaW9BclBtcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkCjlyNnJPQnhweHduVER2SGtCbjZ2QWdNQkFBR2piREJxTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUUKRERBS0JnZ3JCZ0VGQlFjREFUQWZCZ05WSFNNRUdEQVdnQlNGaGxoWWdFZktUcGxWT2VuZVZHMyszSUUvVFRBaQpCZ05WSFJFRUd6QVpnaGNxTG14dlkyRnNhRzl6ZEM1d2IyMWxjbWwxYlM1cGJ6QU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBWUVBcHFWekozUWY5VnFrdWpGYmMwTUJEcVdELzhnamZkN21XMjlmUnRNSVAzemRKbGl5ZXZSajczQUwKaWZYNVpadW5UN24vajUyWnppRmliNGo4dWM0UjZWd0FFN2xMcERlc2ZzTDRBZ3ZHNnVqSmFKTGgrcTZmUEZWbQo4VXdJcjMvSGpaQUdQdmJ3Y2VBTzAwbXRmcW44YUsxS2VLeGZFazlVaFRVV2hzcXVieTg4RWNKVmh4a1RzQUhvCmtLUWtFYWY5TkxhemhaMFAwdTlKLzE0VkdoTU44UVVIdklMVmpja0NEaElqMzhJVUs3VXRaSGtNNzJHbUtyajIKU0M0MElEZE50NHpiMUFUTFZleU9MZHdLandFRmdLV3prdkkvN1VqOXBBMjYvZVlHUFE3b3hSRitJRXhWSWhEcgpFSnZIcldRMHMwRUtOUGRwVS9JaHF0azByWWtqODFwZXFNOFRtSTZ2cXJacUFFUHphMXRZazZXUXN6RG9ucFBXCnVLbGZyOUdZWWY1TXU5YTJ5MjZBZ2x1RG5pQWNuZldqUlhtcjFydlJIQnB6c0xTRDNTVG5QRTV0NkhKaWVQN3IKdjZrL2ZsWFE5U0V3MFUzbEkvblpLS3dpTGZXQzJPNUJwS3dNejE5Y1o4L2tMU0pXSGc0bGtEYjJVbzFKS25pVwora01FSTluTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + CERTIFICATE_AUTHORITY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUUxekNDQXorZ0F3SUJBZ0lRWjEzOWNkL3BhUGRrUzJKeUF1N2tFREFOQmdrcWhraUc5dzBCQVFzRkFEQ0IKZ3pFZU1Cd0dBMVVFQ2hNVmJXdGpaWEowSUdSbGRtVnNiM0J0Wlc1MElFTkJNU3d3S2dZRFZRUUxEQ05qWVd4bApZa0JqWVd4bFlpMXdZeTFzYVc1MWVDQW9RMkZzWldJZ1JHOTRjMlY1S1RFek1ERUdBMVVFQXd3cWJXdGpaWEowCklHTmhiR1ZpUUdOaGJHVmlMWEJqTFd4cGJuVjRJQ2hEWVd4bFlpQkViM2h6WlhrcE1CNFhEVEl4TURneE1ERTMKTXpJd09Wb1hEVE14TURneE1ERTNNekl3T1Zvd2dZTXhIakFjQmdOVkJBb1RGVzFyWTJWeWRDQmtaWFpsYkc5dwpiV1Z1ZENCRFFURXNNQ29HQTFVRUN3d2pZMkZzWldKQVkyRnNaV0l0Y0dNdGJHbHVkWGdnS0VOaGJHVmlJRVJ2CmVITmxlU2t4TXpBeEJnTlZCQU1NS20xclkyVnlkQ0JqWVd4bFlrQmpZV3hsWWkxd1l5MXNhVzUxZUNBb1EyRnMKWldJZ1JHOTRjMlY1S1RDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBTmJLeU16NQpNVlc2WUtkamgxb0lOMU1uN1BFMnBINVNiSlNwV3hkQUdoZEJrQmtwQWE3T3hhcmpINUtWa0NUU2E3b25jbGE3CnFOdUpaUzZtQm1veEYrUitjUjNqeUdkVUFZbG96bDFqbGZxTElmQy8rZzdWN1ZtT0puOTh0akI0MmZhdHhMbDYKV1BBdzFKRE5zV3RRZmhLaGJjSHV0N1JzRjByTU9PSGN3eXdUUjdMT3lDbUllbDFwY21wVjRoYlZjVDZlVndvUApIWHlKU2E5Y3FhTVE1WHJkb2dhaTRJcVpaSUdMSGVMc1RWdXRPZ0pGWEVldmxYL1FUM3NXb21FY3R6aDM4SnM0CjlEaUFQRDZkNFk3L0NQTFlFZmsyOUpROU5aaHBnRHNpOWh1NUZISFpjWHdmMUlIbHcvQ0JWZ242aitqbXZLS3oKOTBNYTFvcXV2M1c2ZHR0aWQveENjTEd1MlMrOTZUenJ5a21veTVWYWNMdFZFUDQxWW1vVmxzOTFybG83b2xwZQpRV0Zibm1jbzczOVRJLzRoK0hvZG9scGVyUUVSUWw3dUNucEtWUFozV29rS3VSaDVwa3FrUXAvYXJRanR3Y1J0Ckc0M0NyRHBibCt1U2pNQ0F4aGE5NThlVFl2dG9qVE1udkx0c0dJRDFoR1hucWx3KzVLaktyZ1JIclFJREFRQUIKbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQWdRd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RQpGZ1FVaFlaWVdJQkh5azZaVlRucDNsUnQvdHlCUDAwd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFBMUYvYXByCmw2cE5UM01wL014aFVVZ282dXNFSkNyeUdRY0xSZmV4eVFYR04zaHVDbUlyUDU1VkZhOEVUUEF0anNyNlBNZTcKN3Z2RWo4ZUZ1Mkp0S292bFF3TmV3WVU5Y2pBTUNWYUZpTmJyUWEyMGh6aFdjMmpzNmR5aWxkRTYvRFB6YmVkcwpLREF4aEZOcDM1U2x3dFJ0S2sxU3p4SnhzcVN3amZ4SThmcCtSLzB3TzhnMGZXVGRNMmdDcFJ3WU1Od0pFTEVnCitkU2x2SkN3dXUrcnp4TGFsemFQRjFQTVRXNzJPRUxhbC9qNXNEKzJWeXRRNGsrSFVEYnl0MkRuUVQ3WVEzem8KcTAyeDJ1MnNtMVdXL28vdWg4cGpQeGtHUXFMMm1yeVpzNlZIOVZDVTNRa0tORHNzTmQ3MWxyM3dQb0U0WVJIZQpVdnpEMWVEZWVsekJVRk5JcERDamRDc0w1NXlJUHFVc3I2bG1qcEJQTDB2ZWEzM1FUTWJjc1N4dTB1bUdYRGJVCjY2anVVNFoxak9FMHdDbEl2YU82OTlKK0UyZ0JlMWpVTjZBdDZiOEJTb1pxQ3FYWW9ESEdlaTlSQlVkdmdxdG8Ka1Zzb0pmREkvVEZNZWtZZ3BMNVVWWW1MZGZncUxQUFJQOXBRQkxEeDNtc3plQXFudmZUSUNBemZYZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + CERTIFICATE_KEY: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQzhITEJBSXpYa1BlZWcKbGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PLwpFS2dDT0ZGeFVEcW9SODJpWTA2U2FjQWpIbmk2K1BPOXRWUmJGVjB3MTRCREFKU3BCK1Z2V3lsK0ZvUERWL3ZzClozMUZ0WXcrRXdxa2JEeC9rYVQ5dXpmK0xKZGxrZjE0blFRajhFa3kvOGQzbVdKYmIvOXRqT2JzYVFnSjVMTHgKQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUAptcW1rYXdVV3czZWtoajgwU0pnL1RLOVBSYU4vVnZjSTFQZ0FkN0xaenRVUmVTbVR5NWhkOXI2ck9CeHB4d25UCkR2SGtCbjZ2QWdNQkFBRUNnZ0VBQjI4aTBBWVVOU2IxSm5XRmJLenJ1VWN0dTN0Q05Yb3ZKZzZLM0JpUFZNa3EKRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBVwo4ZUplcVJMWkVmc1NTSk9YVEc3UmRHc240cUhGSjAwczJaVGxjSUhTUHduRm0rWGpKaTk5VThHNFhzVW9YbzByCkd5KzBWQ3VVN004Z0lDRUhIc3JRTzlYREQzblQyaml1NVRqckt3anV0M0Vtb0pzc0k1YnF4MzMrT0J1NUJwQ1AKQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVApiTGtMRnlXQk5UV1VaMlIvMnd4bXVvQzZtTFp3ODc5TUxDS012azFkb1FLQmdRRGhtd0dhZkpOeW1UaUVRWlJJClNzUXg0c2VxZk9LZmdGQzdvaHFIOWNST091OElKMW83cTJwTTJXNFhpVitTM3dUZFBHbWNhNklPalgyM2lzVkIKMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzNwpheHpsYU1yeEV1M0xJOVVFN050cmRRaUJ5UUtCZ1FEVmRJNmNlSVZCVDZSZ3ZWR3Q4emtMalBJRmpoUUVIQUlwCnVoaXJncXBTNkNYOUJseWYyK280MHptZmozaGU1ckNjRW9CNU1zZU0rRGdGYmNWaDJlL01WbllpTk53NkpDREIKQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleQp1QkhWQnYvNHR3S0JnSHdIdWVQeTVTVTFzMnFTbXpEN1djMkxQZll1M25DT0hOUnJGR2IyNk11UmZ1UmVyaTdyCjJHOFRnb0VTRnljcDBRVElOOCsxSk0wWFlLeE5jSkQ2QjhWMXdLYmJwUXN5bW5lSTFnanV0aUIvSWd3L1BrREsKQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWgpmTjJZZVlieVljYU0xMXAxVmlsdWxWVFZqWTNpL0ZaaURSNFNML0lHSldqTi9Temc0aVhZc0tGbXUrZHVsT1psCmNCQUxwRUtycXBtelhZdHJONmJzdjE4KzVlTzNxR2JLMkRyRXEzZVdWZXYyS29UTW9ieHo3ZysrWEJJV0ptTEEKSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkUwpLcmx0d21vZEhpcVhOYlZrd2JXMUFGUEpiaVlhaTRZRmZLNElBYmlmL1lteGY5Rzc4YU9rcjlacENJek9rRFBaCllwRXdRR1dzQWhFbENGdmM4RS81ZEhFU1NwK3RXdFArTmx1aW1wRnFpRGczL1NVbk13TzJ4SDBuaExhMHplamgKZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + COOKIE_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + DATABROKER_STORAGE_CONNECTION_STRING: postgres://pomerium:password@postgres:5432/test + DATABROKER_STORAGE_TYPE: postgres + DEBUG_FORCE_AUTHENTICATE_FLOW: stateless + DOWNSTREAM_MTLS_CRL: LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tCk1JSUNXakNCd3dJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBNk1SNHdIQVlEVlFRS0V4VnRhMk5sY25RZ1pHVjIKWld4dmNHMWxiblFnUTBFeEdEQVdCZ05WQkFNVEQyUnZkMjV6ZEhKbFlXMGdRMEVnTVJjTk1qTXdOekU1TWpFeApPRFExV2hjTk16TXdOekUyTWpFeE9EUTFXakFqTUNFQ0VFWTlqblU4Vmt0Mk1ZdWVza1JkN2J3WERUSXpNRGN4Ck9USXhNVGMwTjFxZ01EQXVNQjhHQTFVZEl3UVlNQmFBRk5IMU5BejhVajI0UGhDR2RCa0dpMENNUUdNTE1Bc0cKQTFVZEZBUUVBZ0lRQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQTR3M293NGoxRGF1ZmlCQlhoZEMwRUN5WQp6RHhPdUFDZFI0enlvWWJqTjFnMmtjMGJ1Y2hKNytWMGVUWS9SblNOYyt1cU5ZK0xZcHJYUXF1WktscjlkRlVyCnZKL3BYSit1eUxSL016ZWhpVHIzSG9UTENQbGlLWkREYXlQbW9admFxSEQ4SW9HRW5RWDZrQ0Vob3BiN2d0cUoKVTdUZkhhZXhpMHA0M0ZIMDBnblpmYURNa2NBZDh6Q2xzRVhVckFGQ1FSRDFNNVB1Q09UTzdDZVFjSTUzdUJ2ZAo4YUd2eUhsS0EvMk8xN2duaU1uZ2NvQ083Mk5BVWx0SnpNYnVncWVYT29pR0hZb1NzS1RiWTdNZExoWTNNRUJhCjNaa0NGZ3QzSExIVHo1UzBQZUJWclQ3L3k3U3o1Y2owUUEwSktMM0ozcHNuZ1ZicFM0b0h1NmN5dmcvLzdOZEcKS05CcWRhcytLUEFzbVYrM3k2NENyMmhuditXc1dqaXV4RGdJRUZ6cFFPY3lOT1p6bUlTQUN3N1lYandGdUluZQpPaWlNdVlzLzJOdndRMU9QZnEzamczSWY4a0JVY1NWaCtUZTRGSTMrMDd0V1V2TjZuVllDNFZtWEFjRzFIdXhRCkdubmU5ZjVoZ0VKUFZmTFQrdUozMVZWMTYrdkJuWkQ4NURaSlRyRE0KLS0tLS1FTkQgWDUwOSBDUkwtLS0tLQotLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0KTUlJQ05UQ0JuZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREE2TVI0d0hBWURWUVFLRXhWdGEyTmxjblFnWkdWMgpaV3h2Y0cxbGJuUWdRMEV4R0RBV0JnTlZCQU1URDJSdmQyNXpkSEpsWVcwZ1EwRWdNaGNOTWpNd056RTVNakUxCk1ERTFXaGNOTXpNd056RTJNakUxTURFMVdxQXdNQzR3SHdZRFZSMGpCQmd3Rm9BVUN4UTJjQmE1WXpxVnphbXAKaU5DeDhLd0ZGeVF3Q3dZRFZSMFVCQVFDQWhBQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQ1lhbXg4cE0rUgpDbHlza2N1N291aHUvUjFKeTFuV0d5V3RLcGhZcTBYRmJPTGxuazJaN2VEZkFYOEVlajJGYXZxeHphcFIyeDJPCjRpSk5EQ21pd1lZWVVTMlgyTEozclJSSlh5WHZXaHRmSHJ4VVJkNkJpdEMySVhweWtCdFZsZjN6QW5aOEdaRlEKUzFqZGZ5TE11RUFpRHdJYWkzWXQ4SHNEcC9xRzA4OW9YY29TdHlRZy91UnBtV3kwNUE5dUNWT2ZOSFNMU1p1OApscjRxYXRsZXUwd1diVjFhbUw4dE85eDRDUmtPMG8xWWFRcTREb09ydVByKzNOa1RtUHZHaWRoM0Y3MVY2SUVBCmgrS3pkYlJYeEZtQ0NXTFdtcEpEY3JnUjdLVXFaT2hVVXQrRFVxYXFoVjQ0cUkwbnJwUitRWkxvaG9Eb3I5THcKSyt1ZmozbjI5ZVNSWCszUHgrb1ZXUFQ4WVpQMnVLUGRpemk5Nm1lMmpXVHI1MXg5QWpFb0pEc1RuWVJsOSt1WQpTaGlVeFduVGRRc29va25JZmNTLzB6ZmdaODdHdlVWemluQ1F6SnB3VnhkNEFsdDhBbFIrZlhBcU5Jb09ndXl2CnAvQ3RSVm5qVkU3bDdIVy9oUVJxMUowaWpDQ0t3bXlmL0tUZDZFSzRUZHJ2YlgvVTltc1ZNOFk9Ci0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0K + ENVOY_ADMIN_ADDRESS: 0.0.0.0:9901 + GOOGLE_CLOUD_SERVERLESS_AUTHENTICATION_SERVICE_ACCOUNT: ewoiYXV0aF9wcm92aWRlcl94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImF1dGhfdXJpIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKImNsaWVudF9lbWFpbCI6ICJyZWRhY3RlZEBwb21lcml1bS1yZWRhY3RlZC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiJjbGllbnRfaWQiOiAiMTAxMjE1OTkwNDU4MDAwMzM0Mzg3IiwKImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0IiwKInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDOEhMQkFJelhrUGVlZ1xubGRVZlJLSzJqUXhTVlpENWcrcXNqQXpwbXJxL0F0bXdlSzFjR2NPdFo2ZU9MK3A4YnJQRHlWaERUMFFsSS9PL1xuRUtnQ09GRnhVRHFvUjgyaVkwNlNhY0FqSG5pNitQTzl0VlJiRlYwdzE0QkRBSlNwQitWdld5bCtGb1BEVi92c1xuWjMxRnRZdytFd3FrYkR4L2thVDl1emYrTEpkbGtmMTRuUVFqOEVreS84ZDNtV0piYi85dGpPYnNhUWdKNUxMeFxuQ1lkSW1rcjc3WDJMTXVEdy8xdHBINjQyR0UyNU5yZ202UUhseUtTZllYbzM4djgzZWJFcWJaVURHK1ppb0FyUFxubXFta2F3VVd3M2VraGo4MFNKZy9USzlQUmFOL1Z2Y0kxUGdBZDdMWnp0VVJlU21UeTVoZDlyNnJPQnhweHduVFxuRHZIa0JuNnZBZ01CQUFFQ2dnRUFCMjhpMEFZVU5TYjFKbldGYkt6cnVVY3R1M3RDTlhvdkpnNkszQmlQVk1rcVxuRFQxWHJKSWdGNVJISE9scjNPc0xFNnU3WHoyY3RkTUw2UHNoaUtUdEl3dEdwaXZnUnBDaUpFc2xtcjJ6aThBV1xuOGVKZXFSTFpFZnNTU0pPWFRHN1JkR3NuNHFIRkowMHMyWlRsY0lIU1B3bkZtK1hqSmk5OVU4RzRYc1VvWG8wclxuR3krMFZDdVU3TThnSUNFSEhzclFPOVhERDNuVDJqaXU1VGpyS3dqdXQzRW1vSnNzSTVicXgzMytPQnU1QnBDUFxuQ1Q0NzNENDNQOXAzcWkvWG5mdnFHU0cyT2o0T2FqVjRmcjBvOUIzS3ZJeGtNZW03V2xJM2p5eTFrQXB5WHFWVFxuYkxrTEZ5V0JOVFdVWjJSLzJ3eG11b0M2bUxadzg3OU1MQ0tNdmsxZG9RS0JnUURobXdHYWZKTnltVGlFUVpSSVxuU3NReDRzZXFmT0tmZ0ZDN29ocUg5Y1JPT3U4SUoxbzdxMnBNMlc0WGlWK1Mzd1RkUEdtY2E2SU9qWDIzaXNWQlxuMnVxTmk5UzRNbkkyL2QyMkdkL0JSOXJ2QncxZUdKb0ticld4MjJmRThRQ0VXVDFBbk8rRHVEMGpDODV5UmxzN1xuYXh6bGFNcnhFdTNMSTlVRTdOdHJkUWlCeVFLQmdRRFZkSTZjZUlWQlQ2Umd2Vkd0OHprTGpQSUZqaFFFSEFJcFxudWhpcmdxcFM2Q1g5Qmx5ZjIrbzQwem1majNoZTVyQ2NFb0I1TXNlTStEZ0ZiY1ZoMmUvTVZuWWlOTnc2SkNEQlxuQlFrRjQwOHBacFNlS1h2TC9veVYva0ltTVRKL3RVRFkwRVh4TXdTUEpCMFdsdGJXcmVWSUhvcGlnWFJDYmFleVxudUJIVkJ2LzR0d0tCZ0h3SHVlUHk1U1UxczJxU216RDdXYzJMUGZZdTNuQ09ITlJyRkdiMjZNdVJmdVJlcmk3clxuMkc4VGdvRVNGeWNwMFFUSU44KzFKTTBYWUt4TmNKRDZCOFYxd0tiYnBRc3ltbmVJMWdqdXRpQi9JZ3cvUGtES1xuQ0w0VlA0RjRkYTVOV1cxeVdnTnlnTG9KdlovNXFpS0tpc0pjMEdXazRIS3o2bUxnek9qUTJMSnhBb0dCQUxIWlxuZk4yWWVZYnlZY2FNMTFwMVZpbHVsVlRWalkzaS9GWmlEUjRTTC9JR0pXak4vU3pnNGlYWXNLRm11K2R1bE9abFxuY0JBTHBFS3JxcG16WFl0ck42YnN2MTgrNWVPM3FHYksyRHJFcTNlV1ZldjJLb1RNb2J4ejdnKytYQklXSm1MQVxuSGhhYTZJaVBrWUQ1eXlWeUhLRGJlWGdiM285ZXFDUjd3N2ZZTGp5L0FvR0FJNEQrTUZraXZ3VUY3aHFmNWVkU1xuS3JsdHdtb2RIaXFYTmJWa3diVzFBRlBKYmlZYWk0WUZmSzRJQWJpZi9ZbXhmOUc3OGFPa3I5WnBDSXpPa0RQWlxuWXBFd1FHV3NBaEVsQ0Z2YzhFLzVkSEVTU3ArdFd0UCtObHVpbXBGcWlEZzMvU1VuTXdPMnhIMG5oTGEwemVqaFxuZ21MaDR3L0NjUHliOVp5WGNlV1UvblU9XG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAoicHJpdmF0ZV9rZXlfaWQiOiAiZTA3ZjdjOTM4NzBjN2UwM2Y4ODM1NjBlY2Q4ZmQwZjRkMjdiMDA4MSIsCiJwcm9qZWN0X2lkIjogInBvbWVyaXVtLXJlZGFjdGVkIiwKInRva2VuX3VyaSI6ICJodHRwOi8vbW9jay1pZHA6ODAyNC90b2tlbiIsCiJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIKfQ== + IDP_CLIENT_ID: CLIENT_ID + IDP_CLIENT_SECRET: CLIENT_SECRET + IDP_PROVIDER: oidc + IDP_PROVIDER_URL: https://mock-idp.localhost.pomerium.io/ + JWT_CLAIMS_HEADERS: email,groups,user + LOG_LEVEL: info + POLICY: Wwp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vbW9jay1pZHAubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogdHJ1ZSwKInRvIjogImh0dHA6Ly9tb2NrLWlkcDo4MDI0Igp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZW52b3kubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly9sb2NhbGhvc3Q6OTkwMSIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vdmVyaWZ5LmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3ZlcmlmeTo4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiYWxsb3dfd2Vic29ja2V0cyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vd2Vic29ja2V0LWVjaG8ubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHA6Ly93ZWJzb2NrZXQtZWNobzo4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXVpLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL2ZvcnRpbzo4MDgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19jdXN0b21fY2EiOiAiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVXhla05EUVhvclowRjNTVUpCWjBsUldqRXpPV05rTDNCaFVHUnJVekpLZVVGMU4ydEZSRUZPUW1kcmNXaHJhVWM1ZHpCQ1FWRnpSa0ZFUTBJS1ozcEZaVTFDZDBkQk1WVkZRMmhOVm1KWGRHcGFXRW93U1VkU2JHUnRWbk5pTTBKMFdsYzFNRWxGVGtKTlUzZDNTMmRaUkZaUlVVeEVRMDVxV1ZkNGJBcFphMEpxV1ZkNGJGbHBNWGRaZVRGellWYzFNV1ZEUVc5Uk1rWnpXbGRKWjFKSE9UUmpNbFkxUzFSRmVrMUVSVWRCTVZWRlFYZDNjV0pYZEdwYVdFb3dDa2xIVG1oaVIxWnBVVWRPYUdKSFZtbE1XRUpxVEZkNGNHSnVWalJKUTJoRVdWZDRiRmxwUWtWaU0yaDZXbGhyY0UxQ05GaEVWRWw0VFVSbmVFMUVSVE1LVFhwSmQwOVdiMWhFVkUxNFRVUm5lRTFFUlROTmVrbDNUMVp2ZDJkWlRYaElha0ZqUW1kT1ZrSkJiMVJHVnpGeVdUSldlV1JEUW10YVdGcHNZa2M1ZHdwaVYxWjFaRU5DUkZGVVJYTk5RMjlIUVRGVlJVTjNkMnBaTWtaeldsZEtRVmt5Um5OYVYwbDBZMGROZEdKSGJIVmtXR2RuUzBWT2FHSkhWbWxKUlZKMkNtVklUbXhsVTJ0NFRYcEJlRUpuVGxaQ1FVMU5TMjB4Y2xreVZubGtRMEpxV1ZkNGJGbHJRbXBaVjNoc1dXa3hkMWw1TVhOaFZ6VXhaVU5CYjFFeVJuTUtXbGRKWjFKSE9UUmpNbFkxUzFSRFEwRmhTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblIxQkJSRU5EUVZsdlEyZG5SMEpCVG1KTGVVMTZOUXBOVmxjMldVdGthbWd4YjBsT01VMXVOMUJGTW5CSU5WTmlTbE53VjNoa1FVZG9aRUpyUW10d1FXRTNUM2hoY21wSU5VdFdhME5VVTJFM2IyNWpiR0UzQ25GT2RVcGFVelp0UW0xdmVFWXJVaXRqVWpOcWVVZGtWVUZaYkc5NmJERnFiR1p4VEVsbVF5OHJaemRXTjFadFQwcHVPVGgwYWtJME1tWmhkSGhNYkRZS1YxQkJkekZLUkU1elYzUlJabWhMYUdKalNIVjBOMUp6UmpCeVRVOVBTR04zZVhkVVVqZE1UM2xEYlVsbGJERndZMjF3VmpSb1lsWmpWRFpsVm5kdlVBcElXSGxLVTJFNVkzRmhUVkUxV0hKa2IyZGhhVFJKY1ZwYVNVZE1TR1ZNYzFSV2RYUlBaMHBHV0VWbGRteFlMMUZVTTNOWGIyMUZZM1I2YURNNFNuTTBDamxFYVVGUVJEWmtORmszTDBOUVRGbEZabXN5T1VwUk9VNWFhSEJuUkhOcE9XaDFOVVpJU0ZwaldIZG1NVWxJYkhjdlEwSldaMjQyYWl0cWJYWkxTM29LT1RCTllURnZjWFYyTTFjMlpIUjBhV1F2ZUVOalRFZDFNbE1yT1RaVWVuSjVhMjF2ZVRWV1lXTk1kRlpGVURReFdXMXZWbXh6T1RGeWJHODNiMnh3WlFwUlYwWmlibTFqYnpjek9WUkpMelJvSzBodlpHOXNjR1Z5VVVWU1VXdzNkVU51Y0V0V1VGb3pWMjlyUzNWU2FEVndhM0ZyVVhBdllYSlJhblIzWTFKMENrYzBNME55UkhCaWJDdDFVMnBOUTBGNGFHRTVOVGhsVkZsMmRHOXFWRTF1ZGt4MGMwZEpSREZvUjFodWNXeDNLelZMYWt0eVoxSkljbEZKUkVGUlFVSUtiekJWZDFGNlFVOUNaMDVXU0ZFNFFrRm1PRVZDUVUxRFFXZFJkMFZuV1VSV1VqQlVRVkZJTDBKQlozZENaMFZDTDNkSlFrRkVRV1JDWjA1V1NGRTBSUXBHWjFGVmFGbGFXVmRKUWtoNWF6WmFWbFJ1Y0ROc1VuUXZkSGxDVURBd2QwUlJXVXBMYjFwSmFIWmpUa0ZSUlV4Q1VVRkVaMmRIUWtGQk1VWXZZWEJ5Q213MmNFNVVNMDF3TDAxNGFGVlZaMjgyZFhORlNrTnllVWRSWTB4U1ptVjRlVkZZUjA0emFIVkRiVWx5VURVMVZrWmhPRVZVVUVGMGFuTnlObEJOWlRjS04zWjJSV280WlVaMU1rcDBTMjkyYkZGM1RtVjNXVlU1WTJwQlRVTldZVVpwVG1KeVVXRXlNR2g2YUZkak1tcHpObVI1YVd4a1JUWXZSRkI2WW1Wa2N3cExSRUY0YUVaT2NETTFVMngzZEZKMFMyc3hVM3A0U25oemNWTjNhbVo0U1RobWNDdFNMekIzVHpobk1HWlhWR1JOTW1kRGNGSjNXVTFPZDBwRlRFVm5DaXRrVTJ4MlNrTjNkWFVyY25wNFRHRnNlbUZRUmpGUVRWUlhOekpQUlV4aGJDOXFOWE5FS3pKV2VYUlJOR3NyU0ZWRVlubDBNa1J1VVZRM1dWRXplbThLY1RBeWVESjFNbk50TVZkWEwyOHZkV2c0Y0dwUWVHdEhVWEZNTW0xeWVWcHpObFpJT1ZaRFZUTlJhMHRPUkhOelRtUTNNV3h5TTNkUWIwVTBXVkpJWlFwVmRucEVNV1ZFWldWc2VrSlZSazVKY0VSRGFtUkRjMHcxTlhsSlVIRlZjM0kyYkcxcWNFSlFUREIyWldFek0xRlVUV0pqYzFONGRUQjFiVWRZUkdKVkNqWTJhblZWTkZveGFrOUZNSGREYkVsMllVODJPVGxLSzBVeVowSmxNV3BWVGpaQmREWmlPRUpUYjFweFEzRllXVzlFU0VkbGFUbFNRbFZrZG1keGRHOEthMVp6YjBwbVJFa3ZWRVpOWld0WlozQk1OVlZXV1cxTVpHWm5jVXhRVUZKUU9YQlJRa3hFZUROdGMzcGxRWEZ1ZG1aVVNVTkJlbVpZWnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyIsCiJ0bHNfc2VydmVyX25hbWUiOiAiZm9ydGlvLXBpbmcubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRvIjogImh0dHBzOi8vZm9ydGlvOjgwNzkiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy1pcC1hZGRyZXNzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovLzE3Mi4yMC4wLjUwOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNraXAtdmVyaWZ5LWVuYWJsZWQiLAoidGxzX3NraXBfdmVyaWZ5IjogdHJ1ZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1za2lwLXZlcmlmeS1kaXNhYmxlZCIsCiJ0bHNfc2tpcF92ZXJpZnkiOiBmYWxzZSwKInRvIjogImh0dHBzOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1zZXJ2ZXItbmFtZS1lbmFibGVkIiwKInRsc19zZXJ2ZXJfbmFtZSI6ICJodHRwZGV0YWlscy5sb2NhbGhvc3Qubm90cG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cHM6Ly93cm9uZ2x5LW5hbWVkLWh0dHBkZXRhaWxzOjg0NDMiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvdGxzLXNlcnZlci1uYW1lLWRpc2FibGVkIiwKInRvIjogImh0dHBzOi8vd3JvbmdseS1uYW1lZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZW5hYmxlZCIsCiJ0bHNfY3VzdG9tX2NhIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVV5UkVORFFUQkRaMEYzU1VKQlowbFNRVXhrT1VkaFNsSTVNbkZwTjNGTU1XVklSMDAyU3pCM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYY0taMWxOZUVocVFXTkNaMDVXUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZ6VFVOdlIwRXhWVVZEZDNkcVdUSkdjd3BhVjBwQldUSkdjMXBYU1hSalIwMTBZa2RzZFdSWVoyZExSVTVvWWtkV2FVbEZVblpsU0U1c1pWTnJlRTE2UVhoQ1owNVdRa0ZOVFV0dE1YSlpNbFo1Q21SRFFtcFpWM2hzV1d0Q2FsbFhlR3haYVRGM1dYa3hjMkZYTlRGbFEwRnZVVEpHYzFwWFNXZFNSemswWXpKV05VdFVRV1ZHZHpCNVRWUkJORTFVUlhrS1RWUlZNazFVUW1GR2R6QjZUVlJCTkUxVVJYbE5WRlV5VFZSQ1lVMUpSMFJOVWpSM1NFRlpSRlpSVVV0RmVGWjBZVEpPYkdOdVVXZGFSMVl5V2xkNGRncGpSekZzWW01UloxRXdSWGhNUkVGeFFtZE9Wa0pCYzAxSk1rNW9Za2RXYVZGSFRtaGlSMVpwVEZoQ2FreFhlSEJpYmxZMFNVTm9SRmxYZUd4WmFVSkZDbUl6YUhwYVdHdHdUVlJOZDAxUldVUldVVkZFUkVOd2RHRXlUbXhqYmxGbldUSkdjMXBYU2tGWk1rWnpXbGRKZEdOSFRYUmlSMngxWkZoblowdEZUbWdLWWtkV2FVbEZVblpsU0U1c1pWTnJkMmRuUjJsTlFUQkhRMU54UjFOSllqTkVVVVZDUVZGVlFVRTBTVUpxZDBGM1oyZEhTMEZ2U1VKblVVUlhXWEJXWlFwQ1UyNWxaVEpqUVVKWmIyWlRiMWQ0UjAxNVJtRk5VVEJ1U210Wk1GVlhUVGxqYTNsVmFEZFdabWRPS3k5aFJsTlhNbHBUYlZoMWRqVmtjbU53YVRJd0Nub3paV3hvVUZSbE9UaGlRVTVpYWlzdllta3dNREUxVVZkdVRXVnVTekExV2tzMmNVUjBSbmR2TDBoV1F5OVpZMkZ5ZFhVNU5pc3hTakowYjJWWGRVVUtkSGxyVnpOTlEzQkRNWEJJV1ZNMVp6bHBWa1JyY0dSeWVtNTJXRXRzV1hWVGFXdHFjbW8zU3pWMGIybFVkblZ0T1RkTWVFdHJkV28yUkZocVlYQlFSQW8xZG5SbFUwNHhaRkZuVHpsRFV6TnpjV3hqZDFsQk5sSnFWVWgzV1RKV1JXZ3lZV1JRTXpkQ1duSmFkMDhyZVVweE9YRkdOWGsxUjJ4bmFUaHNUalJqQ2t0c1NXeEdWWE12ZUZOd1VYTjRUbUpPVVZoMFRqbHRhelJwYlZsc1drZDZXVmxpWW0wclptOUNWbEJRWW05aE5XcFdkMHRFY0ZvMk5XMVBjemRLUjFBS05ubHFLemRXTjFWQ1RVWndWeXRuUzIxS2RHZG9MMnRyUVhneE9EVm9PVE54ZDB4R1VHTTRMMVEzYmlzclVERmlkU3RtWVd0WVVFZFFSVEl4Y2tSbFRBcFFibFZ0ZFdOSlduQktielZPY0ZsV1VYWTBWM1pVUzNFdmVrMVNPVk56Y0hveVVFWktia1ZTVkdaVWRuRXJSakZ4TTFwT1lXWkZlbWxRYzBJNWIyVlRDbTVxZUhkdFlWcFBVMVl3ZGxoeEwzRmxiM0Y0TkhZMlRVSjZWa0ZaTUM4NFVqSk1ZM0JLTkhWbk1FOWFNM2N3WWpKME5ubHZPRFpRTlZFNFEwRjNSVUVLUVdGT1JrMUZUWGRFWjFsRVZsSXdVRUZSU0M5Q1FWRkVRV2RKUlUxQ1NVZEJNVlZrUlhkRlFpOTNVVWxOUVZsQ1FXWTRRMEZSUVhkSVVWbEVWbEl3VHdwQ1FsbEZSa3hqV1RoRmIwNXZaazFqY25KNGVubDRTVzR6VnpaYVQwMVdXRTFCTUVkRFUzRkhVMGxpTTBSUlJVSkRkMVZCUVRSSlFtZFJRMXA2UkVOMkNrdEpTRmd6UjNacVRsTlpOWGMxWWs5dU5FVXpkemRSU0ZBd09VRkNhbFF2ZDNWVU5FeEVhMXBJU2sxdGJISk1iek56T0dKamMxRXdjMDFFTVZrdkx5OEtjekEzWTNBMGVGbHNjVVEzUWtFd1FXTndkbGxXV1hFMU9IaExlSE52UTNkV1dHMUhOV05GWlU5dldtMVhaak54V1RKdFV6aGxWemsyZGs5R2NtUkpZZ3BNTkU5R05IaFpWVTlOVW5GQlQwZEJRWEkyVm14UE4yZFlZVFF3TmtoNmNuTkJNV2haV25keVpWaG9UMVJEV2xwUVdrOVZia0YxTURWVFNFWmtaMkZOQ2xSS1RrSXZiekF4ZEhCM1VXeHlWSGhPYldaeWIzQnZUM3A1ZFhaSU1IcFZNbEp5VFhNd0swVmlUM1ZETkVFeVkxRTRNMFJKUm5oMmNUWTNiSGxWTUVFS2N6RlJOblJTVFRBclZVUnRTazlNZWpOVFpHZE9LMFF3TUdoamRYVnFPVEpIVmpSaVNEaENabmxWZGpoT1Exa3dka1JwYWpCVVUycHFOR00wVVhSak53cEpVRXhVV2pKbk5UUTFiMk42YUU1blFXMVVOMlFyUWpWSmJubG1hVk5KUzJWdFdIRmxjekpxY0dsQlpucFFUbXc1UWxaNGMyRnJZM012V1hwdldYTXhDaXR4VkdwQlYzVmhSSE5MYjJoRmJrODBRa3AxZW5Zd2VISmpaVFF3Wlc1U1oxaDVSMGRHZGxoMU1uTTBSbGt5ZGtweFZGTnZObmx6UkZkdWFFa3pURmNLWkdObk5rOHlSalJCVUVOSFIyVTNlbk4xY1dseGEzQmphMjVDWVdKbmVrVnpPV1p2U0hFeWJXWnZOMWhwUlhwbFpFMU9PRUpPY1daVFlrRTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsiLAoidGxzX3NlcnZlcl9uYW1lIjogImh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJ0byI6ICJodHRwczovL3VudHJ1c3RlZC1odHRwZGV0YWlsczo4NDQzIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vaHR0cGRldGFpbHMubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInBhdGgiOiAiL3Rscy1jdXN0b20tY2EtZGlzYWJsZWQiLAoidG8iOiAiaHR0cHM6Ly91bnRydXN0ZWQtaHR0cGRldGFpbHM6ODQ0MyIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtcmVxdWlyZWQubG9jYWxob3N0LnBvbWVyaXVtLmlvIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2ExIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVV0dGRHb3hkU3RvVDJSNlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjRUVUkwV0VSVVNYcE5SRmwzVDBSRk5FNVVaM2xOYkc5WVJGUk5lazFFV1hkUFJFVTBUbFJuZVUxc2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVJYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlJIVmxNMloxU1Rjd05FUmhlbVYzWkZkdFMwcFJjd3BaUjFsU01scGhjRkZSWlZGNWJsaGhjVTlvY1UxUFRGUmpOMDB4T0hWV1QyNW1hSFpHVm5SVlFqVlBRM1I0VERKVVRXMTVPQzk1ZEVsUmJGVTRRMVZqQ21KVmJ6RkJSbU5ZZFRGTlIwOVNTazUxTlhwaVNubHRjM0pQUlRobVMzRnZjR0l6YlhWSFRsSk5OblIxYkVsSWFIQlNRMk5HTTIwNGNFdEdRbHBDVjNNS1ExSTNRVEpOYUdkTFNFcDJaREY1Vmsxak5pOUhjRTh2VW5GSlNHbEdRV2xEVmpsWVozVmhaRXRVZDJGd1VFbzFOSFpLZDBKRVdtOUVUVFF2Y1VFek5BcDRSbEl4ZFVOQmVtOWlNRVEwZVVaWEwwTTNkVFUzVTAxYVJHcFRlVEpxZUhoYWEyTkdVVUYyYlZKUVVHZDZkWFJoUVVoMVVsVlZibEJvZHpObU9WQkdDaXRFVEU1RVpXODJhMWhrVXpaaFVVOWlMM2RsUTFCc0wxWnFiSE5yV0hsMlowNTFla2RGTW5ocGVGcFpRbEYzY0ZoQlJUaEJkVUpqV0U1MmJIaFVNRlFLTVc5NWIxVTRZV2RuZVcxdVZFWlhia3h0VGk5cGNGRTNLemxEU0ZNeUsyRndSa1JITjI1eVpqbHhOVlZuVEhSU2FWWk1UM2wwYjFaNFYwUlBhRzlaTlFwd2NXSlRNRFZoUkdwWFdHSlllVkJtTW1Vek1UaE9kR3BqTmtoc04yNVRabVpJYkVOSGMySXZlbkZwU201S1dEWjBhUzlyTUZaU01WZElTbHA1ZFRkbENrTlpaWFVyYlhSeFRrRlVjbE0zYUN0dVFsVk5UbG81UW1JeFJVbElVVTlLTDNsNVZHOVZUSGt2YmtWRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWk9TREZPUVhvNFZXb3lOQXBRYUVOSFpFSnJSMmt3UTAxUlIwMU1UVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNiSFI1YlRob1VtZFlVMEZoUjFSYVFXTnBRMEpqQ25OU2RIbEZhMUUxT0RSdlNGVnBUMjFoUzNaSlZHcHVTSGx6TDBWcFJWUnVUbUY0VW5jM2RDODJPVVJMWlRWbk5GVmhjV2RrYkUxM1pXTnFTbXN2U0d3S2FsTjJXRWswYlVGVlJWSnJZMGxLU1VWS2MzQk5ZWEJ6UlhBMVVXTlVRV3gyYzJ0dldHcE9VRVp5VDFjcmVEQnBUMHhrUVUwME1YZzFhMEpFVVZKcll3b3JUakpwWlRCSlZFbzFXbGcxTXpCQmFUUjFhM1EzTms1YVRrbFBhVzgxZUc5SWN6RnhNVGN3YTI0MmVIZG1VekV5ZURGbk4wTnJjMGhzVGpWTlluY3hDbmQwUmtabFRHWlJRMXBXV0ZCT2MzQklOMHhJU2xWcmNsVk1VMVI1YUd4bFdrWktNMXBhY1hGVU9XOTVZbkJFVldoa1drSXdibHBLTmxwRE1VcHBVVzhLTWtoTmQwbEdWaXRQYzBWRlJ6ZG1UbnBJYUdKV1MyRktiV0ZwVDJsWE1uUXZRM0JzZEdWaVZreFRWR2x1ZWpKTWJWcG9lbFpHVWxRcmVTOWpaR2h1TXdvMVNYTlJTSHBIZDBWTFMzUk1OVmhtY1VwcWNWZG9jbmtyYlhjdmRtSXJVbnBsTm5sNU9VeHBOMFpyUW01bGRGRnhPRlJpTUdFeWRTOVZTSGw2Y1ZSQkNrNVdhSFV4ZDJkaVVrUTVNM1p1V25GSFQydGlNR2Q2VFZKUVNrTXZTMmxpVG5aR1VtWmhaVVJZUkU5cFZ6WTVUbkJ0TDNoNFdFSlBMMDE1TUVOWFJqRUtjRGRqVVVOclozQnJVM1J1VjBWdGJTODBPRmRwZDBkalJsZFVRekpYSzIxcGJYTTNTbU5KY0ZOd1l6MEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfYW55X2F1dGhlbnRpY2F0ZWRfdXNlciI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vY2xpZW50LWNlcnQtb3ZlcmxhcC5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGF0aCI6ICIvY2EyIiwKInRsc19kb3duc3RyZWFtX2NsaWVudF9jYSI6ICJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VWUVJFTkRRWEZUWjBGM1NVSkJaMGxLUVZCcWRtZE1Za1ZKVm1vdlRVRXdSME5UY1VkVFNXSXpSRkZGUWtOM1ZVRk5SRzk0U0dwQlkwSm5UbFlLUWtGdlZFWlhNWEpaTWxaNVpFTkNhMXBZV214aVJ6bDNZbGRXZFdSRFFrUlJWRVZaVFVKWlIwRXhWVVZCZUUxUVdrYzVNMkp1VGpCamJWWm9ZbE5DUkFwUlUwRjVUVUkwV0VSVVNYcE5SRmwzVDFSQmQwNUVVWHBQUm05WVJGUk5lazFFV1hkUFZFRjNUa1JSZWs5R2IzZFBha1ZsVFVKM1IwRXhWVVZEYUUxV0NtSlhkR3BhV0Vvd1NVZFNiR1J0Vm5OaU0wSjBXbGMxTUVsRlRrSk5VbWQzUm1kWlJGWlJVVVJGZHpscllqTmtkV016VW5sYVYwWjBTVVZPUWtsRVNYY0taMmRIYVUxQk1FZERVM0ZIVTBsaU0wUlJSVUpCVVZWQlFUUkpRbXAzUVhkblowZExRVzlKUW1kUlF5ODRTMjluTWxwNk9HVTJPRVZIY0dacFdFNDNkUXBZWjJGMU16aG9Oak41WkhOd2RXTnlhbWgwYmxOVVYxaDBTRTh4YUZsTWJWVlpWMEZsZDJrM09XbEhXWHBQZFZsblYwTkVNMk5HZUdRcmRFMUxUSEpDQ25sdmNtbEtNMHRwYjFSMFdUQndiWGxNUkVveFZGaE5VMkZHUjJkdVduRnFXRWh0YWsxMmFXOHdlQzlxVVU1clEySlphMFpDUjFGVFdscDJhMEU0YzFFS2JUVkJjMUpFWlVsVlVHdFFiR2hHVFc1aU1uZzBhVkpqVEVKUU5ucEVUa1ptV0N0NU1YRlRiMnhMWW1nelN6a3ZSVE5RVkRSVmJtcGhPR2RQWW5wRFNncHVjazlqUmpWVFFuRlVUMnBTU0dsbUwxTXZkMW81VkZOR1YzcE1iWEZIVEdoeE56TlNZV2g1VkdsaFdWQTBObFYyU21oeVRtSTFUVzg1U0dKaU9UUXZDalI2VXpWQ01scDFielJ3YzJoVFdrUlhjSEYzZGtKbFkxRk9NRlpoVEZaMlNYbHRkVk41WnpWVWVuVklOR3QwVFRCd2RIcDJObkpZYVc1RWJHRTNjbm9LVFhVdlJuSkdWbEZRYTNOUGFGUkVkRFZWUTFOeFQwUjNVRnBwVHpkbk5WTlVNSE1yYWsxd1luQXhXRTQ0UzFBeWNISjBSV3hWVjJSaFluWkliR0l3VFFwRU1rVXdhRWhXYVRRME5GbHJVWGhhWVVOdlpXUXliMkp5VkVJeVJHWXlRM2RJUVZSblJrdDJURVl4VTBkVE1sRTVkakJ3WWxWak5sb3JNRzg1TVRKaUNtNVNaa2Q2YVRKd04ybENjMWRWVEhWSlRra3pibUpPUVhwc2JWZFFiVWRwZDFZeFUxa3hXVEJrVlRoRFFYZEZRVUZoVGtaTlJVMTNSR2RaUkZaU01GQUtRVkZJTDBKQlVVUkJaMFZIVFVKSlIwRXhWV1JGZDBWQ0wzZFJTVTFCV1VKQlpqaERRVkZCZDBoUldVUldVakJQUWtKWlJVWkJjMVZPYmtGWGRWZE5OZ3BzWXpKd2NWbHFVWE5tUTNOQ1VtTnJUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsQ1oxRkNWVFpaYVZKWVVUUnFhM0p4ZFdkMGRVeHFNbUUxQ2tGUksxVlNVR3htYTBaR1RqQkNSSEJYUTBsNlZqVXdkeXRaTVZwMFNESklka2RZTkRSNlJHcGlVVlIzZGl0QlZUUlVLMFkzTlVNNFVHNWpOWGwyV1c4S2RqWkdTVTFQVDFwSmNuWnBiRzlyZVZabU0yUkxVa016V1RKalVXRmpOSFUyTkdGUmF5dFlVaTl4YW1sWmIwWkxNRUk1ZVhjNFZVRXpUemQzUVRRMllncGpaVzlhVlVaYVRHTTFiMU56YmtJNWRGYzNNbWs0YkVWclFrWjBNbGcyTW5KeFUxRk9SMWwwZWtOV05qUmlUU3RsZWtOelFsbFFZVU5KUzFjd1FWSkNDakJEWWs1R1IyOWhVRXA2UVhWMVIzVnJkazlqUWtSNWRFb3pVa3BDV0VvM2JETTJNalpMVGtkNFEweHpVazFqUkdOVWVIWllRbVkzWjBaWGRHVjBWemtLYTNWdlpuWnNTazFwVUdrelFrUk5iQzlHUVVVMWFXdHFNRlZTTkRkeWFsbFZlRTB5VTBZMlJpdDZPSEJGWTFCalpWQlRXWHBEYkUxRlEwdzVZUzh3TWdwSk1USnpSVzVWTTFKbUsxSndkMU5VU0ZORGFubFlSM1JYYkRSa1IxTktiRTlGYkhkeVdVMUNRWGxZTmpKa1prWlpPVWRGUjJkSVEyNTVUekYwYWpNNUNrcEphR2RwU1VKRlduTkNURGxNVDA5TE9IWlVXWHBhTld0Q2Exb3hUbGhvTWtKcU0yNVRMMEl2VFRWNmIzUndOQzlUTmxBek1FeHBORFF2U21Kd2RtTUtOekJtV0hKMVJqWTVlbmRRVFdNMVlqTjROM2xZTjJoUVRGbElhekJvYlROQ1QxZGhiMlJRU1RSME1EMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiY29yc19hbGxvd19wcmVmbGlnaHQiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZW5hYmxlZCIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJjb3JzX2FsbG93X3ByZWZsaWdodCI6IGZhbHNlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL2NvcnMtZGlzYWJsZWQiLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWVuYWJsZWQiLAoicHJlc2VydmVfaG9zdF9oZWFkZXIiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwcmVmaXgiOiAiL3ByZXNlcnZlLWhvc3QtaGVhZGVyLWRpc2FibGVkIiwKInByZXNlcnZlX2hvc3RfaGVhZGVyIjogZmFsc2UsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9yZXN0cmljdGVkLWh0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF9kb21haW5zIjogWwoiZG9ncy50ZXN0IgpdLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoicHJlZml4IjogIi9ieS1kb21haW4iLAoidG8iOiAiaHR0cDovL3RydXN0ZWQtaHR0cGRldGFpbHM6ODA4MCIKfSwKewoiYWxsb3dlZF91c2VycyI6IFsKInVzZXIxQGRvZ3MudGVzdCIKXSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoicGFzc19pZGVudGl0eV9oZWFkZXJzIjogdHJ1ZSwKInByZWZpeCI6ICIvYnktdXNlciIsCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJPVU5EX1JPQklOIiwKInByZWZpeCI6ICIvcm91bmQtcm9iaW4iLAoidG8iOiBbCiJodHRwOi8vdHJ1c3RlZC0xLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMi1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTMtaHR0cGRldGFpbHM6ODA4MCIKXQp9LAp7CiJhbGxvd19hbnlfYXV0aGVudGljYXRlZF91c2VyIjogdHJ1ZSwKImZyb20iOiAiaHR0cHM6Ly9odHRwZGV0YWlscy5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoibGJfcG9saWN5IjogIlJJTkdfSEFTSCIsCiJwcmVmaXgiOiAiL3JpbmctaGFzaCIsCiJ0byI6IFsKImh0dHA6Ly90cnVzdGVkLTEtaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0yLWh0dHBkZXRhaWxzOjgwODAiLAoiaHR0cDovL3RydXN0ZWQtMy1odHRwZGV0YWlsczo4MDgwIgpdCn0sCnsKImFsbG93X2FueV9hdXRoZW50aWNhdGVkX3VzZXIiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJsYl9wb2xpY3kiOiAiTUFHTEVWIiwKInByZWZpeCI6ICIvbWFnbGV2IiwKInRvIjogWwoiaHR0cDovL3RydXN0ZWQtMS1odHRwZGV0YWlsczo4MDgwIiwKImh0dHA6Ly90cnVzdGVkLTItaHR0cGRldGFpbHM6ODA4MCIsCiJodHRwOi8vdHJ1c3RlZC0zLWh0dHBkZXRhaWxzOjgwODAiCl0KfSwKewoiYWxsb3dfcHVibGljX3VuYXV0aGVudGljYXRlZF9hY2Nlc3MiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2h0dHBkZXRhaWxzLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIlgtQ3VzdG9tLVJlcXVlc3QtSGVhZGVyIjogImN1c3RvbS1yZXF1ZXN0LWhlYWRlci12YWx1ZSIKfSwKInRvIjogImh0dHA6Ly90cnVzdGVkLWh0dHBkZXRhaWxzOjgwODAiCn0sCnsKImFsbG93X3B1YmxpY191bmF1dGhlbnRpY2F0ZWRfYWNjZXNzIjogdHJ1ZSwKImFsbG93X3dlYnNvY2tldHMiOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2VuYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJmcm9tIjogImh0dHBzOi8vZGlzYWJsZWQtd3MtZWNoby5sb2NhbGhvc3QucG9tZXJpdW0uaW8iLAoidG8iOiAiaHR0cDovL3dlYnNvY2tldC1lY2hvOjgwIgp9LAp7CiJhbGxvd19wdWJsaWNfdW5hdXRoZW50aWNhdGVkX2FjY2VzcyI6IHRydWUsCiJlbmFibGVfZ29vZ2xlX2Nsb3VkX3NlcnZlcmxlc3NfYXV0aGVudGljYXRpb24iOiB0cnVlLAoiZnJvbSI6ICJodHRwczovL2Nsb3VkcnVuLmxvY2FsaG9zdC5wb21lcml1bS5pbyIsCiJwYXNzX2lkZW50aXR5X2hlYWRlcnMiOiB0cnVlLAoic2V0X3JlcXVlc3RfaGVhZGVycyI6IHsKIngtaWRwIjogIm9pZGMiCn0sCiJ0byI6ICJodHRwOi8vdHJ1c3RlZC1odHRwZGV0YWlsczo4MDgwIgp9Cl0= + SHARED_SECRET: UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w= + SIGNING_KEY: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBSR1d3TGg3NW5OWG5razM3ekRmTjhvbkx3ZkNpYUxQVEQrbmM4THg1aGNvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFa3BCa08wVEttaDRKZFFmTE9lZU1kNTNLbmdhMVdkUVhyNUZjZXBrK2RMVktkVkt4WENHcQpoMW9qdWh1VzExR0lvT3pTOUdvU0tsTlZTUkZXVkVXRHZ3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + SIGNING_KEY_ALGORITHM: ES256 + image: pomerium/pomerium:${POMERIUM_TAG:-main} + networks: + main: + aliases: + - pomerium + - authenticate.localhost.pomerium.io + ports: + - 80:80/tcp + - 443:443/tcp + - 9901:9901/tcp + postgres: + environment: + POSTGRES_DB: test + POSTGRES_PASSWORD: password + POSTGRES_USER: pomerium + image: postgres:14.3-alpine + networks: + main: + aliases: + - postgres + postgres-ready: + command: + - -wait + - tcp://postgres:5432 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - postgres-ready + trusted-1-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-1-httpdetails + trusted-1-httpdetails-ready: + command: + - -wait + - http://trusted-1-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-1-httpdetails-ready + trusted-2-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-2-httpdetails + trusted-2-httpdetails-ready: + command: + - -wait + - http://trusted-2-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-2-httpdetails-ready + trusted-3-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKNaEqCmmZfhmcYgZy01WCswDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDA4NDRaFw0zMzExMDcyMDA4NDRaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8 + HLBAIzXkPeegldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPD + yVhDT0QlI/O/EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+Vv + Wyl+FoPDV/vsZ31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9t + jObsaQgJ5LLxCYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEq + bZUDG+ZioArPmqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd + 9r6rOBxpxwnTDvHkBn6vAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEApqVzJ3Qf9VqkujFbc0MBDqWD/8gjfd7mW29fRtMIP3zdJliyevRj73AL + ifX5ZZunT7n/j52ZziFib4j8uc4R6VwAE7lLpDesfsL4AgvG6ujJaJLh+q6fPFVm + 8UwIr3/HjZAGPvbwceAO00mtfqn8aK1KeKxfEk9UhTUWhsquby88EcJVhxkTsAHo + kKQkEaf9NLazhZ0P0u9J/14VGhMN8QUHvILVjckCDhIj38IUK7UtZHkM72GmKrj2 + SC40IDdNt4zb1ATLVeyOLdwKjwEFgKWzkvI/7Uj9pA26/eYGPQ7oxRF+IExVIhDr + EJvHrWQ0s0EKNPdpU/Ihqtk0rYkj81peqM8TmI6vqrZqAEPza1tYk6WQszDonpPW + uKlfr9GYYf5Mu9a2y26AgluDniAcnfWjRXmr1rvRHBpzsLSD3STnPE5t6HJieP7r + v6k/flXQ9SEw0U3lI/nZKKwiLfWC2O5BpKwMz19cZ8/kLSJWHg4lkDb2Uo1JKniW + +kMEI9nN + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8HLBAIzXkPeeg + ldUfRKK2jQxSVZD5g+qsjAzpmrq/AtmweK1cGcOtZ6eOL+p8brPDyVhDT0QlI/O/ + EKgCOFFxUDqoR82iY06SacAjHni6+PO9tVRbFV0w14BDAJSpB+VvWyl+FoPDV/vs + Z31FtYw+EwqkbDx/kaT9uzf+LJdlkf14nQQj8Eky/8d3mWJbb/9tjObsaQgJ5LLx + CYdImkr77X2LMuDw/1tpH642GE25Nrgm6QHlyKSfYXo38v83ebEqbZUDG+ZioArP + mqmkawUWw3ekhj80SJg/TK9PRaN/VvcI1PgAd7LZztUReSmTy5hd9r6rOBxpxwnT + DvHkBn6vAgMBAAECggEAB28i0AYUNSb1JnWFbKzruUctu3tCNXovJg6K3BiPVMkq + DT1XrJIgF5RHHOlr3OsLE6u7Xz2ctdML6PshiKTtIwtGpivgRpCiJEslmr2zi8AW + 8eJeqRLZEfsSSJOXTG7RdGsn4qHFJ00s2ZTlcIHSPwnFm+XjJi99U8G4XsUoXo0r + Gy+0VCuU7M8gICEHHsrQO9XDD3nT2jiu5TjrKwjut3EmoJssI5bqx33+OBu5BpCP + CT473D43P9p3qi/XnfvqGSG2Oj4OajV4fr0o9B3KvIxkMem7WlI3jyy1kApyXqVT + bLkLFyWBNTWUZ2R/2wxmuoC6mLZw879MLCKMvk1doQKBgQDhmwGafJNymTiEQZRI + SsQx4seqfOKfgFC7ohqH9cROOu8IJ1o7q2pM2W4XiV+S3wTdPGmca6IOjX23isVB + 2uqNi9S4MnI2/d22Gd/BR9rvBw1eGJoKbrWx22fE8QCEWT1AnO+DuD0jC85yRls7 + axzlaMrxEu3LI9UE7NtrdQiByQKBgQDVdI6ceIVBT6RgvVGt8zkLjPIFjhQEHAIp + uhirgqpS6CX9Blyf2+o40zmfj3he5rCcEoB5MseM+DgFbcVh2e/MVnYiNNw6JCDB + BQkF408pZpSeKXvL/oyV/kImMTJ/tUDY0EXxMwSPJB0WltbWreVIHopigXRCbaey + uBHVBv/4twKBgHwHuePy5SU1s2qSmzD7Wc2LPfYu3nCOHNRrFGb26MuRfuReri7r + 2G8TgoESFycp0QTIN8+1JM0XYKxNcJD6B8V1wKbbpQsymneI1gjutiB/Igw/PkDK + CL4VP4F4da5NWW1yWgNygLoJvZ/5qiKKisJc0GWk4HKz6mLgzOjQ2LJxAoGBALHZ + fN2YeYbyYcaM11p1VilulVTVjY3i/FZiDR4SL/IGJWjN/Szg4iXYsKFmu+dulOZl + cBALpEKrqpmzXYtrN6bsv18+5eO3qGbK2DrEq3eWVev2KoTMobxz7g++XBIWJmLA + Hhaa6IiPkYD5yyVyHKDbeXgb3o9eqCR7w7fYLjy/AoGAI4D+MFkivwUF7hqf5edS + KrltwmodHiqXNbVkwbW1AFPJbiYai4YFfK4IAbif/Ymxf9G78aOkr9ZpCIzOkDPZ + YpEwQGWsAhElCFvc8E/5dHESSp+tWtP+NluimpFqiDg3/SUnMwO2xH0nhLa0zejh + gmLh4w/CcPyb9ZyXceWU/nU= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-3-httpdetails + trusted-3-httpdetails-ready: + command: + - -wait + - http://trusted-3-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-3-httpdetails-ready + trusted-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEhDCCAuygAwIBAgIQX48RpK9MrVcpPDQc6AScZzANBgkqhkiG9w0BAQsFADCB + gzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNjYWxl + YkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTEzMDEGA1UEAwwqbWtjZXJ0 + IGNhbGViQGNhbGViLXBjLWxpbnV4IChDYWxlYiBEb3hzZXkpMB4XDTIzMTExMDIw + MDg1NVoXDTMzMTEwNzIwMDg1NVowVzEnMCUGA1UEChMebWtjZXJ0IGRldmVsb3Bt + ZW50IGNlcnRpZmljYXRlMSwwKgYDVQQLDCNjYWxlYkBjYWxlYi1wYy1saW51eCAo + Q2FsZWIgRG94c2V5KTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOKX + FodoNha0ADYcXwj0mNPHP6R6GjLHavHZmeug4sLuqntGRCh1MNHyi1zDKLmu26IL + VNHT8YYSqqIG2pT1jC0NLKKyo6AemZO9WnB1caSUqBAJcQpBkJnKCBjyLppsVegb + 4NxuNlUq4NqtCPTsl7V5kpBVUh0QWK3X2buX2RtG7F12nBYudlHvWGVWlf+6eIxv + xVIJxv2HqcwhFyEnh5Qe7DMu5VzHdKrRkMogGIY8GeP+MjyJxmgSVTpJOnyQ3hrR + vXmzIvni6gKzv8QMIOa2AC1c1d7P9m3vqghIvDOduA5Hk3udlhQUD6FoDvpBetnc + zVyw3DN5/gQnZzGkNo8CAwEAAaOBnjCBmzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l + BAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAUhYZYWIBHyk6ZVTnp3lRt/tyBP00w + UwYDVR0RBEwwSoITdHJ1c3RlZC1odHRwZGV0YWlsc4ItdHJ1c3RlZC1odHRwZGV0 + YWlscy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FshwSsFAAyMA0GCSqGSIb3DQEB + CwUAA4IBgQAq6NK/ZvxVajdlevUp5Zv8f2NaYKo7jF8fs7FLLP8mIO6eYQcmqANA + dvVfAN/5OOEWgLulYaepmbqKMJTLtwySQ4N6F2XKD8HUqPQsTfOLBu13PF3guCYD + vbi22hjLrtCHk/0mTxbH9JIsmhFn375ru2VTTcagQxKhfk+YOEIwOUJcfV87eQGL + bLpbRRKpOCl5RTNbB+bM3CD7AjL9mx2cs6+VuyCckteC+8K8JApkOP639rxCbX4M + zCZ8M7jaJbWXxDvuODDkf3d7R8KrsFOKbOCV2vdeVvmGyL4Edy7Lvio3KMbpuIxr + n+dnCcHtXdI0gPTjoGC+wwR3ndtLCD+rYDmk9Pxp3DTbVb3LAA7i57FvbmX8wF/Y + DzUn1FjisC9Q8U4p01kATVZLBcUBzO63oRTKzsGq0Y3kFZ9dcHBNVkf0eX4G2efr + Ot1BIWiQg+j9icz6Wb8iP7m7zgwrYcY44fNPQz2VsDmJbSmI3b6LNpjqtVf5N5Cs + oKZ7WL8izlI= + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDilxaHaDYWtAA2 + HF8I9JjTxz+kehoyx2rx2ZnroOLC7qp7RkQodTDR8otcwyi5rtuiC1TR0/GGEqqi + BtqU9YwtDSyisqOgHpmTvVpwdXGklKgQCXEKQZCZyggY8i6abFXoG+DcbjZVKuDa + rQj07Je1eZKQVVIdEFit19m7l9kbRuxddpwWLnZR71hlVpX/uniMb8VSCcb9h6nM + IRchJ4eUHuwzLuVcx3Sq0ZDKIBiGPBnj/jI8icZoElU6STp8kN4a0b15syL54uoC + s7/EDCDmtgAtXNXez/Zt76oISLwznbgOR5N7nZYUFA+haA76QXrZ3M1csNwzef4E + J2cxpDaPAgMBAAECggEAYTddrR7jBf6YkJ6/j4ISB9rWzWSt1NeGZNltlpDieawY + bOeK2qjdF1auwE/jKzeAeBfQfm4mk9VybC3wnjRzveiHHA708P/v+FknclSRO4Gk + Ua0bWMEknzb1Hm7Z29tbSEidwzVuDkBlVK0kyKCxvmS4o0BYCKw4v+16N2hA99g5 + LahplROhz5qRZwhNFJrDZr7HFCjay8s+kP6Q83ZMugxd9WKuMA6WODD51Jx2Uxy9 + S4b6sXAzBNY2kPWOiTDP4CHi/KVCzSIMy3fVGfOTQ8qP3EwnKb8RYBiEWhopurWT + 0cfKSzUgNSZMAAJJy8cxIRntoGMQLD8IOZIam+ItkQKBgQDlnwm76VnK80f2nNgY + MteUV/Pq1t+eDDZx2+Vkb1y7dRjExnHeIx8Zka9NuEC5Aob/T0M1/riR6QKahYPK + wzfV6AS/Rx3HciqjWpwW3gG4fIMXd22cF2KkzTcjY0sbsvyDzF/cdvF1DVEIZOQg + 92K9BI1R9wMtXSOOjHLMpv9AXQKBgQD8nujGxztXfOnojSwFnOOMAVVJ1rOqWRJW + 8jUpWAwFKq+f+G6NKesEMqblXsQyYNiEPsgTWEjxcQLXwcoe5+Ct35HXCx9QU/r5 + 5FcYOvFlV+HYiIVrElYu6TGJ6p3+tS/nL0fpigD4TwKtJ19CNXtnPzRKFZt4CNaf + ULeR8nJT2wKBgQDiNWoOgBVglYi4j81nEXdFgdwe5y4G8nsUchArgHX3iqUq/WCh + +TGjK91qkHDakn3RuRE6eUT1IXraJVwvfWBdT6SVl4bjvDn7EcGh2XYSfD9c99+4 + nWUle7GtIB2XHR4c7VMmytqWeNbykQoY2/2evoRGUjUEFLR5sy1JJd9iVQKBgGEd + Dctsx8lIQfueWbAGsgsecBUkrojsGPrHvdwY9vX9hOpwbL9jv+8rMbG3jqD3TgT4 + xZ16MQBwO3GKFBNxfJQbAEu1AOK2hiMOvtSXxDj7Yd0GDpQsxmjeSKcGRJqoOLQd + Hv4OiXTrmtHJ8vrW6Iu2ZnmceNnaO/ee5hL7KyxFAoGAealomMLKdpx8sqU3x+q2 + +ZjwHcujFJAwMXXaAi/1cgln1JuVWr577t44VbfYNvaCQah4yZJqKpbzWzdJdatD + JR855qFt2gBQBn6fwliFDB+e3Phrd4IwjwH3/sjl7Z7SB1ANj5DYXpceu7gaNlyZ + /5jXf1x0Dk3QDs0JXbgJmPs= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - trusted-httpdetails + ipv4_address: 172.20.0.50 + trusted-httpdetails-ready: + command: + - -wait + - http://trusted-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - trusted-httpdetails-ready + untrusted-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEUjCCArqgAwIBAgIRAKKYU7PSAFxZbhuLUlbv3iAwDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDE1NTZaFw0zMzExMDcyMDE1NTZaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCg + VDM59lGzCRjdUQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHG + oryKGDOkRV1SDb3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2v + JX4qTwgrqQtLOJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqP + qpc6AEFuklmoBHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPw + ve8VoGIlx4uvHTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxG + mgByfa2rxbNg15PFwF+ZAgMBAAGjbDBqMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBS3GPBKDaHzHK68c8sSJ91umTjFVzAi + BgNVHREEGzAZghcqLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG9w0BAQsF + AAOCAYEAbRDRZhw7pZlU29/u33iRrwzs4Ky4gxgHWi44ZznOAMS4/v2AUPCFyKFk + iew/5jUeR/x3/IoPYyDA5240aSWS+aGa8Tg7cgjv1HlQIIGUNFqMtdIaiR1/yFUK + riAux798LhIx9fselljmVZFNoocg1kHKMuDO/Vv8eHps4541q4P8VjET58hk9ENc + EnbUt/PeoNw2XuOY4qhTfPgDjMhtI73WBqRIMWfLhpbJZEyZc0VCV5cZhwA2p6x4 + WRwPjkFfxqJ22S+JcKb2euKF0LcUKWYlSf6fVod5HDew8vNwCMOC2u9/8W4F4KSb + EN6BevjXYVgxMvevsefPr3+Z1wlh8mL6xD35oiJU8kkkfX9P/v0AqX5b/HCyVnCK + YbDVotVLrkjX4yC06umdq66LgdfrF1j5B1ijWrjxOnx5Q0tjgoJx8/oaAZdBZigH + juB9WeAK7F/Omb4Gaz2p6vIOkcAnr09im4tcb47mu5dz0HnN7FSD05yg4Q6qGbWW + XD0HZE10 + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCgVDM59lGzCRjd + UQCyzokqC4sEr7Ln2FpXfHjMWPuNK5vQYccTxto3JlAVXl+oOLHGoryKGDOkRV1S + Db3zAxYQNDuYUnraiVgLPrM9NFpHSk/IlACQjRlFRYG0Go3PDR2vJX4qTwgrqQtL + OJ5tHnqrt6idtvNp1ISYOIscXf/WIAhh+IuOvas4eie7GETX4eqPqpc6AEFuklmo + BHBfMCrGg89WBUTWCZYrHE9BYDL0LG/VwLYn2tDKBrS9iZIlTqPwve8VoGIlx4uv + HTdzaVStcRKOXCsbSwXRdt0842d4C1nohQkRHqHoBjQzrJiWJzxGmgByfa2rxbNg + 15PFwF+ZAgMBAAECggEADTzGefunZTPUFLnSZ/D7jDglwz5KdC/9zYleY+jY5B/8 + nmjkSfK6I6GLLSh8l2QO8YqQLIqxANglS1gNHdpcYPwfC4WL1S1P0qXboKsI5Sfy + jGoD3et4caq6ecdTfAvmLobW8uFRmGE9qHlFQ1cn47OnPVZUpKFCTVslyTLNo70h + 28gx/lnpgkbeWotJ5GygE/H0jKJlG8/V3+Ppfuq6wypA5ELcGUeMAwmCfUNNlDy3 + BhXSa6STgL26ar70KZIjTp9B97hIfDWObxgjzMX2JoiWXziszvbfaknfBsmfTm45 + oUZYO0DuvLdLpxic0GZQwZCT6GzuexxJ9zR/pdahrQKBgQDEiwc0e+M1KaOoIIcw + V7pxoGjvd+CC5whS00jSf/rXPSPFxat9Ml5serOzLdRLM/NQ5wB9S7TYc6PJi3Mb + 8pmbGadIXiGIJY8vX79P/velHT4csgULJAKJF9U65knhaidPPPmXloHOhRWrE8Zq + mexVgJZrHLI8197qmi+ctT5rEwKBgQDQ1J84AwI1hEsXHxoSetSznt+ae7pSUb/J + byqK9KEp0DLyf8GcS7vxyYGQo0mJDlHaJt56LKv+zdX4wGG85ztbOFVPee6XLKSs + I+h7rzc2hKrl+SaI91h1234WsTeJvfUSHyBy9vAwLhd0hplNrt7Tql5Z0VTWHmFE + 2XbEwcTUIwKBgQDBpioHMDmBW/F/6ezJWOa+pco+h+KRl4i/8qVBog9Im1jvt/9r + b4FRaOQ9mt4c6qbGA5Sb30fkLKwoHFniI3ntM616xCRNvJQDnVcmPpVJ/jIAm/YU + L/q/kNfrHJOWobzxeaaCESz8imv7D5Tj25zb8cJC7xc+k4Nzq09WG83QOQKBgG28 + LOZ7/j8tA2BlAYhQb1Dr3UgKWEBFoOgyuEJIhh+4vezb4VtGGL7XSnQ8ubmBgtWF + s0a0DrVYaGXMgg+H2pL2qS2YPx3FYcrrG5FS40qMsFkkcXFruFpGOp2mBi8lWJBr + NtvykwheUAj1ab1+dKz5S5ca/t99G1PYiiaeQ9XNAoGAVXk4HvdUc5q+BNiYvKUS + M2/TDU3cYY72mPCEw7G6Kpn6zMaakQcA1+Z8LkYcLaQKRD/66n99WWT+BcY+QXtC + 0ZPHjeepDL8q+yXRY8zlcgAukg18Ta5yD1J1014y8UIV+HY8ongTni1sI8N+vKd4 + +TF2C2Cynf5vQr5man7ShPw= + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - untrusted-httpdetails + untrusted-httpdetails-ready: + command: + - -wait + - http://untrusted-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - untrusted-httpdetails-ready + verify: + depends_on: + verify-init: + condition: service_completed_successfully + environment: + SSL_CERT_FILE: /verify_config/ca.pem + image: pomerium/verify:${VERIFY_TAG:-latest} + networks: + main: + aliases: + - verify + volumes: + - verify_config:/verify_config + verify-init: + command: + - sh + - -c + - |- + echo '-----BEGIN CERTIFICATE----- + MIIE1zCCAz+gAwIBAgIQZ139cd/paPdkS2JyAu7kEDANBgkqhkiG9w0BAQsFADCB + gzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNjYWxl + YkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTEzMDEGA1UEAwwqbWtjZXJ0 + IGNhbGViQGNhbGViLXBjLWxpbnV4IChDYWxlYiBEb3hzZXkpMB4XDTIxMDgxMDE3 + MzIwOVoXDTMxMDgxMDE3MzIwOVowgYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9w + bWVudCBDQTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXggKENhbGViIERv + eHNleSkxMzAxBgNVBAMMKm1rY2VydCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2Fs + ZWIgRG94c2V5KTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANbKyMz5 + MVW6YKdjh1oIN1Mn7PE2pH5SbJSpWxdAGhdBkBkpAa7OxarjH5KVkCTSa7oncla7 + qNuJZS6mBmoxF+R+cR3jyGdUAYlozl1jlfqLIfC/+g7V7VmOJn98tjB42fatxLl6 + WPAw1JDNsWtQfhKhbcHut7RsF0rMOOHcwywTR7LOyCmIel1pcmpV4hbVcT6eVwoP + HXyJSa9cqaMQ5Xrdogai4IqZZIGLHeLsTVutOgJFXEevlX/QT3sWomEctzh38Js4 + 9DiAPD6d4Y7/CPLYEfk29JQ9NZhpgDsi9hu5FHHZcXwf1IHlw/CBVgn6j+jmvKKz + 90Ma1oquv3W6dttid/xCcLGu2S+96Tzrykmoy5VacLtVEP41YmoVls91rlo7olpe + QWFbnmco739TI/4h+HodolperQERQl7uCnpKVPZ3WokKuRh5pkqkQp/arQjtwcRt + G43CrDpbl+uSjMCAxha958eTYvtojTMnvLtsGID1hGXnqlw+5KjKrgRHrQIDAQAB + o0UwQzAOBgNVHQ8BAf8EBAMCAgQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E + FgQUhYZYWIBHyk6ZVTnp3lRt/tyBP00wDQYJKoZIhvcNAQELBQADggGBAA1F/apr + l6pNT3Mp/MxhUUgo6usEJCryGQcLRfexyQXGN3huCmIrP55VFa8ETPAtjsr6PMe7 + 7vvEj8eFu2JtKovlQwNewYU9cjAMCVaFiNbrQa20hzhWc2js6dyildE6/DPzbeds + KDAxhFNp35SlwtRtKk1SzxJxsqSwjfxI8fp+R/0wO8g0fWTdM2gCpRwYMNwJELEg + +dSlvJCwuu+rzxLalzaPF1PMTW72OELal/j5sD+2VytQ4k+HUDbyt2DnQT7YQ3zo + q02x2u2sm1WW/o/uh8pjPxkGQqL2mryZs6VH9VCU3QkKNDssNd71lr3wPoE4YRHe + UvzD1eDeelzBUFNIpDCjdCsL55yIPqUsr6lmjpBPL0vea33QTMbcsSxu0umGXDbU + 66juU4Z1jOE0wClIvaO699J+E2gBe1jUN6At6b8BSoZqCqXYoDHGei9RBUdvgqto + kVsoJfDI/TFMekYgpL5UVYmLdfgqLPPRP9pQBLDx3mszeAqnvfTICAzfXg== + -----END CERTIFICATE----- + ' > /verify_config/ca.pem + image: busybox:latest + networks: + main: + aliases: + - verify-init + volumes: + - verify_config:/verify_config + verify-ready: + command: + - -wait + - http://verify:8000/ + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - verify-ready + websocket-echo: + command: + - --port + - "80" + - tee + image: pvtmert/websocketd:latest + networks: + main: + aliases: + - websocket-echo + websocket-echo-ready: + command: + - -wait + - tcp://websocket-echo:80 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - websocket-echo-ready + wrongly-named-httpdetails: + command: + - sh + - -c + - | + cat <<-END_OF_HTTPDETAILS | tee /app/fullchain.pem + -----BEGIN CERTIFICATE----- + MIIEWDCCAsCgAwIBAgIRAK1MkqoHP+DPILewhMcnnu4wDQYJKoZIhvcNAQELBQAw + gYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjY2Fs + ZWJAY2FsZWItcGMtbGludXggKENhbGViIERveHNleSkxMzAxBgNVBAMMKm1rY2Vy + dCBjYWxlYkBjYWxlYi1wYy1saW51eCAoQ2FsZWIgRG94c2V5KTAeFw0yMzExMTAy + MDM2MjlaFw0zMzExMDcyMDM2MjlaMFcxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9w + bWVudCBjZXJ0aWZpY2F0ZTEsMCoGA1UECwwjY2FsZWJAY2FsZWItcGMtbGludXgg + KENhbGViIERveHNleSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDV + DWPhOpNWAYNTQZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM + 3cvyRs40dygZeogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV + 6ttf6y0+4Nq1hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3E + lxIYQsCr85FyW8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC + 8X2vHBBIbnZipb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3 + OIkJji4rpJqxG1Z7MvPzAgMBAAGjcjBwMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE + DDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBSFhlhYgEfKTplVOeneVG3+3IE/TTAo + BgNVHREEITAfgh1pbnZhbGlkLmxvY2FsaG9zdC5wb21lcml1bS5pbzANBgkqhkiG + 9w0BAQsFAAOCAYEAperIfzle1M52uBSVnBm3feNWlxvGcym7qepmDbSWbA//ijoJ + qVBzKN1jnP1L4zBA/9SVP9aC5qCnxlKwhZ15Dme9m/IHPKRLIlPPKtCo0eOLtWLa + N14FSVGH8mvK6upFAIGcYrVjkRTeKc2BBSxmLuQz15nvKVTnAeDqj8oy8Iu/lRTS + /PEGBHMt+xs0ZI/p9HhNNxBP1mxTJQq7Tcscnnpn4cgix3HUxE1CjstJFqlH1pPz + vPUUXTOVJyANCjrOYMvVeeY/tS8fIv7MFJmje/1N+6mqxn/WWZs7W9NzaI7G8uzT + VQdQDVfeWY/Ku/Uow/yngRVY4/ZS2QhtiGO8Yltxe3tv6Ebx/2Gfv+xAbIz0Qj1Y + yKVMyCWNSXQFGq40SpvixWdj249ttWL5cIITFhDx0AmPQxcSPNIA2VVIz33mTITQ + gMOwu6+YbFYeCIVMqDl6dkuUfcGh/h7LBerEO7TL884EEQe4FOpOZx90dp13IXHn + wlvPuRsZGUsBJaD4 + -----END CERTIFICATE----- + + END_OF_HTTPDETAILS + cat <<-END_OF_HTTPDETAILS | tee /app/privkey.pem + -----BEGIN PRIVATE KEY----- + MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDVDWPhOpNWAYNT + QZ4BR5ZU13HqRg/6B49duFcHPY+hkbQPSZdN+GZjCeRVIK8iAkgM3cvyRs40dygZ + eogu9LYo6AN/h6cVCF9ENg5jo7/PjK5/6aIf8/Ss22tCuhUL7UHV6ttf6y0+4Nq1 + hRQcbyIPij89nmO+mT4Fhs9gNSsj2y0gQQWqN2lGhhBnnaCUxh3ElxIYQsCr85Fy + W8wWtPxn6mdFHc/iSUh0edeiExWsbPTdfEAj93J5bidXAi27uxTC8X2vHBBIbnZi + pb9zmZxBjDjslEnN4vVc9weW5N3nKcu+7QXJdiHFP32YSET2Opu3OIkJji4rpJqx + G1Z7MvPzAgMBAAECggEBAM3XhRO7+1QSXCaZdCZ6WuWXzojxrkf8++gpzXPCZ75L + vvMyP8xmXc38Za5VyL+MAr7joENxY5NPON/9AgyUBFdbat3RW323vAt0Ssy8Dfti + ScpuGWTT2CcWS/iJPwJp9bzPj6qJ1wo0Rzsv23FpcjgfcuB+4pHpDwJZ8IxcclTN + jv5XdmanN0Ai2ONDkIHQyvMTsYAX99OK7nXIs3OW7s4wsm8Wg+loCqTvojTzWuwE + TZNFonHAZ81jkrYfNjz+sM/tPuOYD+vWQ89+1IeQKFw1U0iBpF1VvhA7UeQZMeI8 + S1NpDQTQW0kxmUAlLj7ldnIvknT/x0lKzoafVpk47/kCgYEA+SxnMLHe3Wxb4Kkf + 7Gwktbth/wlWzUWzQ7c0TdhfEDjcRB7SeGIjrL4/HPyXEsCcGIj84TEob1EA0KVP + l6Jeqh5t/sr9da+uLFf6H41yZUaTccoyclnjHsqT+WLTtiTKqf7cXACg5NKbJwUT + ldCEu+4Ovur+8Ax6s/mGWNEzar0CgYEA2uOmD+SCIhj16P+3GnpZ0UzyDhUKedTy + LisZznroF6RI3BHzNT+YotHORDMiJtmX0slFcInAWaB3htLPbHmvredjlsH35eHW + B6wkWmbniJEovPysWdg7xjrj8DoL2dcm6liM1KpSo9k6XWJu36//xF4RTnL8JPEH + RPuBWmBXHG8CgYBjJy886lr0I61//eztKK+G/bTmRvIapzTJqnqOy54wl1/XX6iD + LRJjKCV3RHBdjvXOsZxnhCdB/KrlXBMLFRq0eX1t2Zr4nNsjXDL1IVU3Rdlge4SN + ioVdeGFf6Nq0bXmUIg3QMpPT2pbQ9S0w/ZQEMJv/jwW5wk2FlrLGXyElxQKBgQC3 + skUzITp1Ey2NFM290uB93m1llBLum9+DD3jg6BTPgngC+K17Cpw2SI0qfx8yK3pW + 08MK5xAeJ6Un6NNa3eSptX7GjpJUwmq0lasMkz/MRMZDlGmwHOBNRC729D/t2bo3 + AYlvEGG6UBvDM1CJOVMUoT008Rrahczr/4ZXKnLw0QKBgExc+SXb5IRJIMHEQLkg + E7va23sR7x4j75mK6HnSwAM3jKx4GDgpkY1EO+rh+99mq/bIouL8ob/PG7A5RtKp + +Sgpqk5N6NpSFMaubsu1EQhqT5pmy0dN5KXecR4s1IylPvth/h3tdXPKGcLMD2M2 + EN59YIA1o4qWjJsfEiuQ6x7M + -----END PRIVATE KEY----- + + END_OF_HTTPDETAILS + node ./index.js + image: mendhak/http-https-echo:19 + networks: + main: + aliases: + - wrongly-named-httpdetails + wrongly-named-httpdetails-ready: + command: + - -wait + - http://wrongly-named-httpdetails:8080 + - -timeout + - 10m + image: jwilder/dockerize:0.6.1 + networks: + main: + aliases: + - wrongly-named-httpdetails-ready +volumes: + fortio_config: {} + verify_config: {} diff --git a/integration/main_test.go b/integration/main_test.go index 3529dd927..b55acd5a8 100644 --- a/integration/main_test.go +++ b/integration/main_test.go @@ -23,7 +23,7 @@ import ( "golang.org/x/net/publicsuffix" ) -var IDP, ClusterType string +var IDP, ClusterType, AuthenticateFlow string func TestMain(m *testing.M) { log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) @@ -44,7 +44,7 @@ func TestMain(m *testing.M) { return } - setIDPAndClusterType(ctx) + setClusterInfo(ctx) status := m.Run() os.Exit(status) @@ -169,9 +169,10 @@ func waitForHealthy(ctx context.Context) error { } } -func setIDPAndClusterType(ctx context.Context) { +func setClusterInfo(ctx context.Context) { IDP = "oidc" ClusterType = "single" + AuthenticateFlow = "stateful" cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) if err != nil { @@ -185,14 +186,19 @@ func setIDPAndClusterType(ctx context.Context) { } for _, container := range containers { for _, name := range container.Names { - parts := regexp.MustCompile(`^/(\w+?)[-_]pomerium.*$`).FindStringSubmatch(name) - if len(parts) == 2 { + parts := regexp.MustCompile(`^/(\w+?)-(\w+?)[-_]pomerium.*$`).FindStringSubmatch(name) + if len(parts) == 3 { ClusterType = parts[1] + AuthenticateFlow = parts[2] } } } - log.Info().Str("idp", IDP).Str("cluster-type", ClusterType).Send() + log.Info(). + Str("idp", IDP). + Str("cluster-type", ClusterType). + Str("authenticate-flow", AuthenticateFlow). + Send() } func mustParseURL(str string) *url.URL { diff --git a/integration/tpl/backends/pomerium.libsonnet b/integration/tpl/backends/pomerium.libsonnet index 6351227e3..0409ce5e3 100644 --- a/integration/tpl/backends/pomerium.libsonnet +++ b/integration/tpl/backends/pomerium.libsonnet @@ -74,7 +74,7 @@ local KubernetesService(name) = }; -local Environment(mode, idp, dns_suffix) = +local Environment(mode, idp, authentication_flow, dns_suffix) = { AUTHENTICATE_SERVICE_URL: 'https://authenticate.localhost.pomerium.io', CERTIFICATE: std.base64(importstr '../files/trusted.pem'), @@ -98,13 +98,19 @@ local Environment(mode, idp, dns_suffix) = SHARED_SECRET: 'UYgnt8bxxK5G2sFaNzyqi5Z+OgF8m2akNc0xdQx718w=', SIGNING_KEY: std.base64(importstr '../files/signing-key.pem'), SIGNING_KEY_ALGORITHM: 'ES256', - } + if mode == 'multi' then { - AUTHENTICATE_INTERNAL_SERVICE_URL: 'https://pomerium-authenticate', - AUTHORIZE_SERVICE_URL: 'https://pomerium-authorize:5443', - DATABROKER_SERVICE_URL: 'https://pomerium-databroker:5443', - GRPC_ADDRESS: ':5443', - GRPC_INSECURE: 'false', - } else {}; + } + ( + if mode == 'multi' then { + AUTHENTICATE_INTERNAL_SERVICE_URL: 'https://pomerium-authenticate', + AUTHORIZE_SERVICE_URL: 'https://pomerium-authorize:5443', + DATABROKER_SERVICE_URL: 'https://pomerium-databroker:5443', + GRPC_ADDRESS: ':5443', + GRPC_INSECURE: 'false', + } else {} + ) + ( + if authentication_flow == 'stateless' then { + DEBUG_FORCE_AUTHENTICATE_FLOW: 'stateless', + } else {} + ); local ComposeService(name, definition, additionalAliases=[]) = utils.ComposeService(name, definition { @@ -128,10 +134,10 @@ local ComposeService(name, definition, additionalAliases=[]) = }, }, additionalAliases); -function(mode, idp, dns_suffix='') { +function(mode, idp, authentication_flow, dns_suffix='') { local name = 'pomerium', local image = 'pomerium/pomerium:${POMERIUM_TAG:-main}', - local environment = Environment(mode, idp, dns_suffix), + local environment = Environment(mode, idp, authentication_flow, dns_suffix), compose: { services: if mode == 'multi' then diff --git a/integration/tpl/clusters/multi-stateful/compose.yml.jsonnet b/integration/tpl/clusters/multi-stateful/compose.yml.jsonnet new file mode 100644 index 000000000..bb8398e16 --- /dev/null +++ b/integration/tpl/clusters/multi-stateful/compose.yml.jsonnet @@ -0,0 +1 @@ +(import '../../deployments/multi.libsonnet')('oidc', 'stateful') diff --git a/integration/tpl/clusters/multi-stateless/compose.yml.jsonnet b/integration/tpl/clusters/multi-stateless/compose.yml.jsonnet new file mode 100644 index 000000000..2331b052e --- /dev/null +++ b/integration/tpl/clusters/multi-stateless/compose.yml.jsonnet @@ -0,0 +1 @@ +(import '../../deployments/multi.libsonnet')('oidc', 'stateless') diff --git a/integration/tpl/clusters/multi/compose.yml.jsonnet b/integration/tpl/clusters/multi/compose.yml.jsonnet deleted file mode 100644 index 95c6628fd..000000000 --- a/integration/tpl/clusters/multi/compose.yml.jsonnet +++ /dev/null @@ -1 +0,0 @@ -(import '../../deployments/multi.libsonnet')('oidc') diff --git a/integration/tpl/clusters/single-stateful/compose.yml.jsonnet b/integration/tpl/clusters/single-stateful/compose.yml.jsonnet new file mode 100644 index 000000000..5403d6c37 --- /dev/null +++ b/integration/tpl/clusters/single-stateful/compose.yml.jsonnet @@ -0,0 +1 @@ +(import '../../deployments/single.libsonnet')('oidc', 'stateful') diff --git a/integration/tpl/clusters/single-stateless/compose.yml.jsonnet b/integration/tpl/clusters/single-stateless/compose.yml.jsonnet new file mode 100644 index 000000000..9e031d623 --- /dev/null +++ b/integration/tpl/clusters/single-stateless/compose.yml.jsonnet @@ -0,0 +1 @@ +(import '../../deployments/single.libsonnet')('oidc', 'stateless') diff --git a/integration/tpl/clusters/single/compose.yml.jsonnet b/integration/tpl/clusters/single/compose.yml.jsonnet deleted file mode 100644 index 720c06806..000000000 --- a/integration/tpl/clusters/single/compose.yml.jsonnet +++ /dev/null @@ -1 +0,0 @@ -(import '../../deployments/single.libsonnet')('oidc') diff --git a/integration/tpl/deployments/kubernetes.libsonnet b/integration/tpl/deployments/kubernetes.libsonnet index 5f2004a7f..9d6eb7788 100644 --- a/integration/tpl/deployments/kubernetes.libsonnet +++ b/integration/tpl/deployments/kubernetes.libsonnet @@ -6,7 +6,7 @@ function(idp) utils.Merge([ (import '../backends/fortio.libsonnet')().kubernetes + (import '../backends/httpdetails.libsonnet')().kubernetes + (import '../backends/mock-idp.libsonnet')(idp).kubernetes + - (import '../backends/pomerium.libsonnet')('single', idp, '.default.svc.cluster.local').kubernetes + + (import '../backends/pomerium.libsonnet')('single', idp, 'stateful', '.default.svc.cluster.local').kubernetes + (import '../backends/postgres.libsonnet')().kubernetes + (import '../backends/verify.libsonnet')('single').kubernetes + (import '../backends/websocket-echo.libsonnet')().kubernetes diff --git a/integration/tpl/deployments/multi.libsonnet b/integration/tpl/deployments/multi.libsonnet index 9659dccd1..cdc888905 100644 --- a/integration/tpl/deployments/multi.libsonnet +++ b/integration/tpl/deployments/multi.libsonnet @@ -1,10 +1,10 @@ local utils = import '../utils.libsonnet'; -function(idp) utils.Merge([ +function(idp, authentication_flow) utils.Merge([ (import '../backends/fortio.libsonnet')().compose, (import '../backends/httpdetails.libsonnet')().compose, (import '../backends/mock-idp.libsonnet')(idp).compose, - (import '../backends/pomerium.libsonnet')('multi', idp).compose, + (import '../backends/pomerium.libsonnet')('multi', idp, authentication_flow).compose, (import '../backends/postgres.libsonnet')().compose, (import '../backends/verify.libsonnet')('multi').compose, (import '../backends/websocket-echo.libsonnet')().compose, diff --git a/integration/tpl/deployments/single.libsonnet b/integration/tpl/deployments/single.libsonnet index 7b52909a0..5f16665d3 100644 --- a/integration/tpl/deployments/single.libsonnet +++ b/integration/tpl/deployments/single.libsonnet @@ -1,10 +1,10 @@ local utils = import '../utils.libsonnet'; -function(idp) utils.Merge([ +function(idp, authentication_flow) utils.Merge([ (import '../backends/fortio.libsonnet')().compose, (import '../backends/httpdetails.libsonnet')().compose, (import '../backends/mock-idp.libsonnet')(idp).compose, - (import '../backends/pomerium.libsonnet')('single', idp).compose, + (import '../backends/pomerium.libsonnet')('single', idp, authentication_flow).compose, (import '../backends/postgres.libsonnet')().compose, (import '../backends/verify.libsonnet')('single').compose, (import '../backends/websocket-echo.libsonnet')().compose, diff --git a/internal/registry/inmemory/inmemory.go b/internal/registry/inmemory/inmemory.go index b00c9fc6f..0edb97cac 100644 --- a/internal/registry/inmemory/inmemory.go +++ b/internal/registry/inmemory/inmemory.go @@ -33,7 +33,7 @@ type inMemoryKey struct { } // New constructs a new registry tracking service that operates in RAM -// as such, it is not usable for multi-node deployment where REDIS or other alternative should be used +// as such, it is not usable for multi-node deployment. func New(ctx context.Context, ttl time.Duration) registry.Interface { srv := &inMemoryServer{ ttl: ttl, diff --git a/proxy/state.go b/proxy/state.go index bdb4b1a64..42f8ebb44 100644 --- a/proxy/state.go +++ b/proxy/state.go @@ -114,8 +114,12 @@ func newProxyStateFromConfig(cfg *config.Config) (*proxyState, error) { state.programmaticRedirectDomainWhitelist = cfg.Options.ProgrammaticRedirectDomainWhitelist - state.authenticateFlow, err = authenticateflow.NewStateless( - cfg, state.sessionStore, nil, nil, nil) + if cfg.Options.UseStatelessAuthenticateFlow() { + state.authenticateFlow, err = authenticateflow.NewStateless( + cfg, state.sessionStore, nil, nil, nil) + } else { + state.authenticateFlow, err = authenticateflow.NewStateful(cfg, state.sessionStore) + } if err != nil { return nil, err }