Repository: russellhaering/gosaml2 Branch: main Commit: 636e7dda202a Files: 166 Total size: 1.2 MB Directory structure: gitextract_zio5e6rg/ ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── scorecard.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── attribute.go ├── authn_request.go ├── build_logout_response.go ├── build_request.go ├── build_request_test.go ├── decode_logout_request.go ├── decode_response.go ├── decode_response_test.go ├── go.mod ├── go.sum ├── internal/ │ └── fuzz/ │ ├── README.md │ └── fuzz_test.go ├── logout_request.go ├── oss-fuzz/ │ ├── Dockerfile │ ├── README.md │ ├── build.sh │ ├── fuzz_decode_response.options │ └── project.yaml ├── providertests/ │ ├── exercise.go │ ├── exercise_go_1_6.go │ ├── oktadev_test.go │ ├── onelogin_test.go │ ├── pingfed_test.go │ ├── providers_test.go │ ├── testdata/ │ │ ├── adfs_idp_signing_cert.pem │ │ ├── adfs_response.b64 │ │ ├── adfs_response_enc.b64 │ │ ├── auth0_cert.pem │ │ ├── auth0_response.xml │ │ ├── oam_cert.pem │ │ ├── oam_response.xml │ │ ├── okta_cert.pem │ │ ├── okta_response.xml │ │ ├── oktaenc_idp_signing_cert.pem │ │ ├── oktaenc_response.b64 │ │ ├── oktaenc_sp_encryption_cert.pem │ │ ├── oktaenc_sp_encryption_key.pem │ │ ├── oktaenc_sp_signing_cert.pem │ │ ├── oktaenc_sp_signing_key.pem │ │ ├── onelogin/ │ │ │ ├── idp.signing.cert │ │ │ ├── olgn09_response_01.b64 │ │ │ ├── olgn09_response_03.b64 │ │ │ ├── olgn09_response_04.b64 │ │ │ ├── olgn09_response_05.b64 │ │ │ ├── olgn09_response_06.b64 │ │ │ ├── olgn09_response_07.b64 │ │ │ ├── olgn09_response_08.b64 │ │ │ ├── olgn09_response_09.b64 │ │ │ ├── olgn09_response_11.b64 │ │ │ ├── olgn09_response_12.b64 │ │ │ ├── olgn09_response_13.b64 │ │ │ ├── olgn09_response_14.b64 │ │ │ ├── olgn09_response_15.b64 │ │ │ ├── olgn09_response_155.b64 │ │ │ ├── olgn09_response_156.b64 │ │ │ ├── olgn09_response_157.b64 │ │ │ ├── olgn09_response_158.b64 │ │ │ ├── olgn09_response_159.b64 │ │ │ ├── olgn09_response_16.b64 │ │ │ ├── olgn09_response_17.b64 │ │ │ ├── olgn09_response_18.b64 │ │ │ ├── olgn09_response_21.b64 │ │ │ ├── olgn09_response_22.b64 │ │ │ ├── olgn09_response_23.b64 │ │ │ ├── olgn09_response_24.b64 │ │ │ ├── olgn09_response_25.b64 │ │ │ ├── olgn09_response_26.b64 │ │ │ ├── olgn09_response_27.b64 │ │ │ ├── olgn09_response_28.b64 │ │ │ ├── olgn09_response_31.b64 │ │ │ ├── olgn09_response_33.b64 │ │ │ ├── olgn09_response_34.b64 │ │ │ ├── olgn09_response_36.b64 │ │ │ ├── olgn09_response_37.b64 │ │ │ ├── olgn09_response_38.b64 │ │ │ ├── olgn09_response_46.b64 │ │ │ ├── olgn09_response_47.b64 │ │ │ ├── olgn09_response_48.b64 │ │ │ ├── olgn09_response_50.b64 │ │ │ ├── olgn09_response_51.b64 │ │ │ ├── olgn09_response_52.b64 │ │ │ ├── olgn09_response_53.b64 │ │ │ ├── olgn09_response_54.b64 │ │ │ ├── olgn09_response_55.b64 │ │ │ ├── olgn09_response_56.b64 │ │ │ ├── olgn09_response_57.b64 │ │ │ ├── olgn09_response_58.b64 │ │ │ ├── olgn09_response_59.b64 │ │ │ ├── olgn09_response_81.b64 │ │ │ ├── olgn09_response_82.b64 │ │ │ ├── olgn09_response_83.b64 │ │ │ ├── olgn09_response_84.b64 │ │ │ ├── olgn09_response_85.b64 │ │ │ ├── olgn09_response_86.b64 │ │ │ ├── olgn09_response_87.b64 │ │ │ ├── olgn09_response_88.b64 │ │ │ ├── olgn09_response_89.b64 │ │ │ ├── olgn09_response_91.b64 │ │ │ ├── olgn09_response_92.b64 │ │ │ ├── olgn09_response_93.b64 │ │ │ ├── olgn09_response_94.b64 │ │ │ ├── olgn09_response_97.b64 │ │ │ ├── olgn09_response_98.b64 │ │ │ ├── olgn09_response_99.b64 │ │ │ ├── sp.encryption.cert │ │ │ ├── sp.encryption.key │ │ │ ├── sp.signing.cert │ │ │ └── sp.signing.key │ │ ├── onelogin_cert.pem │ │ ├── onelogin_response.xml │ │ ├── pingfed/ │ │ │ ├── idp.signing.cert │ │ │ ├── pfed11_response_01.b64 │ │ │ ├── pfed11_response_02.b64 │ │ │ ├── pfed11_response_03.b64 │ │ │ ├── pfed11_response_05.b64 │ │ │ ├── sp.encryption.cert │ │ │ ├── sp.encryption.key │ │ │ ├── sp.signing.cert │ │ │ └── sp.signing.key │ │ └── saml.oktadev.com/ │ │ ├── oktadev.pem │ │ ├── response_0 │ │ ├── response_1 │ │ ├── response_10 │ │ ├── response_11 │ │ ├── response_12 │ │ ├── response_13 │ │ ├── response_14 │ │ ├── response_15 │ │ ├── response_16 │ │ ├── response_2 │ │ ├── response_3 │ │ ├── response_4 │ │ ├── response_5 │ │ ├── response_6 │ │ ├── response_7 │ │ ├── response_8 │ │ └── response_9 │ └── utils.go ├── retrieve_assertion.go ├── run_test.sh ├── s2example/ │ └── demo.go ├── saml.go ├── saml_test.go ├── test_constants.go ├── testdata/ │ ├── assertion.xml │ ├── idp.crt │ ├── saml.post │ ├── saml.xml │ ├── saml_compressed.post │ ├── test.crt │ └── test.key ├── types/ │ ├── encrypted_assertion.go │ ├── encrypted_key.go │ ├── metadata.go │ └── response.go ├── uuid/ │ ├── uuid.go │ └── uuid_test.go ├── validate.go └── xml_constants.go ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" - package-ecosystem: "gomod" directory: "/" schedule: interval: "weekly" ================================================ FILE: .github/workflows/scorecard.yml ================================================ name: Scorecard supply-chain security on: # For Branch-Protection check. Only the default branch is supported. See # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection branch_protection_rule: # To guarantee Maintained check is occasionally updated. See # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained schedule: - cron: '33 5 * * 2' push: branches: [ "main" ] # Declare default permissions as read only. permissions: read-all jobs: analysis: name: Scorecard analysis runs-on: ubuntu-latest permissions: # Needed to upload the results to code-scanning dashboard. security-events: write # Needed to publish results and get a badge (see publish_results below). id-token: write steps: - name: "Checkout code" uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: "Run analysis" uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 with: results_file: results.sarif results_format: sarif publish_results: true # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: name: SARIF file path: results.sarif retention-days: 5 # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 with: sarif_file: results.sarif ================================================ FILE: .github/workflows/test.yml ================================================ on: [push, pull_request] name: Test permissions: contents: read jobs: test: name: Test Go ${{ matrix.go }} runs-on: ubuntu-latest strategy: matrix: go: ['1.26', '1.25'] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: go-version: ${{ matrix.go }} - name: Test run: go test ./... ================================================ FILE: .gitignore ================================================ *.test ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. ================================================ FILE: README.md ================================================ # gosaml2 [![Build Status](https://github.com/russellhaering/gosaml2/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/russellhaering/gosaml2/actions/workflows/test.yml?query=branch%3Amain) [![GoDoc](https://godoc.org/github.com/russellhaering/gosaml2?status.svg)](https://godoc.org/github.com/russellhaering/gosaml2) SAML 2.0 implemementation for Service Providers based on [etree](https://github.com/beevik/etree) and [goxmldsig](https://github.com/russellhaering/goxmldsig), a pure Go implementation of XML digital signatures. ## Installation Install `gosaml2` into your `$GOPATH` using `go get`: ``` go get github.com/russellhaering/gosaml2 ``` ## Example See [demo.go](s2example/demo.go). ## Supported Identity Providers This library is meant to be a generic SAML implementation. If you find a standards compliant identity provider that it doesn't work with please submit a bug or pull request. The following identity providers have been tested: * Okta * Auth0 * Shibboleth * Ipsilon * OneLogin * Azure Active Directory (Azure AD) ================================================ FILE: SECURITY.md ================================================ # Security Policy ## Reporting a Vulnerability Security vulnerabilities can be reported using GitHub's [private vulnerability reporting tool](https://github.com/russellhaering/gosaml2/security/advisories/new). ================================================ FILE: attribute.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import "github.com/russellhaering/gosaml2/types" // Values is a convenience wrapper for a map of strings to Attributes, which // can be used for easy access to the string values of Attribute lists. type Values map[string]types.Attribute // Get is a safe method (nil maps will not panic) for returning the first value // for an attribute at a key, or the empty string if none exists. func (vals Values) Get(k string) string { if vals == nil { return "" } if v, ok := vals[k]; ok && len(v.Values) > 0 { return string(v.Values[0].Value) } return "" } //GetSize returns the number of values for an attribute at a key. //Returns '0' in case of error or if key is not found. func (vals Values) GetSize(k string) int { if vals == nil { return 0 } v, ok := vals[k] if ok { return len(v.Values) } return 0 } //GetAll returns all the values for an attribute at a key. //Returns an empty slice in case of error of if key is not found. func (vals Values) GetAll(k string) []string { var av []string if vals == nil { return av } if v, ok := vals[k]; ok && len(v.Values) > 0 { for i := 0; i < len(v.Values); i++ { av = append(av, string(v.Values[i].Value)) } } return av } ================================================ FILE: authn_request.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import "time" // AuthNRequest is the go struct representation of an authentication request type AuthNRequest struct { ID string `xml:",attr"` Version string `xml:",attr"` ProtocolBinding string `xml:",attr"` AssertionConsumerServiceURL string `xml:",attr"` IssueInstant time.Time `xml:",attr"` Destination string `xml:",attr"` Issuer string } ================================================ FILE: build_logout_response.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "bytes" "encoding/base64" "html/template" "github.com/beevik/etree" "github.com/russellhaering/gosaml2/uuid" ) func (sp *SAMLServiceProvider) buildLogoutResponse(statusCodeValue string, reqID string, includeSig bool) (*etree.Document, error) { logoutResponse := &etree.Element{ Space: "samlp", Tag: "LogoutResponse", } logoutResponse.CreateAttr("xmlns:samlp", "urn:oasis:names:tc:SAML:2.0:protocol") logoutResponse.CreateAttr("xmlns:saml", "urn:oasis:names:tc:SAML:2.0:assertion") arId := uuid.NewV4() logoutResponse.CreateAttr("ID", "_"+arId.String()) logoutResponse.CreateAttr("Version", "2.0") logoutResponse.CreateAttr("IssueInstant", sp.Clock.Now().UTC().Format(issueInstantFormat)) logoutResponse.CreateAttr("Destination", sp.IdentityProviderSLOURL) logoutResponse.CreateAttr("InResponseTo", reqID) // NOTE(russell_h): In earlier versions we mistakenly sent the IdentityProviderIssuer // in the AuthnRequest. For backwards compatibility we will fall back to that // behavior when ServiceProviderIssuer isn't set. if sp.ServiceProviderIssuer != "" { logoutResponse.CreateElement("saml:Issuer").SetText(sp.ServiceProviderIssuer) } else { logoutResponse.CreateElement("saml:Issuer").SetText(sp.IdentityProviderIssuer) } status := logoutResponse.CreateElement("samlp:Status") statusCode := status.CreateElement("samlp:StatusCode") statusCode.CreateAttr("Value", statusCodeValue) doc := etree.NewDocument() // Only POST binding includes in (includeSig) if includeSig { signed, err := sp.SignLogoutResponse(logoutResponse) if err != nil { return nil, err } doc.SetRoot(signed) } else { doc.SetRoot(logoutResponse) } return doc, nil } func (sp *SAMLServiceProvider) BuildLogoutResponseDocument(status string, reqID string) (*etree.Document, error) { return sp.buildLogoutResponse(status, reqID, true) } func (sp *SAMLServiceProvider) BuildLogoutResponseDocumentNoSig(status string, reqID string) (*etree.Document, error) { return sp.buildLogoutResponse(status, reqID, false) } func (sp *SAMLServiceProvider) SignLogoutResponse(el *etree.Element) (*etree.Element, error) { ctx := sp.SigningContext() sig, err := ctx.ConstructSignature(el, true) if err != nil { return nil, err } ret := el.Copy() var children []etree.Token children = append(children, ret.Child[0]) // issuer is always first children = append(children, sig) // next is the signature children = append(children, ret.Child[1:]...) // then all other children ret.Child = children return ret, nil } func (sp *SAMLServiceProvider) buildLogoutResponseBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) { respBuf, err := doc.WriteToBytes() if err != nil { return nil, err } encodedRespBuf := base64.StdEncoding.EncodeToString(respBuf) var tmpl *template.Template var rv bytes.Buffer if relayState != "" { tmpl = template.Must(template.New("saml-post-form").Parse(`` + `
` + `` + `` + `` + `
` + `` + `` + ``)) data := struct { URL string SAMLResponse string RelayState string }{ URL: sp.IdentityProviderSLOURL, SAMLResponse: encodedRespBuf, RelayState: relayState, } if err = tmpl.Execute(&rv, data); err != nil { return nil, err } } else { tmpl = template.Must(template.New("saml-post-form").Parse(`` + `
` + `` + `` + `
` + `` + `` + ``)) data := struct { URL string SAMLResponse string }{ URL: sp.IdentityProviderSLOURL, SAMLResponse: encodedRespBuf, } if err = tmpl.Execute(&rv, data); err != nil { return nil, err } } return rv.Bytes(), nil } func (sp *SAMLServiceProvider) BuildLogoutResponseBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) { return sp.buildLogoutResponseBodyPostFromDocument(relayState, doc) } ================================================ FILE: build_request.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "bytes" "compress/flate" "encoding/base64" "fmt" "html/template" "net/http" "net/url" "github.com/beevik/etree" "github.com/russellhaering/gosaml2/uuid" ) const issueInstantFormat = "2006-01-02T15:04:05Z" func (sp *SAMLServiceProvider) buildAuthnRequest(includeSig bool) (*etree.Document, error) { authnRequest := &etree.Element{ Space: "samlp", Tag: "AuthnRequest", } authnRequest.CreateAttr("xmlns:samlp", "urn:oasis:names:tc:SAML:2.0:protocol") authnRequest.CreateAttr("xmlns:saml", "urn:oasis:names:tc:SAML:2.0:assertion") arId := uuid.NewV4() authnRequest.CreateAttr("ID", "_"+arId.String()) authnRequest.CreateAttr("Version", "2.0") authnRequest.CreateAttr("ProtocolBinding", "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST") authnRequest.CreateAttr("AssertionConsumerServiceURL", sp.AssertionConsumerServiceURL) authnRequest.CreateAttr("IssueInstant", sp.Clock.Now().UTC().Format(issueInstantFormat)) authnRequest.CreateAttr("Destination", sp.IdentityProviderSSOURL) if sp.ForceAuthn { authnRequest.CreateAttr("ForceAuthn", "true") } if sp.IsPassive { authnRequest.CreateAttr("IsPassive", "true") } // NOTE(russell_h): In earlier versions we mistakenly sent the IdentityProviderIssuer // in the AuthnRequest. For backwards compatibility we will fall back to that // behavior when ServiceProviderIssuer isn't set. if sp.ServiceProviderIssuer != "" { authnRequest.CreateElement("saml:Issuer").SetText(sp.ServiceProviderIssuer) } else { authnRequest.CreateElement("saml:Issuer").SetText(sp.IdentityProviderIssuer) } nameIdPolicy := authnRequest.CreateElement("samlp:NameIDPolicy") nameIdPolicy.CreateAttr("AllowCreate", "true") if sp.NameIdFormat != "" { nameIdPolicy.CreateAttr("Format", sp.NameIdFormat) } if sp.RequestedAuthnContext != nil { requestedAuthnContext := authnRequest.CreateElement("samlp:RequestedAuthnContext") requestedAuthnContext.CreateAttr("Comparison", sp.RequestedAuthnContext.Comparison) for _, context := range sp.RequestedAuthnContext.Contexts { authnContextClassRef := requestedAuthnContext.CreateElement("saml:AuthnContextClassRef") authnContextClassRef.SetText(context) } } doc := etree.NewDocument() // Only POST binding includes in (includeSig) if sp.SignAuthnRequests && includeSig { signed, err := sp.SignAuthnRequest(authnRequest) if err != nil { return nil, err } doc.SetRoot(signed) } else { doc.SetRoot(authnRequest) } return doc, nil } func (sp *SAMLServiceProvider) BuildAuthRequestDocument() (*etree.Document, error) { return sp.buildAuthnRequest(true) } func (sp *SAMLServiceProvider) BuildAuthRequestDocumentNoSig() (*etree.Document, error) { return sp.buildAuthnRequest(false) } // SignAuthnRequest takes a document, builds a signature, creates another document // and inserts the signature in it. According to the schema, the position of the // signature is right after the Issuer [1] then all other children. // // [1] https://docs.oasis-open.org/security/saml/v2.0/saml-schema-protocol-2.0.xsd func (sp *SAMLServiceProvider) SignAuthnRequest(el *etree.Element) (*etree.Element, error) { ctx := sp.SigningContext() sig, err := ctx.ConstructSignature(el, true) if err != nil { return nil, err } ret := el.Copy() var children []etree.Token children = append(children, ret.Child[0]) // issuer is always first children = append(children, sig) // next is the signature children = append(children, ret.Child[1:]...) // then all other children ret.Child = children return ret, nil } // BuildAuthRequest builds for identity provider func (sp *SAMLServiceProvider) BuildAuthRequest() (string, error) { doc, err := sp.BuildAuthRequestDocument() if err != nil { return "", err } return doc.WriteToString() } func (sp *SAMLServiceProvider) buildAuthURLFromDocument(relayState, binding string, doc *etree.Document) (string, error) { parsedUrl, err := url.Parse(sp.IdentityProviderSSOURL) if err != nil { return "", err } authnRequest, err := doc.WriteToString() if err != nil { return "", err } buf := &bytes.Buffer{} fw, err := flate.NewWriter(buf, flate.DefaultCompression) if err != nil { return "", fmt.Errorf("flate NewWriter error: %v", err) } _, err = fw.Write([]byte(authnRequest)) if err != nil { return "", fmt.Errorf("flate.Writer Write error: %v", err) } err = fw.Close() if err != nil { return "", fmt.Errorf("flate.Writer Close error: %v", err) } qs := parsedUrl.Query() qs.Add("SAMLRequest", base64.StdEncoding.EncodeToString(buf.Bytes())) if relayState != "" { qs.Add("RelayState", relayState) } if sp.SignAuthnRequests && binding == BindingHttpRedirect { // Sign URL encoded query (see Section 3.4.4.1 DEFLATE Encoding of saml-bindings-2.0-os.pdf) ctx := sp.SigningContext() qs.Add("SigAlg", ctx.GetSignatureMethodIdentifier()) var rawSignature []byte if rawSignature, err = ctx.SignString(signatureInputString(qs.Get("SAMLRequest"), qs.Get("RelayState"), qs.Get("SigAlg"))); err != nil { return "", fmt.Errorf("unable to sign query string of redirect URL: %v", err) } // Now add base64 encoded Signature qs.Add("Signature", base64.StdEncoding.EncodeToString(rawSignature)) } //Here the parameters may appear in any order. parsedUrl.RawQuery = qs.Encode() return parsedUrl.String(), nil } func (sp *SAMLServiceProvider) BuildAuthURLFromDocument(relayState string, doc *etree.Document) (string, error) { return sp.buildAuthURLFromDocument(relayState, BindingHttpPost, doc) } func (sp *SAMLServiceProvider) BuildAuthURLRedirect(relayState string, doc *etree.Document) (string, error) { return sp.buildAuthURLFromDocument(relayState, BindingHttpRedirect, doc) } func (sp *SAMLServiceProvider) buildAuthBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) { reqBuf, err := doc.WriteToBytes() if err != nil { return nil, err } encodedReqBuf := base64.StdEncoding.EncodeToString(reqBuf) var tmpl *template.Template var rv bytes.Buffer if relayState != "" { tmpl = template.Must(template.New("saml-post-form").Parse(`` + `
` + `` + `` + `` + `
` + ``)) data := struct { URL string SAMLRequest string RelayState string }{ URL: sp.IdentityProviderSSOURL, SAMLRequest: encodedReqBuf, RelayState: relayState, } if err = tmpl.Execute(&rv, data); err != nil { return nil, err } } else { tmpl = template.Must(template.New("saml-post-form").Parse(`` + `
` + `` + `` + `
` + ``)) data := struct { URL string SAMLRequest string }{ URL: sp.IdentityProviderSSOURL, SAMLRequest: encodedReqBuf, } if err = tmpl.Execute(&rv, data); err != nil { return nil, err } } return rv.Bytes(), nil } //BuildAuthBodyPost builds the POST body to be sent to IDP. func (sp *SAMLServiceProvider) BuildAuthBodyPost(relayState string) ([]byte, error) { var doc *etree.Document var err error if sp.SignAuthnRequests { doc, err = sp.BuildAuthRequestDocument() } else { doc, err = sp.BuildAuthRequestDocumentNoSig() } if err != nil { return nil, err } return sp.buildAuthBodyPostFromDocument(relayState, doc) } //BuildAuthBodyPostFromDocument builds the POST body to be sent to IDP. //It takes the AuthnRequest xml as input. func (sp *SAMLServiceProvider) BuildAuthBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) { return sp.buildAuthBodyPostFromDocument(relayState, doc) } // BuildAuthURL builds redirect URL to be sent to principal func (sp *SAMLServiceProvider) BuildAuthURL(relayState string) (string, error) { doc, err := sp.BuildAuthRequestDocument() if err != nil { return "", err } return sp.BuildAuthURLFromDocument(relayState, doc) } // AuthRedirect takes a ResponseWriter and Request from an http interaction and // redirects to the SAMLServiceProvider's configured IdP, including the // relayState provided, if any. func (sp *SAMLServiceProvider) AuthRedirect(w http.ResponseWriter, r *http.Request, relayState string) (err error) { url, err := sp.BuildAuthURL(relayState) if err != nil { return err } http.Redirect(w, r, url, http.StatusFound) return nil } func (sp *SAMLServiceProvider) buildLogoutRequest(includeSig bool, nameID string, sessionIndex string) (*etree.Document, error) { logoutRequest := &etree.Element{ Space: "samlp", Tag: "LogoutRequest", } logoutRequest.CreateAttr("xmlns:samlp", "urn:oasis:names:tc:SAML:2.0:protocol") logoutRequest.CreateAttr("xmlns:saml", "urn:oasis:names:tc:SAML:2.0:assertion") arId := uuid.NewV4() logoutRequest.CreateAttr("ID", "_"+arId.String()) logoutRequest.CreateAttr("Version", "2.0") logoutRequest.CreateAttr("IssueInstant", sp.Clock.Now().UTC().Format(issueInstantFormat)) logoutRequest.CreateAttr("Destination", sp.IdentityProviderSLOURL) // NOTE(russell_h): In earlier versions we mistakenly sent the IdentityProviderIssuer // in the AuthnRequest. For backwards compatibility we will fall back to that // behavior when ServiceProviderIssuer isn't set. // TODO: Throw error in case Issuer is empty. if sp.ServiceProviderIssuer != "" { logoutRequest.CreateElement("saml:Issuer").SetText(sp.ServiceProviderIssuer) } else { logoutRequest.CreateElement("saml:Issuer").SetText(sp.IdentityProviderIssuer) } nameId := logoutRequest.CreateElement("saml:NameID") nameId.SetText(nameID) nameId.CreateAttr("Format", sp.NameIdFormat) //Section 3.7.1 - http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf says //SessionIndex is optional. If the IDP supports SLO then it must send SessionIndex as per //Section 4.1.4.2 of https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf. //As per section 4.4.3.1 of //docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf, //a LogoutRequest issued by Session Participant to Identity Provider, must contain //at least one SessionIndex element needs to be included. nameId = logoutRequest.CreateElement("samlp:SessionIndex") nameId.SetText(sessionIndex) doc := etree.NewDocument() if includeSig { signed, err := sp.SignLogoutRequest(logoutRequest) if err != nil { return nil, err } doc.SetRoot(signed) } else { doc.SetRoot(logoutRequest) } return doc, nil } func (sp *SAMLServiceProvider) SignLogoutRequest(el *etree.Element) (*etree.Element, error) { ctx := sp.SigningContext() sig, err := ctx.ConstructSignature(el, true) if err != nil { return nil, err } ret := el.Copy() var children []etree.Token children = append(children, ret.Child[0]) // issuer is always first children = append(children, sig) // next is the signature children = append(children, ret.Child[1:]...) // then all other children ret.Child = children return ret, nil } func (sp *SAMLServiceProvider) BuildLogoutRequestDocumentNoSig(nameID string, sessionIndex string) (*etree.Document, error) { return sp.buildLogoutRequest(false, nameID, sessionIndex) } func (sp *SAMLServiceProvider) BuildLogoutRequestDocument(nameID string, sessionIndex string) (*etree.Document, error) { return sp.buildLogoutRequest(true, nameID, sessionIndex) } //BuildLogoutBodyPostFromDocument builds the POST body to be sent to IDP. //It takes the LogoutRequest xml as input. func (sp *SAMLServiceProvider) BuildLogoutBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) { return sp.buildLogoutBodyPostFromDocument(relayState, doc) } func (sp *SAMLServiceProvider) buildLogoutBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) { reqBuf, err := doc.WriteToBytes() if err != nil { return nil, err } encodedReqBuf := base64.StdEncoding.EncodeToString(reqBuf) var tmpl *template.Template var rv bytes.Buffer if relayState != "" { tmpl = template.Must(template.New("saml-post-form").Parse(`` + `
` + `` + `` + `` + `
` + ``)) data := struct { URL string SAMLRequest string RelayState string }{ URL: sp.IdentityProviderSLOURL, SAMLRequest: encodedReqBuf, RelayState: relayState, } if err = tmpl.Execute(&rv, data); err != nil { return nil, err } } else { tmpl = template.Must(template.New("saml-post-form").Parse(`` + `
` + `` + `` + `
` + ``)) data := struct { URL string SAMLRequest string }{ URL: sp.IdentityProviderSLOURL, SAMLRequest: encodedReqBuf, } if err = tmpl.Execute(&rv, data); err != nil { return nil, err } } return rv.Bytes(), nil } func (sp *SAMLServiceProvider) BuildLogoutURLRedirect(relayState string, doc *etree.Document) (string, error) { return sp.buildLogoutURLFromDocument(relayState, BindingHttpRedirect, doc) } func (sp *SAMLServiceProvider) buildLogoutURLFromDocument(relayState, binding string, doc *etree.Document) (string, error) { parsedUrl, err := url.Parse(sp.IdentityProviderSLOURL) if err != nil { return "", err } logoutRequest, err := doc.WriteToString() if err != nil { return "", err } buf := &bytes.Buffer{} fw, err := flate.NewWriter(buf, flate.DefaultCompression) if err != nil { return "", fmt.Errorf("flate NewWriter error: %v", err) } _, err = fw.Write([]byte(logoutRequest)) if err != nil { return "", fmt.Errorf("flate.Writer Write error: %v", err) } err = fw.Close() if err != nil { return "", fmt.Errorf("flate.Writer Close error: %v", err) } qs := parsedUrl.Query() qs.Add("SAMLRequest", base64.StdEncoding.EncodeToString(buf.Bytes())) if relayState != "" { qs.Add("RelayState", relayState) } if binding == BindingHttpRedirect { // Sign URL encoded query (see Section 3.4.4.1 DEFLATE Encoding of saml-bindings-2.0-os.pdf) ctx := sp.SigningContext() qs.Add("SigAlg", ctx.GetSignatureMethodIdentifier()) var rawSignature []byte //qs.Encode() sorts the keys (See https://golang.org/pkg/net/url/#Values.Encode). //If RelayState parameter is present then RelayState parameter //will be put first by Encode(). Hence encode them separately and concatenate. //Signature string has to have parameters in the order - SAMLRequest=value&RelayState=value&SigAlg=value. //(See Section 3.4.4.1 saml-bindings-2.0-os.pdf). var orderedParams = []string{"SAMLRequest", "RelayState", "SigAlg"} var paramValueMap = make(map[string]string) paramValueMap["SAMLRequest"] = base64.StdEncoding.EncodeToString(buf.Bytes()) if relayState != "" { paramValueMap["RelayState"] = relayState } paramValueMap["SigAlg"] = ctx.GetSignatureMethodIdentifier() ss := "" for _, k := range orderedParams { v, ok := paramValueMap[k] if ok { //Add the value after URL encoding. u := url.Values{} u.Add(k, v) e := u.Encode() if ss != "" { ss += "&" + e } else { ss = e } } } //Now generate the signature on the string of ordered parameters. if rawSignature, err = ctx.SignString(ss); err != nil { return "", fmt.Errorf("unable to sign query string of redirect URL: %v", err) } // Now add base64 encoded Signature qs.Add("Signature", base64.StdEncoding.EncodeToString(rawSignature)) } //Here the parameters may appear in any order. parsedUrl.RawQuery = qs.Encode() return parsedUrl.String(), nil } // signatureInputString constructs the string to be fed into the signature algorithm, as described // in section 3.4.4.1 of // https://www.oasis-open.org/committees/download.php/56779/sstc-saml-bindings-errata-2.0-wd-06.pdf func signatureInputString(samlRequest, relayState, sigAlg string) string { var params [][2]string if relayState == "" { params = [][2]string{{"SAMLRequest", samlRequest}, {"SigAlg", sigAlg}} } else { params = [][2]string{{"SAMLRequest", samlRequest}, {"RelayState", relayState}, {"SigAlg", sigAlg}} } var buf bytes.Buffer for _, kv := range params { k, v := kv[0], kv[1] if buf.Len() > 0 { buf.WriteByte('&') } buf.WriteString(url.QueryEscape(k) + "=" + url.QueryEscape(v)) } return buf.String() } ================================================ FILE: build_request_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "bytes" "compress/flate" "encoding/base64" "encoding/xml" "fmt" "net/http" "net/http/httptest" "net/url" "testing" "time" "github.com/beevik/etree" "github.com/stretchr/testify/require" ) func TestRedirect(t *testing.T) { r := &http.Request{URL: &url.URL{Path: "/"}} w := httptest.NewRecorder() spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", SignAuthnRequests: false, } require.NoError(t, sp.AuthRedirect(w, r, "foobar")) require.Len(t, w.HeaderMap, 1, "wrong number of headers was set") require.Equal(t, http.StatusFound, w.Code, "wrong http status was set") u, err := url.Parse(w.HeaderMap.Get("Location")) require.NoError(t, err, "invalid url used for redirect") require.Equal(t, "idp.test", u.Host) require.Equal(t, "https", u.Scheme) require.Equal(t, "foobar", u.Query().Get("RelayState")) bs, err := base64.StdEncoding.DecodeString(u.Query().Get("SAMLRequest")) require.NoError(t, err, "error base64 decoding SAMLRequest query param") fr := flate.NewReader(bytes.NewReader(bs)) req := AuthNRequest{} require.NoError(t, xml.NewDecoder(fr).Decode(&req), "Error reading/decoding from flate-compressed URL") iss, err := url.Parse(req.Issuer) require.NoError(t, err, "error parsing request issuer URL") require.Equal(t, "sp.test", iss.Host) require.WithinDuration(t, time.Now(), req.IssueInstant, time.Second, "IssueInstant was not within the expected time frame") dst, err := url.Parse(req.Destination) require.NoError(t, err, "error parsing request destination") require.Equal(t, "https", dst.Scheme) require.Equal(t, "idp.test", dst.Host) //Require that the destination is the same as the redirected URL, except params require.Equal(t, fmt.Sprintf("%s://%s%s", u.Scheme, u.Host, u.Path), dst.String()) } func TestRequestedAuthnContextOmitted(t *testing.T) { spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", SignAuthnRequests: false, } request, err := sp.BuildAuthRequest() require.NoError(t, err) doc := etree.NewDocument() err = doc.ReadFromString(request) require.NoError(t, err) el := doc.FindElement("./AuthnRequest/RequestedAuthnContext") require.Nil(t, el) } func TestRequestedAuthnContextIncluded(t *testing.T) { spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", RequestedAuthnContext: &RequestedAuthnContext{ Comparison: AuthnPolicyMatchExact, Contexts: []string{ AuthnContextPasswordProtectedTransport, }, }, SignAuthnRequests: false, } request, err := sp.BuildAuthRequest() require.NoError(t, err) doc := etree.NewDocument() err = doc.ReadFromString(request) require.NoError(t, err) el := doc.FindElement("./AuthnRequest/RequestedAuthnContext") require.Equal(t, el.SelectAttrValue("Comparison", ""), "exact") require.Len(t, el.ChildElements(), 1) el = el.ChildElements()[0] require.Equal(t, el.Tag, "AuthnContextClassRef") require.Equal(t, el.Text(), AuthnContextPasswordProtectedTransport) } func TestForceAuthnOmitted(t *testing.T) { spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", } request, err := sp.BuildAuthRequest() require.NoError(t, err) doc := etree.NewDocument() err = doc.ReadFromString(request) require.NoError(t, err) attr := doc.Root().SelectAttr("ForceAuthn") require.Nil(t, attr) } func TestForceAuthnIncluded(t *testing.T) { spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", ForceAuthn: true, } request, err := sp.BuildAuthRequest() require.NoError(t, err) doc := etree.NewDocument() err = doc.ReadFromString(request) require.NoError(t, err) attr := doc.Root().SelectAttr("ForceAuthn") require.NotNil(t, attr) require.Equal(t, "true", attr.Value) } func TestIsPassiveOmitted(t *testing.T) { spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", } request, err := sp.BuildAuthRequest() require.NoError(t, err) doc := etree.NewDocument() err = doc.ReadFromString(request) require.NoError(t, err) attr := doc.Root().SelectAttr("IsPassive") require.Nil(t, attr) } func TestIsPassiveIncluded(t *testing.T) { spURL := "https://sp.test" sp := SAMLServiceProvider{ AssertionConsumerServiceURL: spURL, AudienceURI: spURL, IdentityProviderIssuer: spURL, IdentityProviderSSOURL: "https://idp.test/saml/sso", IsPassive: true, } request, err := sp.BuildAuthRequest() require.NoError(t, err) doc := etree.NewDocument() err = doc.ReadFromString(request) require.NoError(t, err) attr := doc.Root().SelectAttr("IsPassive") require.NotNil(t, attr) require.Equal(t, "true", attr.Value) } ================================================ FILE: decode_logout_request.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "encoding/base64" "fmt" dsig "github.com/russellhaering/goxmldsig" ) func (sp *SAMLServiceProvider) validateLogoutRequestAttributes(request *LogoutRequest) error { if request.Destination != "" && request.Destination != sp.ServiceProviderSLOURL { return ErrInvalidValue{ Key: DestinationAttr, Expected: sp.ServiceProviderSLOURL, Actual: request.Destination, } } if request.Version != "2.0" { return ErrInvalidValue{ Reason: ReasonUnsupported, Key: "SAML version", Expected: "2.0", Actual: request.Version, } } return nil } func (sp *SAMLServiceProvider) ValidateEncodedLogoutRequestPOST(encodedRequest string) (*LogoutRequest, error) { raw, err := base64.StdEncoding.DecodeString(encodedRequest) if err != nil { return nil, err } // Parse the raw request - parseResponse is generic _, el, err := parseResponse(raw, sp.MaximumDecompressedBodySize) if err != nil { return nil, err } var requestSignatureValidated bool if !sp.SkipSignatureValidation { el, err = sp.validateElementSignature(el) if err == dsig.ErrMissingSignature { return nil, fmt.Errorf("logout request is not signed") } else if err != nil { return nil, err } else if el == nil { return nil, fmt.Errorf("missing transformed logout request") } else { requestSignatureValidated = true } } decodedRequest := &LogoutRequest{} err = xmlUnmarshalElement(el, decodedRequest) if err != nil { return nil, fmt.Errorf("unable to unmarshal logout request: %v", err) } decodedRequest.SignatureValidated = requestSignatureValidated err = sp.ValidateDecodedLogoutRequest(decodedRequest) if err != nil { return nil, err } return decodedRequest, nil } ================================================ FILE: decode_response.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "bytes" "compress/flate" "crypto/tls" "crypto/x509" "encoding/base64" "fmt" "io" "encoding/xml" "github.com/beevik/etree" rtvalidator "github.com/mattermost/xml-roundtrip-validator" "github.com/russellhaering/gosaml2/types" dsig "github.com/russellhaering/goxmldsig" "github.com/russellhaering/goxmldsig/etreeutils" ) const ( defaultMaxDecompressedResponseSize = 5 * 1024 * 1024 ) func (sp *SAMLServiceProvider) validationContext() *dsig.ValidationContext { ctx := dsig.NewDefaultValidationContext(sp.IDPCertificateStore) ctx.Clock = sp.Clock return ctx } // validateResponseAttributes validates a SAML Response's tag and attributes. It does // not inspect child elements of the Response at all. func (sp *SAMLServiceProvider) validateResponseAttributes(response *types.Response) error { if response.Destination != "" && response.Destination != sp.AssertionConsumerServiceURL { return ErrInvalidValue{ Key: DestinationAttr, Expected: sp.AssertionConsumerServiceURL, Actual: response.Destination, } } if response.Version != "2.0" { return ErrInvalidValue{ Reason: ReasonUnsupported, Key: "SAML version", Expected: "2.0", Actual: response.Version, } } return nil } // validateLogoutResponseAttributes validates a SAML Response's tag and attributes. It does // not inspect child elements of the Response at all. func (sp *SAMLServiceProvider) validateLogoutResponseAttributes(response *types.LogoutResponse) error { if response.Destination != "" && response.Destination != sp.ServiceProviderSLOURL { return ErrInvalidValue{ Key: DestinationAttr, Expected: sp.ServiceProviderSLOURL, Actual: response.Destination, } } if response.Version != "2.0" { return ErrInvalidValue{ Reason: ReasonUnsupported, Key: "SAML version", Expected: "2.0", Actual: response.Version, } } return nil } func xmlUnmarshalElement(el *etree.Element, obj interface{}) error { doc := etree.NewDocument() doc.SetRoot(el) data, err := doc.WriteToBytes() if err != nil { return err } err = xml.Unmarshal(data, obj) if err != nil { return err } return nil } func (sp *SAMLServiceProvider) getDecryptCert() (*tls.Certificate, error) { if sp.SPKeyStore == nil { return nil, fmt.Errorf("no decryption certs available") } //This is the tls.Certificate we'll use to decrypt any encrypted assertions var decryptCert tls.Certificate switch crt := sp.SPKeyStore.(type) { case dsig.TLSCertKeyStore: // Get the tls.Certificate directly if possible decryptCert = tls.Certificate(crt) default: //Otherwise, construct one from the results of GetKeyPair pk, cert, err := sp.SPKeyStore.GetKeyPair() if err != nil { return nil, fmt.Errorf("error getting keypair: %v", err) } decryptCert = tls.Certificate{ Certificate: [][]byte{cert}, PrivateKey: pk, } } if sp.ValidateEncryptionCert { // Check Validity period of certificate if len(decryptCert.Certificate) < 1 || len(decryptCert.Certificate[0]) < 1 { return nil, fmt.Errorf("empty decryption cert") } else if cert, err := x509.ParseCertificate(decryptCert.Certificate[0]); err != nil { return nil, fmt.Errorf("invalid x509 decryption cert: %v", err) } else { now := sp.Clock.Now() if now.Before(cert.NotBefore) || now.After(cert.NotAfter) { return nil, fmt.Errorf("decryption cert is not valid at this time") } } } return &decryptCert, nil } func (sp *SAMLServiceProvider) decryptAssertions(el *etree.Element) error { var decryptCert *tls.Certificate decryptAssertion := func(ctx etreeutils.NSContext, encryptedElement *etree.Element) error { if encryptedElement.Parent() != el { return fmt.Errorf("found encrypted assertion with unexpected parent element: %s", encryptedElement.Parent().Tag) } detached, err := etreeutils.NSDetatch(ctx, encryptedElement) // make a detached copy if err != nil { return fmt.Errorf("unable to detach encrypted assertion: %v", err) } encryptedAssertion := &types.EncryptedAssertion{} err = xmlUnmarshalElement(detached, encryptedAssertion) if err != nil { return fmt.Errorf("unable to unmarshal encrypted assertion: %v", err) } if decryptCert == nil { decryptCert, err = sp.getDecryptCert() if err != nil { return fmt.Errorf("unable to get decryption certificate: %v", err) } } raw, derr := encryptedAssertion.DecryptBytes(decryptCert) if derr != nil { return fmt.Errorf("unable to decrypt encrypted assertion: %v", derr) } doc, _, err := parseResponse(raw, sp.MaximumDecompressedBodySize) if err != nil { return fmt.Errorf("unable to create element from decrypted assertion bytes: %v", err) } // Replace the original encrypted assertion with the decrypted one. if el.RemoveChild(encryptedElement) == nil { return fmt.Errorf("unable to remove encrypted assertion element") } el.AddChild(doc.Root()) return nil } if err := etreeutils.NSFindIterate(el, SAMLAssertionNamespace, EncryptedAssertionTag, decryptAssertion); err != nil { return err } else { return nil } } func (sp *SAMLServiceProvider) validateElementSignature(el *etree.Element) (*etree.Element, error) { return sp.validationContext().Validate(el) } // deprecated func (sp *SAMLServiceProvider) validateAssertionSignatures(el *etree.Element) error { signedAssertions := 0 unsignedAssertions := 0 validateAssertion := func(ctx etreeutils.NSContext, unverifiedAssertion *etree.Element) error { parent := unverifiedAssertion.Parent() if parent == nil { return fmt.Errorf("parent is nil") } if parent != el { return fmt.Errorf("found assertion with unexpected parent element: %s", unverifiedAssertion.Parent().Tag) } detached, err := etreeutils.NSDetatch(ctx, unverifiedAssertion) // make a detached copy if err != nil { return fmt.Errorf("unable to detach unverified assertion: %v", err) } assertion, err := sp.validationContext().Validate(detached) if err == dsig.ErrMissingSignature { unsignedAssertions++ return nil } else if err != nil { return err } // Replace the original unverified Assertion with the verified one. Note that // if the Response is not signed, only signed Assertions (and not the parent Response) can be trusted. if el.RemoveChild(unverifiedAssertion) == nil { return fmt.Errorf("unable to remove unverified assertion element") } el.AddChild(assertion) signedAssertions++ return nil } if err := etreeutils.NSFindIterate(el, SAMLAssertionNamespace, AssertionTag, validateAssertion); err != nil { return err } else if signedAssertions > 0 && unsignedAssertions > 0 { return fmt.Errorf("invalid to have both signed and unsigned assertions") } else if signedAssertions < 1 { return dsig.ErrMissingSignature } else { return nil } } // verifyAssertionSignaturesIfPresent iterates through assertions within a // signed Response and verifies any that carry their own signatures. Assertions // without signatures are left untouched (the Response envelope signature // covers them). This prevents XML wrapping attacks where assertion content is // tampered with inside a signed envelope. func (sp *SAMLServiceProvider) verifyAssertionSignaturesIfPresent(responseEl *etree.Element) error { verifyAssertion := func(ctx etreeutils.NSContext, assertionEl *etree.Element) error { if assertionEl.Parent() != responseEl { return nil } detached, err := etreeutils.NSDetatch(ctx, assertionEl) if err != nil { return fmt.Errorf("unable to detach assertion for signature verification: %v", err) } verified, err := sp.validationContext().Validate(detached) if err == dsig.ErrMissingSignature { // No signature on this assertion — that's fine, the Response // envelope signature covers it. return nil } else if err != nil { return fmt.Errorf("assertion signature verification failed: %v", err) } // Replace the unverified assertion with the signature-verified version. if responseEl.RemoveChild(assertionEl) == nil { return fmt.Errorf("unable to remove unverified assertion element") } responseEl.AddChild(verified) return nil } return etreeutils.NSFindIterate(responseEl, SAMLAssertionNamespace, AssertionTag, verifyAssertion) } // ValidateEncodedResponse both decodes and validates, based on SP // configuration, an encoded, signed response. It will also appropriately // decrypt a response if the assertion was encrypted func (sp *SAMLServiceProvider) ValidateEncodedResponse(encodedResponse string) (*types.Response, error) { raw, err := base64.StdEncoding.DecodeString(encodedResponse) if err != nil { return nil, err } // Parse the raw response doc, unverifiedResponse, err := parseResponse(raw, sp.MaximumDecompressedBodySize) if err != nil { return nil, err } var responseSignatureValidated bool // storing our final response to return back decodedResponse := &types.Response{} // user has decided to skip signature verification // just unmarshal the untrusted el if sp.SkipSignatureValidation { err = xmlUnmarshalElement(unverifiedResponse, decodedResponse) if err != nil { return nil, fmt.Errorf("unable to unmarshal response: %v", err) } decodedResponse.SignatureValidated = false err := sp.Validate(decodedResponse) if err != nil { return nil, err } return decodedResponse, nil } // first get SignedResponse, if any signedResponseEl, err := sp.validateElementSignature(unverifiedResponse) // continue for unsigned Response, maybe individual Assertions are still signed if err == dsig.ErrMissingSignature { // Unfortunately we just blew away our Response unverifiedResponse = doc.Root() } else if err != nil { return nil, err } else if signedResponseEl == nil { return nil, fmt.Errorf("missing transformed response") } else { // good case, no errors when verifying signature // 1. Response is signed // optionally decrypt each assertion err = sp.decryptAssertions(signedResponseEl) if err != nil { return nil, err } // Even though the Response envelope is signed, verify assertion // signatures when present. This prevents XML wrapping attacks // where an attacker tampers with assertion content within a // signed envelope. err = sp.verifyAssertionSignaturesIfPresent(signedResponseEl) if err != nil { return nil, err } responseSignatureValidated = true err = xmlUnmarshalElement(signedResponseEl, decodedResponse) if err != nil { return nil, fmt.Errorf("unable to unmarshal response: %v", err) } decodedResponse.SignatureValidated = responseSignatureValidated err := sp.Validate(decodedResponse) if err != nil { return nil, err } return decodedResponse, nil } // now we have a tricky case, // unsigned response but have some signed Assertions // unmarshal into decodedResponse, err = xmlUnmarshalElement(unverifiedResponse, decodedResponse) if err != nil { return nil, err } // keep in mind anything inside the Response is technically untrusted // however, we have to keep the relevant details such as StatusCode // We reset the underlying assertions & encrypted assertions to [] decodedResponse.SignatureValidated = false decodedResponse.Assertions = []types.Assertion{} decodedResponse.EncryptedAssertions = []types.EncryptedAssertion{} // first decrypt all assertions err = sp.decryptAssertions(unverifiedResponse) if err != nil { return nil, err } // iterate through each Assertion inside our etree unverifiedResponse addSignedAssertion := func(ctx etreeutils.NSContext, unverifiedAssertion *etree.Element) error { parent := unverifiedAssertion.Parent() if parent == nil { return fmt.Errorf("parent is nil") } if parent != unverifiedResponse { return fmt.Errorf("found assertion with unexpected parent element: %s", unverifiedAssertion.Parent().Tag) } detached, err := etreeutils.NSDetatch(ctx, unverifiedAssertion) // make a detached copy if err != nil { return fmt.Errorf("unable to detach unverified assertion: %v", err) } // signedAssertion after checking for errors signedAssertion, err := sp.validationContext().Validate(detached) if err != nil { return err // return any errors including unsignedAssertions } decodedAssertion := &types.Assertion{} err = xmlUnmarshalElement(signedAssertion, decodedAssertion) if err != nil { return fmt.Errorf("unable to unmarshal assertion: %v", err) } decodedAssertion.SignatureValidated = true // now add it to decodedResponse decodedResponse.Assertions = append(decodedResponse.Assertions, *decodedAssertion) return nil } // iterate through each Assertion through our unverified Response // our decodedResponse contains a empty list of Assertions // throughout iteration, we will add signed assertions to the decodedResponse if err := etreeutils.NSFindIterate(unverifiedResponse, SAMLAssertionNamespace, AssertionTag, addSignedAssertion); err != nil { return nil, err } err = sp.Validate(decodedResponse) if err != nil { return nil, err } return decodedResponse, nil } // DecodeUnverifiedBaseResponse decodes several attributes from a SAML response for the purpose // of determining how to validate the response. This is useful for Service Providers which // expose a single Assertion Consumer Service URL but consume Responses from many IdPs. func DecodeUnverifiedBaseResponse(encodedResponse string) (*types.UnverifiedBaseResponse, error) { raw, err := base64.StdEncoding.DecodeString(encodedResponse) if err != nil { return nil, err } var response *types.UnverifiedBaseResponse err = maybeDeflate(raw, defaultMaxDecompressedResponseSize, func(maybeXML []byte) error { response = &types.UnverifiedBaseResponse{} return xml.Unmarshal(maybeXML, response) }) if err != nil { return nil, err } return response, nil } // maybeDeflate invokes the passed decoder over the passed data. If an error is // returned, it then attempts to deflate the passed data before re-invoking // the decoder over the deflated data. func maybeDeflate(data []byte, maxSize int64, decoder func([]byte) error) error { err := decoder(data) if err == nil { return nil } // Default to 5MB max size if maxSize == 0 { maxSize = defaultMaxDecompressedResponseSize } lr := io.LimitReader(flate.NewReader(bytes.NewReader(data)), maxSize+1) deflated, err := io.ReadAll(lr) if err != nil { return err } if int64(len(deflated)) > maxSize { return fmt.Errorf("deflated response exceeds maximum size of %d bytes", maxSize) } return decoder(deflated) } // parseResponse is a helper function that was refactored out so that the XML parsing behavior can be isolated and unit tested func parseResponse(xml []byte, maxSize int64) (*etree.Document, *etree.Element, error) { var doc *etree.Document var rawXML []byte err := maybeDeflate(xml, maxSize, func(xml []byte) error { doc = etree.NewDocument() rawXML = xml return doc.ReadFromBytes(xml) }) if err != nil { return nil, nil, err } el := doc.Root() if el == nil { return nil, nil, fmt.Errorf("unable to parse response") } // Examine the response for attempts to exploit weaknesses in Go's encoding/xml err = rtvalidator.Validate(bytes.NewReader(rawXML)) if err != nil { return nil, nil, err } return doc, el, nil } // DecodeUnverifiedLogoutResponse decodes several attributes from a SAML Logout response, without doing any verifications. func DecodeUnverifiedLogoutResponse(encodedResponse string) (*types.LogoutResponse, error) { raw, err := base64.StdEncoding.DecodeString(encodedResponse) if err != nil { return nil, err } var response *types.LogoutResponse err = maybeDeflate(raw, defaultMaxDecompressedResponseSize, func(maybeXML []byte) error { response = &types.LogoutResponse{} return xml.Unmarshal(maybeXML, response) }) if err != nil { return nil, err } return response, nil } func (sp *SAMLServiceProvider) ValidateEncodedLogoutResponsePOST(encodedResponse string) (*types.LogoutResponse, error) { raw, err := base64.StdEncoding.DecodeString(encodedResponse) if err != nil { return nil, err } // Parse the raw response doc, el, err := parseResponse(raw, sp.MaximumDecompressedBodySize) if err != nil { return nil, err } var responseSignatureValidated bool if !sp.SkipSignatureValidation { el, err = sp.validateElementSignature(el) if err == dsig.ErrMissingSignature { // Unfortunately we just blew away our Response el = doc.Root() } else if err != nil { return nil, err } else if el == nil { return nil, fmt.Errorf("missing transformed logout response") } else { responseSignatureValidated = true } } decodedResponse := &types.LogoutResponse{} err = xmlUnmarshalElement(el, decodedResponse) if err != nil { return nil, fmt.Errorf("unable to unmarshal logout response: %v", err) } decodedResponse.SignatureValidated = responseSignatureValidated err = sp.ValidateDecodedLogoutResponse(decodedResponse) if err != nil { return nil, err } return decodedResponse, nil } ================================================ FILE: decode_response_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "bytes" "crypto/tls" "crypto/x509" "encoding/base64" "encoding/pem" "io/ioutil" "testing" "time" "github.com/jonboulle/clockwork" rtvalidator "github.com/mattermost/xml-roundtrip-validator" dsig "github.com/russellhaering/goxmldsig" "github.com/stretchr/testify/require" ) const ( idpCert = ` -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIUQH54kyyeacU69J2iwz9bzeLmMaswDQYJKoZIhvcNAQEL BQAwHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MB4XDTE1MDYwNDIyMTAz MVoXDTM1MDYwNDIyMTAzMVowHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlJhN20ng2VN/cTrWtqUI NaUsrHCkYXbm2y1PTN4b6fJI5hbvcv+LWCuLkLi3+iPGlBpcHHfrdJcyhmBHRHQ9 Sos3RIH5Lsn1IgjWe3hxQQmVeEi5xVxnw2YZGHaeX4YnI1TEBJwhtJmyitk74LHy bPGEqOJdApUnLz54L7I+252G/cOfEqUHMbxxtmHSc/9chF8bBxQ8OzIbJsByHnqi awQHwtsttre7n328gVqmf1VHE27cfAYiSjuK5pCsx/1kuJMBN+kg/3Gg9oi6aR50 WX1VUF3IBcnTDeiAXRz3PgsT8FlVZou6Ik9NT/Y5IHOZVGk64SRDaG8FuGxLexXr swIDAQABo3AwbjAdBgNVHQ4EFgQUjQwaAoY3u/iToIE3ADeNEW+Uu34wTQYDVR0R BEYwRIISY29sbGVnZS5jY2N0Y2EuZWR1hi5odHRwczovL2NvbGxlZ2UuY2NjdGNh LmVkdTo4NDQzL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBAQB26rdx phN1YKad3yDhLg6Y1ZwbmAjc+l4QB1KSL+cLqhDn5iMy4VdWh8HpSKRqCwofLtlw 3qOwospj+mJaguXRMpjYODRQaKRkTrCGxJhuNrQxDXL/b6FOEIJnUYenbPevuNgR Jc1VnREhWUUXT44KN5YUz9FEiG0BsBK8ecCPKBzTQ/hwaczhpqw6uqVMqxJaTGcn lCUHJAhVHiA8lWJ7vaNPsJ86xBFs/F76EwyFXIKQaruvcvChU7GNNSYdNJBa6HO9 9QWdGbr5aNQ4diunnBQdrdjgbQIwyhKTfbFWa2l5vbqEKDc0dwuPa6c25l8ruqxq CQ1CF8ZDDJ0XV6Ab -----END CERTIFICATE----- ` oktaCert = ` -----BEGIN CERTIFICATE----- MIIDPDCCAiQCCQDydJgOlszqbzANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzETMB EGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEQMA4GA1UEChMH SmFua3lDbzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDMxMjE5NDYzM1oXDTI3MTExOT E5NDYzM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcT DVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB0phbmt5Q28xEjAQBgNVBAMTCWxvY2FsaG9zdD CCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMGvJpRTTasRUSPqcbqCG+ZnTAur nu0vVpIG9lzExnh11o/BGmzu7lB+yLHcEdwrKBBmpepDBPCYxpVajvuEhZdKFx/Fdy6j5m H3rrW0Bh/zd36CoUNjbbhHyTjeM7FN2yF3u9lcyubuvOzr3B3gX66IwJlU46+wzcQVhSOl Mk2tXR+fIKQExFrOuK9tbX3JIBUqItpI+HnAow509CnM134svw8PTFLkR6/CcMqnDfDK1m 993PyoC1Y+N4X9XkhSmEQoAlAHPI5LHrvuujM13nvtoVYvKYoj7ScgumkpWNEvX652LfXO nKYlkB8ZybuxmFfIkzedQrbJsyOhfL03cMECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAeH wzqwnzGEkxjzSD47imXaTqtYyETZow7XwBc0ZaFS50qRFJUgKTAmKS1xQBP/qHpStsROT3 5DUxJAE6NY1Kbq3ZbCuhGoSlY0L7VzVT5tpu4EY8+Dq/u2EjRmmhoL7UkskvIZ2n1DdERt d+YUMTeqYl9co43csZwDno/IKomeN5qaPc39IZjikJ+nUC6kPFKeu/3j9rgHNlRtocI6S1 FdtFz9OZMQlpr0JbUt2T3xS/YoQJn6coDmJL5GTiiKM6cOe+Ur1VwzS1JEDbSS2TWWhzq8 ojLdrotYLGd9JOsoQhElmz+tMfCFQUFLExinPAyy7YHlSiVX13QH2XTu/iQQ== -----END CERTIFICATE----- ` oktaCert2 = ` -----BEGIN CERTIFICATE----- MIIDpDCCAoygAwIBAgIGAWxzAwX1MA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi05MDUyNTExHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTkwODA4MjA1MzMzWhcNMjkwODA4MjA1NDMzWjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtOTA1MjUxMRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA m+ZZF6aEG6ehLLIV6RPA+i1z6ss3HBG2bZD3efwKCDDXYUkp59AE7JsjVHMtpJPHhzHuScuHDMlu HmkBQTW7j9XpnaRn8SfZXkwlCUHTo+HAC9lwbQxO4d4wnwgnm6FAjm1I/gbfFAobd8BR9pDxHuXE MQ0DtQu/W3WbDUrz/bhSxPJAoVy2koQn9G0y3unm7eRwYWHeuW6GdPWV2szTtDS0c3qtUXVF5Ugg iQYlwQu6xkfy4l8iGJL7ETa2BmJzwCFecMIct87SqNhYQwCBH54MBaHcaSsCKyimNvMY9B7RmC+H 4+awePPA1q3R/UQ3Pfom8mx6yDdKIWqlkG3MsQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAiURCZ P4oJWcf1o5nm4yG15UH01g/S6Y4OUWMi6BFJy9fCrJ0h/2BZKi68SQ0uMAbdK6anxCzq3Rr5MSzW OWPQ1Zljn3LGPsiTFdFca/GVRen5IYQ7Dr2Mvhtm+QVscEY9TDjtETbTAHEVEjwXmB21wtdIhizv sQS7wz0A8LV+Atpbev45RiV6COmB6T6vJuFQ7ZsDZMSHZriTYiETTJvHBGd7PtbCxYNc6LRB2JDb wlekRhVEjR0UhnM+nn2sqqbv7tDEPs63lZSDXCnR1PhscHrEuQ04rHI3OL0gCULVQFvJrj85IAZF 1QQuGUK8ozfOyFpQWAJUW71INnF/SLWv -----END CERTIFICATE----- ` badInput = `http://www.okta.com/exk133onomIuOW98z357dC1cm0pLLjIWZC6G2Pmf0JogmqHztp9W1euXPd/TUHo=YRSCFLIkIgjbbYLyfCIc8jsP2MUJPjn+nYWRdlVIDdXtYXXxklYqdBXQsxDwNcsOAIGS75PeVGryml3oBkUDg/MfK7z/fFPLXX7c7xgh7/DBAFlSXbwlJQxuXQ5eZcGesgG6nYRwU1hpW+yN7C2ODN9KHi5TUdiEhvy8vdlFSfxdy4Mn68nG/UZBqmHHIZdRG2/Hpcs29YyaVVZUCZ0w22b7zsPuOXHuStOSTQ6isxI2R268+ZNKERYaNMCAGX4zNlT3mHBV0NnZkbO3wmlOfKksL+Qx7L64xFc3PaervxWuPqh2FoWpTCqFdliLdvUfFDszKXJKhO0bj1U0aSrdzg==steven.james.johnstone@gmail.com37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f.jazznetworks.comurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportStevenJohnstonesteven.james.johnstone@gmail.com` ) func testEncryptedAssertion(t *testing.T, validateEncryptionCert bool) { var err error cert, err := tls.LoadX509KeyPair("./testdata/test.crt", "./testdata/test.key") require.NoError(t, err, "could not load x509 key pair") block, _ := pem.Decode([]byte(idpCert)) idpCert, err := x509.ParseCertificate(block.Bytes) require.NoError(t, err, "couldn't parse idp cert pem block") sp := SAMLServiceProvider{ AssertionConsumerServiceURL: "https://saml2.test.astuart.co/sso/saml2", SPKeyStore: dsig.TLSCertKeyStore(cert), ValidateEncryptionCert: validateEncryptionCert, IDPCertificateStore: &dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert}, }, Clock: dsig.NewFakeClockAt(time.Date(2016, 04, 28, 22, 00, 00, 00, time.UTC)), } bs, err := ioutil.ReadFile("./testdata/saml.post") require.NoError(t, err, "couldn't read post") _, err = sp.RetrieveAssertionInfo(string(bs)) if validateEncryptionCert { require.Error(t, err) require.Equal(t, "error validating response: unable to get decryption certificate: decryption cert is not valid at this time", err.Error()) } else { require.NoError(t, err, "Assertion info should be retrieved with no error") } } func TestEncryptedAssertion(t *testing.T) { testEncryptedAssertion(t, false) } func TestEncryptedAssertionInvalidCert(t *testing.T) { testEncryptedAssertion(t, true) } func TestCompressedResponse(t *testing.T) { bs, err := ioutil.ReadFile("./testdata/saml_compressed.post") require.NoError(t, err, "couldn't read compressed post") block, _ := pem.Decode([]byte(oktaCert)) idpCert, err := x509.ParseCertificate(block.Bytes) require.NoError(t, err, "couldn't parse okta cert pem block") sp := SAMLServiceProvider{ AssertionConsumerServiceURL: "https://f1f51ddc.ngrok.io/api/sso/saml2/acs/58cafd0573d4f375b8e70e8e", SPKeyStore: dsig.TLSCertKeyStore(cert), IDPCertificateStore: &dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert}, }, Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 3, 17, 20, 00, 0, 0, time.UTC))), } _, err = sp.RetrieveAssertionInfo(string(bs)) require.NoError(t, err, "Assertion info should be retrieved with no error") } func TestDecodeColonsInLocalNames(t *testing.T) { // Handling of double colons was improved in Go 1.7 such that this test no longer fails. // See: https://go-review.googlesource.com/c/go/+/277892 if rtvalidator.Validate(bytes.NewReader([]byte(``))) == nil { t.Skip() } _, _, err := parseResponse([]byte(``), 0) require.Error(t, err) } func TestDecodeDoubleColonInjectionAttackResponse(t *testing.T) { // Handling of double colons was improved in Go 1.7 such that this test no longer fails. // See: https://go-review.googlesource.com/c/go/+/277892 if rtvalidator.Validate(bytes.NewReader([]byte(``))) == nil { t.Skip() } _, _, err := parseResponse([]byte(doubleColonAssertionInjectionAttackResponse), 0) require.Error(t, err) } func TestMalFormedInput(t *testing.T) { block, _ := pem.Decode([]byte(oktaCert2)) idpCert, err := x509.ParseCertificate(block.Bytes) require.NoError(t, err, "couldn't parse okta cert pem block") certStore := dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert}, } sp := &SAMLServiceProvider{ Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2019, 8, 12, 12, 00, 52, 718, time.UTC))), AssertionConsumerServiceURL: "https://saml2.test.astuart.co/sso/saml2", SignAuthnRequests: true, IDPCertificateStore: &certStore, ValidateEncryptionCert: true, } base64Input := base64.StdEncoding.EncodeToString([]byte(badInput)) _, err = sp.RetrieveAssertionInfo(base64Input) require.Errorf(t, err, "parent is nil") } func TestCompressionBombInput(t *testing.T) { bs, err := ioutil.ReadFile("./testdata/saml_compressed.post") require.NoError(t, err, "couldn't read compressed post") block, _ := pem.Decode([]byte(oktaCert)) idpCert, err := x509.ParseCertificate(block.Bytes) require.NoError(t, err, "couldn't parse okta cert pem block") sp := SAMLServiceProvider{ AssertionConsumerServiceURL: "https://f1f51ddc.ngrok.io/api/sso/saml2/acs/58cafd0573d4f375b8e70e8e", SPKeyStore: dsig.TLSCertKeyStore(cert), IDPCertificateStore: &dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert}, }, Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 3, 17, 20, 00, 0, 0, time.UTC))), MaximumDecompressedBodySize: 2048, } _, err = sp.RetrieveAssertionInfo(string(bs)) require.Error(t, err, "error validating response: deflated response exceeds maximum size of 2048 bytes") } ================================================ FILE: go.mod ================================================ module github.com/russellhaering/gosaml2 go 1.25.0 toolchain go1.26.1 require ( github.com/beevik/etree v1.6.0 github.com/jonboulle/clockwork v0.5.0 github.com/mattermost/xml-roundtrip-validator v0.1.0 github.com/russellhaering/goxmldsig v1.6.0 github.com/stretchr/testify v1.11.1 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) ================================================ FILE: go.sum ================================================ github.com/beevik/etree v1.6.0 h1:u8Kwy8pp9D9XeITj2Z0XtA5qqZEmtJtuXZRQi+j03eE= github.com/beevik/etree v1.6.0/go.mod h1:bh4zJxiIr62SOf9pRzN7UUYaEDa9HEKafK25+sLc0Gc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU= github.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/russellhaering/goxmldsig v1.6.0 h1:8fdWXEPh2k/NZNQBPFNoVfS3JmzS4ZprY/sAOpKQLks= github.com/russellhaering/goxmldsig v1.6.0/go.mod h1:TrnaquDcYxWXfJrOjeMBTX4mLBeYAqaHEyUeWPxZlBM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= ================================================ FILE: internal/fuzz/README.md ================================================ # Internal Fuzzing for gosaml2 This directory contains fuzzing targets for gosaml2 that are used with Go's built-in fuzzing functionality and OSS-Fuzz. ## Running Fuzzers Locally ```bash go test -fuzz=FuzzDecodeResponse ./internal/fuzz/ -fuzztime=30s go test -fuzz=FuzzLogoutResponse ./internal/fuzz/ -fuzztime=30s go test -fuzz=FuzzBuildRequest ./internal/fuzz/ -fuzztime=30s ``` ## OSS-Fuzz Integration These fuzzers use native Go fuzzing (`func Fuzz(f *testing.F)`) and are compiled by OSS-Fuzz using `compile_native_go_fuzzer`. Configuration files for the integration can be found in the `oss-fuzz` directory. ================================================ FILE: internal/fuzz/fuzz_test.go ================================================ // Copyright 2025 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package fuzz import ( "encoding/base64" "encoding/binary" "testing" saml2 "github.com/russellhaering/gosaml2" ) func FuzzDecodeResponse(f *testing.F) { f.Fuzz(func(t *testing.T, data []byte) { encodedResponse := base64.StdEncoding.EncodeToString(data) _, err := saml2.DecodeUnverifiedBaseResponse(encodedResponse) if err != nil { return } sp := &saml2.SAMLServiceProvider{} _, _ = sp.ValidateEncodedResponse(encodedResponse) }) } func FuzzLogoutResponse(f *testing.F) { f.Fuzz(func(t *testing.T, data []byte) { encodedResponse := base64.StdEncoding.EncodeToString(data) _, err := saml2.DecodeUnverifiedLogoutResponse(encodedResponse) if err != nil { return } sp := &saml2.SAMLServiceProvider{} _, _ = sp.ValidateEncodedLogoutResponsePOST(encodedResponse) }) } func FuzzBuildRequest(f *testing.F) { f.Fuzz(func(t *testing.T, data []byte) { if len(data) < 8 { return } idValue := binary.LittleEndian.Uint64(data[:8]) relayState := string(data[8:]) if len(relayState) == 0 { return } sp := &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://idp.example.com/sso", IdentityProviderIssuer: "https://idp.example.com/", AssertionConsumerServiceURL: "https://sp.example.com/acs", AudienceURI: "https://sp.example.com/audience", SignAuthnRequests: idValue%2 == 0, ForceAuthn: idValue%3 == 0, IsPassive: idValue%5 == 0, } _, _ = sp.BuildAuthURL(relayState) _, _ = sp.BuildAuthRequest() }) } ================================================ FILE: logout_request.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "encoding/xml" "github.com/russellhaering/gosaml2/types" "time" ) // LogoutRequest is the go struct representation of a logout request type LogoutRequest struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:protocol LogoutRequest"` ID string `xml:"ID,attr"` Version string `xml:"Version,attr"` //ProtocolBinding string `xml:",attr"` IssueInstant time.Time `xml:"IssueInstant,attr"` Destination string `xml:"Destination,attr"` Issuer *types.Issuer `xml:"Issuer"` NameID *types.NameID `xml:"NameID"` SignatureValidated bool `xml:"-"` // not read, not dumped } ================================================ FILE: oss-fuzz/Dockerfile ================================================ # Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # ################################################################################ FROM gcr.io/oss-fuzz-base/base-builder-go RUN apt-get update && apt-get install -y make cmake RUN git clone --depth 1 https://github.com/russellhaering/gosaml2 WORKDIR gosaml2 COPY build.sh $SRC/ COPY *.options $SRC/ ================================================ FILE: oss-fuzz/README.md ================================================ # OSS-Fuzz Integration for gosaml2 This directory contains the configuration files necessary for integrating gosaml2 with Google's [OSS-Fuzz](https://github.com/google/oss-fuzz) continuous fuzzing service. ## Files - `build.sh`: Build script that compiles the fuzzing targets and creates the seed corpora - `Dockerfile`: Defines the Docker container used for building the fuzzers - `project.yaml`: Project configuration for OSS-Fuzz - `fuzz_decode_response.options`: Fuzzer-specific options for the SAML response decoder ## Fuzzing Targets The actual fuzzing targets are implemented in the `internal/fuzz` directory: 1. `FuzzDecodeResponse`: Fuzzes SAML response decoding and validation 2. `FuzzLogoutResponse`: Fuzzes SAML logout response decoding 3. `FuzzBuildRequest`: Fuzzes SAML authentication request building 4. `FuzzXMLValidation`: Fuzzes XML validation to catch parsing vulnerabilities ## Testing Locally with Docker To test the OSS-Fuzz integration locally: ```bash # Clone OSS-Fuzz git clone https://github.com/google/oss-fuzz cd oss-fuzz # Build the image python infra/helper.py build_image gosaml2 # Build the fuzzers python infra/helper.py build_fuzzers gosaml2 # Run the fuzzers python infra/helper.py run_fuzzer gosaml2 fuzz_decode_response ``` ## Adding New Fuzzers To add a new fuzzer: 1. Add the fuzzer implementation to `internal/fuzz/` 2. Update `build.sh` to compile the new fuzzer and create its seed corpus 3. Create fuzzer options file if needed (e.g., `my_new_fuzzer.options`) ================================================ FILE: oss-fuzz/build.sh ================================================ #!/bin/bash -eu # Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ################################################################################ cd $SRC/gosaml2 # Build fuzzers compile_native_go_fuzzer github.com/russellhaering/gosaml2/internal/fuzz FuzzDecodeResponse fuzz_decode_response compile_native_go_fuzzer github.com/russellhaering/gosaml2/internal/fuzz FuzzLogoutResponse fuzz_logout_response compile_native_go_fuzzer github.com/russellhaering/gosaml2/internal/fuzz FuzzBuildRequest fuzz_build_request # Create seed corpus mkdir -p $OUT/fuzz_decode_response_seed_corpus # Use existing test data as seed corpus find ./testdata -name '*.b64' -o -name '*.xml' | while read f; do cp "$f" $OUT/fuzz_decode_response_seed_corpus/ done zip -j $OUT/fuzz_decode_response_seed_corpus.zip $OUT/fuzz_decode_response_seed_corpus/* rm -rf $OUT/fuzz_decode_response_seed_corpus # Create a minimal seed corpus for the logout response mkdir -p $OUT/fuzz_logout_response_seed_corpus # Find logout response files if they exist, otherwise use a subset of the general ones find ./testdata -name '*logout*' -o -name '*.b64' | head -n 5 | while read f; do cp "$f" $OUT/fuzz_logout_response_seed_corpus/ done zip -j $OUT/fuzz_logout_response_seed_corpus.zip $OUT/fuzz_logout_response_seed_corpus/* rm -rf $OUT/fuzz_logout_response_seed_corpus # Create a minimal seed corpus for build request mkdir -p $OUT/fuzz_build_request_seed_corpus echo "relayState" > $OUT/fuzz_build_request_seed_corpus/relaystate echo "state123456" > $OUT/fuzz_build_request_seed_corpus/state zip -j $OUT/fuzz_build_request_seed_corpus.zip $OUT/fuzz_build_request_seed_corpus/* rm -rf $OUT/fuzz_build_request_seed_corpus ================================================ FILE: oss-fuzz/fuzz_decode_response.options ================================================ [libfuzzer] max_len = 10240 ================================================ FILE: oss-fuzz/project.yaml ================================================ homepage: "https://github.com/russellhaering/gosaml2" primary_contact: "russell.haering@gmail.com" language: go main_repo: "https://github.com/russellhaering/gosaml2" fuzzing_engines: - libfuzzer sanitizers: - address architectures: - x86_64 ================================================ FILE: providertests/exercise.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // +build go1.7 package providertests import ( "testing" saml2 "github.com/russellhaering/gosaml2" "github.com/stretchr/testify/require" ) func ExerciseProviderTestScenarios(t *testing.T, scenarios []ProviderTestScenario) { for _, scenario := range scenarios { t.Run(scenario.ScenarioName, func(t *testing.T) { _, err := saml2.DecodeUnverifiedBaseResponse(scenario.Response) // DecodeUnverifiedBaseResponse is more permissive than RetrieveAssertionInfo. // If an error _is_ returned it should match, but it is OK for no error to be // returned even when one is expected during full validation. if err != nil { scenario.CheckError(t, err) } assertionInfo, err := scenario.ServiceProvider.RetrieveAssertionInfo(scenario.Response) if scenario.CheckError != nil { scenario.CheckError(t, err) } else { require.NoError(t, err) } if err == nil { if scenario.CheckWarningInfo != nil { scenario.CheckWarningInfo(t, assertionInfo.WarningInfo) } else { require.False(t, assertionInfo.WarningInfo.InvalidTime) require.False(t, assertionInfo.WarningInfo.NotInAudience) } } }) } } ================================================ FILE: providertests/exercise_go_1_6.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // +build !go1.7 package providertests import ( "testing" saml2 "github.com/russellhaering/gosaml2" "github.com/stretchr/testify/require" ) func ExerciseProviderTestScenarios(t *testing.T, scenarios []ProviderTestScenario) { for _, scenario := range scenarios { // DecodeUnverifiedBaseResponse is more permissive than RetrieveAssertionInfo. // If an error _is_ returned it should match, but it is OK for no error to be // returned even when one is expected during full validation. _, err := saml2.DecodeUnverifiedBaseResponse(scenario.Response) if err != nil { scenario.CheckError(t, err) } assertionInfo, err := scenario.ServiceProvider.RetrieveAssertionInfo(scenario.Response) if scenario.CheckError != nil { scenario.CheckError(t, err) } else { require.NoError(t, err) } if err == nil { if scenario.CheckWarningInfo != nil { scenario.CheckWarningInfo(t, assertionInfo.WarningInfo) } else { require.False(t, assertionInfo.WarningInfo.InvalidTime) require.False(t, assertionInfo.WarningInfo.NotInAudience) } } } } ================================================ FILE: providertests/oktadev_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package providertests import ( "fmt" "testing" "time" "github.com/jonboulle/clockwork" saml2 "github.com/russellhaering/gosaml2" dsig "github.com/russellhaering/goxmldsig" ) var oktaScenarioErrors = map[int]string{ 1: "error validating response: Missing signature referencing the top-level element", 3: "error validating response: Could not verify certificate against trusted certs", 4: "error validating response: Unrecognized Destination value, Expected: http://dba9a5fc.ngrok.io/v1/_saml_callback, Actual: fake.identifier.example.com", 5: "error validating response: Unrecognized Issuer value, Expected: http://example.com/saml/acs/example, Actual: fake.identifier.example.com", 7: "error validating response: missing Issuer element", 8: "error validating response: missing NotOnOrAfter attribute on SubjectConfirmationData element", 9: "missing NotOnOrAfter attribute on Conditions element", 10: "missing NotBefore attribute on Conditions element", 12: "error validating response: Missing signature referencing the top-level element", 13: "error validating response: Signature could not be verified", 14: "error validating response: Unrecognized StatusCode value, Expected: urn:oasis:names:tc:SAML:2.0:status:Success, Actual: Failure", 15: "error validating response: Unrecognized StatusCode value, Expected: urn:oasis:names:tc:SAML:2.0:status:Success, Actual: urn:oasis:names:tc:SAML:2.0:status:Requester", } var oktaScenarioWarnings = map[int]scenarioWarnings{ 6: scenarioWarnings{ NotInAudience: true, }, 11: scenarioWarnings{ InvalidTime: true, }, } func TestOktaDevCasesLocally(t *testing.T) { sp := &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "http://example.com/saml/acs/example", IdentityProviderIssuer: "http://example.com/saml/acs/example", AssertionConsumerServiceURL: "http://dba9a5fc.ngrok.io/v1/_saml_callback", AudienceURI: "http://example.com/saml/acs/example", IDPCertificateStore: LoadCertificateStore("./testdata/saml.oktadev.com/oktadev.pem"), Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 4, 4, 17, 54, 0, 0, time.UTC))), } scenarios := []ProviderTestScenario{} for i := 0; i < 17; i++ { response := LoadRawResponse(fmt.Sprintf("./testdata/saml.oktadev.com/response_%d", i)) scenarios = append(scenarios, ProviderTestScenario{ ScenarioName: fmt.Sprintf("Scenario_%d", i), Response: response, ServiceProvider: sp, // Capture the value of i by passing it to a function. CheckError: scenarioErrorChecker(i, oktaScenarioErrors), CheckWarningInfo: scenarioWarningChecker(i, oktaScenarioWarnings), }) } ExerciseProviderTestScenarios(t, scenarios) } ================================================ FILE: providertests/onelogin_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package providertests import ( "fmt" "testing" saml2 "github.com/russellhaering/gosaml2" ) var oneLoginScenarioErrors = map[int]string{ // 99 - Response(Assertion) - no signature 99: "error validating response: Missing signature referencing the top-level element", // 98 - Response(encrypted(Assertion)) - no signature 98: "error validating response: Missing signature referencing the top-level element", // 01 - signed(Response(Assertion)) 1: "", // 03 - Response(signed(Assertion)) 3: "", // 04 - signed(Response(signed(Assertion))) 4: "", // 05 - Response(encrypted(signed(Assertion))), no encryption certificate included in Assertion. // OneLogin does not include SP encryption certificate by default. ADFS and PingFed also do not // include the SP encryption certificate and they do not provide an option to include it in Response. // OneLogin and PingFed also do not include DigestMethod (default to http://www.w3.org/2000/09/xmldsig#sha1). 5: "", // 06 - Response(encrypted(signed(Assertion))) 6: "", // 07 - signed(Response(encrypted(Assertion))) 7: "", // 08 - signed(Response(encrypted(signed(Assertion)))) 8: "", // 09 - signed(Response(encrypted(signed(Assertion)))), no encryption certificate included in Assertion. // OneLogin does not include SP encryption certificate by default. ADFS and PingFed also do not // include the SP encryption certificate and they do not provide an option to include it in Response. // OneLogin and PingFed also do not include DigestMethod (default to http://www.w3.org/2000/09/xmldsig#sha1). 9: "", // 11 - signed(Response(Assertion)) - 01 Assertion content changed slightly 11: "error validating response: Signature could not be verified", // 12 - signed(Response(Assertion)) - 01 Response content changed slightly 12: "error validating response: Signature could not be verified", // 13 - Response(signed(Assertion)) - 03 Assertion content changed slightly 13: "error validating response: Signature could not be verified", // 14 - signed(Response(signed(Assertion)) - 04 Assertion content changed slightly 14: "error validating response: Signature could not be verified", // 15 - signed(Response(signed(Assertion))) - 04 Response content changed slightly 15: "error validating response: Signature could not be verified", // 16 - Response(encrypted(signed(Assertion))) - 06 CipherValue of EncryptedKey changed slightly 16: "error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: rsa internal error: crypto/rsa: decryption error", // 17 - signed(Response(encrypted(Assertion))) - 07 Response content changed slightly 17: "error validating response: Signature could not be verified", // 18 - signed(Response(encrypted(signed(Assertion)))) - 16 signed (signature valid, still cannot decrypt) 18: "error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: rsa internal error: crypto/rsa: decryption error", // 81 - Response(Assertion) - 99 missing assertion and response signature 81: "error validating response: Missing signature referencing the top-level element", // 82 - Response(Assertion) - 99 missing assertion and response signature 82: "error validating response: Missing signature referencing the top-level element", // 91 - Response(Assertion) - 99 missing Response subject confirmation element // Note: gosaml2 is correctly checking signature before contents 91: "error validating response: Missing signature referencing the top-level element", // 92 - Response(Assertion) - 99 missing Response subject confirmation method // Note: gosaml2 is correctly checking signature before contents 92: "error validating response: Missing signature referencing the top-level element", // 21 - signed(Response(Assertion)) - 91 sign Response, IssueInstant before SigningCertTime 21: "error validating response: Cert is not valid at this time", // 22 - signed(Response(Assertion)) - 92 sign Response, IssueInstant after SigningCertTime 22: "error validating response: Cert is not valid at this time", // 93 - Response(signed(Assertion)) - 91 sign Assertion, IssueInstant before SigningCertTime 93: "error validating response: Cert is not valid at this time", // 94 - Response(signed(Assertion)) - 92 sign Assertion, IssueInstant after SigningCertTime 94: "error validating response: Cert is not valid at this time", // 83 - Response(signed(Assertion)) - 81 sign Assertion IssueInstant before EncryptionCertTime // (Success, EncryptionCertTime is not a factor in this case) 83: "", // 84 - Response(signed(Assertion)) - 82 sign Assertion, IssueInstant after EncryptionCertTime // (Success, EncryptionCertTime is not a factor in this case) 84: "", // 23 - Response(encrypted(signed(Assertion))) - 83 encrypt Assertion, IssueInstant before EncryptionCertTime 23: "error validating response: unable to get decryption certificate: decryption cert is not valid at this time", // 24 - Response(encrypted(signed(Assertion))) - 84 encrypt Assertion, IssueInstant after EncryptionCertTime 24: "error validating response: unable to get decryption certificate: decryption cert is not valid at this time", // 26 - signed(Response(Assertion)) - 01 with AtTime after IssueInstant 26: "error validating response: Expired NotOnOrAfter value, Expected: 2017-08-30T23:55:00Z, Actual: 2017-08-30T23:19:41.379Z", // 28 - Response(encrypted(signed(Assertion))) - 06 with AtTime after IssueInstant 28: "error validating response: Expired NotOnOrAfter value, Expected: 2017-08-30T23:55:00Z, Actual: 2017-08-30T23:19:41.379Z", // 31 - signed(Response(Assertion)) - 01 wrong IDP signing cert 31: "error validating response: Could not verify certificate against trusted certs", // 33 - Response(signed(Assertion)) - 03 wrong IDP signing cert 33: "error validating response: Could not verify certificate against trusted certs", // 34 - signed(Response(signed(Assertion))) - 04 wrong IDP signing cert 34: "error validating response: Could not verify certificate against trusted certs", // 36 - Response(encrypted(signed(Assertion))) - 06 wrong IDP signing cert, correct SP encryption cert 36: "error validating response: Could not verify certificate against trusted certs", // 37 - signed(Response(encrypted(Assertion))) - 07 wrong IDP signing cert, correct SP encryption cert 37: "error validating response: Could not verify certificate against trusted certs", // 38 - signed(Response(encrypted(signed(Assertion)))) - 08 wrong IDP signing cert, correct SP encryption cert 38: "error validating response: Could not verify certificate against trusted certs", // 97 - Response(encrypted(Assertion)) - 99 wrong SP encryption cert 97: "error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)", // 46 - Response(encrypted(signed(Assertion))) - 06 wrong SP encryption cert, correct IDP signing cert 46: "error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)", // 47 - signed(Response(encrypted(Assertion))) - 07 wrong SP encryption cert, correct IDP signing cert 47: "error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)", // 48 - signed(Response(encrypted(signed(Assertion)))) - 08 wrong SP encryption cert, correct IDP signing cert 48: "error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)", // 85 - Response(Assertion) - 99 empty Response Destination (empty is ok, Destination is optional) // Note: gosaml2 is correctly checking signature before contents 85: "error validating response: Missing signature referencing the top-level element", // 86 - Response(Assertion) - 99 wrong Response Destination (SP acs) // Note: gosaml2 is correctly checking signature before contents 86: "error validating response: Missing signature referencing the top-level element", // 87 - Response(Assertion) - 99 wrong Response Issuer (IDP endpoint id) // Note: gosaml2 is correctly checking signature before contents 87: "error validating response: Missing signature referencing the top-level element", // 88 - Response(Assertion) - 99 wrong Assertion Audience (SP entity id) // Note: gosaml2 is correctly checking signature before contents 88: "error validating response: Missing signature referencing the top-level element", // 89 - Response(Assertion) - 99 wrong Assertion Issuer (IDP endpoint id) // Note: gosaml2 is correctly checking signature before contents 89: "error validating response: Missing signature referencing the top-level element", // 50 - signed(Response(Assertion)) - 85 signed Response, empty Response Destination (success, optional) 50: "", // 51 - signed(Response(Assertion)) - 86 signed Response, wrong Response Destination (SP acs) 51: "error validating response: Unrecognized Destination value, Expected: https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z, Actual: https://saml.sp.nope/session/sso/saml/acs/incorrect", // 52 - signed(Response(Assertion)) - 87 signed Response, wrong Response Issuer (IDP endpoint id) 52: "error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect", // 54 - signed(Response(Assertion)) - 89 signed Response, wrong Assertion Issuer (IDP endpoint id) 54: "error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect", // 55 - Response(signed(Assertion)) - 85 signed Assertion, empty Response Destination (success, optional) 55: "", // 56 - Response(signed(Assertion)) - 86 signed Assertion, wrong Response Destination (SP acs) 56: "error validating response: Unrecognized Destination value, Expected: https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z, Actual: https://saml.sp.nope/session/sso/saml/acs/incorrect", // 57 - error validating response: Response(signed(Assertion)) - 87 signed Assertion, wrong Response Issuer (IDP endpoint id) 57: "error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect", // 59 - Response(signed(Assertion)) - 89 signed Assertion, wrong Assertion Issuer (IDP endpoint id) 59: "error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect", // 155 - Response(encrypted(signed(Assertion))) - 85 encrypted signed Assertion, empty Response Destination (success, optional) 155: "", // 156 - Response(encrypted(signed(Assertion))) - 86 encrypted signed Assertion, wrong Response Destination (SP acs) 156: "error validating response: Unrecognized Destination value, Expected: https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z, Actual: https://saml.sp.nope/session/sso/saml/acs/incorrect", // 157 - Response(encrypted(signed(Assertion))) - 87 encrypted signed Assertion, wrong Response Issuer (IDP endpoint id) 157: "error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect", // 159 - Response(encrypted(signed(Assertion))) - 89 encrypted signed Assertion, wrong Assertion Issuer (IDP endpoint id) 159: "error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect", } var oneLoginScenarioWarnings = map[int]scenarioWarnings{ // 25 - signed(Response(Assertion)) - 01 with AtTime before IssueInstant 25: scenarioWarnings{ InvalidTime: true, }, // 27 - Response(encrypted(signed(Assertion))) - 06 with AtTime before IssueInstant 27: scenarioWarnings{ InvalidTime: true, }, // 53 - signed(Response(Assertion)) - 88 signed Response, wrong Assertion Audience (SP entity id) 53: scenarioWarnings{ NotInAudience: true, }, // 58 - Response(signed(Assertion)) - 88 signed Assertion, wrong Assertion Audience (SP entity id) 58: scenarioWarnings{ NotInAudience: true, }, // 158 - Response(encrypted(signed(Assertion))) - 88 encrypted signed Assertion, wrong Assertion Audience (SP entity id) 158: scenarioWarnings{ NotInAudience: true, }, } var oneLoginAtTimes = map[int]string{ 25: "2017-08-30T23:00:00Z", 26: "2017-08-30T23:55:00Z", 27: "2017-08-30T23:00:00Z", 28: "2017-08-30T23:55:00Z", } func TestOneLoginCasesLocally(t *testing.T) { sp := &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://saml.idp.nope/h9gkjzvb3e", // not required for these tests IdentityProviderIssuer: "https://saml.idp.nope/h9gkjzvb3e", AssertionConsumerServiceURL: "https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z", AudienceURI: "https://saml.sp.nope/session/sso/saml/spentityid/rq5jwkvb8z", IDPCertificateStore: LoadCertificateStore("./testdata/onelogin/idp.signing.cert"), SPKeyStore: LoadKeyStore("./testdata/onelogin/sp.encryption.cert", "./testdata/onelogin/sp.encryption.key"), SPSigningKeyStore: LoadKeyStore("./testdata/onelogin/sp.signing.cert", "./testdata/onelogin/sp.signing.key"), ValidateEncryptionCert: true, } scenarios := []ProviderTestScenario{} for _, idx := range scenarioIndexes(oneLoginScenarioErrors, oneLoginScenarioWarnings) { response := LoadRawResponse(fmt.Sprintf("./testdata/onelogin/olgn09_response_%02d.b64", idx)) scenarios = append(scenarios, ProviderTestScenario{ ScenarioName: fmt.Sprintf("Scenario_%02d", idx), Response: response, ServiceProvider: spAtTime(sp, getAtTime(idx, oneLoginAtTimes), response), CheckError: scenarioErrorChecker(idx, oneLoginScenarioErrors), CheckWarningInfo: scenarioWarningChecker(idx, oneLoginScenarioWarnings), }) } ExerciseProviderTestScenarios(t, scenarios) } ================================================ FILE: providertests/pingfed_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package providertests import ( "fmt" "testing" "github.com/russellhaering/gosaml2" ) var pingFedScenarioErrors = map[int]string{ // 01 - signed(Response(Assertion)) - no KeyInfo (no IDP signing certificate included) // By default, PingFed does not include the KeyInfo element (which would include the // IDP signing certificate) in Response. Most other IDPs include KeyInfo element. // gosaml2 is ok with this as long as the SP has only one IDP signing certificate // for this relationship (it does not have to guess at to which cert to use). // Note: Response.Destination is set. 01: "", // 02 - signed(Response(Assertion)) - with KeyInfo (including IDP signing certificate) // Same as pfed11_response_01 except KeyInfo is included. // Note: Response.Destination is set. 02: "", // 03 - Response(signed(Assertion)) // As with 01, KeyInfo element is not included (not a bug). Unlike 01, // Response.Destination is NOT set. Most IDPs (including PingOne) always includes Response.Destination. // PingFed only includes Response.Destination when the Response is signed. // SAML Core 2.0 defines Response.Destination as [Optional]. // Thus, PingFed is not in not including Destination. Before a fix, gosaml2 required // Response.Destination. gosaml2 now only checks the value of Response.Destination if it // is set (mandated by SAML Core 2.0). 03: "", // 05 - signed(Response(encrypted(Assertion))) - no encryption certificate included in Assertion. // PingFed and ADFS do not include the SP encryption certificate and do not provide an option to include it in Response. // OneLogin (see olgn09/olgn09_response_05.b64) also does not include SP encryption certificate by default. // OneLogin and PingFed also do not include DigestMethod (default to http://www.w3.org/2000/09/xmldsig#sha1). 05: "", } var pingFedScenarioWarnings = map[int]scenarioWarnings{} var pingFedAtTimes = map[int]string{} func TestPingFedCasesLocally(t *testing.T) { sp := &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://saml.test.nope:9031/eid/sxpmrhbkzn", // not required for these tests IdentityProviderIssuer: "https://saml.test.nope:9031/eid/sxpmrhbkzn", AssertionConsumerServiceURL: "https://saml.test.nope/session/sso/saml/acs/hp24dqnpvq", AudienceURI: "https://saml.test.nope/session/sso/saml/spentityid/hp24dqnpvq", IDPCertificateStore: LoadCertificateStore("./testdata/pingfed/idp.signing.cert"), SPKeyStore: LoadKeyStore("./testdata/pingfed/sp.encryption.cert", "./testdata/pingfed/sp.encryption.key"), SPSigningKeyStore: LoadKeyStore("./testdata/pingfed/sp.signing.cert", "./testdata/pingfed/sp.signing.key"), ValidateEncryptionCert: true, } scenarios := []ProviderTestScenario{} for _, idx := range scenarioIndexes(pingFedScenarioErrors, pingFedScenarioWarnings) { response := LoadRawResponse(fmt.Sprintf("./testdata/pingfed/pfed11_response_%02d.b64", idx)) scenarios = append(scenarios, ProviderTestScenario{ ScenarioName: fmt.Sprintf("Scenario_%02d", idx), Response: response, ServiceProvider: spAtTime(sp, getAtTime(idx, pingFedAtTimes), response), CheckError: scenarioErrorChecker(idx, pingFedScenarioErrors), CheckWarningInfo: scenarioWarningChecker(idx, pingFedScenarioWarnings), }) } ExerciseProviderTestScenarios(t, scenarios) } ================================================ FILE: providertests/providers_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package providertests import ( "testing" "time" "github.com/jonboulle/clockwork" "github.com/russellhaering/gosaml2" "github.com/russellhaering/goxmldsig" ) func TestValidateResponses(t *testing.T) { scenarios := []ProviderTestScenario{ { ScenarioName: "Auth0", Response: LoadXMLResponse("./testdata/auth0_response.xml"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://scaleft-test.auth0.com/samlp/rlXOZ4kOUTQaTV8icSXrfZUd1qtD1NhK", IdentityProviderIssuer: "urn:scaleft-test.auth0.com", AssertionConsumerServiceURL: "http://localhost:8080/v1/_saml_callback", AudienceURI: "urn:scaleft-test.auth0.com", IDPCertificateStore: LoadCertificateStore("./testdata/auth0_cert.pem"), Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2016, 7, 25, 18, 30, 0, 0, time.UTC))), }, }, { ScenarioName: "Adfs", Response: LoadRawResponse("./testdata/adfs_response.b64"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://do.not.need/this/not/sending/authn", IdentityProviderIssuer: "http://fs.spstest2.com/adfs/services/trust", AssertionConsumerServiceURL: "https://saml.test.nope/session/sso/saml/acs/dknhyszjl7", SignAuthnRequests: false, AudienceURI: "https://saml.test.nope/session/sso/saml/spentityid/dknhyszjl7", IDPCertificateStore: LoadCertificateStore("./testdata/adfs_idp_signing_cert.pem"), SPKeyStore: LoadKeyStore("./testdata/adfs_sp_encryption_cert.pem", "./testdata/adfs_sp_encryption_key.pem"), SPSigningKeyStore: LoadKeyStore("./testdata/adfs_sp_signing_cert.pem", "./testdata/adfs_sp_signing_key.pem"), Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 9, 21, 23, 28, 0, 0, time.UTC))), }, }, { ScenarioName: "AdfsEncrypted", Response: LoadRawResponse("./testdata/adfs_response_enc.b64"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://do.not.need/this/not/sending/authn", IdentityProviderIssuer: "http://fs.spstest2.com/adfs/services/trust", AssertionConsumerServiceURL: "https://saml.test.nope/session/sso/saml/acs/dknhyszjl7", SignAuthnRequests: false, AudienceURI: "https://saml.test.nope/session/sso/saml/spentityid/dknhyszjl7", IDPCertificateStore: LoadCertificateStore("./testdata/adfs_idp_signing_cert.pem"), SPKeyStore: LoadKeyStore("./testdata/adfs_sp_encryption_cert.pem", "./testdata/adfs_sp_encryption_key.pem"), SPSigningKeyStore: LoadKeyStore("./testdata/adfs_sp_signing_cert.pem", "./testdata/adfs_sp_signing_key.pem"), Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 9, 21, 23, 20, 0, 0, time.UTC))), }, }, { // Okta uses detached EncryptedKey element (sibling of EncryptedData). See: // https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Extensions-to-KeyInfo ScenarioName: "OktaEncrypted", Response: LoadRawResponse("./testdata/oktaenc_response.b64"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://do.not.need/this/not/sending/authn", IdentityProviderIssuer: "http://www.okta.com/exkbb59wb20X96NY20h7", AssertionConsumerServiceURL: "https://saml.test.nope/session/sso/saml/acs/skv8dv26wh", SignAuthnRequests: false, AudienceURI: "https://saml.test.nope/session/sso/saml/spentityid/skv8dv26wh", IDPCertificateStore: LoadCertificateStore("./testdata/oktaenc_idp_signing_cert.pem"), SPKeyStore: LoadKeyStore("./testdata/oktaenc_sp_encryption_cert.pem", "./testdata/oktaenc_sp_encryption_key.pem"), SPSigningKeyStore: LoadKeyStore("./testdata/oktaenc_sp_signing_cert.pem", "./testdata/oktaenc_sp_signing_key.pem"), Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 9, 06, 22, 14, 0, 0, time.UTC))), }, }, { ScenarioName: "Okta", Response: LoadXMLResponse("./testdata/okta_response.xml"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://dev-116807.oktapreview.com/app/scaleftdev116807_test_1/exk659aytfMeNI49v0h7/sso/saml", IdentityProviderIssuer: "http://www.okta.com/exk659aytfMeNI49v0h7", AssertionConsumerServiceURL: "http://localhost:8080/v1/_saml_callback", SignAuthnRequests: true, AudienceURI: "\"123\"", IDPCertificateStore: LoadCertificateStore("./testdata/okta_cert.pem"), Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2016, 7, 25, 23, 16, 0, 0, time.UTC))), }, }, { ScenarioName: "OneLogin", Response: LoadXMLResponse("./testdata/onelogin_response.xml"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://launchdarkly-dev.onelogin.com/trust/saml2/http-post/sso/634027", IdentityProviderIssuer: "https://app.onelogin.com/saml/metadata/634027", AssertionConsumerServiceURL: "http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81", IDPCertificateStore: LoadCertificateStore("./testdata/onelogin_cert.pem"), AudienceURI: "{audience}", SkipSignatureValidation: false, AllowMissingAttributes: true, Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 3, 8, 7, 51, 0, 0, time.UTC))), }, }, { ScenarioName: "OracleAccessManager", Response: LoadXMLResponse("./testdata/oam_response.xml"), ServiceProvider: &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: "https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed", IdentityProviderIssuer: "https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed", AssertionConsumerServiceURL: "http://127.0.0.1:5556/callback", IDPCertificateStore: LoadCertificateStore("./testdata/oam_cert.pem"), AudienceURI: "JSAuth", SkipSignatureValidation: false, AllowMissingAttributes: true, Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2016, 12, 12, 16, 55, 0, 0, time.UTC))), }, }, } ExerciseProviderTestScenarios(t, scenarios) } ================================================ FILE: providertests/testdata/adfs_idp_signing_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIC2jCCAcKgAwIBAgIQNdNUIOmoKrFJNQadPV+9sTANBgkqhkiG9w0BAQsFADAp MScwJQYDVQQDEx5BREZTIFNpZ25pbmcgLSBmcy5zcHN0ZXN0Mi5jb20wHhcNMTYx MTAyMjIyOTE1WhcNMTcxMTAyMjIyOTE1WjApMScwJQYDVQQDEx5BREZTIFNpZ25p bmcgLSBmcy5zcHN0ZXN0Mi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQCjjUuNwckrCQgaXAMzHLFMuxrG+dREwct+d5W6PlAxlh8jxijhWXeHMcpP naDLkPhI6J5hva+2r/kJcIuz3c9wAHVIl6oQdSeH4lwbrD/bfCnu0lOmjgey/cY2 lVTs4mfx1L7ejnUWd4ROfrHkhtFgqOYrJYir29ZOqojmCvaSQbqfjXAQmP8xvsFy Yw0FNSURrt2ZZ9HTY1T6eJIrEJi0csgI4579IzYNyttwOfuM8rDrin2gTNTVTOE/ lfXv2q7CGU67ErETCtmaJJvlqYmRLwT51Jxrf3KLTkAjxyE4uISTuzys/Y/ktxI6 LQ3eFD/oRfTtA1V3pj96nxbxk2z3AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEZ5 uUC+Djrx9XJlrGHwwhVShyDcEvloJzeZLnNvMC1Gfyq4enHaVE5ztnkLTvphym9+ W9waFlVPHlIAXv3CKz9xbFWDtaXvD229pOGThDBCKo8o2vucHCo8gn+dUq0ZS+TV LpqeNoTpjfI4FQZ7BwDoILza6xdXHmDukui1btNFYYwhHzgMx1x1cz4VvBj5D+WW f13uClD2dkeasoZ4M9KH15Oy128tXhmzCw7ymsv3KC20CvHiqwGnYcybZdcIKQUT aB3qCNW5ti44RxwmLF4tnuFONmPuH1Pet0Hnq6pWNBMsWNEPM9LRVoPLqDR3fmkL /mNtZZd4xG3Kgd1IbPc= -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/adfs_response.b64 ================================================ PHNhbWxwOlJlc3BvbnNlIElEPSJfYjlkM2VhNzAtMmEwYy00MmI2LWI4ZjctNjU3YWRlYjJiYjA5IiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0yMVQyMzoyNzowNi44MjhaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ka25oeXN6amw3IiBDb25zZW50PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y29uc2VudDp1bnNwZWNpZmllZCIgSW5SZXNwb25zZVRvPSJfNTk4OGJmNDUtMWNjOC00MjI4LWIzZTgtMWFhODU5MGU2M2QzIiB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48SXNzdWVyIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vZnMuc3BzdGVzdDIuY29tL2FkZnMvc2VydmljZXMvdHJ1c3Q8L0lzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiIC8+PC9zYW1scDpTdGF0dXM+PEFzc2VydGlvbiBJRD0iX2ZkNjEwOGZkLWQyYmYtNDMyNy1hODFmLWMwM2I4ZmNhNzcwZCIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTIxVDIzOjI3OjA2LjgyOFoiIFZlcnNpb249IjIuMCIgeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxJc3N1ZXI+aHR0cDovL2ZzLnNwc3Rlc3QyLmNvbS9hZGZzL3NlcnZpY2VzL3RydXN0PC9Jc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiIC8+PGRzOlJlZmVyZW5jZSBVUkk9IiNfZmQ2MTA4ZmQtZDJiZi00MzI3LWE4MWYtYzAzYjhmY2E3NzBkIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIgLz48ZHM6RGlnZXN0VmFsdWU+cmJTd3EwZVZTWXFYdDFwQ095SThtT255K2h1Ukt3OU1LR0dxS21BUnFxcz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+Wm96L3dldWlEckVBVHEvVXFGb3hLbTUySUZmV2NZbzM1S1BxY0ttZE9RaW9TcWdnYnJlbElzM3dFSUFveUdxZHZKd1ZSNmlac2RsNlpTU0g0Z29nV01ydFV6QXRVT2IvMjVJMU1HWVBNZmJ4bVZTL0syQ0RmSUllV2wzU1hIT0o0YWxURldtR21wQ2NrZFpvUUgvR3M4ZUFzOHBxOXBLWUVlZFhkVzNSc0JpZTRzSFo3ME94aGhZS0VWY0RrUkJkQzNHQ1pqSk4yY3RENUJZeGhJMDVENnN1eU9rYlpHYVBCR1l2MkFzSDRDTmRXeHlaVDhEN21tejM3NElNOWorcUQ2U3RuNFZ0STZXRThCb3ByV1daSWRnYzZCRDgwSEhQR0k1WGo5UzZzRmxsSEtaSGlRckVtNnd4WnMyUVQ5T0JiMVNRcjQrMTNUSFgxWkpBbFUwMTZBPT08L2RzOlNpZ25hdHVyZVZhbHVlPjxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlDMmpDQ0FjS2dBd0lCQWdJUU5kTlVJT21vS3JGSk5RYWRQVis5c1RBTkJna3Foa2lHOXcwQkFRc0ZBREFwTVNjd0pRWURWUVFERXg1QlJFWlRJRk5wWjI1cGJtY2dMU0JtY3k1emNITjBaWE4wTWk1amIyMHdIaGNOTVRZeE1UQXlNakl5T1RFMVdoY05NVGN4TVRBeU1qSXlPVEUxV2pBcE1TY3dKUVlEVlFRREV4NUJSRVpUSUZOcFoyNXBibWNnTFNCbWN5NXpjSE4wWlhOME1pNWpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2pqVXVOd2NrckNRZ2FYQU16SExGTXV4ckcrZFJFd2N0K2Q1VzZQbEF4bGg4anhpamhXWGVITWNwUG5hRExrUGhJNko1aHZhKzJyL2tKY0l1ejNjOXdBSFZJbDZvUWRTZUg0bHdickQvYmZDbnUwbE9tamdleS9jWTJsVlRzNG1meDFMN2VqblVXZDRST2ZySGtodEZncU9ZckpZaXIyOVpPcW9qbUN2YVNRYnFmalhBUW1QOHh2c0Z5WXcwRk5TVVJydDJaWjlIVFkxVDZlSklyRUppMGNzZ0k0NTc5SXpZTnl0dHdPZnVNOHJEcmluMmdUTlRWVE9FL2xmWHYycTdDR1U2N0VyRVRDdG1hSkp2bHFZbVJMd1Q1MUp4cmYzS0xUa0FqeHlFNHVJU1R1enlzL1kva3R4STZMUTNlRkQvb1JmVHRBMVYzcGo5Nm54YnhrMnozQWdNQkFBRXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRVo1dVVDK0Rqcng5WEpsckdId3doVlNoeURjRXZsb0p6ZVpMbk52TUMxR2Z5cTRlbkhhVkU1enRua0xUdnBoeW05K1c5d2FGbFZQSGxJQVh2M0NLejl4YkZXRHRhWHZEMjI5cE9HVGhEQkNLbzhvMnZ1Y0hDbzhnbitkVXEwWlMrVFZMcHFlTm9UcGpmSTRGUVo3QndEb0lMemE2eGRYSG1EdWt1aTFidE5GWVl3aEh6Z014MXgxY3o0VnZCajVEK1dXZjEzdUNsRDJka2Vhc29aNE05S0gxNU95MTI4dFhobXpDdzd5bXN2M0tDMjBDdkhpcXdHblljeWJaZGNJS1FVVGFCM3FDTlc1dGk0NFJ4d21MRjR0bnVGT05tUHVIMVBldDBIbnE2cFdOQk1zV05FUE05TFJWb1BMcURSM2Zta0wvbU50WlpkNHhHM0tnZDFJYlBjPTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9LZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxTdWJqZWN0PjxOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnBhdWxAc3BzdGVzdDIuY29tPC9OYW1lSUQ+PFN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJfNTk4OGJmNDUtMWNjOC00MjI4LWIzZTgtMWFhODU5MGU2M2QzIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDktMjFUMjM6MzI6MDYuODI4WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwudGVzdC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL2Rrbmh5c3pqbDciIC8+PC9TdWJqZWN0Q29uZmlybWF0aW9uPjwvU3ViamVjdD48Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDktMjFUMjM6Mjc6MDYuODI2WiIgTm90T25PckFmdGVyPSIyMDE3LTA5LTIyVDAwOjI3OjA2LjgyNloiPjxBdWRpZW5jZVJlc3RyaWN0aW9uPjxBdWRpZW5jZT5odHRwczovL3NhbWwudGVzdC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ka25oeXN6amw3PC9BdWRpZW5jZT48L0F1ZGllbmNlUmVzdHJpY3Rpb24+PC9Db25kaXRpb25zPjxBdHRyaWJ1dGVTdGF0ZW1lbnQ+PEF0dHJpYnV0ZSBOYW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9naXZlbm5hbWUiPjxBdHRyaWJ1dGVWYWx1ZT5wYXVsPC9BdHRyaWJ1dGVWYWx1ZT48L0F0dHJpYnV0ZT48QXR0cmlidXRlIE5hbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3N1cm5hbWUiPjxBdHRyaWJ1dGVWYWx1ZT5mcmFsZXk8L0F0dHJpYnV0ZVZhbHVlPjwvQXR0cmlidXRlPjwvQXR0cmlidXRlU3RhdGVtZW50PjxBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDktMjFUMjM6Mjc6MDYuNzY3WiIgU2Vzc2lvbkluZGV4PSJfZmQ2MTA4ZmQtZDJiZi00MzI3LWE4MWYtYzAzYjhmY2E3NzBkIj48QXV0aG5Db250ZXh0PjxBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvQXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9BdXRobkNvbnRleHQ+PC9BdXRoblN0YXRlbWVudD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/adfs_response_enc.b64 ================================================ PHNhbWxwOlJlc3BvbnNlIElEPSJfYWUyNDZkNGUtYjllMC00OWUzLTk3YTItYzJmMjM2NDA4YjllIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0yMVQyMzoxOToxMS42MDhaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ka25oeXN6amw3IiBDb25zZW50PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y29uc2VudDp1bnNwZWNpZmllZCIgSW5SZXNwb25zZVRvPSJfMjUyZDAxMjktMWM4My00OTZlLWIwMzktZmZjOWNlZTExY2NhIiB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48SXNzdWVyIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vZnMuc3BzdGVzdDIuY29tL2FkZnMvc2VydmljZXMvdHJ1c3Q8L0lzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiIC8+PC9zYW1scDpTdGF0dXM+PEVuY3J5cHRlZEFzc2VydGlvbiB4bWxucz0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHhlbmM6RW5jcnlwdGVkRGF0YSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIiAvPjxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZTpFbmNyeXB0ZWRLZXkgeG1sbnM6ZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj48ZTpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48L2U6RW5jcnlwdGlvbk1ldGhvZD48S2V5SW5mbz48ZHM6WDUwOURhdGEgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpYNTA5SXNzdWVyU2VyaWFsPjxkczpYNTA5SXNzdWVyTmFtZT5DTj1zYW1sLnRlc3Qubm9wZSwgTz1TQU1MIFRlc3QgTm9wZS4sIFM9Q2FsaWZvcm5pYSwgQz1VUzwvZHM6WDUwOUlzc3Vlck5hbWU+PGRzOlg1MDlTZXJpYWxOdW1iZXI+MTY5OTkyMzEzMjE5MTk1MjQ4NDM8L2RzOlg1MDlTZXJpYWxOdW1iZXI+PC9kczpYNTA5SXNzdWVyU2VyaWFsPjwvZHM6WDUwOURhdGE+PC9LZXlJbmZvPjxlOkNpcGhlckRhdGE+PGU6Q2lwaGVyVmFsdWU+Qk43OVlidmYxaERHdDArT1lPY2lRVjVDWk53c3krZ2dtSnFmYjhRTXBVZVVJc2JIT3FPOUxpK3FGQmpZbjBpZmZXc0Q4TXhxdlVjVWY5QzdSYlV2UjgvdEdIU3dHQWZEbzhrU3dCOENqTGhjLzgyYTkweTNDSkI5eGxOZHFyek54eERueXM0NS9iQ0Y5L3I3U1VwbG1tU0NJcTdzQUxjT3hxRnh6VWZ0Q2xxcWlvUS9EbVA2RkZWWEx1ZXNRaHgya0p4aGYzL1RQUW5HZTNMYjNFSm1lZnh0SVFiSXJpRm95M1poUUVLRXlialFWTDFaWHAzanV3QzJVZDU2ZEt3d21lcDY4R3JtUU5xdE1IYW9qUEtmRVpnRExXVlhCZnlHWmx6NnBjRlYvQ1pJNFVySnd2TTlObUlxT0VsbHQ2S3JWdUVhaG5xT2lCeDdrNi9sZ2IxY0lnPT08L2U6Q2lwaGVyVmFsdWU+PC9lOkNpcGhlckRhdGE+PC9lOkVuY3J5cHRlZEtleT48L0tleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5ETHlXS3F3UmlMbnpzcnk0eVlRYURjNEtONEt4bjhmV2dwc0hSWXlSaUczbzRoenJlOTdXV3o5WGNRRUpSVGlqVUMvdnEwR1pSUXRuTU5ycTMxLzJPNTN6cUMwbzhnUG9Gb28rTTZEMUxOSURTYzBRdFpiY2xUWmY5Z3o4dkVwNDdDSDJDTVNkUzAvVmxremJHZ0w1UHlkUlNQcGcrb1FiUVJJWThJWHBPd0RhdUJlMElidjV0QURUR0k3WkxTb0RmblFSUVluMWZySUx5SkVmMWU5MU1IODRzZWt0NEEvNDQrRFBtc0JjKzdWN095WGk3N2hBcnRDeEN5REowaUJZb1QwSkZWK1RhNUFSMkFKRk1HanNVL3QrUTNXdGhuRzZUbVFtYVpYVXFzem5FUGptWXp5eUNSM2ZoSE9pdmZGK09GYms0Nzk5WmtiY2ZNN1lvL2FZR3pMSHllM25ZNThCTFlCbnhFR0VCcDhacGhsWSs2VUgxYlF5V1Fid09tcjRJQk03ejNLaCtQS3pBQThYbDNQcG9CSHl4VkVXWC94S1BvQWtTV2FXcmRFZy8vZ1kwZURybUVwOHlZM0pjRXU4VkNPTmZKRXlIbjBabXdSVTdLd0lWMDFmTk1kVDdVbUJ1RWtucE55eUNhc2FTMm9zOUM0RlhmWVUzU3pFOXhXM1VUZkticE1OMW1zSnVGaXdPcXNIRzF0MklHdVZTV1puZVNrQTdDYUVvUFNLVHJNVGw3OERqVGQ0dW1WbEVmajZnRXg1S3FnU092ejBicTR4NGdURVVHL1JkNFlFZUhWNTZ6Rm5tOHVZVVRDTUNHS2kzYlk3MndXdDMvb1dVeTlhUk5nQmI0YjZKR0ZzRUx4OS91aEdYUlJNRjhad0t2WXBpSHJ1Q3pybk1zeDVWTFM5dkhIZ0RnekpvbFJSbjl2aE1aeXJ4SDMwTVpobk1JMEdTbDVmeXdzdjNXejcxNDJJOUxiWkxOSEpWdTNJTTMrQVF0a0M3R280Mmc2eVB0ZmRMQklwMnlvOWhlVlp6UTFNZUp6MUQyT3EvM2RqN1JFZDJHcGNSRnpTb25jc0VuU0ZiRlZQSU5tdmdBTXhYaU5LTmJ1N0ZZOUdSblorM1FaUnUzRmRLY1N6V0tVeFduT05oNFRYN09WNjIrNWZKQm1sN3RZTmRKZTBOblpQS1I3VlBsSmpBTnBNd0NoekEzaFRKUzJFTmY0RUtVS2xHaW8vUXVmWmxDOEhTUzhlM0djeGtub0F0V2YwVmdZWmZYZDNMWGxrSnV5NHRCMC9SNm1sYnh1WlBaOEZXWXBCSzF6RVpHbDN2L0pNbDAya3cvVzh4bHB0enZkNE9tcStOUTcrbG1TZHdZWXhpeE8xaG9GSUh2WmpYdlhHazNONGZNZzQweVNIRG1wejJNNWJBSi81aXNqTWo5cERzczh1Lzd2bGtzR1pFaVIvdE04UDBJNEZlUFE5ODlXaStKOVdiWjV3MGtCaWRKKzRNVXBKY0hUd1pLSHI1NEpTOTVBeHVkWjNCY2hLSGhnQXVpTVU0S3VGRWpqUDg4d0RoaFBBWHdnd3pzT1A0RDh5LzlTaVBnclRUYjFoUTVPWXFZU040ZzMvY0YveDFIVmRzWkZodUZ5Q2JBQjgxTm1tVG5FR1dOd25qemgvcGVPQzNYa05UUGx6Yzhpd284bVdqU3dibGZBZHphL2xnQ0xhODhsdDZqd0ozUDQ4c1hqRVZyWjhob1B1RE9hQnc0bVh6QjN0NEtVeEJmR0JjRzZxczUzUVQ3YjVNRnduamVIVjFETldVV05Fa0FZbEl2MFhJeWZ1MUJwWHZ0M1d1MmNoTys2RDg2aDVoclZGVzhHcFdFa3lSaGUvSHk3RGRURHZEMURUWVlIUXBSR2EwZnNxUVF1Z1NyT2hMdmxTWFltbmY0ZnorcWVNK1JucU1NMi8zNi84eEVIc1dzWDRtNVhlSWV1d2NrK2lXQ0ErTklRTzFodU9UU29qQmtMeXh5ZHZnU3lXWDZER2hNZlZPZWdKbWZrNjMxUlZBT1F4OWpVY0FhRklaa3RIS3JzUklKb3RUSytiZ1BwSTNmbzh3cEhjaDZiSmJTZ1U0ZGtNWmh2Sm9yM2J4bk5qcFpjZWVNWHlKdmg2TUZsZ1ZVSXNVTG12cGhxQldhWFg0TlZEcVNCZlFhbFVydGFYVW8rTzhVTy9pZWpKdGdBVTl2Yi9pWElsemJnZ1lUTmdIQmJVbk4zdTFyb2pCU0pDYnNvNDJZK013b0MxbURTRjJKbTkxTlhXR2hyUjZzZ0xmOTlBUTlGSmNGNjhuWkNmT0MzTkJPVG9KOVBLZEJzT1AvRzRPSlBmWWN0VWwwVC90alFXQS92L0ZqRHJrclZpUWttOUY4ak5lUTZISDVDZGl4MmJMY0FqTk1kVmVTMGticXVmRFBaMWY1bTJOYXRnclpwU1dVTk1vSXd4YkovVFJkVENYWDZmY0NkS0laa25XbXRHVHdudWU5cVVUS0cvS0krZkdUakcwSS81czdIb1pkZ1llS2xDY2poc2VXU1VSakdIb0tDU1FXRFAwOUxvYkQvSlN4UWtlTm9IdS9BR0ovMnFJMnJ2dCtKWEh3SmpxMDNIZStvNEQva1Vwc1BLRDZtbWdWU0dVSlA0UTZRcjhXbm1McTA4WEdGRTN4WFM1NjVESEd0UmVrTEJobDN1eFMwcHRobkUvSyswbGtLdzQzWmpZTVEydUtiTURIYWJQa1Y0bUpoZXFVQllxZGN2VmJEZ2d5TStFclp5NFJtQTlPcTgrTFMxenljRlVKcmJtKzQ2TXo1aXV4NzJMYWFGNEZMRjR2ZDBTbnAxc05GZmxPK3Y5UVpkc3dMNHdQa3ZSL3VYYWxOQ1k4QUZ4ZzhjU2p0RHUxbnN0bmV5MzA0c3NXRytFTmN5T0ZCZExUWFJqMlMxSDFlWEd2c0pYMGdrMmFRL1FhMmdReGlHcmJKK2ROeWgwVUp2NGJ3N2NXejJQTWhEdEx4bnU5ZFFZL0JrcXppcm5McUUrNUE1SzVwRUlJVXJLeTlnZXRpQzR4cDAyazZlQnh0dmFSVTQ4bkZ2RGdIY3BUdEplTmVhK3orZm9tR2UzdkNLcHp2a21CYU54dElqRWRrdEtrRmFaeE92L2R5ZGEvOVdMNERvTjFQa24xSkJxbzhOM0ZnQWNtVjlzZkpqbGcxRVpiSWgwT2lEWWY3aXFqY3BlRHRwbjNYOWJ2dXYwSkRQaC9FTExaYTJNaC9tSWJ2L21SMG8vdzEzOWdtN09mVWlPR2paR1YyMjl1TVBmOFlUNXlURjgyb3lqb2QrTEZCLzEvSGI5VWdiT1VyUGZJbVo1TnJrU2tTRUt1M28xUlRMc21TRS9VeXJISlhhRC80dFZubVJ2UWhiQ3ViVmUzeHdLTUZUbitNeG5IUUN3M2E3UFAycElwVEpDOGVCZlE0Um1xSE4ycXNNcFdEMitHWi9xb2Z1SU1tNTRXYjBMTGt1NnA3QW9hRExJVTYwSC9XL1I2U2VvbmVQWE1pL3ZTeThOamhoK214b08wMEVLYWNDRnhDT05vZUN0N2J2eWhOUWFPbklUbTcyT1ZHT0dMaDlxRkFyYUNTRlRSWC9QVFdWV3N1QWtaNUVFUWpkN2xSdVMxWUc2ZXFFMGdVQWxWckFTZTJSRXZvejZ1RnFCQ3JlYUovUDBIUWpBa2dnV1hDU3ZGOVNaMm1mSTgvd1haYkpNaDVBNVduUW9PdVYwMlJQNFYzbmJCd0hzRFFibzBzRWcvaitkRlVIVTRpTEhFLzB6QTZZWmgwamtzOHhlN0pEbGI2cmo2M1EwRnZZMlM3Nnh4U1I4RlpkbEtxdXJQSjVXRWsxNmRSNUxQWkRSbkFpODBnUURrUkV4SllDZW1uS2pqeGpWSndld3pISzlIV2V2Q2xuYUxxWmxxbkRUendXWWZ2dkU5d09zYndNZ2VoRTFWWWFBNGFPUSs5T21udmgvemdHS215UXI2dGlSK3p0cjhSK0dHMy93SHlua2JRQWNIMjZkL09YaVRuWVZ0eXlGUk1TL1QxdVFJWnU1MkNjZGFoL2xSdVRTMjhNN1N1eFNpS1N5Q0pvc29YZDQ1VXZ4RVpNUi9DRGFpUmk5TUNKNE5OR0hxRlF0SFJhQmRuYmx2VmJNZ0lXYnFma1UrK2ZwNWVIaHJBa296eHRKU2RIeU9JWUNWMlM5T0ZRaGR2S3hzNkFzSzZHYm9xV3ZpbFdPMVoxOHZzTXpSd29wcks4RU04Y3ZmMEh1enJaZ1lFVGlGVVRJLzlaMHB3U1djVWNnSEJBUUVzZnJWYkVtc2lyQ3dvRnFSZmthZ00zSmUrQncyRk11NlZXNHI2cVJuT2Z6cS8zZkZmZVpjemdNN1VBVWVMT091L3ZKUmF6R0Z0L0ROQksvSTJjcEZ0UW0xazNuQS9WYmtDQ0plaGFMS1FRa3hVNFlMV1R2bnUzdWRxaVlHQlNsOXBjLzBJV3ZicUlHS3Z2ZHhiMjNPUFZUZGVVMnpndmF0eVk5cHFDVE5rMUtMV3d4TDVQREJ5VythdGRSNk1GK2o4Rk1mWUg4S0RlRWcwV2lrK3VqU2dBTWRUc0tKcEF0UGkxMnZ2M2FMZzVINnplSHdBNEZUN2M5ZUZsaVdGTWlyc2FHcTlGNENpTzdFZnY1QWFpK2YyUXNyWDlxUFRncExCbzZHUFM5cUhYb2tkV283U0tTc084OGs3cDJnTWdiN1hoTkF1RHg4RElVWDQ1MnBDTXV6OXhCRnBpTWx0OW4xc1hQNjY2REkxS2RjMEprbnVvRlVBalVySk9Rb2xJL1QySVZYcjFiYVh5TUc1dUE0bTNvQXBveDU5S2pMYmh0ZTQxNXJuTzlBMVBCU2wwVlN1YjhBL0MwaHhaK3NGZXUwRUNoc3pHbGY0amdNQStZd2U4TVdud0F0TVM3L1hiZ0tkYUt1QXpoNFBuNzdWVlFSNThkM0FmL2lneEdsSE5JRDhPVS9yWVREVkNrWjJVaEUzdHlDUmN5a3VzcUIvN290dEZVbGpsbEwxR1loaW9iMTkvVnQrZklIVHhWa2hlZTErQnp3cUxpeWlQdmE4OVZHbG9UTEo1UzY4US80N0FGODVneTM1U0ZBUnM1dUljT3NtWXN2Vm1qdUpOZU5Hd2g4SmpFbHIxR015N2Ywd3pITS8rVm1kbk9lSHBXUktMaXhrZEloOVVNcUdFV0pBNG9uQ3NWRlU2ZnpXdCtSTUdySlhseTF5VzdMTnRGUWtxaGxiWDlhY2RuTE9qSzc5clpNdmwwTjZjMk5OQmpHT01BbkZSWnZyd09sSmJ0cGhjMGFWQmNBcFUxNzR0aU01Ym5xWDBpV1NIai82VmRWY29yNmlMVlY2RER3TUpFUlNQeDJmd1hUVjdGTTRkamR3S2UzRmpZY1FCRmV1bXl0clVxWkZRQjk4T0xpS0ZOdi85ekdXUGxXOHVoUEdjYk9KeUxXaHl0UlUyekZPMGlOYnpDMTlUUnhnRUJSYUhDQmMyYThzWDVnZHRYeGt3L0hYU0Iyc1k3bnA1TzJZOHBYb21sSVFyd01senJpQkpTVnprOGZoMHpzS0d5UXZGR2p4Z0R6SjNHVGRwSjFiSWNUSkdidjM4bGNVZVBma2xzTURESUE5dDVBM1E3RFVCVHRSd2xTazNmdXJjOWRaY1EydlJ3WU5HT1RLaXZxSTNXRmdUamxBbHhNQVVkbURha1pzbmxycEFxNC8yOTNKdDYrK2pLejZ2RUlVK0FJc2doVzN1NmUrREN6MWNTL2tUZzJtZkRhUy9vZ2tMOWdKMVhYM2pvL3o1RTEzTGpZRmNScFVOTVlLbDBVOEZNeUJPWmxIa2E3L08xM3JScnh6ZG9DbzRMdExjVTRpZ1ZWc2dlUGhTVFFZVTRNRHo3RzdTYTRLeFZiK3lQU3JrNzVDQWpiQmhwU01DK044U285WDBYaGZzV3hLanE4OWlPUHNOMWMwcS8yTTBoZjBVR2ZFaUtpNEMwUUFUUWtuNWVLSzRqV1JJT05QckcxTXhHT29uV3VaVGNFYlArTkh6UjV5T0w5aWZOdlBwcFBuV1Yvc2RzZUd3MFdvK3A5NHA1V1oyMFpJT29QTjJzN1FEanY4elQ4V1pLcnZHQ0FjWVN3RktYdHVrZXFsQ3MvSzBhV090ZVc2NFNFeGNLKzlkM1JMY3BsTzh3TGEweDA3Wmx0SHRsbmRUcjR2emFLQUdKdHBTd3Q2UjA0WTJsdmk4NjJZNGtLeXk0MEVTeGJsS04zMktMZDNHSzdFSzNKRVZTTllMejdmZUhuczhBUmxpNEFrS0ZnQmZrODl2M3FKOG9SYXZVT3dOWUpjdlRWTEIzUU9VRzdLLzBjV0o8L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZERhdGE+PC9FbmNyeXB0ZWRBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/testdata/auth0_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIC9DCCAdygAwIBAgIJX9Qb0a2w33UjMA0GCSqGSIb3DQEBBQUAMCExHzAdBgNV BAMTFnNjYWxlZnQtdGVzdC5hdXRoMC5jb20wHhcNMTYwNzI1MTc0OTQ1WhcNMzAw NDAzMTc0OTQ1WjAhMR8wHQYDVQQDExZzY2FsZWZ0LXRlc3QuYXV0aDAuY29tMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+MnMtsJsNjDD4YEsi//LeBD wbwqwYTJk8mUlTLuaSss2X4aPo2kGjuEjvTc0x4Mk9ZQ/CIPPX3J9N4AFQu88rRd pT+TTuY9AIiyt8sZ+b1qF9eewyLVchM6s9Ff2JqgDIfajym825GKAJL7hi6smFRT 6h+OyyHo8pJjXePldum4woSFW/H3y83meF51Wn9oMTRRVAlpsdRVOgmuQpBlw3ap eeRpAmqLYT7DH3j30umYu3+4+NcxtEC7s5+QAIenuORjjw+M+IB+HhYpy1AnblY6 4RRAD+EfESEC+AF/+G0zuA4q43s9IduYZp2GMzPzMlnhDlR5syiLGFtLZ+pwFQID AQABoy8wLTAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSX/v06GyNh1an1f7O7KKER 6xNntTANBgkqhkiG9w0BAQUFAAOCAQEAgtITYCbzRo8l8Q3+EHFwASlmnSyRm8HW G41nmHLcC2lUqNvniSEf0kO65oMN2nxlq9JMeI7NxKNpTVL4OYX5+/0NqcxePayY /9/5jBRwqF+84USc8HG8z+BFh1rVW35eoE5ULeegUBPgDG9shQjSLyIkNvYqXQ7A tjMka8lkmdtU9XBlfYZC4YEmkeQOHkW5gmix5opajkj+Tih7HKsdhOgxZrl7/4Wm GOoyR2q3Ffg8fmNgDe2Sf8bGv7IoTeeYVHIurVFoQSLziICOBQSpk/y/NS3HdSBO ADRxhUn241jRTaEi06qcg/A9P4zulKR61mCVpEWv6ZveEyVm4XA4xQ== -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/auth0_response.xml ================================================ urn:scaleft-test.auth0.comurn:scaleft-test.auth0.comgoogle-oauth2|117637692321743777825urn:scaleft-test.auth0.comgoogle-oauth2|117637692321743777825russell.haering@scaleft.comRussell HaeringRussellHaeringrussell.haering@scaleft.comgoogle-oauth2google-oauth2truetruehttps://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpgenrlXOZ4kOUTQaTV8icSXrfZUd1qtD1NhKMon Jul 25 2016 18:29:17 GMT+0000 (UTC)russell.haering[object Object]Mon Jul 25 2016 17:51:26 GMT+0000 (UTC)urn:oasis:names:tc:SAML:2.0:ac:classes:unspecifiedWpFHrL2L9I0IcJDC4cFrh54kqNM=j6jV5RJuDF+TVy2obGLcl1nGpNPXsIyjud4NXTSStVibuFvJ8VetYU9yv9MlyhyI9GC9pL73zHt3havhm3iCvwBcOLcgu9oX+s60N5HUt7eVnEBUdXt52hEZki61D3w+//e6l6gt5Di9109vLHfV1KgkuKPC3IfBK8Z52rL6KfmIrry5OEl0n2o0A8wAYDnZkkY07LTYvZFcQ2JQ/plYEi/y+4yGYSxhjcVyPs/h0xavjk7xFJ0b16kUshpYUSkZOUOamW2tdlADXOrossOV4iOCOB2VnT5WjOfviYzW2WE39fmiZ7ahSmxCCtsuHS/xhRq05mi4j3EDd3N/07isVg==MIIC9DCCAdygAwIBAgIJX9Qb0a2w33UjMA0GCSqGSIb3DQEBBQUAMCExHzAdBgNVBAMTFnNjYWxlZnQtdGVzdC5hdXRoMC5jb20wHhcNMTYwNzI1MTc0OTQ1WhcNMzAwNDAzMTc0OTQ1WjAhMR8wHQYDVQQDExZzY2FsZWZ0LXRlc3QuYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+MnMtsJsNjDD4YEsi//LeBDwbwqwYTJk8mUlTLuaSss2X4aPo2kGjuEjvTc0x4Mk9ZQ/CIPPX3J9N4AFQu88rRdpT+TTuY9AIiyt8sZ+b1qF9eewyLVchM6s9Ff2JqgDIfajym825GKAJL7hi6smFRT6h+OyyHo8pJjXePldum4woSFW/H3y83meF51Wn9oMTRRVAlpsdRVOgmuQpBlw3apeeRpAmqLYT7DH3j30umYu3+4+NcxtEC7s5+QAIenuORjjw+M+IB+HhYpy1AnblY64RRAD+EfESEC+AF/+G0zuA4q43s9IduYZp2GMzPzMlnhDlR5syiLGFtLZ+pwFQIDAQABoy8wLTAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSX/v06GyNh1an1f7O7KKER6xNntTANBgkqhkiG9w0BAQUFAAOCAQEAgtITYCbzRo8l8Q3+EHFwASlmnSyRm8HWG41nmHLcC2lUqNvniSEf0kO65oMN2nxlq9JMeI7NxKNpTVL4OYX5+/0NqcxePayY/9/5jBRwqF+84USc8HG8z+BFh1rVW35eoE5ULeegUBPgDG9shQjSLyIkNvYqXQ7AtjMka8lkmdtU9XBlfYZC4YEmkeQOHkW5gmix5opajkj+Tih7HKsdhOgxZrl7/4WmGOoyR2q3Ffg8fmNgDe2Sf8bGv7IoTeeYVHIurVFoQSLziICOBQSpk/y/NS3HdSBOADRxhUn241jRTaEi06qcg/A9P4zulKR61mCVpEWv6ZveEyVm4XA4xQ== ================================================ FILE: providertests/testdata/oam_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIB/jCCAWegAwIBAgIBCjANBgkqhkiG9w0BAQQFADAkMSIwIAYDVQQDExlkZWFv YW0tZGV2MDIuanBsLm5hc2EuZ292MB4XDTE2MDYzMDA0NTQxNloXDTI2MDYyODA0 NTQxNlowJDEiMCAGA1UEAxMZZGVhb2FtLWRldjAyLmpwbC5uYXNhLmdvdjCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAht1N4lGdwUbl7YRyHwSCrnep6/e2I3+V eue0pSA/DGn8OuR/udM8UCja5utqlqJdq200ox4b4Mpz0Jg9kMckALtKe+1DgeES EIx9FpeuBdHlitYQNSbEr30HIG2nmeTOy4Vi5unBO54um3tNazcUTMA0/LJ6KQL8 LeZSlB/IxwUCAwEAAaNAMD4wDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gA MB0GA1UdDgQWBBRYo1YjfrNonauLzj6/AsueWFGSszANBgkqhkiG9w0BAQQFAAOB gQACq7GHK/Zsg0+qC0WWa2ZjmOXE6Dqk/xuooG49QT7ihABs7k9U27Fw3xKF6MkC 7pca1FwT82eZK1N3XKKpZe7Flu1fMKt2o/XSiBkDjWwUcChVnwGsUBe8hJFwFqg7 olNJn1kaVBJUqZIiXF9kS0d+1H55rStOd0CNXAzp9utr2A== -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/oam_response.xml ================================================ https://deaoam-dev02.jpl.nasa.gov:14101/oam/fedhttps://deaoam-dev02.jpl.nasa.gov:14101/oam/fedz1HD/59hv6UOd5+jeG+ihaFWLgI=I99oG5kiOfIgbXYa21z/TOmzftTkFnXe9ObhBNSKit9kAhT93apYROqqXv4Ax96P144Ld7ERX1hgJsytK8LC2874Pk7QrSNm4zvW3x0D4GR4lM06CvJK/EhIur3TrCUJDPigvyP7TJitheCyBejwt0x0lqNP/OzR3tMbAIMRoho=pkieuJSAuthurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport ================================================ FILE: providertests/testdata/okta_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+a -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/okta_response.xml ================================================ http://www.okta.com/exk659aytfMeNI49v0h7ABeBWHP23nfnxsyUWE5d59IIqQeXgHGol36mjFvWcA4=NfzCNa5SytP8OH0kq5yElIzhQrlAWdHWV6fdZA8+6SH8yrCPFMOwCsQRM0UriNDasPhodEQIRCzcZuaGNXqXiNXmEcoILXEFWsLPNg0dxHrrdbmKTz+QxKB+4PFAmgOwFIMMN7xwinMBJG3JEhBTjj8QRg9TbVUG/3GgTrlfzNpp9Db94nPOuhyMNStNGMFUEfCyMRQ5ZYK66ritnHFrMDBnu7oiCEV7xDIRf97kqHIDVenyntR56zDLu/ndCJfuP66Fahae1sU0U2bHJfM/64YWvI/OyywsNlZl1tANRXiNaKt6ukvDcz4CFI8aRER7RNbsEhinGMWxHUey0c3o5g==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+ahttp://www.okta.com/exk659aytfMeNI49v0h7jwweWw9Jrdw3X28IpBEQgQ5I0mwOeStoOSso1hjtqkg=BiFOSVvt5tIqMDwO5gcBehbTGaqe4S6gBmDxywqx0H1KL7vdz5v46L/0GxyfAZESwPu1zEMXSpt24wY+oTN2sMEuOAw2SK0OROucF3gWzYs6Uk7MtXg6uXq+jXRF76qdilWi5O2t270vwPYMOAG78C0DFhvtOA+aJI5Uc/SxbYPeN9/3/ymOhNNzZNSz8CfxwjhIGYjBao4mJd3Cb0I3N7ggHP9LhxUsRWDq7zWhKms0EOOfuiRw3VCdZh3E8wvbykos8M7Iy3m12XHK/JDJ2U88KPX2aMjgOrxBUBLwnySzzQ4+MPYGaWL6/4TQWp/NX2pm4L9rMuQguJj50/5p/A==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+arussellhaering"123"urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportrussell.haering@scaleft.com ================================================ FILE: providertests/testdata/oktaenc_idp_signing_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIDrDCCApSgAwIBAgIGAVhBgiX+MA0GCSqGSIb3DQEBBQUAMIGWMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxFzAVBgNVBAMMDnNreXBvcnRzeXN0ZW1zMRwwGgYJKoZIhvcN AQkBFg1pbmZvQG9rdGEuY29tMB4XDTE2MTEwODAxMTUzOFoXDTI2MTEwODAxMTYzOFowgZYxCzAJ BgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ0w CwYDVQQKDARPa3RhMRQwEgYDVQQLDAtTU09Qcm92aWRlcjEXMBUGA1UEAwwOc2t5cG9ydHN5c3Rl bXMxHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQCFRpdl2Wm6UtxSzZp+MCV5ljVm+Rg4dyFYxBz2DzCqGRCE5a47JnrkTSsaQGV2IrId GejmqpMcB3teziPeQ9IoBA4Grqc0FWUwh79d6vTH7A263XTtkyecq1D9qBwl4oDULcG2IbiQUcMM JRXgiknzOvHKH1p4TLaxQbmRO2qmHoZG0J0azWe2HgM/tzD9wBosRLu1EGV7ooS9xfS02kum2Qa/ CKydS2nWo/84R+s7hLPmbC3FsDc4U2XWmkFealgh8bZUZHZ6f7xTZkLqq7rvhw4p4pulrYqpnGgU bAsk/IHLiEzAjfz6movtU4B+CHEt3u/XDH8dW1O0aXpTIauVAgMBAAEwDQYJKoZIhvcNAQEFBQAD ggEBACZxU65IrSV3hT4/0DDG1P4kplvsfg/YYup8f6mgH38D1rdodiMW59mUBipw13qyempSgbRy UAukbpi3fpYb0Cob6Flo+FQR8+fpeUTePCIO+yD4mlqElAJR5a2J7ZWhycvAGOqvpaHHK+xrJCDD Y4c1hIOezAveGDskDS0cDcXknwQwdt2eQxGebRXaDSlvbjFPvpd2Y72x2PBxSoXaamdNRbiSUC0y APle2k24tMMfcm9A/FDDI8QOikV4vQeIjFjGr+yQf+eqBihaL8iDCojT8xXMU/mbDrQhrSWkqpnF sjls45t/votmhL8boe2A6Cx9yiAWltPISL7+L1ENa88= -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/oktaenc_response.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9za3Y4ZHYyNndoIiBJRD0iaWQxMDM3MzM2OTUzMDUyMDExMDQ1Nzk4NzIxOSIgSW5SZXNwb25zZVRvPSJfNTI2MGZjOTktOWM0MS00MzNiLThhMzEtYjdhM2UzYTRlNzU1IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDktMDZUMjI6MTM6MTAuMTQ0WiIgVmVyc2lvbj0iMi4wIj48c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cDovL3d3dy5va3RhLmNvbS9leGtiYjU5d2IyMFg5Nk5ZMjBoNzwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI2lkMTAzNzMzNjk1MzA1MjAxMTA0NTc5ODcyMTkiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT5XZk5kRjRJcGx3aU44eWhLaGgvakNHY0Z6TEU1ODVUTys2MEVUcFp1OG9vPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5JZnNXU1ZmcitKbTZSVFM0MGtBdkJkVHB6cGUzSVR5MjBJT2doMFZ6Vm5aWEFMMU9XZlZCYXN3Nk12SGVwMHQ5R2x4Y25zSHN2eHVVUEIwK3pHMzdkNDNuZHMweks4dGlVcDQ4a2V4ZDBFcnhIelNIMkpwVkw2UDdTQW8vY0dyOXRRamxWMVV5SmJ0NTJnZEttb1JlbXpxVS9wdzVQd3lqSXRNODFyM3pHZUJ1Ym9FeXpkMDBzMCtDaFZyMGhoVkhtK0RPMDc2SnNId1VJRjBkWE1qTHpLTGxLM3hSTnMzd0pBY1h6VytJTnRnMFpvQlBEUWU1SlFDMjJrRUx4SkpyTThWMWQxSkd6MlVUM09yTVIzOHpaQ2ZxVG1JVm9uWExMZ0h4c3dkRHpHcXFiV0xET3VQZUdOcVgzOVAzZGErOEUwbmdJVnVEaHdiM3ZYbW5jZW9YYnc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRHJEQ0NBcFNnQXdJQkFnSUdBVmhCZ2lYK01BMEdDU3FHU0liM0RRRUJCUVVBTUlHV01Rc3dDUVlEVlFRR0V3SlZVekVUTUJFRwpBMVVFQ0F3S1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ3d05VMkZ1SUVaeVlXNWphWE5qYnpFTk1Bc0dBMVVFQ2d3RVQydDBZVEVVCk1CSUdBMVVFQ3d3TFUxTlBVSEp2ZG1sa1pYSXhGekFWQmdOVkJBTU1Ebk5yZVhCdmNuUnplWE4wWlcxek1Sd3dHZ1lKS29aSWh2Y04KQVFrQkZnMXBibVp2UUc5cmRHRXVZMjl0TUI0WERURTJNVEV3T0RBeE1UVXpPRm9YRFRJMk1URXdPREF4TVRZek9Gb3dnWll4Q3pBSgpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIREExVFlXNGdSbkpoYm1OcGMyTnZNUTB3CkN3WURWUVFLREFSUGEzUmhNUlF3RWdZRFZRUUxEQXRUVTA5UWNtOTJhV1JsY2pFWE1CVUdBMVVFQXd3T2MydDVjRzl5ZEhONWMzUmwKYlhNeEhEQWFCZ2txaGtpRzl3MEJDUUVXRFdsdVptOUFiMnQwWVM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRQ0ZScGRsMldtNlV0eFN6WnArTUNWNWxqVm0rUmc0ZHlGWXhCejJEekNxR1JDRTVhNDdKbnJrVFNzYVFHVjJJcklkCkdlam1xcE1jQjN0ZXppUGVROUlvQkE0R3JxYzBGV1V3aDc5ZDZ2VEg3QTI2M1hUdGt5ZWNxMUQ5cUJ3bDRvRFVMY0cySWJpUVVjTU0KSlJYZ2lrbnpPdkhLSDFwNFRMYXhRYm1STzJxbUhvWkcwSjBheldlMkhnTS90ekQ5d0Jvc1JMdTFFR1Y3b29TOXhmUzAya3VtMlFhLwpDS3lkUzJuV28vODRSK3M3aExQbWJDM0ZzRGM0VTJYV21rRmVhbGdoOGJaVVpIWjZmN3hUWmtMcXE3cnZodzRwNHB1bHJZcXBuR2dVCmJBc2svSUhMaUV6QWpmejZtb3Z0VTRCK0NIRXQzdS9YREg4ZFcxTzBhWHBUSWF1VkFnTUJBQUV3RFFZSktvWklodmNOQVFFRkJRQUQKZ2dFQkFDWnhVNjVJclNWM2hUNC8wRERHMVA0a3BsdnNmZy9ZWXVwOGY2bWdIMzhEMXJkb2RpTVc1OW1VQmlwdzEzcXllbXBTZ2JSeQpVQXVrYnBpM2ZwWWIwQ29iNkZsbytGUVI4K2ZwZVVUZVBDSU8reUQ0bWxxRWxBSlI1YTJKN1pXaHljdkFHT3F2cGFISEsreHJKQ0REClk0YzFoSU9lekF2ZUdEc2tEUzBjRGNYa253UXdkdDJlUXhHZWJSWGFEU2x2YmpGUHZwZDJZNzJ4MlBCeFNvWGFhbWROUmJpU1VDMHkKQVBsZTJrMjR0TU1mY205QS9GRERJOFFPaWtWNHZRZUlqRmpHcit5UWYrZXFCaWhhTDhpRENvalQ4eFhNVS9tYkRyUWhyU1drcXBuRgpzamxzNDV0L3ZvdG1oTDhib2UyQTZDeDl5aUFXbHRQSVNMNytMMUVOYTg4PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbDJwOlN0YXR1cz48c2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgSWQ9Il9jZmY0OGY1OGE1Mjk2MzJmYThhYzNkZmVhMDgzYjc4OCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIvPjxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6UmV0cmlldmFsTWV0aG9kIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VuY3J5cHRlZEtleSIgVVJJPSIjXzMxYjY4NzUyZDJlZGQ0ZDE5NWU5ZDFiZGFiOWQxYTZiIi8+PC9kczpLZXlJbmZvPjx4ZW5jOkNpcGhlckRhdGEgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj48eGVuYzpDaXBoZXJWYWx1ZT45M0NsMkYwTDU2aWxHaGRQdXdld1FGNXdnblRGS29jYzR1bEhLdjhmTEtCTWYycE94YjNWQVllcTVHdXV3cUIxNFVnMlFBOGpCSjNRcndMOWc2RkU5WlNFVWs3R3FYMTh2ZUVVc3RMZ1R3aGFrbDg3SGNJSER4WTR2NkJoTTVkQVBZNEpSUFpHZFNTdVlieEN4TGJ6MkhiYUVMSlZwRmlLK2tsTFdNM041T3laWGJQK3NNZGNTM3pITDd2Z21Hd1BGWld1eC9ZV0ZhaEhiZ1pqSE0rM1lvYW1DaTFCNFZxcW9KSW9NdzlnU2RuUU5lbXNMamxDYjRDUnl0QlVzL2k2clB6a1BhQzdITm9sbjRyMS9maWRYdGVDdkhZc2N5ZjA2YzhLcWJXUkE3MFlDQkgvMXJqVTEvYXovQlRnNTJ6R0d1MDF4NE9pSDd4dVZXWVU1UUJHVUQrQzFuc3hZVWJ5TitCN3UrcEUrcGdyOW9hRWNBalhVVUlYYnkrb3pxWDFJOEdyNDdVWjdRUWh6Z1l0UzcrSjl5dTZhR21pa1RVSE4rYmJ3d0hjZXJXNFZnWEpjWnBXMzRuWHFEdGFIUEFwaWxwc1F3QWV5VndMWnVvdVBKbEV0ZU1FbkQwbUN1cGxJMHRtbXJjcG8zdk00VnlTeS9EakZNbm9BSE0zK1hEQVBXMitqNm5jTDlaVU9sR2VmRDhDTy9ONG8rVTJYbVhmaGNvUjZSRHAybmo1T1c4RU5la1BIZEY0cXIyMXVreXJqc25qZngzUlhQSUx6RXJFN3c0MGRtNnRFa2VMYzlLZEs2TlNCc1ZmS2Zna0ZpQWdTK1AzSHJ1MU1rRW1OcHhTaG9qMWJtNDVVZnZqejM2TndzTnZpcFBTRWhtKzN1b0xOcWhoU1MrVjVVeGFXVERQbk5mcExZVGZScVpVTHV2eGo2SmNBS0o0aE5xTlRWZEN1azBPTCswUG9pU1dtNHltU1haQ3I2ZVEzSXpxL2JSNUV1anlBbjZIdXhXN3ZzTGkraG5rNG1BUWhTT2ovUUFVQmFMRWJ3cDFjWUZXWHFjaVpiOVRjRFA4K3NKQTBqejh0WlBBd3lMMERCS1Y0VHJ0ZE5ZNUpjTEVucElpbnFqQ3Ric1NzTzNjUUt4QnE3aFBabnBjWUtnT1V4NHEyZ2huN2tiaGY5Sjl5MGtNcTIvMXN1bWc5K3E1bnNWM3FrNFZ4aUtxa1I1M2x6Tm1yYkZJVTFTOTRjZFYzTldiUVlmK1ZlNkdPU1ZFbmlWcmZDcGZteFI5Yk96aTRGTXpVNEllbWEzNDJ1ZlQ1RTk5NTFrTnJWSnhLQ1c2TmsrTXFNNzJsOW11c2NOcUJUMkpMK2hKbWJBWm9kSHBuUnZsUlp2MkZmcjRCVWNhck41bnQvWVQ3d0ZhVlZWNDdBTnh4SW82YXlsTW9hRjVNc29WSWpFWm5jQlJpTjczNWhMTXVYNFBBdkxXWE93ZW9kVnBXN3k1R0FnbVVyUVN2SDl1QXdBSXBQaWJaS1RQWG92dXpLNEErUDlJV09mazdWYithZ2dHQk9RV3djbXA5dm52OXRJbXg4NjRLOEtGTnFMV0l5RVNmQ3dINFdmelJSbWNCb1pTQ2JsckVLbDhKUFQ2bGM1UkIvRkJ1bjBUSzlhNU5MUDRjSTdjMTZLUHlTeGVGTWNHampWcnlkZHpNRkxFYm16R0IwdEE3TGFjWHdrV0UrSUhvT0d0cUloZC9MSlRWb1o2UUJCcDlheHBVa1dGNDVIdERVWWxzRExqYnpYcFlxUnA1WnNWR2h1cmJ1V1ZydjA5aUxESlRYRlFtc3J2R0hJeW9sU2NkMnRUMmZKMGg0aksydThiZ0lZUmx5SmFia3RtUjNHT0Q3dUZUN1JpZGR1STJ3V1NnbmViR0RuMWRnaDkzNEdmSTdCUktpVnZBMW1heE9IbnltSzRSRTVid2JYeGJadWx6UWZDakZuME9UNEpZUit4dDl0aU1NRC9RVUJCYUdTU2MrSHBrMnRpVjFDc1ZPVDQzZ3FCZmFtOGI3U3JTdTdDOFF3dVZCQmRFcURmeGFsZnpnNUVNOFNBSjhHdDhmUHNCTEpybkc4aFhtNUpWbGovb2M5dnhYaFg2ZFM0YmpEaU9hSng0ZVU4Z1FYQVduYW5CK25lcCtnZzhRemNURG1neTRuZnFKRHhzNi9JVWxBbjcwbWZycmFNZElnV3BHWXYyb1UvdFZsb0cyNmdSVlh6SHBQekRPNHd0UVVkUmE0aUc3ZDZPUnFPTVRrWnlVa3VhRGZ5Y1NVSDZZZUgyK1hyLzVVOS9DU2J5VDNLeHN5djJwckxPdFBLTEVIVloxSU9lUUlTcy8rVXBaWmZEQTFFNWNleFd2cnhtUURtOXZFa2k0bHJYb0NxSXI2YzZvT0lzRzI5MlJ0WHlROGVKMlZBM3phWWRsWEVCbzJpU2RBTFMrUFJteE55aUYyaWdBTzRvZDQ3ZWUxWGJkeU5zOFU0L3l3S3o2cGxPT0ZyRjhaeEdLOGd0ZnRxbW1wdWxWcVpQZnNuYmsxOHUzVitaWjBUaWhkbmJWRCs5YkRxL1htZUh1eUdyY3o2MWhxRm55Zkw1SUtWbW4zWUhqL2J0cXM1bjFWTHZKNHl5QTh4ZUZISVRQUjRkSmxYU3hxQW5QUW5uSG9Cdzk0cnFKUUQwdFZQS3pkWWZiQVlOeEMzMmpRRXB5T1FKSjNrclphNVRHMFJySFp1ckdtbTNHZTlhemwwR0QwWGR5YWxBdVA4Sk8zZEZtcjhHS2h0R2sweTdld01vYVlYUE52NXAzNWtyNVptSWpmb2VhUWlMUlBiMktLcnlqSlhERndPZjY1ekcxQU0xaThWMjVMZHhIUzJXZDQxUHZGQUdYOG1zN2ZGTWJtQW8zNVlZOTY1MTNTWE55cmZTM2duMjNFSzR3S2dNTDlkUkxFWjc2ZlVCb1BlWTg1Z2ZWZWVaWmtBTlRzTXFYWVA2ajB0QllYZU5TSGdUWDI2SW55b09ML01LeFRqU09WL0hEdXpGMnp3V3JDdWowbnNPakIrZzVYTW9uTlY5cm44dkRYZ2lTclAvVzcwVDRnbWlUT1dFV2h2ZTZlS21sZDRLTnRJTHVyWGZVSXR2SHgzbEdwRzVNMEhLNW1hWkxJTmE4NUZQSDgwSzVDY1pYMXR3TE9VQjVubGlPWms2NHllUGNaY2puTFhXNWhvMVZOQUo2TnpKUkxwNHBkODczTzNucFEwMUVqektYWGNqUzQ2SFppTnVySk5Lbk9ZaHliOGhHdFNhYUNRSVVoWlRrSGFRT0c4dnFrd3ZTbGhpcHZCamp1SGFUMytudWdoOXhYVzhta3JwZU1tbU85QlV0L05PU29wSHpSdHQ2QW1GUnJTeDRNWGJoVlplYUR2bzV4U2FPWFA3MUlTSUJKcjNudVY3aEh6REs5Z245R2EzN2NuQXgzMDNvdTJBcmpldllxaHEwdGNHV055ZkpkK0ljRUE5ZDEzY09rQmVvMG8vRnp6NHRkWVpTN2l2MHdHWkRsOVVkR09HQUpmMHMraDNqbFZVeUUwTlQvSC9CSmQ1YWsyemF3cWlCUmU2SzNSbmR2bm1IZXBmaTA3TTZibnVGSGRQM0h1Ny8zRmFjV2VtQllSU0htaHhhM0xUN1lBTjU5MWovVDErS2E3WmY1VE1WbmJoRFVtTWVRTTk5Ui94S1VBOGpaeFVEUnRhckd4YkxrVzBMVytIUHBqb25ZN3BVMThEQ1lhNCtXbWEyZlZWMDNrUmlzaUQrc3RVUUY4MXhXTVVjdWxudk1xeGpnWS81MUh2NS9tR0dyVFpBZTdHTktqazE3bzdnRWJOUFhCcHZFazZFbHA5SVlSVnhJRm5YOVZtSXJPQmIzQ3hrbU9OY2pNUHhic2NPYm5WVXdrU0djemZHWTV2SGg0TXk0QnZxV0RwWkZYb2FCaG9VNVQ4b2pLY2VLbjdJTHFmMUlqaWhGMkhQeG9MQ244QWxCME5VaU9pbjBxMUtzUk9lR08rWGFHUkl6VHdFZGxDTUpPelNETmpEVnhKelZrOHpxK2c1VG0yRGhpYnpQVmtxTlN5RktORlFQVllTMXFMbzcyS3NsZWtVVW9pUTRVVVQvOUF6Z0VDTXVWMUJVYVY4aHduUjJLNnNZQ3RkNDVieit1T0tVVlhUTWROUW55TXQ4Tk9pY2Q2YWtQR0N2LzBid0Q5MTk1STByZWh0eitLSGZUWENYV3J5MGtZNWRuZG1yZjg3NWlVeU1PM1dXaTFTQnpRT0NzU0UxOXVPR241NEEwelh5NUZsbnd6Z2RyeENyWldpQWJkdXhEenlNcU5EVXZaZU9oRGVCaXB3R2k2MmN4MkJtWHRrdEtGdy9jWjhBVnRnS2ZjZUJkSCtkN1dzYU9DN2R2UlprcFNVV0ZkOVlnaGhZNlBrb3N1akdlQjZOR29KbVVuMVY0SGt2UytGTUxoeWw1enRhc3hLMUlMNkp2cWFZbVVEMHI2eTVwU2N5TGVQSGg4c05PZitHVGlKZkowNDh1L2tDZWF0RExqbFA2NkVNdHJQK0tLcGNyajMzd1hGeWJ1a3B2cVNsRFFiZFVnaFFsN0owZStqRjVrR1BlRlAySWt5eHVOMEJNQjZCL3U4cVhCQ0lrMzkrYnkwd0toMG44Qk1pQW5ETURDdWsrSGVJQkdtYlYydGFBZXkzZ3RJSWZ1K0JPU0s3aVBFZzZKM2t1aVJXRlhlTVBrZGxmbm1TaGtYQ0RnZXJqb29aaFIvaE9NQVkxSkIxUDQrQXlkSXR4Z3JzaEQwQU52U3ErNmVrVmZiNHVadnpvR2k4UDRuN3JlaHF0aTE4dlo2RTJXVVAyVFVEQk84T0FSY0VDaHcvalV2NDdTTUs2WXBYR2pFbm05VW1GS3pTNWJ3UzFoOWtTV3lzaE52bWEyK3dmVEd1UlZueS85Z0RISmZnT3owVUNta1JtUklrYmhHOXY3cE9DZjR5N0w2NWZsUlRFbitLbjJZTStBT042TTB2NTlWZVh4WGNjclNXRmdwSXJSaktQcDVlR20vNzJZL28wTmVpQkx6L1VtMTd5TlpvRG5kekJvbVRxMnpSdE5Eb1JOd1NpS2JGdFROaGtnSG05amJPN2lZKzk1eUw4bmo5ZElJcFpOSGR2a0ZkUWRtelQ1WDNmVWEvSjNER2NhRHpJZHlpTWM2cEhCN3Q5R1l4T1dpWnF6ME9aQUYyZWZGcGM0T2d0YkhFRFp5ZldBSXMxeVpuS3ppQTRjNjl6SEJ6TEFnYitQc1pVWGs4SUNXWUIyZU1OV2RETXIrWU54Nml0V1YrUC9PallXMjg0ZUZvMEFyY1JZQVBnZXpiaXUybmltSmJSbnhxQW9jcThvbktkOWtFMjBuTDJYTjdOalRBZkNMNDhncFFadGZOZHBJamFUQ2NnK1pFUk16bGhZRUhna3NUMklwVzR1OE4xYmVRd290WHA3MzdYNzNpeVRYR1gyZWFhTEhCZi9DU1V1V1BRT2dGUDN0cWo5MW9VWC9ucSswNktTbFVuL2ZzcnFQT3hVdi9nOWNsdEx3RE5wUUZlK2R4TXN4WnRtWXVyd1JnQ2ljL2VxWDhRT2c5NEZnYW5UMHpCTW45dGFPNitqcC9NaWg1VDdrNzlNek02R3pHR1RKTkg4Q05qdUhNZElaUkhMeWRSNDhEMDRRRFBBc1J2YVAvVHN4YmFFNkoyWmZEMnNaVTN5UnAvTm4xNHRHL3l1U3g4aE40S29kMkpLWllTSkEzK0NpM3JseHgzZmx2dFlBQjVIakFSWm5YbGZXVCs2a2RLOExDN1B3TXlXK2Zld2V4UWs4MDQ1U001VytSZU45elJoRVBEc041TmZBaUVSeFgzMHNmd0NyOEs5bTBEbXE5b0wySmNqZTdHQjJQc2R6UTV0cTZhTTN4enFjU01uQ0wrSmUvd3hKYXpESDF0THhzZENhM3g5QXlwSXFmU2sxdkxtTHB3RkpBRk5GdEkrVVRuamlnaHA0WG1qQ2VnSlBrN0V3bG95NENSMVZXSkdPYTB0N1M3WTlwYkg0OU1vc3EvdVVFWFB1MXUvcmROZUF1Z24wVmROTDRDMGZhbXZidm1KVHE0K3NVeGhvYVBzVmpLYXJVYzE5TERmWWJIem11QmcwZTZrdGptd2VNMWZwM0JUMkNObFBXS0c3cXdrS1I4TXpvblByTUc4UFRjVnpvMjZHNUtqT3pMRGE2V3Z0UkpwRkxVMzd0TmVxY0FRdDROU1FwVW1uaW5CMHdSaG04T1BjVzdwYno4WG1qNFczekJpdkRVTWd5dmNET0hCWWx1eUlvdFpNL0ZoV0d6SXRlaU1UR1MwOTZFNnBLTEloODk3QklGMVdLaE1UMmF1SmNmZzRLOG1oOE4xem5xR3RQUURFNEprclZjM0V3cWpEcmZXcGczQXpNWUdpOENIWmgwV3E3MkhoWEh3NS9UUVJ2K3o5NTJTMUhNRE13TmpJMUxUL3Fvd1BCTHhkeTI5QlI5OXhHLzdGZnRzRDVFdGJ1ZWVocnFESkxqU1IzMVlGaEpuZmp4VG1pN2s0dXMveWhKcjhQdHRvS0ZKL05nZEdnTnh2d3FJZkw3ZjNPRnBXNWFrdXd3N1VkVEg0MjBhNDM2dkpMczZraEFKWkVUSFE5WURyMHE1Rm5DMHZMbzhZaFoxQWV1ZFJ4L1I2eEYrWkpzZkxOa3pzZHBneTZFcUxOckk2MkU0T3ZEZSszL3B2RDZkSHhnd05DdzRoL2FaVXo4bGI2R0w4V3Z2dFFMSklJanRNVW1UNzdwS3F6V2FaQWYrblFBQ1ZkbzltRjBRbEJ2cGJvWGlUUDYzdmZkd0wveklaOVBmNFpLdS9EYVdLRzFmaDRCL0dmZ08yRzR3dW5vbVpUenl3ZVBzVWdlbHNiUVFCN2Rmc213Q1pLUW5GeFRyYlZ1WnhUckhvaVY0SzE4VExXc2o3RTNWcnJmbWhxWmFkdnM1Nkw3b0cvbHNGS21jN2FuUGwxVVBNYTJzbmphQ0NLUm1oMXZXZkVhVmVBeC8yd2E2elVjUTg2T29qN0ZTdFkwMlN0SElOWFZnMTU0RnZjcWw5OGZhVlRML3BHNGIzRGg0L2lwU2NJZUJlWUc0cVFteFRCZHUzSFlyL3lhTEFObnd0S1pVUHFielJyWmtvbEJZV3lEaDhGSGc4WldYZjRrTThYSStHckRGV0JwRTY3MFVaYkNOaEJGQ2VRSlRxTk8zMnpQYStjMVhFM3E5WjNGRXF6am5lZW5KRkdKTEw5RWd2bFNkUm13cWVsVFpoQTVIeEhxa2loVHhYcitMdGp4dEZjejd6QjYyRUd0RStlUVJvNDlKdXJRR25PcmFKOCtyWWRBS1lRSU5FQ3lmSlY5THFITE5VRWU0Mkw0a0V5d1hEMXlndnYyc0VHeXFuc3VGRGpWZGJKUVQwcDZPR3NKZEhkU1RpRkRucXhXUXQyWXBrVVFSVkFubHR2dHF6bWJzaDlRdVJ6UXpZdjlxNHh3SHp5dW54WWEvYnRxSHhFYVpkOCs1VTBYY20vRVJjZXVWN3AyMFNYdjZKN1JTT2VWOStkWDFHVnYrUGdINXdTaTNTWFZWeDBKQ1RiMDkxVHhRMG8yNFFyNmRjUFo1R2Jtcm1iWXNRTDc4NDZhYm1FU0NwejVTTTBGUWVyRUhseUhjVjZ5QUVVR3loK1pRZnk5c2I3c3kxS0JQaTFHZTQ5dHZSUXZsRUorNC9DVmhBTVNpK1NOVHdqb04yeDl4dDBvR1EzZ3hrMjk1MWp1eC9Ic3JJMm1ySU9vQ2VtNnYwWmViN2dic2xWWUczWG95MGhlbGd0WDloMVFJZHJjdEdZWmFvUGVCVlN0eHo3Q1NhRU9RalkwQ0ovZTNraEZ1MXl3dkQwV05MbGtPV3lLYTdCZzNkdnpPRjZkSkI1WEQ1R3RaeGxieS9rTG9wVDJBRXc5NDl5NEpPNk1lZEVUakVhQ1VSL2VkOVNNNDRLT0VyTC9rYkF5b1dvWWpTVEJtNkl1cHdxWTdJVTFENWtnWkhsT3Ewc213bjJmQ2NSSHZGSklvclN2MmlIc0p5K2pLa1RaZnMzc2hSbUxYRGR2QXhiT0liS0NsODg4di9kcHdnT1lnWkxQWXZCNXQyOVMxVFl0V0U0S0dVakF4UGI4ekJQTjZYWFJRMUNWUjdxZHlqVWp0bjFOZHRpVEZEV0p5dTc1RVRBYUwxWmlMRG9uaDV0a3Bid3h2bXpLZDV3d1J5WEMrWElUa1czbFM4YlUwNW9KN1QwbVhKa1RQWm95Zk0wbXhkcHBBQUVWQTNCTzVKUHdGQmlNSGNqUEdEUEZOSzJoQk1BQTBYVjV1cktQckNVSWpCc3YyTEhpQ2VKdXhhK2ljd2hlZjdkcUVaSDF6OXdYazJZRUc2RmMrdU9Db1VVNTNVT00rbEpGZFo1OVhENTc3MTVRcCtxSUdHak5tM09Gb3ZNdFBUV3NuRVFsdHdjZkhoMFZFaXd2UU1EL1Zxcm5TVTViQmw0dVhDVEJLT0E2SjQ0cWtmU1greW04d1RtV1NOY2pWbjZqNlNER3hvNmNCcEovZU5scktjS0wrVnVUeSs1dm0yTGZpNVlidDdMYnNmR3lqOXhWTnM4b2orbS9QVzE5RFQ1SnNLcXlucGxYY3h4dEdTays1YnJGVlVUdnZ1cFp6RUM0VkhQb1ppMkhGeVcvVmdiTXlZTVlDdzZNNTllbk9nQ1ZmS043aFNPMkordlR2dnlzdU92Q3p1OXVJYXVtVmdYeXhJb09vdml6NUJGcUV5alBvZ244UDV5cUFyYURtVzVYbUZGSFhaS0d4YXJXTS93NkE4TjZ3MS8xRWY5ektqMldma2NtMTlnUWFJa3FqU0dRc0t4cFJ6R0dMVFBJaytYM05CaUhIZnFEaytWdGUzSlBGOENFZzRydUtpOFVyM25zc2c2T1FBVERSdGpVMFVtSkpoNXdET3Bjb0x6NlFqa05PR0RyaDRQdGpvUzN3ME5DNlpPUEtVV2Y3MjFXMVh5dy9CWUdZc205cUtBUk9OWFYvSUtacEdkNjUvKytrMnBYVkpJU2JOd09WUlg1UFNRaENoT0pMTzJ5cklJY0NPN3VzODEvR1hYNkpaY3RiNUVuTThLcFh0ZS9MMXRodDRXZzJrbms0MEwzNEdOMEZTbTNtbXJCY2tMTVRIUGRtdUQyWDE2YWtCMTloZmNvK1Z0WGo1UENEQWJ2UnAxTGNpdmJVR1RKM0JpZS94dXQzMk84OWdST1hxNjN4d1hLekNDSUhnTVZLdnlOMnhlZGRRYkFYaUYwV05VU3pqVDFSMzZTbENoMWNxcnYyOWFQeXJYRFk2M3lERnU3eks1OEhzMmZ6aDczNEs2WlZKQy8vQXNMaEx3MThWQWlqU1NDaFRodmUrVFpKRithRU1XemJPdTlLU0g3NEZ3OGdpbGw0Mkk0NWUvS012Qk1ZS082NEN1STJaVWRGbFFRZWl0LzVXNit1dDcwN0x5ajR3MklGNjdBSWZWSDg4WnNvdEliYm55cUpGa2xnZXJkeXhpVmpQcTdacVNXQjV1MHZzZ3pZMkRVRnhzTHloc3IrdDFUdnNBaFJTVVVrSnpFTlhwdDVoVmlZSVVVM29zRFdja0FSQnhLNUNETGoxWmdGQUZ0enJvbms1QlNPZkpwWDY1ZldhSGpHQTdQeUxFYXVoL2JjNCt4aFdNTmNhbnh3d2JYQVVDM0gxdTFKWndPUUVHK1BRTW5naGllOCsxWXdvZXRqTmNZQjVJeFh2ZVBORTFQcFJtVGZOUnpyeFdWd0Fjc3d5cHFaRnc0VXlwelgvZnVRakVPMS9zeFl4NDk0ZGJsa2kxVmFOTW8zeTJpVzR6czFCb3dQekRVTWttYzlxdnB0SU90eHVCYXB5eEMwYnhidFVabkdsQkt4UFlRL1BWd1NNdkgwbWJ6clJKVCtUVkRyV2pQNzNWRU9paE02QU5TU213ay9KTWMwZExrUDU4Z0tXSlk0VVppa0hwWCtPZy9kdkFpci9xTkxTU2dmZUFRYkhOZE1XWTdJdzVUUW1RdytFd2VvdFE3ZUFnZVZqd1pZampQMTE0TzRLUVdPbFBlbEEyQTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkRGF0YT48eGVuYzpFbmNyeXB0ZWRLZXkgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBJZD0iXzMxYjY4NzUyZDJlZGQ0ZDE5NWU5ZDFiZGFiOWQxYTZiIj48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+PGRzOkRpZ2VzdE1ldGhvZCB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjwveGVuYzpFbmNyeXB0aW9uTWV0aG9kPjxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFPdnBadEpOdFEvck1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13CkVRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmgKYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURneE5EQXhORGcxTjFvWUR6SXhNVFl3TXpBNE1ERTBPRFUzV2pCVk1Rc3dDUVlEVlFRRwpFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEClZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXcKRFBDSjlKWHkxTnN4S2ZxeU9mTFFYRktLR2dOS0tSTHpMQVdPNDNHZ1FZclY2N1FhQW55NUx2Z09hODFLUU9YNEl2akp5MG5kL1ZyTwo2akc5cFRkTVI5dkZIVDBUdTNXMVFVc3lQUFNRcXBLWHdiMlpDU1hOZ2hZRDVnQnJOdG1PeEFPczFBeng1cW1JekJKNEYwUmtSaXZjCmRiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUwKelhiUGJRV2Ewa3BiTUxETXo4S3IycE9ETEtiM3JHbWRmNFA2QTlhQTQxazZMNGNsVHNOZGNLN1p3SjJmR0Y3OVdHekU2Ukx5QlgyVQpTM2dQSFVYdC9XTVFaWHlVTE8zZXhpVERzUVhXRmY4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnUVFNQTBHQ1NxR1NJYjNEUUVCCkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0IKTFNRd1h6RmVjRU4rQ0E4U2xwTm9JWEh3azZENlYzdUVCU2pLZW1adEpGQ0pxZThkKzVxdDNHVjUwQUttdEV0Mk5jN0I5NFROOHhCNQpFbVpsYWRuVEpXY0JnU3V1ejFoTFhRUTAyZEozZERxOEZNbHlSNzBTMkRUdHVQdTBpMi9mNkt0cmxtbU5zVTI0QXErZkN6RUc0M05xClNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkMKbEJSTDZ6RGpscFBDSUR3Y01GaThOWHZhaVZjbHhJcTNYZGZxeGlHQkJFbGRraGdaPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkNpcGhlclZhbHVlPmhuQ0NyWEFCK2JIdEEvNHBKeVBFWWcxQ0RwQWRGMXl5clY0dDdaVGtTRCtCSmlRY1B6SWIyVTZFOC9UeUNsQ1o4OXlsYjE3SG1xNjlzTVFqZHMzWUllVHRCdjVxc0tBczFHUTRvQnBDU1F4UTZEa3JlL3FZdVgwUU5vaUdNMDR5dUI3OTMzVFdGQjIxbHFUa0NrNDJVd25GVlRjTHhLWHhrM1Q3cmhUTWZJbkxheVFWRCtKU1ZWQ3F4TFM1L1R0YWhLWFBlb1FsQ0VSUi82ejRMV1ErTEhpU2k5dXJNTEpLZk5MdDhBNmxpRmhCbmM5KzNtaVp3dGgzR1lEVWRGK2c2VEk0d2lOQzdlNHdvbk93RmNnU211amQwUzVtbkxidXB5dVB0NFJDVGYrTC91ZE1rUXBjVWc1dmZVTndnK0dmdUhDL2NmNDM2cWJmMEpyYytLRDNGUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjx4ZW5jOlJlZmVyZW5jZUxpc3Q+PHhlbmM6RGF0YVJlZmVyZW5jZSBVUkk9IiNfY2ZmNDhmNThhNTI5NjMyZmE4YWMzZGZlYTA4M2I3ODgiLz48L3hlbmM6UmVmZXJlbmNlTGlzdD48L3hlbmM6RW5jcnlwdGVkS2V5Pjwvc2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uPjwvc2FtbDJwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/oktaenc_sp_encryption_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAOvpZtJNtQ/rMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgxNDAxNDg1N1oY DzIxMTYwMzA4MDE0ODU3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfUlciwDPCJ 9JXy1NsxKfqyOfLQXFKKGgNKKRLzLAWO43GgQYrV67QaAny5LvgOa81KQOX4IvjJ y0nd/VrO6jG9pTdMR9vFHT0Tu3W1QUsyPPSQqpKXwb2ZCSXNghYD5gBrNtmOxAOs 1Azx5qmIzBJ4F0RkRivcdbXSfBUBLpCn1M285c4tk5SEvoRgBeisLJJDB7hmylA1 V6/+BN+N6b3M+ZZG//CTvOjJKgnwkMALzXbPbQWa0kpbMLDMz8Kr2pODLKb3rGmd f4P6A9aA41k6L4clTsNdcK7ZwJ2fGF79WGzE6RLyBX2US3gPHUXt/WMQZXyULO3e xiTDsQXWFf8CAwEAAaMPMA0wCwYDVR0PBAQDAgQQMA0GCSqGSIb3DQEBCwUAA4IB AQB3fQZz2qNAo/wohPNaR2uAakLt25cKrsbgn3XwO+X+DRH4nqMSZkHdLGr82xD3 i33BLSQwXzFecEN+CA8SlpNoIXHwk6D6V3uEBSjKemZtJFCJqe8d+5qt3GV50AKm tEt2Nc7B94TN8xB5EmZladnTJWcBgSuuz1hLXQQ02dJ3dDq8FMlyR70S2DTtuPu0 i2/f6KtrlmmNsU24Aq+fCzEG43NqShOMeM5rDxLsSJCtjfMRwG8YeyNf6cCMSMxY AJfrTyj+AS8RtZQNGF7tX+exEWHOf1C9CBzHtKRClBRL6zDjlpPCIDwcMFi8NXva iVclxIq3XdfqxiGBBEldkhgZ -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/oktaenc_sp_encryption_key.pem ================================================ -----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn1JXIsAzwifSV 8tTbMSn6sjny0FxSihoDSikS8ywFjuNxoEGK1eu0GgJ8uS74DmvNSkDl+CL4yctJ 3f1azuoxvaU3TEfbxR09E7t1tUFLMjz0kKqSl8G9mQklzYIWA+YAazbZjsQDrNQM 8eapiMwSeBdEZEYr3HW10nwVAS6Qp9TNvOXOLZOUhL6EYAXorCySQwe4ZspQNVev /gTfjem9zPmWRv/wk7zoySoJ8JDAC812z20FmtJKWzCwzM/Cq9qTgyym96xpnX+D +gPWgONZOi+HJU7DXXCu2cCdnxhe/VhsxOkS8gV9lEt4Dx1F7f1jEGV8lCzt3sYk w7EF1hX/AgMBAAECggEATD8qZWiGGGm0csNFrOdjGQALj6LVrrILK19v1aogX84Q yrhxzm9ti/8dDijbi9qRY0zOuyvGR5z1/HMb/Ttv7nUoMD05kEC3Dd5/FfTo2w7R 3pIyzDKh1E9IdqIs7W+L+Li8zI4twzWriM4FaxQ5ElL4zxt3PcoEuDwOH0TQMOsy P2gLEhzzkFp7TRoKzR87sM6lXoERsGKh7XNWjjS15/w+XHMaDverOOALwWDbv32N UCdVSAGBx4Ic4mZuJv+e3MH2SAja0J6NLMzCMtrzmfcgVECykMnELi1XftZYbgD+ KulSvHuamygS4KJppnAdly8950C8CxI7fp9QJV/8UQKBgQDUaT68z9e203L/XATr sa9CgZodWvjrLH7a2e5EvUPq8slmg2VqEYNjHzP4rCoOcLul6TwrlNInxqTIkIPR mRxBSrG24azfGRrOs34IMTXgqfMVVxbcSVK8OijHs94NTwYrRjMXeaAOnKjPH484 DALrEoEGcrjXmDDKBV9rb+a5XQKBgQDKRVkUvCoILjsA3jG6qaKBwKSZBFla2o6x YxgOZdeSG2NEuMt74yRHjgV6iogpvw9i/FSY9TAaZsoX0L3I5LWRtwEi3iXtEC9X qFlS9EPr9encpdd2vu1O6aWXW4IlUWbu3ecdb5UAxu44ObUQS6HiXEfcK8vufF5l WyilXNerCwKBgAMYYYSo1rDgVe2orp2soiwq7U7+M2Bh7ptLz7AKvgGfdhXbVk/8 X1jDbKN0BszdEa7yPiE4cvOHboFJsdINFB9TclGC6lz55a0banu+E9XpRBSMh1XA b8c0ZcG7OkIhY6qfxEDUUePEnqUeBZ1Ad45rX5vzcgQaQKPA/kn3gHo1AoGAU/05 wSdk2KLBs1mQEq9PoEsqzbMFm3k3WScJnSjiu3ON48JMFDQ8I04wrjKJ2bPRIswe IKlnAP9/mSX/OETntArmeOD/pJFc5ywrcwukjH0/T3S5pEAhb+wK629++hn0AOm5 hvqHR5xS3JvxuEN/g+vHlv/EnVGdLL8OgKOtlgMCgYBU/5WF/7dr89uYzjiBvedh HQCgwd+8aSs+raY5eTzJrJgqVbEMoxhco1GWzWYUjDVw88Y63k+fqIf1DQJFkWFi 9T1nppVDeofoLDLTrh/2oTAHIM2QL6kWwoHiD7b/scF5z/rC21KqobqroAh2R0CP J2waRoJgqT+P15Lq3PEcSA== -----END PRIVATE KEY----- ================================================ FILE: providertests/testdata/oktaenc_sp_signing_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAKHPtM2MqZxXMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY DzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWw8EP/dSG0 yy7cL2sQvcRqiTrsVCWzQ5SGgZNGbFJXq36pshZ21H7gFPI/K2n6m4I3vNMCQtRJ JwfjyrPbuXpVaTMcmg8J3PGUVzaab+dZ28EQ7V9HEnzcVbEgu87xY/SB6SCiJbdI COZWlsgLUkgZS9CFkw5q6i29nL6nSZw/MmNr1hjJWvVvs1KwnGjB2aF6wYBQKKsY GxfZTJqKKBGXwIB5qnaWpVQgP6+H/84YCHLUEKk1hgh9AnR1xNVE6e64clcAE+O/ HWDS6QW658TJsw18TapzVbiUGou4TlxJZqEuJv3BfPX3EMsnp0uRurMtwgyzI/ZP CCHxSMJs4xECAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB AQBRwSaE1AnhZU/GzMngLSG6WsOp1NksoEHZsJoIKxUJWdMj9s0Pb/QSGg/W/2UU CREt6xBd9rh3jv17AwH6+IAvq/zQn36UtOE0/0v85Tp/I6t8v96cTjkEgDHBWSqw qfPvnrokKUpDRv1cxCL0qh4oW7selKkI0VpZOgpKm87oi6POQJ/KOMfcewlH+DXt zN3Es8Xp8BAfRRIEk7i3PqZSrhWUguQgCOAOvkb0tGuPDsFLLJJBML7B7aYrS1Kw EyuowZiDCDSk49KpGOmKYv2ocIG65gr7+am/l2NN+6cxuCf/o9H8UL8qm0LUJdgh 5sVa0DJzIcuOjWsp2QxqTjr/ -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/oktaenc_sp_signing_key.pem ================================================ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1sPBD/3UhtMsu 3C9rEL3Eaok67FQls0OUhoGTRmxSV6t+qbIWdtR+4BTyPytp+puCN7zTAkLUSScH 48qz27l6VWkzHJoPCdzxlFc2mm/nWdvBEO1fRxJ83FWxILvO8WP0gekgoiW3SAjm VpbIC1JIGUvQhZMOauotvZy+p0mcPzJja9YYyVr1b7NSsJxowdmhesGAUCirGBsX 2UyaiigRl8CAeap2lqVUID+vh//OGAhy1BCpNYYIfQJ0dcTVROnuuHJXABPjvx1g 0ukFuufEybMNfE2qc1W4lBqLuE5cSWahLib9wXz19xDLJ6dLkbqzLcIMsyP2Twgh 8UjCbOMRAgMBAAECggEAA/py2FpQm0NVK5qAo0yDizh19sdT9FtfgHINhkcFeiwX Qje/AYTqlDid3MwLTE/Dde94f/pNsk5Dv4V6W8PU5NvX6NmYefnST6va2QQ6rQsn p6uSNwLcYcWFTtKTqi1Y7fKmQyOpxcCbCUgeFxVAYPnE0jUKikdHB2dedkI9d2FV ZMSBAlNp5NQQTTojjdvfa3yxFqB/5Gh+tZZnnXm0BmtSHjWvXnpi62Nz8LHtKwtO qzS6650vhbC8GyuILeBkEa0Zvw2aUhRI0grCjWsbXJT66FrV+pIElOAQvyHP6hlX zC43ODdXSiFogVkF07umlqmopv4gDLgst8fjY61VfQKBgQDpVytmVrNXI9A2uDv/ 0RhCZpmBMgz8o3OQY0KRtZqupeVUGCTKk0zNqxsvUg31fa+DLYu+fYUDRVy58ST7 vTiXjKYllWY5LAacsqtA/1E4BghOuYfU12tGJcOUM1TZNkQ/s2to/fDL0HTjYX6T STqxoyg9zCnSYpF+u7gj91QuywKBgQDHVcUGiL69Tws3J6riKvFBtqrqcJaRu5OS t/U+kqM1m5/GOaBpZyropeusQgb/nZHIE/lEur7CHYcTi8PKF2lGxnqWOn31LVrc rM11r2pweDpCBBQqytNoE9vUzgfueXbPPgl+l1pTDA02u6EE45IHC1bPPbjDx29/ xhfAykD+EwKBgQCrVA3Rvqc/vFQNWYj0dJrTZnIfophWh806nycpxaYlxjl0XaXl 9/HUsWXsgNsu/XH5Z1/MJm2b0TocbSsyi+UZoXP89I1yPRk9xRJpTw5bjFJdO2y4 otNpViEcl/Qc6PODskGTfaFohU7OBa/ihUpLU/kgJuAuUaFy5HJ4NgnhsQKBgQCm q/K4SfKiu8r27TYXMizT83bp3AYqCJuWHDb1gQryshNgXaLhPyBDsyhhuju70/an Qvw0GamTCbl+AGlPO1ANm7u4jWPwc2H8DoklE+196SldNaffOASYi7JON4+uOOW8 13R84vTlZ7hMwYobWmUperO1STiKiuGSBwKpcvPw/QKBgBgqByvETHwewxnYoIsp yn3Fz1KM7MMnRil2sXVTdpS6lpF+iGs7iXc8sBnWKxFFQWnvvx6VvhXw6lCCnEQX 3LH177jH+s0jVQgD+YZLnYDBF347tU7W/dPz5Df7hgmuQhOU/UV9ihm4udutRFbR 4fd3j6wIcv2MZ0iDUVJ0UFYr -----END PRIVATE KEY----- ================================================ FILE: providertests/testdata/onelogin/idp.signing.cert ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAMQeWnDJVaTyMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY DzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOwVVXE67dWF WQGnFyWLQyaAqco+hargHNq5DWTiQM5EG1GELt5QqW7XQJwgwfIHic7zMBDU13F6 IUrh310gNm0Nygg7DWEREBNZvTdjg999pbRyt5IgeihKh5NEwpH9TGXnbow8QjI7 9AqsB9Irn0fEuLKb1KOF0EMt5XqJnW2oqJrvTdYeGoi7Ckpg9J986XMqLMp48Gd9 /ATo83GHsO7w+NKs0mAxB/Tffh6hrbILtMVMENQB6lv3dIrdmQqPGJ120xO6dmHq LTj+tNSjhkznSKXBDHT/7vGt3Ra38P6mGCKrDAloAz2XdXJcdiY57PxeQvc0zwRt JtOxphA5WHMCAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB AQAQ2P9aUBaM1kC0XJF86A4aYkqRVuyspJT6+DOYA/pcifZ3zhpXPe2+TY2gKsGk qfYma7ch6dq4zVErFMwkn8qM7PD1knK/P8SZuUPC3LTH3ETH+beb1lM9NICOItkh u7RIwwwwhAZKP52/Ww0F59PCv1SPZJ1NkF8XWak4Df8l4un4xsX1jcFkFlUxCDh6 simdFOK3ibMHUZxyGbvK/MwJfKQmMcjo/fIaukv1/2tKXnilSDhQS1161yiX7ooF dD+y55KaGF5O50K/9DW30E9ZgrSDltD/6aGt17VrX5wnkoUb68CqYfUrRjhpbPYI LGu96alI6+eLeIwZKpKSbMj4 -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/onelogin/olgn09_response_01.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQxZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVXWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxOaFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFwODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNLWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUwSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_03.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDk4M2Y0MGJlLTYyZWEtY2UxZi04NWU4LTI5ZTExYjg2MWE3MyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDk4M2Y0MGJlLTYyZWEtY2UxZi04NWU4LTI5ZTExYjg2MWE3MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+RnBLNHZMamNwMG8wZ1hlRGRXRDV4WlgrbERBPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5tZWdVZ2dkVzlZTmNST3FQb0MwOEh1Q3RVZWZMaFdWS1djcHIxQjNrb1NkZzNJNStueFhiWks1QzUxdnpWNXN6N0Y2alRHL0lsYnNReGl1NGt0bWErYUZiVnB6YVRmV0VOZEdzdVRaMmFCL1kzMm03ekU0KzVUajVKenEvbVNVVUxQYXdkc09uOHc3V3NIdGU5OUgzWE56aGQvVVA1dnVpUUpnSW13UGxRaTJqSlRpNE1XVytON0NQRVZvb3M1YW1OUVRUdWFyN1NRVkdOaTFhQWNvUThTVzJWRFQ1MnpSM3ZxMnVtUVo2dUhCYThrK0x4YWNaeW9BWVVyRXlYc0JrZFBGVEp6RVVER21jMFp5Qk9TaE1pMC9EZnBZazZzbHNrMWQwUE5RMHNCVU5iZ3U4aDM5Y3ZMblpJWWV3dTFOb3F2RVgyQ0pId2JmSDg5S1FaeEJLTGc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_04.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZTNjMWQwMzQtNjI3NC01ZDAzLTgyMzAtMjdlZTMxOGU1MjNiIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGUzYzFkMDM0LTYyNzQtNWQwMy04MjMwLTI3ZWUzMThlNTIzYiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UktxRkp5cWRZcWRETUFjUEtmUW5SMmNGM3R3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT42RUpTN1Z0VDljNXdpSG1xNmlUMnJMYjB4aWY0NmpLSEJNaFdKdXNFZi84c0I2QTBHRFkvbmZyTnpkWlZ4akQ0Tm9vSTFTVzZuZ2dYVDdxVGZmV3pXVnh0Zm5WcC9qSXVGVkFybG9sMDdMc1l2bEFCT0w2MFY4YzMySXZ6Vmk5ZEJiMzlJeHdtV0l6SU5BOXhnMjl2TGlWNzc4MlNtWFpVbk8yQ3AyTGRZbHFLQXdFeS9XbEhDRjFFWVZNekpqeE9ySHo1NWhPV3hTQWswWTdYZUtSWGdvK1VMVHZxSnd2dmQ5d0gyWVZlOFk3WUFYRDlCaE9adU5CTkxNcG8rc09FbExjT25IYTgvZmdEQzJuT3h4dFU4RFVSSGpqLzRKR2pDU1JCU2UrTmg1VUdWQldpTnZoaURtNU9oRnRHY2J6NlRzN0IzSFp6N0lBVGNYNEQxOTZnbFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+aHYwR2RrOXlWUVR1YWxoNGNsZW41VWZkQU0wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PQ0hVV2FWbmUxVTBQWEFpZEljbzI3SDVzYVpmbGYyamdiMnh2QXc0V1VHWmlFUmt0UGJJdWRnRWhreU42Ny9LMlUya1A0ekFCNkZhZjhLbmtWY2s2WHBCSUhEMkpzN1Rsa244RGxjN2dLQXNiTmh2SFNWeklQbkxUelFHK0hjbFhmQTJCMHZwWk5YM3lpK1dZOUtJc1dnTXZzSXRUalRFRW55SUZqMmRaQXRRclhBclFMc2d0Tmtnb0ZpcHhpeDZxM1l0NHl5UmU3MVhXTXNldW81ZUV0VFhTOCtFS3FPUW50V0xoYzhudDJWemFtK1Z1RUVzT0YrSzl5K1FnbzBDelFHNU9udnpZMVN3UG5HclRyaHAyL09TVDJJbkV5Sk9MeEpCMWY1STNDYkYrWXlrdjJKeXNjL0ppMHlGWjJZSnlNYS9KdEN4U2t5Y01EY2RVbThNYXc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_05.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiLz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPlUraXV5SHd1R2RSMis3UDhwQWF6R2wwUldyY2VZMVJyVkUxbzFNclVZMkZ1ZVZKN1NyM1VaSi9sQkhGazI5eHU2M1VXSzFOYUFCTlV4Njg1ZFFrbzdja3ExWjJSZHZpcHREcWkyVC9meXcrVG5leTJIVHVNN0lMZk5mWlAxUEhiWkJuVXBSb3J5UXBLSEt3Q1EwRkVxKyt1QUc1RGhmVm5NMjBuQjI1MU8wUnlFd3oxTncvZ0dCUnlERDA4a2h6RTV2b21LMlVhQXZ1RnUrNWEwSUgzWU0yWTJ5ZmNUK0x4eUlHYzFnZG1KaGdVdVlFYlhnOFJhelU2R3pZbHJxcEl1TTBESXlTdUdORDByMG85M0ZMNEMzaUR4RTRjcmI5Y1p4ZC9HSjhyZE9sRkRqV2dyaVN4KzhNN3NVNlc2MUhyUUV1ZmF2R2M2RFY2OGZIZC9lRUgzUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPjcyTmUxNkN2UFpCOEhnekp3dEw3dDYrVlpUcGpEcHRNWU5ZbHB0WjR4elFJbktEUmxEUkpxN25tSlN1YVNqa3BpUFFEeHVlaVlYWGxLUFdNbTE2Z2xpYm44bjlnSnNiYmdIUDI1ZnFYdXpZelZkWWhXWmdLc3JhZjZYM2I1MURWRjQxckNIelVsT1I2WnpvNmJsblZFWW1aOUdsQzUyWVo1bGNlVkJTeGM4QnNGWFY5Nit5aU5XWnFkalVUY0wzQ0NIUjBxNVZMY3Y2Sk5HVFh3T0k0RytTblZaMWdYZ3cxWUJRUmE1U0VFOWhqQ0tXeGNsUjB2bWdPNmE4L3FHZHo2UGlpMHZZQkU3QnpNSXNkWTA1bTFDdWdZckV1STFsQ1c1QUpVMm9MdURGYks4UG8wVEdNbHE3bStSWGZqdHpvaEdMRDlHTFdwY1kvdng2MHE4T0M1ZW9pK2hTQ3Q5VFMrU0dEa0FnRGl3WDZYZFJxZHg4RUhzZDVhVlZBZ2F0eHpZZmZKRERYUkk4NHV5NHR3VERxYmhhLzBCekVGbjAvVTM3SldJbXdWZVIyL244bzNpaXVqTjhYQ0pGeHpDSlQzQU83UmJhQkJSU0lXZlE4YU1hNmFHd0dSTDJYS25mRk9kaFFuM2Rmd011S1RDMEhEdUgvZTdZVmNCYmhDOGhOZ0UrUnJHZDlSSzVmUE1LRFphNjZKbEQ1Uy9ZdEFxTGpuTElHUlZWUEtPQlhDMnViSnFRUEc5RnlPMUdEc2RYYlBxOURZRzV0NXR3NjgwcW42cnZlTTUva3dIM3JhdmsvUWs2MmU1MVY2WktkQmdKY0ZEQk1Uam83UExmNTR6cFZ2RlU4eXUxekI0VmcrWms3T2NWUi9sNTBJTjJFZzZUOStrNW9WQjhkOFhpSUN0ak10RXpDZVAxRTVIK2FYSmRTNDlKdXFkRzFtRmxCOHlvOUZXUENOY2dHMnlIL1pXTUkyNG9tbm91MmNiQ0ltNnRQUnIxZG5wdnZkL21zL3ZRN2JJekRxRllZQXhFZDVIbWw4RzY4cU0rdVl3cnpOK1gxWkVzS0V1V2lLNmFoeG8rRDRRaUJua1RuNWNJcDdFK05CbUtPb0FOT0sreDlZTnFIaWRieDd4ODVMK3prL0NRbURyOVlMTUJXUlJTWEhOM0tmYzc5VTJGWlAya3dUOTZnSXAyamovSXRXc3ZmT1VRMSs2bjVmbzNjb3F3ZjZ4WHFpNWJHcEx0OXcvNnRybkR4dkliTnJSd1ZJRGgvVit2ZW8vTGI2RTBrTTh4aHdhdDhEK3RMN1JNajNIZUgvNmp5bHY5MUZBcVEzTXJDMEc3aXlTMXpqRE45SEp2TEw4SE9FS2V2amxabm1LVHJEQmZ5WmREUXZ5UExLN2JRanM0M1RRQVVyZjQwODdYWkRSL0VQS3ZqUDBFMUlKQ1o3UU1vdDUvZG1GU3lvUjhWc0p2cGxuTml2QVBoeFhDVUd2STNYV1Q1TTVNcUtXTWVtNHpEZE96WituNGNSMnRMM2tlalQvR1ZFSURoY3pwdDQzcERmQUlqUFNiZXRLMnlzN2VmMHY0bjQyYldyQjlGZEVkMVdNeWc2V0MwVGpPVWQyckI3di92MldGeWNJakRUS1NhY2NYcUtIcTFGL3VLWVg0NVpOWXpTdjJ6dFBjWlprV1M3b2tuZmFkM1p0RDZBenhweDJJTTR3bDMrY0gvdnMvbXJzRVRXT0tMTzdPdlF1aVdEbGhrdjlhK3RycE42WURpRno5cHIwNDFXOUhkdy9ScHUyNkl3UEE4ZG1hRE5BamdrRU9GM3JoMTZQU3JidGFDTThmeG5EaXlJT29HQStUbW5PSjdIWlBuV29DdnpwcEhpK1lRN3Bwamg2QWVkRk9hNlZiU1FCQkppNmFIcFF1WUZvR1N6c1BaUnk1bFJPcEFUK0hkRm1Qd216TVU3OFpiNkRFR1c0TEdRdS9kVHpaa1Y1OUE0bm9RcktTcHdhQWRJeTV6Nmc1VGRUWUJIT3VDclhXYWR0amRtTUFOOU1seDA4NzNJZE84SXY3WU1hNk5ZL1NpM29yRnh1c200ZHhuQWZXMGg2eVZQd3pIRkRPU2NnclJxR2dpUnEvMW4wc0NpTjNlTmU1OHJYbjAxRjFVYm5jdTNTRTUvclV6aFRRRTl0Kys2K3dHREtlcGp4QkhNS05kNjJ2YXRlVkZ5N3BqMklUejM2U0pvQlRzQUJtbXZKZ3JUNmd6bkNLSjZqSmlkSmZyWitPSU52YkpsaXhzdUJzWGZPUXVTMEc0dkFBS1NDWllUSy9TQ0trTnNNNFViTVpnZkt1b3ZuRUNZazIyMG1hUzBKczd5R1phZjVndkJBRGxCODhmWFRURTBGZWQyd0pjbGxLYURVVGhBdm9tSG1FNHZXTENkRFFUcDAwbTdIR0pieWxneUFZWGtITC90dlhDcFlpT1V2ZWtzcmNubWQyNjFuR0FacXkrUWJ6TVU4eHVlMy80Si9nUXpmamo0T00xaE9JSnMrSEVLUjRxTk51YUoyb2I2NlhmZUhkV291ZkxaTUVObndpOWJ4bkR1U0lYZENnc0NHS3pYM0tnNHNYMm83QVlWeU5sNFZVL2VJTXBKR0VqL1R2R0ZxckMrMEt6MGQ5bEF4c00veFpXeTFESElzYVJrVUowbnNZS0RTQVNNalREaldhVlVMc0E0RWlTUktyS04yK0ZUZXduSXJEQjFONzJZOWEwYTJUSXNRbFY4cmZnNDhpMFNFb05SNVJ2K1JObFJWUUxHOXVZd2h4QjkrM1BsKy9YaDdDZ085Y0JrWE13TStXblhjZlAwYTYxMENZV3ZabElZV1lCY29LTE95OWFaaGVVOFNKaWZpSk9uRmREQWNkVEFWeGplSk5oSVc5Y2lVU0RJdTVwV1grSlFaMkpTQ3ZRdkFWV3lNdGxqNVoremhMRlNLUk9hQUg1R0dIK2IrZ2dIUUhmVzFJaGYxa1gzSEFPZFJKNUw4QldXVGxiems0TWcvN2QwMHVER3c4dDdtdnZrWmFtSVE3SzFPNE9yQ0pQZnNVR1hrN0tXZHF3N1ViYkhUQXZzb0wvdlJFWUVMNG02eDBRaXBQWUlPZU5UTTBnZmYwb0JsajhhRm1UTG0yaEIvVjRicWF4U2hlSWg4Q1IvZmZrNDB1dXR1RzRST05LT1prUlpKQko3MUpWNTEzM2VPMkluUHhqMHNIVHFQRjhmOXJXTEFtb283bTFUeWFUN0FibnRqUlNJMWhHSWh5VjFmSThwU1pIWDVhLzAxcVRFczNPQSt2ZlE3VUI4VkV4dkxOVXExVXB0UDJrRVVzQ2FjNFJqY1AwTHdEZDU4eE1XSUhVVXkrVURVTnhvUytJNm5RSUovZnVuckxTMnM5WXhRT1g4NGpZNTNzSlFUQTM0aUF3MzY3YzBZcjdXeENqZ0FiNUt4ZW1mTGZSQjhvRXhLQ1JnRm9xRXMzU1VKaThJeENLc2d5djFQcFgrZ3JxdVNEN1RhZ0Q3S3hWb253Qm8zM21jSXdIWk01a0kra0pmTEd6OVlPaFFLanl5cUhrZkFvVU9rUmRsN1NGSWhUR3MwTitOUmEzWFFQTjVWQzVBMG5QTXpFUHFkYnhzeU1aUkhMcGFIS24xcklacDFGanJhOUZBcTQ0Vkp6ajRpZVdtVGplSGNPa2MrR1cxVEVNQ3JzM2lXNHYyWU95aHFtUWt4L2QwQTFEbnFRS3pZV1gvZDNYNG4xTDc4Vmc1cWgydTYzVzRGMGo0cHVxWWpNalJ6R2YyVUZ6VnF6b1dvSlNiOWhTSno4K1VZY2N6eloweHFwUUw3bTlMZVNYaUxwMThkdGEwYWxsVlh5SFkwMjQ3ZnNMWGJPRGk2MG9IUitQZmhKakJaRXR6TXBFRTRuZXY0TEE1Nm9MazdxcU5ZQStwTnVlZ0lFK2labUY5QWNCRlVTYnhqVzd4cUVJY1VKTk16a3YwUUkyZWFqYVNKbHNCTTJrYlpuUHZSN3VRL2dXYmRiRUZxMVVyLzJrM2xTcjRDZExQM0szeXZtSjJtYlptejRDZjNaTVRNekU0TkhFTUdnL3VEajdKc2ttRUhsNzI2K1hyUXdWVFcyLzNha3RSRGxwL2Myb0gyamJkUE5IUUJaUjJMMGN3T29WVEIxMFl5czB2OUdIYVpCTitDOWxFNnlpRzlJdjFPV3VGQUIwWWM1OGJYaFN1cTgxWmVxejFTN2RLTTBCaWR0SGE0dk05VURxK2dBQ1huY05NdCs0MFBBNCswdDNLL1E2N3dtd2ZJZWRyclljVXpjYmREWGFUTTRpY1FNK3RPSGZQdnBRNW9hK2NPOVpxTWErV2tFK3F1aXp2RTMvUWMrUUMyZ3N2VmpXZEp3c1E2QzNISUlndHN0VC9qRS9lUmxkUEw2Si8zRko5N2tpQkQ1NDRSTFdnM3Z5dXlSMTBEWjRkU0dOUmE3aXAyOVhVVTQ5NzgrNitiSWlKUEdqdFhDSG5jYTUzNjZLTUkxMDJ0bDdrNnFpdEFLOC85UGUxb2N3UVhhTUpyb0pQdTQyQUhabWdmZXhnbXJrNEVPSDVZVmQ5a09CajVBK2JoeHgvQW81aEsrbkZUdzlmaEoxU3NyMlpkZ1U1cU9ZcDYvSEJnSnMzSm5McWZZQ3RPaFYra0xITEttbzVxUWQ2bjFMS01xbFlzblpCeVBvMDh1dVBxT20zVHRUc3NoOUJUb2xFeVNFRkZLOHYrRHNhK0wzOXlqMUNPNUVvSWQrb0RxSEJWbi9wOEV4M2pQbWI0QWRjaElYcjVBN1BtMnJoV0xXQlhDbGtLWDMvaWsrOXhCdmtuMU8yMC9zN1pwczNJTUhvN3NoTmJzMHNCcUMwbzJFY1IrdXlPS3c2RVVkWTd3VHkyS1NHMDFrWThveHlzSlp4WUMzemxQbXBvVDluTTlvWVNORFB2dGVLK1F0ajdrVWgyVEdGd3c0Mnl1VzcvMjlHL0t6UG02OHc4eFhPREZTWU4waVNsNjc0NmJKZHF1cTc1OEdEVzErTUpBQTBYZEk0bEVoVGRKdStIVlY0M1owa1A3VmNOalVGN3JqOUU2L1lZRUpPcDR3ZDB5S2Ezb3VUV3ltNVVqd3NnbUNIS3Y0VFF4azAxc1pHWmtnNFRVUS9Zc1FIS3JtNnQ0emZPM2ZObTFrcVowUzZqZFJvU1AwbVhRRjVzQ3l0cHVpWlJKdkJUaWY5UUZiQVRxR0xITHdNaDdYTE1Bdjc3UzJVYUd3Y2RieXgzdlpXU2FIbG1KMUxmVDNlWk1UY2NMNUppdm5obWlqU2JnL1ZOSkIrb0hEVTg3cThtbjNUZno5bFFiYWExakdXNUZabFU1NVkxcUZpM3NPbk1NRTRBb2lUckJ1RzBIWjk2NFNHazBMRkJaTllKb2YvTHBPbk9TcGsrU0xCbG41NWwxcEliUW5FQ2NpcVlRbUo1NnkvR0R3bDZhZXNrRzZrbWp3cTE4WGZqT0t5WXpteTFDeGt4RzdzcVphZXBtLzE4cCtBT3I4RjRBamg3NHd5MGNNMm5BNEcxclRIajM1aWZUbGtIczhueTFtSzFrWkJKR1d2RzhaMFVhU1czNmRrdzRPMHhxdEZMZThaaC80emJhTWlkMW11b3Y2eVZ6c2Q2aS9zWERkclRRVlBzaEM4VFd2WERqdHpCZVZHcjlkQzhzUjZRcWlrSVYrS21CRmJqU1VHSnZHTEIzb3FCbHY2VWlrOUI2NjMrd05MeEt2N2RHMmZBL0VQMFVrR2U2QjM3YzJGdTBXYk1QSzNpWGIxM0dmMWorYlFGWVBMTDRGMTQ3Z2hQaitCRTZVWkpSYTdrWHc5THVtenF3aXFiMGwrU3pmNFBEOEdhK29sVkUxczJNMTg2SzZNQlllQ2JxbnZKMTZ5RW1tZ29ITHhXSG5sV1ZlOXZEdUcrQjJpb2Y2WklJaEVJM0ZpM1VGZER1bmlaVFMycWZHSThjeEt0dENHTjFpTDRSZGp0bnlJM1Z1b01OSWZHYnlTM0pKM0tJU2RpeWhNek13d1U0QnFYdGxzaTJrS2pEUkxpRmtlbkxYVnNLblo1RnZmMzdueU9Va0Y3QlJ2WW92alZlRWFsRVhDQ0I4K0Ira3dzMHFxQWIxWnN6YzVaZ093WEFUeUNOVVpRMW1QbmtJeHBlYzFFOFBXMEF5SGRQYXBDSWJhTFFxc0YveC8yQThnc2I4cUtqc1ZRSDRYU2lWWERPS2luTjd6dUxoZlV4TzlRcE1JNWhYWWdKdkI3dHhyVWpFVnIyY2gwaUJBOHNTeDFuRVdJbjl4N3RZMkd1clF0bmpPVGJrdCtCLzNMaEJhUlRiaFZiTHYxUUpKcFh5cTFWOHpyNzJGYUtETGYvWis0OFllSEFpcmFmNm5DNGFORjZTV2tNckQ0Z0ptR0RZQW1LV3Mrd2phQ3BxY0x5MnRqT3hidE1KNjU0RmZNdStGb0FiQ1U2di9WZ2g1M3VuMjN2L24yeVk5NGJMQ3g0NHg1Q1c1VUc1d1VHdFB2enNtMmFFcWRLamVTZjRORVBXV0ZWZG9nT3FYOGdwTjVjOWZ5NXVsc1dKT1VsSk1DcUZ5YURiWlRuOEhibU1aQlo5amxLRVBRc2YrVDkzb2h1LzZHamNpbFdHRmJRYnpncC9MVEl3YnMrRmpRK1pjVGNzZmgyQjFTMFVGMjRuaHBWbXg2b3FJa0F4TFUxSHpDUTRta0FXV0lxdXFiL2E0cWErbHVYSGlnNkE1Y3JQeFZoTFN2UmtlaFh0Q0oybkM1M25wN3hpM3o5TXovVmRtS3BHenVHU0FsM0FSOG9aN0JYd2M1Q3JrV2xPckRBa0l0V3NNbFJtS0l0S3ZIZ2hsOVpQSEcyQ0ZpSmpTZ0ZCTTlZMlQxYzhha1hiUGVua05BdFhSZnh5UVY1dTR6WG5KWlQ1UFI1WWNTNVN5UnNqblZscDdaVGVhYWJBenFHWStuVWE1WTgzK1V1SlZHQm1VUUh1Y000djNRczFzMXdTVEFyeERzOE9md2N2bDJmeUorVTd1clhkQXkyOGdiQzdZRWpick5wMzlYQk8rL1VoaUZib1dWazZkNEJFcm9DVUhJZ1RTNGJ2eG1lbzhvQ2VTQzAyRUs3clNlalRvT1lGUkhIRzBlak9td1E3Y2JBb1VkTWNUbURpZ25WbFFXajkzRFA5S3ZGbnpvOExHdk1jMjJ2U1BIR2xYaTRrRUNpUkpPN1RJTnVzNXlROVIrRmFQQVE3MytwUXhIWjB5L2N2SmRDZmdsUmZzV0Z3MCtiTUdIeEtvVWZ2M0NEalJWRnpHTVNPVVJMVkxYRklpdi94eHNVUjRvNGRTUlpGZWJuUTNka3hDbmRMOGdRbFhDRWhHR3hONmhob00yTHZnYWxzbm0zVWFqV245c1VZOFlkTFEwcmp2TjI3eWQ0ZCtrOTk4Sm1uM2U2VStRUjVMenlDUDZKUTlXUFprYXo5Tlg4aTFtZS9ISklodUV2VHpDcVVPWmg5VndnU013OXVLV1RzeExiQlJaKzl1K1E4RVZXa0tPMkJpaVVzNWhwOUtIODBYZko2dUhKY29Pb3hIRDlzYWt6alROTWEwdlBjSk9ZeWZBRm5QVEVhTTc2UVF1SmloWHJjei92OFJHUkNkMmYrQUo3cldHY05SVlVMMHNMY25hQkZqby9TQlh6WUM0ZE80Vm44T3ZWUUFETzR6cjBHeWFoVjVHRXVEU2xzWGJmR1NTVXRwbU9UQVVyM0dCY1ZYNXNnVEFQQU1TTVZKNnNQTUpHbzVRNi9wYUFLNFppMW9ac3dhYXJ5eWlBaGticnNEcnJBMEptd1g2T2dWZnhDMW1NSnRMR3JzT0paRVlMcnRJN0R4OEZXUWJnQmVhTG9uN05qVk1scjgwNy9mc056ZDd2bkNBd3Y5L0MvK0VPbFBBQkc4akxmNmxxVHJRNncrc3ExNDRwMTV5TjM5NFZYZDVMeTRtNmc4NzhrNHNGSDhPZWtmRVFFMy8yV0NobDZLOUZSMzNwS2szamJaSXd0K1lpbWZaMFdNS0w4clplSml3RzFZcnBrejc1d25lbHcySDBndFV6OHJ3N0xLc1BKWm1QZkgwb0U3amROa0hPcVFuVS9ISk05VmIyN1p5NzZ0L3JvSmFHdFZiaXFaREM0V1g1SmlNZnZlTDhrb04rZnRudWlqWVYrZzdnQmxpZ2QzOFpMb1dDb2pRRm5DY3ZSOFRBVUpxTHR1TUpZVVZXWTdiNHR3TGNWRWR3VzByenhhU0xjTDJUU0pOMmpYZC83aW94Q0dtcW9OdjJRNjJPYWc1dU5vajQxZnlyd201aWdZL0hkd1gwUGQvNFdBMU14RjNDc090dVg3SEY3UXltVW83RC9ieXRTcWszOVZFdHh0QmZQdEVrd2diNUV1Q2xQckxjZHVxTjFEYkwrb1pGRnR1ZVhpTWx5NlR6bGg3eUFVSmNrNGNUSFNEWjdTakNwUi9DNzhPWkpjUzhMYVgwdjZ4d3NlRENxeVc4TXVUZWt4NDViWUxhT0lTbEVUWnRSeG4va1gxZEZqblZINWUrL2lBNUpJUk84NkpxeVpzQ2JWck9pWHZZbWhFTm8zVzFYQjRKd3lzOW95ejZPeVpZa1N3UXo5dENmTlphblRNZld0UmhVR2xESnM3alRoTDhGSkZGVHd1UW1qbS9Gd2RTbEZWMldxUHlDMHVtNHBHbnp4UkhQZ3p6NHBtYWZFRU1PZkU5NCswODlWZFF2SUhZajJieWt1K3gvZXBTd1ducHJSSjZ2ZW8ra2ZIbXBzS1hFRE8xYVFsS2RvRHVrVG9QT1FnTFFPUjQrNGNQblJ6WFlRSUt5cHQwakRBckp4WUxScFVybGI4VW1uYW1WRjBLbzJJSEw4UFNCNmt4RHNXUWVHV08xVWFTM3lPbEpmbUNUQXNaM0NMaUF2QjA3Rm1rWlRmQ05TVWRsZDV3LzR1ZCtKaVpLUFdyaWVpemNWSytUMnoxVSs5aytWUkl4bFRna1JFUHBsZ1FQeVJtQmpHNlR4b2JLTGRNT1NHaFBZQnRTWXlVYkkrTGJCd2lIWlptTnFnVHR2MTZKS0JKczV1R05FUUwxUjNqZGlNQ0hhZjArU0xldDgwWUpHU1h1OWQ0d08rb3NIbzJCaG54SlVNS1BieHowZ1Vqa3VrRTJLbFBBVVdpcmJkYStiU3hHTktqQzF6YmEvbFNhOVhLbW51VWI3bVFwTnBXU1QxS25jRnRlVkNUZ3B1V3dRaE05elUydHovSE1nbXNISWd4YkJvYmJ6TzFnVDlzdEY0eW9jbTZQemU2TXFsUC9TUE1BOGEzR3pyNndEbERkWXlwV2pHVWZDcDk3VFRUSU5kWGtpL0RrRFhkcFZjbnRzT1FBUS9HUW91Mjh0NFpFS0M0eUVmNnlzc0kxcE15RW5UWXdZM21EZ2xWbE1hYVJjd1BiNGVKd2tQVUhwb2pHWitzTlQzVUZVU204bXJQZVNpSEFYTUhzQll0cnJHSmpvWnYyakdjQW5Nbk5XVFBLamxxdklJcHo3UzF5dGY5ODJuaFdrc25LaEcwWW1NYWZhaUxCMGxXc1ZhNWhyeUJoQWcxRDlLQjFCeVF6bUgwWXNIam5NbVZqM0JyMm15T3RLZDIrRkpaS2pEOUtscGgxaERRTkljcE5ENnMvenZreXBDcTNTeE5CTkVsV1g1QytFUjh6TkNIMjloUTRyQnU2U09IYUlYRGpFY2EvOE5JZHJsSTRlVy8xUjduZHlTUkoydklldUZFVHg3Tnc8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_06.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_07.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4NmM4OGU2NmUtM2MwMC1lNDc3LTZhYWMtNWQ1MDEyZjk1ZTZhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDZjODhlNjZlLTNjMDAtZTQ3Ny02YWFjLTVkNTAxMmY5NWU2YSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+cVFHemJXcUNZNEdoZGdUMzBpTmlYRHlJZm9jPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT4zMmN2VzQrN0VwdXZJYVpCaG1HcjRYVGRxU0gzcXBNWWRNdFlqQk01U3dhT0QxdUw2a1NtUEFweG1SNWIyb3JkblZ2NjV5eFFybTdENnUwdUl2RFYvVUJEaDcrakVuVkowR1lkdXZsYlNMSXpjTkZybEI3QVpPT2JqMUJvZWZJeEt0dHFkcUxHckgwKzZYMnNhaU5CVnR0VUpKb29xNnVpZ05mWmpUbkY2TGJuejJReHlBeTNKeEZvTnZHQ25meGFmU25TdWdQYmhvb2tVSElvYk12UGh2Ym5ac0VVL3lEcUw0elYrREFkcm0xaHc0U28vVzcrVGpWdGNJOXFYc0x6WjJRcWsvdi8wOHdUR1AveEZnWWw5SlBmN0R4eUhBVDR0ZjNEQTFoSFhBNkVaRHdOSkdkU3FWcmJFVEwyMGF4WEk4ak1WaGVRNU54Y1dFYzcrVjFvYnc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkg0WUJITXBMdzBYZkZJdFVHSmhWdW93QWJmZlh1djhsZ1N3N1ZjbkhuWk5OWUF3U0M0dFU5Mndpd293c2E4dlRTWTZwWkxjK1hzRm1uY3NyS0ZQOW9helBKYnI4cEhqQmZTa3RJaFVkeEJtNkVTaWkzSUNub1YrQlp2aW9lbTkwOVdNRVlUb29HaXdBOEhqYVlFRDhqdTBlTzVrQ01QNE5veUROMXZWcmhTaXRWOHo1RHZpaXk3RWpPY1RIb3E4b0VQUUNGNHpRMVBldW9acWxQN0VDYlJQWWh1NlBSN01rT3dyZHE1aUluWm96OFB5Mk14TnhTaU9mUHl2c2s4MHM4SVBuTUVWNFk1R2dhdVMwYnZtcVM1RHluRWI5VHJPazdYMmE3ajE1eDZ3QlRMdzl5ZTRPcEdaRThWYU94YXFQZWJGV2w2QVEzYUp4dWkzZnJwakgrUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPkl6aWpyQUpTdHJFS21YSjZacGFSL1pZWkdidG1ybmVSUERqMHRPZnpkUkR0Q3BObGMyaHp4b1dpYXBVUjRQaWQ1ZnBCUENYa2d3ZDZXb21mWCtzaWlZNEdDclFCcmJ0c1lDTm92UFVYOGJxY1libFpYaldsVklucnpTc205RXkvNStEMjl1Mit1ZGI5ZlFGOVVxKzVzY0FSTy9HSG12Vml0N29yMDliZlVrd0p4VWNvOEtiWTRPUklraEpWWTRPdzBvVWZ3MzNxRDFzSFJ5c0VpTmdBNWxMRmF6RW9HUkcxcDg0dnFJOTdVRUkrUW1tcnFJU3grU1BKQTQzZ1pqNzRYci8yeUlnWEtVemhoSFRLQlhMc1l4M2hhQkNLeVk3WXFSZVlCenU4WUFtbVBGeU1OV1k3YjkxcDRBQ0RrU2daTHRIZFZTeVhKZGx3OVpjd0wyei9sbmFLNWcxOU1NYm5zMXVzOVZEU2l2V0s0SVJyY0EvYVBCQkhZMUZucW1DbVNzZ2hWTkNRbngvZkRlK3FHdW1iL3R5NGpLMGN5MllIeXdCaFVWa1dHYUVaa3h4Nm9YOTlsbi9WMSs3NlY3M2tLNGJ4UjFXMS9nVXB0MjRWV3Q4MUVwU2YrNlVHa3pMK2ZNd0VqT1hlcEtSVlM4b0hGV3NlSDVxOGVXTFRDQ1NaWld2Y3Vvb2txSUhZc2l5ZmkzSmVZclZxQ1hqbm0vaGdEV0UwOFpuemUzY3FlTGs2L2RBeDB4ZkU3enpreGJnQm1neEozSUExTElkK0Ztb1ZWSlpZSTNWTm9GQUdKQ21lWG9DVDRITnJJMWlLRjMwbVo2ejBuVDQ5bmxUemJyWVozNFVkbzF5S1dWZ3VKdWtVZS9qcFVraWp6Mk0vRE9RSkhLeUw5czdJZUtJc3pwL3VrOGxwUzl3aTdCUFk4eFozZ2lPbHFZdW1YVUEyaDNFUHpRQmhFY3lHYWk1M282WjBFNG5lc2NlQVVCOWI1UkFHZmJkYkptUkR0c1VGUGpvVGZENVJxV1NIUkxIbVJMVEQ0OHpqeUo2SXF0Qjk3aGVHazZhblJ4RWtzUEpvNHN5a1FSMEZJQldhSlBlZG5GaDhlakRhd1QwRGdTT21uTVpJVldRSlNWRmNoWlk1NUdtQjNkSkZNcTRUL0hOdEhOSmErdmJzZk1jQlhYQmZBamtmaS90WEVCdS9VSmFhNnVodXJwd29obi95YjM5YjcxZWNVaGdMdHY2VE1lcWJZRjVVTUxIbi9VNXIrU2dHUi8waTYwYUhieUo0Q1BhTHhlZnJGOFByZHI4S05hZ1FmM05EaVY2d3RZVE1tM1FZWWhZME9VMzRxcldxaWFmeXVIc0tLb04yYnN4dForaitjeS9TY0VhcGtPWlNndVJ3bzlTdTJNU0hxWUJxVExhdmp3RktsUkt5d2ZPcklzbFBTZFBsU0pHV1B4RloyWng5TnhGUGRpaTJvamFBNE0rbU9jVTlTR2duMUZ5K2srUEdoMm9PTS83ZEwrVkhEUzUwRndXN3RZekZxWHdOUFNiRFNDZ2JGUWNmVVptSjFzbDVGN25qQWxjN1BCZ21JYmRiR3JiNU05TFF0eXFEYVRFdlpDRDA2cVNKQ3Z5K1BLWEdxaGl5UUdaVTVhNzJudnRPKzRhaGd1TS9CMTgzcVduejFOOVd5SG1BWUJrUlRYMGxKdVZrd2R5RDloOHRZMWkwbERKS1dYQmVxdTJQNkhPZTBJSFp3ZzJXKzBzcWxaYU9hbGhjYWMwZ09uUHN6YStHWmcrZzdrdDhHUmR2MEpnSTZ1MkFKRW43S1lDNVAzN1NGOEUyK1YrVUtCK0NTa1FqWmV6b0JFR0FDKzRPOXpCN1VvUHZCTU9ZTlVvaGNueDF4KzNuSitFcUYyZ1JlVnZPWFc1a0NIYml3WWVKZDFmam9uUjBkY3AxQkhadUlPYUdOdnJERTJCb3NXOFo5R2NKNDl1SGZoN01MYnY5VzZ4MEVvRVNKalVhYUtQaGxPV2tYRi9oU005cW9OZUpzOCt3Q1FpK1l4RFJJbEwwc0gzN0IyK0VMN1hLOWkwR0s2SGU0WE9pUDY3OElYRU1WNjc2d3dzL2xUSllOV3h2b3pObkVDS1ZDNTlPRjZTNHN3NkhFK0VMZnhGai9BcVpMZ05vbFVNOVRENzVGTWUzV2QvdWxEN2QwTUpjaWVIcXJRUytJVnRJb0d2TkpTUHFXQUFKM0c1dWJ2enhqNmx1UWxQS05iVG4vTzV3SUJLMGtKaHhHNEhjNFdYNWEvVERocjltK0M0SXhmTmRZem4yNHJjckMvdTJTcjR6dzBZbElQM3hsTXFDTldpdThLbDY5eHczeEJrS0xmQWNtUDQ3alFqbFp1bW5vVldIMHI3TmVmbTVkYTc2ZG5kTm1nc2svbjQ5K09OL3NjdFVLWUVEN2VXWHdQcnpUK3dIUktBVC8vZGtxK1k4RGVqZ04yek9SSU1Qb2NpMFNXMUJtUnZIOXpseE1Zdkg0N1N1UkhqNi93V2pEUWFrSkQ2TXdRbGU2NHV6OENhVDFJdS9OenBCN1c5VWVFUWdETVVFOEFCMWxRNVdHR2M1cEN6YVhNM0h0SDA4K3h2NEtzTGtDUWpDV0NJclNjMll2OFlBSVB1WUlQM0hxaGNVeVBESmVjVnF5bjNrUUtzbXZxTlBrYS9lWGJVbkdsVmxOOW92OStWWjA3OGtvSUQvUE81SkNhZE1VbFRpVnZUVERkamVabUFxMTdRWTVwTGx2dE9PaktJUHF5aHROSEliQTlKbXc1YUYvcTZqREdWSlZOL3FLSzg2Z2tpTysvNW9HSGJpQkpDK2lSQUkzNUZvVjVXdExHTWVpSm9RbVJsUkRaZERSNWVDcVNtc3hZdWlXVW43RC9BdWFSN0U4elBDMEZ3RmRzQ1k4SzZNNlZsN01KcTFJK094YTdnZHRLS09IekV3ZXdVcDQ5WTNvM0RlT0ZVRjAwZy9rem9xV3gzVHB0MWZNL3hFU25RN3RZcCsrR2Y1UkNobFRQYkVZMWhNSCtiREZ5UkhHazltbGN1NXllMTRldi9aTkRoSUowZ0wxV3daQittN0xmMktBek1VY1BVU3ZzK1NyeEkvVVdwSnEvSWs1bzlpVWRlcjZET2FEd2FLLzhYREcxZWtNSXlZcXpXN3ppcHVFSmZzQWp1Ujl5ZFRhVjRGQVVUYy81dHR6TDBWd1FBUU9MQi9GNGRSNHhuSGJoOXE3K0ZFREN3K0Rjc3hvZ3BjTi9FL1FnMll0UDNPbnNZTXorczZkYmhjMys0bGlRWFBiTU82R043ait6SDczdUhNMHZTWWswL3lSV051Q2dxMVBxTVhUblN6Q0pnNldLMFhnelpHN29ieW5ycjh5ZStINXN3T1pVYnQzQ0FzaG02aXVsQk9FbXRSbkdVam4wR2o5UGxVRHBoVnd5RFZFaThTS1hKK29oaEdVdW1CQWJUR2JLMTQzbG0yU0xGMXBFbFVOMEZFcjBucU9GRzhiRDdIZlRPOHU3bitNSC9aSEFNMlpBdkk2dGJCbGJOV2NOWm5oUUcrWmFTTXVicWJNRWdBOEtFdHNWQ2pUaXluS0xWSXJBS1YzY3J4VHpJcFJQTjhTdXNpSGJUWFZCNHo2dUQycnowVTZEUjRiSGxsRzlxZzRlUnBlNjNiMXQxZnE0UWdtaUNQVkE1YTVKTzhlSGdoK3JOZ3cxL2tVTjAzWkVUeXJVVFF0N0tOc2E2TGplRno2ZUpUUEppT284ZlZ4ZFlNNzJ0cTNvRWpxRWE3Z09jRFhMeGlGWlYxYXlhSHI4VGlJQ0g3WFZVYVg3bkdXWjYyUUM3VGpNRlp5bytEemZxSHZOa1BLY0xTUncrWktuY2lCaGQzdXRSMHZsOVJVWEdZYkNTVmpuV2JuUVZZN0RTMEZyS1hqd2t2T29lK0NYKzgvTmM0MkV5TnpNZmxsaW5YdU9JV2I0OGNtZ3lPT2xCMzhBRGs4bTlvNWJsYWJVbG1FRE4xNi9YblhkaytXcksxQmJNUzdqMUZhWU95NTVSakdCRlVTVHZHaUl1V2pFQ3FtdWkzYlpDWW0zRExMdGFFUEg2Uy8wWCtTRWcwaGt0T2E0ZzRNM1FJdURCdUg3dWxYTXh6c2gzY3U4dGJSWklSQjdtdEladjBVaGJORUJodUQwQU9kWjZnbEpzc0tQSUhpRlNpUHFvVjBMelpaVTZqZFQvQlZBTlA5SE5BVDFQWTU1SUR3OFRIcmtDdDRIcWc2WU8zSjVSa3FibjJvU2h2QkcvOTNwblQ5Vy80VWE4ZG9RUXdsanl2UDFpWUw3SzFDRndHR045dGRSK25UK0ZwWWV6QjdxZEU4ZS9RNDkvc0QrYklLVTNycVRWZmUzQTZwRVNlekZJbzBsaUg3eVU0Y3BFQjFNdGhubkRhRkdINE9FaDJvckNMam5KOEhXL1NMdEVBUThnWHE4cWpqVTBHdFdITFVFejRIQmZSOGVNWjJXb1NBdUx2WUNHWW5sRUtMZmhTVTNtdUtIR0ppeDdRRzJRNktGT3liTkxqL0hGcm95MnlhQUVHY3hXeG5lWUNqVkpDZktrVkhoajBEOVo4eGFWaGk5TW8wdFdBQzV1Y0Zrc25zRzQvYjNBRVlaSHRHSFg2SUFCdmFDbERTQm02MzhsQlRtRGFnYVlTMmpxOGQ5WTdEYWQ0OU5Yb1ZxQm5yaUszOWgvUHZrNXdDcW50U2M0WDBuQ2hzb3hKS2c4Yk41cm1SSGZYbUV2azNsang0WVhhOVZxVlNnZ2k1b3M4T3R3a2tkYWlBM1BDbVNUMVR3N3JOK0hCOUM0MzYyUTN1aUlYa0d6TmljRjdCRkM4NEVQN1lpdUJVWUswVkVmL3g2eDcxT3kyVzVjdXdxem9sSm9scDhVdXAyQldWYjZXSC9VcTZnd0ZQOCtWRWREKzRyeTlvRmhQMXo0Y2RnTy95eEd3MFl3dFhhUGU2ZkdsTVJSdTNYelVZbWI3cTU1RUUveGFvcFppNEd2TGdiV215L3JQVnVuZHhIeHVLZm0vejc0WjlCbnZsN0x1WTV5RnB0Syt2Wm1WY25hejFxUXZocTBxMklEREdRQ3IxOW9UdVNwZGo1TUdwM3hDL2FSdE9lbFA4THZzYlRnS3lRRHNzTVVrM2psL0dIV2svQWRzZ0lPSko3YmxjZzcwZnB2WU04ajhsL0hxS0txenp2Wlp3emJSNFFhbGt2b01iZ0ZjQVMrcXlzV3lYR05NQUxpOFpmcWZxK3pTbHpwOEhPMGsxNWlHRnhmZTYzdW9xUUxETEt0dUJrZlBDNndGZDJqekNYZThrNFBHczZSMDdtcmM3dUIxZWZuWlRsYkxyMGhIcDhuYkpyZHRuRUN3Mi9tQ0NsVDVQUys1Yzc5VjlZaGI5ZmpyMGlNeVF5c0p5WlZ4MW56R1JnQzdxaUxnbEVHWHF4cDFqMFowZU5YcEFlOUMrVTNiQVJ5Q0dYb25JekQ2cGFTNExhalNtcU1iWmxHbHhSRTRFd2EvTWlaWHFQb2V1ZEpkWWx6OUN6VmxRTzJvU1Z5Vy9YOGpNY2pmeVlXNXI0UG91akZMc2tNMnBFWUJaZDdtUHlyR2xseEd3S0hjUjhWUndaN09iWWRibzlCd1BqY3dtNWhHSitncWJuV2MwdXFPK1NDQUQvRzVRRmVrUHFZMDlXZHBNdEhJcC93cnlOY2syK202Q0pTeDlsYUdYTTc4dW9Cc29udjNuSHBXWWdrQVVzTzNSRHczN2pOZS8rYmsyYktsPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_08.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDhkODRiYWEtZDE4Yi0wMDY0LWZkZGUtNzRjZGU2ZjFkYjM5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA4ZDg0YmFhLWQxOGItMDA2NC1mZGRlLTc0Y2RlNmYxZGIzOSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UUpydVQvQmNYT1Rvcm1aS2xaWmVnMmRKVWtnPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5oYW9lVm93OUU5MjhpZkZTeE4rRVNDaStyamJwaUVFcUUwZ3ZJR3ZJZVZHdytxcStsNXl6ODZCMlMrdmk5YWNlTUlTRmE0djhiZDFkM0EvVVhhTUdqUVE5eHVLd3VrSjVxZEFXUnYxK29WcjNhWk1VOTRTaFpBWVBDT1BIZWF2VFk5Y3E4ZVZoQnRPSFNoM1VYWCtJOE9ERjNJeVVnQ0szUkNGT3Q0QnZyVmxZVGVPWTZxSytma25EYVI2eEV3U1MraU9BTjMraW9Pa2xWeG1qa1dzeDhpTlZ6NDQydnB6cWdubXB3bWRwdUF6ck1JbVdIckZxRGtZYnRoWVN2Ky9FWUl6UlYyb2tQNlRMQ0Jub0ZnQnYxUVJzTlN6MVFiT1l3czQ3aFFJUnhsTGhGeVROa0V1NmtZdEdQOEZoYytaeUpQUGpVN2pWMVVrSnB2Q2FBcVZwY2c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_09.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDllYWIwMjMtNzc3YS1jYzQ2LWQ2OGYtZDhiYzM5MTJjOWY2IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA5ZWFiMDIzLTc3N2EtY2M0Ni1kNjhmLWQ4YmMzOTEyYzlmNiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+VURibXI2ODQyVXBMWks0SU44c1lJeWovTkN3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5kQStsZW1uV1g5c1lDVUpRK05xanJYdjg4eklZR1l5UkV0WEJTQStaMzlOUXNvSG9CNlZwUGN5a3RQWCtwMnppd0IvNUhlV0Z5Vko4Y0xkRU1aeXMzQ0pYaGJBTlFOTXdaUW9FRW9PU3c5SVFGT2xSTkIvV1NYUEtDUkw2MGZwclRCNkpuV28xUS9iNHpydGQvZ2JKRkdvaVpNRHN3Snc1c2xMOC8yMlZJcUt5ejYrWnJpQlBDSEN4WmtENWprbHAwM2Y5eEhyQmx6MXZSdVNYWFlBTmdrbDBDa3JYM0NwN2d2QlJIL1RpTmRuaVppckpxaVA1bnpRSEZMeXByelRGMW45S0MzZGJCeHRHNUluOWNBT2plYnlhRTNsQVBJalVxMm10eDZJdzZ3S1RtdDh3a0pzWGk5R0dISjlVaDd0SnVNZmduQnBqOTZ2UWlZNG5Oby9pc3c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiLz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPlUraXV5SHd1R2RSMis3UDhwQWF6R2wwUldyY2VZMVJyVkUxbzFNclVZMkZ1ZVZKN1NyM1VaSi9sQkhGazI5eHU2M1VXSzFOYUFCTlV4Njg1ZFFrbzdja3ExWjJSZHZpcHREcWkyVC9meXcrVG5leTJIVHVNN0lMZk5mWlAxUEhiWkJuVXBSb3J5UXBLSEt3Q1EwRkVxKyt1QUc1RGhmVm5NMjBuQjI1MU8wUnlFd3oxTncvZ0dCUnlERDA4a2h6RTV2b21LMlVhQXZ1RnUrNWEwSUgzWU0yWTJ5ZmNUK0x4eUlHYzFnZG1KaGdVdVlFYlhnOFJhelU2R3pZbHJxcEl1TTBESXlTdUdORDByMG85M0ZMNEMzaUR4RTRjcmI5Y1p4ZC9HSjhyZE9sRkRqV2dyaVN4KzhNN3NVNlc2MUhyUUV1ZmF2R2M2RFY2OGZIZC9lRUgzUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPjcyTmUxNkN2UFpCOEhnekp3dEw3dDYrVlpUcGpEcHRNWU5ZbHB0WjR4elFJbktEUmxEUkpxN25tSlN1YVNqa3BpUFFEeHVlaVlYWGxLUFdNbTE2Z2xpYm44bjlnSnNiYmdIUDI1ZnFYdXpZelZkWWhXWmdLc3JhZjZYM2I1MURWRjQxckNIelVsT1I2WnpvNmJsblZFWW1aOUdsQzUyWVo1bGNlVkJTeGM4QnNGWFY5Nit5aU5XWnFkalVUY0wzQ0NIUjBxNVZMY3Y2Sk5HVFh3T0k0RytTblZaMWdYZ3cxWUJRUmE1U0VFOWhqQ0tXeGNsUjB2bWdPNmE4L3FHZHo2UGlpMHZZQkU3QnpNSXNkWTA1bTFDdWdZckV1STFsQ1c1QUpVMm9MdURGYks4UG8wVEdNbHE3bStSWGZqdHpvaEdMRDlHTFdwY1kvdng2MHE4T0M1ZW9pK2hTQ3Q5VFMrU0dEa0FnRGl3WDZYZFJxZHg4RUhzZDVhVlZBZ2F0eHpZZmZKRERYUkk4NHV5NHR3VERxYmhhLzBCekVGbjAvVTM3SldJbXdWZVIyL244bzNpaXVqTjhYQ0pGeHpDSlQzQU83UmJhQkJSU0lXZlE4YU1hNmFHd0dSTDJYS25mRk9kaFFuM2Rmd011S1RDMEhEdUgvZTdZVmNCYmhDOGhOZ0UrUnJHZDlSSzVmUE1LRFphNjZKbEQ1Uy9ZdEFxTGpuTElHUlZWUEtPQlhDMnViSnFRUEc5RnlPMUdEc2RYYlBxOURZRzV0NXR3NjgwcW42cnZlTTUva3dIM3JhdmsvUWs2MmU1MVY2WktkQmdKY0ZEQk1Uam83UExmNTR6cFZ2RlU4eXUxekI0VmcrWms3T2NWUi9sNTBJTjJFZzZUOStrNW9WQjhkOFhpSUN0ak10RXpDZVAxRTVIK2FYSmRTNDlKdXFkRzFtRmxCOHlvOUZXUENOY2dHMnlIL1pXTUkyNG9tbm91MmNiQ0ltNnRQUnIxZG5wdnZkL21zL3ZRN2JJekRxRllZQXhFZDVIbWw4RzY4cU0rdVl3cnpOK1gxWkVzS0V1V2lLNmFoeG8rRDRRaUJua1RuNWNJcDdFK05CbUtPb0FOT0sreDlZTnFIaWRieDd4ODVMK3prL0NRbURyOVlMTUJXUlJTWEhOM0tmYzc5VTJGWlAya3dUOTZnSXAyamovSXRXc3ZmT1VRMSs2bjVmbzNjb3F3ZjZ4WHFpNWJHcEx0OXcvNnRybkR4dkliTnJSd1ZJRGgvVit2ZW8vTGI2RTBrTTh4aHdhdDhEK3RMN1JNajNIZUgvNmp5bHY5MUZBcVEzTXJDMEc3aXlTMXpqRE45SEp2TEw4SE9FS2V2amxabm1LVHJEQmZ5WmREUXZ5UExLN2JRanM0M1RRQVVyZjQwODdYWkRSL0VQS3ZqUDBFMUlKQ1o3UU1vdDUvZG1GU3lvUjhWc0p2cGxuTml2QVBoeFhDVUd2STNYV1Q1TTVNcUtXTWVtNHpEZE96WituNGNSMnRMM2tlalQvR1ZFSURoY3pwdDQzcERmQUlqUFNiZXRLMnlzN2VmMHY0bjQyYldyQjlGZEVkMVdNeWc2V0MwVGpPVWQyckI3di92MldGeWNJakRUS1NhY2NYcUtIcTFGL3VLWVg0NVpOWXpTdjJ6dFBjWlprV1M3b2tuZmFkM1p0RDZBenhweDJJTTR3bDMrY0gvdnMvbXJzRVRXT0tMTzdPdlF1aVdEbGhrdjlhK3RycE42WURpRno5cHIwNDFXOUhkdy9ScHUyNkl3UEE4ZG1hRE5BamdrRU9GM3JoMTZQU3JidGFDTThmeG5EaXlJT29HQStUbW5PSjdIWlBuV29DdnpwcEhpK1lRN3Bwamg2QWVkRk9hNlZiU1FCQkppNmFIcFF1WUZvR1N6c1BaUnk1bFJPcEFUK0hkRm1Qd216TVU3OFpiNkRFR1c0TEdRdS9kVHpaa1Y1OUE0bm9RcktTcHdhQWRJeTV6Nmc1VGRUWUJIT3VDclhXYWR0amRtTUFOOU1seDA4NzNJZE84SXY3WU1hNk5ZL1NpM29yRnh1c200ZHhuQWZXMGg2eVZQd3pIRkRPU2NnclJxR2dpUnEvMW4wc0NpTjNlTmU1OHJYbjAxRjFVYm5jdTNTRTUvclV6aFRRRTl0Kys2K3dHREtlcGp4QkhNS05kNjJ2YXRlVkZ5N3BqMklUejM2U0pvQlRzQUJtbXZKZ3JUNmd6bkNLSjZqSmlkSmZyWitPSU52YkpsaXhzdUJzWGZPUXVTMEc0dkFBS1NDWllUSy9TQ0trTnNNNFViTVpnZkt1b3ZuRUNZazIyMG1hUzBKczd5R1phZjVndkJBRGxCODhmWFRURTBGZWQyd0pjbGxLYURVVGhBdm9tSG1FNHZXTENkRFFUcDAwbTdIR0pieWxneUFZWGtITC90dlhDcFlpT1V2ZWtzcmNubWQyNjFuR0FacXkrUWJ6TVU4eHVlMy80Si9nUXpmamo0T00xaE9JSnMrSEVLUjRxTk51YUoyb2I2NlhmZUhkV291ZkxaTUVObndpOWJ4bkR1U0lYZENnc0NHS3pYM0tnNHNYMm83QVlWeU5sNFZVL2VJTXBKR0VqL1R2R0ZxckMrMEt6MGQ5bEF4c00veFpXeTFESElzYVJrVUowbnNZS0RTQVNNalREaldhVlVMc0E0RWlTUktyS04yK0ZUZXduSXJEQjFONzJZOWEwYTJUSXNRbFY4cmZnNDhpMFNFb05SNVJ2K1JObFJWUUxHOXVZd2h4QjkrM1BsKy9YaDdDZ085Y0JrWE13TStXblhjZlAwYTYxMENZV3ZabElZV1lCY29LTE95OWFaaGVVOFNKaWZpSk9uRmREQWNkVEFWeGplSk5oSVc5Y2lVU0RJdTVwV1grSlFaMkpTQ3ZRdkFWV3lNdGxqNVoremhMRlNLUk9hQUg1R0dIK2IrZ2dIUUhmVzFJaGYxa1gzSEFPZFJKNUw4QldXVGxiems0TWcvN2QwMHVER3c4dDdtdnZrWmFtSVE3SzFPNE9yQ0pQZnNVR1hrN0tXZHF3N1ViYkhUQXZzb0wvdlJFWUVMNG02eDBRaXBQWUlPZU5UTTBnZmYwb0JsajhhRm1UTG0yaEIvVjRicWF4U2hlSWg4Q1IvZmZrNDB1dXR1RzRST05LT1prUlpKQko3MUpWNTEzM2VPMkluUHhqMHNIVHFQRjhmOXJXTEFtb283bTFUeWFUN0FibnRqUlNJMWhHSWh5VjFmSThwU1pIWDVhLzAxcVRFczNPQSt2ZlE3VUI4VkV4dkxOVXExVXB0UDJrRVVzQ2FjNFJqY1AwTHdEZDU4eE1XSUhVVXkrVURVTnhvUytJNm5RSUovZnVuckxTMnM5WXhRT1g4NGpZNTNzSlFUQTM0aUF3MzY3YzBZcjdXeENqZ0FiNUt4ZW1mTGZSQjhvRXhLQ1JnRm9xRXMzU1VKaThJeENLc2d5djFQcFgrZ3JxdVNEN1RhZ0Q3S3hWb253Qm8zM21jSXdIWk01a0kra0pmTEd6OVlPaFFLanl5cUhrZkFvVU9rUmRsN1NGSWhUR3MwTitOUmEzWFFQTjVWQzVBMG5QTXpFUHFkYnhzeU1aUkhMcGFIS24xcklacDFGanJhOUZBcTQ0Vkp6ajRpZVdtVGplSGNPa2MrR1cxVEVNQ3JzM2lXNHYyWU95aHFtUWt4L2QwQTFEbnFRS3pZV1gvZDNYNG4xTDc4Vmc1cWgydTYzVzRGMGo0cHVxWWpNalJ6R2YyVUZ6VnF6b1dvSlNiOWhTSno4K1VZY2N6eloweHFwUUw3bTlMZVNYaUxwMThkdGEwYWxsVlh5SFkwMjQ3ZnNMWGJPRGk2MG9IUitQZmhKakJaRXR6TXBFRTRuZXY0TEE1Nm9MazdxcU5ZQStwTnVlZ0lFK2labUY5QWNCRlVTYnhqVzd4cUVJY1VKTk16a3YwUUkyZWFqYVNKbHNCTTJrYlpuUHZSN3VRL2dXYmRiRUZxMVVyLzJrM2xTcjRDZExQM0szeXZtSjJtYlptejRDZjNaTVRNekU0TkhFTUdnL3VEajdKc2ttRUhsNzI2K1hyUXdWVFcyLzNha3RSRGxwL2Myb0gyamJkUE5IUUJaUjJMMGN3T29WVEIxMFl5czB2OUdIYVpCTitDOWxFNnlpRzlJdjFPV3VGQUIwWWM1OGJYaFN1cTgxWmVxejFTN2RLTTBCaWR0SGE0dk05VURxK2dBQ1huY05NdCs0MFBBNCswdDNLL1E2N3dtd2ZJZWRyclljVXpjYmREWGFUTTRpY1FNK3RPSGZQdnBRNW9hK2NPOVpxTWErV2tFK3F1aXp2RTMvUWMrUUMyZ3N2VmpXZEp3c1E2QzNISUlndHN0VC9qRS9lUmxkUEw2Si8zRko5N2tpQkQ1NDRSTFdnM3Z5dXlSMTBEWjRkU0dOUmE3aXAyOVhVVTQ5NzgrNitiSWlKUEdqdFhDSG5jYTUzNjZLTUkxMDJ0bDdrNnFpdEFLOC85UGUxb2N3UVhhTUpyb0pQdTQyQUhabWdmZXhnbXJrNEVPSDVZVmQ5a09CajVBK2JoeHgvQW81aEsrbkZUdzlmaEoxU3NyMlpkZ1U1cU9ZcDYvSEJnSnMzSm5McWZZQ3RPaFYra0xITEttbzVxUWQ2bjFMS01xbFlzblpCeVBvMDh1dVBxT20zVHRUc3NoOUJUb2xFeVNFRkZLOHYrRHNhK0wzOXlqMUNPNUVvSWQrb0RxSEJWbi9wOEV4M2pQbWI0QWRjaElYcjVBN1BtMnJoV0xXQlhDbGtLWDMvaWsrOXhCdmtuMU8yMC9zN1pwczNJTUhvN3NoTmJzMHNCcUMwbzJFY1IrdXlPS3c2RVVkWTd3VHkyS1NHMDFrWThveHlzSlp4WUMzemxQbXBvVDluTTlvWVNORFB2dGVLK1F0ajdrVWgyVEdGd3c0Mnl1VzcvMjlHL0t6UG02OHc4eFhPREZTWU4waVNsNjc0NmJKZHF1cTc1OEdEVzErTUpBQTBYZEk0bEVoVGRKdStIVlY0M1owa1A3VmNOalVGN3JqOUU2L1lZRUpPcDR3ZDB5S2Ezb3VUV3ltNVVqd3NnbUNIS3Y0VFF4azAxc1pHWmtnNFRVUS9Zc1FIS3JtNnQ0emZPM2ZObTFrcVowUzZqZFJvU1AwbVhRRjVzQ3l0cHVpWlJKdkJUaWY5UUZiQVRxR0xITHdNaDdYTE1Bdjc3UzJVYUd3Y2RieXgzdlpXU2FIbG1KMUxmVDNlWk1UY2NMNUppdm5obWlqU2JnL1ZOSkIrb0hEVTg3cThtbjNUZno5bFFiYWExakdXNUZabFU1NVkxcUZpM3NPbk1NRTRBb2lUckJ1RzBIWjk2NFNHazBMRkJaTllKb2YvTHBPbk9TcGsrU0xCbG41NWwxcEliUW5FQ2NpcVlRbUo1NnkvR0R3bDZhZXNrRzZrbWp3cTE4WGZqT0t5WXpteTFDeGt4RzdzcVphZXBtLzE4cCtBT3I4RjRBamg3NHd5MGNNMm5BNEcxclRIajM1aWZUbGtIczhueTFtSzFrWkJKR1d2RzhaMFVhU1czNmRrdzRPMHhxdEZMZThaaC80emJhTWlkMW11b3Y2eVZ6c2Q2aS9zWERkclRRVlBzaEM4VFd2WERqdHpCZVZHcjlkQzhzUjZRcWlrSVYrS21CRmJqU1VHSnZHTEIzb3FCbHY2VWlrOUI2NjMrd05MeEt2N2RHMmZBL0VQMFVrR2U2QjM3YzJGdTBXYk1QSzNpWGIxM0dmMWorYlFGWVBMTDRGMTQ3Z2hQaitCRTZVWkpSYTdrWHc5THVtenF3aXFiMGwrU3pmNFBEOEdhK29sVkUxczJNMTg2SzZNQlllQ2JxbnZKMTZ5RW1tZ29ITHhXSG5sV1ZlOXZEdUcrQjJpb2Y2WklJaEVJM0ZpM1VGZER1bmlaVFMycWZHSThjeEt0dENHTjFpTDRSZGp0bnlJM1Z1b01OSWZHYnlTM0pKM0tJU2RpeWhNek13d1U0QnFYdGxzaTJrS2pEUkxpRmtlbkxYVnNLblo1RnZmMzdueU9Va0Y3QlJ2WW92alZlRWFsRVhDQ0I4K0Ira3dzMHFxQWIxWnN6YzVaZ093WEFUeUNOVVpRMW1QbmtJeHBlYzFFOFBXMEF5SGRQYXBDSWJhTFFxc0YveC8yQThnc2I4cUtqc1ZRSDRYU2lWWERPS2luTjd6dUxoZlV4TzlRcE1JNWhYWWdKdkI3dHhyVWpFVnIyY2gwaUJBOHNTeDFuRVdJbjl4N3RZMkd1clF0bmpPVGJrdCtCLzNMaEJhUlRiaFZiTHYxUUpKcFh5cTFWOHpyNzJGYUtETGYvWis0OFllSEFpcmFmNm5DNGFORjZTV2tNckQ0Z0ptR0RZQW1LV3Mrd2phQ3BxY0x5MnRqT3hidE1KNjU0RmZNdStGb0FiQ1U2di9WZ2g1M3VuMjN2L24yeVk5NGJMQ3g0NHg1Q1c1VUc1d1VHdFB2enNtMmFFcWRLamVTZjRORVBXV0ZWZG9nT3FYOGdwTjVjOWZ5NXVsc1dKT1VsSk1DcUZ5YURiWlRuOEhibU1aQlo5amxLRVBRc2YrVDkzb2h1LzZHamNpbFdHRmJRYnpncC9MVEl3YnMrRmpRK1pjVGNzZmgyQjFTMFVGMjRuaHBWbXg2b3FJa0F4TFUxSHpDUTRta0FXV0lxdXFiL2E0cWErbHVYSGlnNkE1Y3JQeFZoTFN2UmtlaFh0Q0oybkM1M25wN3hpM3o5TXovVmRtS3BHenVHU0FsM0FSOG9aN0JYd2M1Q3JrV2xPckRBa0l0V3NNbFJtS0l0S3ZIZ2hsOVpQSEcyQ0ZpSmpTZ0ZCTTlZMlQxYzhha1hiUGVua05BdFhSZnh5UVY1dTR6WG5KWlQ1UFI1WWNTNVN5UnNqblZscDdaVGVhYWJBenFHWStuVWE1WTgzK1V1SlZHQm1VUUh1Y000djNRczFzMXdTVEFyeERzOE9md2N2bDJmeUorVTd1clhkQXkyOGdiQzdZRWpick5wMzlYQk8rL1VoaUZib1dWazZkNEJFcm9DVUhJZ1RTNGJ2eG1lbzhvQ2VTQzAyRUs3clNlalRvT1lGUkhIRzBlak9td1E3Y2JBb1VkTWNUbURpZ25WbFFXajkzRFA5S3ZGbnpvOExHdk1jMjJ2U1BIR2xYaTRrRUNpUkpPN1RJTnVzNXlROVIrRmFQQVE3MytwUXhIWjB5L2N2SmRDZmdsUmZzV0Z3MCtiTUdIeEtvVWZ2M0NEalJWRnpHTVNPVVJMVkxYRklpdi94eHNVUjRvNGRTUlpGZWJuUTNka3hDbmRMOGdRbFhDRWhHR3hONmhob00yTHZnYWxzbm0zVWFqV245c1VZOFlkTFEwcmp2TjI3eWQ0ZCtrOTk4Sm1uM2U2VStRUjVMenlDUDZKUTlXUFprYXo5Tlg4aTFtZS9ISklodUV2VHpDcVVPWmg5VndnU013OXVLV1RzeExiQlJaKzl1K1E4RVZXa0tPMkJpaVVzNWhwOUtIODBYZko2dUhKY29Pb3hIRDlzYWt6alROTWEwdlBjSk9ZeWZBRm5QVEVhTTc2UVF1SmloWHJjei92OFJHUkNkMmYrQUo3cldHY05SVlVMMHNMY25hQkZqby9TQlh6WUM0ZE80Vm44T3ZWUUFETzR6cjBHeWFoVjVHRXVEU2xzWGJmR1NTVXRwbU9UQVVyM0dCY1ZYNXNnVEFQQU1TTVZKNnNQTUpHbzVRNi9wYUFLNFppMW9ac3dhYXJ5eWlBaGticnNEcnJBMEptd1g2T2dWZnhDMW1NSnRMR3JzT0paRVlMcnRJN0R4OEZXUWJnQmVhTG9uN05qVk1scjgwNy9mc056ZDd2bkNBd3Y5L0MvK0VPbFBBQkc4akxmNmxxVHJRNncrc3ExNDRwMTV5TjM5NFZYZDVMeTRtNmc4NzhrNHNGSDhPZWtmRVFFMy8yV0NobDZLOUZSMzNwS2szamJaSXd0K1lpbWZaMFdNS0w4clplSml3RzFZcnBrejc1d25lbHcySDBndFV6OHJ3N0xLc1BKWm1QZkgwb0U3amROa0hPcVFuVS9ISk05VmIyN1p5NzZ0L3JvSmFHdFZiaXFaREM0V1g1SmlNZnZlTDhrb04rZnRudWlqWVYrZzdnQmxpZ2QzOFpMb1dDb2pRRm5DY3ZSOFRBVUpxTHR1TUpZVVZXWTdiNHR3TGNWRWR3VzByenhhU0xjTDJUU0pOMmpYZC83aW94Q0dtcW9OdjJRNjJPYWc1dU5vajQxZnlyd201aWdZL0hkd1gwUGQvNFdBMU14RjNDc090dVg3SEY3UXltVW83RC9ieXRTcWszOVZFdHh0QmZQdEVrd2diNUV1Q2xQckxjZHVxTjFEYkwrb1pGRnR1ZVhpTWx5NlR6bGg3eUFVSmNrNGNUSFNEWjdTakNwUi9DNzhPWkpjUzhMYVgwdjZ4d3NlRENxeVc4TXVUZWt4NDViWUxhT0lTbEVUWnRSeG4va1gxZEZqblZINWUrL2lBNUpJUk84NkpxeVpzQ2JWck9pWHZZbWhFTm8zVzFYQjRKd3lzOW95ejZPeVpZa1N3UXo5dENmTlphblRNZld0UmhVR2xESnM3alRoTDhGSkZGVHd1UW1qbS9Gd2RTbEZWMldxUHlDMHVtNHBHbnp4UkhQZ3p6NHBtYWZFRU1PZkU5NCswODlWZFF2SUhZajJieWt1K3gvZXBTd1ducHJSSjZ2ZW8ra2ZIbXBzS1hFRE8xYVFsS2RvRHVrVG9QT1FnTFFPUjQrNGNQblJ6WFlRSUt5cHQwakRBckp4WUxScFVybGI4VW1uYW1WRjBLbzJJSEw4UFNCNmt4RHNXUWVHV08xVWFTM3lPbEpmbUNUQXNaM0NMaUF2QjA3Rm1rWlRmQ05TVWRsZDV3LzR1ZCtKaVpLUFdyaWVpemNWSytUMnoxVSs5aytWUkl4bFRna1JFUHBsZ1FQeVJtQmpHNlR4b2JLTGRNT1NHaFBZQnRTWXlVYkkrTGJCd2lIWlptTnFnVHR2MTZKS0JKczV1R05FUUwxUjNqZGlNQ0hhZjArU0xldDgwWUpHU1h1OWQ0d08rb3NIbzJCaG54SlVNS1BieHowZ1Vqa3VrRTJLbFBBVVdpcmJkYStiU3hHTktqQzF6YmEvbFNhOVhLbW51VWI3bVFwTnBXU1QxS25jRnRlVkNUZ3B1V3dRaE05elUydHovSE1nbXNISWd4YkJvYmJ6TzFnVDlzdEY0eW9jbTZQemU2TXFsUC9TUE1BOGEzR3pyNndEbERkWXlwV2pHVWZDcDk3VFRUSU5kWGtpL0RrRFhkcFZjbnRzT1FBUS9HUW91Mjh0NFpFS0M0eUVmNnlzc0kxcE15RW5UWXdZM21EZ2xWbE1hYVJjd1BiNGVKd2tQVUhwb2pHWitzTlQzVUZVU204bXJQZVNpSEFYTUhzQll0cnJHSmpvWnYyakdjQW5Nbk5XVFBLamxxdklJcHo3UzF5dGY5ODJuaFdrc25LaEcwWW1NYWZhaUxCMGxXc1ZhNWhyeUJoQWcxRDlLQjFCeVF6bUgwWXNIam5NbVZqM0JyMm15T3RLZDIrRkpaS2pEOUtscGgxaERRTkljcE5ENnMvenZreXBDcTNTeE5CTkVsV1g1QytFUjh6TkNIMjloUTRyQnU2U09IYUlYRGpFY2EvOE5JZHJsSTRlVy8xUjduZHlTUkoydklldUZFVHg3Tnc8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_11.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh bWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQx ZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw MmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z MFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft bC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+ PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y MDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm ZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRz OlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm b3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w OS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3 YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT aWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVX WWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2 Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxO aFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFw ODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNL Wm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUw SUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5 RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5 TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ V3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB TVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF MU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw WVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM blJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP d1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3 Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln ZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x SnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo NmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU Lzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D QXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy UDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz R2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN OU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40 eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv MnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh R3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k czpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1 cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0i MjAxNy0wOC0zMFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJ c3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24i IEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5 Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAg IDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6 YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpu YW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNw Lm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRp b24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAg ICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89Imlk LTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0i MjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3Bl L3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpT dWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2Ft bDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz c2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRl cj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNl UmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1s LnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1 ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAg PC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50 PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUw YTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNv bnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9h c2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3Bv cnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhu Q29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpB dHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFt ZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h dDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s bnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6 Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5n Ij5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmli dXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1 cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4K ICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3 dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAw MS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0 dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAg PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVz OnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAg ICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEv WE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu c3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgog ICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx L1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0 dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5z OnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+ Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRl PgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRp b24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_12.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh bWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQx ZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw MmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z MFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft bC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+ PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y MDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm ZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRz OlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm b3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w OS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3 YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT aWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVX WWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2 Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxO aFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFw ODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNL Wm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUw SUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5 RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5 TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ V3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB TVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF MU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw WVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM blJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP d1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3 Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln ZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x SnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo NmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU Lzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D QXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy UDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz R2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN OU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40 eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv MnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh R3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k czpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1 cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0i MjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJ c3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24i IEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5 Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAg IDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6 YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpu YW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNw Lm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRp b24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAg ICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89Imlk LTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0i MjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3Bl L3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpT dWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2Ft bDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz c2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRl cj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNl UmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1s LnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1 ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAg PC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50 PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUw YTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNv bnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9h c2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3Bv cnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhu Q29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpB dHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFt ZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h dDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s bnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6 Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5n Ij5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmli dXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1 cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4K ICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3 dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAw MS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0 dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAg PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVz OnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAg ICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEv WE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu c3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgog ICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx L1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0 dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5z OnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+ Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRl PgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRp b24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_13.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3Nv L3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJ blJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci IElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgog ICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w OmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv cm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1 ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIgSUQ9InBmeDk4M2Y0MGJlLTYyZWEtY2UxZi04NWU4LTI5ZTExYjg2MWE3MyIgSXNz dWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQwLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAg ICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w OmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv cm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1 ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxk c2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3Jp dGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpT aWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRz aWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDk4M2Y0MGJlLTYyZWEtY2Ux Zi04NWU4LTI5ZTExYjg2MWE3MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJl Ii8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1s LWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0i aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+ RnBLNHZMamNwMG8wZ1hlRGRXRDV4WlgrbERBPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVu Y2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5tZWdVZ2dkVzlZTmNST3FQb0Mw OEh1Q3RVZWZMaFdWS1djcHIxQjNrb1NkZzNJNStueFhiWks1QzUxdnpWNXN6N0Y2alRHL0lsYnNR eGl1NGt0bWErYUZiVnB6YVRmV0VOZEdzdVRaMmFCL1kzMm03ekU0KzVUajVKenEvbVNVVUxQYXdk c09uOHc3V3NIdGU5OUgzWE56aGQvVVA1dnVpUUpnSW13UGxRaTJqSlRpNE1XVytON0NQRVZvb3M1 YW1OUVRUdWFyN1NRVkdOaTFhQWNvUThTVzJWRFQ1MnpSM3ZxMnVtUVo2dUhCYThrK0x4YWNaeW9B WVVyRXlYc0JrZFBGVEp6RVVER21jMFp5Qk9TaE1pMC9EZnBZazZzbHNrMWQwUE5RMHNCVU5iZ3U4 aDM5Y3ZMblpJWWV3dTFOb3F2RVgyQ0pId2JmSDg5S1FaeEJLTGc9PTwvZHM6U2lnbmF0dXJlVmFs dWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakND QWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZC QVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlG UmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURn d09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVU TUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZj R1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFR RUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5x NURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3 RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJu MGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9B VG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhP NmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1 N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdD U3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitE T1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25L L1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBD djFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlH YnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdG NU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1 OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48 L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6 c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg ICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVp ZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgog ICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpu YW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1Ympl Y3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz NDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3 OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3Mv cnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAg ICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNh bWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIw MTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQx LjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAg ICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9z YW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwv c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAg ICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEu Mzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZi YmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAg IDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6 YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0 Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2Ft bDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxu czpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAg ICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT Y2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1 dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1s MjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1M OjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwy OkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt YSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUt Zm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1 ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0i aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpz dHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6 QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h IiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4 c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3Jn LzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No ZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVW YWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRy aWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+ Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_14.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh bWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZTNjMWQw MzQtNjI3NC01ZDAzLTgyMzAtMjdlZTMxOGU1MjNiIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw MmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z MFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft bC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+ PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y MDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm ZXJlbmNlIFVSST0iI3BmeGUzYzFkMDM0LTYyNzQtNWQwMy04MjMwLTI3ZWUzMThlNTIzYiI+PGRz OlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm b3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w OS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UktxRkp5cWRZcWRETUFjUEtmUW5SMmNG M3R3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT aWduYXR1cmVWYWx1ZT42RUpTN1Z0VDljNXdpSG1xNmlUMnJMYjB4aWY0NmpLSEJNaFdKdXNFZi84 c0I2QTBHRFkvbmZyTnpkWlZ4akQ0Tm9vSTFTVzZuZ2dYVDdxVGZmV3pXVnh0Zm5WcC9qSXVGVkFy bG9sMDdMc1l2bEFCT0w2MFY4YzMySXZ6Vmk5ZEJiMzlJeHdtV0l6SU5BOXhnMjl2TGlWNzc4MlNt WFpVbk8yQ3AyTGRZbHFLQXdFeS9XbEhDRjFFWVZNekpqeE9ySHo1NWhPV3hTQWswWTdYZUtSWGdv K1VMVHZxSnd2dmQ5d0gyWVZlOFk3WUFYRDlCaE9adU5CTkxNcG8rc09FbExjT25IYTgvZmdEQzJu T3h4dFU4RFVSSGpqLzRKR2pDU1JCU2UrTmg1VUdWQldpTnZoaURtNU9oRnRHY2J6NlRzN0IzSFp6 N0lBVGNYNEQxOTZnbFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5 RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5 TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ V3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB TVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF MU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw WVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM blJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP d1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3 Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln ZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x SnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo NmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU Lzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D QXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy UDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz R2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN OU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40 eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv MnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh R3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k czpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1 cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIgSUQ9InBmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyIgSXNz dWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQwLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAg ICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w OmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv cm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1 ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxk c2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3Jp dGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpT aWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRz aWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE4N2MyYjRmLTU5NWItZjc4 Ny1kMGFjLWI2MTExY2Y3MWUyNyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJl Ii8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1s LWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0i aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+ aHYwR2RrOXlWUVR1YWxoNGNsZW41VWZkQU0wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVu Y2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PQ0hVV2FWbmUxVTBQWEFpZElj bzI3SDVzYVpmbGYyamdiMnh2QXc0V1VHWmlFUmt0UGJJdWRnRWhreU42Ny9LMlUya1A0ekFCNkZh ZjhLbmtWY2s2WHBCSUhEMkpzN1Rsa244RGxjN2dLQXNiTmh2SFNWeklQbkxUelFHK0hjbFhmQTJC MHZwWk5YM3lpK1dZOUtJc1dnTXZzSXRUalRFRW55SUZqMmRaQXRRclhBclFMc2d0Tmtnb0ZpcHhp eDZxM1l0NHl5UmU3MVhXTXNldW81ZUV0VFhTOCtFS3FPUW50V0xoYzhudDJWemFtK1Z1RUVzT0Yr Szl5K1FnbzBDelFHNU9udnpZMVN3UG5HclRyaHAyL09TVDJJbkV5Sk9MeEpCMWY1STNDYkYrWXlr djJKeXNjL0ppMHlGWjJZSnlNYS9KdEN4U2t5Y01EY2RVbThNYXc9PTwvZHM6U2lnbmF0dXJlVmFs dWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakND QWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZC QVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlG UmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURn d09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVU TUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZj R1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFR RUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5x NURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3 RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJu MGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9B VG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhP NmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1 N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdD U3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitE T1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25L L1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBD djFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlH YnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdG NU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1 OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48 L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6 c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg ICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVp ZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgog ICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpu YW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1Ympl Y3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz NDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3 OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3Mv cnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAg ICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNh bWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIw MTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQx LjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAg ICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9z YW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwv c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAg ICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEu Mzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZi YmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAg IDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6 YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0 Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2Ft bDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxu czpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAg ICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT Y2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1 dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1s MjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1M OjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwy OkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt YSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUt Zm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1 ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0i aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpz dHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6 QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h IiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4 c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3Jn LzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No ZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVW YWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRy aWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+ Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_15.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh bWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZTNjMWQw MzQtNjI3NC01ZDAzLTgyMzAtMjdlZTMxOGU1MjNiIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw MmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z MFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft bC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+ PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y MDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm ZXJlbmNlIFVSST0iI3BmeGUzYzFkMDM0LTYyNzQtNWQwMy04MjMwLTI3ZWUzMThlNTIzYiI+PGRz OlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm b3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w OS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UktxRkp5cWRZcWRETUFjUEtmUW5SMmNG M3R3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT aWduYXR1cmVWYWx1ZT42RUpTN1Z0VDljNXdpSG1xNmlUMnJMYjB4aWY0NmpLSEJNaFdKdXNFZi84 c0I2QTBHRFkvbmZyTnpkWlZ4akQ0Tm9vSTFTVzZuZ2dYVDdxVGZmV3pXVnh0Zm5WcC9qSXVGVkFy bG9sMDdMc1l2bEFCT0w2MFY4YzMySXZ6Vmk5ZEJiMzlJeHdtV0l6SU5BOXhnMjl2TGlWNzc4MlNt WFpVbk8yQ3AyTGRZbHFLQXdFeS9XbEhDRjFFWVZNekpqeE9ySHo1NWhPV3hTQWswWTdYZUtSWGdv K1VMVHZxSnd2dmQ5d0gyWVZlOFk3WUFYRDlCaE9adU5CTkxNcG8rc09FbExjT25IYTgvZmdEQzJu T3h4dFU4RFVSSGpqLzRKR2pDU1JCU2UrTmg1VUdWQldpTnZoaURtNU9oRnRHY2J6NlRzN0IzSFp6 N0lBVGNYNEQxOTZnbFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5 RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5 TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ V3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB TVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF MU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw WVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM blJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP d1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3 Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln ZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x SnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo NmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU Lzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D QXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy UDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz R2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN OU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40 eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv MnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh R3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k czpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1 cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIgSUQ9InBmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyIgSXNz dWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAg ICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w OmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv cm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1 ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxk c2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3Jp dGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpT aWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRz aWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE4N2MyYjRmLTU5NWItZjc4 Ny1kMGFjLWI2MTExY2Y3MWUyNyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJl Ii8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1s LWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0i aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+ aHYwR2RrOXlWUVR1YWxoNGNsZW41VWZkQU0wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVu Y2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PQ0hVV2FWbmUxVTBQWEFpZElj bzI3SDVzYVpmbGYyamdiMnh2QXc0V1VHWmlFUmt0UGJJdWRnRWhreU42Ny9LMlUya1A0ekFCNkZh ZjhLbmtWY2s2WHBCSUhEMkpzN1Rsa244RGxjN2dLQXNiTmh2SFNWeklQbkxUelFHK0hjbFhmQTJC MHZwWk5YM3lpK1dZOUtJc1dnTXZzSXRUalRFRW55SUZqMmRaQXRRclhBclFMc2d0Tmtnb0ZpcHhp eDZxM1l0NHl5UmU3MVhXTXNldW81ZUV0VFhTOCtFS3FPUW50V0xoYzhudDJWemFtK1Z1RUVzT0Yr Szl5K1FnbzBDelFHNU9udnpZMVN3UG5HclRyaHAyL09TVDJJbkV5Sk9MeEpCMWY1STNDYkYrWXlr djJKeXNjL0ppMHlGWjJZSnlNYS9KdEN4U2t5Y01EY2RVbThNYXc9PTwvZHM6U2lnbmF0dXJlVmFs dWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakND QWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZC QVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlG UmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURn d09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVU TUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZj R1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFR RUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5x NURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3 RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJu MGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9B VG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhP NmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1 N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdD U3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitE T1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25L L1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBD djFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlH YnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdG NU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1 OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48 L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6 c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg ICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVp ZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgog ICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpu YW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1Ympl Y3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz NDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3 OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3Mv cnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAg ICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNh bWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIw MTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQx LjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAg ICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9z YW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwv c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAg ICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEu Mzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZi YmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAg IDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6 YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0 Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2Ft bDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxu czpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAg ICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT Y2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1 dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1s MjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1M OjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwy OkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt YSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUt Zm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1 ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0i aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpz dHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6 QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h IiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4 c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3Jn LzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No ZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVW YWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRy aWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+ Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_155.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJwZnhhZTZkMTc4Yi1hYjA1LTc0NWQtYTUzZi1lMzQyYTRhMDg0NzIiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4YWU2ZDE3OGItYWIwNS03NDVkLWE1M2YtZTM0MmE0YTA4NDcyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5pdmZHWFk0MDJRcGpCY21QeTJwWWdrVEVhY1k9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm5vTmYvSnhEZXo5ZjB2R0RtZlJWdjlxbVpkSmtKL0JaUnl6SjIvMkJpZHZ2S1dJaHBJVUJGOFZBeEw4OGtiTjhFSVZaWkJpeVBvWHV2bXlsY0pqYXFQaFB2U1pUaGhyZld4d245NW84b29wcldjb0FEanIvbjBaeGRWQjF4QlhXR3o2WTh5Q2ZISTR6OU5LTEord1dUYTlUd1Aya1p5LzdzbE9WZlVueDZtZUZBbXhEUWNBOVBzVllKMlJVS0F5Um51eEdCTlg3dGdxQjZyRmFSVERGNStMb29zelBET1pDZll1WmJVaTlQVXEvWjA2NDdVUXBCYjg5b0svRzBlcWZSczBlZzB4SWhJc050VzEvNyt3Y3A0cU5MTkVEdjlIbkM0Z0JiUjIzbXp4V2x4V2Q5c3dvUkpLSlV0WnovTVp3dTkybGcyWUJyZmZkbU1rKzBzYUlUZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5FcEZMNm4rWTVPRmZudzNjQUZ2d01ZQzNWR1U9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkVSYm9WRERKSEc3QVdJVHZka2ZWYlF1UmVzYkt3UmZPWGZ3OHZnMVlsd2FnejNLNkJXQUNQV2JJUkgzYVp0L0FaNVVEZ2dHMHpzS0Zrd2FaREpaZTRGQm14d3dRSVk2TEU0Z3ZRYlBiTS9VTWViL0p4ak52Z2gxcHEvdkxQTk5YT21QVW5McC9aT3YvV0dKNjl2WWs2YmR4MFZ0UVRCV21sd2lBNkltSFFIWExXZmFrM1FZdk5nV3dFb3dueHMxMmxxeU9kT2c1bVdiNHo5cjV0VGgvRkZuSHdMbGVPZFZxMUR4dExaNUZpRkVNemM0YnZEd1RsNEFSenU4bGJnK09pRGJPVUIxVjJ3bmtUaStpaEdobzdxbEt0dWM3ZzRkQUJpYUhSVGZWOTRUK3dlMkpFN1FJemZZejJBMXBMajJ2dTRkc3dTSkF1QUh3Z0lxOE4xYmxkZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_156.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9pbmNvcnJlY3QiIElEPSJwZng2ZTVmYzE3YS0xNTRiLTcyZDAtYTRkMi1jMzQ5MWM1YTZmN2QiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NmU1ZmMxN2EtMTU0Yi03MmQwLWE0ZDItYzM0OTFjNWE2ZjdkIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT55Z1RSWGJxRlUzRnNzanAwRXFPOU9qUVRhWEE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnd5cG9NQ2dmZ1Q5UGRKVWJ0WlJvSjEvYmhwdHk4RS9YVkNVL29XeVFLMjJBUlhPTDJEN1h0WWZPend2L2RVMWV0bFlqOW1ZZGI5OXBHUDlMeUZKNEFFR2FXaEdTb0IwQUhGWkxld3dKd0UzWGo3b1FiRytBUHdMWTJYd0FLa3p5RDg5MTZMWHlNR1g4RnJuYTc1Rk5VWThieXRhaEF0VElBano3ZXE2aDBiZlFZbnVwRWJLNG9NUVdpSi9zZTB4QWVTVnNuMTRiM29EbWRqK0ZDVjdmbkduTEFiRVcrTUdKTEcrUEQyZ0dEUWFKajFzdUJqb25Dak1uWVFYbndZdlA3Q2hteEIyaHlLZ2VBdUlaZ25hQVJIOVdZUEdMYWZXT1JQUWpZZkNhNDIwNk5jMFJDSDRDZzE1cTk4eDJTcnhZSkRkeWdUR2FYL2drU1l0NUNyaHJ1QT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5XOWcvRkM4ZUFGQ1k3K3FuWm1BL1lidjdXTTg9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPklrRnRiYS96cUhkNkduN0xWM256a0M0RVM1ZVJadkZWY0NSSXgwN0JlUjBFWXVpcUNzcVVxalYvNitkRzkzdXAxalZ4RXE4SzRRdHdKSzdsVTIrbUhtOHpiWHFETitEYXFIYXJkaW1VUjRQU2dhdUErQmdNNTBvRVN6L2JVN0ZSMEd6TzA5Y3Z1bXBBcG1aYjJvMklvVDJNT2dzNmNRRkFDeEd1MUlsSSs3QTVZbXozdlFBL0VtdXRiRGN2TEtTUDdOazJqUEhBMXkraUhPYldjNU40bnd2bnh1U2JDUy9ic3BnUHpSQkprdXByQllSN0hqcVlVelhOYUZtVy9GckZLejZsQTZYeEl6QkVLSisxcFhBZklhRXN2Y3dvMzlYWkNNY3ZKYXNmUUpDcjRFUE9kUVA0dUVZbFQ4cmNyeXFvZlVJOWI5V3puZC80KzVxYXBoZkxkQT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_157.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YTk5NDM1ZDYtNDNjNS0wOTRlLWU4OWEtMWUwNDQyZmQ0ZmRlIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4YTk5NDM1ZDYtNDNjNS0wOTRlLWU4OWEtMWUwNDQyZmQ0ZmRlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT50VHRGTjFyRnBXak94TmxTSVdFWVNHL29nSmM9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm5ocTJKUmFJSk14L29sdnE2eHpOdDg4NWdSRERrajVSeTlxekUvanlibUJ3S1dLZVlYVHNyMytwdXlMSXZ6MWY0aUVPNVl0WWtuNkN4MXlSZFM3T3JmamptNWorQ0l5YnRNa3psZG96bHpLdkhtK3k5Q24zbTYxUEw0ZUpYaHc1UTNlUWM3SENDWkxXZXRicW1RUnlYQ0hpOGoxYTRNR1FyR3E0YWxpcE1sSGorMm4reDRtUWdEYlZPQnZnYktoazNoZVRjVmZWcDJrb3NEazd4Nklwa2M3YTBDdHJncHJCSk44WkJ0TXBZaWtMbmhUblZ5ckVZd0FHdGp2cVFrTkw5dGp0SjMyamhkSXlKOTBDVGx6V3JoKytzTThBU2xBTUNRYi94bk5Ib28xWVB1TlUyemhDWXVEbWV5NlROQ2JnUG1OajdTNGpMdjJkbS9hSnE1RkxOdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5kbmtjUk9Hb3JmYUx4M3hpazYrbE9aNmZVamc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkg0b1Ixa1h3aC94QUJTdExEcGhyOC91ZHYzSDVVb2o4MmQwSUU3bjdsQTVKVk9HS1M2bXZvdWZnd1NSMXVpdkhvenRBZjZsM2xyMmZMNmpjdVdhVUs0b1JYZk1hc3RwYkluckxqQmtocktOUlVtQzV2Y3dIK2V2czZZM295VEw1Wis5ZWlHUzdpYXVQSGpqWXFHY0R6ZjAzRWYyZ0xsc0xZNHRBNnpib0NpOE1SRHJKSFp6RFo5bnRUTVlQTHlOeHR1Rk9NaldHZm96a3ZSbmJ2R05jcUdocG5RNVFBQlVjNHQyRi9YbXdJTlRKYjRKMElqb3kySFJVelJBTzVVWER5YjVraWFFazlxQ1JiaDNOM29TdTUwcGk5S2EzSlJhSzZpRXhwT3owUDBvOG5QNGJJNjJZeXFNeE0wdzZFTmVCN1J2K0hnMUlVM3RoMFJkbFp1YUdRdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_158.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4OGJhZWRjMTMtY2FjZC0zMmUyLTYwOTEtMGQzMWZkZTkxZTczIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDhiYWVkYzEzLWNhY2QtMzJlMi02MDkxLTBkMzFmZGU5MWU3MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+c2pNVG5GUEt3azlmYzNOQkppWC8rNXY4d25NPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT54NG9KWXFKSngvK3RUcnBiQ1k1eFpaMXJIMm1CQjh5QndoRGNrdEhxTEoxbHFCbFFvaDJFdVkrVmpOeFZ5MTZyVzVmVVVabzBWN0VZN2NNWXhUQjNaamRoaFhCVkZIY0FsYUppNEFKZ3FRSHlKRFhieTBXYk0wUzZtVldaNXJCb09vOFdDdkFOUzFyU2hSR2grbzJaRUtUa2c0T29jWUdkVDJqZWhLR2xnNDUrSmNaUjVLOVYxbEg4ZXo0Y2QwYlNkeDV1NWNTd2h1RnBSbnVxc1IrWUNtUlJPU1BBY1dMU1IrYnhxTjJ0YnkvZkV6SmhkaFFCY1BTNHFBS3dLQTNEM013QmhRbDdLeXV6bEh2WWJENnhHdXB0aG50TWladi9KcEluZThCUlF1K3lFWXBZOWthTFF3ckR3bVp6Ymk3dzRTU3pPUmVjSUtpbTE4U1R0WXhxZ0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dXN5MGRuU0EwZzBUVWY4RHFhV0tPNi81YkEwPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5vVURoc01ydHlWa3pIM1dFRDFheGI1bFluMkNaK2NlQW1uMUt1N3l4bW9RMkwrd3QycnVCN0FaN3dnRnM3MkJOVFZzNVcya1BPS29zWHBzbDlDQWM0WVp5c294R3pMdzN2dWVEL1FLaExVbmN6OEFUaUc3NDJNQlhkL2lzS1A1dHg2NGZGN1FaTFBoMjVidTlSWklHa0hzL2NQOGhPa1Y2NjBXQnpJK05aZXY1VWx4L3B3aVY4V25pQThjdHRtbm54R1dQUlJwdWRhUmluWXhNRmJncEFFbUJNOUp6SEtvVEtVSEtOTGNINWNvc1VWQzdIeS9OcE5CU1lLSVJzd0Y2TFdUY1FUckowaTZzZlhkN0xwd0lWWS9PUWlEQ1kvT01pRkVsVldzQlVUTEJFVStMMkprSUl3M0c4Q1lDN0VsMzQ2Rm93SDlpQUVDcTd3Qm52UlFLL2c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvaW5jb3JyZWN0PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_159.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4OTRhMjI5NDAtZTMxOS03ZjAwLTQyNDItMmRiNDFjYTY1ZDRhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDk0YTIyOTQwLWUzMTktN2YwMC00MjQyLTJkYjQxY2E2NWQ0YSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dlFEOTRoZTVmLzNUTWtWeVd4YTVLUEF2S0ZRPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5iZW9SRk1SanYzS1RLU1lKOW5tRHdHd2syeXI4em1YaGtITUI5aXlkMDRaZjRkSTRsdEVvcEFkRFFyV1hta0lpT05IN2ErVCtDa1k1aG5yYWRuWUk0MU9uMnNXekowa0JmZkt2bWR1YnM3cXZibDJpU2dRQkptTTNVMVpqMXFjcFViZUp4RS9lZ0dTRWRKRHpMTGJ0SUduMzJHdlhWeHNGaFlwVGQ0dlZqcVBtZVdKUkxiNlJxakJWYk1QNnhtT2tGVEcwWHpMbjlzL2JNOFBTNGN1L3lTVFlrOFRuRG0xVGZiTTFielVOb2VSbjh1MW11S0JnN0J6aUk1VUx4cTFiWVhlSXc5bHA2SE5SMklrdEx2Y01oNGVzY3k1eEgxaEhqZGVMZHdwYkZzSjNDTmdnWXdaVHBobmN4QlUrYnNCN2M1azM1aExkTGxIdXJzT1FjcWczdmc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDU2MTlhMmU3LTI2ZTktOGQxMi1kZTc2LWQ3ODRiNGI3YzRhMiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NTYxOWEyZTctMjZlOS04ZDEyLWRlNzYtZDc4NGI0YjdjNGEyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5mRTdydGlRSElVMHRHcUs4ZE5vMkg3NVNhVlE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm1Fc0QxYThaRlQyZUtPMEZQVkZVNm42ZktuMFZzb2lIdDBVdDVLSlBRV08rQ0FjaTYrSklKaEE2ZE81K1JGTGVqRHJUYW9XVUcxL0dBWXBjMTJRcktyb1YrbklwR3NJTjBVbWJGQmtHTjVPYmNoMDZ3MXUvUXhFOVRBNVVxNTBRWWI2TDg3MFF0T0w4UCswZS9hQ2xYNGY2Vmg3MXkvZkFtOGVDN2IrNVBiSEthQm1BQy9sVjNZTWlzTmZDMElLZTNtZGxqWUsrNmxlZ2tSdWtwdnFGdkpiQlB3TzI0K3F5dGRKSy9Wc0lNU3NwZVRqdUF5dnFkbXpuMUx5R1JOeEV2SS83Q1lFVWxCMTBGdHRrUUJtWnFuWGxhd1NrVm04SU82d05FUDh5NmxmUGVtbVJlWWFnWVlVZnRkSldnd1ZwaDg4Uk9DWUR2SjdtS3FCSjJsamdDdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_16.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3Nv L3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJ blJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci IElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgog ICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w OmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv cm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1 ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5h bWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIw MDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAw MC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxl bWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn LzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0 dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVu YzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94 bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6 Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRo b2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJ RFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFK QmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRR VTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERU RTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdK VlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4w SUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklo dmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhG S0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpH OXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4 NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15 bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJw T0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNn UEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FR TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0ty c2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lY SHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1a bGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1O c1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJU eWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5Y dmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpY NTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVl PkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFVOb2Z0 K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1 L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFj eE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpH UU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDND MXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRi UT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRL ZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhl clZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1 d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01q TUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gx anFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1H WkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpC MjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9J dFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VX UHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZT UzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9m OFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdi WUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhh cVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdP MTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2Nt bTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9m NUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81 YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpj b2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5 WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0x bVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4 MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQ Smt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5z elZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXpt S25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxR QnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAw dGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIy REJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5 QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JS ZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5n QTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFF cEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09n QXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2 eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNR Z2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1K Y0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFi NllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpV WEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFH ZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhm RXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9k R2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3Vw QlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1 RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZ SHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0 SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNt dEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09k ZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RT NWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZr S0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0y OHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3 cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNz NEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5 Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JN bzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lv RndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xH UjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxY ejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hk U1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3 eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJ K1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NX VDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1N UjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitD N2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3 M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2 bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFn QWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9M WUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBS alhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmlj bllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2 NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pl dTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZK MUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdS bGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQv a2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxB NEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdV eU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNF Q1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pD RlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNl YzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1 SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3 RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVT dmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1 S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xz cWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZq WnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1 cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcr Tmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZV SnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJu ZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhl b2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFm azN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNT R1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3Rj M1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJB cHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RV cWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1 Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhq SXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJI U3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRy R2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5 YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1 d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpz dnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlN VUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4 bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVX WEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERj N3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1Bz Q2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJC cUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRa a0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBT aUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1 Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1a eU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRt V3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlv UytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVR bkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMz dnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkcz d25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVz Z3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVv U3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJp dWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsx U29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRU bEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxY RFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9i YkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FW NWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3 N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEv eTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZw YnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVh WElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2Jq NXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJ dGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hC VGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8 L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6 UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_17.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh bWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4NmM4OGU2 NmUtM2MwMC1lNDc3LTZhYWMtNWQ1MDEyZjk1ZTZhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw MmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z MFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz YW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft bC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+ PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y MDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm ZXJlbmNlIFVSST0iI3BmeDZjODhlNjZlLTNjMDAtZTQ3Ny02YWFjLTVkNTAxMmY5NWU2YSI+PGRz OlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0 aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm b3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w OS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+cVFHemJXcUNZNEdoZGdUMzBpTmlYRHlJ Zm9jPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT aWduYXR1cmVWYWx1ZT4zMmN2VzQrN0VwdXZJYVpCaG1HcjRYVGRxU0gzcXBNWWRNdFlqQk01U3dh T0QxdUw2a1NtUEFweG1SNWIyb3JkblZ2NjV5eFFybTdENnUwdUl2RFYvVUJEaDcrakVuVkowR1lk dXZsYlNMSXpjTkZybEI3QVpPT2JqMUJvZWZJeEt0dHFkcUxHckgwKzZYMnNhaU5CVnR0VUpKb29x NnVpZ05mWmpUbkY2TGJuejJReHlBeTNKeEZvTnZHQ25meGFmU25TdWdQYmhvb2tVSElvYk12UGh2 Ym5ac0VVL3lEcUw0elYrREFkcm0xaHc0U28vVzcrVGpWdGNJOXFYc0x6WjJRcWsvdi8wOHdUR1Av eEZnWWw5SlBmN0R4eUhBVDR0ZjNEQTFoSFhBNkVaRHdOSkdkU3FWcmJFVEwyMGF4WEk4ak1WaGVR NU54Y1dFYzcrVjFvYnc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5 RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5 TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ V3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB TVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF MU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw WVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM blJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP d1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3 Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln ZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x SnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo NmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU Lzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D QXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy UDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz R2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN OU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40 eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv MnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh R3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k czpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1 cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT QU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46 b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0 YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5h bWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIw MDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAw MC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxl bWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn LzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0 dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVu YzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94 bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6 Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRo b2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJ RFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFK QmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRR VTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERU RTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdK VlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4w SUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklo dmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhG S0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpH OXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4 NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15 bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJw T0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNn UEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FR TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0ty c2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lY SHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1a bGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1O c1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJU eWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5Y dmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpY NTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVl Pkg0WUJITXBMdzBYZkZJdFVHSmhWdW93QWJmZlh1djhsZ1N3N1ZjbkhuWk5OWUF3U0M0dFU5Mndp d293c2E4dlRTWTZwWkxjK1hzRm1uY3NyS0ZQOW9helBKYnI4cEhqQmZTa3RJaFVkeEJtNkVTaWkz SUNub1YrQlp2aW9lbTkwOVdNRVlUb29HaXdBOEhqYVlFRDhqdTBlTzVrQ01QNE5veUROMXZWcmhT aXRWOHo1RHZpaXk3RWpPY1RIb3E4b0VQUUNGNHpRMVBldW9acWxQN0VDYlJQWWh1NlBSN01rT3dy ZHE1aUluWm96OFB5Mk14TnhTaU9mUHl2c2s4MHM4SVBuTUVWNFk1R2dhdVMwYnZtcVM1RHluRWI5 VHJPazdYMmE3ajE1eDZ3QlRMdzl5ZTRPcEdaRThWYU94YXFQZWJGV2w2QVEzYUp4dWkzZnJwakgr UT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRL ZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhl clZhbHVlPkl6aWpyQUpTdHJFS21YSjZacGFSL1pZWkdidG1ybmVSUERqMHRPZnpkUkR0Q3BObGMy aHp4b1dpYXBVUjRQaWQ1ZnBCUENYa2d3ZDZXb21mWCtzaWlZNEdDclFCcmJ0c1lDTm92UFVYOGJx Y1libFpYaldsVklucnpTc205RXkvNStEMjl1Mit1ZGI5ZlFGOVVxKzVzY0FSTy9HSG12Vml0N29y MDliZlVrd0p4VWNvOEtiWTRPUklraEpWWTRPdzBvVWZ3MzNxRDFzSFJ5c0VpTmdBNWxMRmF6RW9H UkcxcDg0dnFJOTdVRUkrUW1tcnFJU3grU1BKQTQzZ1pqNzRYci8yeUlnWEtVemhoSFRLQlhMc1l4 M2hhQkNLeVk3WXFSZVlCenU4WUFtbVBGeU1OV1k3YjkxcDRBQ0RrU2daTHRIZFZTeVhKZGx3OVpj d0wyei9sbmFLNWcxOU1NYm5zMXVzOVZEU2l2V0s0SVJyY0EvYVBCQkhZMUZucW1DbVNzZ2hWTkNR bngvZkRlK3FHdW1iL3R5NGpLMGN5MllIeXdCaFVWa1dHYUVaa3h4Nm9YOTlsbi9WMSs3NlY3M2tL NGJ4UjFXMS9nVXB0MjRWV3Q4MUVwU2YrNlVHa3pMK2ZNd0VqT1hlcEtSVlM4b0hGV3NlSDVxOGVX TFRDQ1NaWld2Y3Vvb2txSUhZc2l5ZmkzSmVZclZxQ1hqbm0vaGdEV0UwOFpuemUzY3FlTGs2L2RB eDB4ZkU3enpreGJnQm1neEozSUExTElkK0Ztb1ZWSlpZSTNWTm9GQUdKQ21lWG9DVDRITnJJMWlL RjMwbVo2ejBuVDQ5bmxUemJyWVozNFVkbzF5S1dWZ3VKdWtVZS9qcFVraWp6Mk0vRE9RSkhLeUw5 czdJZUtJc3pwL3VrOGxwUzl3aTdCUFk4eFozZ2lPbHFZdW1YVUEyaDNFUHpRQmhFY3lHYWk1M282 WjBFNG5lc2NlQVVCOWI1UkFHZmJkYkptUkR0c1VGUGpvVGZENVJxV1NIUkxIbVJMVEQ0OHpqeUo2 SXF0Qjk3aGVHazZhblJ4RWtzUEpvNHN5a1FSMEZJQldhSlBlZG5GaDhlakRhd1QwRGdTT21uTVpJ VldRSlNWRmNoWlk1NUdtQjNkSkZNcTRUL0hOdEhOSmErdmJzZk1jQlhYQmZBamtmaS90WEVCdS9V SmFhNnVodXJwd29obi95YjM5YjcxZWNVaGdMdHY2VE1lcWJZRjVVTUxIbi9VNXIrU2dHUi8waTYw YUhieUo0Q1BhTHhlZnJGOFByZHI4S05hZ1FmM05EaVY2d3RZVE1tM1FZWWhZME9VMzRxcldxaWFm eXVIc0tLb04yYnN4dForaitjeS9TY0VhcGtPWlNndVJ3bzlTdTJNU0hxWUJxVExhdmp3RktsUkt5 d2ZPcklzbFBTZFBsU0pHV1B4RloyWng5TnhGUGRpaTJvamFBNE0rbU9jVTlTR2duMUZ5K2srUEdo Mm9PTS83ZEwrVkhEUzUwRndXN3RZekZxWHdOUFNiRFNDZ2JGUWNmVVptSjFzbDVGN25qQWxjN1BC Z21JYmRiR3JiNU05TFF0eXFEYVRFdlpDRDA2cVNKQ3Z5K1BLWEdxaGl5UUdaVTVhNzJudnRPKzRh aGd1TS9CMTgzcVduejFOOVd5SG1BWUJrUlRYMGxKdVZrd2R5RDloOHRZMWkwbERKS1dYQmVxdTJQ NkhPZTBJSFp3ZzJXKzBzcWxaYU9hbGhjYWMwZ09uUHN6YStHWmcrZzdrdDhHUmR2MEpnSTZ1MkFK RW43S1lDNVAzN1NGOEUyK1YrVUtCK0NTa1FqWmV6b0JFR0FDKzRPOXpCN1VvUHZCTU9ZTlVvaGNu eDF4KzNuSitFcUYyZ1JlVnZPWFc1a0NIYml3WWVKZDFmam9uUjBkY3AxQkhadUlPYUdOdnJERTJC b3NXOFo5R2NKNDl1SGZoN01MYnY5VzZ4MEVvRVNKalVhYUtQaGxPV2tYRi9oU005cW9OZUpzOCt3 Q1FpK1l4RFJJbEwwc0gzN0IyK0VMN1hLOWkwR0s2SGU0WE9pUDY3OElYRU1WNjc2d3dzL2xUSllO V3h2b3pObkVDS1ZDNTlPRjZTNHN3NkhFK0VMZnhGai9BcVpMZ05vbFVNOVRENzVGTWUzV2QvdWxE N2QwTUpjaWVIcXJRUytJVnRJb0d2TkpTUHFXQUFKM0c1dWJ2enhqNmx1UWxQS05iVG4vTzV3SUJL MGtKaHhHNEhjNFdYNWEvVERocjltK0M0SXhmTmRZem4yNHJjckMvdTJTcjR6dzBZbElQM3hsTXFD TldpdThLbDY5eHczeEJrS0xmQWNtUDQ3alFqbFp1bW5vVldIMHI3TmVmbTVkYTc2ZG5kTm1nc2sv bjQ5K09OL3NjdFVLWUVEN2VXWHdQcnpUK3dIUktBVC8vZGtxK1k4RGVqZ04yek9SSU1Qb2NpMFNX MUJtUnZIOXpseE1Zdkg0N1N1UkhqNi93V2pEUWFrSkQ2TXdRbGU2NHV6OENhVDFJdS9OenBCN1c5 VWVFUWdETVVFOEFCMWxRNVdHR2M1cEN6YVhNM0h0SDA4K3h2NEtzTGtDUWpDV0NJclNjMll2OFlB SVB1WUlQM0hxaGNVeVBESmVjVnF5bjNrUUtzbXZxTlBrYS9lWGJVbkdsVmxOOW92OStWWjA3OGtv SUQvUE81SkNhZE1VbFRpVnZUVERkamVabUFxMTdRWTVwTGx2dE9PaktJUHF5aHROSEliQTlKbXc1 YUYvcTZqREdWSlZOL3FLSzg2Z2tpTysvNW9HSGJpQkpDK2lSQUkzNUZvVjVXdExHTWVpSm9RbVJs UkRaZERSNWVDcVNtc3hZdWlXVW43RC9BdWFSN0U4elBDMEZ3RmRzQ1k4SzZNNlZsN01KcTFJK094 YTdnZHRLS09IekV3ZXdVcDQ5WTNvM0RlT0ZVRjAwZy9rem9xV3gzVHB0MWZNL3hFU25RN3RZcCsr R2Y1UkNobFRQYkVZMWhNSCtiREZ5UkhHazltbGN1NXllMTRldi9aTkRoSUowZ0wxV3daQittN0xm MktBek1VY1BVU3ZzK1NyeEkvVVdwSnEvSWs1bzlpVWRlcjZET2FEd2FLLzhYREcxZWtNSXlZcXpX N3ppcHVFSmZzQWp1Ujl5ZFRhVjRGQVVUYy81dHR6TDBWd1FBUU9MQi9GNGRSNHhuSGJoOXE3K0ZF REN3K0Rjc3hvZ3BjTi9FL1FnMll0UDNPbnNZTXorczZkYmhjMys0bGlRWFBiTU82R043ait6SDcz dUhNMHZTWWswL3lSV051Q2dxMVBxTVhUblN6Q0pnNldLMFhnelpHN29ieW5ycjh5ZStINXN3T1pV YnQzQ0FzaG02aXVsQk9FbXRSbkdVam4wR2o5UGxVRHBoVnd5RFZFaThTS1hKK29oaEdVdW1CQWJU R2JLMTQzbG0yU0xGMXBFbFVOMEZFcjBucU9GRzhiRDdIZlRPOHU3bitNSC9aSEFNMlpBdkk2dGJC bGJOV2NOWm5oUUcrWmFTTXVicWJNRWdBOEtFdHNWQ2pUaXluS0xWSXJBS1YzY3J4VHpJcFJQTjhT dXNpSGJUWFZCNHo2dUQycnowVTZEUjRiSGxsRzlxZzRlUnBlNjNiMXQxZnE0UWdtaUNQVkE1YTVK TzhlSGdoK3JOZ3cxL2tVTjAzWkVUeXJVVFF0N0tOc2E2TGplRno2ZUpUUEppT284ZlZ4ZFlNNzJ0 cTNvRWpxRWE3Z09jRFhMeGlGWlYxYXlhSHI4VGlJQ0g3WFZVYVg3bkdXWjYyUUM3VGpNRlp5bytE emZxSHZOa1BLY0xTUncrWktuY2lCaGQzdXRSMHZsOVJVWEdZYkNTVmpuV2JuUVZZN0RTMEZyS1hq d2t2T29lK0NYKzgvTmM0MkV5TnpNZmxsaW5YdU9JV2I0OGNtZ3lPT2xCMzhBRGs4bTlvNWJsYWJV bG1FRE4xNi9YblhkaytXcksxQmJNUzdqMUZhWU95NTVSakdCRlVTVHZHaUl1V2pFQ3FtdWkzYlpD WW0zRExMdGFFUEg2Uy8wWCtTRWcwaGt0T2E0ZzRNM1FJdURCdUg3dWxYTXh6c2gzY3U4dGJSWklS QjdtdEladjBVaGJORUJodUQwQU9kWjZnbEpzc0tQSUhpRlNpUHFvVjBMelpaVTZqZFQvQlZBTlA5 SE5BVDFQWTU1SUR3OFRIcmtDdDRIcWc2WU8zSjVSa3FibjJvU2h2QkcvOTNwblQ5Vy80VWE4ZG9R UXdsanl2UDFpWUw3SzFDRndHR045dGRSK25UK0ZwWWV6QjdxZEU4ZS9RNDkvc0QrYklLVTNycVRW ZmUzQTZwRVNlekZJbzBsaUg3eVU0Y3BFQjFNdGhubkRhRkdINE9FaDJvckNMam5KOEhXL1NMdEVB UThnWHE4cWpqVTBHdFdITFVFejRIQmZSOGVNWjJXb1NBdUx2WUNHWW5sRUtMZmhTVTNtdUtIR0pp eDdRRzJRNktGT3liTkxqL0hGcm95MnlhQUVHY3hXeG5lWUNqVkpDZktrVkhoajBEOVo4eGFWaGk5 TW8wdFdBQzV1Y0Zrc25zRzQvYjNBRVlaSHRHSFg2SUFCdmFDbERTQm02MzhsQlRtRGFnYVlTMmpx OGQ5WTdEYWQ0OU5Yb1ZxQm5yaUszOWgvUHZrNXdDcW50U2M0WDBuQ2hzb3hKS2c4Yk41cm1SSGZY bUV2azNsang0WVhhOVZxVlNnZ2k1b3M4T3R3a2tkYWlBM1BDbVNUMVR3N3JOK0hCOUM0MzYyUTN1 aUlYa0d6TmljRjdCRkM4NEVQN1lpdUJVWUswVkVmL3g2eDcxT3kyVzVjdXdxem9sSm9scDhVdXAy QldWYjZXSC9VcTZnd0ZQOCtWRWREKzRyeTlvRmhQMXo0Y2RnTy95eEd3MFl3dFhhUGU2ZkdsTVJS dTNYelVZbWI3cTU1RUUveGFvcFppNEd2TGdiV215L3JQVnVuZHhIeHVLZm0vejc0WjlCbnZsN0x1 WTV5RnB0Syt2Wm1WY25hejFxUXZocTBxMklEREdRQ3IxOW9UdVNwZGo1TUdwM3hDL2FSdE9lbFA4 THZzYlRnS3lRRHNzTVVrM2psL0dIV2svQWRzZ0lPSko3YmxjZzcwZnB2WU04ajhsL0hxS0txenp2 Wlp3emJSNFFhbGt2b01iZ0ZjQVMrcXlzV3lYR05NQUxpOFpmcWZxK3pTbHpwOEhPMGsxNWlHRnhm ZTYzdW9xUUxETEt0dUJrZlBDNndGZDJqekNYZThrNFBHczZSMDdtcmM3dUIxZWZuWlRsYkxyMGhI cDhuYkpyZHRuRUN3Mi9tQ0NsVDVQUys1Yzc5VjlZaGI5ZmpyMGlNeVF5c0p5WlZ4MW56R1JnQzdx aUxnbEVHWHF4cDFqMFowZU5YcEFlOUMrVTNiQVJ5Q0dYb25JekQ2cGFTNExhalNtcU1iWmxHbHhS RTRFd2EvTWlaWHFQb2V1ZEpkWWx6OUN6VmxRTzJvU1Z5Vy9YOGpNY2pmeVlXNXI0UG91akZMc2tN MnBFWUJaZDdtUHlyR2xseEd3S0hjUjhWUndaN09iWWRibzlCd1BqY3dtNWhHSitncWJuV2MwdXFP K1NDQUQvRzVRRmVrUHFZMDlXZHBNdEhJcC93cnlOY2syK202Q0pTeDlsYUdYTTc4dW9Cc29udjNu SHBXWWdrQVVzTzNSRHczN2pOZS8rYmsyYktsPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6 Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRp b24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_18.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZmRiYjcxODAtNWQ1NC1lNTUzLWYyMjMtMDYzN2U3ZTBiZjBmIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGZkYmI3MTgwLTVkNTQtZTU1My1mMjIzLTA2MzdlN2UwYmYwZiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+OEJBMlk5cTFSVXFtS0FwYWJjNGV4MktCTWEwPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5UNEVWZ3QveUllSlpjS0FQZmFXU3ZjR0lBcHVDRmphWDNtcWFheE5aelNSdXRkSnNJazdqR0V4aUpIZ25GUmFEZ1NqRHJxWlFVa29VbDRaT2FkZGFMWFBLSHE1WVI5a0dVY1dVNWZGZmMxR3pQaHJqTFFsMDRwejVFdWl6VW0xWHBCY0hHMDIvd0lMWC9EMW5YMnREanRHTmVnQnZZMzFHVUpQSWVrMVIzenY4UTlDazVFcGZqcDVXWWdOYUZrYUxQZ08zSUNNcjZDc3p1Sk5XY1d3cm1GelFudnZsRGNWei9UOGVjdWp1NURPRUZkQkdJbFRIWXpTaTNtVUt6ekpMSDF2OGIvOWY1WHJ2UU9TUXFzNmcrVFZ3ODYxcUJ1Mkk3dC9SRHV5R21FV29Oa1I2aWQ2d2RiemRxV0w2QXltbDVsZGxXRmtPT091aU9vNGQxSHdzOEE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFVOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_21.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4OTYzYzIwZjItMWJhNy1iNzNiLTIwYjAtOThlZDFmYjJkNzRhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0wOFQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4OTYzYzIwZjItMWJhNy1iNzNiLTIwYjAtOThlZDFmYjJkNzRhIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5VRTN0SGZQNkhZNXZwNERLZm9iMXEvREhXRHc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPjJsSXR5Z3FlQWk2bllwd3UycnNSVWE1UnJaZjJzZExqYmFlTnBWRDVkTUp6UEZ3YnFWYmtuRllSZzU0U3lpUVBTcHA3S1c4NU9JUFZzekhiN3Y1aVZ2QURqckY4YkdxeWVxRWQyaG1yYkIxcUFJUWFHNVV2NE9WWGtiMmJCQ2RxRDNFbVVKNlF2UWlHWDR0MnlBSHQ1TFRKL3ZnRTNtR25kbGNwVmdrQzZkc0tHYXYzWDNmdEVWVDM1WjNnTTRSVHNhVlhKMGhkeFErQUl5amlKcDArV1BUSUtVUmhXelJLMWM0cmtDSUEybktuaTh4N2MxWjNvbkt4cG5XWTZZLzl5eEs0dTRjMGkxcEdnYzdVeWFJZkprR01MN3RFb0lsVlhNWFJUdVRUaGltQWFYNWNrQzVuQjFaaVhrT0JuYVZlUW9GV095RzZkajd5bDBoQ051TGNOUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTA4VDAxOjA1OjAwWiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMDhUMDE6MTA6MDBaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTA4VDAxOjAwOjAwWiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTA4VDAxOjEwOjAwWiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_22.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MTQxNjM5NzYtMTkxYS1iZGU0LWRlN2QtNjEzYzc4YzE2Y2YzIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNy0wNy0xNVQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4MTQxNjM5NzYtMTkxYS1iZGU0LWRlN2QtNjEzYzc4YzE2Y2YzIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT50RDFUU3k4Qm9SNjhZcFF3UXI0U2Zza1RRV009PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlBCczZ3d0F4TGZSLzhuQkZOVlArTFpWVk1rRy9UUUpBNW43bTdLVFZDRFAvN25pSTZWQXRSNjBjSE1vNXhnTmFxY1dtbkgxc01QK3IzS2g3ekc4MFRSWHFUYnZaUmJiQ0dpRnF6dEZmT3dVbmV4ZG5qMWl5R2QzbEd4TXhpNmgrdXovSFE1allDcmJoUjRpTWJWdFVzRVVubnVJaTY3UFcyVGVGQkFSQkROOCt5Ry9qdWhSU20vajBqNG8xakxGc2MxN2lDMkpNT1V1cUYrN2pYaVppSTFSOTBHMy9NOXVmamVSTWM5dXVFYng4TWduNVh3RS83TVZVY3N3M3dYc243cTAyN3BmNWJVS0R4cTNzVjB1QWZMc2wzS2Rob1dVaFUrRU9uZitjZlpkdVFsNTZxZ3h0Vk12VUdxT3Z2NXhVRkw5S2ZoWHZkM2V6ejZ1SG1aWUNoZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMTE3LTA3LTE1VDIzOjA1OjAwWiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIxMTctMDctMTVUMjM6MTA6MDBaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMTE3LTA3LTE1VDIzOjAwOjAwWiIgTm90T25PckFmdGVyPSIyMTE3LTA3LTE1VDIzOjEwOjAwWiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_23.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0xMVQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgo8c2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjx4ZW5jOkVuY3J5cHRlZERhdGEgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50Ij48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIvPjxkc2lnOktleUluZm8geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PHhlbmM6RW5jcnlwdGVkS2V5Pjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48L3hlbmM6RW5jcnlwdGlvbk1ldGhvZD48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFPdnBadEpOdFEvck1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3hOREF4TkRnMU4xb1lEekl4TVRZd016QTRNREUwT0RVM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZVbGNpd0RQQ0o5Slh5MU5zeEtmcXlPZkxRWEZLS0dnTktLUkx6TEFXTzQzR2dRWXJWNjdRYUFueTVMdmdPYTgxS1FPWDRJdmpKeTBuZC9Wck82akc5cFRkTVI5dkZIVDBUdTNXMVFVc3lQUFNRcXBLWHdiMlpDU1hOZ2hZRDVnQnJOdG1PeEFPczFBeng1cW1JekJKNEYwUmtSaXZjZGJYU2ZCVUJMcENuMU0yODVjNHRrNVNFdm9SZ0JlaXNMSkpEQjdobXlsQTFWNi8rQk4rTjZiM00rWlpHLy9DVHZPakpLZ253a01BTHpYYlBiUVdhMGtwYk1MRE16OEtyMnBPRExLYjNyR21kZjRQNkE5YUE0MWs2TDRjbFRzTmRjSzdad0oyZkdGNzlXR3pFNlJMeUJYMlVTM2dQSFVYdC9XTVFaWHlVTE8zZXhpVERzUVhXRmY4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnUVFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUIzZlFaejJxTkFvL3dvaFBOYVIydUFha0x0MjVjS3JzYmduM1h3TytYK0RSSDRucU1TWmtIZExHcjgyeEQzaTMzQkxTUXdYekZlY0VOK0NBOFNscE5vSVhId2s2RDZWM3VFQlNqS2VtWnRKRkNKcWU4ZCs1cXQzR1Y1MEFLbXRFdDJOYzdCOTRUTjh4QjVFbVpsYWRuVEpXY0JnU3V1ejFoTFhRUTAyZEozZERxOEZNbHlSNzBTMkRUdHVQdTBpMi9mNkt0cmxtbU5zVTI0QXErZkN6RUc0M05xU2hPTWVNNXJEeExzU0pDdGpmTVJ3RzhZZXlOZjZjQ01TTXhZQUpmclR5aitBUzhSdFpRTkdGN3RYK2V4RVdIT2YxQzlDQnpIdEtSQ2xCUkw2ekRqbHBQQ0lEd2NNRmk4Tlh2YWlWY2x4SXEzWGRmcXhpR0JCRWxka2hnWjwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjx4ZW5jOkNpcGhlckRhdGE+PHhlbmM6Q2lwaGVyVmFsdWU+R1dGZ0hlcm5wNzlGaytDNStyWTFpT2tSNDJuQ3RKMDJMVTYvUE9WbUxKdGkybTVqTTNpUWFEOEtWYzZZb21IdVRZQWJub0NoZXdGT0gzNTR6cjk0WjB4SnE4NFMvcjVPT0orRHVka0czOEFFd2F4bmhKbHlEbGlIVGtkemJNcnJmcmVaeXB2cFZHN3QwNi9tN0xjSjYwbFhHWFp0YWo4RGNhTkVXeWN3dlN6TVZ2NGFaUWhZT1hTWHM0YzV3OFVtSjNONlJ5NFdqZ2JOQ05lQlZJT3JZVTJlV0VHQXhjblBEV1ZQVTNkRm9QaU5wbmNPVmtHY21HUDN4c2Y0RWhPT2FKNXBkSDRKZFVqVnZ4Szc3a1U1UXlBM3Jzakt6R3NvSDR6cklITkUzUUltcG9LYm8wM1NXeS80WDg3QmpiL1BaNDEzcG0xbEVWODU0UjY0RHdhV0VnPT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZEtleT48L2RzaWc6S2V5SW5mbz4KICAgPHhlbmM6Q2lwaGVyRGF0YT4KICAgICAgPHhlbmM6Q2lwaGVyVmFsdWU+MVFrRjZsR3I5T0xnRVhHa0JQYkVDbnVHYVdvY3hMdXg1ZjZQSUJKbjdVYXA5NlFhSkhCVFVjekdvOHZoUnVtdHBzQ2hPK1UvUWxScjN2bHgzTWZtTFRpVWFYb3RrOHBHczRoMWtBd3lWZHJtQ21YMXdRNkkyQjN3aXlWajZUSk9BTDUra0F6L3NIaXlINFdpWVFoNy9MK0dNbGwxNkNMMFA4eEpSb0hhS1pnMEtnTk5VcFZiNFkxcjVNWkkwS2Ezckw5ZEJidEZDTjAxekxhYlQyS05LelA5M2FReGhWdSt1YkNkZVRYZHcranpZeXdpNGlzdHFwU1NaaW5oaVUxTUpPY1I2YVpxZTVWajI1TkxtZGlsa08rMWIrY2dETjVnaEYrTHJtTE40THorbER4aDNFRzRIMmVOZkpEcGRZY0FMVGp4TlljNllDNlV4bEFMTHl4cDJ1Z2I5L0NMQTMyNFpLbGhOVDNzc21VUzdxVmFxM3BIVzgrME5vTVU3azY5bS9vK25PWm9vTWhhWUhOaFpPMzY0Mk8xbi91cE1tdG54WXd6TnBURVFKKytjVTJ2dTIra3V2Y0lzU3JGd0lxWTYxZkRnNEI3T0R6M1QwdEFiTVFJY2k4Y0oyTU1QUHZnQ1JBMlBwWStQNEtBU2pqS2tGOGxtNUpJbFVYV1dSYzFUQy96UUQwd2FrMEgwdEJ1YU5PM01OUUFaTDJWcGNzTDJ5dzZVWnhtYTFQdUFrK3IxSmdyR0dtSjF3OTlzdjBMdkhnSmtJZWg3NjNiWFExNWhSMzFJQ2pESUlKR2VtVDYxdUpDYUthV3Z0T2F5UXR5SkMvWmNiOUhiOXlaUG1yOVFmUnJjd1lhZjJINStwQnZGSTl1NHdPdkJKMzk0aE1hMlJPS3ptWnFwZS9jMjJSMVgyWE5pYU9ZclRWUStpVnhHajVLUjd1QjFGNWVkMjZkOW95Y0VlUTR0ZTltaHdxWWpPMXhIcWl3WlJ2OUVZZWZrVjg5VG96VUdqcmc3bllhMldZaGJmSlcrL3ZxOFQ4VXgyM1NaeXlTb045Ulp4OXljaXp2ZUQyY0txa215QUYvdmdGZ01BN0Z3bHY5Y0szNlFmWmJYWUFKNEwwMmhNUjdKWHUrQlM4blVKWC81TGMzd04yM3psaUo3S1k0Z3NOZDJ0OElZN1lFS2VRVU9OVEg2T1k1MXhhVktDTUhtZVZ6NG1oZy9jZHU3aFAwaHBnbXRGUzlNNG1yalFHMVN5cmoxT2ZSZTduTW4vczk5d0hPeFY2TFdUeEdEZjU5TFJCRHp0ZmtCRE5tKzNiRUFORzB1NXJwNTYrcmUvU1pFMzVVUkIxS1FGeGd4ajNncmloM1FTSjY3WmV2a1UvNWVFMXQwSVhVM045d2gwOEU3WWQ1Y1hhbmhrQSsrWm1hQ1hWWDMweU1YcUpDZmtKWGZ1aFNHbks1YnpxL1ZsdnNLNUVPR1RnZjN4Y3dMcDlSSGxNZE90S21XNjMwdlNqdHREYnJ0a0szdStLZHZ4bGhXTFBNRURrQ08wR0NyWXB5V0NMNWRYSks4MXhYNWxESUNGQUxLVXdyTUtRbGtKc2dyQnVocHlzaUNtLzVGb3R4NnQyYUtGVS90eVhXUnlLdnQ5NTE1QUI2TDZPZVNrLzBIMXBaQkxXQ2RRSm1pTnBNdGQyZUg2TXVvUUxrbjRmS3Uya2wyRVBTRS9HcG5SRW5XVW9lRUJQR1JwUlhUdUZzYUN0bmMvdWZKU1EyOStWTkxpK2Z5aWdyOW1xT2FtRkpyeE1uRUViSm93bFIrTmZ3aHJ3UzBTUXZaQTdMSXRkdSszV3VtL0tZci9ZbjEwNVdUYnFCR1NGS0gzZjdaZnJtTXdPMmdDNUJKVjJmWkYyVEVpWitZY2N0emFzL0p5MVI0TmVKdnVDOTFwZlpsZUJWeWdKYVNCZFArRmZqbC9ZYWwrRDBXQlZ5NVBmUENvU1BQc2RSTEVRZFhXdElxR3psSU9rY1dVWkViWmh3TE5ycm41cDBPbi9YUENMYjdTWHJ2TFRjWU5KMlhrMm5zZGIzWVIrUnRNS3I0L2VqckdUbWY4UEYvZU9FQ2lXTkNCdzVBNHU4L01DcjYxWkRnd3RUaXlrdWhQNVlUTTladGdLREJrOVRDRFFwRFFyeTJWSE9LOUtNMVBQZENvL0lPeDkzZDBsKzVhZVlIT3lleS91R2U0WHM3a09oQ2IyS2dEY0l1RGpXS1RqMTRKTFUwWS83VWM1U01kWEJHUFZEVnZEdlluLzU4L1cwUkxnbzE1TEEzT2ZSbXAxelM4eUxra3FqVmFLcU5ZWXBGN3ZsMVB6dWRIdEVlWGpVKzcxd2hTdGNvblhCVTJVZC9ERE9mVnF1cWlJNlVnb0lleExpR1ovNUZxUjRTNDZKR1JvSHVRN01ucDV4YklBSzhHL1pmMlhZVGtnYVNIU3pQMHB0V3hvcU9wV3h3VW5pS1loc1dJWU1UQ1dvdSttR2lNYnNtWkNDbG5vYnErZndiOGNWOExRQVpDRTZZZHp5d3F4a1ordDNjdXRENXc3M0RBUkxlUGUvWWxnZzFaUnRTQUR4YUtkNE5kTlh4NnV3LzF2V1NWd3dxc1JXK29HSFZVNi9ETXFTQk8vOUo0blloSkhoYVEwYUFwZXN6QVNQUGd0dTBpc1E0R1lwN3A2T25JME1lNmtSUWNIcDd0OUQyWVF0R1RBbWxUNUdCKzNqdXF3QkcvaTRYSGZrNFdCL0RPdDJyTDFOTjVya1M1NmN5SHE2bW8yQ3BEam01Z09RR1BZcnBVRlpsZVVhc1puK2k1c3h3aStnallyYTU2Rk96YnZ5ak5lOWh1SUVHQzkwN0FPekFPTE82ejdlUXNNdm1oODh6ZGVRYjJ5MnR2M1V5S2tXTUdLTys5U3Y5YUw5bWJ0OXZkaGllTytjSENIMmlmKzhpUDdqaTY5Rk5OOGhlc0VGL1hua21INFlkNkxtTmI3VGlTUXpvSDhsTm1ScGpnQjQ1YitKT0EvcEE3SUhlb093aEhjQ253ZXQ1NUFPM0FPY05reDJnSmRaTkZlTm1lTWw4Z1N4SEpVREFsbGxHSlFWQUIxd3Y2ZU1sa3VFZXd0dDlMa0ZDTlNFRTllSWpFYi9neEFyWVhnTDBDTGhONGUzTTBVOG9lOTZaNDFCVVNTbFlHc2FwQ0EzUDJ0MWI0N1RGNHhieHIrejU5RmtWbE5QYjlyZU1pWUNRR21kbmFUa05Jam03OTRyTGxza3FZaVZheWJOUHdJWkFJMXk3OXVEVG84M1dYWUh0cUcwVXRMYmVSeWN4K2pzQ1J0aXZybjNUUXJQanB1RE5ZNlB4MVRtQnBiTzBRUG5zZCtmSkhqWnBkdllkbEI4WEx2MHlVVkxVSGpJQWh0NnIrMDFJR1ArSnN5UFM0QXJZRmJLZ20rNEVMRE4wWGs1YVhvL1FhVEhtaVZqdkFxaW1qNUVZYzNiZC9KTXViSXhhS3dvNm1JbzlvSjhWT2dHdWZZOFY0RUFETHVxSTVGRXZPMWZTUHMzbVArTkVLWlZNMmpIN3BmRzBqSk1hNE1KSDlDdUVEM1k4Q0dmeFhFMXF3d2hWQzU3OHhFdTF2ak0yVHh0TWdkejJTYXVBKzJmb3d1a2VGTEs5K2M1MjA5VWpacy9jUTFWTmphbGR2L2V1Q3hEQXJuRWtkMG9xcXhGYUc5OTNtL1M0ZEp0azVJeUdCM2xRU2hOZkhxUXBsOWx5RElDZW5hb3dWZmJ0YjJ1aWJacWFqbmFidVcxVHZYSXM2d3BQRUpYQ0didXlRN254U00xOGFKUUF5WVE0OXBDSmVOcU9LMHNvRVUzWDQ4L0tBbDVWNzZTNlZ3dEFjd2VSbGdnbjg2K0RwbC9sZ3JOWkRvUzlHQTRqQkdDZWUrcVQrd0l1b1Q1dE85V0VBVXkxcDdlaTVRUU5DSmV4dWl2cHUxakdodW1DYUI0Q1o4RWt3SHFXd0RaZENXNjdyT1RVMjk2cmc5Um9ZZkplV2NKVlFDWUlqTUIzLy9kUE9YVFVYd0dHTzVwcmFjSmlmbnR4cjA3MXdPWFBGbDNFSXY0TlgvaEdScUJjcU5vNUtVV2ppLzB0UTZhSjBZeVRIcld3MEhlOXNZL2ZKOUEwdGtHTmN4bkJlTCt5bGpkNkhEdTZGUkZYcGFySnZpdFlkYXBoNWVtZUJjbmQwZDFzckJJY0xZYmZWb2JmME5PT0NCWDVvemk0MndxaFRZUXpWUHY4TzFnRVVWb1hBajVxd2czNkRDakhSMjN2VEJnYnJFRTM3ZmpvTVNhdmg4R240dnFSTXA0T0VjbkFMWXRVbzkwREVQZ1JHUDE4R3c5T3FYaUhBQmlvZHR3ckhBaGkrQXVRckVkQ0JsQmZuSFpaZ3ZVYWk2TlQ4RVM5SG9hd1krV3VCM0pxeUpZUHgyRmxITUZTYnE5NlpjRFU5T3BKL01QWTZmYVdTVXczVmVDUUs1dFBHME5MdzdUMG1EbXg5NEI0YzVDWmtic1pCb1lqNENvMCtDZHFmZTZPMERjcXR4RVRsWmhtRXE0bGMxZTd3ak1HMEFHMGx0cERsdGErVmJoSG1mNjVjcVRqWk9uT240ZmJLODN4T0ZRVFJGK2IrRk9sWHE0Q2dkVitReW41WVUreFI0UG45ZzkzN3pzZEdKNUxXQ0xnVUpJbE1IaGZoTmc4VkVYckRKbGgvUW52cGovZUJibjdxNVpBMUFpem4rdDkrL2psVEV3a2xlcU04NFRLZHpSOUlNTzlTYktBb3d3bTJFTkk3Wms1Nk9zV1JZc3E0WWpHSWRGRkFBY3R5alFsYXlpazZ0Z1lVZHVKZ1ZyaDY4c1ZqRmo0RngyZXV4TWRNOEI5cEJGTkdHQ1VBc1k5S2NyUU5RVnR1ZkFQYVkzN3ZjUnFtSFB0dUlPNVZObWI3VUJtN1VNUXlEVTNTWHRRekpLNm45bCtzb1lPVHdaQ0tJL2pHdjJyYVBMZkMwTzN2RVo5eDI0QnNFMk9DZXl1YWlOcEhlQ2tzTFM5Rnh6ZmN6YnJKdUMrUTRTS2RUdGtGN2lHajZmR1dCVVhRbnkzZWxoaVlyTU9idThvd2FKck1NV2hEeUJIaFpzMmEwUVhvRlFKaDBYQm5tOHlmS0xBcDFTSjl5QllWR1N6VTByRFZaZHF5TnFBQ3dLWjhRcXUxOEdTZ3M1U2gzajlHOUcybkIwMmRpTFJXK2FLYldlZHlWdDFuTVFWU1c1UkxMVXlnaUFOc2poWTFqTGlrYXVWczRLQ0YxL3kyMlIxa1VNdCszQ0I3N3VIK2RlN1lyazBPZzdjZFkxRUNZd2xsK0MwSUJsTXVEdnBTSnF3bzk2ZGNlcDArTWdkM1AwWVFuUHgrMXJ1ZVVFbE9wc1RsdGNVbTQ4dTBNYndQT05xQjNxWkpxclpQSjNFamVOVm9BaVgraUFCL0pWS1R0S0lWNldKMkZzcTcxOTVQbThvWm1yV1lFS1JhVDNWNENyTVM0dmI5RFVkUHZVT01XRlBRWE5iNHlCOFFPZDl2ak4yK3JLSkxjWFk2b1B6MzQrUkVFTlZhQ0p6NkZMb2JHTG5CdzdhQ1VkQzI1c2krTGo3b0RWWndzSnJ3RG9wS09OUUN3djNVRXl3VUQwblFFOEk1ZU1JeVhpaXhJUWNaNEdNd3N0ZldDVzNhVkFMUUNQOEc3WXowSnZvblBEK21hVXhIL3Z2aDVDbVlpSUFBb2dSSmZqTnhNa29GYmZLZE4yNSs5R3JnS1V4TkoxQ2k3cXpFWE9HRm9saFc0R2U0UnlKZWRnZC9rV3FVa2ZZRkJoSERJbEVTWUNrTkxJc0FHbHJsKzZOOWp3QUFIRk1pSUVkWHhPWmFJVmVrTTNRVTFRSnRxYjFrYS9aMktoRnd1cDN5OEFjVDZnbkZxMm93YnN2ZThqcUZhRUJQTDUwclJRdjhhby8wWDk4WkNHY080eVdhejNYMDB0RytKaC95Wk1CZExBL0c0TkNxdlo1M3I2Q01VRE1DcU9CbGVvTVo3ZGk4Z09iWG1tSXJaQjNJMlNFRmFaT1NXR2hSb3BFTkF6bVErVTdlQXpkRUdXR0hIN09mcVdGYXI4TU51UWU1N3ozdWhGbWJndFpqRHdBcXdsWTNybXNRSzYzREZiTlV4MmxEalJ2YTRwV3ozelprWGNyV3FYMWpNN1RGT1RJYjdIZlJ5bVVWb3dmblpsSGpCVHN2eE1BbVBWdWdPb0RjVDVjTXVGVEdIMktWV0NCOHpxSzdrVUpGWjU0ckZ4bitqZTI0RFloRXVtSmxOb2hmZlhOTGVvSkVDYkhLcEQ2RzBjZ0NaVDRobVEvMldZY1BpTlNoQ3JLYWJ6M3FjRXA3VmF2cGkyKy9PQXR3bFVGandwSkdqeXlvTzdiSURtQVZra2RBYkhoclVPSFZVaWFTNlRMNEJXbVZDRU1RR0ZPalhoQU9NRFBFdHhRdzBsdWEvaUpEVmdKV25WdnBPZ1d1QVJycXlzVzZVUnl1UEMzdk4yaHMxcmdWSTg0ZzZWRStIUzZwSWloQytYNExmRGw0d01jQmF3SldHQU9MSjhvR1J1UGI1RkcwWU80Zk1IaWkyazBYMzFxSDBsOVZjeC9hVkpqNWRhajdrRlJRbDJVWm4xUXdIbnFQcEYwUE5uMWY3ZnZ6Sis1L2g4TnUrbnl2V29ILzNOZVdzYVlEWWxoRDg1ZHNiR0FuMHVIZzc3cmtWdkdFdzB2ZDIvdVNvOEZDRk9wTit5bHZ3SUU4dUlRNitSVlJUT1VLY1R0RHlCNjZkQjVObzhQb1BjTFdXbTFadzNjU0RSUUtlMXdaNkNDcGV6cjZwWStoQURkUTZveGJmcnFKVzVXVzBqNkdrYyttWUk4WUswdWJWdVBoaTVMWGFRWjhNYlgyZEIrdzd0cktzZ2FYU1dyS2RtUHlGNXRUenB0R2R6ekpUbVBnZ2Q2MG8zcWhnd1A2LzVDSllZanZJdk1VMEpUQmpjalFDUjh3enhaVlJ1U1RZaUp1WE0rcERoZUlIZXdGVFRyeVZJRGRJTUpLcGV4dWhaN1gzV3VTTkV3RzE3YkpORU90MGY1TWh1MitzVTRqb1ZlU2lNTC8vSzFYV1dkZWhYMHZYUmp4aUluWEZYZWExTU1mS1h4aXBIZVpjN2l1OThkc3RYK2ovaHR6NHJCU1VneVBGMER6ZWhWM1dTUXI1TXhKVUZWd0t3OWROSXBWS21QUm0yV2dnRllNSjVHYkpXR0xrYjByVGNuSXVsS0wyTTBCZlNZL2g4UFNiS1lHMlNVczZRNFZaME9Cckc1ZVlhanBQbm5vdUZ6YThUMmpzb3hmRHhXYTBCM2x1TUhLd1ZFd1UwaG95RUNwWjRydmZBSldFK212R0JiUEI5SC9hL0RqVjNYYUtSRUdlZ1pFVjl1Zi8ycHZ3a2crS0hyajNnWDJ0d2kxOG5CVFk0cW9hcVVaWTFRdHZkZW5ReHo1d2lSRkp0VGJOaHlPUkFoelNpa3JyRElpRytndFMvS282ZWZ3WUxYZWZxN01WL1pnN0VCY2lQdk8weHgvRmo3Skk5QlJUK0RpZmtqQ3ZwWWgxeEJueVIvU05ya1h3dldiMkhHR1paY0MydzU5SS9pbkJueU5CbFVpR25rd21lSG9sUGh1UTMySVh5OURZODUwSVlkZWZHQXd3VDlPWkhaV1NiOTVUK0wyZm9TSDRnek0vRm5XUEd2SUcyZkYwTDI0STBScE5EbEgvVmREQ0R6dFlIT0Z4a1I2cUFzNjVTait3VHhYdjF3NmRSMmxNL0R5cklNL3hTSitBT2p3U3FLc09KbUdnVUk3Wmx6alBLOFBSOGd6Q1BNYTh1TGVWL1pjUk1GdWdqWlNnMW5SQUxaN3NJZk5mVW1ockRJWnptR20ycUt5VXhCZkRFS3RPRXM0dTdBZENpWUFIcXkyWi9SVHgxZGhEVE9qcXFqSThxbUdRdGlxZUhJNDcrbUMzL2poRWdGdlZKeTV6Y05meks2MTlQZlVnaEpCdnhQVnhFMnA3YjBzZnhRVGZ2aUNlalBmZXAzVXdzM2grVE9rSWt6Zk93SUdoMkNTcmJGUHpvQ2tOVkxxNE1iRkJOMUxPZUtjMHZ6NnZPalZBUkltNllpNjNKT2p0S1BZdTMxcXY4STlVR3lXZEdNcDVjMUxhMjlpM3ZQazhENC9EcklPcEttNVhPU0MxVzhxQ2JpL1ZJaXR3MVVaUHZsbjlOS0E3OU5Gekd2SjQrOWswK0hTRVFHNGl3bUFhc3lBMjZjQUQvVXF4SUFuVEEyaXhNUmlQTXoyeW1BRTNvdjYzdDhMQ2JtcmJNc1VUT1ZySllnZWxkaTBaWXRjTDdoMlFuRzk2enZUamd6Q1pWL0U1aE84ZzNYSzIxVlJ4Z1FCam5ndU15Y0tSSG1LeTFkd1QvbzE3YU04bjNxa3VzMjBic2RRQkUxTEY1Ull0ei9iUDlOdllZRjN5N2tMbWpDdGRxYlRPWVZXZzI2K094Qjk1cXUvUnB0cElDYVFBM2w4L1VZUzh5Q1B3TEZLQ2tJUFJ1a1FtMk5XTTlLN2l5WmY0c0ZvK05WdENMZnNRTHE0MDh2OTYzQ1JkRUJuSjBCZ3ZCSk1jOElObWZ6SnVybWZiUVMwUTZudFRScFFjRUhQVTRxK0g0UnE5RDBDZTgvRGFFWnozbDgrOUVHdEUzRlNrK2YvVzVXcEU3bFcwaEplUlIraWlhTkphQzVxTkQyT2E0dnczQlYzRzVHek0vcVVHRHZyWGk3MjRob2lLWlVRTXFiOG9LcWhoYVJxZXhtU0c3Wm5tZzNDNFpUQWlLQkR2OUVVbmdZWGxqNW5wWGZEYTFLckNaTCs2U2VsWXFiNm96anUyKzBZTDA1bzJ1Tmd5bUE3ZTUrUFdNS3BKR2sxRURXTzV3TVZwU1RGVnFZTjlCRmV2d2p1aGVKU0NrUXhWMm5EQTIva0hMWjhmSWNlaFN4K2x5a1hVNzNob3lxYUJEclNNMU9Hem9keS9JN01NVElrRlZ0d1J5ZEt1VGdpcWNCc1RwaytZWkZkVnZQOFYwMlVFUmlWUFdMa2RZOGVmcjU3L2pmVTB5eDBDcUpCUVBWV21ITmhCSFhvbGFTN1pWbTNMbWhtenVFN3h3cW5QclloSW5GZVFHYWJOYWs5WW83eDhvcGFkOWM2dzVwYVQzY3hRSkxjdmVxSU5jbmZuVXNBbjJ3ZjQ0YmNQKzJxRXlHR3NsaFdXN1lURWc5amZUWm54LzkrQ21HTk5nemNSZGtHYStRMUYwRWRLczhpdngwTm5ZWnNvU1NGZ3VrbEt1alUvTEYyZHFQRHNkYVdVVlFqbjQxcmlONVdGZDQvWTl2K3ZmVlBpRVlGdG5CQjlYcGhFbFMwSkVneWdOaitjbkhnVWY2NHNBY0gxSFpIU2NiTmRKNW5FTjNOVnJHK1hPUWU0SkFmaGh1dmFua1dtR1RBVyt0UE5MZUc0K00yOE9rTzg4VTFLcDhpNk0vRnZuU1o4N2lIa09yUXNtNisyZU1QaFBkNkovWEdlQ0JmQ2M1TGlGTTJFK1pDajF0Nk1WRFdTOTlTeDQ0QTVJYU1GSUE1WDRJNkh0aUoxRFE3RUtoT2pKRWl4UmhNTnRGcXpMN1Nkd24xbXY5aVhZa3dNM3MxM2ttbVUrTzg0QUxGN2FmMFhxdTZUK3ZQS2YvQkRKYzd2RjJDQ0V5My9Pc1ZGbW1Ba0YrS2Jqek42TTdibz08L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_24.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNi0wMy0wOFQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgo8c2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjx4ZW5jOkVuY3J5cHRlZERhdGEgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50Ij48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIvPjxkc2lnOktleUluZm8geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PHhlbmM6RW5jcnlwdGVkS2V5Pjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48L3hlbmM6RW5jcnlwdGlvbk1ldGhvZD48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFPdnBadEpOdFEvck1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3hOREF4TkRnMU4xb1lEekl4TVRZd016QTRNREUwT0RVM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZVbGNpd0RQQ0o5Slh5MU5zeEtmcXlPZkxRWEZLS0dnTktLUkx6TEFXTzQzR2dRWXJWNjdRYUFueTVMdmdPYTgxS1FPWDRJdmpKeTBuZC9Wck82akc5cFRkTVI5dkZIVDBUdTNXMVFVc3lQUFNRcXBLWHdiMlpDU1hOZ2hZRDVnQnJOdG1PeEFPczFBeng1cW1JekJKNEYwUmtSaXZjZGJYU2ZCVUJMcENuMU0yODVjNHRrNVNFdm9SZ0JlaXNMSkpEQjdobXlsQTFWNi8rQk4rTjZiM00rWlpHLy9DVHZPakpLZ253a01BTHpYYlBiUVdhMGtwYk1MRE16OEtyMnBPRExLYjNyR21kZjRQNkE5YUE0MWs2TDRjbFRzTmRjSzdad0oyZkdGNzlXR3pFNlJMeUJYMlVTM2dQSFVYdC9XTVFaWHlVTE8zZXhpVERzUVhXRmY4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnUVFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUIzZlFaejJxTkFvL3dvaFBOYVIydUFha0x0MjVjS3JzYmduM1h3TytYK0RSSDRucU1TWmtIZExHcjgyeEQzaTMzQkxTUXdYekZlY0VOK0NBOFNscE5vSVhId2s2RDZWM3VFQlNqS2VtWnRKRkNKcWU4ZCs1cXQzR1Y1MEFLbXRFdDJOYzdCOTRUTjh4QjVFbVpsYWRuVEpXY0JnU3V1ejFoTFhRUTAyZEozZERxOEZNbHlSNzBTMkRUdHVQdTBpMi9mNkt0cmxtbU5zVTI0QXErZkN6RUc0M05xU2hPTWVNNXJEeExzU0pDdGpmTVJ3RzhZZXlOZjZjQ01TTXhZQUpmclR5aitBUzhSdFpRTkdGN3RYK2V4RVdIT2YxQzlDQnpIdEtSQ2xCUkw2ekRqbHBQQ0lEd2NNRmk4Tlh2YWlWY2x4SXEzWGRmcXhpR0JCRWxka2hnWjwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjx4ZW5jOkNpcGhlckRhdGE+PHhlbmM6Q2lwaGVyVmFsdWU+U083bWZtTXRhUVpxL0lTMFo2MEI5YzNBR2h6Zzlua0llWlFOTGZPQmZHbzN3VVBoei9hbUNBYXgrTmZ5S1ZjVnJYSXBqeCtESXFzdVM2YTNLMC82cjQzMDFHTEtwNjIvZXJha0RxT3dNTVlsUUpab0ZoSS9pUXhVYXQ1dmN1MjRWVVIyU3FWSHprMWxRVyt5R0FaNE1rK05OYkpuMU5xRVZYWnl5ZGdycTdtWTY4aE8zWmM2QmhmemMxM3FMbEhaUkdrcVMvME15Vm93Ym5SbE1GOXlnbnZJTVpJY0pDanJNajFMTmtqVnUvdUpoZ29BYzZXNGFuSFhvbStKMUZvU09FL0I1S3pwOEVuc2M0MTRFME44UzRRTUp6eWpFMUltT2JiUXNLWGg0RysralBRUndiSDl4am5PRnE3NmU1cE9yZWlpS0xlY3R4MDI2dEorYlptZHZnPT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZEtleT48L2RzaWc6S2V5SW5mbz4KICAgPHhlbmM6Q2lwaGVyRGF0YT4KICAgICAgPHhlbmM6Q2lwaGVyVmFsdWU+WHFqUFhwM3N0aThVUm5hc0wzZ092eWhYNGNIdCtvWEtOUW1EQTVFczhjS1BpQ1QzMzdacWtYaVB5TjVndTRISXNoa09IWHZuM0pOU08yVzBObCtEczk2RzhjNTlIR3pIdDgzZGozYWFhRzR6L0czaU92S0UzcGZGY1FVZzNTczVLVWhSSW1OQ2Q3THVhNUdTU2oyQzdJZS8vckR1RVg1KytHMW41WnA0aHQvNmVidVpTMUw2TWZZdUc3eHRiVzBYUUdweDNzWVlvdzNwbUU4VVZ0aEE3a0ZDd3ViUm8reXhjMHdGMlQ3WFBNVi80UzdJY3gwY21vSDN6c1RwcHVRRTltZjd0ZGxjYlJUUDZuSE50eE1vTTQ0U1FNTTVCLzZ6VlpiajR4Zm9LTjZ4d2RmeXAxbFUwcjBJTFEwSmlsR1hueE1IU0V2b3VyaExsZ25UTm5JSDZKUWRzRCtERE9LWGtLdW91OWVtWU5zUS9VSzJkVDJSaEJ3WjdueUtDZXRrWHNGb1pVZi9BQy9seDllK3FHbmo2Q0ZYdEFvdjB3UExZWmN2eTBFaXE2eklDa0RJeWNCWi9GZ3VrMDNxN0JNc3MyZDY3ZlZ1amFOR1JqOHlrTC9yUGorV2dHWkRMci9tR0U5eUd5cDBHeXJmT3JueDdZWHkwTXZoV01VU3RGMUxmV1hlMnZvRFR6Rm81bFI3azFnaEpqZlRjS0h2VVM2MlhSbWpaTHBWZE15R2hBeXdQSWgxcWVKZmpTQ1JWckVKZmhvMk1qRGpaUjVNaHdBM0lwd3F3a3A5dDZRVW1hRmc5SCtjc2JpaWlDVjA1d1pMSmJXNExpbnlrQzlNNE5UZjRGa3dJU2RlYVc0bldzZGI0enRvLzlYeVZIOFV1MU0vOGVnTEpySnZVYnpqdW9DT1c1WFpORE96UUwvZHp4MkVFNUFBbUJWT0pMc3h6bnROUHhrNjJlTFBpb0RvYVlLNGc0ZlNYREF3cnZXcVdOQWVCQXlHck1UUmRNL2FXanNsS2txY25yQ2lEelhsMHdhNnFXbCsxUHV1bVM4eVhGR0E1bFZYa3VrNlRPMFIxWkUwOVR2cENxT3V4bzFMVURtZ29GOGx4VUJrOVNmZnFYRDhXMnBpNWtNUUkwQXk2Q0VvdmNPbEVBc3dUeWlObDlKdXp1dkxIQ1VXSThDTDNabXplSjVxUXNRaStlRWE3SDdVeVVKaVRObzhhT0NpY21FME05bEdWNjBnVFpIbFpYeWJGWERHM2lzdkhCakF0K0NZOHNUaTZCOUx6WWRWT253UDVIQ3JuRVhXelZCRGRpSkQrYTRUZTRXWlAvM1JndVdvbTZ6MlJGSDhPbDkyellQdnhROUJBQjk1KzQyeUJ4UHoxMWpiNDNxbWxLd01IbXhUdVg1dUNidmhYODdFTDlHbndKS0Fhby9sYTJkMWxHOUxsVXZhMER2TWJhTTlzUEp3dHVKZTNCQjBOcVhUQ2hqMGhEWkJHUm5vS2F6RmNYdUlPOEtSY2IyTWRQbnVMM05Sa041V0tmMFNQZWZCNWdOMFJXVkYrdUdPTGJscXluYXVrNlJoeS9ocFkzQk1wVFVXOFhTOEFaRW1nenJBSUtCTDIvMERSYnhSZmZSbW1VVnc5M3hFRTMzN3VQVjB5TTdOSC9HemZDdHBCclBSMlI3RlliMmdrbW1MaHFXUkNCTVFBajZIRDdQam9JZVJXeTkzeEwzNnFuaTZkVXBkOEdIQVhZa3BuS25JQkhNRzJQNC9OYm8ycEJjaDdSVjRpUnptUlV4WkhWME0zUHR3MEFmeDZ6ZW1rUGhEMGYrckdWbnFpbDl3Y3p3azVjWFYwRHQyZnRKalkrK1pzODZnUjc0c1dBWmxWK2ZtVFc3UWNEdjR5UkxiL3k0b1k5dlFGNkRCOC9YZDUzUFNVS2RlcVgxOUpMNGs2N21mRGxlc0h0NjR5OEcxZUNocGpkMlFxa2h0MXRXNURjdit6NGFEVFRmZWFSaDlqcEE2RUh3R0hIaDNSNnF2OXpTTDhxdFZjUmhjbkduY09mK09GT1B4Q05VcU43QjUxVG5CcUNQaU51TzVsS29LZzg3bVEyaDJrZXk5OEk0dFVvUnlxeks0RGVJSVdWbXpmUmx3bE1ZSnBtTWNDZEhmaGN2Vkt0SW5TcWNqZ3RsZUhLb3Y5enZMZkZCR0lXYzM4bDl1YmR3MU04eS9tS3cyRGpmbno5Ui94YjFyZ3o1QzhBbUZ0ZUxmbWhrNWlKMlhBaXM4cDJRUnJyNC85MGRvdTFmWldzUXd2Y0UycjIrWk14VlAra1JUTVZ4S0VZc1JEL04vQmJvVXRnNG1SQzRPSGtYRzhEZldDTzZqMVgxd0plbTRPTDc2NEpIWnQzMVYrNVF0VFBXeHFvS3BBRk1rQUowNUlnSDg1SkVGSDg3c2x6RWhmYzJzdnJEV2d5Vmcrb3lqNGgrK0VyaU9GYnBsNktSbmZQZkRudXhaWkMzMzRJSUFtQ29GSWNaZlZaQW9kZk9IVnhCR3BQNHpCM3pLRVdhendERWJYd0x6RGtUNmVxRWhLT1VmSVBLVkFLSjBvWEMxeEpmMVpqbkIrNnNMckUzMTBOSUFodGdNaUg0SUM2Q25YelJtVk5TNS9RV0ZpTjNuWnFOaExUbWdnTXRJQ2lIeGNoZzl3bnBnanVrMjVmVGpWRm92WFZWODFDUUFoeU53WUYzYzlNYmxNWE9vSVdGdm5jTWUxYXlpQkFYZnB6TEJkWitHZVVJS2RDTFc5eDZRZ1FsN1owVHhIeFVreURVeTA2NWI1M2dLa25GTWltd1B3T2IvWWtMTHF6b0FvNm8wUTZnUTJkbUlMc3p4cFB5dkpZdVZRWVpkQVdxUlM0NWVzTm5NeHdtSFpZT1YzTTJUS25odWlpTS9WcFpNQ1I5UUs4WWNXQTdzMk54K2tQN1l0VUNxbEQxOTlnMVpEOVZ0SnVHK25CYUYwMlZ0cHdjZk9VVDFweU8yT285SVQ3WWhoT2VnTWI4WXhuUXZBZC8yTVJHN3hBb2QxSmJLaTlISHBhNGpHMlRsUkVGUTdvL1BYbHdrMTdENjU1K0hYUWxGQ3VlZDdIbE1pVHE1SGxMSkZJR3ZxNVdXakVNQlhjcEJDZ09EY211ZHE5eG9XTmx3RnRmR1kyMGFIZmR3YlJvNS9LeTRvWFRsS2EvdnYya3BobGxzOXRpL0I1TlBmeGk2YU1tZlJGTGx4OFBIQ3FiaG5wTFVJV0tpM3ZEMjN1Q0RyVEd2Sy9NZ1ZodGRuZUM2RVBRTHhNWTFKcUxpRVlHRHVnR3FoUFplQUZ1TCs3eFF3ZjV6WU5GTEtPQzBGcmhXSEt1Rm9pV25HaDcrcGhPd3dkWGNZTlM0K3hUUnkvMWl6T1VUSTZ2MDUycHl4ak9raWlZU1h1aTl3WVIvRTEwN1pvdUlZWndON1pRdDdzb1VBWFRiUDB4ODVlcVlpNWhHTzNDWTVOQmtWL3phMmhmclNFRGx3YndkUEpjYzVWcjlwTEo5MkNQcll3ZHU5M2hrTDBweHhqRlVsZFVWQ0ptUXJxbUZPcXlBQXY5MldCeGtmWVRMYTBzb1lKWHRiZDJEYUFsV3dLUkdQT3NqM0RSQjR6dEMwNitiR0hOWnZGL2grUGxJMnUwdGtrMHFmUVZHWkl3SGJYOWh5dG1iR1QzTlVnWHZJemRJcnZhbHloWlBuNlN5bWdpTWpRdXlTUWZCNVUxZEtlc0lncXB3OFNiY0c0Wlk4U3VSUmNFNldIUjYrSXVVUThvelJpMzEzc0R5U1B4Y0dUZUNNeFA0Q1JQbVlZeEpWRmpxc0xwMzA5ZFlZTTJzWE1vWU5mRi91MjNDQWtYMlFjV0pCai84emd6R0ZBUDJnNmxMM1JkQU1SZDBPaWhMWmpUdUp1N1hTTzhDQVRjZzJIeFpNK2N2SWJqbm00Tkl1NzZtUDIxSEN5MWZ5cHBWNzVHVHIrdllFbUFGeWZ6cENEeFlkSlRNZ09NNjY2aVJsVkFqWnhMcThiZnJ2alRWV2d3YlE3eHpNWTBUenYxd0pPVUlqTFpFWTU5SFAxQXdIdkFlY2RMRWNESG9tUjkrR01qRDZWQnRMYjAwRE90S254NjRlVEx1bHkza2RmZG9VSlArQ1MwaVhpd013dEdoY3hqYVc4ZUt1akxPU2lVNXpLSTNwNmZRSTM1Y1h2Q05UQlJkd0w2VHllWnE5Sy94K1RwejRaRGVtSXRzUFhMRWFMcER0Z0NmR2Erd1o4NnlMYlEwUGF2VmtFRTZGZnF5UGZJZE44VmZzWWJUQmFzTmFubU1KU0hKWDhVZVN5U01FeURPdDQwbG01Nkh1N3V0akdsTDYrSy82am90R3VsK1gwZ2s1Vld4OEZnT1l1Qlp2blFOSHN0L2VZaUVsbWVTQk5lL3ppOTl4MEhUY1B3TDZrUjdybkxlODN5eExuVW5mRDlUT0N4ZndPTllzeHgzaW90STZZOW54RlBIL1VCNG9XZjJHS0lsL2dkOUk4c1ZBVVArYlpKbXVaMFFUWWxFaC9NWXk3VWpYMUdTQ0JELzlXVUlOOVF0V3hwUG1OL3FrOXh0OXpJY1pManFoY1AvVEFIeE90eVRhTWxhTklMMjZUZ3RsS1ZCSXA1blVCUjRQOVM5Y2hkYzYrQXBGclZFZlpETHY5emJ1N0dBK0t3Ulp1K2dkblFFT0swSDVrT3FTWEdFUDN5WHA5YVAxdjNyamVyaTVmaDB6eXd4ZUJyVmpXNzhRYTJjZDVpR3NFSmRLWDNLeTZQc3U4aTY5UldyTFlKMDVJYkpadkRXN1hIZTZvSWJFN2R2ZG1ubHJmdzZXcjFzWVJEek9OKzVmM1R3bTFITlhScVQ1UFRYY3RkK2tXNy9aQ3l1V3BTS3Q2OTZGVXFoNk85NzgxeWxITzRBU1ZYUmgwSHYzQ3VibXhrbVRPMHh0MEhsZlg3MEZwR0E5WXUzWEd2QTdIMnY1QTN0eFJMM3lvS2xJeG9Ueis4ZkN4NU1XczE1N3JXbXI4MzlXMzlER2F6K05wT3VzRVdnaWhGaDNtQlhOb21scXo2Q0ZiOHNydE84Q0RKclQxSGlremlmV0Y3OFhaYVJRTUU0Y1FULzlGWUhWRUVOUy9YaEpNcWhNVm1KODljRENtVUsvUktPWjVyc3JFMzRlZldyUDNybWxjLzJ0WHNMNzdKRVkweGM0YzM5R2lZT01CcnRWN0lNcFBqN3YraC9NSi96MVN2VDFDcTNSZWZJc0tPRVpSSFpJUGgwa1FzWHd0SGlYNTkxbHpkV2Y0TzB4cC9EeXhQVS91NnFOVUlQcWZzUG5VRnlYZ25uczZwVHpLY3BNbUM4MFBOT3pBUjJmRGxPZkxTcjVJWjJOTTdOME05K2JTbHNWblFiN2xuSlp4dzNGV0h6RDV3cTBNL29MYlVFeUVsdEpnd3R2SHNERk53TllSZS9ud0tZOWs4Ym1hTDhieERIZ2hCT1JLRE9RK3d2ZmpPamdWTmNranJjYW1rSFV2QmNTeWhaa2lVamlmT1NqWVk2aFZHbWhTZGVWM1dLL0loQVNYaTVYK0hWR3A3eVlja244bi9zcTMrdXpGemNoOStwanNRR3VZMmxuK1RYVFBBMHNoZ2FXVHp1RnJlZDJ4SFpabkI3bzFpTVJLeUtWOFYvZmViOXJwT3BLTytLRllGdEp4SDNjNi9HVHlQblY3OVBpTmg3aTREaEZMWkZ6Z0UvdVJRdXdvUURMbHBZVGVnUVFnQjY5U2s3RXlOUXdOQTVHWGQrUU9RZEh5dmRzbXpJam92QTNMV0ZPUFpocm1wc2s2c2tDb0gvUkVlalBwcWVrY1lrU0xMcTJtdGlpb1hPdUxuVGJuU3k0d1BnRGRMTHdFTVhvUm5sRjNLYnRWeWhHWFBYUkNiT0NWczhYNkJ1d1Ezc0JlVGgrWkJ6b0N3dVN1TExSNFlpTUo5Zkx3bzV0N2RETy84cjNUcVk1WXU4Zk8reEtPNHdKNEl1SEhkVDV5SUZUOCtYNi9ENTR6ZFpDNjdJaWpoaUdJK3JwMS9ubW1MclJFTXZaT21UWHVDZ0kxWTFxN1VJMFdDRi9vVDRwY2Mra0ZzUTREMDQ3YkhkYU5GRm0wVmI2ZjRlTFYxMFJsTkZKVmcvczQ3M3RuaWNRNjRLbVBBQzFOMEVUSUxVUUMrM0x1SHN3ZDJYOENMUVZ5Mng4eWRaaHRmRldWdmorNkNMRjBqdzlzMlgrcWtKdkx1bnBnc0J3Yit3ZjZxc3c2cTk4bGx0S1NIVHNlMkxoNE9RaUVXS2RrNTByY291SmNSSmpIazc5SlkyUVMrNmJSSVM3OFp1eU9ZYVYvODhiaENrS2ZQb3pZL01QVVMvWmIzY3RheWI4d3dQSnZOTU9UcVdpcjJBM29IV3FaMDNkbU5RK3ZadmY4bDNvZ1ROdEFVSnN2UkJLc0MzbWRGRkZOdUNiU2MxOXNrclRFQUtOaEJIemJMd3JPcDNWWm1LaU1mdVc0Q04wNCtTblc2WlBZcEdlUHZUU3FGdEFGMFdjaGZ2MFlRZms4enp3M2lyYXcyNldmQ2dZMDJNQmtGSTJWc2VpQ2JFdWEwMUhLYVA1alVRU0ltTy9vdDk1QUtCYUwrcCtKcXloZFdLVVZudHdEcmphSStTdmhOYjB4OTBMZEpnMFRJT21IcGZEWUxNSWF6QXA2MHpqTENKb2lvdWdLMk8rL3lIZVRyR043Vi85WHUrc05TdVZJcENWQzJKWm40K3o3cWNjSWlnTUZSNUJIUXlTN0U5UW5hZnc3TWltZS9QeW9RM2gzV2lLdWR3cVlNSXpsYWVYRU95Q1hJMU9yYXFUWml3Rkl6SStEQVRUUnJQUUpWdzZ6SGpBdStHU2haMUJ2TS9qS25WdDF3bGxIbjl4RUd1a0pFUWtxSkRkWG9NcEsyb25wbXg1dFpMNy9QQTBBQzNwMFFqajZac0s0VG96bVFVYmhKOEd5Z3lkaVBWWFlYUzVVZlhER2M4ZkhuM25BT0RwU0xRc2VNc1pZYXhab2JHbHB5VUhoMm9BYkIwZ1o2VUlDUzNqNXNsUjk1TGl2Z2lLUjVHRG1CK1FyMXNKWGRIMDg5VVpuNUVEczVYMmFzcngxekhBRUw0YkdaV3E2dGFTLzdGQVFyWkEyRURUdUp4dmEyc3ZNSjRKTEFQL2NTZ25NMEtGazBxRW5yL0dZUTFiMk9UNHBSb2dBdWJuYUpHRG92UjlsOUN0RnRVWFBXTHVlZlcwMnB1TkdWRm1TT1gwQmFTOTF6Ri9laGNDZzNlT2J2RlV6dXBjVUMvZkVpMTAvYmxDQWg2QXBrb1VYclNST09aZitqaDlhdk9EN2lUYzg5d1duN0k0d216bHRhMnRHKzFWcXFLY0E4SlJ2WjJRZ1F4bWpkbjFRUU83UWJhUDRaY0JqUzFnSVJvcFlIeGFzYi9ueERnOENrOHpMUm5FQWFYd3FrVlRDbWdOVDJYZ3lVVlNJaWVsaENXMk5WTzlPcndISXljcGpMR2dXaGJhWm5CZ0JpdHBxMWJvcGdOU1ByQ1M0czNDbmxaRDY1WUM1bnVvYlBxY0RYU0FRN2pLMjZ3SGh3RWpVeXpsOEZpMHg1NDF3ZFdNY2FCYTJxOHZqejRaM3VtTlZrbUM1OHVicXdpZm1oOFZveHZsU200OTBlSXI2alcxYzY1ZXdKdm5NdVpscEIvZHdnVjVwU25kOC9Nd3phRFJRWnNqWjVhQXo0R2RpdEoxamJUeVlmQ0xHSFVXSEZ2aVlDKzdCS1UvL0hBeXZOems2eWI5UGpLTEV6UEF2QzlBbWMwaVRCZWx5SU5XWW1vdmdtVXVIZzczcHoxNHpaOTdxajlYS0NTVmFJR0FmcEV2aURSaFBtL3BsTGlJMVhFK1hiZ1JxeE9SQTZQNnRwdWk2cWoxQ0xxWFZrNkJSb1Nyb3ZsOWxCaDlCZ1J3ZHRUVVJEdm5xejM1bWtKbHNvNW9CRFkrSHlld0o4aWNNQ1pzMXk3QWNhUFo5OVVQRi8zWGhZMnZnc1FmWjZGcTNXbHJGcjN1bjEvV2lZZS9yUXpMU3VrRWpGcDgxUTNPQ2JKa1F0dndXS2pKV2ZJcmNNS2liYUV1VUJBRnN6YTFDaDhjbVRSazdVSjJ5R2hFZDZ1NUxXdmcwdVJJaHhEdldtd2MwSzFwZzBRdVdRdnVTcnoybmJoTjFZR21FYTR4SThERVlYTDdHQUo4aE9UV2VPRUFzMndsNmxLWTl1U3IvM0FKY2NiamZDcFg1Qjk5eENJazdiV0g2THR1ZDQvVlpxb3hJNFdJeVpEUzAvNFdKVFFJQU1YTDBja0U2MjlIQUoycUZYYUQzT1IwQnh1L00rck90bkFFTnFPQTRHQm5tOU80SkttcG8ycVk0T0VtUzc0ZVUycnppcllXelBBNHFtVDRLZk92STBzVmFheW8reFhqTzBNblphZzhUZVdNMlJPcFhBSTlzYTRpNmlsZUN1bFFGdjFrblV1L0VsckFRUXdOdUZwRTFWbklrenJvdDVHbUU0NkZubEJxOTEvZ1pQcXJvcy9abnZJUURjNURVRnhnaERGVnk4dUFidDBLY2dMaXpEM2JMeC8vTlNFbjBuK3dSRC9taS9nWW1sN1V2TnpxbWsxdmVwbElZelJMLzJQSXFlUWZiejc1ZDhzS1UyaDhoWUpuQnZQUTBTb0hiRmNVVzVCbzVLU25ndDN2N1FENlFKN3luMXV2QkpSL21xbGdUVXNEcDNqVHovMytKV3FyWDdEUjkrTXAwRytaZEdqRkZsMUI0Zk8xY3Bpcm4vUCthbzVoSnZidmZxYzlIK1RDbzE3d1J4aS8zNHNsZVdKRi9NMi9JRitmVnRFY3hCTWtXUXBZRFRaTEVab2ZPTGRwMkh3bENEak9TcGp2Y2VqV3poOGNsNUVnRG5iRzFKN1JMQTFHWEtYRVBvdE81K2V0bGtUVVM3MGk1dWNUb1N0d2NGRnJHQTJyKyttcUorL1NsWmdlOGNnbmxnVmoyeEU0Y3BOSUdudGczNnVENEV2MEIwRUZsZWdBbU80ZkphZkRrTDlqOXVqSTJ2YWVDU3ptaW9HVmpNQXU5MXhGdVE4VndRZzRJQzNoR1g4V2JZR3hNOFVybzVVVGtjMjNkQlIrVXRUb2pXZjZYMHBaRklBck9OQlh3Y3RxRGo0THB3S1NNSmxOVFl4TU9QTFdyWWk1V3dla3YyS1ZqREJxZ290TG45L1d3RkNVU3FpNXZvbkdSbGN5bDhXaHd4ZzlvTXIraWduY3dVeklvR1hXQWFWS2tLZVZKbDV3cWtVeTRPbGt0UEYwWDhKUVZYRkEzT0ZGYnZoZDd1MWdFSGFIUzlTNTBJRlE5SzNYYkJpWXJ1YzZZemZNYlhtSXhhb0hrajJNcHkyQ041RWFybmdlbmR2cU9teHhFM2Y3TjhDOWFaT3pJb1NmR2t0cFphci83Wlp6ODNZRzNFeklZRGNZRkxaN3NPbXhjeU5Xdm5QOWZpTVA1SldxbkRqSnJGT0Y5TytIUmxKbDdkU1BRTGFESU5CZGFZcWpZQVhaYkZXN04xQUNaUzFUNFNCQ0NCTFdVVEZHQS9PTk1IN1NsV21OMVl0amZTcGF6ZFo0STNDM0lBOFVMUUZHWW5WN1hZK05WZFJ0UjVwSUwxYzhTK0VPZndWbGZDMjBDRkhrRENIbVJTNjdzU1Y3aEhPOVlqRmdiaEtYbElSUndCZ0M2dz08L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_25.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQxZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVXWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxOaFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFwODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNLWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUwSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_26.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQxZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVXWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxOaFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFwODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNLWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUwSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_27.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_28.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_31.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDhiMmMwMDItN2MzOS04ZDhjLTUwMmItMzQyM2ZjYzU3M2YwIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA4YjJjMDAyLTdjMzktOGQ4Yy01MDJiLTM0MjNmY2M1NzNmMCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+b3Y1RG5KM2xLY1A2MUJHU2huSUR6ODBXR3dNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5FUFJCTktLUnhpdDhCM1R2SERENktSSThMTnRBT0IwTnJiNmNXRTdZMTdXYjJzZ0dpWUxNUmtFakswRll6Z3FqWCt2LytXd0MwNllBVjZoaG12Wk9ITUdtQUpJaWFDZE40NEZlcHNid05HRGhFalhjRlpjclFSUUZON0VBOThsazY5aFVzK3dUWG85QTVGbEJqRTBBa3dBQVBTbTEwaGdqUWhaRnRKc0YwemNKMkNyZUFqR1FveTlFMFlpem1EcHBsZU5uaUdiUkxaakxLSTQyMjJSZlM1eHlicUFXS0VIdkpMMjRDa1B1eHRRT0tnOUhJSk80Zml0R1FzY0FFNDNHc1BDZEpYazNqZVZHRTlXYnVDMGRLZDNPckJRT3lhVGJhQjMrV3FXcXR3MVkyVXFuZzlLQkNHR0cvV2NXVnNyREZtRWx1ejNmNGJ5VzdJMUR2LzQrSEE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_33.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDFjMmIxM2FhLWYwY2MtNzgxMi0xYTJlLTYwZGYyMTE3ODBiZiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDFjMmIxM2FhLWYwY2MtNzgxMi0xYTJlLTYwZGYyMTE3ODBiZiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+Q0dlN0hNSWM3TGMyVnFJVk44S1l4SXVaUTk4PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5XamZNSTgrTzlnUlU2emJUbWY0ZmVyVWhsc0EwZEcwcXArNW5lcUJxOXdoSnNYZy9QKy9JMUh3cGtsQmowK0ZhRVFUak9yVkcybGVlOURvQ09ZMnUwUFM1SlFWTy85RUpiaEtuNEhYQVl4UzBjTmI4RFgrSWRMRlMvRGIzemV6Uk9UdkNUbHEySXFiQ2U2a0ErZGttVytQLys1ZlVtdWc5QWRjZFE4cGdOWUNLOVhFakRHbVgyUWlCVmt0VXl2ekJlUHB5a0lnWWxGS1BDaFU5QkRrLzRta2F6cDNrSXdSZUtxdzNlL3lXYjRzSC9oeEF6NVM0YVB6emhkaXdranVabkJZZmFCNFI2cTNzMGtuVUlmNDNWMmFjT1hRdTIvNTl0ZVZyNzEzTlcxL0hycmJ2akpnVU15QmJMbTdaRjB5Z2M5VFBIaENybGFhNG94L01vQmx1V1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_34.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YjRjMzUzMDEtN2I5Ny01NDhhLWE1YzQtNTVlY2FkYjgyNWNkIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGI0YzM1MzAxLTdiOTctNTQ4YS1hNWM0LTU1ZWNhZGI4MjVjZCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+anBQYUd1NGRpbjVQbCsway9pMzFpTm9xSkZBPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5HeGZRS1FZMGloYXJzM0loQ2k0YVVxMHgyd09aVEZ6L3kwcGhxaWZQMU94MmNsZCtNa0lselRDb3Biei9rODBVdjIwVTZONHRIOWpPOVJqT2l3b3dIWWdxVGpjSTBHaXk1OHJ4OWpyWDZUUEc3T0c2Q2puQTZ0YTF4WWQrM0M1V2JPVENTSEd3TXAyZWJXUHlqSnpKSFB3dStrelhIb3UvZGE5T0Z3Q0Y2NkM1U1FkYXJDSy9iS1daVERTVDJiTFZKYkw4MVRjYmY4U0RiNTE1eUt3YWxKdzhSK3ZHWGt5bWYrb0RUWVE1TUlib1RyZTVYckZZTk9lYTZHcit0SGdRUXVBTFpVKzI5YU5RZWVUVkE5OVQwWFRwaWVyOGZ0UDJiMEl4Wng0SlhxUlZyd000QndiU0V4NjNQais5SFUvM1p0aFIrc3RHRWlVKzdMOUY0ZlR6NlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeGJlY2I0MGRmLTZhMDItZDE5OS00ODZlLWQzNzVlNGE0ODZlMSIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGJlY2I0MGRmLTZhMDItZDE5OS00ODZlLWQzNzVlNGE0ODZlMSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+NFAxRUd4NHhxOWRta3hRcTh1QUlZcmMvU1N3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5EZE5DRFNrc2hncmxKUWpBMTZreklVak5TQTNlbkxnNmZveWZHb2JHY0FOd2Uwb1dsTXZOMmMySEhzMU54azh2bU9QWWhsb0VkVkErSmpra2JQdHpUeTlpbXJkTUtHbEVOSGdEKzFrd2REOUtKM2wxVVAyVGVKbEw3WGZJcWd3ejE2bUFERDVONnJMSXgyL0g1R2JSYjRlanQzdnpNMy9GWHlUcUdlUXBUdVlaV0xwZTNVK3ZsTHFhYy9qYmVPbTBmWFQ4bm1lcS8wQXp0VHFITjdTMkZNN3gwM202Q0dkU1BvdVY4ak0yQmdUNUFsbkkxcUNMSExvSXhZOTFVajBsa2w2YWlBeXluZXR1MHJZV1E0RW1KME9sR20wT1FlRWRkYUNtLzZDTUJNOFBmWjNzN25sN3lsTzRKNVh5MjhSSHd0NUFoc3Jjemt1eVU3c0NzNXpIWFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_36.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkowVUduUUxKdWpjbFBEMEY4eVRpMVNSMU9oWW54SS9Tdkl5T2JqNHJYUDJCQ2hvNTU4YXh5dW9tLzViS0VsSHlRNUpwTHgwdi9kQ1NVZ0NXMW4rc01HREorM0JoRFUwaFZQaHBVTHdmWnJ5S0h1c01sQmt2eXN2ZC9PNkwxd2hQbEdnSnJUMzl0a2lCQmk2QUo4bUtlRDNmaG9nWXFwbGVGK2xrckt4akZEQmZoV1RBYnVaOHk4QzNNeDZtb3M3a2piUjVHczQ3d25yejRlWWdXK05SSjhWL055YXVDRW1wOUJBYmdyd1daL3JtZ01YWW5Sb2YrOW1TUThmMkxmcWN1SXZyM0krTE5MaHcxSUNhTnZhVVFJVjZCMEpaS1hmaWJ3azUwd0FLNEFzNkxSSXkyL09KMWVNMnJuK1MvOUtFTUVxYlZKMFNOcnRkY3pKT2hqaS9xZz09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPmcyK0g3Uk1hYkpRQmtKZmZUTVcyZFQ1ZWFJbkUyOVY3L3dIV0ZTb0NQbDIwUDhqMU1SZi9va1NwQi9SbFdrdmVyNDJLZ1RVVzdsWXE2ZndLOStMTlIyQ3ZSY1RVVk16YlZzOURqUTdWald0NFBOWHQ4eWRLdmFXZ3dGbDA5aFNJSE5lY0QxT1g2K3N0aDNVbHlGd0x4MjZpVEdvenlweFZRVlp2YXR1Ync3czQ4OHFESnY2UElYcEY3NzEwNUpoNWFEejVoRTJ5L25Xd1QwSy92S0J3RWI5elR4UGhta0NPSm1UTDI5V3ZkekREa3NuaU45VUFCZDBERlVRWk9HRDlZQ1ZLWlI5OElYdDhVUDdwOCtFVFBaamRoWmVJWFpUYjl6NkZ5RFVWenR4ck8wbGc5WURpNjFiRk1PM0QwTFVta1ZoTnUxV2VTZU1VNDdWcm1aQjNRT3NqUTE0Z3FQbCtNZklVR0JFV044WDhiRE9zVWJUU1FQd1hnSk9BR3RqdHNCbkFrcURrWGFNYnh4OTY4dDE1UzNBYzJNdGZsQU1pM29XSGpjLzA0YWloTzEyV0YrVWxnbVdBVVFsaDR0NW94a1dMdVl4Mit3eHJORXFHOVRIY1paMDIxb3ROR0lBc1JtWEFRNk9WaVpvQUxSd2VjL3MzTUl5cmV1UHFZK0FBQytPc0s1WFhYVGtaa3ZTSjVIRUoxeXlRS01HMFFFcG44dGV3MDZSaWlMd0Z0NDZ4SUFXNUprcU5vQTBqckdqdm9TbGkxeStJajA5VkEycHByVmcrKzIrdFZzazRja3ZGUGlpQ0l1ODVrMGdNM2JKTWdHOE51WERBSlREOFJaMFdyM09EWVdVY0RUL2k4ZCs2TkRZYmdtcS9YU0JCRUJIUVIxdlZDc0FISUVZMmVJSzVka2NRUXM2cUE3K082ODJFRjNJZ1lNbEVJaTV0eHFWWTd2ZEdDZjNVc29MN0FHb21oMXVITHM0SjlVMHphTHcwRkl6UUhWRlA0RUh5YVRhVkZoS1dGOXBhSkVHbk1SRk5KdEUrQ2cvRHhrbVh2OVEyN0ZvUnd3KzdxblcwUWtsWm52NWlZNjRnSVJHQThoa3gzODJOUkZEendRbHZGemVyVWNrbTRIbC8yYlpQZ0pPMUpSN21sdXlhSFl4T1JuaWQrK2RncUJGOWJVMnpzWHZwdjJFVlkrZDNRUlBnbmxGRUhycThUMGtySkNCQlY4REpZcmhDZ3lzTy9uVVQ5c3ExeDZkbTdZSUN4a3g0ZWtNTG96djdNOFRvYnZCNXF2Vkp3UERnR1REWDh3VjFPMTdqd0J1SkZKNlhzeEg1ZmFCVEM3TS9KWnluYVpKcFQzaXRscWNRY3pOUGNZclkzYko0R1h2b0hFNEZRL1BGUGZ5WFQ4aE1zUStuZXZUZ21lNU9ISGMrOHhXbzcwUTRSUEZoNkx6TVZ5anU3cG9YSmkrSVI1R1Z3cHV3M2VQV0F2K3lXblhDcWZFWXpibjA0RG91d2JUeUZwUzQ5dXgzcktjNFoxTkNYdisxN1pXaVZrY1p3WFNuUlVmZnlrSjZoT3UvVk0wQ3d0eXJaZlJpTzZUTi9rT3JUK0htV0QwREFvRGRhWjRLZXd6TVNUQ1FsdTI5bW1JTXVMRXE4YW8wLzRHejZqN09rdlBBWHI0TTl3akpKS0FtMXpHR2I5L29IVGFJU3MrOGEzeDV6ZncwdU90RTdKSkR4eW9zaHVoc09UVVBTODFCaTlmQ3VmWkZrdW9XU0RHZ3FqcGZuNUt4OG1PcGQ1cTJWMHdPTGF3aTAzc05ld1RhWmtKcThvR0FVd2QyQnFIdWxPQ3F2UjNvcU1YVk1mdTVWRkdlRjIwQVdhOUpablpXY3R4WWtPWFNqcTBzaHZMazZ5aFlERm9wTjNPdVZGSGZGWjdRd0FqOXBJdTVjUnVBYlR3bmhqNklEMDZJL2Rsa3YvYnFrWEZ0WnZFaURwbFdqYW9MYi9ITEVheVVEeEpWYVBSTS9mWVJ6dzZBcXE4bnArQWMyTGpsczlvQVJzbFBwcmV4WGl6SnIwRmVKUFdXYmtvL3d3cm5xKzgvbG5CdWhnelpCVXVwcDJWREVVeUNwNXNVVTduTDllZXhRQ0c4TjN2NlprQnBoek5XaUFjTzlCaWNQTWtndEg0S1cvV2Z6VHZ5L2dKNTFZNVR5S3J0RUhOdWJERmpYN2FteHZIa3phUEFZRmZiamJpcy93ajdCYk9vRVRhQnlVNGJKS1BTUTRuOXZQUGlsZTRJYTV1VDdBTkR5NlZFTVI4OHdudkJMVmpKS0FXMzJhUmlVQ1d1M3B2cEQxMWNZcmxib1ZyeDVGWmVaL3dDOFV5Y2VMaEJEUEVTek1KZVh2MHI1K3JyTGxuaWtZTnJ6L2VmTjFwZ3NWTURmRS8yV0E1bHhPMlR4OFZXQkJ0T1R5c0dzUXRISGt0bklsby9ORlZBVWZQeng1TzFWNVh4ajNuUkREYlFQd01RY2daaEJud2RBaUxqYnVrck1zNTYxSXo4RlpEK3B1UkZIR1BIaVc1U2grUk81Y2xIN0lpaTJIR0pZYUg5cGYwSmlqakVnZmhyaHNrbnhUa3dEd3BsTjFJbGNBOVZmQ0U4NVJkb1RZcjhUdWNONE9ZVUd1TzFPbFJhTG1sdUJFSVlEWmRSR1NQU0dWSlhOUHl2cEZwbUlWd1Q4eUQ0RUZHdGtHT0NPT1hVMmhFZXo2OEE4UFk1dTBkcU1zY3BMMllmR1BmcURmdWFad283dlZuODVTSnZKQkp5YW04bUdaakVPbi96OEVnalBUVU9ETnBXWFBBR0kvbWN1ZnBzSmlHWS94NjVYMHZ3cWVBQ09LWjFLOU83aVpWWXZBL2FlV1c0RldtQTNvZlA0U254Q2N1M0l6RHZ4Nng3NWRiMFlsbkZBTk4xZ2w4ZGhldmNkeWYwazBPc0ZiTXk1MHJQd2V0djFxeUthbVVVUUM5emR5VHJzY0FkblN2RFBGY1NNQzY4ZEpxMkcvQUgzSW5SWUdKR0ZiTW9LZkVrMWZxQm1rc0Uvakh1eCtHNzZYc1VoU3l1d1pmQnR5SHNwV3FwZ0U0b3BTS2dEN2d3alorcld5OFYvWmoxZ1dxTTBOcXhzKy91Nko5TFJPSUF0UzJJWllhMnBhOHBsRDE4dmowdEpMQytLRmY5NUEzYXBLNktId1Z2djRJcytSSzBtZ0RsdCtGNldzZmhxVVVMMkhWUVF0Wko5RXFTc1pvME9Fd2NKaU8vNHprUHA4Z0FzTG1ERURQb05SeUJLT1dtNlRLV1o0VEJ2U2lvZzRoekRTa1NvLysxbzBxTDJqd09pbUJYbThFOWxzMno1Ly9sSXV0NFNrY1pjRE04bXdiU0kwRjk5dk5kTWgzT2srV1R1aFpKWmoySDVpdDVBYjR1RnhqTEt4VzNEVVhZSXJTM2hleXJkNENGYytlc1N5UU5Lc2Z0a25jTDFyZ2Vuc0Z6OXUrNHhQTDcza0Zkd0FqNnZQcnhKbUh2VHdkQnlZdFg5dlZUMmVxU2kvd0ZOT1hZY2lPUU5IUjBrL2l5a2JPNnBJcnV1RGpmQUJER1FkYzdud2VsQmVidG84SGpnMU9JaVYrOEpjeldvblZOL1RRNzlDcEhzTGY1cU5xUHNHeHZvYW5JMHpMWVBLU1R3VVA5ZUpxZFdhYnBJYUQzYnl0d2tDb2E4c21nMGVtTHB1eUdaOGdQeVV4eFFndTFzeWVhMVVzd0dESGNMN2xZaGo2YXNvSzdLVW83NGtPd0tNTU9sRFZOTUpiNzk2TlMzOEdhcVJaeGJFSnY3RkhGRVpZRGkzeUE1M3FlN1NRT0NOTFN3d1lIZkgyYkkvTERqSDA4d1VKUEZSTDhIZzVCclpTVnM3U1FZTS85TXpEcW9TcGRTR2lQL3ozSEw5YzZQOTBjdURrcHRqQlpHK3JnTXNuVmMrRE44VDhuclhyazk4NEFOVnRuN0wyWlNtcGhoZmpqQnRIYWZXcmQvYnlxV3IvWkxTc1dsTkY4ZjhreFZnS0hhV2ZmQVJia0hTMWVtcktBYjg0N0RVV3FiUVBxWWVKeXg4UjhDbUl5VURqSkp3YksyWGg3L21pOUtmSkREMzlmZHl5Uk5EcFNLRStpck5TNkRDcWEvTWo5NDAvUTl4MUdUYm5yMHhBMnZqRWc1Q3JCMm92R3IvcC9yVnFvdkZsNHJxemZacCtrVktVN2xSQ3lkSWgvVDJUbWV5VXlNdVFWYWdjMkdSUWFDUmxxUDRwUXF1R2J5ZkZpVERjOGdoamIzVGxmY1JIRDZmK2ZWS01XVkFhcnBhbEc0VmgyNzFqNVVkSnlFVG1scGMvUXc5UE44MUpTbk9pbG1CQUtKNG55Y2tPaFZYbFJCK3VPd1d0VUg3eWxFNng5ZlNydnNJbytpcEs2UkNVQURHbHVqY1lYYWhjNnFDNU1mckZuVkRkSHFwSEtqR0pvZStYKytScGNRME1LaWxTd29wRlhIaTNRbldmMmNBRkxYM2YwclhNaGw5QXJmMVBCbzJzbjZNMlFQd0dKdHpJU2lBWUt0R2ZFRUloM254eU12OHM2bE1TcHZtTzN0WE9VVWkyR2VPUkNwMEhPWldWZlJVYWtCRElET3ZIUDRrcEZhNFFWODlobGlRRmUrSmtQV0FjclBwZ0IxRW9waWZXZDlNRjV0K2t1UU8xSmFXM2xlNEpZY1VheGpaY0NrT3lHMXY1cnl1NEFPQjU2aEVqRlFlRDV6cjRMU05RMnZKZ2ExL2V5Y3NhS1JGNWFCWGpsRVBkellMa2lQR2JtRjc0d1dONzRTVkdMRGsxVzQ3OGlMeVBnUkd6dHRYOHNReWc4OVErUmJHOTJ2RUdIOWlYMmljNGY3cG5Rc21RcEsraUFUM0VPUVdWVzFmSDRBK20wQk96Qk5hY0REYmZyY2wxN2oyMDVtTGNIZTJrdllER2FYMkhXMDJxREJvUFJES2pqejhWWXVkZlZJNStnSzRrZW5NMklDTER6dnFtUmNNTHlPZk9GQ2Z3K014THdvQUlrWXd6a0lzNWF0dUdqNzZ0S2hueEpCK0RtMkY1SGNKbjZoMlZjc2wvZ3E4RFQ3TE8vL1hreG91elJ4bm1mZTN1WUpTQ3dEZzN0OStWcmtDUzkvUDUzajFiVHFOT3VvcFlZRUhQSGlCMkpuQVU0WmtCTkpzZFd2WnpaYUZMWk83U1lORzR3cHExWjZiWVNjNXhDa0kvTUwzd2dqZnRhL2xsaVRRTTVVck9QK2pGWUVLdlpGdjNXY1hJQ21aNEJ4UWc4cEVTc1JCU1VCYnUyMk8ydFlvTm9KeUgwV2JLN0d2VU5zR0k1SHBTZVdCcUZUSDF0bEN6Zmp0SkhuN1lkU29VV3pSRDIrT1ljYXRvTkg1MUNUZDk5b0hyUksrcm1NQkFJckVqb0FaN1k0RGY2OU10NmtOK0pnUElUbU1LajZ5TnBwMFpQZzhYS3R1ZjBVdmlrZStmbEM1UmJPWitaMEEycTRaS1puOHl3K2xGcmhZSXMyanR1RGNYLzdtNlJ5RTV3cW5aZ2p2Mzl3c0hGQmx3c3RGMnJpZGxZTFo2enF5dmgvTE5uWjY2dTcwVUUzOXk5bXBlUElOT01FWk5lQVF1WVdrOUJWSnA4cHIrMEg0OVBmVUl1eWZXaFp4dHFVWW1ScE5SWG1UTTh2SWRDRjRoL3JWRzFhU2JHRm5ESUtVQm1YcHFQcjF2QVNoMDN3REh6bis0TWJHaVV5c0F1dEZTVUthalJjNGdjdkI0ZVNxTVN2OVQ2MEVua1FTMXVPYVJwNjFBVkI4eWpUcjc0dUxHN2QzRjU1cHhuajBNMEl4Zlk1RmtqMjZOamtweU5jNFlTSThMT2JRZGJuek0vWVoreWtTWU0vc1pJY2pEVHBjVnV2RDdvbnlpNk55cDFGcTRKU0gxK2lJWmpFMmlGeGNDcW1XQU8raG56OXRvZXFvWFdvUTNhcDF2K3VtcDdhSFp3a2hGR0ZUZWNMTE50N0g2SW53M2pWVkFhN3liQTBadHRxODBFNlVLWnFiS0RvL1d6djVZaHU2OHNvZ2hkZzNJQzhxOWZ4T2Q3SkxyVlRSK2swcS9HcTJEd3BWWlVNRUw3eFlRamI4c2gwdEI4ZiszSlpoY216ek5MT3VUais2MWdKQlZTWkVvczNIb1VQRnoxeUt2eDMxK1JaVXRHWlh4eHZjMW9MeSt1czVVeFNrRU16WGtlWXZxdk8wSm13NUFGc1BlbU1USVlQNzJNMkZhVWwrUDJ4dG9nNkd3eHhVSmdvUS9mN0N2Q2o5MG5qM3dCZnM1NVVaeVZNbkJ4WGV1cm9FY2d2OTBOcHJwcDNBNUlLbjFKZWNBemNrY05yTHhkeG41ekM2TjR6TUhCRUxpREx5dUU0anZ5d0FkMjFPY0puR2V0T1hTUG9wQUw0UmNnNGN1dDNtK0hZWmNuM2J5UjFkb3Fxc3ZSOGs3RmVKc0dkOHVoMzY0ZGdWTkliZmVrOWYwSWNFSWJMWjllL2p4ZE5WVUNpK3lTNEZRbkdKRndUQklNNXpwZGxRL2hBRk0vZEl2WGFlSWhacjhPQWxlN1piclFZclJ0aHRGaWNWdFoxUU9ENGd5OGdKaHJ1dEs0MCtZR1V5YXFsRmlEaGhnL004SXlkQzlxcmZNYVoxSlRvSlB1WE02OGlrMjhXN3Q0T241SVJaVlpPaGh5U0tGbFBLMzl0MjJTOHVrWDl6MVRMM3Y4bnBDT1FrS1hJTlBEbG9CTUM0QWw0L3JUNExqT01nN0JadGoyWnd2Ump4clNERk5pMmhhaXhNaHJ5em5HRHZRZFZQWi9LcHJBdWpnQnljT202Qk1pczRaeERWNUZMai9aQXhhM3NqZ2VVdWJVaUx3RGtXV2RTZUYwaWs1bk5iOEQvcFlXSUdEcllVWlpPYW5aWnZoeXE3SlhlREJSYVQxdytBU2ppVzg4VXoxUGNmejJaVjQzTXNIeXN4bWI3YWdPVkJ1YVNGZTBKYVdFVEZHWFdlV0Z0cTVkWkpweHEvV1Vsejd1czdYZGdWc1VwTGV6ZGRNV2dycEI5TWNvWm1LN1NaSkt6SVd0MW9TVWJuQklhaytXSDBOSm9SQTVlVzViZzZvam5haTlYTXF0aXZuOWs0MVcyTGdkY3hhWmIrOFFKb3NjelpFcGlmdDlrRmszZGxJQktjY0dYT1NoRFNOQnY5VWpKdFptLy9QWUcvODFvc2JET0lQTmdMaWFGNUkwaDMva0w4ZVloSzFwbGFiN2NZcGRvcjJVRG5UTEl6TjBpSG1ZQjkvZFJOVjEwanNYbFBIWmtjVzRzYjRQbnRCbU5jL3V0ODZjdnV6UTcyYWJ2ek5rN2JnYTVyRmQ3YUc4NlBiVzRKL3ducWJneEhjaHdwV3R0NjE5Zm82d21FQjRFS1hod00wbE5NakFiL0ZUdUY5a1JrbWVsclA0Nm9oSXlBQnJtblg4RGp4bHJYZTh0c2Z5S0tzZGhGbkxQNVlRQUZqUmkzL0MydzVkSlh1OGZtTGI2b0FocFlnWk84M0I0OGs5ektMVWpDdXEvbnEzclpqY3Nkc2VDRTVicllKd20rbExleXNKTUJVZ1dGQmFqMXlFVTVLcWZManJUdDBlM0Z4SkNnWkt2V3BwRUNvRkd3MWNhdnZZT3lrU3o2ZUJkVGtXOWoxWXpUekVDaGpEQndxZVNsdmEwMmFPOFdoai9BSHczZW1tayttTDRRRStUUWlSeHN2WmJTUlhxRU8zRUMwdi8rWmx0TEpGTjMrQmtOT1BLc3dGQlJZd0dOdVE0OVpTdGtaTmJJMHUvaEVMTGoyajhJeDNSQkt2NUlpb3hUNTR5dm1BQ1Q0ZnVKZnA2NHAvQWRJWVowYk9NRndPRFlwOWxnWDlSVDZ5RC84ZjUwTk44eHVzV1RaSDFKLzlWT1lhcU1nQmszV3BJMVN0VnZ6NUxMaW5YTHM1SHc2bktLUXlCTGFTYjRkUmt1MVoyZGs0NncwNlFMeXdidnFlVWhOTzIxZTV0QjFuY25ob3Zwc25aVGwyVzhjVlBFZ1FEak1LbUJtRlJSVXJrWDMwandIVW5PbDUrYTNvMjBnaUh3NVp1S3FHYVhsMXBPTjFwNVpuaVRwKzd2d3d3MUhkNTBycnk3MnBJbmVTVGFMQVNzOU5SWTgxb2tscGJTQU9HbStidk41eXRMSjFPQ2dwMmN5RTN2QTVEckloTk5rTXI2VnFWWkVyYXIzSitvK1JINkpwOGtkL2JXb21DZTZBeC9kVzMrbWkzei95RDNrZ0s5T3BoY2xXckJ2aUxNNThQUlJaK3BkRi94em8vZzNkSC9odkpIVnRlUG9YRGs5MEtGQXg2eE5obXpQR0xFZnh2ZVdWcXVwUmpKTEtXT0toRk12a0QrMVlXeWFLSEtVTzhYTnJ3RXhPbDQyMGZudkZUMlY2UysvS0w1cUlzS1g4WWFJVUNBQ1dWQUFsOGJUL1A1WXdXdDQvV3lpU1VBMm1vdHhlcmlPb01tdzVpT2s0SXlpOFNiaTlwYzh0Zi9QYkZzM0dWdXJFWVdGeitodnNqakJNK0FSMzN5U0NHbTZCOHNzdzYzM3FwUVRxNThkTlhlSU1DS1A5cFV2bi91NldMZ0lVaFFZWWFwTmNpQnhiYnBFcnNIVlg0U3oycWRiU2NtOEVKMkZXVTd6SndtazdoTU5qTlhGWXNpSkhGWEo5dG5pVTFaaGNkb1ZrN0tRY3VJTnF3VS9kN0RCbEc5TnoyZzR5RVlWN0IrNmh5YVBvTVk0WFFnZ0JZd1BPSGI3ck1vbkduTjNBMXRGak9XQitTVS9rUGVNS0xqdmJod21Oa3Zic0dob0ZhMTJLNjJvTzMxZisxOHhGWTFuUnpNWnJTSzJTc1FvdjFzTjZnMUhmaG9scnBXQmEvWWlianpEUzA4YStEUjFrRjJVS3Z0R0srMFpnNng3djdjNnQ5UEU1WTh0TnNLcGJxSjdSalhOYUEyUXJ3Qmltam1UbTJEMmZNMmNwNHk4SXkxb0kydUtVTzRzSGc5Mzh0b044ZnRiZzF6TC9MalduU1RzVG1LSytDVEpZRUorSm9VWGpZbXovNTZhRHMxWkZmZ3h3TmRaUWNpTGhkMWh5dGlSYm94WmxCcXhyNDRtYUx4c3JtWm9XQVdyclgzRmlucHhrMW5NQUZnV0F5Y0xyZmdiYnB2em83dU40eTEzUEd0UmUwVmxNVS9SUkZiM29DVVFIL05Ya3ZPUHBwcmZFOGtxZmhoNW4rZXpCZ0VYTW9XSW5HYnE3MWprN1paU2x1NTJlQVh0dnkxaUNyK1VUamFlTWZaeWNyTi9QcWRkRUJwaGJiUnhtNG1RaFNIWUdTYnZabU01ZDhTRW53TFZ0azNRd3BYRmltQzB3ZlhBM0VDdFYvSGJpWGY2NWNmQ2RtU0l6cWh2dEJ1ellvZjVjdHVrTXd3QldhUmFPdTIySTFuSjFMeGE0MXd4ZEtFMDUrWk9DWWRTNDZWODQrdEduUllTY2tJVFlMVUU2ZHhiemY4K0xTb2gyK3M5RlJBaGpzUDF2Vk1rQUlhWEF5ZVFWQXN2ekFZUkRmL0o2c09EdjFVcThvbjhLbk9BdnBybkFmeFZYTFpnWTg4aGVYbzNaV01wMjZobitrN1l6ZlNaZ0lRUkQxVjdEVU5SQ2hSYUJaZ1BBaGYvRTkwTld3VU14Z3loSUY2c1dNUmRmZ0V5NFRqS2krU01ZYXJydE9icm1KNzJJaDUzVFJlUWM8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_37.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MmEyOWFjZGMtOWNmZi00OTBiLTgyODktYTk2ZjI1Y2I4ZmY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDJhMjlhY2RjLTljZmYtNDkwYi04Mjg5LWE5NmYyNWNiOGZmOSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dDdNN2k3QlppVjZMZGh6cjZBVjVTcHpmT2ZZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5LTjhVTEF1dnpKV1RMMXdaQWxLZVZtMXh4SXdEeHdSUDdDYXprZ3RJM05OcEZiWUgwMG85YlVkeEVXZDcwdEJidlAxQ0pTa3BMbEw3ZDZxeGhEZXNnVkQxeDdNYUhkSkozRFA5c0JYeG5aVExHa1JwZEJ2Vi9zNkxHRUI5SDBXUzJvRytCYlVQVDNNTENBU0J0WGdia2ZiT1A5U0lGTUkxWTRVem9uK1BCOHcxd1ZhNGNINmFXbytsZk8venl3NThHajlGeUU5TlFmcFV4enNUdjIrNU5zTmprQ0pTZ0JPOEkwRENScERnSXNhM0RXV3FCZC91YVZES2xiMUYrOWN0bnRSTDRZY2Y0SFBYNmVhcXBGNkg5Q1NPM25TRWd6YnVjS3B4dzZOcHIrZnFMK1lEM2wvektFMnFJVndxRW1GeklGM0puUGp0dTRzQ25JUmwzR1BCcmc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkg0WUJITXBMdzBYZkZJdFVHSmhWdW93QWJmZlh1djhsZ1N3N1ZjbkhuWk5OWUF3U0M0dFU5Mndpd293c2E4dlRTWTZwWkxjK1hzRm1uY3NyS0ZQOW9helBKYnI4cEhqQmZTa3RJaFVkeEJtNkVTaWkzSUNub1YrQlp2aW9lbTkwOVdNRVlUb29HaXdBOEhqYVlFRDhqdTBlTzVrQ01QNE5veUROMXZWcmhTaXRWOHo1RHZpaXk3RWpPY1RIb3E4b0VQUUNGNHpRMVBldW9acWxQN0VDYlJQWWh1NlBSN01rT3dyZHE1aUluWm96OFB5Mk14TnhTaU9mUHl2c2s4MHM4SVBuTUVWNFk1R2dhdVMwYnZtcVM1RHluRWI5VHJPazdYMmE3ajE1eDZ3QlRMdzl5ZTRPcEdaRThWYU94YXFQZWJGV2w2QVEzYUp4dWkzZnJwakgrUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPkl6aWpyQUpTdHJFS21YSjZacGFSL1pZWkdidG1ybmVSUERqMHRPZnpkUkR0Q3BObGMyaHp4b1dpYXBVUjRQaWQ1ZnBCUENYa2d3ZDZXb21mWCtzaWlZNEdDclFCcmJ0c1lDTm92UFVYOGJxY1libFpYaldsVklucnpTc205RXkvNStEMjl1Mit1ZGI5ZlFGOVVxKzVzY0FSTy9HSG12Vml0N29yMDliZlVrd0p4VWNvOEtiWTRPUklraEpWWTRPdzBvVWZ3MzNxRDFzSFJ5c0VpTmdBNWxMRmF6RW9HUkcxcDg0dnFJOTdVRUkrUW1tcnFJU3grU1BKQTQzZ1pqNzRYci8yeUlnWEtVemhoSFRLQlhMc1l4M2hhQkNLeVk3WXFSZVlCenU4WUFtbVBGeU1OV1k3YjkxcDRBQ0RrU2daTHRIZFZTeVhKZGx3OVpjd0wyei9sbmFLNWcxOU1NYm5zMXVzOVZEU2l2V0s0SVJyY0EvYVBCQkhZMUZucW1DbVNzZ2hWTkNRbngvZkRlK3FHdW1iL3R5NGpLMGN5MllIeXdCaFVWa1dHYUVaa3h4Nm9YOTlsbi9WMSs3NlY3M2tLNGJ4UjFXMS9nVXB0MjRWV3Q4MUVwU2YrNlVHa3pMK2ZNd0VqT1hlcEtSVlM4b0hGV3NlSDVxOGVXTFRDQ1NaWld2Y3Vvb2txSUhZc2l5ZmkzSmVZclZxQ1hqbm0vaGdEV0UwOFpuemUzY3FlTGs2L2RBeDB4ZkU3enpreGJnQm1neEozSUExTElkK0Ztb1ZWSlpZSTNWTm9GQUdKQ21lWG9DVDRITnJJMWlLRjMwbVo2ejBuVDQ5bmxUemJyWVozNFVkbzF5S1dWZ3VKdWtVZS9qcFVraWp6Mk0vRE9RSkhLeUw5czdJZUtJc3pwL3VrOGxwUzl3aTdCUFk4eFozZ2lPbHFZdW1YVUEyaDNFUHpRQmhFY3lHYWk1M282WjBFNG5lc2NlQVVCOWI1UkFHZmJkYkptUkR0c1VGUGpvVGZENVJxV1NIUkxIbVJMVEQ0OHpqeUo2SXF0Qjk3aGVHazZhblJ4RWtzUEpvNHN5a1FSMEZJQldhSlBlZG5GaDhlakRhd1QwRGdTT21uTVpJVldRSlNWRmNoWlk1NUdtQjNkSkZNcTRUL0hOdEhOSmErdmJzZk1jQlhYQmZBamtmaS90WEVCdS9VSmFhNnVodXJwd29obi95YjM5YjcxZWNVaGdMdHY2VE1lcWJZRjVVTUxIbi9VNXIrU2dHUi8waTYwYUhieUo0Q1BhTHhlZnJGOFByZHI4S05hZ1FmM05EaVY2d3RZVE1tM1FZWWhZME9VMzRxcldxaWFmeXVIc0tLb04yYnN4dForaitjeS9TY0VhcGtPWlNndVJ3bzlTdTJNU0hxWUJxVExhdmp3RktsUkt5d2ZPcklzbFBTZFBsU0pHV1B4RloyWng5TnhGUGRpaTJvamFBNE0rbU9jVTlTR2duMUZ5K2srUEdoMm9PTS83ZEwrVkhEUzUwRndXN3RZekZxWHdOUFNiRFNDZ2JGUWNmVVptSjFzbDVGN25qQWxjN1BCZ21JYmRiR3JiNU05TFF0eXFEYVRFdlpDRDA2cVNKQ3Z5K1BLWEdxaGl5UUdaVTVhNzJudnRPKzRhaGd1TS9CMTgzcVduejFOOVd5SG1BWUJrUlRYMGxKdVZrd2R5RDloOHRZMWkwbERKS1dYQmVxdTJQNkhPZTBJSFp3ZzJXKzBzcWxaYU9hbGhjYWMwZ09uUHN6YStHWmcrZzdrdDhHUmR2MEpnSTZ1MkFKRW43S1lDNVAzN1NGOEUyK1YrVUtCK0NTa1FqWmV6b0JFR0FDKzRPOXpCN1VvUHZCTU9ZTlVvaGNueDF4KzNuSitFcUYyZ1JlVnZPWFc1a0NIYml3WWVKZDFmam9uUjBkY3AxQkhadUlPYUdOdnJERTJCb3NXOFo5R2NKNDl1SGZoN01MYnY5VzZ4MEVvRVNKalVhYUtQaGxPV2tYRi9oU005cW9OZUpzOCt3Q1FpK1l4RFJJbEwwc0gzN0IyK0VMN1hLOWkwR0s2SGU0WE9pUDY3OElYRU1WNjc2d3dzL2xUSllOV3h2b3pObkVDS1ZDNTlPRjZTNHN3NkhFK0VMZnhGai9BcVpMZ05vbFVNOVRENzVGTWUzV2QvdWxEN2QwTUpjaWVIcXJRUytJVnRJb0d2TkpTUHFXQUFKM0c1dWJ2enhqNmx1UWxQS05iVG4vTzV3SUJLMGtKaHhHNEhjNFdYNWEvVERocjltK0M0SXhmTmRZem4yNHJjckMvdTJTcjR6dzBZbElQM3hsTXFDTldpdThLbDY5eHczeEJrS0xmQWNtUDQ3alFqbFp1bW5vVldIMHI3TmVmbTVkYTc2ZG5kTm1nc2svbjQ5K09OL3NjdFVLWUVEN2VXWHdQcnpUK3dIUktBVC8vZGtxK1k4RGVqZ04yek9SSU1Qb2NpMFNXMUJtUnZIOXpseE1Zdkg0N1N1UkhqNi93V2pEUWFrSkQ2TXdRbGU2NHV6OENhVDFJdS9OenBCN1c5VWVFUWdETVVFOEFCMWxRNVdHR2M1cEN6YVhNM0h0SDA4K3h2NEtzTGtDUWpDV0NJclNjMll2OFlBSVB1WUlQM0hxaGNVeVBESmVjVnF5bjNrUUtzbXZxTlBrYS9lWGJVbkdsVmxOOW92OStWWjA3OGtvSUQvUE81SkNhZE1VbFRpVnZUVERkamVabUFxMTdRWTVwTGx2dE9PaktJUHF5aHROSEliQTlKbXc1YUYvcTZqREdWSlZOL3FLSzg2Z2tpTysvNW9HSGJpQkpDK2lSQUkzNUZvVjVXdExHTWVpSm9RbVJsUkRaZERSNWVDcVNtc3hZdWlXVW43RC9BdWFSN0U4elBDMEZ3RmRzQ1k4SzZNNlZsN01KcTFJK094YTdnZHRLS09IekV3ZXdVcDQ5WTNvM0RlT0ZVRjAwZy9rem9xV3gzVHB0MWZNL3hFU25RN3RZcCsrR2Y1UkNobFRQYkVZMWhNSCtiREZ5UkhHazltbGN1NXllMTRldi9aTkRoSUowZ0wxV3daQittN0xmMktBek1VY1BVU3ZzK1NyeEkvVVdwSnEvSWs1bzlpVWRlcjZET2FEd2FLLzhYREcxZWtNSXlZcXpXN3ppcHVFSmZzQWp1Ujl5ZFRhVjRGQVVUYy81dHR6TDBWd1FBUU9MQi9GNGRSNHhuSGJoOXE3K0ZFREN3K0Rjc3hvZ3BjTi9FL1FnMll0UDNPbnNZTXorczZkYmhjMys0bGlRWFBiTU82R043ait6SDczdUhNMHZTWWswL3lSV051Q2dxMVBxTVhUblN6Q0pnNldLMFhnelpHN29ieW5ycjh5ZStINXN3T1pVYnQzQ0FzaG02aXVsQk9FbXRSbkdVam4wR2o5UGxVRHBoVnd5RFZFaThTS1hKK29oaEdVdW1CQWJUR2JLMTQzbG0yU0xGMXBFbFVOMEZFcjBucU9GRzhiRDdIZlRPOHU3bitNSC9aSEFNMlpBdkk2dGJCbGJOV2NOWm5oUUcrWmFTTXVicWJNRWdBOEtFdHNWQ2pUaXluS0xWSXJBS1YzY3J4VHpJcFJQTjhTdXNpSGJUWFZCNHo2dUQycnowVTZEUjRiSGxsRzlxZzRlUnBlNjNiMXQxZnE0UWdtaUNQVkE1YTVKTzhlSGdoK3JOZ3cxL2tVTjAzWkVUeXJVVFF0N0tOc2E2TGplRno2ZUpUUEppT284ZlZ4ZFlNNzJ0cTNvRWpxRWE3Z09jRFhMeGlGWlYxYXlhSHI4VGlJQ0g3WFZVYVg3bkdXWjYyUUM3VGpNRlp5bytEemZxSHZOa1BLY0xTUncrWktuY2lCaGQzdXRSMHZsOVJVWEdZYkNTVmpuV2JuUVZZN0RTMEZyS1hqd2t2T29lK0NYKzgvTmM0MkV5TnpNZmxsaW5YdU9JV2I0OGNtZ3lPT2xCMzhBRGs4bTlvNWJsYWJVbG1FRE4xNi9YblhkaytXcksxQmJNUzdqMUZhWU95NTVSakdCRlVTVHZHaUl1V2pFQ3FtdWkzYlpDWW0zRExMdGFFUEg2Uy8wWCtTRWcwaGt0T2E0ZzRNM1FJdURCdUg3dWxYTXh6c2gzY3U4dGJSWklSQjdtdEladjBVaGJORUJodUQwQU9kWjZnbEpzc0tQSUhpRlNpUHFvVjBMelpaVTZqZFQvQlZBTlA5SE5BVDFQWTU1SUR3OFRIcmtDdDRIcWc2WU8zSjVSa3FibjJvU2h2QkcvOTNwblQ5Vy80VWE4ZG9RUXdsanl2UDFpWUw3SzFDRndHR045dGRSK25UK0ZwWWV6QjdxZEU4ZS9RNDkvc0QrYklLVTNycVRWZmUzQTZwRVNlekZJbzBsaUg3eVU0Y3BFQjFNdGhubkRhRkdINE9FaDJvckNMam5KOEhXL1NMdEVBUThnWHE4cWpqVTBHdFdITFVFejRIQmZSOGVNWjJXb1NBdUx2WUNHWW5sRUtMZmhTVTNtdUtIR0ppeDdRRzJRNktGT3liTkxqL0hGcm95MnlhQUVHY3hXeG5lWUNqVkpDZktrVkhoajBEOVo4eGFWaGk5TW8wdFdBQzV1Y0Zrc25zRzQvYjNBRVlaSHRHSFg2SUFCdmFDbERTQm02MzhsQlRtRGFnYVlTMmpxOGQ5WTdEYWQ0OU5Yb1ZxQm5yaUszOWgvUHZrNXdDcW50U2M0WDBuQ2hzb3hKS2c4Yk41cm1SSGZYbUV2azNsang0WVhhOVZxVlNnZ2k1b3M4T3R3a2tkYWlBM1BDbVNUMVR3N3JOK0hCOUM0MzYyUTN1aUlYa0d6TmljRjdCRkM4NEVQN1lpdUJVWUswVkVmL3g2eDcxT3kyVzVjdXdxem9sSm9scDhVdXAyQldWYjZXSC9VcTZnd0ZQOCtWRWREKzRyeTlvRmhQMXo0Y2RnTy95eEd3MFl3dFhhUGU2ZkdsTVJSdTNYelVZbWI3cTU1RUUveGFvcFppNEd2TGdiV215L3JQVnVuZHhIeHVLZm0vejc0WjlCbnZsN0x1WTV5RnB0Syt2Wm1WY25hejFxUXZocTBxMklEREdRQ3IxOW9UdVNwZGo1TUdwM3hDL2FSdE9lbFA4THZzYlRnS3lRRHNzTVVrM2psL0dIV2svQWRzZ0lPSko3YmxjZzcwZnB2WU04ajhsL0hxS0txenp2Wlp3emJSNFFhbGt2b01iZ0ZjQVMrcXlzV3lYR05NQUxpOFpmcWZxK3pTbHpwOEhPMGsxNWlHRnhmZTYzdW9xUUxETEt0dUJrZlBDNndGZDJqekNYZThrNFBHczZSMDdtcmM3dUIxZWZuWlRsYkxyMGhIcDhuYkpyZHRuRUN3Mi9tQ0NsVDVQUys1Yzc5VjlZaGI5ZmpyMGlNeVF5c0p5WlZ4MW56R1JnQzdxaUxnbEVHWHF4cDFqMFowZU5YcEFlOUMrVTNiQVJ5Q0dYb25JekQ2cGFTNExhalNtcU1iWmxHbHhSRTRFd2EvTWlaWHFQb2V1ZEpkWWx6OUN6VmxRTzJvU1Z5Vy9YOGpNY2pmeVlXNXI0UG91akZMc2tNMnBFWUJaZDdtUHlyR2xseEd3S0hjUjhWUndaN09iWWRibzlCd1BqY3dtNWhHSitncWJuV2MwdXFPK1NDQUQvRzVRRmVrUHFZMDlXZHBNdEhJcC93cnlOY2syK202Q0pTeDlsYUdYTTc4dW9Cc29udjNuSHBXWWdrQVVzTzNSRHczN2pOZS8rYmsyYktsPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_38.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YTY4ODkwZTUtNmE4NS1lMTBhLTk1ZTAtMjNlMGQ2ZjhlNDkzIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE2ODg5MGU1LTZhODUtZTEwYS05NWUwLTIzZTBkNmY4ZTQ5MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+QndpUVlDTWpqRFBDWVRwOVRtWkNBc2gyR1pZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5WOTRHRDRQOUdjNEVNRTZ5UXhXcm5tSy9ZWGg4N0d2cDY5d1FlejQwRUo2cVh1Sm5mYkc5eE9XZ2xsNnIxRjZTWnRaV2xVcjhUOWIwSnNUbE9yMFp1R2dEUzY0RzVpY01ZZlJCWUlWalkyMUdpMzNNY0lnbWJDSHJTZ0w4SENPRThTbnIxUnkxQnJQOUhoVDFRR1dJVEFybDM2Ri9EeUZCL1FGMkZlVnpDQ0tZdVNYb2ZMR0FLU1JPNm5kSjNEMHJBNjdhMUlxano4TXdVcTlVZTc1OFREYjB3MHRaVnlhc1hpelZORExUSGIxRGdZRWZiVEN3em51WjhUQVg1N2IrU0g3N1lFUS8vR3dyS0FRVlNmTkZBWndmUDZVbEwrczVNNU11NStuYlRMSHNXSUFvQVB0cG96YUwyOWxWeG9abWNrNVk5V240czUrWlhnQnZrODY3cmc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkowVUduUUxKdWpjbFBEMEY4eVRpMVNSMU9oWW54SS9Tdkl5T2JqNHJYUDJCQ2hvNTU4YXh5dW9tLzViS0VsSHlRNUpwTHgwdi9kQ1NVZ0NXMW4rc01HREorM0JoRFUwaFZQaHBVTHdmWnJ5S0h1c01sQmt2eXN2ZC9PNkwxd2hQbEdnSnJUMzl0a2lCQmk2QUo4bUtlRDNmaG9nWXFwbGVGK2xrckt4akZEQmZoV1RBYnVaOHk4QzNNeDZtb3M3a2piUjVHczQ3d25yejRlWWdXK05SSjhWL055YXVDRW1wOUJBYmdyd1daL3JtZ01YWW5Sb2YrOW1TUThmMkxmcWN1SXZyM0krTE5MaHcxSUNhTnZhVVFJVjZCMEpaS1hmaWJ3azUwd0FLNEFzNkxSSXkyL09KMWVNMnJuK1MvOUtFTUVxYlZKMFNOcnRkY3pKT2hqaS9xZz09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPmcyK0g3Uk1hYkpRQmtKZmZUTVcyZFQ1ZWFJbkUyOVY3L3dIV0ZTb0NQbDIwUDhqMU1SZi9va1NwQi9SbFdrdmVyNDJLZ1RVVzdsWXE2ZndLOStMTlIyQ3ZSY1RVVk16YlZzOURqUTdWald0NFBOWHQ4eWRLdmFXZ3dGbDA5aFNJSE5lY0QxT1g2K3N0aDNVbHlGd0x4MjZpVEdvenlweFZRVlp2YXR1Ync3czQ4OHFESnY2UElYcEY3NzEwNUpoNWFEejVoRTJ5L25Xd1QwSy92S0J3RWI5elR4UGhta0NPSm1UTDI5V3ZkekREa3NuaU45VUFCZDBERlVRWk9HRDlZQ1ZLWlI5OElYdDhVUDdwOCtFVFBaamRoWmVJWFpUYjl6NkZ5RFVWenR4ck8wbGc5WURpNjFiRk1PM0QwTFVta1ZoTnUxV2VTZU1VNDdWcm1aQjNRT3NqUTE0Z3FQbCtNZklVR0JFV044WDhiRE9zVWJUU1FQd1hnSk9BR3RqdHNCbkFrcURrWGFNYnh4OTY4dDE1UzNBYzJNdGZsQU1pM29XSGpjLzA0YWloTzEyV0YrVWxnbVdBVVFsaDR0NW94a1dMdVl4Mit3eHJORXFHOVRIY1paMDIxb3ROR0lBc1JtWEFRNk9WaVpvQUxSd2VjL3MzTUl5cmV1UHFZK0FBQytPc0s1WFhYVGtaa3ZTSjVIRUoxeXlRS01HMFFFcG44dGV3MDZSaWlMd0Z0NDZ4SUFXNUprcU5vQTBqckdqdm9TbGkxeStJajA5VkEycHByVmcrKzIrdFZzazRja3ZGUGlpQ0l1ODVrMGdNM2JKTWdHOE51WERBSlREOFJaMFdyM09EWVdVY0RUL2k4ZCs2TkRZYmdtcS9YU0JCRUJIUVIxdlZDc0FISUVZMmVJSzVka2NRUXM2cUE3K082ODJFRjNJZ1lNbEVJaTV0eHFWWTd2ZEdDZjNVc29MN0FHb21oMXVITHM0SjlVMHphTHcwRkl6UUhWRlA0RUh5YVRhVkZoS1dGOXBhSkVHbk1SRk5KdEUrQ2cvRHhrbVh2OVEyN0ZvUnd3KzdxblcwUWtsWm52NWlZNjRnSVJHQThoa3gzODJOUkZEendRbHZGemVyVWNrbTRIbC8yYlpQZ0pPMUpSN21sdXlhSFl4T1JuaWQrK2RncUJGOWJVMnpzWHZwdjJFVlkrZDNRUlBnbmxGRUhycThUMGtySkNCQlY4REpZcmhDZ3lzTy9uVVQ5c3ExeDZkbTdZSUN4a3g0ZWtNTG96djdNOFRvYnZCNXF2Vkp3UERnR1REWDh3VjFPMTdqd0J1SkZKNlhzeEg1ZmFCVEM3TS9KWnluYVpKcFQzaXRscWNRY3pOUGNZclkzYko0R1h2b0hFNEZRL1BGUGZ5WFQ4aE1zUStuZXZUZ21lNU9ISGMrOHhXbzcwUTRSUEZoNkx6TVZ5anU3cG9YSmkrSVI1R1Z3cHV3M2VQV0F2K3lXblhDcWZFWXpibjA0RG91d2JUeUZwUzQ5dXgzcktjNFoxTkNYdisxN1pXaVZrY1p3WFNuUlVmZnlrSjZoT3UvVk0wQ3d0eXJaZlJpTzZUTi9rT3JUK0htV0QwREFvRGRhWjRLZXd6TVNUQ1FsdTI5bW1JTXVMRXE4YW8wLzRHejZqN09rdlBBWHI0TTl3akpKS0FtMXpHR2I5L29IVGFJU3MrOGEzeDV6ZncwdU90RTdKSkR4eW9zaHVoc09UVVBTODFCaTlmQ3VmWkZrdW9XU0RHZ3FqcGZuNUt4OG1PcGQ1cTJWMHdPTGF3aTAzc05ld1RhWmtKcThvR0FVd2QyQnFIdWxPQ3F2UjNvcU1YVk1mdTVWRkdlRjIwQVdhOUpablpXY3R4WWtPWFNqcTBzaHZMazZ5aFlERm9wTjNPdVZGSGZGWjdRd0FqOXBJdTVjUnVBYlR3bmhqNklEMDZJL2Rsa3YvYnFrWEZ0WnZFaURwbFdqYW9MYi9ITEVheVVEeEpWYVBSTS9mWVJ6dzZBcXE4bnArQWMyTGpsczlvQVJzbFBwcmV4WGl6SnIwRmVKUFdXYmtvL3d3cm5xKzgvbG5CdWhnelpCVXVwcDJWREVVeUNwNXNVVTduTDllZXhRQ0c4TjN2NlprQnBoek5XaUFjTzlCaWNQTWtndEg0S1cvV2Z6VHZ5L2dKNTFZNVR5S3J0RUhOdWJERmpYN2FteHZIa3phUEFZRmZiamJpcy93ajdCYk9vRVRhQnlVNGJKS1BTUTRuOXZQUGlsZTRJYTV1VDdBTkR5NlZFTVI4OHdudkJMVmpKS0FXMzJhUmlVQ1d1M3B2cEQxMWNZcmxib1ZyeDVGWmVaL3dDOFV5Y2VMaEJEUEVTek1KZVh2MHI1K3JyTGxuaWtZTnJ6L2VmTjFwZ3NWTURmRS8yV0E1bHhPMlR4OFZXQkJ0T1R5c0dzUXRISGt0bklsby9ORlZBVWZQeng1TzFWNVh4ajNuUkREYlFQd01RY2daaEJud2RBaUxqYnVrck1zNTYxSXo4RlpEK3B1UkZIR1BIaVc1U2grUk81Y2xIN0lpaTJIR0pZYUg5cGYwSmlqakVnZmhyaHNrbnhUa3dEd3BsTjFJbGNBOVZmQ0U4NVJkb1RZcjhUdWNONE9ZVUd1TzFPbFJhTG1sdUJFSVlEWmRSR1NQU0dWSlhOUHl2cEZwbUlWd1Q4eUQ0RUZHdGtHT0NPT1hVMmhFZXo2OEE4UFk1dTBkcU1zY3BMMllmR1BmcURmdWFad283dlZuODVTSnZKQkp5YW04bUdaakVPbi96OEVnalBUVU9ETnBXWFBBR0kvbWN1ZnBzSmlHWS94NjVYMHZ3cWVBQ09LWjFLOU83aVpWWXZBL2FlV1c0RldtQTNvZlA0U254Q2N1M0l6RHZ4Nng3NWRiMFlsbkZBTk4xZ2w4ZGhldmNkeWYwazBPc0ZiTXk1MHJQd2V0djFxeUthbVVVUUM5emR5VHJzY0FkblN2RFBGY1NNQzY4ZEpxMkcvQUgzSW5SWUdKR0ZiTW9LZkVrMWZxQm1rc0Uvakh1eCtHNzZYc1VoU3l1d1pmQnR5SHNwV3FwZ0U0b3BTS2dEN2d3alorcld5OFYvWmoxZ1dxTTBOcXhzKy91Nko5TFJPSUF0UzJJWllhMnBhOHBsRDE4dmowdEpMQytLRmY5NUEzYXBLNktId1Z2djRJcytSSzBtZ0RsdCtGNldzZmhxVVVMMkhWUVF0Wko5RXFTc1pvME9Fd2NKaU8vNHprUHA4Z0FzTG1ERURQb05SeUJLT1dtNlRLV1o0VEJ2U2lvZzRoekRTa1NvLysxbzBxTDJqd09pbUJYbThFOWxzMno1Ly9sSXV0NFNrY1pjRE04bXdiU0kwRjk5dk5kTWgzT2srV1R1aFpKWmoySDVpdDVBYjR1RnhqTEt4VzNEVVhZSXJTM2hleXJkNENGYytlc1N5UU5Lc2Z0a25jTDFyZ2Vuc0Z6OXUrNHhQTDcza0Zkd0FqNnZQcnhKbUh2VHdkQnlZdFg5dlZUMmVxU2kvd0ZOT1hZY2lPUU5IUjBrL2l5a2JPNnBJcnV1RGpmQUJER1FkYzdud2VsQmVidG84SGpnMU9JaVYrOEpjeldvblZOL1RRNzlDcEhzTGY1cU5xUHNHeHZvYW5JMHpMWVBLU1R3VVA5ZUpxZFdhYnBJYUQzYnl0d2tDb2E4c21nMGVtTHB1eUdaOGdQeVV4eFFndTFzeWVhMVVzd0dESGNMN2xZaGo2YXNvSzdLVW83NGtPd0tNTU9sRFZOTUpiNzk2TlMzOEdhcVJaeGJFSnY3RkhGRVpZRGkzeUE1M3FlN1NRT0NOTFN3d1lIZkgyYkkvTERqSDA4d1VKUEZSTDhIZzVCclpTVnM3U1FZTS85TXpEcW9TcGRTR2lQL3ozSEw5YzZQOTBjdURrcHRqQlpHK3JnTXNuVmMrRE44VDhuclhyazk4NEFOVnRuN0wyWlNtcGhoZmpqQnRIYWZXcmQvYnlxV3IvWkxTc1dsTkY4ZjhreFZnS0hhV2ZmQVJia0hTMWVtcktBYjg0N0RVV3FiUVBxWWVKeXg4UjhDbUl5VURqSkp3YksyWGg3L21pOUtmSkREMzlmZHl5Uk5EcFNLRStpck5TNkRDcWEvTWo5NDAvUTl4MUdUYm5yMHhBMnZqRWc1Q3JCMm92R3IvcC9yVnFvdkZsNHJxemZacCtrVktVN2xSQ3lkSWgvVDJUbWV5VXlNdVFWYWdjMkdSUWFDUmxxUDRwUXF1R2J5ZkZpVERjOGdoamIzVGxmY1JIRDZmK2ZWS01XVkFhcnBhbEc0VmgyNzFqNVVkSnlFVG1scGMvUXc5UE44MUpTbk9pbG1CQUtKNG55Y2tPaFZYbFJCK3VPd1d0VUg3eWxFNng5ZlNydnNJbytpcEs2UkNVQURHbHVqY1lYYWhjNnFDNU1mckZuVkRkSHFwSEtqR0pvZStYKytScGNRME1LaWxTd29wRlhIaTNRbldmMmNBRkxYM2YwclhNaGw5QXJmMVBCbzJzbjZNMlFQd0dKdHpJU2lBWUt0R2ZFRUloM254eU12OHM2bE1TcHZtTzN0WE9VVWkyR2VPUkNwMEhPWldWZlJVYWtCRElET3ZIUDRrcEZhNFFWODlobGlRRmUrSmtQV0FjclBwZ0IxRW9waWZXZDlNRjV0K2t1UU8xSmFXM2xlNEpZY1VheGpaY0NrT3lHMXY1cnl1NEFPQjU2aEVqRlFlRDV6cjRMU05RMnZKZ2ExL2V5Y3NhS1JGNWFCWGpsRVBkellMa2lQR2JtRjc0d1dONzRTVkdMRGsxVzQ3OGlMeVBnUkd6dHRYOHNReWc4OVErUmJHOTJ2RUdIOWlYMmljNGY3cG5Rc21RcEsraUFUM0VPUVdWVzFmSDRBK20wQk96Qk5hY0REYmZyY2wxN2oyMDVtTGNIZTJrdllER2FYMkhXMDJxREJvUFJES2pqejhWWXVkZlZJNStnSzRrZW5NMklDTER6dnFtUmNNTHlPZk9GQ2Z3K014THdvQUlrWXd6a0lzNWF0dUdqNzZ0S2hueEpCK0RtMkY1SGNKbjZoMlZjc2wvZ3E4RFQ3TE8vL1hreG91elJ4bm1mZTN1WUpTQ3dEZzN0OStWcmtDUzkvUDUzajFiVHFOT3VvcFlZRUhQSGlCMkpuQVU0WmtCTkpzZFd2WnpaYUZMWk83U1lORzR3cHExWjZiWVNjNXhDa0kvTUwzd2dqZnRhL2xsaVRRTTVVck9QK2pGWUVLdlpGdjNXY1hJQ21aNEJ4UWc4cEVTc1JCU1VCYnUyMk8ydFlvTm9KeUgwV2JLN0d2VU5zR0k1SHBTZVdCcUZUSDF0bEN6Zmp0SkhuN1lkU29VV3pSRDIrT1ljYXRvTkg1MUNUZDk5b0hyUksrcm1NQkFJckVqb0FaN1k0RGY2OU10NmtOK0pnUElUbU1LajZ5TnBwMFpQZzhYS3R1ZjBVdmlrZStmbEM1UmJPWitaMEEycTRaS1puOHl3K2xGcmhZSXMyanR1RGNYLzdtNlJ5RTV3cW5aZ2p2Mzl3c0hGQmx3c3RGMnJpZGxZTFo2enF5dmgvTE5uWjY2dTcwVUUzOXk5bXBlUElOT01FWk5lQVF1WVdrOUJWSnA4cHIrMEg0OVBmVUl1eWZXaFp4dHFVWW1ScE5SWG1UTTh2SWRDRjRoL3JWRzFhU2JHRm5ESUtVQm1YcHFQcjF2QVNoMDN3REh6bis0TWJHaVV5c0F1dEZTVUthalJjNGdjdkI0ZVNxTVN2OVQ2MEVua1FTMXVPYVJwNjFBVkI4eWpUcjc0dUxHN2QzRjU1cHhuajBNMEl4Zlk1RmtqMjZOamtweU5jNFlTSThMT2JRZGJuek0vWVoreWtTWU0vc1pJY2pEVHBjVnV2RDdvbnlpNk55cDFGcTRKU0gxK2lJWmpFMmlGeGNDcW1XQU8raG56OXRvZXFvWFdvUTNhcDF2K3VtcDdhSFp3a2hGR0ZUZWNMTE50N0g2SW53M2pWVkFhN3liQTBadHRxODBFNlVLWnFiS0RvL1d6djVZaHU2OHNvZ2hkZzNJQzhxOWZ4T2Q3SkxyVlRSK2swcS9HcTJEd3BWWlVNRUw3eFlRamI4c2gwdEI4ZiszSlpoY216ek5MT3VUais2MWdKQlZTWkVvczNIb1VQRnoxeUt2eDMxK1JaVXRHWlh4eHZjMW9MeSt1czVVeFNrRU16WGtlWXZxdk8wSm13NUFGc1BlbU1USVlQNzJNMkZhVWwrUDJ4dG9nNkd3eHhVSmdvUS9mN0N2Q2o5MG5qM3dCZnM1NVVaeVZNbkJ4WGV1cm9FY2d2OTBOcHJwcDNBNUlLbjFKZWNBemNrY05yTHhkeG41ekM2TjR6TUhCRUxpREx5dUU0anZ5d0FkMjFPY0puR2V0T1hTUG9wQUw0UmNnNGN1dDNtK0hZWmNuM2J5UjFkb3Fxc3ZSOGs3RmVKc0dkOHVoMzY0ZGdWTkliZmVrOWYwSWNFSWJMWjllL2p4ZE5WVUNpK3lTNEZRbkdKRndUQklNNXpwZGxRL2hBRk0vZEl2WGFlSWhacjhPQWxlN1piclFZclJ0aHRGaWNWdFoxUU9ENGd5OGdKaHJ1dEs0MCtZR1V5YXFsRmlEaGhnL004SXlkQzlxcmZNYVoxSlRvSlB1WE02OGlrMjhXN3Q0T241SVJaVlpPaGh5U0tGbFBLMzl0MjJTOHVrWDl6MVRMM3Y4bnBDT1FrS1hJTlBEbG9CTUM0QWw0L3JUNExqT01nN0JadGoyWnd2Ump4clNERk5pMmhhaXhNaHJ5em5HRHZRZFZQWi9LcHJBdWpnQnljT202Qk1pczRaeERWNUZMai9aQXhhM3NqZ2VVdWJVaUx3RGtXV2RTZUYwaWs1bk5iOEQvcFlXSUdEcllVWlpPYW5aWnZoeXE3SlhlREJSYVQxdytBU2ppVzg4VXoxUGNmejJaVjQzTXNIeXN4bWI3YWdPVkJ1YVNGZTBKYVdFVEZHWFdlV0Z0cTVkWkpweHEvV1Vsejd1czdYZGdWc1VwTGV6ZGRNV2dycEI5TWNvWm1LN1NaSkt6SVd0MW9TVWJuQklhaytXSDBOSm9SQTVlVzViZzZvam5haTlYTXF0aXZuOWs0MVcyTGdkY3hhWmIrOFFKb3NjelpFcGlmdDlrRmszZGxJQktjY0dYT1NoRFNOQnY5VWpKdFptLy9QWUcvODFvc2JET0lQTmdMaWFGNUkwaDMva0w4ZVloSzFwbGFiN2NZcGRvcjJVRG5UTEl6TjBpSG1ZQjkvZFJOVjEwanNYbFBIWmtjVzRzYjRQbnRCbU5jL3V0ODZjdnV6UTcyYWJ2ek5rN2JnYTVyRmQ3YUc4NlBiVzRKL3ducWJneEhjaHdwV3R0NjE5Zm82d21FQjRFS1hod00wbE5NakFiL0ZUdUY5a1JrbWVsclA0Nm9oSXlBQnJtblg4RGp4bHJYZTh0c2Z5S0tzZGhGbkxQNVlRQUZqUmkzL0MydzVkSlh1OGZtTGI2b0FocFlnWk84M0I0OGs5ektMVWpDdXEvbnEzclpqY3Nkc2VDRTVicllKd20rbExleXNKTUJVZ1dGQmFqMXlFVTVLcWZManJUdDBlM0Z4SkNnWkt2V3BwRUNvRkd3MWNhdnZZT3lrU3o2ZUJkVGtXOWoxWXpUekVDaGpEQndxZVNsdmEwMmFPOFdoai9BSHczZW1tayttTDRRRStUUWlSeHN2WmJTUlhxRU8zRUMwdi8rWmx0TEpGTjMrQmtOT1BLc3dGQlJZd0dOdVE0OVpTdGtaTmJJMHUvaEVMTGoyajhJeDNSQkt2NUlpb3hUNTR5dm1BQ1Q0ZnVKZnA2NHAvQWRJWVowYk9NRndPRFlwOWxnWDlSVDZ5RC84ZjUwTk44eHVzV1RaSDFKLzlWT1lhcU1nQmszV3BJMVN0VnZ6NUxMaW5YTHM1SHc2bktLUXlCTGFTYjRkUmt1MVoyZGs0NncwNlFMeXdidnFlVWhOTzIxZTV0QjFuY25ob3Zwc25aVGwyVzhjVlBFZ1FEak1LbUJtRlJSVXJrWDMwandIVW5PbDUrYTNvMjBnaUh3NVp1S3FHYVhsMXBPTjFwNVpuaVRwKzd2d3d3MUhkNTBycnk3MnBJbmVTVGFMQVNzOU5SWTgxb2tscGJTQU9HbStidk41eXRMSjFPQ2dwMmN5RTN2QTVEckloTk5rTXI2VnFWWkVyYXIzSitvK1JINkpwOGtkL2JXb21DZTZBeC9kVzMrbWkzei95RDNrZ0s5T3BoY2xXckJ2aUxNNThQUlJaK3BkRi94em8vZzNkSC9odkpIVnRlUG9YRGs5MEtGQXg2eE5obXpQR0xFZnh2ZVdWcXVwUmpKTEtXT0toRk12a0QrMVlXeWFLSEtVTzhYTnJ3RXhPbDQyMGZudkZUMlY2UysvS0w1cUlzS1g4WWFJVUNBQ1dWQUFsOGJUL1A1WXdXdDQvV3lpU1VBMm1vdHhlcmlPb01tdzVpT2s0SXlpOFNiaTlwYzh0Zi9QYkZzM0dWdXJFWVdGeitodnNqakJNK0FSMzN5U0NHbTZCOHNzdzYzM3FwUVRxNThkTlhlSU1DS1A5cFV2bi91NldMZ0lVaFFZWWFwTmNpQnhiYnBFcnNIVlg0U3oycWRiU2NtOEVKMkZXVTd6SndtazdoTU5qTlhGWXNpSkhGWEo5dG5pVTFaaGNkb1ZrN0tRY3VJTnF3VS9kN0RCbEc5TnoyZzR5RVlWN0IrNmh5YVBvTVk0WFFnZ0JZd1BPSGI3ck1vbkduTjNBMXRGak9XQitTVS9rUGVNS0xqdmJod21Oa3Zic0dob0ZhMTJLNjJvTzMxZisxOHhGWTFuUnpNWnJTSzJTc1FvdjFzTjZnMUhmaG9scnBXQmEvWWlianpEUzA4YStEUjFrRjJVS3Z0R0srMFpnNng3djdjNnQ5UEU1WTh0TnNLcGJxSjdSalhOYUEyUXJ3Qmltam1UbTJEMmZNMmNwNHk4SXkxb0kydUtVTzRzSGc5Mzh0b044ZnRiZzF6TC9MalduU1RzVG1LSytDVEpZRUorSm9VWGpZbXovNTZhRHMxWkZmZ3h3TmRaUWNpTGhkMWh5dGlSYm94WmxCcXhyNDRtYUx4c3JtWm9XQVdyclgzRmlucHhrMW5NQUZnV0F5Y0xyZmdiYnB2em83dU40eTEzUEd0UmUwVmxNVS9SUkZiM29DVVFIL05Ya3ZPUHBwcmZFOGtxZmhoNW4rZXpCZ0VYTW9XSW5HYnE3MWprN1paU2x1NTJlQVh0dnkxaUNyK1VUamFlTWZaeWNyTi9QcWRkRUJwaGJiUnhtNG1RaFNIWUdTYnZabU01ZDhTRW53TFZ0azNRd3BYRmltQzB3ZlhBM0VDdFYvSGJpWGY2NWNmQ2RtU0l6cWh2dEJ1ellvZjVjdHVrTXd3QldhUmFPdTIySTFuSjFMeGE0MXd4ZEtFMDUrWk9DWWRTNDZWODQrdEduUllTY2tJVFlMVUU2ZHhiemY4K0xTb2gyK3M5RlJBaGpzUDF2Vk1rQUlhWEF5ZVFWQXN2ekFZUkRmL0o2c09EdjFVcThvbjhLbk9BdnBybkFmeFZYTFpnWTg4aGVYbzNaV01wMjZobitrN1l6ZlNaZ0lRUkQxVjdEVU5SQ2hSYUJaZ1BBaGYvRTkwTld3VU14Z3loSUY2c1dNUmRmZ0V5NFRqS2krU01ZYXJydE9icm1KNzJJaDUzVFJlUWM8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_46.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTU1kelFGWjZ2cUlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd6TURJek1UQXpObG9ZRHpJeE1UY3dPREEyTWpNeE1ETTJXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUs5bzR3djJHMW0vT3dDVll6cXNWTitQTUhia0VTM3JweERSQVBSSTAyNHZEekt4em5YV21oM1gvZjMzT3FtMmpBR3VUNzBSdzM0Qzg3OE9LSWxwY0tmV0d1b3VMWG5lWUd4VzZXWTFJQ2Zpb0V4TGxUK1ZuZ2VRSEZJelIwSzlVN0MzRkh4SmgwWEwyNGIzd3ZBY2UzTGFLRU5sRTJjZDRJNGhmVnFFUHlpVG9ncjkrbWRYSVgxKyt3NkROVVlpYnBiWXBlOFZvMTlGZTMxSGtpSWp1RFVQTFhTSDBoazZwbk02bW1JZE0rQ0JDZzdvUnIvVVlCR3F2SGc1SXRMK0UwMzZlS3dkQ2preGhPRmRkUEV4Nzgvc3NKQittcTRWL0NMUWJWUG5HbmlLWUI0UnFCWmw1NnRwMTJwRWRVVzZWbHpFUEx1Vk1NbFY1bVJMVXV3anRpVUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCeVA1TllZT0lZc1Fra2djTkpYQ1A4b0krdHVLRGZnWmZjcGdxSjRrdXo3ek9FUnBWenRnWWdVS1lvMHBtZWUrV1Q2WDNxM2ZaQ1BUdFFpQXVlbEhPSFRSL3J3bHRqUFQwT3VBejNVNTBkY09GTVh1V2lpL0ZBVWpSdzI2T3RSLzdKNnI5MGc3NVNlTkJCWFRndjZ3UnI4bjQvaUVSUWgwSmtCSmNwd0NEN1pjRGdjUndQWnFwdUJGMzFVMmpvMU5nT2hTU1ZnN1pEZ0ZaRExVZWVHZWtmYkRMZzlURCt4SXQwNmZZdGQ0cGRJcEsycmVCaUtnRTllcGtzalFPN0Z6bUp6QjR5YUFJTHJmZlNzeENXWnJIZ3dBU2FhT2UxRllQM1VnTHpodk9VL0MzMGZlbHR2RzlXV3RQV014Q29wMnEySlIwU1JHK21XaVdhdTh1WGZwbUU8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPm9INWcvenVxS2pVL1hZQ3lsOTliL2t5VHpQOG82cmhFVGFhWFNYWEdXVGNqK0JqK3RvVFZHdFlzb0RINEdnZDhVeVRvcmVNZGViZ2ozeUQrM2ZJTGtEMjZtQzNCdTJZYlVWY1NOSi84Zm4zT2JrbWtna1kydzl0bTZmbS9jUU52WHNHZW1veXRVajNZN244OHhGZHZIUGJCaEJhUER3MHJwOUc5YXNTcWgwVlpDbjNZN2N0dWV2WittQ3hDTWN2bVRGWGZRZjlqRG1Ra3YyeU55dmxvbnljSWVRVCs3TDdvV1laRHN3Smt2QkNtLzErY3FrVlpMeXpRVWtTWUNJbXlQZHVhZ0p5ZUE0dmNMYjREZFZVVXFRa1R2L295Slpkclk3ejFUMlNpazUrblVxa01pdU5Ua21KekJNZkwwUEE5MkJ1elI3UWhsQVhLa1RDaWN2Y0xDUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPk4rbGp2a2xURkhCdDNEOFJJYTJ2OW1iQkRMNDREcnhFVlFlWkxzcGpTYUY5bkVvdGh3Nm16SldnVG8wYklsdEh0bXlXR1d5VFA5aDAvaU9hcTJUaG02M0Z0Q05mcTJWRFlXQlVGZFpnb3dzNEVJejFnVitwejFNTkRFZmRMRWptNVlwMy9rcVI2U1A1cjlySjFvWGlnazJidW9oK3MvcDgxQk1WRHNCSWVpS1NWVGpGZm4wMi8vL3hJNG5TU2ltOFJySm5HbzU4YXM5bnhmYW5Wd04rQ0loK1ZxcUZRWWxYSlA4VmJmRDJOMEFPNmx3cXJkcHBVMUxCWHVHTFFWc25pNzRYTEljZkhzd21hYmZOVzRndm1OR0hWN2krSE1lb0ZWcmsraDhWU2FOVExhNFR3ZnZ5R0FIMmVETDdHMTZsRnpIVjdZbVJlZmUyTkdiZVM2MzkyUjRhdHhLelc1cExBQzBLc2JHMU0zdTJwa0UrQW5QSVZUWVl4eTVXci9yUi82allzV3d5OXIzVklvMW5YRk9pYVVWbjRYS1lIa0oyZUtSWHFpT3NNUXJvQTJOMEdVSXJFQzNWL2tDZmM3MUl4Z3dDWjRiYmlvNms5bHN3ZWkrT2xuU01EcmRaSDFwTzJPQ3ZBWklmTDFJWVFwdWlQQlBENm5vUkFnL2xsbkpDUkFqck1FVm16blJPQm81MXZUVGZkYS9rTnZTeEVJVmY1Tm1MZE5mNHJLNjcvMlhFOHJkR1p5U2tDdGZYUi9KVnZ2dkhtczlUcHJaZGpPRmxGakkvOVdSaW1mTUowZk9DL01YNkJrbDJMYUkwQTh4UDNsK2gwM3BmYTBJamRZRDVuTm1JeHFkeWFZVjRacjF2RGh1ZWliLytJeS8zNkhMY091aHE5OVc5R2wxeUpueVF1Q0JUMDQxZmNsaVNkVk04NFU5L0k2cmwzNVFQU0NFbFZlOVpONGNaaWVWQ2VCRkdTUG1GM0JIc2hadmI4ZzNtWWljRDhRT2RwNTk5RE90R0d4UzVTd3BsWmN1VEcyM2VkSU1uVTBua1VySkx4ejBoeTFPb0ZRK3NCb0lySkR1RVlkZUJlYkVnTXAyQzNLM0tFd2VNS0x0K21KcGxjd2tJVlQ2czdPMk94WklndUxYeGxOTnNQK1J4eTJ6eXV3R2loMi9CbFIrTEtXRFN5dk5KR3d1WUtlOTY5UnNsQjZFTEZsY3c5MDRWRjVRQkh2ODErckh2NExVdXVnM293SVpRbkdKNFpBSWxmQ3RwbkJsVy9ZRkdrSGtIOHlPQ3hEUmE5UDNSS0NDdElEQWtTSzV1Unc0VXdRY25KU3ZvZVp2bmJqUzhBdzFPOS84RzlnaWZ3QlJNSE04b2IzSUY4aDg2YXRTd2M0YWZEWVlJRlZUOGIwT20xZDhrWEhyby9aZitkemF3bnhxYTJsM3dMV3NibTExZjloMEd0NmRsU0VhRU9iOUFVNkJDSTVjd1NsS1VPdDRXdDBGWjNhdU14ZU81ZjVXQUxXVjA3NW9BVEkzYnNndkk0Ym1DKzFIZXdqUzlPWkI2R1hEcEJGcjZzNmhhbDlsVkZlYVl5b2FQRVVDaHNLRWhoaUc3QzhTcE5TTWQzbDlXY2RML1l0L2QwVzNlQ0RmWnJxM095Lyt4TVFTQ0h0L2t1VDBBWnZiUmFVbW1TeDhEUVVpWDd6M2dFWkxuMng0VGNlUmU1TFQvWDlHcDA1djh0L05kVXViVVQ3VDJHY09JU2V0V29tRUVRMzA2cTM3ODhxVkhidWdZcWxVVWpJUERRSHI4Vy9oMGo2dzl4V2xyTTc1RDVSelh6Y2l3cHVlQjk1ZDJ4MWRWN0ZoU0NOVnBLeDBCazI3NjBPS3ZrVWx2WHhqUmpmZFgvVzh4dUtqamc1SnBTakQyRTJCTkxCd1orLzM3RWNmQ01KbmpuWWpweFZwUXlKZ3YxNEV6czd3SHc2STBwd0N1YWVwZXhhZTE3UENjaEVXb3FXeDZ4TlBYdnVMcGZaRGdONmRGNi9ieVBzRWJoOWtYY3NubjlybkxDUS9EcWRUazhaT2tkVEYzRUNqSEF6ZitTRFo1ZjlIOUpPU08ybmc3cmdTQlZGUzBkZmJQdUNkVmpaUjNWSkpZS3pTSUMxSVRZd08xekJLWW51SHhROWJrRU1FY0toQ0YvRm1IWFZwS3kyckRVUHVCV3MxVTVoRkFpWEp2dFgrK1RZU1poWGNKWEtuY1JpOXdDYUFUc0draER3RzlxUmV3VWtWY3lZM2V5UTQ3YjFaaHZhUmNKMEkyVlVONkRoVmZ5dENqaHQ4ZUVtcHMzNUk3T1NheXF0alB6Y0NzT0J3NGlIdEcxblk0MC91aS9mbGordzdyVHBxR2p0WG5wdDhqVXU5eDZwclp0ZmhPbEprR0N5SS9WM3g3UFNyM3NIYldVcFZzMWhSTyttNmRKTHhsZ0FDMnJuRW1meWZsZWl0ZEI1N1l6SFMveGxCc1VRV2lJK1U2VzVWblg3TjByeVk2VHNpaDZCRDM4dUZtTUNINUlIcWdPOXl5VjJrNUcrbXBvekIyNHU5cFR3YzBuNXJuc1J4R01VWUlUNFI3amhjMDMvSm14dTJOT0VHZ1BmejZNRzZLa3kxeEhCTStLTExWTUtaTlpQMEQySXFsZkFSVUN1WFEzWXJJcXdZNTRGMjlzL3RneDJkU3cvYjh5QncySXBVN2tJNHd5VWxKbm1pcjRvaVc2R0gzWEVQRlpZMW9XamIraC9QRTlWNlExUGF0bjJxVlZVYjlzeFlpM3labENnZG5uL3RXVTk4SFdZUzFSVENRR3dKTUhvc0FWU2Fra0hkUDFrZU02aUZqWmROb3Y4aUV0V3o1cmFveFY2UEdMZzVMVGVTeWNVNjFOUFV5YlVGTGNBcDZJOWN2aFZhWHVvOWZGZHEyZXR2LzJQUFNYQjFsQzZHM3JTYlZ0OVpGUmo4VVc3b0RIMFppcThPNktGS29pQm9YZENoVFlBTHRHTU41SjV3bDBaUE1MZDREcXpYMFp6N1FUT2ZmQU84ZG1ZRTJvNEgwWGcwNkNvVW1FZExjZVpta3lQbkRENTk0R0s4ckNQTEVDbC91VjlObnU1UHZ2YzY1cUZOcUFucGlkRnNPWkt2a0tnbDRNV2dTZG5meTA5ZGpUK0ZZb0ExUXh4TGduUlRrYmNHcHBqUEp5MVQrM2hacDVuTzFweU5YU002ZVRwLzBERFBrb3pZZm0wczlVM0Rwa291ZVRaKy9LOEdSM1BmcDJxV0JHUmtxRnMyWW50dkg2bXZCNnZOTTBxT3hLNUhZQktuTENYb3JqZFhNZTlGWWc5ZkRUejhWbEdGUEpEcGxhTUp1ZFl6TVQyYTNmNk8zdWZzZ3R5MERYSU9aN25YYjIvK1dSZk1PT3J2d3RCampiY05kdHNocDZ4N0hRVlhPZmlIekhQWHhOWHpGNUYyNjJFRnh6VUhLcDlZZWlRYUZCV2FUelJPRHNsYjAzekFQanlUOWRDTTE4UnUydlE4R3BKWWJZRStsZ0x0N0pseklWV0QrS0p1NXFHMzRlMXFuQ1Y3UitxS2F0dE9vRlE1MWoyYkhlVEJMUDlnZGFmd3FKK2N0TE1CelhrUUpZcG9XcmFhZVlCUVVLT1RZUC9ZWGQzYzNEOEJMcmE4WEJqYTE3aTg3d0QwNTRzcXoweGZpOC92ODhTb1RWalV6TDFLcGtycGRpeDFLRGxPMzVzK2ltd2JrWFFseFhydDE1ZFN6MDVkUUNHbU1JSXhNbkt5Rlg3dzBScnJoSFlCaWhJU1Y5Z1VtVWM4TUtqSDJ3elV1Mm5aUGNJZ1ZDbFl2cEtLVE56VmwwZEZEUjQwRm1HWXp4aEFyUlc5M1hGaDZUZ1pYT3BubStUbXd2d1Jpd1hwTWxZbmVHaGVJc3o1MnlqZUtVOFRKV3JPck5uTE1JZzVKenBBaGhzWEF3TTM5M1ovV1NGc2t2bm5hRUxvbTdIUWdnTUxlQ3lHMGZYNjBCbHp0ZXZuR1l4TXJ4dDhKcHZnSFg1cTMwZkhLa2pmd1VYTXlyMHBtTmx2aUdjalF0RTE0OG93N1ZWWllpTDF3WGRuQjFzT3N2akl1eDF2NEhtYnBOcnBabmlOdTlnZnRxYndLWnFtM2loWlRYYThEb2c5Q0hFcjJXd1oyc1EySU1CVjFMZXJSUmgxSzFkQ2RyYkNzdmZMYWcvOC9VK1NZM0hWMmxCcDAyaTFOQkRpZDltakl6d01kbG9xV1JMU3dCWVZlcmxodmdNSTZjaldvRXlINHhuYmQxajR6czJFVExlUnFrbUwzQ3phM096a0JjVWtMMUViOThiY1FBV3NveEpXdVdKK0RQaEtrTW5pdHBZNXhLdEh4bzFFV05vZEVkeXNRMG1EbXJqRURsQmI5dTUwWUoxSzRPUzM1ZXBBM0h4ZlFmTTBOc0t5SGJON1lIYmlIVXA5dWxqTVcxSTRwYkQ1VlljT2FDUDh2Wm94ZWZmZUJjTkpnUWlrelMwNHY5UERTR08rNzVvdmd5VXlJbnY0SnB0Wnl1N0lLYUtMSGJNSGt2VVBXWTlSUUJYem1ZZzdlazhmWmtlZDVZOFVxVm9sS1BzU05SMERTRGVhcUZtM2JlSmdDMmlQWTV5MFAvYXk0NDUxVnlXU3Q1WUtMVDVqZTBKeCtQMm1TVVFFRWpkaVRQNHRvVHp4bm5hVGRQZTRRNXNaeWpvYTRxRndsbWZmZE8zZWppOUVkNkw3WERPSkpscU4vWDluaHNBTElpWmh5NUYrOE8yVUU3RWdNUWt1ZXRTNU80UHhPTndXS0FIWTI3T3VHMGJyRFFEM21ZZ051eXNlTE5sODRETDBhcjNheFM5ejZuUGI0K205eXNRZE13VHhWeEhtS2RJaG8rTEJHR0ltbDlNeGtnTUd3cjBxRmNOK2tNVks0L3RNNTZadWI1cFpwRVdJUlpobEpxcmZZV29lTjVIVnI0TmJyd2RndnFEN3pSUllxaVVRcVBESVhzSnlRYWFLNHZmS1lsTUNxZVlXUTV4WVNyeGU4dFFXbUwwSUh5T2pVY256TksvK2lINmJtWjJVSlVHKzcwbW1KWWpBM2VpMUw4U1p6bGFHUkxTeVFJbXQ4VlNYVndCZnAvZ281c2U3T1ZWSi92TWJtSFN6ODJOSTIxTlFqUVk3QVp1NmlpUEpKZmVOYk1jQ1l4alBLaW9vZHEwTEM4K3FDOERDSzVCKzlQMmFKWXV5eWNlMFFYamVTaVVKV3prbVZjWnUramQ0L1M1T2FVQ2JNTWw3a2ZWanhGNmRVVUpYbS9aV0w1bmpSOFRHRCtaSlp0cDhPZnNzd0lNNVdrQWZBajFNb2R2V3I4WFM5ZnNCSWNiYWc0d2JrMGc5UVYvQ2YybmE5eEZ3cG96RGF4OFlRb1Ztbld6emlLZUpWYk5FK2MyRWp5UVcrWXhsaUxIdmFIandHUkdyYkZCMU4raEFxeVFSK3lsdU1FYkR3V1FlL0ZaeVUzRkF2WldBMVZvRVAxTUZsSEVOakttMldQdXFaWEVTb25USldSbzlkNFBGTUs3ZGN1ODIxSlA4OW5YOXE2c2hWNUpPZ0hDUzNjTnM0dWdBWXJaaU5yTEEvT2p2Y1Z2eW5YY2k5MDNqZVUzUEFCejJHa2RuMmx3RFNCKy9pU1Fmc1RKbUZKb3loTGxpYmtPTG5FRjA1OVA1SFdrYWNYOTNtWUZsdEs4NjJoVi90NXBQNXA3S2ZJYWkzVms5QzhLNjFvWG9zRnZqWVJJSi90eWtiZU1TU0tNcUF5Wm1paEhuME9QY05aWjF5MGlnRmRwdXdYL2dpTk9xWEViYWJmaGFkRVpqdjZVQVJaOXI1N3hFNUx4V0dWTzMxMEV0VnAzTU9LOFo5K3JKNm43MnlRQW1ValdlSS83ZDZycy9RK2xIT0hTZHc2TFdaM2twbzR3bkt5cTA2Y0ptalJoV0dyb1JjMWo0VDREaUlRTUE2NnA0OWtKbGRjYlM4T3U0cktvb1BMakVXYWZhOCtpK3dqRkFKTFNTdDJJUTlCLytDdVV0Z00wNVNEMk80V2tTaVBoZDZJeVVCN1pmTmMwWU1vbkZOSGlUNkRBN3dkMmc1bkZXVHB2R2pCNXZLZjlsbTduczNhSUFWcXpubUZzSHl2R3huT3BLQW9waDI5OXNEYVZobkNFenRUMDNuSTB6Y3RKT0FCZDJ1RDd5SmUyRGRNUk1YSUpjeHl1dnV1dlhHaG1CZ0JUNklEUzdHS1FoNVIwUGovb04zRU1wWnZZR3Ywc2s4bnlscVJNZjVUYlV1VEVRY2ZaSmdkTjdWMlJiZmxZZVgzbDNWRWl0VWhnMGlCUWpnY3RNdjFKQWhrNDR3cy9QK0lLaWgwZ3VjVkpHZ2M1ZWkyQktSSWlaRGxKUllOQWNnUjVkTkQ5dFM5aFh1Y3ovckpRU0ZWYWxEd0JaMHMvTkJiWnZoVzl6emJhV1JNMEgyZmJucEVzeHNoUlA1MVpBc2tmLzhNdzRYVTEyRkV5eVZuaCtENjB0eWp1QWhuZGdJNkd1NUJldDVRNHVHbjhNVGJQczNzcmJrWmw0NFppdjNoNzUrRHhvMjVyZlZoSlJySThJK0puUEYrcTJnNUF5Vjd4eWY0RFpoc1YreWx1SVBNVjA0QUFTNTRhVUVVWFhERU8vYnpERVFPMWJJWERlSlQyYkIvNExsWVhySWdpdWl0MUxQMTRSVDUraHpxVTZsOVN3MGFYUjVDbWxFdTJNbWx3RitxYmdUMmllaW9NbDZoT0lzaGFGVVpPcWp1Y0JDUHNMSDBubXBiT3BxZVdqcUYrMHREOUd6NlF3Q0lmQXVaMlVwWWNNNzRGbkVKdlRjRVVUU2hibG1NOUt1TjZMOHBCRDlKdFJYU0pOSzhnY1FqS1N6dks2VVVDWXhEbUYzbityNzNNZDlKUnhYbU1kaDBlbUEwUGRMeWcrL1U0SSs4OTEzTjd3YzhWRlJ2S0pHc2hNSWNPdzdQbjA1K0cxVFc3dUhtL0V4SnZYc0pUUXpiTXZqc2twUzhsVlFGa3BsbFNsY0lCeTM5OU5vK3kraWVRMW1oOVFnTzVhUENnM2Zad0twOUJBMGt3b0V4TlBTZmhQOVo5Q0NZMWdoWFUxS2QvOERPWGlGZUs4ay9LTnNaMXBvWEJvSlY3dlBQT1FFODR6VW43d1lxNmZ2MXR1YnMrWHVaOWlzaXk4RUdPMit5aTE4b1puemNNZWtlWXhaTWpqVjNxaXg3Vy8zWUZ1Tlk3RzZKMU9uaVFLV09TVFlpamRrVXJUMEdxaktoN3d1S2xLWmNvRnQrYnYxZDlDdFlPQ29GYk14T21sVnJWVFc4MVc1SE5OOXhwbTFGYUxiamNtTzdyWHZxVUw0MThQNFdhUVpUcUtjWERlQktMZzlxa09XeS9zVklkVThwNE9lbm1qeGI2WXRObWsyRVJaSmZ0SHVYR2g1TmlWY2Q5L0ZsNXI2anVRd3haQzNKcDVtTUdwT20rUjZJbmFCYTFUSlk4ell5OXRPSmR3bERVUDFBQnpTUGFDbFpPVjd4dklTQzR5UHVEeGNPenhkbFBBNkEwOGpkTDZQSnFWN2tyT2pLWTc3R1p5c04zeGdhNld2VGhoVVBKMko0QU5qS2xtTE5aMmNmMHU3OTBoSWNNNEg5MUl2dnhUL2p4VENpZHJ5Q3FZTDZWTmR3T1U0WGpzd3lqYVJUS0N6Z2M5enowcXlpZzBiSEVJV0RTdUFjRUVxVTNSWHhPV0x4UHVXdVBLRUhwR0xxSVd2eVlkMkZ3NEc5czRJMlZqUERQTW9QYmJ3TFJVbzRvVklvODFJeFBKaGFxVFpOTGZBNGpkamRZZkJMdXBkdmt0bmRaVjdGSTA3NzVZSWlLVm1aQ1ltdUFLZ0R5VTRLQmNJZnhFS25raGE1cnA5aGFVb1JlTGNkOHkreGt4d2xlbitsUlFBSnE2RmljcVVZbHd6V2I5TGlkTUJacloxYitUTnpTRXdlcys2STVXSk9JZkEvYU9KMDFxOWIrRXlySTBXK2RXaG8yOGJOQldONmFtQWZQTzJHdHBRZGZoZWZCajFRdzFsemRJNTVNajJSTXV0L1lOV3dCTzYvUUpnTXR6bjQ5YnhyZkZiNzJNVnJ6OW1qT0ROM3FMSk9tWFlhazhpR2VVcW54N3lWNWcyQjJFU2NHYlF2cmxZbjUvZWtxYXU2eFQxRk5od3FEdUZ1T21LckZRbnRCNzBIL3VJNVMvSWtDTU9MczdwTVZjcHhtNmxuMU9DN3N0cUwvbWxlL1pIVGgzZVFMS1c2QzV3WEhBcUtOd2xPdUR6dFhrUFo3cXdPQkxOSzZ4cnRWUkJueUtGaGJCMXRaN3VXZmxDV0xvZUQrcHFDc0FRaGppR0NBbEpoZEhtTFlrc1hpalNRdTdFaWxZcXVWdnYzcE1BUnhwLy9XMDB2bVBFdEgxVmpGcWJKMTNTMWJMOWpZMEc1dnRSdnU5ZEk4VnZGNmJKbW1aTVlUWXJxd0NEdi9rTjF1OEllb3N4bXdBOEpDd0djR3ZYS3plYVZTK2RWVUhrRVI3a2l4RnB4eWgzb1hXUml5aWhCL01SczdtcUc0UEQ5M2Q3QUtBa080Y05udTN1WGFxK28rbVhPYU1kdDkwbTk0T2xQbGtEMXlZMkZTTHMzTzZYRjdlcWhVRkRuOVAxVGdkR29WYjQycExFMjlQWmJJUWVtL3hrekpqYkdYT1BOUi9LdWp4U3hDanVBcVZ3RTFBY2dSbWU3TnE3ZnJqNHhWMklRdXZRNUFxdTRjTUJlcmcrNEplMWlzWXdub1Y1cXIzRnNqSnMzUTl6YjJIZGJremdCSWZTejZxU0UxbFJ1KzF1TXZTUmFOd3p2cUEzaHNjVWc2Q1dacmFLSDFDY2pIeTgybHdsWWsvSE85d09BUkFKalhEeDB2RjEyNEhveGYxb0Fxend0UUYxNnZwMkc0ZnV2YVVNR1JyNTBJT3ppS2xRVkszY0Z0cU1PanJBRUpKN1lMcld5T09ld01NdVhBemhCbk1SYlBLWVltQitZSnE0TEZSWTlaZXFZZkpnNXZGaHA1RG5yR0RZc3NRL0xQWEczeFdzMkxZVVI5T0Q4RWcrWUl4M0YyMXMwRHJ6MGswT2NvelVvSGVnc2VENHJEOURuRHIrTFlrTWFHT1Y0UVR2c05VRTBHRzE4VHB0MXl0bGRxRUhuaXFYMHF5bFV3dWJ2NWxKYnFZVk5oL3htMStIK1c4TUppR0QrU21iUE54dmJEVDdFVkU5UlhKUWExNDQwUjF0b1U2M3RpN1NkaTZEQjhJTHhOaHUxNC9hOGUrMXF3SWhmWk5pcUNmamJHRjRkKy9SMVBmRnNhMzlqM1hleDhNWFNneUVvUHFpV3NjNm5MWTdxdE8xL3E2V01Rb3Q0d2VlWUxkdTNRcjZqTGd4Q1NqZWdPYm81dnhWalZEd2RNMGRiTDRYcHJuSU1WM2hmaHI0cmxKenR0QzI3d2FlWnBhMFdLWUozYXRwcnQ2d2RxbVVhaGtOKzJLUkFOcTJtbjRnSTVIOTY4ZnoyWmw4VXJMVGxxTXZ2WkI3RWFHcERaUU03eGJaOWs0UnAxZXVqcVJBNzJDc2svMlZ1TEdRY3VmQnNzVmlHdWFxSGQ4UlNENVFlUnBGc3RPb0IzdzBkelVtdkxiOVhIZC8raENFa2ZhemtmcG5XKzFwWitGWWNVci9XcEZheHp6aCs4UDJvMkdxZGJub0dPSVRjSExyZHR5UHRMd3M8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_47.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YjQ4NThiZjQtZDRmZS0zZmI2LTkzNjMtOGY3YjgzODQ2OTljIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGI0ODU4YmY0LWQ0ZmUtM2ZiNi05MzYzLThmN2I4Mzg0Njk5YyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+b1pQSGpFN0x0b3JPVDM4M3dkZDhpR1VFYlVVPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5VNWZTVFBRRHFOYXFlOVFXdWI0MXRzSkJYSDNGZzJHZzZoNFVTVjlrQ3VNUWRKZ1o3bk5sWnRmenJXOFRNWjlCSVJrSHlJaTRSUFljVThhREtsUFMwdkJyKzlxWUhlTkpabWxaRDh5MVdQZzFNUU8xZnRzSmtQMEVmZmdwb1RzYmxyRk5Yam1wNXorR3NTMUtVU1hlc3hhTzdveG9FRDluVnFsZ3RhM29kU0NzL2E2aTdmRUdiMW5uTVZ2VTVRWURzUlB6ZnlrQXg2SWtaZHNBSEhNTTlDWUhyVFVXaEtOazVtR29aOURyUWtnVVBNMnJOVTAyRzd0UEZhb0lNeHAyNVlPaGNOS2dNbjRIdEpja1F1bEV1Z1ZZMDZ6WHo3K2lHQ3h0Ykt4SVV6YmpCMllMaTEwVStXSW8weXE1ZUFsRERlVjhXM0ZSUTdHMDVKQ0MwSnFmUFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTU1kelFGWjZ2cUlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd6TURJek1UQXpObG9ZRHpJeE1UY3dPREEyTWpNeE1ETTJXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUs5bzR3djJHMW0vT3dDVll6cXNWTitQTUhia0VTM3JweERSQVBSSTAyNHZEekt4em5YV21oM1gvZjMzT3FtMmpBR3VUNzBSdzM0Qzg3OE9LSWxwY0tmV0d1b3VMWG5lWUd4VzZXWTFJQ2Zpb0V4TGxUK1ZuZ2VRSEZJelIwSzlVN0MzRkh4SmgwWEwyNGIzd3ZBY2UzTGFLRU5sRTJjZDRJNGhmVnFFUHlpVG9ncjkrbWRYSVgxKyt3NkROVVlpYnBiWXBlOFZvMTlGZTMxSGtpSWp1RFVQTFhTSDBoazZwbk02bW1JZE0rQ0JDZzdvUnIvVVlCR3F2SGc1SXRMK0UwMzZlS3dkQ2preGhPRmRkUEV4Nzgvc3NKQittcTRWL0NMUWJWUG5HbmlLWUI0UnFCWmw1NnRwMTJwRWRVVzZWbHpFUEx1Vk1NbFY1bVJMVXV3anRpVUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCeVA1TllZT0lZc1Fra2djTkpYQ1A4b0krdHVLRGZnWmZjcGdxSjRrdXo3ek9FUnBWenRnWWdVS1lvMHBtZWUrV1Q2WDNxM2ZaQ1BUdFFpQXVlbEhPSFRSL3J3bHRqUFQwT3VBejNVNTBkY09GTVh1V2lpL0ZBVWpSdzI2T3RSLzdKNnI5MGc3NVNlTkJCWFRndjZ3UnI4bjQvaUVSUWgwSmtCSmNwd0NEN1pjRGdjUndQWnFwdUJGMzFVMmpvMU5nT2hTU1ZnN1pEZ0ZaRExVZWVHZWtmYkRMZzlURCt4SXQwNmZZdGQ0cGRJcEsycmVCaUtnRTllcGtzalFPN0Z6bUp6QjR5YUFJTHJmZlNzeENXWnJIZ3dBU2FhT2UxRllQM1VnTHpodk9VL0MzMGZlbHR2RzlXV3RQV014Q29wMnEySlIwU1JHK21XaVdhdTh1WGZwbUU8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkdYVGRVbUJOeHIyTzVJdkJUYURQa09NTnczUW9oWmdSZXJkV3JKZG04bzdzRDFaUXV1dGRjS3kzcnBMK1BJb1crTEdLTkZsbC8zdmRXSWJvZUtqTUYxZXJaU0Y3UmRBMnp0Nkx4Rnp6cVNGNXRQZ1BNVjJDNHRoZFNxN2xrVDh3Q1JMQ2NZNUJ5d2Y3TGpQSjdNVXpLOGNhYjlPWWMrZzlDQjdqUjRIT3lMU3NuZkRvU0lyYzhaOHZmNzN2Wk1EQVV1dXp2a1Z3QVVmTlNzb1VDVk03WXNLa1U3WWFVWlhTZmdSYlIxMVpaTWI3SHFBWjdnN3ZJNUxkaEpjeGsrWWQ3Q1A3bE9VRllOb24vTXhKWE1TQW9RRTAzYUpWZkxDNWdlbVRkRERFR0xoa0YrT1VWU0hzdjJoQ0RKRE5aeDlRb25LL2tscmtocjJUYkZ0WEZySWt6QT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPng1dGNvS05uMFhETHlUWkZXb00xQzU0NEZuREN2U3A4RkNHR2d4SjFFVVZ4ZnFDamhoMWNBZlQwblBUOXN3K29PSFR5UjZ0YzNDdjJmaDBiaGFzUUpxbHFhc2l6NDY4QWVycU5ZTFE0YWNiZS90RWRjNkxXQ3JJTk9pT1FTRVU4L253d2pWNG5yTloxQy9OYVJBRG81OHBmWVZJZEJiNk5kNWZLaGt1dUdHSDFsby9IQ09zWmRKNTBic0Rydnh2eVMxQ2RFR09WT2Z2ME8yRUR4MFg1WGtORXB6dmRXSmhiUzF4aHJEODFCRWVjTDRwa0JyRno4RHBaNVVJK2QzUTd2eGhsMFc2cTN0cTJzbE9uaU9GS2ttWjltL2ZMeXJSeVZpRkRzc2JuWk9QckV4NzMwSjBadVhNaFVFQmo4T3hrRlZOaCtvSjZmMXZsUVJCL2hpTUVGY1hqc1dxYmdYditmUGRBZTFzNjVNcm5LZUpDVU5rdk1HU3piQzEwN1FyNjQ5WHpXc25KMHVUTGlTMU9oQnRqdFZKUFV3bWhzYld0QnUzY3NOZE1qTXBUWFovTlk2d25BL3N2cG1kS3ZRYUdZSGJvcnNTNFFzNjllTlphczk2YkthS2ZzdDI4L0R1ejFoeUlnSWZPZlBVUTZKNXk4UzZBaFFhc0lZL2h4M0theWxUYjgvNTA1bkNKcXhUblNleXpzbjlWUjBvdUdIUkhZTGdxUXZDSms2UGl3MFdtWUx4U3EvMGVpZ1g2YkNQaHhrQjRzSmJMWHd0Ykd4NHFHSGVTL2JvWGU4MDJubFI1RUVVNWY2TUZ4S1RGMktjRldMb0RCYzVUaEI4a2dCNGNxejN4dXRMQS9JNjhIbmxWWDBGRWlWZHB1RUJ5K0VyT2ZNV3pvKzJaMHdSc1lWekwzLzNoVDVaOVUrMUZPdnprVHVySmlLeEU2bGNjeEZGdkhaYjZwOUJZb2RWdk9mWHN2cWYzTmNJQ3ZCOTNUcnJOQnZNdmNvS0NwTDlmZERLWk1hV1VSenBvMWwwMjF1cUdVUUN4YmtEeXlTSHp3b2J5bUJHY3AvL25wZG9Bc1YrMHpDdEwxY2xWaTA2WU0xUHZUdDZITVpSL1lYZTVVWnB2aFJrWDlyKzV2SC9PSFRMelBEQk1SUWJ2UlZ0ZFBaUTBRdSt5TzdjaG1IMDhTNzAwZElIRDkwR1ptaE8wamFNb05MeG9OZmtTUTlNMzl2WXpZcm1xV3BsOXdRMjREVm9BZlZwUmdDTUVEYzZ3SFJhcW02SXJQQ0g1OHU5SE9mRDNTYW1QWDQ3RkVkRTBZRE92UDlXKzhiRldpVi9Ic01FSXpFNHZzamxJb056cStOYmtvWnEzMThJa21SUXMyTUxZVWZFbjlPaVByaWFjZHVVNU1FUjNQcHhhSytzN2IvdVFNZGJpTXdPclRzUGR4WUp0emY1REFsT0JFWUxFTkoxVFZuWGxjTXdGQnNpMDRjazhRbmVMYit6MXVwb3JIT2p1bkVFUml2MldUeFNvdmRIQTV3VnlvSzZkRnV6YmtaNnhrdVFwZ0kycnMxRDVyc2pGOTl1OUc4OG0xVnc0bFpmRjB2YzN1S0R2UHZCS1RlTk84Ymh0aDYwQ3cwUWhhNG85RHRncENKaWdGWmhHenBHbW00azRvVjB1a2VQRExlN3pYcEhuV2FUTjdzdnVCM0lzd3VrcnBPVGM3L1JKVnJ4cytRM0R4QjdvY015REJWNEJHYlQxMW5jT1M2UzlXRm53Y1RTK2Ztdmg3M1lnLyt6SFpKSUxQb1BRdEoyUXFYUDFoS2hXaG1nOEw5S29hZ0R4blNlcnlTMGlVM2JTZ2xDVW5uOElZN0F4anZINVE5MzAxNUtCZnVZYTVjT3A5a1AyV2F3LzN6SE1YM2FQcTlWb1dFOW43Mkx6VXFNdWIvZi9YQmhha1Rocm0yenJRSG1LNFUrNnZPcWwwWG1LVm1EN2VRQ0xmZWh3TDVrNjZIaTZGWm92U01zdHR2SUtOMEYrTHU3M25VNS95azdlaWZsek1scTB0WnRBM0xwV0tkSm9HeW8yZzlEZUoxb2c5MVdWaG42NTdTSXFuSXZwODhWNXdUNFNqTmZKaHJPT0hmb0I5VEg3U3RkdjcyZ1BCUXpEazZOQUgvZjFiMjYyVmxucUhnVUxwcWRiUnhCaGUxcDU1c1NHNXJXZFdnYmJyYzRBVzc4RzlST1VwYkVHL0FQNzNRZFlkY1NjSzRQWW9wNWg0YjFtMHdScTEvMzhLSzMwcVFjSHV5YmxZZzJrZ1dFaXdJNHJaWWNPWllHMWhCd2RsT3pUR090QlNuRGVKV3E3eHJudjN1enhUUjhXa0NPVGUyMnRNUENzamI2OTZUNzJaMkFvZ09FSFBNaDNtYVVwWFd1WThVdjRTcWp0amFZb3E0VUZheTJTV0lvdmttd0laZnRUK1ZmelpQdUhKeS9zN29TNFdHa01MUUlXQ3NtcHJnYmFRblJIL2dJMGQyUHp3TE9WNVYyTmNoWlNWY21GMEQvUzh1T05CMjBHQkd5NGFTcXEzQmQ4S2xwYjJ0NHJOS3IwSlgvRmRQd1RBL2JEbittMkdQZy9CT3ArKytjc1VuUGltUnlEU0swYm9pZC81WmVhaC9yRHg4WllxQ0F6bklCa1JSOUdzWjlBNUMzRzdoNGVDOFFkcEZKbWdwTjJ6Mjd3NTN3MzZzVWZCZi94Y3Q2ZCtFMzA4WUxwOGgzbUtrUmdoUU91RnpCMGYzblBJSmVtSEcyYmhUL2FTSXN2elB3Q0N1QlErRkxSMVVIckpzOUkwRndJVFBsWllvekVXbTVDTWtBRkkzZkZweGVhVXpsUFVPSC90NnFBaHNsbTBYRGpWZkk3K2tXN1c3WWN1N2dWSWl3NmZHdlBKMCtvdFcycVdCeUR4SzljelB3cHpqQURDZ3JydndBWndYalQ2eFI0clN0YzNsd1l6bmZJenNmazFIa2NXZ1VpRHo5VUJ0L2VKTysyOFl0WHFySS9zSnJwWmR6TFV0NC85Tm5rZEk4cEFESUhHdE1aV0FTY3V2d1drMlZGVUVXVHdydXIreU9tWFFJVGRnNG1telowTzhFRmVPVFJ5aGg1OHdvM1V1UFZ6Sm5HYmg0WTdlcnBVNW1JVk1pbzdlbGpUMWlXOVo4MkRRU3pUQzI0eXJYODNUajJEUUR4dmR6dzZNK2kzajlZSWFoNXZydG13dXd1d1ZaYkNYQVFjSXFZTWxCZU55RUtHRkxITTAxMDR1d0R2WnhYcEFBNjA2TkpkK0ZtUE52M3Iwd01VZW1URkpoRDcyL1VXZDFER053WXRUdGwxWWw0TXQvMG15bnRkUFRyeU5LZXMrWWJUTGM4c1hiVmVDQ2lHcG5QNHpJRkJnWjhTT25MSjlXMWNuNUF2K1V1RmtOTDJsQWgzT2MvTWliMFh6bzVDaEVveldFTlZrdzBxbUVSY1EzZ2E3TjBKaFdrMVJjM2lhak01TFlYWmxrckMrYk5TTTVFSWt5b1JXaVZkQjNOL2U0SkY2cW9KUjZOU3ZZdmJpM2U2RHp3alVaSzJqMGZ5RTdyTWdwK3dBY1BSYUZncWdjOW8yRUw1QmRoZjR3VzNNajZMcTdTb0x4MnBsK1F2VlNkWXk2RlhRNEN1dEowWEUzdmJNMVhuZ3pUK2s2TU5wUjJ0SDE5djNxa1J2NnBSR3kwb2NZSzlydkF4bmkzVllWZHY5Qlp1NnVKNTJiU1RIRkNkbi94cndoQUZ1SU0vckdTaVY1ZnZLR3hlbk1RVjlKdjFSTVcxL2RuRGk4NEhoOUIvdnVXN2x0bVh0ZUZHblk2RExEUHIxcnhzek03YW9XZGdpeU54ME9MVVA1ZWNWM2VjOGNEcjhvejhJRDlZS0RKVjRTUG91ZmVrNDBSYmhqRHM5ZzlOb3pWaUxLRnZNcE1CYlBObGxsUmswQnBaeTRTTFpZT3gwNUY0UDEwY1FveDNvMVl6MERlTUNJWnlUWndkTlp6dUQwS1dQSlZEM3Y5NmR1TXJ1MVk5WlBRR2pWUU5IUi9mNVFkNmZSdFZBejFmS2haL09IMGJPbkV1SHJaY0JPbHFON2h1K29KTE1NOVNGc3c3eWxLUmt3d1hhbWJKVTJ3NTBxL1FjUWNVcFZEcEN6clJ0MHhmbCsrbDlBbHMwTmxTM2xxMlg1R2J0NW5DNnJXbkJGYkhrMlUrd3JsYlZCTklLdmViQlprVWZGY3RVRE5heFZBZVBtMmxwTTN4S3lISktlWklLcnhnL29sMnpmd3dsdDF5eERJNVRPT2JKM3JTaUY4VnM4WG5hL0hscWVYdVg5clhuMW8rODNXTGJoZmxqMldkNDZBbGVTZUw3VldabVRsY25SdGpSZVIzRmFRWXkyOG1JM05DUXBQUWpicHN6MDlORlEvK3JLVXJnUGUyVHdldkhtdis4c2ovNVBqQ3JRRnQ2dGYyWG1nK2tLZ1NCWUg2dm53c2ZCSE5qNmllNVJ5THIydFNDY3Q2NzlqYVREalBQZkpGL0lJNlRuKzRKbWdOKys0WEN2TzJ2d1VVL2RsMXIrLzlVbDIxNVNaYnhnQjNna3dvc2JNTkFiOGNWQnFxdDhTMENxRkpNV2ZLcFBVNEZheW42akFKeVJLU3VZZUx2VklOMlNkRUZMZjdEVERRd0laQnFaMndBdXN1YkJBUG0vZUpkeTdsWW5Hd3FIT2ZCYU1XSTFuS1o2cVczVzFCeTdNcU1udW5uTWVRaFZYL25ZWUtaUVVEemUybW9Ud1JCdGM0aXZPZmZoWXpjL2ltYk4vZndIekpaeFVGUG5LN0hkMUFNT2ZoVGhaczBQTG1RSXUvQ3BwL0J3QVlmUnp6enoxSStmUWJIVHhNTmx5cVJ6Wm5qRG9JNlFhaXppUCtyeURKSndnM1ZHNEVNYm04YWd0UTI4czMzdUwwTEtxVlRsSjVxTGtHZll4YktoTlIvQi9kQVNXRENsMGp3Q3YyOG5GT24wNjU2Vjcza3hJVmFxUFNnQXBpc0hrOVlzY1htdThOenU1dVRqNTg0UThKQXYrd01KOEZFUFNmNWZZazluOUJOYWFqMFdCME94MXA0QWI1UTJMSHlqRGlRZks1N0hidXZ4bVpMWTRyeVRhQldtd2lmd3RNMmk1S1F6Z3VGaTlKY1MwOXFYcEJUc1hqTkhNK2pUV01kMW9HL2ZnY1NZbWdjZUtRNi9JVUdCVlBJWjVxWkNMRlNYemhHYkhIMXFabytLeVY5djk4WGdidldoRnRqZmlIazg5TFNtemVmOVpLUGxLdFFlNk5EVGJoRWQrSVBqZUhrcmZLR3p5SWN2LzdQc1crRjFnZWRRWWVTYml2ZzAwYXVvQkEyZHRNeW5rUWF3aUw2YlFNT0FJODdiK044c3ZMZkV3VFlmdzJCZlIxcTg2OFdJTis0Y3FmZnRBSkFNNWtvSWlubW9aZGU5RUlCdHFSZm1veGxlVmZEOXpLR3ZWaTVRcG1HeUFSaGpnbEE5OGdHLzM3YTNzVmkyQ0xibWxybEZXNGx1WjBzaGxPZCsrYkR3MFlvZmxYcTVkK3l6WkFDTTM1WStsVEZ5bTdKbWVKbC80M21naUJhcVRSUzZCYVRBdFZ2N2lORHJFeFMwSkVQeVdsQmRwRHZUVXN0NWNkTlBrNzMzOG1Xa3BxVkFiYTFML3I5cjBDNkRoNFdVelZEZFFnRVVWL3JPQ3B5VEhUOXNHVHFqYWY4Z0NTc08renUycXMyWHg0cnZmVDBqUVBtS3NzZ1dEPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_48.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MzNlY2EzNjYtMjQ1MS04YWNiLWRiYjYtYjE1M2NhYTA2ODg5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDMzZWNhMzY2LTI0NTEtOGFjYi1kYmI2LWIxNTNjYWEwNjg4OSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+SG50M0FvVmdaSFdXL3puandGaTB5L3Zab1d3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5sWjlwd2VYZXlDdStvZ1FtOUw5Y05RWS82cllHOWFXQnpSdDNsQklJOUJ6UDZTWS8xdEhwRi9wM0xNUWV2WVZpektFSkNTQ0ltRkVJajN6dTlscGVCck4zcGZ4T3pBV04yWjRwVHJVRHZ5MzJyeWZpYkhwN1lsWFRZUkJqeDlsQjU5NXNRdEVnNDRyZnRkbDY5ZUM0eUZNenNnZ3Vrc1VmbWJJQ01TbXpIVjcvZ3dheTVBZVVDL0dhM1NrQS9TNmFXYVBzREsvaFdoUEtZV3BITGk5LzF1QTQwaTgwd21NTFZYeURGcU5JbllLNEw1MjdsYU5yNVNFbEhzVkdZeUkwdWtvK3pJbm5pcGdhM295VCtJdmplREFRTFIxR1RFazAwc3hEemZINGllNk00RXpZU2twV3V6dmdvc2s1NlFTeXJtM3Bscy8rMHo1YXdhTi9pY0xCZ3c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTU1kelFGWjZ2cUlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd6TURJek1UQXpObG9ZRHpJeE1UY3dPREEyTWpNeE1ETTJXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUs5bzR3djJHMW0vT3dDVll6cXNWTitQTUhia0VTM3JweERSQVBSSTAyNHZEekt4em5YV21oM1gvZjMzT3FtMmpBR3VUNzBSdzM0Qzg3OE9LSWxwY0tmV0d1b3VMWG5lWUd4VzZXWTFJQ2Zpb0V4TGxUK1ZuZ2VRSEZJelIwSzlVN0MzRkh4SmgwWEwyNGIzd3ZBY2UzTGFLRU5sRTJjZDRJNGhmVnFFUHlpVG9ncjkrbWRYSVgxKyt3NkROVVlpYnBiWXBlOFZvMTlGZTMxSGtpSWp1RFVQTFhTSDBoazZwbk02bW1JZE0rQ0JDZzdvUnIvVVlCR3F2SGc1SXRMK0UwMzZlS3dkQ2preGhPRmRkUEV4Nzgvc3NKQittcTRWL0NMUWJWUG5HbmlLWUI0UnFCWmw1NnRwMTJwRWRVVzZWbHpFUEx1Vk1NbFY1bVJMVXV3anRpVUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCeVA1TllZT0lZc1Fra2djTkpYQ1A4b0krdHVLRGZnWmZjcGdxSjRrdXo3ek9FUnBWenRnWWdVS1lvMHBtZWUrV1Q2WDNxM2ZaQ1BUdFFpQXVlbEhPSFRSL3J3bHRqUFQwT3VBejNVNTBkY09GTVh1V2lpL0ZBVWpSdzI2T3RSLzdKNnI5MGc3NVNlTkJCWFRndjZ3UnI4bjQvaUVSUWgwSmtCSmNwd0NEN1pjRGdjUndQWnFwdUJGMzFVMmpvMU5nT2hTU1ZnN1pEZ0ZaRExVZWVHZWtmYkRMZzlURCt4SXQwNmZZdGQ0cGRJcEsycmVCaUtnRTllcGtzalFPN0Z6bUp6QjR5YUFJTHJmZlNzeENXWnJIZ3dBU2FhT2UxRllQM1VnTHpodk9VL0MzMGZlbHR2RzlXV3RQV014Q29wMnEySlIwU1JHK21XaVdhdTh1WGZwbUU8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPm9INWcvenVxS2pVL1hZQ3lsOTliL2t5VHpQOG82cmhFVGFhWFNYWEdXVGNqK0JqK3RvVFZHdFlzb0RINEdnZDhVeVRvcmVNZGViZ2ozeUQrM2ZJTGtEMjZtQzNCdTJZYlVWY1NOSi84Zm4zT2JrbWtna1kydzl0bTZmbS9jUU52WHNHZW1veXRVajNZN244OHhGZHZIUGJCaEJhUER3MHJwOUc5YXNTcWgwVlpDbjNZN2N0dWV2WittQ3hDTWN2bVRGWGZRZjlqRG1Ra3YyeU55dmxvbnljSWVRVCs3TDdvV1laRHN3Smt2QkNtLzErY3FrVlpMeXpRVWtTWUNJbXlQZHVhZ0p5ZUE0dmNMYjREZFZVVXFRa1R2L295Slpkclk3ejFUMlNpazUrblVxa01pdU5Ua21KekJNZkwwUEE5MkJ1elI3UWhsQVhLa1RDaWN2Y0xDUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPk4rbGp2a2xURkhCdDNEOFJJYTJ2OW1iQkRMNDREcnhFVlFlWkxzcGpTYUY5bkVvdGh3Nm16SldnVG8wYklsdEh0bXlXR1d5VFA5aDAvaU9hcTJUaG02M0Z0Q05mcTJWRFlXQlVGZFpnb3dzNEVJejFnVitwejFNTkRFZmRMRWptNVlwMy9rcVI2U1A1cjlySjFvWGlnazJidW9oK3MvcDgxQk1WRHNCSWVpS1NWVGpGZm4wMi8vL3hJNG5TU2ltOFJySm5HbzU4YXM5bnhmYW5Wd04rQ0loK1ZxcUZRWWxYSlA4VmJmRDJOMEFPNmx3cXJkcHBVMUxCWHVHTFFWc25pNzRYTEljZkhzd21hYmZOVzRndm1OR0hWN2krSE1lb0ZWcmsraDhWU2FOVExhNFR3ZnZ5R0FIMmVETDdHMTZsRnpIVjdZbVJlZmUyTkdiZVM2MzkyUjRhdHhLelc1cExBQzBLc2JHMU0zdTJwa0UrQW5QSVZUWVl4eTVXci9yUi82allzV3d5OXIzVklvMW5YRk9pYVVWbjRYS1lIa0oyZUtSWHFpT3NNUXJvQTJOMEdVSXJFQzNWL2tDZmM3MUl4Z3dDWjRiYmlvNms5bHN3ZWkrT2xuU01EcmRaSDFwTzJPQ3ZBWklmTDFJWVFwdWlQQlBENm5vUkFnL2xsbkpDUkFqck1FVm16blJPQm81MXZUVGZkYS9rTnZTeEVJVmY1Tm1MZE5mNHJLNjcvMlhFOHJkR1p5U2tDdGZYUi9KVnZ2dkhtczlUcHJaZGpPRmxGakkvOVdSaW1mTUowZk9DL01YNkJrbDJMYUkwQTh4UDNsK2gwM3BmYTBJamRZRDVuTm1JeHFkeWFZVjRacjF2RGh1ZWliLytJeS8zNkhMY091aHE5OVc5R2wxeUpueVF1Q0JUMDQxZmNsaVNkVk04NFU5L0k2cmwzNVFQU0NFbFZlOVpONGNaaWVWQ2VCRkdTUG1GM0JIc2hadmI4ZzNtWWljRDhRT2RwNTk5RE90R0d4UzVTd3BsWmN1VEcyM2VkSU1uVTBua1VySkx4ejBoeTFPb0ZRK3NCb0lySkR1RVlkZUJlYkVnTXAyQzNLM0tFd2VNS0x0K21KcGxjd2tJVlQ2czdPMk94WklndUxYeGxOTnNQK1J4eTJ6eXV3R2loMi9CbFIrTEtXRFN5dk5KR3d1WUtlOTY5UnNsQjZFTEZsY3c5MDRWRjVRQkh2ODErckh2NExVdXVnM293SVpRbkdKNFpBSWxmQ3RwbkJsVy9ZRkdrSGtIOHlPQ3hEUmE5UDNSS0NDdElEQWtTSzV1Unc0VXdRY25KU3ZvZVp2bmJqUzhBdzFPOS84RzlnaWZ3QlJNSE04b2IzSUY4aDg2YXRTd2M0YWZEWVlJRlZUOGIwT20xZDhrWEhyby9aZitkemF3bnhxYTJsM3dMV3NibTExZjloMEd0NmRsU0VhRU9iOUFVNkJDSTVjd1NsS1VPdDRXdDBGWjNhdU14ZU81ZjVXQUxXVjA3NW9BVEkzYnNndkk0Ym1DKzFIZXdqUzlPWkI2R1hEcEJGcjZzNmhhbDlsVkZlYVl5b2FQRVVDaHNLRWhoaUc3QzhTcE5TTWQzbDlXY2RML1l0L2QwVzNlQ0RmWnJxM095Lyt4TVFTQ0h0L2t1VDBBWnZiUmFVbW1TeDhEUVVpWDd6M2dFWkxuMng0VGNlUmU1TFQvWDlHcDA1djh0L05kVXViVVQ3VDJHY09JU2V0V29tRUVRMzA2cTM3ODhxVkhidWdZcWxVVWpJUERRSHI4Vy9oMGo2dzl4V2xyTTc1RDVSelh6Y2l3cHVlQjk1ZDJ4MWRWN0ZoU0NOVnBLeDBCazI3NjBPS3ZrVWx2WHhqUmpmZFgvVzh4dUtqamc1SnBTakQyRTJCTkxCd1orLzM3RWNmQ01KbmpuWWpweFZwUXlKZ3YxNEV6czd3SHc2STBwd0N1YWVwZXhhZTE3UENjaEVXb3FXeDZ4TlBYdnVMcGZaRGdONmRGNi9ieVBzRWJoOWtYY3NubjlybkxDUS9EcWRUazhaT2tkVEYzRUNqSEF6ZitTRFo1ZjlIOUpPU08ybmc3cmdTQlZGUzBkZmJQdUNkVmpaUjNWSkpZS3pTSUMxSVRZd08xekJLWW51SHhROWJrRU1FY0toQ0YvRm1IWFZwS3kyckRVUHVCV3MxVTVoRkFpWEp2dFgrK1RZU1poWGNKWEtuY1JpOXdDYUFUc0draER3RzlxUmV3VWtWY3lZM2V5UTQ3YjFaaHZhUmNKMEkyVlVONkRoVmZ5dENqaHQ4ZUVtcHMzNUk3T1NheXF0alB6Y0NzT0J3NGlIdEcxblk0MC91aS9mbGordzdyVHBxR2p0WG5wdDhqVXU5eDZwclp0ZmhPbEprR0N5SS9WM3g3UFNyM3NIYldVcFZzMWhSTyttNmRKTHhsZ0FDMnJuRW1meWZsZWl0ZEI1N1l6SFMveGxCc1VRV2lJK1U2VzVWblg3TjByeVk2VHNpaDZCRDM4dUZtTUNINUlIcWdPOXl5VjJrNUcrbXBvekIyNHU5cFR3YzBuNXJuc1J4R01VWUlUNFI3amhjMDMvSm14dTJOT0VHZ1BmejZNRzZLa3kxeEhCTStLTExWTUtaTlpQMEQySXFsZkFSVUN1WFEzWXJJcXdZNTRGMjlzL3RneDJkU3cvYjh5QncySXBVN2tJNHd5VWxKbm1pcjRvaVc2R0gzWEVQRlpZMW9XamIraC9QRTlWNlExUGF0bjJxVlZVYjlzeFlpM3labENnZG5uL3RXVTk4SFdZUzFSVENRR3dKTUhvc0FWU2Fra0hkUDFrZU02aUZqWmROb3Y4aUV0V3o1cmFveFY2UEdMZzVMVGVTeWNVNjFOUFV5YlVGTGNBcDZJOWN2aFZhWHVvOWZGZHEyZXR2LzJQUFNYQjFsQzZHM3JTYlZ0OVpGUmo4VVc3b0RIMFppcThPNktGS29pQm9YZENoVFlBTHRHTU41SjV3bDBaUE1MZDREcXpYMFp6N1FUT2ZmQU84ZG1ZRTJvNEgwWGcwNkNvVW1FZExjZVpta3lQbkRENTk0R0s4ckNQTEVDbC91VjlObnU1UHZ2YzY1cUZOcUFucGlkRnNPWkt2a0tnbDRNV2dTZG5meTA5ZGpUK0ZZb0ExUXh4TGduUlRrYmNHcHBqUEp5MVQrM2hacDVuTzFweU5YU002ZVRwLzBERFBrb3pZZm0wczlVM0Rwa291ZVRaKy9LOEdSM1BmcDJxV0JHUmtxRnMyWW50dkg2bXZCNnZOTTBxT3hLNUhZQktuTENYb3JqZFhNZTlGWWc5ZkRUejhWbEdGUEpEcGxhTUp1ZFl6TVQyYTNmNk8zdWZzZ3R5MERYSU9aN25YYjIvK1dSZk1PT3J2d3RCampiY05kdHNocDZ4N0hRVlhPZmlIekhQWHhOWHpGNUYyNjJFRnh6VUhLcDlZZWlRYUZCV2FUelJPRHNsYjAzekFQanlUOWRDTTE4UnUydlE4R3BKWWJZRStsZ0x0N0pseklWV0QrS0p1NXFHMzRlMXFuQ1Y3UitxS2F0dE9vRlE1MWoyYkhlVEJMUDlnZGFmd3FKK2N0TE1CelhrUUpZcG9XcmFhZVlCUVVLT1RZUC9ZWGQzYzNEOEJMcmE4WEJqYTE3aTg3d0QwNTRzcXoweGZpOC92ODhTb1RWalV6TDFLcGtycGRpeDFLRGxPMzVzK2ltd2JrWFFseFhydDE1ZFN6MDVkUUNHbU1JSXhNbkt5Rlg3dzBScnJoSFlCaWhJU1Y5Z1VtVWM4TUtqSDJ3elV1Mm5aUGNJZ1ZDbFl2cEtLVE56VmwwZEZEUjQwRm1HWXp4aEFyUlc5M1hGaDZUZ1pYT3BubStUbXd2d1Jpd1hwTWxZbmVHaGVJc3o1MnlqZUtVOFRKV3JPck5uTE1JZzVKenBBaGhzWEF3TTM5M1ovV1NGc2t2bm5hRUxvbTdIUWdnTUxlQ3lHMGZYNjBCbHp0ZXZuR1l4TXJ4dDhKcHZnSFg1cTMwZkhLa2pmd1VYTXlyMHBtTmx2aUdjalF0RTE0OG93N1ZWWllpTDF3WGRuQjFzT3N2akl1eDF2NEhtYnBOcnBabmlOdTlnZnRxYndLWnFtM2loWlRYYThEb2c5Q0hFcjJXd1oyc1EySU1CVjFMZXJSUmgxSzFkQ2RyYkNzdmZMYWcvOC9VK1NZM0hWMmxCcDAyaTFOQkRpZDltakl6d01kbG9xV1JMU3dCWVZlcmxodmdNSTZjaldvRXlINHhuYmQxajR6czJFVExlUnFrbUwzQ3phM096a0JjVWtMMUViOThiY1FBV3NveEpXdVdKK0RQaEtrTW5pdHBZNXhLdEh4bzFFV05vZEVkeXNRMG1EbXJqRURsQmI5dTUwWUoxSzRPUzM1ZXBBM0h4ZlFmTTBOc0t5SGJON1lIYmlIVXA5dWxqTVcxSTRwYkQ1VlljT2FDUDh2Wm94ZWZmZUJjTkpnUWlrelMwNHY5UERTR08rNzVvdmd5VXlJbnY0SnB0Wnl1N0lLYUtMSGJNSGt2VVBXWTlSUUJYem1ZZzdlazhmWmtlZDVZOFVxVm9sS1BzU05SMERTRGVhcUZtM2JlSmdDMmlQWTV5MFAvYXk0NDUxVnlXU3Q1WUtMVDVqZTBKeCtQMm1TVVFFRWpkaVRQNHRvVHp4bm5hVGRQZTRRNXNaeWpvYTRxRndsbWZmZE8zZWppOUVkNkw3WERPSkpscU4vWDluaHNBTElpWmh5NUYrOE8yVUU3RWdNUWt1ZXRTNU80UHhPTndXS0FIWTI3T3VHMGJyRFFEM21ZZ051eXNlTE5sODRETDBhcjNheFM5ejZuUGI0K205eXNRZE13VHhWeEhtS2RJaG8rTEJHR0ltbDlNeGtnTUd3cjBxRmNOK2tNVks0L3RNNTZadWI1cFpwRVdJUlpobEpxcmZZV29lTjVIVnI0TmJyd2RndnFEN3pSUllxaVVRcVBESVhzSnlRYWFLNHZmS1lsTUNxZVlXUTV4WVNyeGU4dFFXbUwwSUh5T2pVY256TksvK2lINmJtWjJVSlVHKzcwbW1KWWpBM2VpMUw4U1p6bGFHUkxTeVFJbXQ4VlNYVndCZnAvZ281c2U3T1ZWSi92TWJtSFN6ODJOSTIxTlFqUVk3QVp1NmlpUEpKZmVOYk1jQ1l4alBLaW9vZHEwTEM4K3FDOERDSzVCKzlQMmFKWXV5eWNlMFFYamVTaVVKV3prbVZjWnUramQ0L1M1T2FVQ2JNTWw3a2ZWanhGNmRVVUpYbS9aV0w1bmpSOFRHRCtaSlp0cDhPZnNzd0lNNVdrQWZBajFNb2R2V3I4WFM5ZnNCSWNiYWc0d2JrMGc5UVYvQ2YybmE5eEZ3cG96RGF4OFlRb1Ztbld6emlLZUpWYk5FK2MyRWp5UVcrWXhsaUxIdmFIandHUkdyYkZCMU4raEFxeVFSK3lsdU1FYkR3V1FlL0ZaeVUzRkF2WldBMVZvRVAxTUZsSEVOakttMldQdXFaWEVTb25USldSbzlkNFBGTUs3ZGN1ODIxSlA4OW5YOXE2c2hWNUpPZ0hDUzNjTnM0dWdBWXJaaU5yTEEvT2p2Y1Z2eW5YY2k5MDNqZVUzUEFCejJHa2RuMmx3RFNCKy9pU1Fmc1RKbUZKb3loTGxpYmtPTG5FRjA1OVA1SFdrYWNYOTNtWUZsdEs4NjJoVi90NXBQNXA3S2ZJYWkzVms5QzhLNjFvWG9zRnZqWVJJSi90eWtiZU1TU0tNcUF5Wm1paEhuME9QY05aWjF5MGlnRmRwdXdYL2dpTk9xWEViYWJmaGFkRVpqdjZVQVJaOXI1N3hFNUx4V0dWTzMxMEV0VnAzTU9LOFo5K3JKNm43MnlRQW1ValdlSS83ZDZycy9RK2xIT0hTZHc2TFdaM2twbzR3bkt5cTA2Y0ptalJoV0dyb1JjMWo0VDREaUlRTUE2NnA0OWtKbGRjYlM4T3U0cktvb1BMakVXYWZhOCtpK3dqRkFKTFNTdDJJUTlCLytDdVV0Z00wNVNEMk80V2tTaVBoZDZJeVVCN1pmTmMwWU1vbkZOSGlUNkRBN3dkMmc1bkZXVHB2R2pCNXZLZjlsbTduczNhSUFWcXpubUZzSHl2R3huT3BLQW9waDI5OXNEYVZobkNFenRUMDNuSTB6Y3RKT0FCZDJ1RDd5SmUyRGRNUk1YSUpjeHl1dnV1dlhHaG1CZ0JUNklEUzdHS1FoNVIwUGovb04zRU1wWnZZR3Ywc2s4bnlscVJNZjVUYlV1VEVRY2ZaSmdkTjdWMlJiZmxZZVgzbDNWRWl0VWhnMGlCUWpnY3RNdjFKQWhrNDR3cy9QK0lLaWgwZ3VjVkpHZ2M1ZWkyQktSSWlaRGxKUllOQWNnUjVkTkQ5dFM5aFh1Y3ovckpRU0ZWYWxEd0JaMHMvTkJiWnZoVzl6emJhV1JNMEgyZmJucEVzeHNoUlA1MVpBc2tmLzhNdzRYVTEyRkV5eVZuaCtENjB0eWp1QWhuZGdJNkd1NUJldDVRNHVHbjhNVGJQczNzcmJrWmw0NFppdjNoNzUrRHhvMjVyZlZoSlJySThJK0puUEYrcTJnNUF5Vjd4eWY0RFpoc1YreWx1SVBNVjA0QUFTNTRhVUVVWFhERU8vYnpERVFPMWJJWERlSlQyYkIvNExsWVhySWdpdWl0MUxQMTRSVDUraHpxVTZsOVN3MGFYUjVDbWxFdTJNbWx3RitxYmdUMmllaW9NbDZoT0lzaGFGVVpPcWp1Y0JDUHNMSDBubXBiT3BxZVdqcUYrMHREOUd6NlF3Q0lmQXVaMlVwWWNNNzRGbkVKdlRjRVVUU2hibG1NOUt1TjZMOHBCRDlKdFJYU0pOSzhnY1FqS1N6dks2VVVDWXhEbUYzbityNzNNZDlKUnhYbU1kaDBlbUEwUGRMeWcrL1U0SSs4OTEzTjd3YzhWRlJ2S0pHc2hNSWNPdzdQbjA1K0cxVFc3dUhtL0V4SnZYc0pUUXpiTXZqc2twUzhsVlFGa3BsbFNsY0lCeTM5OU5vK3kraWVRMW1oOVFnTzVhUENnM2Zad0twOUJBMGt3b0V4TlBTZmhQOVo5Q0NZMWdoWFUxS2QvOERPWGlGZUs4ay9LTnNaMXBvWEJvSlY3dlBQT1FFODR6VW43d1lxNmZ2MXR1YnMrWHVaOWlzaXk4RUdPMit5aTE4b1puemNNZWtlWXhaTWpqVjNxaXg3Vy8zWUZ1Tlk3RzZKMU9uaVFLV09TVFlpamRrVXJUMEdxaktoN3d1S2xLWmNvRnQrYnYxZDlDdFlPQ29GYk14T21sVnJWVFc4MVc1SE5OOXhwbTFGYUxiamNtTzdyWHZxVUw0MThQNFdhUVpUcUtjWERlQktMZzlxa09XeS9zVklkVThwNE9lbm1qeGI2WXRObWsyRVJaSmZ0SHVYR2g1TmlWY2Q5L0ZsNXI2anVRd3haQzNKcDVtTUdwT20rUjZJbmFCYTFUSlk4ell5OXRPSmR3bERVUDFBQnpTUGFDbFpPVjd4dklTQzR5UHVEeGNPenhkbFBBNkEwOGpkTDZQSnFWN2tyT2pLWTc3R1p5c04zeGdhNld2VGhoVVBKMko0QU5qS2xtTE5aMmNmMHU3OTBoSWNNNEg5MUl2dnhUL2p4VENpZHJ5Q3FZTDZWTmR3T1U0WGpzd3lqYVJUS0N6Z2M5enowcXlpZzBiSEVJV0RTdUFjRUVxVTNSWHhPV0x4UHVXdVBLRUhwR0xxSVd2eVlkMkZ3NEc5czRJMlZqUERQTW9QYmJ3TFJVbzRvVklvODFJeFBKaGFxVFpOTGZBNGpkamRZZkJMdXBkdmt0bmRaVjdGSTA3NzVZSWlLVm1aQ1ltdUFLZ0R5VTRLQmNJZnhFS25raGE1cnA5aGFVb1JlTGNkOHkreGt4d2xlbitsUlFBSnE2RmljcVVZbHd6V2I5TGlkTUJacloxYitUTnpTRXdlcys2STVXSk9JZkEvYU9KMDFxOWIrRXlySTBXK2RXaG8yOGJOQldONmFtQWZQTzJHdHBRZGZoZWZCajFRdzFsemRJNTVNajJSTXV0L1lOV3dCTzYvUUpnTXR6bjQ5YnhyZkZiNzJNVnJ6OW1qT0ROM3FMSk9tWFlhazhpR2VVcW54N3lWNWcyQjJFU2NHYlF2cmxZbjUvZWtxYXU2eFQxRk5od3FEdUZ1T21LckZRbnRCNzBIL3VJNVMvSWtDTU9MczdwTVZjcHhtNmxuMU9DN3N0cUwvbWxlL1pIVGgzZVFMS1c2QzV3WEhBcUtOd2xPdUR6dFhrUFo3cXdPQkxOSzZ4cnRWUkJueUtGaGJCMXRaN3VXZmxDV0xvZUQrcHFDc0FRaGppR0NBbEpoZEhtTFlrc1hpalNRdTdFaWxZcXVWdnYzcE1BUnhwLy9XMDB2bVBFdEgxVmpGcWJKMTNTMWJMOWpZMEc1dnRSdnU5ZEk4VnZGNmJKbW1aTVlUWXJxd0NEdi9rTjF1OEllb3N4bXdBOEpDd0djR3ZYS3plYVZTK2RWVUhrRVI3a2l4RnB4eWgzb1hXUml5aWhCL01SczdtcUc0UEQ5M2Q3QUtBa080Y05udTN1WGFxK28rbVhPYU1kdDkwbTk0T2xQbGtEMXlZMkZTTHMzTzZYRjdlcWhVRkRuOVAxVGdkR29WYjQycExFMjlQWmJJUWVtL3hrekpqYkdYT1BOUi9LdWp4U3hDanVBcVZ3RTFBY2dSbWU3TnE3ZnJqNHhWMklRdXZRNUFxdTRjTUJlcmcrNEplMWlzWXdub1Y1cXIzRnNqSnMzUTl6YjJIZGJremdCSWZTejZxU0UxbFJ1KzF1TXZTUmFOd3p2cUEzaHNjVWc2Q1dacmFLSDFDY2pIeTgybHdsWWsvSE85d09BUkFKalhEeDB2RjEyNEhveGYxb0Fxend0UUYxNnZwMkc0ZnV2YVVNR1JyNTBJT3ppS2xRVkszY0Z0cU1PanJBRUpKN1lMcld5T09ld01NdVhBemhCbk1SYlBLWVltQitZSnE0TEZSWTlaZXFZZkpnNXZGaHA1RG5yR0RZc3NRL0xQWEczeFdzMkxZVVI5T0Q4RWcrWUl4M0YyMXMwRHJ6MGswT2NvelVvSGVnc2VENHJEOURuRHIrTFlrTWFHT1Y0UVR2c05VRTBHRzE4VHB0MXl0bGRxRUhuaXFYMHF5bFV3dWJ2NWxKYnFZVk5oL3htMStIK1c4TUppR0QrU21iUE54dmJEVDdFVkU5UlhKUWExNDQwUjF0b1U2M3RpN1NkaTZEQjhJTHhOaHUxNC9hOGUrMXF3SWhmWk5pcUNmamJHRjRkKy9SMVBmRnNhMzlqM1hleDhNWFNneUVvUHFpV3NjNm5MWTdxdE8xL3E2V01Rb3Q0d2VlWUxkdTNRcjZqTGd4Q1NqZWdPYm81dnhWalZEd2RNMGRiTDRYcHJuSU1WM2hmaHI0cmxKenR0QzI3d2FlWnBhMFdLWUozYXRwcnQ2d2RxbVVhaGtOKzJLUkFOcTJtbjRnSTVIOTY4ZnoyWmw4VXJMVGxxTXZ2WkI3RWFHcERaUU03eGJaOWs0UnAxZXVqcVJBNzJDc2svMlZ1TEdRY3VmQnNzVmlHdWFxSGQ4UlNENVFlUnBGc3RPb0IzdzBkelVtdkxiOVhIZC8raENFa2ZhemtmcG5XKzFwWitGWWNVci9XcEZheHp6aCs4UDJvMkdxZGJub0dPSVRjSExyZHR5UHRMd3M8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_50.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJwZng0NDAwYjhjYi1kYjIyLWJlZWEtMTc4Ny05Y2ZlNWQ3MjBlNGUiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NDQwMGI4Y2ItZGIyMi1iZWVhLTE3ODctOWNmZTVkNzIwZTRlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5EeEFua09vWVBWcnppd1Q5UlA1TDFDTnkvR1U9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnFad3laZ1hXSnQvMENyR0ZGTEwwZ2I3K3Q0and2cFNzcnhKbWcwSUEwRHk2YTRDZ2RUeFRrOXNYY3ZNSklZeFBtQjhCYklReWF6anR2NktyWG1lWWpURE5Na1kvM3p3WXgvQkk4T2tjNFdiSFVBSThwUDBtUEkwd0djZG1iQ2lnOVVVcmhaNzZESzBqcTl4Z3NFZzlqNTJzNVArT1VIVmVFRWJPK1V1Nk9pRzFhOUFHYlp1cDc5WGoxc3ozTW11c0lJUVJtV0U1NXcxTXZHUW80YUZpcXhMRHd6UDJ3K1gxa3pUQ09aVk1yNW9lNkFneXhzV3NFbEEvZHN0L0c3QVd3VmZQU0JJRTRxYmtzMEs2VE1WTE9NeVRsQTVTdmxBSUVkZnNrWTg0OEpkUTEwemc5NlVBZEFYQU5xWE0yTjg1MEZlbVp6Yzh4TUZOLzE5TnRuTm1JUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_51.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9pbmNvcnJlY3QiIElEPSJwZnhjZjk4YWIzMC03YTNlLWZkZjQtODE4ZS1jOGE4ODk0ZTBiYzMiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4Y2Y5OGFiMzAtN2EzZS1mZGY0LTgxOGUtYzhhODg5NGUwYmMzIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5uUmlYLzdWREJzNkp1VXhidWc3OXpyeWo1YlU9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkNKd0JwenU0N0Y2T1pyVUsvRzY4R29FYzZoSXp4M2hXTm5NaWJ5N3VQY3RGNTY1WlhHZldNVW11L0hJUUVhRGtaMmRHRnAySGJ4TVVHRm03bFQ0azFFVTdNR0RNbmFUUmEybWwySi9RV1JmeG5iWkpYYytreWxRQ2prZGtKaVZZS0tGYU42RUREanIzeEpEaHQyWlB0Sk5Jb1QyMVNKS29jZ1B3TG5pbGcwaEozQUZoTmZkQ2t4UUxQL1p6NExIRk9VcE5zVk5PU0pDOXliVU1ZNFREWDd6WlVVRGxqRGN2MnU1M09SRVFlTkxlSzI5bzQvbzkrdHgrOW5hQlA5TGpvdlROZUhVRk1NbG5vMkkrVXR3Sytnb3RHdGNDN3NFaXRjZWJZV0VDMmdycHluKzhrV2pDeVJOUGFhZTdya3VaZTdhd2ZuVTIrMGNUSDVUR2ZsbDFxUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_52.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4N2RkYTYwMzMtNzkzMy00YjNkLTg2ZmMtOTllZDA1ZWVlNDNhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4N2RkYTYwMzMtNzkzMy00YjNkLTg2ZmMtOTllZDA1ZWVlNDNhIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5vYXFObnRkUnBHTGJTY1ZycXNQZG82T3EwUVk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlJyOWRWcldnVnJTQ05GaXJrTmZ6czQ1a3dWQUF4bVJRVmZGN2lCQ3N5d2JKTFVwUVl4Y3Z5cmYwUU41RDdVYVhpVC9jMVYxZmp2citrb2tjWVhjaWJZZlhhMmxPVHc0YjZMT2VHMUUraUNKSzZjaHpKYWY0M3VVcG1PVzlyZ3d1VzlKdGQvZnNzZ2lQdFIyWU1ZeUgxdmpoQ0dyRXF6Rm9iRGhENlIzVzBhbnR4WVZCci9VZzJUWmRPMkRwQTZVOWp4clg3ZHlnR3FmSXpUOTU3aWk4cCtuRWVtYnNnc25rUzE3UFIyS3hwdzRtQ3Y2UFNacUNHTE5uSmZRdW5oL1RWN1lhb1FtRGM0emtVbHhDa0xYb2lmamsrTzljNEZwSDFwbkdMTFFSNW8xUWdMYXpUM2k2S3Axbi9UdDZLV1VOSVRQWmZOVFBBeEhrZWZRSnFUOFRTUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_53.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDZhOThkOWEtM2IxMy01ZDI1LTViZTEtNmZmNTBmOWNjNjMwIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA2YTk4ZDlhLTNiMTMtNWQyNS01YmUxLTZmZjUwZjljYzYzMCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+RHJ5ekVxRVJ1SEFxYjBqT3BDTUlEOVJNTitrPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT53OG02MFcwd1F0c3dyblFOSnJqbzBlUjc2V3lWVzQ3MER6alVSTGNLRHNzOFlKdkRlblNRd0JyZHVtbXRyNHlWclFDNkJLNzl1ZytXT3hINFFjZ3ZVWlNFMytWalMyMWkzOEU1SkhINllYM2JBVWZ3SmhhVy93SS9QRFJTZmxxY2pWeERWVk15bzBnVDJqUXRIY3FaVWF1WTY0b04rSHR1RGxVTDdha29lNmNjcGZQamJqWlBQQmh6dzVlNUpMa0hlMVo0ZEhsSFpwTG9lOHpkdnRQeGhCc1NkRWJVRys1UmcvV3NHaTZDbWIwQ0wwZGI4SkhLcWxxL3FxV3hwS2tWNUpnTCtvc2M4ay9kZHlsRVp2YWk4eXF2bFdNcjVlVmxaYTlrQkY4MjZDdmlnYkxYcUVrTDBGN24zeWpNNVdrSFFTaWxNZjc2Q0poZjZIR1RrclRkdVE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL2luY29ycmVjdDwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_54.b64 ================================================ PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4NGIyMjI4MzYtYjIwMS1lYzQ2LTUxMDYtZGEwZmY1OTc3MmY2IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDRiMjIyODM2LWIyMDEtZWM0Ni01MTA2LWRhMGZmNTk3NzJmNiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+ZXFVb0N2bnhJbzk3Yml1WFdEQXZNampRSDVNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5rVHdqRUkzcGUvdDRLYjUzKzNNWG9La0pNNm96U2t2RGR0MExvSWQxR2p1ZzdQOThnd1ZTZmRxVTZOMlJMaFBndHRqRmtIUS9kQkw0ZWg4bXFXUU9vVGsxTXFRdEdMV05RR09URDVOQ2xMV2RDeVFOdXA3N1Q2aGg1YVltSVQ5S3dMNlhCVDNKS3ZoVVk1WWhzeDdRYWNsTWxRdEtKRmlTNnFQdGI4UUxNcjZ5SlpIaldPUEN1TE12V0Qvd2cya1VzTnptc2tNOUZSR1hPSERzNHNxeURuQXQwWHpyUHVDOVRpYjJOZUY0WWdJTVhuTUd5SXdXNmZzcEQweWdKZzlWMEIyNG4xNmpobml6bWdHK25pS2hadnRRSHp0UkdTZTBFNU1IWlBoc0ZPeVN4eWpzNUFOSDJIZ2lrclJiSS93Zzlab1pxd0MzOXBXNXR4cjdGN0wvUkE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaW5jb3JyZWN0PC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_55.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgSUQ9ImlkNzA5MzgyOTUzNzUwMjI1NzIxNDI4NzU0NjkiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5FcEZMNm4rWTVPRmZudzNjQUZ2d01ZQzNWR1U9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkVSYm9WRERKSEc3QVdJVHZka2ZWYlF1UmVzYkt3UmZPWGZ3OHZnMVlsd2FnejNLNkJXQUNQV2JJUkgzYVp0L0FaNVVEZ2dHMHpzS0Zrd2FaREpaZTRGQm14d3dRSVk2TEU0Z3ZRYlBiTS9VTWViL0p4ak52Z2gxcHEvdkxQTk5YT21QVW5McC9aT3YvV0dKNjl2WWs2YmR4MFZ0UVRCV21sd2lBNkltSFFIWExXZmFrM1FZdk5nV3dFb3dueHMxMmxxeU9kT2c1bVdiNHo5cjV0VGgvRkZuSHdMbGVPZFZxMUR4dExaNUZpRkVNemM0YnZEd1RsNEFSenU4bGJnK09pRGJPVUIxVjJ3bmtUaStpaEdobzdxbEt0dWM3ZzRkQUJpYUhSVGZWOTRUK3dlMkpFN1FJemZZejJBMXBMajJ2dTRkc3dTSkF1QUh3Z0lxOE4xYmxkZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_56.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL2luY29ycmVjdCIgSUQ9ImlkNzA5MzgyOTUzNzUwMjI1NzIxNDI4NzU0NjkiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5XOWcvRkM4ZUFGQ1k3K3FuWm1BL1lidjdXTTg9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPklrRnRiYS96cUhkNkduN0xWM256a0M0RVM1ZVJadkZWY0NSSXgwN0JlUjBFWXVpcUNzcVVxalYvNitkRzkzdXAxalZ4RXE4SzRRdHdKSzdsVTIrbUhtOHpiWHFETitEYXFIYXJkaW1VUjRQU2dhdUErQmdNNTBvRVN6L2JVN0ZSMEd6TzA5Y3Z1bXBBcG1aYjJvMklvVDJNT2dzNmNRRkFDeEd1MUlsSSs3QTVZbXozdlFBL0VtdXRiRGN2TEtTUDdOazJqUEhBMXkraUhPYldjNU40bnd2bnh1U2JDUy9ic3BnUHpSQkprdXByQllSN0hqcVlVelhOYUZtVy9GckZLejZsQTZYeEl6QkVLSisxcFhBZklhRXN2Y3dvMzlYWkNNY3ZKYXNmUUpDcjRFUE9kUVA0dUVZbFQ4cmNyeXFvZlVJOWI5V3puZC80KzVxYXBoZkxkQT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_57.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5kbmtjUk9Hb3JmYUx4M3hpazYrbE9aNmZVamc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkg0b1Ixa1h3aC94QUJTdExEcGhyOC91ZHYzSDVVb2o4MmQwSUU3bjdsQTVKVk9HS1M2bXZvdWZnd1NSMXVpdkhvenRBZjZsM2xyMmZMNmpjdVdhVUs0b1JYZk1hc3RwYkluckxqQmtocktOUlVtQzV2Y3dIK2V2czZZM295VEw1Wis5ZWlHUzdpYXVQSGpqWXFHY0R6ZjAzRWYyZ0xsc0xZNHRBNnpib0NpOE1SRHJKSFp6RFo5bnRUTVlQTHlOeHR1Rk9NaldHZm96a3ZSbmJ2R05jcUdocG5RNVFBQlVjNHQyRi9YbXdJTlRKYjRKMElqb3kySFJVelJBTzVVWER5YjVraWFFazlxQ1JiaDNOM29TdTUwcGk5S2EzSlJhSzZpRXhwT3owUDBvOG5QNGJJNjJZeXFNeE0wdzZFTmVCN1J2K0hnMUlVM3RoMFJkbFp1YUdRdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_58.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dXN5MGRuU0EwZzBUVWY4RHFhV0tPNi81YkEwPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5vVURoc01ydHlWa3pIM1dFRDFheGI1bFluMkNaK2NlQW1uMUt1N3l4bW9RMkwrd3QycnVCN0FaN3dnRnM3MkJOVFZzNVcya1BPS29zWHBzbDlDQWM0WVp5c294R3pMdzN2dWVEL1FLaExVbmN6OEFUaUc3NDJNQlhkL2lzS1A1dHg2NGZGN1FaTFBoMjVidTlSWklHa0hzL2NQOGhPa1Y2NjBXQnpJK05aZXY1VWx4L3B3aVY4V25pQThjdHRtbm54R1dQUlJwdWRhUmluWXhNRmJncEFFbUJNOUp6SEtvVEtVSEtOTGNINWNvc1VWQzdIeS9OcE5CU1lLSVJzd0Y2TFdUY1FUckowaTZzZlhkN0xwd0lWWS9PUWlEQ1kvT01pRkVsVldzQlVUTEJFVStMMkprSUl3M0c4Q1lDN0VsMzQ2Rm93SDlpQUVDcTd3Qm52UlFLL2c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvaW5jb3JyZWN0PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_59.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDU2MTlhMmU3LTI2ZTktOGQxMi1kZTc2LWQ3ODRiNGI3YzRhMiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NTYxOWEyZTctMjZlOS04ZDEyLWRlNzYtZDc4NGI0YjdjNGEyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5mRTdydGlRSElVMHRHcUs4ZE5vMkg3NVNhVlE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm1Fc0QxYThaRlQyZUtPMEZQVkZVNm42ZktuMFZzb2lIdDBVdDVLSlBRV08rQ0FjaTYrSklKaEE2ZE81K1JGTGVqRHJUYW9XVUcxL0dBWXBjMTJRcktyb1YrbklwR3NJTjBVbWJGQmtHTjVPYmNoMDZ3MXUvUXhFOVRBNVVxNTBRWWI2TDg3MFF0T0w4UCswZS9hQ2xYNGY2Vmg3MXkvZkFtOGVDN2IrNVBiSEthQm1BQy9sVjNZTWlzTmZDMElLZTNtZGxqWUsrNmxlZ2tSdWtwdnFGdkpiQlB3TzI0K3F5dGRKSy9Wc0lNU3NwZVRqdUF5dnFkbXpuMUx5R1JOeEV2SS83Q1lFVWxCMTBGdHRrUUJtWnFuWGxhd1NrVm04SU82d05FUDh5NmxmUGVtbVJlWWFnWVlVZnRkSldnd1ZwaDg4Uk9DWUR2SjdtS3FCSjJsamdDdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_81.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ RD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv bnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg ICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTExVDAxOjA1OjAwWiIKICAgICAgICAg ICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu Om9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y bWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0 dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw OlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv bCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6 U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s MjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl cnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3 NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMTFUMDE6MDU6 MDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg ICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg PHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt Zm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln a2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh bWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y bWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg ICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u ZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh ZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTm90T25PckFmdGVyPSIyMDE3LTA4LTExVDAxOjEwOjAwWiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z cC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z YW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg ICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMTFUMDE6MDA6MDBaIgogICAg ICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0xMVQwMToxMDowMFoi CiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj dGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w ZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+ CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy OkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i MjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT ZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt ZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4 dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6 bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250 ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp YnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz c2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s MjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h dDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s bnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y TUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp czpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg ICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl ZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl VmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl PgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh bmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz dHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0 dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6 QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_82.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ RD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv bnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg ICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMTE2LTAzLTA4VDIzOjA1OjAwWiIKICAgICAgICAg ICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu Om9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y bWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0 dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw OlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv bCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6 U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s MjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl cnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3 NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIxMTYtMDMtMDhUMjM6MDU6 MDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg ICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg PHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt Zm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln a2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh bWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y bWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg ICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u ZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh ZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTm90T25PckFmdGVyPSIyMTE2LTAzLTA4VDIzOjEwOjAwWiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z cC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z YW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg ICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIxMTYtMDMtMDhUMjM6MDA6MDBaIgogICAg ICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjExNi0wMy0wOFQyMzoxMDowMFoi CiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj dGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w ZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+ CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy OkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i MjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT ZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt ZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4 dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6 bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250 ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp YnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz c2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s MjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h dDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s bnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y TUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp czpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg ICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl ZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl VmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl PgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh bmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz dHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0 dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6 QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_83.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0xMVQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4MjRjNWU1OTctYWNmMS1mOWNlLTM3ZjAtNDQ1OGU5N2M1MTIzIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMTFUMDE6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZngyNGM1ZTU5Ny1hY2YxLWY5Y2UtMzdmMC00NDU4ZTk3YzUxMjMiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkxBOFQ4WHh3dWMvOFNISnRtQ2hXMlBxTlVHTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+RGd3NXBCVittVzh2ZkZkNFRyQ0dSRC9ScExpMFVhd244S1d1aE5oQ1dNU29jUWZWT3hpRVR5Yk9UNmdaZjBBWFpwRzdBL1JpUk1WTWNDa0hPRS9IUEExOGJSTjVsWmw3NG9WS3JhRURMNytRN0JYWlJtK1Vod2Evd2loN0RJNmhWTmtsN1pJVVQzNEU4ZGVCUnJtUHE4QXdLOUJ5RlU4bGpRQktwTjZnUFZJVXVUWk5NQWx2STg1c0ZaOFdnU1k1NDJIK3AwVDFoNzJaT3Y2RDRaU3g4MG5qT0l5YWZtd3NEemcrdmR5UGVoNFZ1ckFVSVhlMENkakNLNVVvUDJoampYYUJScWsrakV6bDhjbldMc0V1b1dKc3FpZ1hlSm9nV28vRmVNQklIN3daWmZja1lBNEdsV1UzYTZOM3Z0WXZ0NnBZZ3M0UG9rL2N0TVhYVjk2TERnPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0xMVQwMToxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMTFUMDE6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMTFUMDE6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_84.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNi0wMy0wOFQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4NTg0MzJhZGQtMDM2OC1jNTQ3LTFmMDAtZmYyNzlmNWFhNTUwIiBJc3N1ZUluc3RhbnQ9IjIxMTYtMDMtMDhUMjM6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZng1ODQzMmFkZC0wMzY4LWM1NDctMWYwMC1mZjI3OWY1YWE1NTAiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPmV4LytnME5ZcU9rZ2ttNjc0S0xjQklKcXRwMD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+ZGprckQrM051aXVpVGlGK0NEdElDSlJRVmxiZlNQeENEbnhrYUpEODNURHJ1b0owblNwLzNyYkExSWtCY0ZVRzlnR0h4WHYvWWF5alpOMmlGNVcyOWhGS1NjTjYvam8rL3hrS0NDdXo1WHBSd0lYeHZic3o5RWxhWjM5M1YyUzl4VWVseVBpNUluVGZmR1NzcVhYYk9rZWZ1WTNSdU9tZDZNRDdEdHJYa2tEY0J4bC9JUlpzRzNlM1JxWTVHckdqdzNEV1E1RnBjeFJkdC82bCtRTjA4R0NuWXJHb3lBK2N1VE0rdWJNeFNJZmhGK2pEL05uczRHRG0xYTN5bWJpaWFkYyt4YmhhWExaVmZzRWIvaXJrMGl1N2F2blhJS1JUZTdKTDJOVVg1M3gybElRSzZJY0gwSEVYZjRRMFZNY2NQZWlsbjFzOHNlU05nWWtCa0pQSUhnPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjExNi0wMy0wOFQyMzoxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIxMTYtMDMtMDhUMjM6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIxMTYtMDMtMDhUMjM6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_85.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_86.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaW5jb3JyZWN0IgogICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IgogICAgICAgICAgICAgICAgIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIgogICAgICAgICAgICAgICAgICAgICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_87.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaW5jb3JyZWN0PC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIgogICAgICAgICAgICAgICAgICAgICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_88.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9pbmNvcnJlY3Q8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_89.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg== ================================================ FILE: providertests/testdata/onelogin/olgn09_response_91.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ RD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv bnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg ICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTA4VDAxOjA1OjAwWiIKICAgICAgICAg ICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu Om9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y bWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0 dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw OlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv bCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6 U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s MjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl cnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3 NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMDhUMDE6MDU6 MDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg ICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg PHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt Zm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln a2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh bWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y bWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg ICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u ZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh ZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTm90T25PckFmdGVyPSIyMDE3LTA4LTA4VDAxOjEwOjAwWiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z cC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z YW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg ICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMDhUMDE6MDA6MDBaIgogICAg ICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0wOFQwMToxMDowMFoi CiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj dGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w ZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+ CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy OkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i MjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT ZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt ZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4 dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6 bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250 ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp YnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz c2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s MjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h dDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s bnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y TUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp czpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg ICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl ZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl VmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl PgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh bmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz dHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0 dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6 QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_92.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ RD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv bnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg ICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMTE3LTA3LTE1VDIzOjA1OjAwWiIKICAgICAgICAg ICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu Om9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y bWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0 dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw OlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv bCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6 U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s MjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl cnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3 NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIxMTctMDctMTVUMjM6MDU6 MDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg ICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg PHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt Zm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz aXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln a2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh bWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y bWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg ICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6 dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u ZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh ZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTm90T25PckFmdGVyPSIyMTE3LTA3LTE1VDIzOjEwOjAwWiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z cC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z YW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg ICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIxMTctMDctMTVUMjM6MDA6MDBaIgogICAg ICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjExNy0wNy0xNVQyMzoxMDowMFoi CiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj dGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w ZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+ CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy OkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i MjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT ZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt ZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4 dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6 bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250 ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp YnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz c2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0 YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN TFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s MjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h dDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s bnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y TUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg ICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9 Imdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp czpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg ICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl ZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl VmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v cmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl PgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh bmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz dHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0 dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6 QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_93.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0wOFQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4NGEyY2Q2ZDEtY2RkZC1kNDdkLTU5ZTgtNzg1MzdhZTU2YzNiIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMDhUMDE6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZng0YTJjZDZkMS1jZGRkLWQ0N2QtNTllOC03ODUzN2FlNTZjM2IiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPitZT3dnWjNJS0xEenRKbkRJYTlGcUkxU3phdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+YWI5czZlV1FOS0pVNTBmMTBMaWFCTUpkeUgwck03UG4rVkFCaWRrSTFRZWNXdWVDeWNlaHRlWEY3UFJSN0J2VnF6dkU1ZUNxamQ2Z3VWa2JkekFTOXF3cDRYSEVWVFlyS3lkbjJOcVppb1hMdmhWclZhdTRSTXI4amQ3L0NWYzcrVlBBWW5hU056TkZBd1Rrc3FrbVk0ejNtUElsTkxqMkNWaFlSVlRrZ0ZZTDNJdUFIUmZrQU4ybnVocnVVRzJmV3ZYZWFnYk1HMlZzakU4TmZTdXd2NUpnOC96bFpCN1paT3Bya3BRRHdJRHl5Q3JYYjRaYmJOc1M1YVZ3VDRFdk02N1lrL0RRMzN6SHFQbzZnS2x3R1h3QnZOWnhFSitEUzdvMVhYQmpidnVFNVpGL1o0OFNmeGVZTTN4VWlEVTB5UEdtTWtnL3AxbE01KysyMUJXVVRRPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0wOFQwMToxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMDhUMDE6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMDhUMDE6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_94.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNy0wNy0xNVQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4OGQxMmU1ZjMtMmUwYS00NTMxLTRjYTQtMTEzNzYxYzNhNzdmIiBJc3N1ZUluc3RhbnQ9IjIxMTctMDctMTVUMjM6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZng4ZDEyZTVmMy0yZTBhLTQ1MzEtNGNhNC0xMTM3NjFjM2E3N2YiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPndvU1V3RE1SMy9BQjV6VVQrRUZLNk5LSVpuMD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+Z1dPdDBWM0JTUXJ1YUl3SkZrdmNqTDdNTmlnaEYzcWxSWk9PNGVvbHpUd1BUcDc2SmpsVVZhUU9HZm05K3BaQ2pRTnZjOUJrMzV1dndMZ2NqN0Z0WHBqanlOVUlldEtVN3Nhd1BQQnp0VTNHKzFyT1BEcEgzTnkrR2JnSXNlQW9zWmlkaFdmS1VBN0xPaFJlV1RURUFYWWorMGhaSEE2TGRuUGp0eUl1cTFaWG1qOVFPTm9MUmphQkY5WEhnNEJ5YXdpdkRtdmpHQXQrTm53WlhON2FjMi9pcXorbVRjWFlYMlRFRWFDbnBQcVRnZHVrMWF6SmlTS0paUWRNOEZIcVBJNjJyZGhnZXRPSFR0c3h6VUVNWlpCUDJabldjR3o5NEEzVEpaaTJxME4wQ2ozOU5xem91V0ovNFMrMlEvdkVQSDRnNjM2WWtONE5iV3RBWUZmL2xRPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjExNy0wNy0xNVQyMzoxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIxMTctMDctMTVUMjM6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIxMTctMDctMTVUMjM6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/olgn09_response_97.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CjxzYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHhlbmM6RW5jcnlwdGVkRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+PGRzaWc6S2V5SW5mbyB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48eGVuYzpFbmNyeXB0ZWRLZXk+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjwveGVuYzpFbmNyeXB0aW9uTWV0aG9kPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1NZHpRRlo2dnFJTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLOW80d3YyRzFtL093Q1ZZenFzVk4rUE1IYmtFUzNycHhEUkFQUkkwMjR2RHpLeHpuWFdtaDNYL2YzM09xbTJqQUd1VDcwUnczNEM4NzhPS0lscGNLZldHdW91TFhuZVlHeFc2V1kxSUNmaW9FeExsVCtWbmdlUUhGSXpSMEs5VTdDM0ZIeEpoMFhMMjRiM3d2QWNlM0xhS0VObEUyY2Q0STRoZlZxRVB5aVRvZ3I5K21kWElYMSsrdzZETlVZaWJwYllwZThWbzE5RmUzMUhraUlqdURVUExYU0gwaGs2cG5NNm1tSWRNK0NCQ2c3b1JyL1VZQkdxdkhnNUl0TCtFMDM2ZUt3ZENqa3hoT0ZkZFBFeDc4L3NzSkIrbXE0Vi9DTFFiVlBuR25pS1lCNFJxQlpsNTZ0cDEycEVkVVc2Vmx6RVBMdVZNTWxWNW1STFV1d2p0aVVDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQnlQNU5ZWU9JWXNRa2tnY05KWENQOG9JK3R1S0RmZ1pmY3BncUo0a3V6N3pPRVJwVnp0Z1lnVUtZbzBwbWVlK1dUNlgzcTNmWkNQVHRRaUF1ZWxIT0hUUi9yd2x0alBUME91QXozVTUwZGNPRk1YdVdpaS9GQVVqUncyNk90Ui83SjZyOTBnNzVTZU5CQlhUZ3Y2d1JyOG40L2lFUlFoMEprQkpjcHdDRDdaY0RnY1J3UFpxcHVCRjMxVTJqbzFOZ09oU1NWZzdaRGdGWkRMVWVlR2VrZmJETGc5VEQreEl0MDZmWXRkNHBkSXBLMnJlQmlLZ0U5ZXBrc2pRTzdGem1KekI0eWFBSUxyZmZTc3hDV1pySGd3QVNhYU9lMUZZUDNVZ0x6aHZPVS9DMzBmZWx0dkc5V1d0UFdNeENvcDJxMkpSMFNSRyttV2lXYXU4dVhmcG1FPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5HWFRkVW1CTnhyMk81SXZCVGFEUGtPTU53M1FvaFpnUmVyZFdySmRtOG83c0QxWlF1dXRkY0t5M3JwTCtQSW9XK0xHS05GbGwvM3ZkV0lib2VLak1GMWVyWlNGN1JkQTJ6dDZMeEZ6enFTRjV0UGdQTVYyQzR0aGRTcTdsa1Q4d0NSTENjWTVCeXdmN0xqUEo3TVV6SzhjYWI5T1ljK2c5Q0I3alI0SE95TFNzbmZEb1NJcmM4Wjh2ZjczdlpNREFVdXV6dmtWd0FVZk5Tc29VQ1ZNN1lzS2tVN1lhVVpYU2ZnUmJSMTFaWk1iN0hxQVo3Zzd2STVMZGhKY3hrK1lkN0NQN2xPVUZZTm9uL014SlhNU0FvUUUwM2FKVmZMQzVnZW1UZERERUdMaGtGK09VVlNIc3YyaENESkROWng5UW9uSy9rbHJraHIyVGJGdFhGcklrekE9PTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkS2V5PjwvZHNpZzpLZXlJbmZvPgogICA8eGVuYzpDaXBoZXJEYXRhPgogICAgICA8eGVuYzpDaXBoZXJWYWx1ZT54NXRjb0tObjBYREx5VFpGV29NMUM1NDRGbkRDdlNwOEZDR0dneEoxRVVWeGZxQ2poaDFjQWZUMG5QVDlzdytvT0hUeVI2dGMzQ3YyZmgwYmhhc1FKcWxxYXNpejQ2OEFlcnFOWUxRNGFjYmUvdEVkYzZMV0NySU5PaU9RU0VVOC9ud3dqVjRuck5aMUMvTmFSQURvNThwZllWSWRCYjZOZDVmS2hrdXVHR0gxbG8vSENPc1pkSjUwYnNEcnZ4dnlTMUNkRUdPVk9mdjBPMkVEeDBYNVhrTkVwenZkV0poYlMxeGhyRDgxQkVlY0w0cGtCckZ6OERwWjVVSStkM1E3dnhobDBXNnEzdHEyc2xPbmlPRktrbVo5bS9mTHlyUnlWaUZEc3NiblpPUHJFeDczMEowWnVYTWhVRUJqOE94a0ZWTmgrb0o2ZjF2bFFSQi9oaU1FRmNYanNXcWJnWHYrZlBkQWUxczY1TXJuS2VKQ1VOa3ZNR1N6YkMxMDdRcjY0OVh6V3NuSjB1VExpUzFPaEJ0anRWSlBVd21oc2JXdEJ1M2NzTmRNak1wVFhaL05ZNnduQS9zdnBtZEt2UWFHWUhib3JzUzRRczY5ZU5aYXM5NmJLYUtmc3QyOC9EdXoxaHlJZ0lmT2ZQVVE2SjV5OFM2QWhRYXNJWS9oeDNLYXlsVGI4LzUwNW5DSnF4VG5TZXl6c245VlIwb3VHSFJIWUxncVF2Q0prNlBpdzBXbVlMeFNxLzBlaWdYNmJDUGh4a0I0c0piTFh3dGJHeDRxR0hlUy9ib1hlODAybmxSNUVFVTVmNk1GeEtURjJLY0ZXTG9EQmM1VGhCOGtnQjRjcXozeHV0TEEvSTY4SG5sVlgwRkVpVmRwdUVCeStFck9mTVd6bysyWjB3UnNZVnpMMy8zaFQ1WjlVKzFGT3Z6a1R1ckppS3hFNmxjY3hGRnZIWmI2cDlCWW9kVnZPZlhzdnFmM05jSUN2QjkzVHJyTkJ2TXZjb0tDcEw5ZmRES1pNYVdVUnpwbzFsMDIxdXFHVVFDeGJrRHl5U0h6d29ieW1CR2NwLy9ucGRvQXNWKzB6Q3RMMWNsVmkwNllNMVB2VHQ2SE1aUi9ZWGU1VVpwdmhSa1g5cis1dkgvT0hUTHpQREJNUlFidlJWdGRQWlEwUXUreU83Y2htSDA4UzcwMGRJSEQ5MEdabWhPMGphTW9OTHhvTmZrU1E5TTM5dll6WXJtcVdwbDl3UTI0RFZvQWZWcFJnQ01FRGM2d0hSYXFtNklyUENINTh1OUhPZkQzU2FtUFg0N0ZFZEUwWURPdlA5Vys4YkZXaVYvSHNNRUl6RTR2c2psSW9OenErTmJrb1pxMzE4SWttUlFzMk1MWVVmRW45T2lQcmlhY2R1VTVNRVIzUHB4YUsrczdiL3VRTWRiaU13T3JUc1BkeFlKdHpmNURBbE9CRVlMRU5KMVRWblhsY013RkJzaTA0Y2s4UW5lTGIrejF1cG9ySE9qdW5FRVJpdjJXVHhTb3ZkSEE1d1Z5b0s2ZEZ1emJrWjZ4a3VRcGdJMnJzMUQ1cnNqRjk5dTlHODhtMVZ3NGxaZkYwdmMzdUtEdlB2QktUZU5POGJodGg2MEN3MFFoYTRvOUR0Z3BDSmlnRlpoR3pwR21tNGs0b1YwdWtlUERMZTd6WHBIbldhVE43c3Z1QjNJc3d1a3JwT1RjNy9SSlZyeHMrUTNEeEI3b2NNeURCVjRCR2JUMTFuY09TNlM5V0Zud2NUUytmbXZoNzNZZy8rekhaSklMUG9QUXRKMlFxWFAxaEtoV2htZzhMOUtvYWdEeG5TZXJ5UzBpVTNiU2dsQ1VubjhJWTdBeGp2SDVROTMwMTVLQmZ1WWE1Y09wOWtQMldhdy8zekhNWDNhUHE5Vm9XRTluNzJMelVxTXViL2YvWEJoYWtUaHJtMnpyUUhtSzRVKzZ2T3FsMFhtS1ZtRDdlUUNMZmVod0w1azY2SGk2RlpvdlNNc3R0dklLTjBGK0x1NzNuVTUveWs3ZWlmbHpNbHEwdFp0QTNMcFdLZEpvR3lvMmc5RGVKMW9nOTFXVmhuNjU3U0lxbkl2cDg4VjV3VDRTak5mSmhyT09IZm9COVRIN1N0ZHY3MmdQQlF6RGs2TkFIL2YxYjI2MlZsbnFIZ1VMcHFkYlJ4QmhlMXA1NXNTRzVyV2RXZ2JicmM0QVc3OEc5Uk9VcGJFRy9BUDczUWRZZGNTY0s0UFlvcDVoNGIxbTB3UnExLzM4S0szMHFRY0h1eWJsWWcya2dXRWl3STRyWlljT1pZRzFoQndkbE96VEdPdEJTbkRlSldxN3hybnYzdXp4VFI4V2tDT1RlMjJ0TVBDc2piNjk2VDcyWjJBb2dPRUhQTWgzbWFVcFhXdVk4VXY0U3FqdGphWW9xNFVGYXkyU1dJb3ZrbXdJWmZ0VCtWZnpaUHVISnkvczdvUzRXR2tNTFFJV0NzbXByZ2JhUW5SSC9nSTBkMlB6d0xPVjVWMk5jaFpTVmNtRjBEL1M4dU9OQjIwR0JHeTRhU3FxM0JkOEtscGIydDRyTktyMEpYL0ZkUHdUQS9iRG4rbTJHUGcvQk9wKysrY3NVblBpbVJ5RFNLMGJvaWQvNVplYWgvckR4OFpZcUNBem5JQmtSUjlHc1o5QTVDM0c3aDRlQzhRZHBGSm1ncE4yejI3dzUzdzM2c1VmQmYveGN0NmQrRTMwOFlMcDhoM21La1JnaFFPdUZ6QjBmM25QSUplbUhHMmJoVC9hU0lzdnpQd0NDdUJRK0ZMUjFVSHJKczlJMEZ3SVRQbFpZb3pFV201Q01rQUZJM2ZGcHhlYVV6bFBVT0gvdDZxQWhzbG0wWERqVmZJNytrVzdXN1ljdTdnVklpdzZmR3ZQSjArb3RXMnFXQnlEeEs5Y3pQd3B6akFEQ2dycnZ3QVp3WGpUNnhSNHJTdGMzbHdZem5mSXpzZmsxSGtjV2dVaUR6OVVCdC9lSk8rMjhZdFhxckkvc0pycFpkekxVdDQvOU5ua2RJOHBBRElIR3RNWldBU2N1dndXazJWRlVFV1R3cnVyK3lPbVhRSVRkZzRtbXpaME84RUZlT1RSeWhoNTh3bzNVdVBWekpuR2JoNFk3ZXJwVTVtSVZNaW83ZWxqVDFpVzlaODJEUVN6VEMyNHlyWDgzVGoyRFFEeHZkenc2TStpM2o5WUlhaDV2cnRtd3V3dXdWWmJDWEFRY0lxWU1sQmVOeUVLR0ZMSE0wMTA0dXdEdlp4WHBBQTYwNk5KZCtGbVBOdjNyMHdNVWVtVEZKaEQ3Mi9VV2QxREdOd1l0VHRsMVlsNE10LzBteW50ZFBUcnlOS2VzK1liVExjOHNYYlZlQ0NpR3BuUDR6SUZCZ1o4U09uTEo5VzFjbjVBditVdUZrTkwybEFoM09jL01pYjBYem81Q2hFb3pXRU5Wa3cwcW1FUmNRM2dhN04wSmhXazFSYzNpYWpNNUxZWFpsa3JDK2JOU001RUlreW9SV2lWZEIzTi9lNEpGNnFvSlI2TlN2WXZiaTNlNkR6d2pVWksyajBmeUU3ck1ncCt3QWNQUmFGZ3FnYzlvMkVMNUJkaGY0d1czTWo2THE3U29MeDJwbCtRdlZTZFl5NkZYUTRDdXRKMFhFM3ZiTTFYbmd6VCtrNk1OcFIydEgxOXYzcWtSdjZwUkd5MG9jWUs5cnZBeG5pM1ZZVmR2OUJadTZ1SjUyYlNUSEZDZG4veHJ3aEFGdUlNL3JHU2lWNWZ2S0d4ZW5NUVY5SnYxUk1XMS9kbkRpODRIaDlCL3Z1VzdsdG1YdGVGR25ZNkRMRFByMXJ4c3pNN2FvV2RnaXlOeDBPTFVQNWVjVjNlYzhjRHI4b3o4SUQ5WUtESlY0U1BvdWZlazQwUmJoakRzOWc5Tm96VmlMS0Z2TXBNQmJQTmxsbFJrMEJwWnk0U0xaWU94MDVGNFAxMGNRb3gzbzFZejBEZU1DSVp5VFp3ZE5aenVEMEtXUEpWRDN2OTZkdU1ydTFZOVpQUUdqVlFOSFIvZjVRZDZmUnRWQXoxZktoWi9PSDBiT25FdUhyWmNCT2xxTjdodStvSkxNTTlTRnN3N3lsS1Jrd3dYYW1iSlUydzUwcS9RY1FjVXBWRHBDenJSdDB4ZmwrK2w5QWxzME5sUzNscTJYNUdidDVuQzZyV25CRmJIazJVK3dybGJWQk5JS3ZlYkJaa1VmRmN0VUROYXhWQWVQbTJscE0zeEt5SEpLZVpJS3J4Zy9vbDJ6Znd3bHQxeXhESTVUT09iSjNyU2lGOFZzOFhuYS9IbHFlWHVYOXJYbjFvKzgzV0xiaGZsajJXZDQ2QWxlU2VMN1ZXWm1UbGNuUnRqUmVSM0ZhUVl5MjhtSTNOQ1FwUFFqYnBzejA5TkZRLytyS1VyZ1BlMlR3ZXZIbXYrOHNqLzVQakNyUUZ0NnRmMlhtZytrS2dTQllINnZud3NmQkhOajZpZTVSeUxyMnRTQ2N0Njc5amFURGpQUGZKRi9JSTZUbis0Sm1nTisrNFhDdk8ydndVVS9kbDFyKy85VWwyMTVTWmJ4Z0IzZ2t3b3NiTU5BYjhjVkJxcXQ4UzBDcUZKTVdmS3BQVTRGYXluNmpBSnlSS1N1WWVMdlZJTjJTZEVGTGY3RFREUXdJWkJxWjJ3QXVzdWJCQVBtL2VKZHk3bFluR3dxSE9mQmFNV0kxbktaNnFXM1cxQnk3TXFNbnVubk1lUWhWWC9uWVlLWlFVRHplMm1vVHdSQnRjNGl2T2ZmaFl6Yy9pbWJOL2Z3SHpKWnhVRlBuSzdIZDFBTU9maFRoWnMwUExtUUl1L0NwcC9Cd0FZZlJ6enp6MUkrZlFiSFR4TU5seXFSelpuakRvSTZRYWl6aVArcnlESkp3ZzNWRzRFTWJtOGFndFEyOHMzM3VMMExLcVZUbEo1cUxrR2ZZeGJLaE5SL0IvZEFTV0RDbDBqd0N2MjhuRk9uMDY1NlY3M2t4SVZhcVBTZ0FwaXNIazlZc2NYbXU4Tnp1NXVUajU4NFE4SkF2K3dNSjhGRVBTZjVmWWs5bjlCTmFhajBXQjBPeDFwNEFiNVEyTEh5akRpUWZLNTdIYnV2eG1aTFk0cnlUYUJXbXdpZnd0TTJpNUtRemd1Rmk5SmNTMDlxWHBCVHNYak5ITStqVFdNZDFvRy9mZ2NTWW1nY2VLUTYvSVVHQlZQSVo1cVpDTEZTWHpoR2JISDFxWm8rS3lWOXY5OFhnYnZXaEZ0amZpSGs4OUxTbXplZjlaS1BsS3RRZTZORFRiaEVkK0lQamVIa3JmS0d6eUljdi83UHNXK0YxZ2VkUVllU2JpdmcwMGF1b0JBMmR0TXlua1Fhd2lMNmJRTU9BSTg3YitOOHN2TGZFd1RZZncyQmZSMXE4NjhXSU4rNGNxZmZ0QUpBTTVrb0lpbm1vWmRlOUVJQnRxUmZtb3hsZVZmRDl6S0d2Vmk1UXBtR3lBUmhqZ2xBOThnRy8zN2Ezc1ZpMkNMYm1scmxGVzRsdVowc2hsT2QrK2JEdzBZb2ZsWHE1ZCt5elpBQ00zNVkrbFRGeW03Sm1lSmwvNDNtZ2lCYXFUUlM2QmFUQXRWdjdpTkRyRXhTMEpFUHlXbEJkcER2VFVzdDVjZE5QazczMzhtV2twcVZBYmExTC9yOXIwQzZEaDRXVXpWRGRRZ0VVVi9yT0NweVRIVDlzR1RxamFmOGdDU3NPK3p1MnFzMlh4NHJ2ZlQwalFQbUtzc2dXRDwveGVuYzpDaXBoZXJWYWx1ZT4KICAgPC94ZW5jOkNpcGhlckRhdGE+CjwveGVuYzpFbmNyeXB0ZWREYXRhPjwvc2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_98.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CjxzYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHhlbmM6RW5jcnlwdGVkRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+PGRzaWc6S2V5SW5mbyB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48eGVuYzpFbmNyeXB0ZWRLZXk+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjwveGVuYzpFbmNyeXB0aW9uTWV0aG9kPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU92cFp0Sk50US9yTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURneE5EQXhORGcxTjFvWUR6SXhNVFl3TXpBNE1ERTBPRFUzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLZlVsY2l3RFBDSjlKWHkxTnN4S2ZxeU9mTFFYRktLR2dOS0tSTHpMQVdPNDNHZ1FZclY2N1FhQW55NUx2Z09hODFLUU9YNEl2akp5MG5kL1ZyTzZqRzlwVGRNUjl2RkhUMFR1M1cxUVVzeVBQU1FxcEtYd2IyWkNTWE5naFlENWdCck50bU94QU9zMUF6eDVxbUl6Qko0RjBSa1JpdmNkYlhTZkJVQkxwQ24xTTI4NWM0dGs1U0V2b1JnQmVpc0xKSkRCN2hteWxBMVY2LytCTitONmIzTStaWkcvL0NUdk9qSktnbndrTUFMelhiUGJRV2Ewa3BiTUxETXo4S3IycE9ETEtiM3JHbWRmNFA2QTlhQTQxazZMNGNsVHNOZGNLN1p3SjJmR0Y3OVdHekU2Ukx5QlgyVVMzZ1BIVVh0L1dNUVpYeVVMTzNleGlURHNRWFdGZjhDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdRUU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQjNmUVp6MnFOQW8vd29oUE5hUjJ1QWFrTHQyNWNLcnNiZ24zWHdPK1grRFJING5xTVNaa0hkTEdyODJ4RDNpMzNCTFNRd1h6RmVjRU4rQ0E4U2xwTm9JWEh3azZENlYzdUVCU2pLZW1adEpGQ0pxZThkKzVxdDNHVjUwQUttdEV0Mk5jN0I5NFROOHhCNUVtWmxhZG5USldjQmdTdXV6MWhMWFFRMDJkSjNkRHE4Rk1seVI3MFMyRFR0dVB1MGkyL2Y2S3RybG1tTnNVMjRBcStmQ3pFRzQzTnFTaE9NZU01ckR4THNTSkN0amZNUndHOFlleU5mNmNDTVNNeFlBSmZyVHlqK0FTOFJ0WlFOR0Y3dFgrZXhFV0hPZjFDOUNCekh0S1JDbEJSTDZ6RGpscFBDSUR3Y01GaThOWHZhaVZjbHhJcTNYZGZxeGlHQkJFbGRraGdaPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5INFlCSE1wTHcwWGZGSXRVR0poVnVvd0FiZmZYdXY4bGdTdzdWY25IblpOTllBd1NDNHRVOTJ3aXdvd3NhOHZUU1k2cFpMYytYc0ZtbmNzcktGUDlvYXpQSmJyOHBIakJmU2t0SWhVZHhCbTZFU2lpM0lDbm9WK0JadmlvZW05MDlXTUVZVG9vR2l3QThIamFZRUQ4anUwZU81a0NNUDROb3lETjF2VnJoU2l0Vjh6NUR2aWl5N0VqT2NUSG9xOG9FUFFDRjR6UTFQZXVvWnFsUDdFQ2JSUFlodTZQUjdNa093cmRxNWlJblpvejhQeTJNeE54U2lPZlB5dnNrODBzOElQbk1FVjRZNUdnYXVTMGJ2bXFTNUR5bkViOVRyT2s3WDJhN2oxNXg2d0JUTHc5eWU0T3BHWkU4VmFPeGFxUGViRldsNkFRM2FKeHVpM2ZycGpIK1E9PTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkS2V5PjwvZHNpZzpLZXlJbmZvPgogICA8eGVuYzpDaXBoZXJEYXRhPgogICAgICA8eGVuYzpDaXBoZXJWYWx1ZT5JemlqckFKU3RyRUttWEo2WnBhUi9aWVpHYnRtcm5lUlBEajB0T2Z6ZFJEdENwTmxjMmh6eG9XaWFwVVI0UGlkNWZwQlBDWGtnd2Q2V29tZlgrc2lpWTRHQ3JRQnJidHNZQ05vdlBVWDhicWNZYmxaWGpXbFZJbnJ6U3NtOUV5LzUrRDI5dTIrdWRiOWZRRjlVcSs1c2NBUk8vR0htdlZpdDdvcjA5YmZVa3dKeFVjbzhLYlk0T1JJa2hKVlk0T3cwb1VmdzMzcUQxc0hSeXNFaU5nQTVsTEZhekVvR1JHMXA4NHZxSTk3VUVJK1FtbXJxSVN4K1NQSkE0M2daajc0WHIvMnlJZ1hLVXpoaEhUS0JYTHNZeDNoYUJDS3lZN1lxUmVZQnp1OFlBbW1QRnlNTldZN2I5MXA0QUNEa1NnWkx0SGRWU3lYSmRsdzlaY3dMMnovbG5hSzVnMTlNTWJuczF1czlWRFNpdldLNElScmNBL2FQQkJIWTFGbnFtQ21Tc2doVk5DUW54L2ZEZStxR3VtYi90eTRqSzBjeTJZSHl3QmhVVmtXR2FFWmt4eDZvWDk5bG4vVjErNzZWNzNrSzRieFIxVzEvZ1VwdDI0Vld0ODFFcFNmKzZVR2t6TCtmTXdFak9YZXBLUlZTOG9IRldzZUg1cThlV0xUQ0NTWlpXdmN1b29rcUlIWXNpeWZpM0plWXJWcUNYam5tL2hnRFdFMDhabnplM2NxZUxrNi9kQXgweGZFN3p6a3hiZ0JtZ3hKM0lBMUxJZCtGbW9WVkpaWUkzVk5vRkFHSkNtZVhvQ1Q0SE5ySTFpS0YzMG1aNnowblQ0OW5sVHpicllaMzRVZG8xeUtXVmd1SnVrVWUvanBVa2lqejJNL0RPUUpIS3lMOXM3SWVLSXN6cC91azhscFM5d2k3QlBZOHhaM2dpT2xxWXVtWFVBMmgzRVB6UUJoRWN5R2FpNTNvNlowRTRuZXNjZUFVQjliNVJBR2ZiZGJKbVJEdHNVRlBqb1RmRDVScVdTSFJMSG1STFRENDh6anlKNklxdEI5N2hlR2s2YW5SeEVrc1BKbzRzeWtRUjBGSUJXYUpQZWRuRmg4ZWpEYXdUMERnU09tbk1aSVZXUUpTVkZjaFpZNTVHbUIzZEpGTXE0VC9ITnRITkphK3Zic2ZNY0JYWEJmQWprZmkvdFhFQnUvVUphYTZ1aHVycHdvaG4veWIzOWI3MWVjVWhnTHR2NlRNZXFiWUY1VU1MSG4vVTVyK1NnR1IvMGk2MGFIYnlKNENQYUx4ZWZyRjhQcmRyOEtOYWdRZjNORGlWNnd0WVRNbTNRWVloWTBPVTM0cXJXcWlhZnl1SHNLS29OMmJzeHRaK2orY3kvU2NFYXBrT1pTZ3VSd285U3UyTVNIcVlCcVRMYXZqd0ZLbFJLeXdmT3JJc2xQU2RQbFNKR1dQeEZaMlp4OU54RlBkaWkyb2phQTRNK21PY1U5U0dnbjFGeStrK1BHaDJvT00vN2RMK1ZIRFM1MEZ3Vzd0WXpGcVh3TlBTYkRTQ2diRlFjZlVabUoxc2w1RjduakFsYzdQQmdtSWJkYkdyYjVNOUxRdHlxRGFURXZaQ0QwNnFTSkN2eStQS1hHcWhpeVFHWlU1YTcybnZ0Tys0YWhndU0vQjE4M3FXbnoxTjlXeUhtQVlCa1JUWDBsSnVWa3dkeUQ5aDh0WTFpMGxESktXWEJlcXUyUDZIT2UwSUhad2cyVyswc3FsWmFPYWxoY2FjMGdPblBzemErR1pnK2c3a3Q4R1JkdjBKZ0k2dTJBSkVuN0tZQzVQMzdTRjhFMitWK1VLQitDU2tRalplem9CRUdBQys0Tzl6QjdVb1B2Qk1PWU5Vb2hjbngxeCszbkorRXFGMmdSZVZ2T1hXNWtDSGJpd1llSmQxZmpvblIwZGNwMUJIWnVJT2FHTnZyREUyQm9zVzhaOUdjSjQ5dUhmaDdNTGJ2OVc2eDBFb0VTSmpVYWFLUGhsT1drWEYvaFNNOXFvTmVKczgrd0NRaStZeERSSWxMMHNIMzdCMitFTDdYSzlpMEdLNkhlNFhPaVA2NzhJWEVNVjY3Nnd3cy9sVEpZTld4dm96Tm5FQ0tWQzU5T0Y2UzRzdzZIRStFTGZ4RmovQXFaTGdOb2xVTTlURDc1Rk1lM1dkL3VsRDdkME1KY2llSHFyUVMrSVZ0SW9Hdk5KU1BxV0FBSjNHNXVidnp4ajZsdVFsUEtOYlRuL081d0lCSzBrSmh4RzRIYzRXWDVhL1REaHI5bStDNEl4Zk5kWXpuMjRyY3JDL3UyU3I0encwWWxJUDN4bE1xQ05XaXU4S2w2OXh3M3hCa0tMZkFjbVA0N2pRamxadW1ub1ZXSDByN05lZm01ZGE3NmRuZE5tZ3NrL240OStPTi9zY3RVS1lFRDdlV1h3UHJ6VCt3SFJLQVQvL2RrcStZOERlamdOMnpPUklNUG9jaTBTVzFCbVJ2SDl6bHhNWXZINDdTdVJIajYvd1dqRFFha0pENk13UWxlNjR1ejhDYVQxSXUvTnpwQjdXOVVlRVFnRE1VRThBQjFsUTVXR0djNXBDemFYTTNIdEgwOCt4djRLc0xrQ1FqQ1dDSXJTYzJZdjhZQUlQdVlJUDNIcWhjVXlQREplY1ZxeW4za1FLc212cU5Qa2EvZVhiVW5HbFZsTjlvdjkrVlowNzhrb0lEL1BPNUpDYWRNVWxUaVZ2VFREZGplWm1BcTE3UVk1cExsdnRPT2pLSVBxeWh0TkhJYkE5Sm13NWFGL3E2akRHVkpWTi9xS0s4NmdraU8rLzVvR0hiaUJKQytpUkFJMzVGb1Y1V3RMR01laUpvUW1SbFJEWmREUjVlQ3FTbXN4WXVpV1VuN0QvQXVhUjdFOHpQQzBGd0Zkc0NZOEs2TTZWbDdNSnExSStPeGE3Z2R0S0tPSHpFd2V3VXA0OVkzbzNEZU9GVUYwMGcva3pvcVd4M1RwdDFmTS94RVNuUTd0WXArK0dmNVJDaGxUUGJFWTFoTUgrYkRGeVJIR2s5bWxjdTV5ZTE0ZXYvWk5EaElKMGdMMVd3WkIrbTdMZjJLQXpNVWNQVVN2cytTcnhJL1VXcEpxL0lrNW85aVVkZXI2RE9hRHdhSy84WERHMWVrTUl5WXF6Vzd6aXB1RUpmc0FqdVI5eWRUYVY0RkFVVGMvNXR0ekwwVndRQVFPTEIvRjRkUjR4bkhiaDlxNytGRURDdytEY3N4b2dwY04vRS9RZzJZdFAzT25zWU16K3M2ZGJoYzMrNGxpUVhQYk1PNkdON2orekg3M3VITTB2U1lrMC95UldOdUNncTFQcU1YVG5TekNKZzZXSzBYZ3paRzdvYnlucnI4eWUrSDVzd09aVWJ0M0NBc2htNml1bEJPRW10Um5HVWpuMEdqOVBsVURwaFZ3eURWRWk4U0tYSitvaGhHVXVtQkFiVEdiSzE0M2xtMlNMRjFwRWxVTjBGRXIwbnFPRkc4YkQ3SGZUTzh1N24rTUgvWkhBTTJaQXZJNnRiQmxiTldjTlpuaFFHK1phU011YnFiTUVnQThLRXRzVkNqVGl5bktMVklyQUtWM2NyeFR6SXBSUE44U3VzaUhiVFhWQjR6NnVEMnJ6MFU2RFI0YkhsbEc5cWc0ZVJwZTYzYjF0MWZxNFFnbWlDUFZBNWE1Sk84ZUhnaCtyTmd3MS9rVU4wM1pFVHlyVVRRdDdLTnNhNkxqZUZ6NmVKVFBKaU9vOGZWeGRZTTcydHEzb0VqcUVhN2dPY0RYTHhpRlpWMWF5YUhyOFRpSUNIN1hWVWFYN25HV1o2MlFDN1RqTUZaeW8rRHpmcUh2TmtQS2NMU1J3K1pLbmNpQmhkM3V0UjB2bDlSVVhHWWJDU1ZqbldiblFWWTdEUzBGcktYandrdk9vZStDWCs4L05jNDJFeU56TWZsbGluWHVPSVdiNDhjbWd5T09sQjM4QURrOG05bzVibGFiVWxtRUROMTYvWG5YZGsrV3JLMUJiTVM3ajFGYVlPeTU1UmpHQkZVU1R2R2lJdVdqRUNxbXVpM2JaQ1ltM0RMTHRhRVBINlMvMFgrU0VnMGhrdE9hNGc0TTNRSXVEQnVIN3VsWE14enNoM2N1OHRiUlpJUkI3bXRJWnYwVWhiTkVCaHVEMEFPZFo2Z2xKc3NLUElIaUZTaVBxb1YwTHpaWlU2amRUL0JWQU5QOUhOQVQxUFk1NUlEdzhUSHJrQ3Q0SHFnNllPM0o1UmtxYm4yb1NodkJHLzkzcG5UOVcvNFVhOGRvUVF3bGp5dlAxaVlMN0sxQ0Z3R0dOOXRkUituVCtGcFllekI3cWRFOGUvUTQ5L3NEK2JJS1UzcnFUVmZlM0E2cEVTZXpGSW8wbGlIN3lVNGNwRUIxTXRobm5EYUZHSDRPRWgyb3JDTGpuSjhIVy9TTHRFQVE4Z1hxOHFqalUwR3RXSExVRXo0SEJmUjhlTVoyV29TQXVMdllDR1lubEVLTGZoU1UzbXVLSEdKaXg3UUcyUTZLRk95Yk5Mai9IRnJveTJ5YUFFR2N4V3huZVlDalZKQ2ZLa1ZIaGowRDlaOHhhVmhpOU1vMHRXQUM1dWNGa3Nuc0c0L2IzQUVZWkh0R0hYNklBQnZhQ2xEU0JtNjM4bEJUbURhZ2FZUzJqcThkOVk3RGFkNDlOWG9WcUJucmlLMzloL1B2azV3Q3FudFNjNFgwbkNoc294SktnOGJONXJtUkhmWG1FdmszbGp4NFlYYTlWcVZTZ2dpNW9zOE90d2trZGFpQTNQQ21TVDFUdzdyTitIQjlDNDM2MlEzdWlJWGtHek5pY0Y3QkZDODRFUDdZaXVCVVlLMFZFZi94Nng3MU95Mlc1Y3V3cXpvbEpvbHA4VXVwMkJXVmI2V0gvVXE2Z3dGUDgrVkVkRCs0cnk5b0ZoUDF6NGNkZ08veXhHdzBZd3RYYVBlNmZHbE1SUnUzWHpVWW1iN3E1NUVFL3hhb3BaaTRHdkxnYldteS9yUFZ1bmR4SHh1S2ZtL3o3NFo5Qm52bDdMdVk1eUZwdEsrdlptVmNuYXoxcVF2aHEwcTJJRERHUUNyMTlvVHVTcGRqNU1HcDN4Qy9hUnRPZWxQOEx2c2JUZ0t5UURzc01VazNqbC9HSFdrL0Fkc2dJT0pKN2JsY2c3MGZwdllNOGo4bC9IcUtLcXp6dlpad3piUjRRYWxrdm9NYmdGY0FTK3F5c1d5WEdOTUFMaThaZnFmcSt6U2x6cDhITzBrMTVpR0Z4ZmU2M3VvcVFMRExLdHVCa2ZQQzZ3RmQyanpDWGU4azRQR3M2UjA3bXJjN3VCMWVmblpUbGJMcjBoSHA4bmJKcmR0bkVDdzIvbUNDbFQ1UFMrNWM3OVY5WWhiOWZqcjBpTXlReXNKeVpWeDFuekdSZ0M3cWlMZ2xFR1hxeHAxajBaMGVOWHBBZTlDK1UzYkFSeUNHWG9uSXpENnBhUzRMYWpTbXFNYlpsR2x4UkU0RXdhL01pWlhxUG9ldWRKZFlsejlDelZsUU8yb1NWeVcvWDhqTWNqZnlZVzVyNFBvdWpGTHNrTTJwRVlCWmQ3bVB5ckdsbHhHd0tIY1I4VlJ3WjdPYllkYm85QndQamN3bTVoR0orZ3FibldjMHVxTytTQ0FEL0c1UUZla1BxWTA5V2RwTXRISXAvd3J5TmNrMittNkNKU3g5bGFHWE03OHVvQnNvbnYzbkhwV1lna0FVc08zUkR3MzdqTmUvK2JrMmJLbDwveGVuYzpDaXBoZXJWYWx1ZT4KICAgPC94ZW5jOkNpcGhlckRhdGE+CjwveGVuYzpFbmNyeXB0ZWREYXRhPjwvc2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K ================================================ FILE: providertests/testdata/onelogin/olgn09_response_99.b64 ================================================ PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu MDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ RD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv bnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg ICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAg ICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9 InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAg IEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5 Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNh bWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJv dG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVz OnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8 c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6 YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMx ODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIz OjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAg ICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4K ICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w Om5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9 InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAu bm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1s bnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAg ICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5h bWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlE PgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNp czpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1 YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMz MDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0 dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAg ICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3Vi amVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6 MDk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTct MDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1s Mj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxz YW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNl Pmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2 Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0 aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0 ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz NDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6 c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg ICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4 dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3Jk UHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAg ICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4K ICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6 bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0 ZSBOYW1lPSJnaXZlbk5hbWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm1h dD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmll ZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6 Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5z dGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9Inhz OnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwy OkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FN TDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1s MjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hl bWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRw Oi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRy aWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxz YW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1 bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6 eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT Y2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNp OnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAg ICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAw MS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6 eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwv c2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFs dWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcv MjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAg ICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3Rh dGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo= ================================================ FILE: providertests/testdata/onelogin/sp.encryption.cert ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAOvpZtJNtQ/rMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgxNDAxNDg1N1oY DzIxMTYwMzA4MDE0ODU3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfUlciwDPCJ 9JXy1NsxKfqyOfLQXFKKGgNKKRLzLAWO43GgQYrV67QaAny5LvgOa81KQOX4IvjJ y0nd/VrO6jG9pTdMR9vFHT0Tu3W1QUsyPPSQqpKXwb2ZCSXNghYD5gBrNtmOxAOs 1Azx5qmIzBJ4F0RkRivcdbXSfBUBLpCn1M285c4tk5SEvoRgBeisLJJDB7hmylA1 V6/+BN+N6b3M+ZZG//CTvOjJKgnwkMALzXbPbQWa0kpbMLDMz8Kr2pODLKb3rGmd f4P6A9aA41k6L4clTsNdcK7ZwJ2fGF79WGzE6RLyBX2US3gPHUXt/WMQZXyULO3e xiTDsQXWFf8CAwEAAaMPMA0wCwYDVR0PBAQDAgQQMA0GCSqGSIb3DQEBCwUAA4IB AQB3fQZz2qNAo/wohPNaR2uAakLt25cKrsbgn3XwO+X+DRH4nqMSZkHdLGr82xD3 i33BLSQwXzFecEN+CA8SlpNoIXHwk6D6V3uEBSjKemZtJFCJqe8d+5qt3GV50AKm tEt2Nc7B94TN8xB5EmZladnTJWcBgSuuz1hLXQQ02dJ3dDq8FMlyR70S2DTtuPu0 i2/f6KtrlmmNsU24Aq+fCzEG43NqShOMeM5rDxLsSJCtjfMRwG8YeyNf6cCMSMxY AJfrTyj+AS8RtZQNGF7tX+exEWHOf1C9CBzHtKRClBRL6zDjlpPCIDwcMFi8NXva iVclxIq3XdfqxiGBBEldkhgZ -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/onelogin/sp.encryption.key ================================================ -----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn1JXIsAzwifSV 8tTbMSn6sjny0FxSihoDSikS8ywFjuNxoEGK1eu0GgJ8uS74DmvNSkDl+CL4yctJ 3f1azuoxvaU3TEfbxR09E7t1tUFLMjz0kKqSl8G9mQklzYIWA+YAazbZjsQDrNQM 8eapiMwSeBdEZEYr3HW10nwVAS6Qp9TNvOXOLZOUhL6EYAXorCySQwe4ZspQNVev /gTfjem9zPmWRv/wk7zoySoJ8JDAC812z20FmtJKWzCwzM/Cq9qTgyym96xpnX+D +gPWgONZOi+HJU7DXXCu2cCdnxhe/VhsxOkS8gV9lEt4Dx1F7f1jEGV8lCzt3sYk w7EF1hX/AgMBAAECggEATD8qZWiGGGm0csNFrOdjGQALj6LVrrILK19v1aogX84Q yrhxzm9ti/8dDijbi9qRY0zOuyvGR5z1/HMb/Ttv7nUoMD05kEC3Dd5/FfTo2w7R 3pIyzDKh1E9IdqIs7W+L+Li8zI4twzWriM4FaxQ5ElL4zxt3PcoEuDwOH0TQMOsy P2gLEhzzkFp7TRoKzR87sM6lXoERsGKh7XNWjjS15/w+XHMaDverOOALwWDbv32N UCdVSAGBx4Ic4mZuJv+e3MH2SAja0J6NLMzCMtrzmfcgVECykMnELi1XftZYbgD+ KulSvHuamygS4KJppnAdly8950C8CxI7fp9QJV/8UQKBgQDUaT68z9e203L/XATr sa9CgZodWvjrLH7a2e5EvUPq8slmg2VqEYNjHzP4rCoOcLul6TwrlNInxqTIkIPR mRxBSrG24azfGRrOs34IMTXgqfMVVxbcSVK8OijHs94NTwYrRjMXeaAOnKjPH484 DALrEoEGcrjXmDDKBV9rb+a5XQKBgQDKRVkUvCoILjsA3jG6qaKBwKSZBFla2o6x YxgOZdeSG2NEuMt74yRHjgV6iogpvw9i/FSY9TAaZsoX0L3I5LWRtwEi3iXtEC9X qFlS9EPr9encpdd2vu1O6aWXW4IlUWbu3ecdb5UAxu44ObUQS6HiXEfcK8vufF5l WyilXNerCwKBgAMYYYSo1rDgVe2orp2soiwq7U7+M2Bh7ptLz7AKvgGfdhXbVk/8 X1jDbKN0BszdEa7yPiE4cvOHboFJsdINFB9TclGC6lz55a0banu+E9XpRBSMh1XA b8c0ZcG7OkIhY6qfxEDUUePEnqUeBZ1Ad45rX5vzcgQaQKPA/kn3gHo1AoGAU/05 wSdk2KLBs1mQEq9PoEsqzbMFm3k3WScJnSjiu3ON48JMFDQ8I04wrjKJ2bPRIswe IKlnAP9/mSX/OETntArmeOD/pJFc5ywrcwukjH0/T3S5pEAhb+wK629++hn0AOm5 hvqHR5xS3JvxuEN/g+vHlv/EnVGdLL8OgKOtlgMCgYBU/5WF/7dr89uYzjiBvedh HQCgwd+8aSs+raY5eTzJrJgqVbEMoxhco1GWzWYUjDVw88Y63k+fqIf1DQJFkWFi 9T1nppVDeofoLDLTrh/2oTAHIM2QL6kWwoHiD7b/scF5z/rC21KqobqroAh2R0CP J2waRoJgqT+P15Lq3PEcSA== -----END PRIVATE KEY----- ================================================ FILE: providertests/testdata/onelogin/sp.signing.cert ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAKHPtM2MqZxXMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY DzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWw8EP/dSG0 yy7cL2sQvcRqiTrsVCWzQ5SGgZNGbFJXq36pshZ21H7gFPI/K2n6m4I3vNMCQtRJ JwfjyrPbuXpVaTMcmg8J3PGUVzaab+dZ28EQ7V9HEnzcVbEgu87xY/SB6SCiJbdI COZWlsgLUkgZS9CFkw5q6i29nL6nSZw/MmNr1hjJWvVvs1KwnGjB2aF6wYBQKKsY GxfZTJqKKBGXwIB5qnaWpVQgP6+H/84YCHLUEKk1hgh9AnR1xNVE6e64clcAE+O/ HWDS6QW658TJsw18TapzVbiUGou4TlxJZqEuJv3BfPX3EMsnp0uRurMtwgyzI/ZP CCHxSMJs4xECAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB AQBRwSaE1AnhZU/GzMngLSG6WsOp1NksoEHZsJoIKxUJWdMj9s0Pb/QSGg/W/2UU CREt6xBd9rh3jv17AwH6+IAvq/zQn36UtOE0/0v85Tp/I6t8v96cTjkEgDHBWSqw qfPvnrokKUpDRv1cxCL0qh4oW7selKkI0VpZOgpKm87oi6POQJ/KOMfcewlH+DXt zN3Es8Xp8BAfRRIEk7i3PqZSrhWUguQgCOAOvkb0tGuPDsFLLJJBML7B7aYrS1Kw EyuowZiDCDSk49KpGOmKYv2ocIG65gr7+am/l2NN+6cxuCf/o9H8UL8qm0LUJdgh 5sVa0DJzIcuOjWsp2QxqTjr/ -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/onelogin/sp.signing.key ================================================ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1sPBD/3UhtMsu 3C9rEL3Eaok67FQls0OUhoGTRmxSV6t+qbIWdtR+4BTyPytp+puCN7zTAkLUSScH 48qz27l6VWkzHJoPCdzxlFc2mm/nWdvBEO1fRxJ83FWxILvO8WP0gekgoiW3SAjm VpbIC1JIGUvQhZMOauotvZy+p0mcPzJja9YYyVr1b7NSsJxowdmhesGAUCirGBsX 2UyaiigRl8CAeap2lqVUID+vh//OGAhy1BCpNYYIfQJ0dcTVROnuuHJXABPjvx1g 0ukFuufEybMNfE2qc1W4lBqLuE5cSWahLib9wXz19xDLJ6dLkbqzLcIMsyP2Twgh 8UjCbOMRAgMBAAECggEAA/py2FpQm0NVK5qAo0yDizh19sdT9FtfgHINhkcFeiwX Qje/AYTqlDid3MwLTE/Dde94f/pNsk5Dv4V6W8PU5NvX6NmYefnST6va2QQ6rQsn p6uSNwLcYcWFTtKTqi1Y7fKmQyOpxcCbCUgeFxVAYPnE0jUKikdHB2dedkI9d2FV ZMSBAlNp5NQQTTojjdvfa3yxFqB/5Gh+tZZnnXm0BmtSHjWvXnpi62Nz8LHtKwtO qzS6650vhbC8GyuILeBkEa0Zvw2aUhRI0grCjWsbXJT66FrV+pIElOAQvyHP6hlX zC43ODdXSiFogVkF07umlqmopv4gDLgst8fjY61VfQKBgQDpVytmVrNXI9A2uDv/ 0RhCZpmBMgz8o3OQY0KRtZqupeVUGCTKk0zNqxsvUg31fa+DLYu+fYUDRVy58ST7 vTiXjKYllWY5LAacsqtA/1E4BghOuYfU12tGJcOUM1TZNkQ/s2to/fDL0HTjYX6T STqxoyg9zCnSYpF+u7gj91QuywKBgQDHVcUGiL69Tws3J6riKvFBtqrqcJaRu5OS t/U+kqM1m5/GOaBpZyropeusQgb/nZHIE/lEur7CHYcTi8PKF2lGxnqWOn31LVrc rM11r2pweDpCBBQqytNoE9vUzgfueXbPPgl+l1pTDA02u6EE45IHC1bPPbjDx29/ xhfAykD+EwKBgQCrVA3Rvqc/vFQNWYj0dJrTZnIfophWh806nycpxaYlxjl0XaXl 9/HUsWXsgNsu/XH5Z1/MJm2b0TocbSsyi+UZoXP89I1yPRk9xRJpTw5bjFJdO2y4 otNpViEcl/Qc6PODskGTfaFohU7OBa/ihUpLU/kgJuAuUaFy5HJ4NgnhsQKBgQCm q/K4SfKiu8r27TYXMizT83bp3AYqCJuWHDb1gQryshNgXaLhPyBDsyhhuju70/an Qvw0GamTCbl+AGlPO1ANm7u4jWPwc2H8DoklE+196SldNaffOASYi7JON4+uOOW8 13R84vTlZ7hMwYobWmUperO1STiKiuGSBwKpcvPw/QKBgBgqByvETHwewxnYoIsp yn3Fz1KM7MMnRil2sXVTdpS6lpF+iGs7iXc8sBnWKxFFQWnvvx6VvhXw6lCCnEQX 3LH177jH+s0jVQgD+YZLnYDBF347tU7W/dPz5Df7hgmuQhOU/UV9ihm4udutRFbR 4fd3j6wIcv2MZ0iDUVJ0UFYr -----END PRIVATE KEY----- ================================================ FILE: providertests/testdata/onelogin_cert.pem ================================================ -----BEGIN CERTIFICATE----- MIIEJjCCAw6gAwIBAgIUOHrykO4ce1TbjvGgXXVVnR4NsqMwDQYJKoZIhvcNAQEF BQAwXTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDExhdW5jaERhcmtseTEVMBMGA1UE CwwMT25lTG9naW4gSWRQMSAwHgYDVQQDDBdPbmVMb2dpbiBBY2NvdW50IDEwMjEy NzAeFw0xNzAzMDYwMjQ2NTNaFw0yMjAzMDcwMjQ2NTNaMF0xCzAJBgNVBAYTAlVT MRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEg MB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjcwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQCaJ02AnJe5vq+zzkmrIHhRy8V/UxJogbJGEJW6nqrE mO7Q4sXO7dLIKxGccCEz0KAavGKWzSX9uhVvKpazpD4bW80wPQIgFxN3CjiA3qlY Ifhhh4emSZo2AnaTuG4BPVGFNPx0jxXGAhh/3xkpIsqARJFPB6njT2+MwFctm3fo ckx3Yp4e1xoUD8qQR0f/8oq1LjrYd2Vlckmmw7qrzSqS8POHW/I1jx9Y/vAjTPWD KXmbmLcTe3188PDrthSyoBuaAGBRVTP9WTuYMh4kGvmfX6sNvIDGejUcUCq6IObR r4xLSZiGy5uoyqsQc9agAhQm+26Gpq0R3NSvN91JdbZHAgMBAAGjgd0wgdowDAYD VR0TAQH/BAIwADAdBgNVHQ4EFgQUnbxBsHgNVq3OSXEuG5EkR0Jd1UswgZoGA1Ud IwSBkjCBj4AUnbxBsHgNVq3OSXEuG5EkR0Jd1UuhYaRfMF0xCzAJBgNVBAYTAlVT MRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEg MB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjeCFDh68pDuHHtU247xoF11 VZ0eDbKjMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAL/6j2qpM CrnolwKT7mfPEpA6btbtl0R0t6zSwYUVU9T3PK0/P3LKXvbjSySov0E4R9d5qlOc yj5CbYiuqAO2aON3xy82s0dN3FHRiO6kcjoRPwVIIF0S8x7tpzcPKa42zSPfBqMR w4ezUEzTijFriepkSWST1Btr3QeK2Cxhr0fC1xmw/YK82BV0/oVRslGL27ro+v3/ dNY0A0r32Xe2+THomrY/YaZaDCPCjHo8dlxrX3D/mPfoiiKSkm2mGagQXT0giTHV o3oIq+u+KdrBcQn65EBcjfFKDIeFCdiVmO0xPl9mmWskVRLy2/wpuDIp6hnAphl9 lj5DY48eBsrEXQ== -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/onelogin_response.xml ================================================ https://app.onelogin.com/saml/metadata/634027https://app.onelogin.com/saml/metadata/634027gd5V090n/m4JRrtpo5WgrwPyyy0=SLzvdNM+1R1+3XsXpC+/RIvb5L4Lhy7Eb7caPG2CLMPYhzbKLAwIiT7/0fEMO/xL7rdIgEShbcU9iu5PX4hGYBhirsFIZvdHytns5+JKHnlVBmHm4TsSU1z+dGMXBa//L0KFSrvdgBUpsr5vs50SuYnnVp61VN+zCLMqO221CQfP95QyMcSQ+fiyq4GOmWLwQy1m1+NV3U8zlapp6FIH5stW/dp4OqpRdafV96rVwmmR4yeUw7VAzbJuMrPgkXO9nUbHeMUTgQxkQ4ThzG5jt6fT+Ro1NOYS4zpVtzqlQwGzqWxQVRLEqXIf500/Qi0NuFQOW42ZAUiXDgdLENTVGA==MIIEJjCCAw6gAwIBAgIUOHrykO4ce1TbjvGgXXVVnR4NsqMwDQYJKoZIhvcNAQEFBQAwXTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDExhdW5jaERhcmtseTEVMBMGA1UECwwMT25lTG9naW4gSWRQMSAwHgYDVQQDDBdPbmVMb2dpbiBBY2NvdW50IDEwMjEyNzAeFw0xNzAzMDYwMjQ2NTNaFw0yMjAzMDcwMjQ2NTNaMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaJ02AnJe5vq+zzkmrIHhRy8V/UxJogbJGEJW6nqrEmO7Q4sXO7dLIKxGccCEz0KAavGKWzSX9uhVvKpazpD4bW80wPQIgFxN3CjiA3qlYIfhhh4emSZo2AnaTuG4BPVGFNPx0jxXGAhh/3xkpIsqARJFPB6njT2+MwFctm3fockx3Yp4e1xoUD8qQR0f/8oq1LjrYd2Vlckmmw7qrzSqS8POHW/I1jx9Y/vAjTPWDKXmbmLcTe3188PDrthSyoBuaAGBRVTP9WTuYMh4kGvmfX6sNvIDGejUcUCq6IObRr4xLSZiGy5uoyqsQc9agAhQm+26Gpq0R3NSvN91JdbZHAgMBAAGjgd0wgdowDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUnbxBsHgNVq3OSXEuG5EkR0Jd1UswgZoGA1UdIwSBkjCBj4AUnbxBsHgNVq3OSXEuG5EkR0Jd1UuhYaRfMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjeCFDh68pDuHHtU247xoF11VZ0eDbKjMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAL/6j2qpMCrnolwKT7mfPEpA6btbtl0R0t6zSwYUVU9T3PK0/P3LKXvbjSySov0E4R9d5qlOcyj5CbYiuqAO2aON3xy82s0dN3FHRiO6kcjoRPwVIIF0S8x7tpzcPKa42zSPfBqMRw4ezUEzTijFriepkSWST1Btr3QeK2Cxhr0fC1xmw/YK82BV0/oVRslGL27ro+v3/dNY0A0r32Xe2+THomrY/YaZaDCPCjHo8dlxrX3D/mPfoiiKSkm2mGagQXT0giTHVo3oIq+u+KdrBcQn65EBcjfFKDIeFCdiVmO0xPl9mmWskVRLy2/wpuDIp6hnAphl9lj5DY48eBsrEXQ==arun@launchdarkly.com{audience}urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport ================================================ FILE: providertests/testdata/pingfed/idp.signing.cert ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAMQeWnDJVaTyMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY DzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOwVVXE67dWF WQGnFyWLQyaAqco+hargHNq5DWTiQM5EG1GELt5QqW7XQJwgwfIHic7zMBDU13F6 IUrh310gNm0Nygg7DWEREBNZvTdjg999pbRyt5IgeihKh5NEwpH9TGXnbow8QjI7 9AqsB9Irn0fEuLKb1KOF0EMt5XqJnW2oqJrvTdYeGoi7Ckpg9J986XMqLMp48Gd9 /ATo83GHsO7w+NKs0mAxB/Tffh6hrbILtMVMENQB6lv3dIrdmQqPGJ120xO6dmHq LTj+tNSjhkznSKXBDHT/7vGt3Ra38P6mGCKrDAloAz2XdXJcdiY57PxeQvc0zwRt JtOxphA5WHMCAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB AQAQ2P9aUBaM1kC0XJF86A4aYkqRVuyspJT6+DOYA/pcifZ3zhpXPe2+TY2gKsGk qfYma7ch6dq4zVErFMwkn8qM7PD1knK/P8SZuUPC3LTH3ETH+beb1lM9NICOItkh u7RIwwwwhAZKP52/Ww0F59PCv1SPZJ1NkF8XWak4Df8l4un4xsX1jcFkFlUxCDh6 simdFOK3ibMHUZxyGbvK/MwJfKQmMcjo/fIaukv1/2tKXnilSDhQS1161yiX7ooF dD+y55KaGF5O50K/9DW30E9ZgrSDltD/6aGt17VrX5wnkoUb68CqYfUrRjhpbPYI LGu96alI6+eLeIwZKpKSbMj4 -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/pingfed/pfed11_response_01.b64 ================================================ PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9Ik95RHVjOFZPX1Y2UGZlLUMuNHlYQzJoS0xRMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAyVDAwOjEyOjA2LjUwNVoiIEluUmVzcG9uc2VUbz0iXzI3MjQyYTI3LTlhZWEtNDBkNi1iNjAzLWMxZDZkYWExOThkNCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CjxkczpTaWduZWRJbmZvPgo8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPgo8ZHM6UmVmZXJlbmNlIFVSST0iI095RHVjOFZPX1Y2UGZlLUMuNHlYQzJoS0xRMCI+CjxkczpUcmFuc2Zvcm1zPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8L2RzOlRyYW5zZm9ybXM+CjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KPGRzOkRpZ2VzdFZhbHVlPnhOWFB0dHJ4VGxRWU8waHdRaFIvTHA2dUl1Y1cvc3p2WnNzb2VSTGpLdGM9PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgpQaDI3bVhCbGlWa0pLMTBGVUFtQ0pPZmpuRVpnVWQ1WVdzcFdnSXdBNEVweUVuRzNhS2VTZFR2aHc3M3VVblVsNnVRM2JOMkRwT3JOCjV3OVV6aG9FQnF1SjI4WG0yVVpGb2gwaklMK2craW53TnRPR21tRHRVWkhuL3ZWVUl0QXk3RCtlVjJKY0tpaG1PalRNNHoybUVvYlUKakdTQWJLZmpUMCt5MXJDODZGdmZlNUwrZWpuZkNxYm8vQndqV2pzdi8xUHRNLzlJdTR2OEYxYVY2OFJqRUxQbHRzVkt0QUU5RHlycgpUYjhxSmV3QXFwUVUyUmZSY2FQdXYvSUFNRzdWZUxzU2xuK1p0NjZxUS9VN3l2S0ZYOGhvNFJiZndsMFZEelZvaWhJWk9SVjNYRjd5CmxKcUhuZklFYUo2Y3JHak5aYktoNmVLUmFXZHRFcXZLTFpiSzFBPT0KPC9kczpTaWduYXR1cmVWYWx1ZT4KPC9kczpTaWduYXR1cmU+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJ2aC1TSGtrZVBqcVplRzduNkpDZEhPMG96RVQiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0wMlQwMDoxMjowNi41MTZaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL3NhbWwudGVzdC5ub3BlOjkwMzEvZWlkL3N4cG1yaGJrem48L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5maXJzdGxhc3RAc2FtbC50ZXN0Lm5vcGU8L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgTm90T25PckFmdGVyPSIyMDE3LTA5LTAyVDAwOjE3OjA2LjUxNloiIEluUmVzcG9uc2VUbz0iXzI3MjQyYTI3LTlhZWEtNDBkNi1iNjAzLWMxZDZkYWExOThkNCIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA5LTAyVDAwOjA3OjA2LjUxNloiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOS0wMlQwMDoxNzowNi41MTZaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL2hwMjRkcW5wdnE8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgU2Vzc2lvbkluZGV4PSJ2aC1TSGtrZVBqcVplRzduNkpDZEhPMG96RVQiIEF1dGhuSW5zdGFudD0iMjAxNy0wOS0wMlQwMDoxMjowNi4wMDBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJmaXJzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Rmlyc3Q8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+cmVkLGdyZWVuLGJsdWU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibGFzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+TGFzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/pingfed/pfed11_response_02.b64 ================================================ PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9Im9vTWpNTUpMTTl2RDZPSTRGbG4xejh5X3lodSIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAyVDIzOjUwOjA4LjQ2NVoiIEluUmVzcG9uc2VUbz0iXzMxNWFiMTczLTk5MmEtNGMxYi1iOTlhLWZhY2NmZDhlY2VhMCIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJpXy5uS3hPR1I1LWp0RjF2UFpwVDVjZnNpMWMiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0wMlQyMzo1MDowOC40NjlaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL3NhbWwudGVzdC5ub3BlOjkwMzEvZWlkL3N4cG1yaGJrem48L3NhbWw6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8ZHM6U2lnbmVkSW5mbz4KPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz4KPGRzOlJlZmVyZW5jZSBVUkk9IiNpXy5uS3hPR1I1LWp0RjF2UFpwVDVjZnNpMWMiPgo8ZHM6VHJhbnNmb3Jtcz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPC9kczpUcmFuc2Zvcm1zPgo8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+CjxkczpEaWdlc3RWYWx1ZT5XdytiMy9jbXQvYW1tTk8yaVhpd3BJTU5EbFVXN0NRZzZJVUJraW5pcTZBPTwvZHM6RGlnZXN0VmFsdWU+CjwvZHM6UmVmZXJlbmNlPgo8L2RzOlNpZ25lZEluZm8+CjxkczpTaWduYXR1cmVWYWx1ZT4KSjR6UFNsb3hudkR2QjJYelduNXZ1dXpoejRFbUVxcU9sMlI5ODc4dXowMW5kNTJqOCsxMjhqdzRaSDVnUzJFTCtLSFVRQXlTZlNFMQoybnhoR3UzOHpkVHE1NkE1RTRYU2R0azlaSWVrcDduOEVJMFRwYTR1bHpHalNaTy92N1crYkVNL2hDMk4veGhUaVhFWnF0N2p6WVI1ClhXdTNkbUtnNEphVVNZQTBDU3VMb25NRG5uM1ozQVpRQVF3VWpOaDVYU3FXaFBwYW9xRmtVcHRKSnFWa2srT2xEcXpvQUNFY0M3cXEKUUJBZzdUaFpvQ1cyVDBlR2lLdjNuaXc1c0psU2FuQytuajlaWExYa21JTllxWTMva3E4Q1U5ZU44NmxYNWlDbTQvYlZzNHdMNndWMQpTZTUxb1VaZDh5RDlYOENuaVBKT1FWdnBDK1pnTldkWVExMGlEZz09CjwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPgo8ZHM6WDUwOURhdGE+CjxkczpYNTA5Q2VydGlmaWNhdGU+Ck1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXcKRVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaApiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHCkV3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWUQKVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNgo3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnCk5tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YKMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTAp0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYCmRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUIKQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbQphN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvCld3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW0KTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWcgpYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQKPC9kczpYNTA5Q2VydGlmaWNhdGU+CjwvZHM6WDUwOURhdGE+CjwvZHM6S2V5SW5mbz4KPC9kczpTaWduYXR1cmU+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPmZpcnN0bGFzdEBzYW1sLnRlc3Qubm9wZTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ocDI0ZHFucHZxIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDktMDJUMjM6NTU6MDguNDY5WiIgSW5SZXNwb25zZVRvPSJfMzE1YWIxNzMtOTkyYS00YzFiLWI5OWEtZmFjY2ZkOGVjZWEwIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDktMDJUMjM6NDU6MDguNDY5WiIgTm90T25PckFmdGVyPSIyMDE3LTA5LTAyVDIzOjU1OjA4LjQ2OVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvaHAyNGRxbnB2cTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBTZXNzaW9uSW5kZXg9ImlfLm5LeE9HUjUtanRGMXZQWnBUNWNmc2kxYyIgQXV0aG5JbnN0YW50PSIyMDE3LTA5LTAyVDIzOjUwOjA4LjAwMFoiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlIE5hbWU9ImZpcnN0bmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj5GaXJzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj5yZWQsZ3JlZW4sYmx1ZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJsYXN0bmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj5MYXN0PC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+ ================================================ FILE: providertests/testdata/pingfed/pfed11_response_03.b64 ================================================ PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9IlZfbGJUdjVhbUJOM1dSeFU1c2ZDLl9RT0F1ViIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAxVDIxOjI0OjQ2LjI2OFoiIEluUmVzcG9uc2VUbz0iXzVmZjRlZDIzLWJmMjItNDI4Ny04NWEzLThiNjQ5NDhhZDlmMCIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJYOXl4Y1NETFlneDktWnVicThkcEJRV2NlLWIiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0wMVQyMToyNDo0Ni4yOThaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL3NhbWwudGVzdC5ub3BlOjkwMzEvZWlkL3N4cG1yaGJrem48L3NhbWw6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8ZHM6U2lnbmVkSW5mbz4KPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz4KPGRzOlJlZmVyZW5jZSBVUkk9IiNYOXl4Y1NETFlneDktWnVicThkcEJRV2NlLWIiPgo8ZHM6VHJhbnNmb3Jtcz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPC9kczpUcmFuc2Zvcm1zPgo8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+CjxkczpEaWdlc3RWYWx1ZT55eVA1d214WitGODZ2dUdnOUdPZzRqeGNFYWUzSW1RclFZOGxWb3BaajNJPTwvZHM6RGlnZXN0VmFsdWU+CjwvZHM6UmVmZXJlbmNlPgo8L2RzOlNpZ25lZEluZm8+CjxkczpTaWduYXR1cmVWYWx1ZT4KNElPdVpzYlEyYlNXa2Z4cXRDTEs5a1M0a1NGOGFiYTJZc1YrZ3JobGJ6NU1MeC85OWczREF0cHVleFFlZ0NGWWxXOEJIWStsaE1DVwp5cXkyTENwY1lDdzBLRnZwa0hybjZPaVVTWCtoOVhCM3dQZ29LRU5OOXBOMmo5c0ZkSWNPWkNBT0JadWI5eUVZRHhLWEUrOXNzTVY5CnZMcWl6bWxmbDFza1lqUVJKYUhEdEhldGN2UkM2VFdod1hLSmwxdWIwbHgyRmhtaUZidGZlOEcxTkNoWmNGSDNCejJKWTJjUXk0d2wKOCtjejAvUmpPVWVIMDhBT1VJdnBWVVRBSnZZM0s2dTdRekNEelU2czdrT1F4UE54K0tnZk9uQ1hETURwaEpNd3RDQkdmSGs4ZG4wTApHOUxSYmlZamwrUDcyUndtTm9Kd3NjRlE4RlErVjhiWmNDZ1Q3QT09CjwvZHM6U2lnbmF0dXJlVmFsdWU+CjwvZHM6U2lnbmF0dXJlPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5maXJzdGxhc3RAc2FtbC50ZXN0Lm5vcGU8L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgTm90T25PckFmdGVyPSIyMDE3LTA5LTAxVDIxOjI5OjQ2LjMwMVoiIEluUmVzcG9uc2VUbz0iXzVmZjRlZDIzLWJmMjItNDI4Ny04NWEzLThiNjQ5NDhhZDlmMCIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA5LTAxVDIxOjE5OjQ2LjMwMVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOS0wMVQyMToyOTo0Ni4zMDFaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL2hwMjRkcW5wdnE8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgU2Vzc2lvbkluZGV4PSJYOXl4Y1NETFlneDktWnVicThkcEJRV2NlLWIiIEF1dGhuSW5zdGFudD0iMjAxNy0wOS0wMVQyMToyNDo0Ni4wMDBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJmaXJzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Rmlyc3Q8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+cmVkLGdyZWVuLGJsdWU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibGFzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+TGFzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/pingfed/pfed11_response_05.b64 ================================================ PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9IlZlRHIxRlRIZDZtdEZUSmlmUFN1SDRZSlRQRiIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAzVDAxOjIyOjU3LjU5NFoiIEluUmVzcG9uc2VUbz0iX2Y3NmMwZWVkLTUwMjMtNGQ4Mi05YzJlLTNiYjc2MDk5N2ZkMSIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CjxkczpTaWduZWRJbmZvPgo8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPgo8ZHM6UmVmZXJlbmNlIFVSST0iI1ZlRHIxRlRIZDZtdEZUSmlmUFN1SDRZSlRQRiI+CjxkczpUcmFuc2Zvcm1zPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8L2RzOlRyYW5zZm9ybXM+CjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KPGRzOkRpZ2VzdFZhbHVlPklLeGZPdUwzTW1ja1VpMXRYUU5YRmp3cDhNOWR0WlNPUE44cWtmLzJKeXc9PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgp6dW94cjFscnFDL01VMUo0OEFEV1EzV3huY1NCMmFqRGlyME9WQUpYZGx1MVl6MWQvMEkzc1JKK2JSc2pWWUdkTGhUYUNGdEY3T09XCms2RUs5SVl2M3BJZU5mZHJNRnFDVU1rZkU2cTFDZzRUTGl1NjBjQ2xsZERZQlp0cTQrc0tPQkIwWnVZSkpaRy9WaUtHS2FYUWtMdjcKT0NrOUprQkJmVE5USjFyK1E0ajJ3NWY4eWJScjZ4VG9wUUppeVkwRmNCZm9sRVNiVkdOT29yVTRDMHZGdU52QTVDeUUrenpPTW85NApqd29XcTlTVURQRlV6QWo4R2tlUWhXYVZPS3lXUkZ4Rm5sNG9iRnpnREtZcVZXWkUwYUNqdzVmNFZWSUMyYU4ySHFwVjUzVTYrcWNjCk1kY1VXRDM1WmRjNG4xSGdra0hvQUJWNEl6OFZGRFJCL0FsM0dBPT0KPC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+CjxkczpYNTA5RGF0YT4KPGRzOlg1MDlDZXJ0aWZpY2F0ZT4KTUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNdwpFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oCmJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUcKRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRApWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2CjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGcKTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRgowRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMCnRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlgKZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQgpDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltCmE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi8KV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbQpNY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyClg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNAo8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KPC9kczpYNTA5RGF0YT4KPC9kczpLZXlJbmZvPgo8L2RzOlNpZ25hdHVyZT48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpFbmNyeXB0ZWRBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHhlbmM6RW5jcnlwdGVkRGF0YSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+PGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8eGVuYzpFbmNyeXB0ZWRLZXk+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIi8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5LZzNNaEVZaVBsN1l4TnU4N3BIbEVBM3RFUlFGQ0dIVC9HYmpYaU5RV2gvc2EyNkxFSGNiazBOVURMNkpNaVAvRjhEK3EwMkUyWEhyCmIzU0pxTWNtZmxodGVhK1lFemZpQmZ2d0w1aFZrQ2xBd1AvVDhrSnlGZmtJakhnUDNiQ1BWNWZFOVZZNWpWQWFLTlJxSjFXbVZERmMKaldNVHFrQm5jOFdCNGhkUEk5TnYwWHhpaXBjVS95WG1maUpjOFBGT0doNmJ4LzBaU1ZQeTJ3SE92R1JKTnArUXljUG5UVWNVNU1ZQgorMStxSkJVRldueFdEMzlxZGRsVEVCdkVZdC9YTlJ2VmdPOFMxdEN1bk9wcVhhNkc1UkE3ZWhLZ3psM0VkdDIxRDZnc1RnRmFLRVhpCnBtYlZWUytxMGZMbnlGNVI5YzNxU2FzL3B2RlZGN1Z5NmkxM3h3PT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZEtleT48L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT53WDF0UTY4SndFaXJsTXo3Y0xka0pnbjI5NXFoSFNrOHMvWGlaV0FlRHpGRndQejI5cXcwRkN4SDZTYm9rNEJQcThnWG9LRWpDdnB6CkxBUzNTNUZ2TSs0dDVJVDhENmZUYWZRcVZVcHFwTzZIbktmbDM1R0h1VnpZWW1JSUwzeFprRC95SVh1bGV4QW1sUUZreUszalY1cm0KbXdMclp6T2I4Y2hvNW1YOHQ5WENKZUdJTG5vUlVhT0Y5WEJzbTYvbkk0dEoydktzMmdWeEZBM0JiekRISkl6T3loanFEOHdmeDFzaAo5ckc3L251VS9oU1JVbGxOdnBiZjRPQW5ZcTduRXhOQk5NbTVCZUhlVnY1eEtuS1VOaVVqNk04WnA4elkyT3lISWxKTUZXc21sTWNLCkk0Z3BMQVRsOTR6blQyQUlKemc0cXpDYXBkM1pGa2V2ajBNN09jNWQzK3paRjg5eU5SUTRxeVg0MlFSbFZoUDV4UHhRd3BUNHFJVVoKNHo1Q0ludGI3azN6SGF5aUxUbXBGSjc4K3ovREZrWDFYT2NLNCtlZHZaSWVJQWFiZFBRZWNCaS9CWXJlbVVQTFdRZjNLZkFkcGw2KwpzdlhKVHRQcU9JRTVKMWd1THpUZXRjQ1ZNelc0cXMwcDRwM2dKVVh3eWYvK1VncFRLbUpKYlQwWUVxR2VobSt0d2p4Y3l6VXJlZ1FsCnMzN3J3d3JFaVRhaE0vVTNlSitDeXU0SWRMeWpncktiWS9NVSt4Z013T2VwMEoxOUVhSUt0QVdPb3JydUJZamF1T2M1OWw4SEtBNncKTENWQzJVdTFYY2F4dlN0U2ZYbXpXNWU5SkwvTmdOTXU4dklrMldpdHNaK01jVDdjZTdQU0t6eTdSNTU1akg0UlRGWTcvUHpqbDFnVgpwZTh0bXAwTnl0aFNLZTZwYUxwVzQ3VGJKZXdYVS9wQVFuMHZuaDhjWFd5cFdrN25uTkVqSHFFNitQNzlaczBXeGJVRjVkY0t5bW5BCnVCK0h5V3JDQjVUNnpiVTRwV0F5c0tOTWZLRUZNTEdiblJoU1g2S2JmTFJEZDRUR0VGVnRYNk9FK21peFBUNHRNUHpiOU4wa1lWY2sKcHpsTGU0dEI3UGtlNnZRbXV3TG9FUmZVckxoWXV4MFBkZlNHYW5Va3pJZmc0MjVMRVdHd1AwUjJIdnVmTWsvamQ5MEZwbXAwY3FrSgpERXl2bnU0Z0s3K2U2SXo4Q0pQMVI2WVBibnhXQjArOW1kSmhXTXZwRzVRcmNpeW5PWXRsdWRKcjVWVTg3T3JkVkFEZjI1azVkYUh3CmFCVzdCZnZ2S0pIK3NNUXJCRUNWK0dJUlh4RXpsS2JFbUpTQVBtQmxvdVJVb3d5ZmlzL0dHV3ZXMnFJRXNrNlJ1eFdpbVc4VWFqbzMKMStlWUd2SFZBTlNFeEQ1dXFrYXdVWFBPNVNuNEVPT0VOM1dTMDJpbU9lcXRQb1dtKy80TEc2R3liU2l0Y2tuT3JaMUlZSW1MOUxTcQorZFpkOFA5MElEdlIxZkJnOEtUYUVzeW9GYUpCVGpTSWdlNlRnNWVYMzZzeldhRDdVcjFGVWhqTzJKK21YWHRXekE0V1lhMlhYUjUxCnRlTEZJT0pBTkZ2NUN3UE0zdzJMQ092eFhwZjgxZE1WUEQ1WFBVVEUyMW80RXkxZjBtaXhtK2tGb0M1RmZGZDBDWnJGbDZNd1h2U04KQkhqMzVQUENHak94eVljWk9vL2Jxb01RNFhNNExMSXRvUGJ2UUYyNGZ1akcxek5rQVdhbDBhc0JTRzdSdmZvUk9wVGx5UHA4RGppZwpGUVFhK3NFY0FIZUZubFR5VC9zUi8zL0k0UEF3c0lGRUhyTjA3QnM1L284K3RhSW1vazBIZ2I2MERWR0FRSVg5M05STTdwVmZDbmc0CkVsSStxdnFRenBIb05CVllQTW1aSnN0MHlReTMrbTdZSFRKNFNZUG92Y1dqRzN1WW5rSGx3OVR0ZzRkTW5JcmY4Z3JxWU9LbW1tVE4KSEtmS0VNY1hpSXBQWnI3N2haYnp1REtJVWxJZHZBM05KZUVELzh3aGRaRnlsVWNHeXlYS215Tm9YY1BpMGtYcGl6dFFsZjBLZnhpOQo0MUpnRTh2K0NLRVhsK1VBKzk3TjhWYUJhWmluTVdYSk1SL2NTNkJSQ3RDRkNMcGp5TjI4RGhwdXpwNkNGTzdhc01aZms1aTNLTWszClpYN1pJUWEzZEkxSEtqdWQwWHF0bWZmVWNiNFhtdVVxL0pGSHBmN0hMZ3NwRCtBaW5oNm12T1ZPckErNjk3QXRQdDdRbzhYNUo3S1AKTVlFY24wTlk3Qno0MHdzai90OHJrdDdwWXh0WmdqcVhNcDlYQXhzczBiMFhYRTdpRWc1eVNwVHZGUElOcUlMWDdVa1FyU0VBZVNCVwpCdWFjMjd6emsxbnJsMDcrL3FabmJmS0dwaHRidFB1cjFaREpESmY5dEViWjRTb1c5bXJidGhUQnFZVGJqZ1RVb3ZNL3puOE41ZExnClE5eEtHcVp3ZHVOL2FmeXlWV0JIbDNudEpWSW5JRVdVSDBjNkMyUm9GTTdrN2Znb0Zqb0JzUFZ4dXdaNlNoRHRic2hpWmo0aFpTWEsKcmJhRUNLajd1Z2Vjck5xTDM0SUp6TGR0eVZEZktRdjJidGZveEFoK2ZlVk04WnZKcXIzY254QU1IUHdLWHRXclVwVnJNcDFubUdMVQpjeCtONGkzTmZnMkY4bmJnTnpGUmlMNUsrNkVOVXN4Qit4ZjVZSnJqaHdqSE10d0VaRVFueVZ2UWJ4bHZRbkJKN1FNdjBiOWFRN0hIClJIWWxscXVsaGJpZG5ZTlZvQ1M1TjVYK3BJWkh0ZGx1R01wSGpzaUdueTVOODk1R2hUUlNKaytrOTlsUGZOaDA4SGdJVlFWVm8reE4KblRuZU10dTJ4NWV2dFVQV3p4U3NnaTRZb0FndVl0MTVKOVFQM3Q0dFF0TnB1b2FwMVdhRVlScS9jTjRFemlZbGVsT0RtSVNaMG15VwpUekRaYVl0YjZOLzlYb3lLOUtUeDJVNkhyeG83OHVZTGhDT2tNSjNqQ0dUZENDZk44SGpqNzQwS3BwZ1BVVG9yOHg4YXA5SzB4UHhXCjV4U0NxZ2lmUGNORkZBemNINzBrOTZsYnpENEdNanVZTit6TFRIL1dRSktWLzVFcDJXbnF1ck52Uk5OdUszQ2M4aWtNcGRDZ0s0ZzkKL3FNN0ZiczF6ZHZkSHVNNzFSZ1FVcnFTNGp1TWt4THVmeEFBZ2ZGcGVHOFhTYS9LZHk4dHNsM2VJbzYzSG9MaXhCMjVXZnRTRkpTZApnWW9oYXZ3aWdKa1RVUmEwYWtnako2OC9VTElnYVdsZGhZMXZUYzEyRERjWU1tUXY0eEpqSmtGWUVIV3VzV1paczBJODlmUVF3b0xRCitkeUdLYTk1RW0wU29QRU11RjQzNkQ4VjhKOVV0TSszeFdTanRJYkZVZ1VXT1Fad2hRNVl1YnFYUlUwUFNxKzF6aC8zUVJ1N0JzRUUKTVY1OXBHajQwYkpmdWJVdVZEL0d3anBvSkpMRVJUWlJpUjZWTkl3M0VCYVkza0FBV2ErZzZKdVpEUFZ4V0lLOENWRjY3U2pQVTduYwpRTW5IcmdyMHBHdllRcTllNWRjTSt3MHFhSjJ6OGw5NDRib3I3OTBqSjduRzJaeFIrek9JMnhUUlJjanJSd0Z5blkxZjZuYTIxNkd0CmtMRkVpaXN0MGF6QXpkdXVTOTA3MGRVYlo5ZVNXRzhUaXlVM0cvZDVGR0QvdkN5SUJjWExaWjMvOFIybWMzUUNjd2pmYnRYRXB6MG8KQjBCNDVOem14cVZEL092elltYnB3QytTblN3OG5rb1cxbWtOSlRGdWlVWGxjbVUwYWdGdnFXOU05cVAwNXY0Z0NLMkU4VE9tdFI2bApJU2lUSHpkQVpZNHJFd09LVFczTGFQYjR0SnZ0cFZNTnZzd041MnRzMVF6eGFrWE94VnlRZ2pGWW41T3hKc3dqaUUyMitOZktkbDBtCmNHb2ZLaEpCMDhQUEN2bUEwZWpnS1VGbUhrQk1xU0RpOEFscnhLWjlBZ2tmUHZMSkFMVUp6YUNHNWgrcG5BdHRWaEo4dzhOUmRKUnAKRVhyNWNpcS9ESy83SVhZeHMydzlvQkN0b1NRS3NOcTdTN2gzSUl6SkNmZ0UzSWdVVW9WV2dOSWRUWmZZcWZzQUpsSnZuMjIrYVp6dgorNWFBcnU0K3BMY09aV2tvTG1ncVQ0WkFhUXdVekJlR3doQ0huRHJYZ2ZyWG13TnB2U2cySlN6TVdMTjVhVTl2ay96UjlMQzJxZTlPCkQzNnRiSFV4VUlma09ib2tIM1FQWiswdlFhejMydXovelJ5Snp2dERRR3U3eE16OHdvQUtnZWlWblNwdCtsbXV1ZlVYY2dBc3RUOWgKZnFZV0diUkFZcDJQZ2NQbzR2OFJLR2o0MHlXaEQ3d0d6L2pmL1BSYy9XWmJIQjQxb1N5Z2RzWXFhYVVBY1NFdGFMM2tvUGs1RjJPWAoydnEvT213WGlRV1pmYy81RmU5N0FjQzZwaEhjdVRscEg2eEhOVGdqamZId0FvOE5oZGQzakdPMzYyei9xRWpaZE1BVlE1U0VOSlNRCkZUKzNLMkN5empTWHpjaVcvb21rbk44NVJLRXMxWW1hWXF5WHJqM1JiZWdKMHRRY3dRd2VQWTVVeDFsdkZDNGdsSHB3Y29LK3JnUGMKY2ZUbXpCU2hrQ0hyN3VJcHEvcW5RcnNVMjR2cUtIc2ttaXptczRoNzVUZnNYYkpiWXhoa0dOMVI2OXlBZHFyUVI3YytLYjRna3dtcwpZZUk3R3BnMGljODNhSzZsOXY1bTFiZDA5ZVBsZmk1eWd1SmN2TTlVUUpBckg5YzNhYXFtUUN2UU1hMy9Fb0hpdGpZdWl1Q1VuTFJtCjlYN3gvaHc5K1lFdndoWVRBdVJlVE91WjZRdDlLQnlZOEloZVVBYTlYS09tZTMydWw2TndKZXRtdHl2NklSSEpXdFNDWUtYT0VydmQKWjNUSnlzek5ySloxUjlsZmZBSEVOaHJkK2tXc1FoSDZNeUQrbU1USnlPYm15OFBCc1lVTjBPN3ZUWHd5aTZmbkpMWlMxekhhZ1VZRwpReVZBTy82TzJVMGo0QnQrMlRncHk0Sk1EZExxU0Fsa1ZiNlJPbitKRi9hN3FyU3JtL1dOYlVsbnk4Z1BhcHBxTEZIdEgreTFheEtWCjBwdTRScmF0dWJyWTNxS2FMaTVNUUcwc0g1NmVOUzJHQXNRc2E5dXZFNlN5RnF3M3NVcUhxT2o2c1pLVkdacEdKbm5nbGcwRVBnMnEKVm9jOUExTHU0dEFOaCt0TWpuUnlrM1lKR3RMOUc3WkptRFRnL1pmOE5kQ0l6QjJWNzBOWDl1RXJjRGJKL1FmM28xb0ZXRGoyT2YzZgpkMnpVM041QWdtWTIzL09LazQ1b0VkTEdxTVpHZktzbG95L1daUGdyQjdVWkwzbjZTTzdxcjVRbTVldVp0VjhtRTdGcEg2NmZSZEhjCmd1QWhxR2FtZTJETGx2bXk5cnNKSHZQa0xXTklFOHgyTm5oSnB2cW1HanR6WDk4bGt1VWVmTU5jVUpyeXBJZS81b0dMNlJZRC9yRGsKNU9NRko5Z3RsQWFVa3lybmQrZ2hFSXZNYTREOWM0bm9rNEQrYnhWUEVRTCt3VGJzbk1qazljY0lUUnRrc0hLb0duNFgrZnJoMlAwUApHQitobUMwbXlCeUt3TGQ4YkMyNExXL1BHcHV3d2NUTCttRE5OblI1M1cvV1c4YUZ4ZXhJRk1ScGZDbi9OSnZ3MythM3BuSEVaZXhlCnpCNkxCZTFEVWxFdkd2VkxFeXJkc3FkNTVRanVUN1diQ2tpR0lUSzJRTkcycUxCbXg4alh2bjlSTmV0NDNpaTJtVFpVRzdoWE9TbEgKR1paZ2hJN0trZ0dFS1Z0WG1CRWpRM1o1dUx4Nm9RcDMyRjZ3TVVqeUtXOHBtVXVuOEI4blJ2Z3VQdjRVTy9GNzZLWXNrZDdtazY2MQorZWJaSVRGVUxoWFlFZnFUejFGU1pvWE9LQ3M2ZnVCVTFrS2dXT2NXNVZkZ2xCL0VISUF1TU1say9EaXYzTjRHaklUVU5jZ1FnQlZkCmlBcXFtVDJad3UzcG1tMGhXbmM2N0Z3K004Ylc5SVk1OSt2R2lNSjlpOVJWb2o3eTcwUG5lNW9QK2FBRldwSEJ2aWRqcmJxV1IvWHQKajJHVVVkbElUUnVaTURSRW9HMnZhbXBJYjR6ajVRdW9FTitXWUJjdTZNUmNWV1B1QnI1UVlmaUpleHZaN25kZS9tamxEY2pkdVlQcgpUbGx4bEtleWgxcVluSkdTa1NYb0ZKbWlPRHVjcDEyZHJyc1FHNnJyZkwxVjB6QWJNVGdQNVFRdmtkcWM2cDAxRzZCWXZtUnlTekNKCjRCdnBwSFhTS0VYdXVOMjA0UHhPYlNIZExrRnk3RnhHdUM0OTFzY1RiWUZDeGdkbGpwS2IzS1NhNTExSEplMW9SRkUzWVRNc3R6QUUKZmRRUU4zWWJKcG9zUFlmODkvMzR3S1NSZGlCR01URi9nM1dJdW9IdXZMS29xNEo2MStsMjJ0WVZhVnBqdU5wZkFRdlNQTjd6dVFNRgoyc3dybzVhTzJocGpKb2gwUWluS0h1MHN2VmlDazNhMWhReTR4NklkeVZlUWRTcVg3eUVLZW9ZOUU1ZTBKTlBqMmNCMXhTTEdLWVl0CldGVmJ5czVuSGxXVW5yNUswVDNkS1J1UGE3ekpSdXpTN0xNR2dQTjVWZ0FocHpqZ29DeUlZdFF0Mnk4ZE5JRDlIeFZpbkZRQ0xYNDgKc0t3eWpYYU0vWmJON2NYZUcxRjg3TUI3NHpucVhacEpZaU85SndqcVluQzc2WVJhZ1dFek1ud3p2azM3MFozWGVreDJXZ2RRalFHNgpwZWVkeEkyYjlVTXpqbzl5dzd3Ny9VbTkrWVlLWG5SM3d0UlRIQjd3cGd5bjB2MEVramE2SVUyYnIvZG5Xckc2eXFKVWFDNWFLZnVOCk9nNTB0ZDRneG5pdTA1b25HUWhrQytLMEJHL2RhTGxTOHlVWjhydVJHVUgyRkNuQ2cyQUZrL0Q5ZDhFdU5xUHZ4VmhpNm5CMzZoZ04KQ2JySElKaDZ3QlBsZHoydnllTm9YUDlzQ0I5NnVaMmRkbFZidW4yYVIxNzBiSWRTbmJoQmg2czVDWEFxcXZoNUN5d0tNb20yamxocQpDQUFySTZNVnBoUmlRSWtDcVJKaDFwYjFVQ2d0dHhPWVZzaFlmNDJjZkdGZ05jLzZMTm9mMkVqWjkvSWl5WkJKRmRVMElUdkdVWmtNCk1hdzJZUytTTHR1V29RTDdhVy84Y2d4aG9XdkdXTmZiYit5cmJrZ2ZGbXo2M3RiVDRhaG1tSnY2UWhTL29uZk5LYk5zOW04VWJ3TkYKc0pRV3g4enZVYkM4Tk1MMjA5Nmh5MVpPbk1QU3A0NHIyNkpjOXJlbHBKRnVxdCtxMCtncWR2cll5cnFXMjIreENCbk5mTVRJbXlZUwp6L1ZGUWxnMXFDb3NNRzJ0Uk1ya0xmZWpQT0tsOEs2Ym5PblNjVnVNOFZ6b0NiVytIRnAraUZoSkN5YWhRYmZDTUwvclVHVUZ0bEhwCmRZSWNpRFJXOTVFR0hXN2FERUVMVWtIL1cydzJQS1VGQnN5NDhJenQ3dWo0N0k1Uy9vQlNZTUE2ak1PNzFBdldWbzErMGtUR0g2UkcKWkUxR2hHV0p1U2YvMEZML0drdHlCZFVuZ2g3b1lYdktRUlpveXVPSFVIRHpoNjJoRFJyTEU4ZzgrWDRsM2cxcDQ1eEVSbXZKVkIvTwpobWhqU216U1NzV1Z3djFaUXlPT2xONVNUaks1OFE2a09VblBhKzZ3TXE5cytlUURuaXdKTjN4NDNIdGNuZmdxbWhHZENZaTVEazhxClI1RVN2RmRoM3Y1WlQ0ckxoRHZQZ0F1R2ZjVnhiMEswOGpnc2hIaFpFTHV3VThSb1JiSXZFWHc9PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWREYXRhPjwvc2FtbDpFbmNyeXB0ZWRBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/testdata/pingfed/sp.encryption.cert ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAOvpZtJNtQ/rMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgxNDAxNDg1N1oY DzIxMTYwMzA4MDE0ODU3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfUlciwDPCJ 9JXy1NsxKfqyOfLQXFKKGgNKKRLzLAWO43GgQYrV67QaAny5LvgOa81KQOX4IvjJ y0nd/VrO6jG9pTdMR9vFHT0Tu3W1QUsyPPSQqpKXwb2ZCSXNghYD5gBrNtmOxAOs 1Azx5qmIzBJ4F0RkRivcdbXSfBUBLpCn1M285c4tk5SEvoRgBeisLJJDB7hmylA1 V6/+BN+N6b3M+ZZG//CTvOjJKgnwkMALzXbPbQWa0kpbMLDMz8Kr2pODLKb3rGmd f4P6A9aA41k6L4clTsNdcK7ZwJ2fGF79WGzE6RLyBX2US3gPHUXt/WMQZXyULO3e xiTDsQXWFf8CAwEAAaMPMA0wCwYDVR0PBAQDAgQQMA0GCSqGSIb3DQEBCwUAA4IB AQB3fQZz2qNAo/wohPNaR2uAakLt25cKrsbgn3XwO+X+DRH4nqMSZkHdLGr82xD3 i33BLSQwXzFecEN+CA8SlpNoIXHwk6D6V3uEBSjKemZtJFCJqe8d+5qt3GV50AKm tEt2Nc7B94TN8xB5EmZladnTJWcBgSuuz1hLXQQ02dJ3dDq8FMlyR70S2DTtuPu0 i2/f6KtrlmmNsU24Aq+fCzEG43NqShOMeM5rDxLsSJCtjfMRwG8YeyNf6cCMSMxY AJfrTyj+AS8RtZQNGF7tX+exEWHOf1C9CBzHtKRClBRL6zDjlpPCIDwcMFi8NXva iVclxIq3XdfqxiGBBEldkhgZ -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/pingfed/sp.encryption.key ================================================ -----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn1JXIsAzwifSV 8tTbMSn6sjny0FxSihoDSikS8ywFjuNxoEGK1eu0GgJ8uS74DmvNSkDl+CL4yctJ 3f1azuoxvaU3TEfbxR09E7t1tUFLMjz0kKqSl8G9mQklzYIWA+YAazbZjsQDrNQM 8eapiMwSeBdEZEYr3HW10nwVAS6Qp9TNvOXOLZOUhL6EYAXorCySQwe4ZspQNVev /gTfjem9zPmWRv/wk7zoySoJ8JDAC812z20FmtJKWzCwzM/Cq9qTgyym96xpnX+D +gPWgONZOi+HJU7DXXCu2cCdnxhe/VhsxOkS8gV9lEt4Dx1F7f1jEGV8lCzt3sYk w7EF1hX/AgMBAAECggEATD8qZWiGGGm0csNFrOdjGQALj6LVrrILK19v1aogX84Q yrhxzm9ti/8dDijbi9qRY0zOuyvGR5z1/HMb/Ttv7nUoMD05kEC3Dd5/FfTo2w7R 3pIyzDKh1E9IdqIs7W+L+Li8zI4twzWriM4FaxQ5ElL4zxt3PcoEuDwOH0TQMOsy P2gLEhzzkFp7TRoKzR87sM6lXoERsGKh7XNWjjS15/w+XHMaDverOOALwWDbv32N UCdVSAGBx4Ic4mZuJv+e3MH2SAja0J6NLMzCMtrzmfcgVECykMnELi1XftZYbgD+ KulSvHuamygS4KJppnAdly8950C8CxI7fp9QJV/8UQKBgQDUaT68z9e203L/XATr sa9CgZodWvjrLH7a2e5EvUPq8slmg2VqEYNjHzP4rCoOcLul6TwrlNInxqTIkIPR mRxBSrG24azfGRrOs34IMTXgqfMVVxbcSVK8OijHs94NTwYrRjMXeaAOnKjPH484 DALrEoEGcrjXmDDKBV9rb+a5XQKBgQDKRVkUvCoILjsA3jG6qaKBwKSZBFla2o6x YxgOZdeSG2NEuMt74yRHjgV6iogpvw9i/FSY9TAaZsoX0L3I5LWRtwEi3iXtEC9X qFlS9EPr9encpdd2vu1O6aWXW4IlUWbu3ecdb5UAxu44ObUQS6HiXEfcK8vufF5l WyilXNerCwKBgAMYYYSo1rDgVe2orp2soiwq7U7+M2Bh7ptLz7AKvgGfdhXbVk/8 X1jDbKN0BszdEa7yPiE4cvOHboFJsdINFB9TclGC6lz55a0banu+E9XpRBSMh1XA b8c0ZcG7OkIhY6qfxEDUUePEnqUeBZ1Ad45rX5vzcgQaQKPA/kn3gHo1AoGAU/05 wSdk2KLBs1mQEq9PoEsqzbMFm3k3WScJnSjiu3ON48JMFDQ8I04wrjKJ2bPRIswe IKlnAP9/mSX/OETntArmeOD/pJFc5ywrcwukjH0/T3S5pEAhb+wK629++hn0AOm5 hvqHR5xS3JvxuEN/g+vHlv/EnVGdLL8OgKOtlgMCgYBU/5WF/7dr89uYzjiBvedh HQCgwd+8aSs+raY5eTzJrJgqVbEMoxhco1GWzWYUjDVw88Y63k+fqIf1DQJFkWFi 9T1nppVDeofoLDLTrh/2oTAHIM2QL6kWwoHiD7b/scF5z/rC21KqobqroAh2R0CP J2waRoJgqT+P15Lq3PEcSA== -----END PRIVATE KEY----- ================================================ FILE: providertests/testdata/pingfed/sp.signing.cert ================================================ -----BEGIN CERTIFICATE----- MIIDPjCCAiagAwIBAgIJAKHPtM2MqZxXMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg Tm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY DzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv cm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl c3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWw8EP/dSG0 yy7cL2sQvcRqiTrsVCWzQ5SGgZNGbFJXq36pshZ21H7gFPI/K2n6m4I3vNMCQtRJ JwfjyrPbuXpVaTMcmg8J3PGUVzaab+dZ28EQ7V9HEnzcVbEgu87xY/SB6SCiJbdI COZWlsgLUkgZS9CFkw5q6i29nL6nSZw/MmNr1hjJWvVvs1KwnGjB2aF6wYBQKKsY GxfZTJqKKBGXwIB5qnaWpVQgP6+H/84YCHLUEKk1hgh9AnR1xNVE6e64clcAE+O/ HWDS6QW658TJsw18TapzVbiUGou4TlxJZqEuJv3BfPX3EMsnp0uRurMtwgyzI/ZP CCHxSMJs4xECAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB AQBRwSaE1AnhZU/GzMngLSG6WsOp1NksoEHZsJoIKxUJWdMj9s0Pb/QSGg/W/2UU CREt6xBd9rh3jv17AwH6+IAvq/zQn36UtOE0/0v85Tp/I6t8v96cTjkEgDHBWSqw qfPvnrokKUpDRv1cxCL0qh4oW7selKkI0VpZOgpKm87oi6POQJ/KOMfcewlH+DXt zN3Es8Xp8BAfRRIEk7i3PqZSrhWUguQgCOAOvkb0tGuPDsFLLJJBML7B7aYrS1Kw EyuowZiDCDSk49KpGOmKYv2ocIG65gr7+am/l2NN+6cxuCf/o9H8UL8qm0LUJdgh 5sVa0DJzIcuOjWsp2QxqTjr/ -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/pingfed/sp.signing.key ================================================ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1sPBD/3UhtMsu 3C9rEL3Eaok67FQls0OUhoGTRmxSV6t+qbIWdtR+4BTyPytp+puCN7zTAkLUSScH 48qz27l6VWkzHJoPCdzxlFc2mm/nWdvBEO1fRxJ83FWxILvO8WP0gekgoiW3SAjm VpbIC1JIGUvQhZMOauotvZy+p0mcPzJja9YYyVr1b7NSsJxowdmhesGAUCirGBsX 2UyaiigRl8CAeap2lqVUID+vh//OGAhy1BCpNYYIfQJ0dcTVROnuuHJXABPjvx1g 0ukFuufEybMNfE2qc1W4lBqLuE5cSWahLib9wXz19xDLJ6dLkbqzLcIMsyP2Twgh 8UjCbOMRAgMBAAECggEAA/py2FpQm0NVK5qAo0yDizh19sdT9FtfgHINhkcFeiwX Qje/AYTqlDid3MwLTE/Dde94f/pNsk5Dv4V6W8PU5NvX6NmYefnST6va2QQ6rQsn p6uSNwLcYcWFTtKTqi1Y7fKmQyOpxcCbCUgeFxVAYPnE0jUKikdHB2dedkI9d2FV ZMSBAlNp5NQQTTojjdvfa3yxFqB/5Gh+tZZnnXm0BmtSHjWvXnpi62Nz8LHtKwtO qzS6650vhbC8GyuILeBkEa0Zvw2aUhRI0grCjWsbXJT66FrV+pIElOAQvyHP6hlX zC43ODdXSiFogVkF07umlqmopv4gDLgst8fjY61VfQKBgQDpVytmVrNXI9A2uDv/ 0RhCZpmBMgz8o3OQY0KRtZqupeVUGCTKk0zNqxsvUg31fa+DLYu+fYUDRVy58ST7 vTiXjKYllWY5LAacsqtA/1E4BghOuYfU12tGJcOUM1TZNkQ/s2to/fDL0HTjYX6T STqxoyg9zCnSYpF+u7gj91QuywKBgQDHVcUGiL69Tws3J6riKvFBtqrqcJaRu5OS t/U+kqM1m5/GOaBpZyropeusQgb/nZHIE/lEur7CHYcTi8PKF2lGxnqWOn31LVrc rM11r2pweDpCBBQqytNoE9vUzgfueXbPPgl+l1pTDA02u6EE45IHC1bPPbjDx29/ xhfAykD+EwKBgQCrVA3Rvqc/vFQNWYj0dJrTZnIfophWh806nycpxaYlxjl0XaXl 9/HUsWXsgNsu/XH5Z1/MJm2b0TocbSsyi+UZoXP89I1yPRk9xRJpTw5bjFJdO2y4 otNpViEcl/Qc6PODskGTfaFohU7OBa/ihUpLU/kgJuAuUaFy5HJ4NgnhsQKBgQCm q/K4SfKiu8r27TYXMizT83bp3AYqCJuWHDb1gQryshNgXaLhPyBDsyhhuju70/an Qvw0GamTCbl+AGlPO1ANm7u4jWPwc2H8DoklE+196SldNaffOASYi7JON4+uOOW8 13R84vTlZ7hMwYobWmUperO1STiKiuGSBwKpcvPw/QKBgBgqByvETHwewxnYoIsp yn3Fz1KM7MMnRil2sXVTdpS6lpF+iGs7iXc8sBnWKxFFQWnvvx6VvhXw6lCCnEQX 3LH177jH+s0jVQgD+YZLnYDBF347tU7W/dPz5Df7hgmuQhOU/UV9ihm4udutRFbR 4fd3j6wIcv2MZ0iDUVJ0UFYr -----END PRIVATE KEY----- ================================================ FILE: providertests/testdata/saml.oktadev.com/oktadev.pem ================================================ -----BEGIN CERTIFICATE----- MIIDPDCCAiQCCQDydJgOlszqbzANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJV UzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEQ MA4GA1UEChMHSmFua3lDbzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDMxMjE5 NDYzM1oXDTI3MTExOTE5NDYzM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB0phbmt5 Q28xEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMGvJpRTTasRUSPqcbqCG+ZnTAurnu0vVpIG9lzExnh11o/BGmzu7lB+ yLHcEdwrKBBmpepDBPCYxpVajvuEhZdKFx/Fdy6j5mH3rrW0Bh/zd36CoUNjbbhH yTjeM7FN2yF3u9lcyubuvOzr3B3gX66IwJlU46+wzcQVhSOlMk2tXR+fIKQExFrO uK9tbX3JIBUqItpI+HnAow509CnM134svw8PTFLkR6/CcMqnDfDK1m993PyoC1Y+ N4X9XkhSmEQoAlAHPI5LHrvuujM13nvtoVYvKYoj7ScgumkpWNEvX652LfXOnKYl kB8ZybuxmFfIkzedQrbJsyOhfL03cMECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA eHwzqwnzGEkxjzSD47imXaTqtYyETZow7XwBc0ZaFS50qRFJUgKTAmKS1xQBP/qH pStsROT35DUxJAE6NY1Kbq3ZbCuhGoSlY0L7VzVT5tpu4EY8+Dq/u2EjRmmhoL7U kskvIZ2n1DdERtd+YUMTeqYl9co43csZwDno/IKomeN5qaPc39IZjikJ+nUC6kPF Keu/3j9rgHNlRtocI6S1FdtFz9OZMQlpr0JbUt2T3xS/YoQJn6coDmJL5GTiiKM6 cOe+Ur1VwzS1JEDbSS2TWWhzq8ojLdrotYLGd9JOsoQhElmz+tMfCFQUFLExinPA yy7YHlSiVX13QH2XTu/iQQ== -----END CERTIFICATE----- ================================================ FILE: providertests/testdata/saml.oktadev.com/response_0 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZDczMWM3YTQ2NGMwODZmMDJjNzEiICBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMloiICBEZXN0aW5hdGlvbj0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIj48c2FtbDpJc3N1ZXIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfRXBmS2RGYjlzTHJlRGVld2JMdzBCUDRsbzZYV1h2cDgiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMi4xNzFaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjX0VwZktkRmI5c0xyZURlZXdiTHcwQlA0bG82WFdYdnA4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT4zS245NjlUam9taldsWm5MQ3pWeDc2Yk1jTjA9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkp2ZlJLU0ZmaTc3WDdzalZsbGZRYWtOQmJ6NDJWZHErdzk0YzA4OVd0OUFDdWhyZWZ4Q094TTNtN08xOTlOSisrMnZyd2FIZHd4TmtDNVdTWk5JZVRSMWg0VWZGamhKSkFWL3N4ak5jZU5CTDZybFFITVZlNlV1aU95L0Z6S21XTEZObmd2TjRJdXpuN3B0ZTNhcVBIeE9mSC8ycjhsTnBBNm9hOWhJRm1uNzJDL2FteVlSVWF1a3EzT1NOOE1SUTNBaGowZ1U3U1kzdzNXWkp1anlpaGphNHloMitEZnd5bjBUdGx6ZEJMK2dGMzFGOXBSUlZucW1UbTcwM3pRNTM1RGRGSjE4RjJXcU1yR3B0MjUxZEVIYUFidG1GVm0yOGNocElnZStBa0VpL0lMSVlKbXF3dEN6amMyY21GS0QvdEg4a3lTMnpwb0U1WEFVd0xlTENVUT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvWDUwOUNlcnRpZmljYXRlPjwvWDUwOURhdGE+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEyLjE3MVoiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTIuMTcxWiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEyLjE3MVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEyLjE3MVoiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+ ================================================ FILE: providertests/testdata/saml.oktadev.com/response_1 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfYjUyYjhhMjdhMmUwMWJiYTIyMzEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEyWiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX3czdWNOM3h4bTJEc3BEQkh5c1phQVNkVkRRREZxREJuIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTIuOTQ3WiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxMi45NDdaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjEyLjk0N1oiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxMi45NDdaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMi45NDdaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_10 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZTNlYjNjODQ4NjFhY2JjYjhiZmYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjFpTVhWS01QNUJKUEpFTWQzK2piY0NMZFV4aG1YeUNpZHJFeWIvL0E3MW89PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlpIK1NZQUNnY2dhSVdVbk9XanI1TU54SjZHRlM1UFdyQ1FybWMyQkxORDZDRXBHcTlCbDVIVHdZcXI2WjZyemszNzJsZmIzaWxydTloZ3dVZmZ5dDEwTlk0bC9WbEtKSFhYdjl4b081UFVKbmQwa1owTjZaQ3RXV2xsNTRlbEszNDllT0h5RFk4NnRUVXZGYUd6UlpIMkZyTXFhMWJKUWtGbXRpaXZkN29RRVMrMy9ZWXhEUGlnTXd5OVZ2RkxpeEw1R05UdTFaL3lWMnFxRU5oelVhY2g0RUVLdXRwc1NTZzFYVURTbWRBMm9BcW5FMlI2SXlPeUsrQVU2bDRrNjM2R01aczNYMU5INmdCcnUrWjMrYjBOdCtQRzAxMENjdVFPUlhUaEN1eWlxWUF1dERKeklGQXAwL1BVQ0xCR3pWR0ZtRTZJenRZVDM5Sk1WS21JT2t4dz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfSzA3ZDFyYklOVmVoS2NzRHBsMHFROHA2ODRzMFF2MVoiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy4wMzJaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE3LjAzMloiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucz48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy4wMzJaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_11 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNWUxNWJkYWI0OGZlNzFlODc4ZGUiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPmNXL1NxbkdQZElHdG12WTRxbUlxaWlMaFdHdzZ6RUpXWStFY0VrbG5QVGM9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkt3RHE3dEFid1ZWSEQrSzRNV2FadHJHYlUvdVZvZjdPWmxWQ29yeGZqVUl6ZE9HdnpJNmxzayt1M0NmR295Mi9yMzFCWXVNN0dUVytMdlF5WmJWcUlia0JuZjlwZThQbE15dHJuOG1oT0p5b2JwNnMwVWw2S0dFZllXRkVMS0FxK0dESzRyeldhOWc5Z1Nqb3pzZ3NOSHY3SVVzRjNrUnFkOHdZcy9pbUhQTkY5TEg5aGs4cHNzT1R6dXFnVE5MTUpvVTZBWVVveVNiL3RqOGh2djlDSGZXc2Zra2QxM0hDK3FmQ0tXZldyZ3lOS1AxZzRDSTRKOThNenlPRWs0MzJ6Uzh2ZFFvSk9NeEwwR3cra0NOeW9rRHhhdWs1aEx0Y2k5SmpWWWdkTGJRajNSTXg1Wnl0clZpNWlVUUhVVTdWNUZxU3B0ZC9xWHhuOENOL1RYNUZkZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfem5zVFU5dTVMQ0MxUnhGTEprdEVPazNzWnhtanRvSHciIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy4yMjlaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE3LjIyOVoiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjE5OTctMDktMjlUMDY6MTQ6MDAuMDAwWiIgTm90T25PckFmdGVyPSIyMDA0LTA3LTI1VDIyOjE4OjAwLjAwMFoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3LjIyOVoiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+ ================================================ FILE: providertests/testdata/saml.oktadev.com/response_12 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZGNiZDcyZmEwZjc2M2YyNWEwYTQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuNDEwWiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5hZG1pbkBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy40MTBaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE3LjQxMFoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy40MTBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy40MTBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_13 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZTZhMWFlZjE1N2ViMzQ0YjQzYjUiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX0YyWnZiaGxqV0tYdWpuYmx1c0Q3dXJZM0lrM1RqWWE1IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuNTkyWiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI19GMlp2YmhsaldLWHVqbmJsdXNEN3VyWTNJazNUallhNSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+em5BcjNuUkk3aUtGckViQi81UTJjdWl4a1hBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5KRFkrVmp2RHF6dCtHTk85RjVHNGdpcC9hQXBPbEZidEM2S3NiNWhob3hDc2VGY0NobmM0OExiem5ZWCtpY09TZEthWHNvdElzdEh6K1p3T2pWU0FpS3dnN0N0emUwSyt6WE1ldDdFOVlveGlFNXdJZlV4Z3lVU1MyNjU3dGl0cjlodE1QVURNeUtMOGUrdHpKZWxScWVWa1Rld1RoQXlzYko1VWd4MjVNTFNmOVVLUmJmcUpGdHh6aDIzRGhGTjZEQzVnUnhrZlRPVGtsaW56Z1AzdVNyRHVQblUrN3BsOFVWNUFDR293eTJ5c3FKaXhJdGdFV1FYSldVRXVBamhUaUs0Z0s1YkxqZnd0cEF5YW1PYm14YklpeWhlaTNMR3JUVDFVaGRyUXdWVnVORmVJQ3l4ank2UVJ0TGR6c1lYRzhsakRnWVdtWXYzc2YxVVhqNUN5d0E9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5Q2VydGlmaWNhdGU+TUlJRFBEQ0NBaVFDQ1FEeWRKZ09sc3pxYnpBTkJna3Foa2lHOXcwQkFRVUZBREJnTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVFNQTRHQTFVRUNoTUhTbUZ1YTNsRGJ6RVNNQkFHQTFVRUF4TUpiRzlqWVd4b2IzTjBNQjRYRFRFME1ETXhNakU1TkRZek0xb1hEVEkzTVRFeE9URTVORFl6TTFvd1lERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RURBT0JnTlZCQW9UQjBwaGJtdDVRMjh4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUd2SnBSVFRhc1JVU1BxY2JxQ0crWm5UQXVybnUwdlZwSUc5bHpFeG5oMTFvL0JHbXp1N2xCK3lMSGNFZHdyS0JCbXBlcERCUENZeHBWYWp2dUVoWmRLRngvRmR5Nmo1bUgzcnJXMEJoL3pkMzZDb1VOamJiaEh5VGplTTdGTjJ5RjN1OWxjeXVidXZPenIzQjNnWDY2SXdKbFU0Nit3emNRVmhTT2xNazJ0WFIrZklLUUV4RnJPdUs5dGJYM0pJQlVxSXRwSStIbkFvdzUwOUNuTTEzNHN2dzhQVEZMa1I2L0NjTXFuRGZESzFtOTkzUHlvQzFZK040WDlYa2hTbUVRb0FsQUhQSTVMSHJ2dXVqTTEzbnZ0b1ZZdktZb2o3U2NndW1rcFdORXZYNjUyTGZYT25LWWxrQjhaeWJ1eG1GZklremVkUXJiSnN5T2hmTDAzY01FQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBZUh3enF3bnpHRWt4anpTRDQ3aW1YYVRxdFl5RVRab3c3WHdCYzBaYUZTNTBxUkZKVWdLVEFtS1MxeFFCUC9xSHBTdHNST1QzNURVeEpBRTZOWTFLYnEzWmJDdWhHb1NsWTBMN1Z6VlQ1dHB1NEVZOCtEcS91MkVqUm1taG9MN1Vrc2t2SVoybjFEZEVSdGQrWVVNVGVxWWw5Y280M2NzWndEbm8vSUtvbWVONXFhUGMzOUlaamlrSituVUM2a1BGS2V1LzNqOXJnSE5sUnRvY0k2UzFGZHRGejlPWk1RbHByMEpiVXQyVDN4Uy9Zb1FKbjZjb0RtSkw1R1RpaUtNNmNPZStVcjFWd3pTMUpFRGJTUzJUV1doenE4b2pMZHJvdFlMR2Q5Sk9zb1FoRWxteit0TWZDRlFVRkxFeGluUEF5eTdZSGxTaVZYMTNRSDJYVHUvaVFRPT08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5hZG1pbkBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy41OTJaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE3LjU5MloiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy41OTJaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy41OTJaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_14 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNzNlNTQzY2FkMjJkZGI0YWJjMDQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjRtaVNzZmxlbWlQbTJwOVd2M1VRTVR1aTl5YVhRUEpWaFlLNWEvVHJURzQ9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnZVbDh3YWNsc1daY2NnV292ZTl4OU5mRktWWFpkRUEwZ1JPcnEwb2ViVFNnKzhHUmQ2U0JXalhBaTd3N3pSem5SeUJHdDVZTkloSWsxd3JCTVkvZTBhWmdmYmUzNWpzUlZaMnlzK0piTXpteDlnYWlFaEpEWTR0djhqWVYyMXRDTHFwRE54Ti9CTEVFMEVlaTBBek4zUE1IVnU1TE1sZHZmYzQrOWtkbkNiSFZrSDU4a3VsZm9tZmJGY1VSREJ0eXlGZkJjeHE1eXg5NVFRMFFnSlRJbWZzUlJwdk82NVRQU01USjkrYXBVMzdxQ0dRc0VSaUx5ckZMMWJ3WlBVVjd1ZTdCV3A2OXpJMVJ1MG11MXA2TWt4RFVxRHNROEVLbGh3MEhnOEltZkJ5b1Era1lpQXhHQmZFVUdDa0ZudWxkQ1A5ZEo1RjlxaDNRZDRCL0VPdk1FQT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9IkZhaWx1cmUiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX2c4d0tOOWxFV1VnSElZNXlpb05hcldrNnFQMmY2TEFSIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuNzU4WiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy43NThaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE3Ljc1OFoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy43NThaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy43NThaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_15 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNGNhNTMwMTMzZWRiYzExZDc4ZTEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPmVuVi9KSllkdzd5cGJ3N1IwQU5oTmRzZ1lQUmJGYTd2Q3lTWmtKUDVNOGc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlNEemVZVmQxVU9jWUZrbEQwSE5EWStSc1JaVzNQdlJMQ2MwNW0xQ05XMWc2WHllWEk5QVNSN0hyMGxOZEt6dHRzclJQSUcxLytDVnE4OEZZdDYwZ0FSMVQrblZDaHVFVXI5VEdIdEQ1RE9QQm5DcWI4S3BBcFN5Y1JpVEFDeGdHVGw3Uy85OTIyRklOVmpodUhweXBLdWdqcm9KTFdFR1BVRkxLWDB0Ry91Z2sxOHcySmhhdDhFdGFXS29naVAzbTh4VUpCdkdLaU96ZWNMSWFMSkl0Z2NZSWpLdnJjckg2R1hHOVZVekwreXhiMWRLUUtodlJ6aEFBN1RpQlJqNEo1WHcweWJ6UVYrMExxUXFsODcxMkpqc3BPMVhqMG1HaTk3ODY5aHNLaVJBaWlCUkRoYkoxNmZJUHBCMkxtUjJwME82Y21MWHZxbDJEaFZsR1kxNWFZUT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6UmVxdWVzdGVyIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIFZlcnNpb249IjIuMCIgSUQ9Il9xcDNYYmk3cVZBRFJrRlBpQW8wVjdWVk5UTXNLc1pwMiIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3Ljk0NFoiPjxzYW1sOklzc3Vlcj5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpJc3N1ZXI+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTcuOTQ0WiIgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNy45NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTcuOTQ0WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuOTQ0WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/testdata/saml.oktadev.com/response_16 ================================================ xVhZc6rKFv4rlvvRSgARFStJXSYVARXBAV92MbTMNDLLr7+gSU6SSnKy9324VT50r/Hr1aubr31I9TCIJxuQxjBKQacKgyidXIWP3TyJJlBP3XQS6SFIJ5k5UShJnPTv0UmcwAyaMOh2ePax+3s4wABq9PvE6DQmRgNzCPpGt7MDSerC6LHbeDSGaZoDPkozPcoaEYqN7tBB81Ox4YQYTLDxsdthQZq5kZ5dvZwsiycIYhk6qRMn8z6yE+jfuxApMOR3i/G3qQeBoZt+9+mhnU+uKZI3q/h+EXqagqTN1X16zgUqPYwDcG/CEGn9Ed1MX4QPyJsct4TxRMn0LE/fzxhogc5OD3Lwffr0aj1RctMEadpFnm4Z3gedUC8g/2JZH3eg3SpMGohGwKtaQWiHTXIOgW2t0+XUS7xFUHjEDzbqHkNHx/c1/4sCKq7d7HSePHfd636XZXlf4vcwsZE+iqIISiKNgZW69q/uzQtYfHSCTw+MHsHIbZrAra8tI4HMgVaHCmyYuJkTfhESQzC0DXkHKvPOxAbRr7b2r3B+GOUdsCTV71JHx9pAG3ACCYhM0Nlu+Mfur3+v+NODmuhReoJJmL4Z/xkEEBUggDGw7tKXlbRofh7t87Igb6Gxrt0c0L8p0EtxbhGuh+Oph+IIoMKCrBxxNx6Nh6lwMPZ+mKHy4wPy1vIBeS1qM37bAq+7djNkKn5T9CtsXgB8jTOoPqPnlUMYdbhHfXzBBrAw1oR3FjChtHGxYIZHXJUym1jPWeUILcI5jLz5OBz7RDI6OVYfMQdjPteyoYuKq5QW5sfY66XbpAiMc6CMEstmbQfTqrPAHOaOl4dMqGYs7ZISObKWyQ7tb/wicLzejsLtZTbIKW7sL1kSS6sxpY6UmQxmpUhl3qlK1ocoQ/d93EuT0p6ufVu54KWMeLwjc4TL4J5zcJg9rEUkoHeRcHJUtU7sw5mhJCw/HtHABKrOg92OjIrpcYPM+zEt+NxePA2kkBtKkSaNTMLnK2RBM/KAxMfFMBqqJh7T9CxbizXCOP6lgMedgqtLjdnWcSFcTor9+Hgr+ptCPwjgctuBA4GSrJ7ptxHT3jyn5kxm4EnieXbNMgzlygwjsxdrYa+CtD4bNbWkbf/s+O6MLFGakrdTiqVtSU5LRtbYnSzPuHKx29acKtHcjMK2HENLgtyfpvr+WJghEWsqt5do+aqjK2m57U9znjtetD3h6YelZ9ScLFGDm68jzZVwmut4wDZyRaKpq5yqpIUxIz1tX0EDX6ISPTiwKodKrFRJHkcsWa2WMNjIeFxSuWqlvspKjeVEifJv+R2J2e2kiqupDW0vdzRlq4y/dIxZEBr4Itf3XDX1qO1NZ6rsrtG59MxsMGn9oNb644pjqdVND1UajR0jzAi5lXuUfJNLKrOvCq2twYysrbauCl+ysrYQ4JF3CnNJyRxNyxRr29yaavUyZJpx4zorFvFGVfV0s1XWZ9M4M7PeMVKp5iuSo8Uu5mdkUHNV5GAYROhZWOejgO5dxLnJWWUi0HQYg5il14xWxTvdK3LOOVrCtEKm1mXoEeEcT5I9SjtIbeFDBm6b+hvO/KJ6QBpNl/3LFM/JwLzkRl6s6gSncfswHPLlItgOhr2yNuWdo6wCye9nh03vxAtyU7BklQtkZhzwBU9vz3wW8715RMGybbJIwvBBWpTjtToV/c0QYUzpHLEnVsBCksTXF8hgWm85OJAH31FCToZUQM3XPCHOkyLPvcY9KjK40wpBg95IMe089OP9kisOQ6Ivng6rSNACnx4fL0ZehdMT79fAkhNjkV5WzklEcVPiGKrkKEr9pJepVVN7jgLzsj6XUT3j/MqrFXYwcsODrp4z7cKpR1iODiVtokd9qhDoeTNdbG1BpUJBwSqZXiPneaxk6Wal4gS7rRYUN1xqmGCc8aPB5M4MKoGGiqNdvVOJLM4HnDbusWck73PeJgwdKI62fuoX/LEfYazFbTKrp20lFZy1gDThADfTY8lGEOEFGIIlcdbXJk7yR8/1F71oywz99VQAOYJ7ZGLPl8GmYXv8UMGmVjatydVRkoM4QRfGNuureKUgGpQX0dCEbLgQiZnquoI0NFegt02wXVkr2IJjDUXpq/u9U5/H0BOthkBq4swiF6sUyg4XhHUvk07MtCmgyFVutKYul5E2DxR3d8Bwed4/qDniynJ7GX28aW6S2y2EvN5M/9xZz1RFyQ0PmNnzbNkQJ57tTJtPm559zaiwe+wqca2709V0kkdpDMwmN7C6T54egXsLgv+8YT7PROeW4H1uBkYnt43SErrbh/R7MmeGEwPoCUi6XwdqF95ZwmwVrRLqlIHkPWsbvWVtnU0DPXZBS+3+gGC/kNPP0n9QPeNsLCy3VactNBo0xQPfsMmf4n9hxbnltnSgeblkiWveYLzT/AEjfXX5MH8XHPmwqpd0WWNi5BloSTsIm7o+8/TqK0aLIQdJVEwHhHr31db9d+M790rJTdD9mLrTdtqfdHATzQ0oy0rad8fHaNcPfKeBNMkucRO2Sid6dFGb8bfd/t7/6aP0C8xci+T/C2HqJmnWDv8IxqKB8T+lFfW/yMrCHydFvmjP12OSOdE/PXud/vjNd7VujkIGquwTERM0T9CGsT99+0o1J2Zr14jfXKivJ/CTaJ/o3sneLBF5/3R+fVm//NHx9F8= ================================================ FILE: providertests/testdata/saml.oktadev.com/response_2 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfMDg2Y2ZjMWVlMGJkYThhMDAzMTciIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEzWiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPkdyVG1tTGdZZ1Q3cVlSc2RoZlJsY1BhZ1RuMXZuUWsvYVdJaGd1elhEVzA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPko2dmZUSE4vQXN1MDljUFpSaEhjV09XdlBsbmZGeXFKcnpyWGZWUTJ2eThhZjlwUWpFaVB6L3JUOVVFcWc3TDlHZXB5Sk5xVmNpa3hROHpTUzlkTFhBWDB0WE1CcjJxQUNRQnZJbHRKSmxOeG1xYUtzQmYvdkpHU3kzNEIyVVB2WWhQVUNpMzBpMWcyNm04dEE0dXNaUFFlVFRzYlVIbyt2Rnh6Q1RCR0kzWTAzSTl5WEladHJPTlhna1F2Rk1oMldZc3VnUVpMR0cyRnZ4SlpaZDcraHFGUE1nT0V1ZWVqVUMvNk42MFBuaXc0K2Y3di9ZRjRyR01qZnVsT2J0YXI2Vk54YTkvZlRtUXRwZGxWSWhkWGdoN3dEcDdobzdvY1ExWk5VcDZTamdSNjRFYjNuVFVBR2JHY09PT0pNRWluWFlxV2xRazR3VGwzdzdVOW1kS0ZwQT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfcEZJRWo5U3hRZDFqSFdycHlwd1F2ZFNRSDFiYzFzSUUiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMy4yMDdaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEzLjIwN1oiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTMuMjA3WiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEzLjIwN1oiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEzLjIwN1oiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+ ================================================ FILE: providertests/testdata/saml.oktadev.com/response_3 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNjEzOGY0ODBjODRlNmUzZGZlZDEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPk5ZSmw3VUtJaHUyN01lbG5jZkZYQmJXM09lZm04L2pGZ2VLOUIrYzZzLzA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmpBbjlyME5PMHd3eUI4L0cwU2JyNlJIYkdXT2NrOGtESEFoeGJMN0E5bkxVS2ZmUGcwT2ZnZmVwbTkxUk5YdmpwRlptaTk4YjZZN1lNWEdUUDZFL3JUR0hCMVR0bEFOTmJvRzFlQ2ZhVVFFWDdBT2p1dGZER1FTdmtQajJENE1IK2xibWxhMlRaa3hPd015MElEMGJJRGQxaE5GcTFvbk1MUGVNdko0aDNVZ240TmE4QnBLL1RLNHpqekpab0tMakFUQ3cxZUtuTkxaREFVOXJaM1A4OTJSdHNDSHoxZDZISC9qQ1hidXJoV1FNZ2FZTzNkRFc1UVNWSnZQU3EzblpSVUFPS1dOWGMxeGlkeWhOZmpSMkp2KzU3Smt6WFBkd1BmS1Q0UnpIb2R1TElHVU95anFkYy94MDhySWROWC9Jdyt4U013cXJhaXFyMHlpRERaVjh3QT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEdFRDQ0FwMmdBd0lCQWdJSkFKNjVWb3ZzM2JpUE1BMEdDU3FHU0liM0RRRUJCUVVBTUVVeEN6QUpCZ05WQkFZVEFrRlZNUk13RVFZRFZRUUlFd3BUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLRXhoSmJuUmxjbTVsZENCWGFXUm5hWFJ6SUZCMGVTQk1kR1F3SGhjTk1UVXdOREl5TURBME9URTVXaGNOTVRZd01URXlNREEwT1RFNVdqQkZNUXN3Q1FZRFZRUUdFd0pCVlRFVE1CRUdBMVVFQ0JNS1UyOXRaUzFUZEdGMFpURWhNQjhHQTFVRUNoTVlTVzUwWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeFpZNzFhSlVPbUtzV25HL1hYTmhOVFRERUIvTXoyT0RHS2YraGNKVVo2MlZBRmZlTENWMnFucGJWL2tQbmF0cVpEd21qSVBZQ1lIUitCb3NNSkVhRWVHeVlrUlk2Z0xJNFZhSEVFZkRiTEJWNWR3TXhYWSt4cFFJYkdEQm82L3lZeTRyRHdDNVFKaXZjSW1HVUt0M2FpODNBTnRpbnFKZGU4d1h6TFA2U2x1V3FmT3FiYUtxVHRIYmo2MGYrOE5yUzd2eDM3ZFF3WHZzS041TDlXSmlpZ0V1aTdrOWJLOFBwYmNHaDZoK0dJQmZFTUM0OGJYWi9uN2RnK04waFM2VDQwaTdlVmF3U0ppNmZabXFwdTNYbXo0RGd3ZjdLVk1EUFNUWWxzakVkS1dqeWQzbitKc0FpTUFMMGNHbG10dTB5aVNuYmF5OFBXYTRTblZVM1pjM3FRSURBUUFCbzRHbk1JR2tNQjBHQTFVZERnUVdCQlMwMy9kUjF6OWEzS084K3owUjhBRUZyNkJvempCMUJnTlZIU01FYmpCc2dCUzAzL2RSMXo5YTNLTzgrejBSOEFFRnI2Qm96cUZKcEVjd1JURUxNQWtHQTFVRUJoTUNRVlV4RXpBUkJnTlZCQWdUQ2xOdmJXVXRVM1JoZEdVeElUQWZCZ05WQkFvVEdFbHVkR1Z5Ym1WMElGZHBaR2RwZEhNZ1VIUjVJRXgwWklJSkFKNjVWb3ZzM2JpUE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUZyQWFqbmwwNHprTVd1Q2YyaWpNWjJUYXdoaTR5OWFuN1RIeVdybXVQYUVhWVYxbzFWSHFnMGIwTUM5S2pFd0c5ZnlZK01JazNBOE5BbG8wUnBFUmFJUHU2c1JxTUVqUDI0eXZZbEsvQ1F0NU1Id1YyZkRHa2xLWkVzTUY5a2t3ZGErSThaQk94bmVYeDFhdTdDWTZwaFB4S2ltMDd4UmNJZXBNVW9DSk9JUHFQWHoxQ2xZZlFmNXJyM0pxL1hCQkxhTnVMSHloMkQ3Q1MzVDFYenFCZlNYR1FxK0RwWWtmMG9RU0VCeXd1TG1ISTF0aGpSeVNjQ0RjWGxYd3JWa3IwMit2TzE0dW5EWG9YWU1RS01LdWN3MTFzYWRsUSsyMFF3WHVHQ0Fick9OY1BJQmd3bFF6aXRNcXpCSWs3TCsxbnBzRDRkVmRmV3hzeHFKSzZNWjNpQT08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX1hVYTREbVhUVFFEM2lyb01ab21YdVRSQWNVUmZDRDQwIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTUuNDcwWiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNS40NzBaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE1LjQ3MFoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNS40NzBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNS40NzBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_4 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfOGM1ZjQ0NDMyNmMwZjM3N2YzNzYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1WiIgRGVzdGluYXRpb249ImZha2UuaWRlbnRpZmllci5leGFtcGxlLmNvbSI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjFXTjBHQkFKVnVoTTE1dUdrWHZNMzg4Q0NKckwxWjcxSG0vNW9YVWdnTGs9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmprUkxSM0pJTlJGb3g1TldJYWRKN0dLR2tXMlprbTd3R0toQ1dFYWtUc2Y1M0NRcU9GVHNNQzMxVk9DcWtJdUIvYkpFdEo3UjFXaktmdTNuRkVlV3NHK3NKQkl4K1NzcUVCeDlWUmYxdEZiL0RIcGc4eWFKMlVUU0swRGpTZldpYy9oS0ZNQWZvVEpLdS8zZmppSlJIOW9hbUNlOUlEMjRLQWNGRlB0dWt6WEgyaElJTFZNdnJwKzBGREVVSFhuTW1RZlVnTmtxV2tCK0I2VS9EVjZLck44YVJiQ3duV2FMaTUzR09ldUx4Ykx3OWFSd0pTeFJFeHk3U1padkRhY2cwN0h3UWJkTCtKcFRSaTNoLzY3SGVoR1p1SVRGSUdjdnIydGpIdnUrRnRkRnQvU3U0UENjcVo1eGU3SVF4WFUvcjZqQjdkTmNhQmFYcWt4UExhRmNnZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfSnp4RDZzSkFpREx1cE9uRmVDT2lRWXJDMWhDUWt4SFciIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNS43NjNaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE1Ljc2M1oiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTUuNzYzWiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE1Ljc2M1oiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1Ljc2M1oiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+ ================================================ FILE: providertests/testdata/saml.oktadev.com/response_5 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfODE0ZDRiYmNlMThmODQ4ODNjZjciIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmZha2UuaWRlbnRpZmllci5leGFtcGxlLmNvbTwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT5DUzZnZXc4UFlidjJiOXpwMWE0clJmOWVpVGVwYXRjZ2JlRDF0QmRNcEdnPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5oZ1FSbklkOURLelEwWWVTSE8wSE5BRmNXNjhJOWp6VUFnQnV5RkJXaXJrOEVsenVUREhJUmtpdW1YWUZ3THdsVjgzZ2dsdDFsM25ST3NydmRxb0YvWHk3dnp4QXpIK0ZQSjVtSVdLWlNkN0JSL0paeWJ6MGs2ektmSXlHZ2MyN0E2Nkd4b3docEZucURIMjFQWDBpVGhYVUFCMzNsSHNBVGprVlpzWjNJNitIT1RtWUwxaWZXQWQ2OTdMdnJ2bUExU1JQaG9vQkc5Slh1RWRTSE4rVDhBUlJpbmFGRkFxS2w4eis1RnlOZkdYR2tiT0V4RzRwV2NsK01FcVpTMS9yR2FvQ2Vrc1JhU3R5aU0zRTdjUzdNWnZDVEVPSTNuUkJHMHQzeCtqejhQaE9ta2krQVR2NHZwTGp3cGhTaWNpL1Y5UFFnRWsrbFc5TGpqa1hicjhGY1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBEQ0NBaVFDQ1FEeWRKZ09sc3pxYnpBTkJna3Foa2lHOXcwQkFRVUZBREJnTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVFNQTRHQTFVRUNoTUhTbUZ1YTNsRGJ6RVNNQkFHQTFVRUF4TUpiRzlqWVd4b2IzTjBNQjRYRFRFME1ETXhNakU1TkRZek0xb1hEVEkzTVRFeE9URTVORFl6TTFvd1lERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RURBT0JnTlZCQW9UQjBwaGJtdDVRMjh4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUd2SnBSVFRhc1JVU1BxY2JxQ0crWm5UQXVybnUwdlZwSUc5bHpFeG5oMTFvL0JHbXp1N2xCK3lMSGNFZHdyS0JCbXBlcERCUENZeHBWYWp2dUVoWmRLRngvRmR5Nmo1bUgzcnJXMEJoL3pkMzZDb1VOamJiaEh5VGplTTdGTjJ5RjN1OWxjeXVidXZPenIzQjNnWDY2SXdKbFU0Nit3emNRVmhTT2xNazJ0WFIrZklLUUV4RnJPdUs5dGJYM0pJQlVxSXRwSStIbkFvdzUwOUNuTTEzNHN2dzhQVEZMa1I2L0NjTXFuRGZESzFtOTkzUHlvQzFZK040WDlYa2hTbUVRb0FsQUhQSTVMSHJ2dXVqTTEzbnZ0b1ZZdktZb2o3U2NndW1rcFdORXZYNjUyTGZYT25LWWxrQjhaeWJ1eG1GZklremVkUXJiSnN5T2hmTDAzY01FQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBZUh3enF3bnpHRWt4anpTRDQ3aW1YYVRxdFl5RVRab3c3WHdCYzBaYUZTNTBxUkZKVWdLVEFtS1MxeFFCUC9xSHBTdHNST1QzNURVeEpBRTZOWTFLYnEzWmJDdWhHb1NsWTBMN1Z6VlQ1dHB1NEVZOCtEcS91MkVqUm1taG9MN1Vrc2t2SVoybjFEZEVSdGQrWVVNVGVxWWw5Y280M2NzWndEbm8vSUtvbWVONXFhUGMzOUlaamlrSituVUM2a1BGS2V1LzNqOXJnSE5sUnRvY0k2UzFGZHRGejlPWk1RbHByMEpiVXQyVDN4Uy9Zb1FKbjZjb0RtSkw1R1RpaUtNNmNPZStVcjFWd3pTMUpFRGJTUzJUV1doenE4b2pMZHJvdFlMR2Q5Sk9zb1FoRWxteit0TWZDRlFVRkxFeGluUEF5eTdZSGxTaVZYMTNRSDJYVHUvaVFRPT08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX2pRb1ExUDFlQlY5ZXdPVFZxRER0Z1V0VHlxU0R6SENyIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTUuOTUxWiI+PHNhbWw6SXNzdWVyPmZha2UuaWRlbnRpZmllci5leGFtcGxlLmNvbTwvc2FtbDpJc3N1ZXI+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTUuOTUxWiIgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNS45NTFaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTUuOTUxWiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTUuOTUxWiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/testdata/saml.oktadev.com/response_6 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfMzFmMmM3NmY0ZDhlNTRmZTRmNTYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPldBRnowNDF4dGc4OGk0M1o3U3BadFl0SWovWCtsc2xzbjBQNWxxMXlYMUk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlhBUTZlYmxtYlBEM1pua3huTUkwdldlbUt2a0VyZGd1UXN3T2V0OEpxZko1OW0zMUpqN3lYUGZFVHEvb1o2WlR1eTlSOGtOZzR3WGhYUDk1a2gzU2VqK3RzUUs1MVhlVlNjNHEwSkRTZzE1S2VKK2dHUEcyMTVvOFVnNUlUVlhkMlc1dVNZL3VhY2w4RU82TmZXVTk2ZTVtWXpsS2FkaU9VaU5BbnFHRHh5VzltZGlpY21PWVpMcDB6SHFzSTNqeE90Slp4c0VOaW5HaWJpZ2RwSjFwdEc5S0ExUzYvSndLa09BRnlaRXQvRkJVSGhOc0NtcW9lL01uYm1FeDZhT1dRM0FnRDRwdTk0M3BlVWIzS01QdERkVmI0eGNnT1hLRkl6d091YlpzdncvbGlibXZMb3pFaG1wVEJLZFluVEdjWUd6ZnVQc0hNK1hWdk5aY1ZUN1htZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfdUI1Tjd2WThQRHRiTGNmNU40QzdpTkhWbEdhcEI2dnMiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi4xODBaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE2LjE4MFoiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTYuMTgwWiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE2LjE4MFoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+ZmFrZS5pZGVudGlmaWVyLmV4YW1wbGUuY29tPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi4xODBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg== ================================================ FILE: providertests/testdata/saml.oktadev.com/response_7 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZThhMTdkMWYyNzEwM2Y1OGQ1ZjYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT5KQjI5R1l2QjBIazhuQ0tLTm9oVDlHQXVyVld0S1BWZkdUMHdSNWlDYWxFPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5uY0dTTm9GVTBuTXpLdWF0RXZBT1Y5TWtkMGFHTXZobmFSS3dHRG1mRFg1UjMwNkcxVjhJZ0lsSHlWeWlGbTN6L0Frc004aHFIZEZuWUxvTDEwYldUZ2FmcEw3M2RwUnB6VFRPb2N0ZExjTE04L0QycVB1MWluR1FraE9WMVBBWlVpaC9FcGJaTWp4ZHNqV2JKd1pnVVNKaFdLVVZxUXRYWUJrWlV2WWhtdG9vZG5Cb3V0WDBSeWQ5eEhCcHZiU08zdkVmTm8wK1UzbXgvYjhYejZZQS9CdkZFU21QYWMzcTQzWDgzeW1TczRsNXgxVm4yNTVTMzhUZEJMbnUrdXJncGlUUXlLMlFMOXBhUTR2NUk2cm44WWliazQ1MGdMb1pUSHgvOTZRbFp6MytsYjJxdStkZ3k5a2FzbElEV0xlTkc0M2dObzZ5RlM2ZlY0c2svaGd6a0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBEQ0NBaVFDQ1FEeWRKZ09sc3pxYnpBTkJna3Foa2lHOXcwQkFRVUZBREJnTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVFNQTRHQTFVRUNoTUhTbUZ1YTNsRGJ6RVNNQkFHQTFVRUF4TUpiRzlqWVd4b2IzTjBNQjRYRFRFME1ETXhNakU1TkRZek0xb1hEVEkzTVRFeE9URTVORFl6TTFvd1lERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RURBT0JnTlZCQW9UQjBwaGJtdDVRMjh4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUd2SnBSVFRhc1JVU1BxY2JxQ0crWm5UQXVybnUwdlZwSUc5bHpFeG5oMTFvL0JHbXp1N2xCK3lMSGNFZHdyS0JCbXBlcERCUENZeHBWYWp2dUVoWmRLRngvRmR5Nmo1bUgzcnJXMEJoL3pkMzZDb1VOamJiaEh5VGplTTdGTjJ5RjN1OWxjeXVidXZPenIzQjNnWDY2SXdKbFU0Nit3emNRVmhTT2xNazJ0WFIrZklLUUV4RnJPdUs5dGJYM0pJQlVxSXRwSStIbkFvdzUwOUNuTTEzNHN2dzhQVEZMa1I2L0NjTXFuRGZESzFtOTkzUHlvQzFZK040WDlYa2hTbUVRb0FsQUhQSTVMSHJ2dXVqTTEzbnZ0b1ZZdktZb2o3U2NndW1rcFdORXZYNjUyTGZYT25LWWxrQjhaeWJ1eG1GZklremVkUXJiSnN5T2hmTDAzY01FQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBZUh3enF3bnpHRWt4anpTRDQ3aW1YYVRxdFl5RVRab3c3WHdCYzBaYUZTNTBxUkZKVWdLVEFtS1MxeFFCUC9xSHBTdHNST1QzNURVeEpBRTZOWTFLYnEzWmJDdWhHb1NsWTBMN1Z6VlQ1dHB1NEVZOCtEcS91MkVqUm1taG9MN1Vrc2t2SVoybjFEZEVSdGQrWVVNVGVxWWw5Y280M2NzWndEbm8vSUtvbWVONXFhUGMzOUlaamlrSituVUM2a1BGS2V1LzNqOXJnSE5sUnRvY0k2UzFGZHRGejlPWk1RbHByMEpiVXQyVDN4Uy9Zb1FKbjZjb0RtSkw1R1RpaUtNNmNPZStVcjFWd3pTMUpFRGJTUzJUV1doenE4b2pMZHJvdFlMR2Q5Sk9zb1FoRWxteit0TWZDRlFVRkxFeGluUEF5eTdZSGxTaVZYMTNRSDJYVHUvaVFRPT08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX0xRYlRIc0R0bHRPa1hSS3Q2YWRZTTJJUnk0a1h0b2JTIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuMzk5WiI+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTYuMzk5WiIgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNi4zOTlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTYuMzk5WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuMzk5WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/testdata/saml.oktadev.com/response_8 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfN2I4ZmUwMWNmNjhhNTczMjBiMzIiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjdGVncxRG5jTnBTR2pWNHhYeDhCWm9aNnNQREo0NWUxYjNRUU1iOWtseVE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmF1cHFxL0d2Z0crZlBwczF0eGVGbzkrT1FURDdST08yRDVVbXh0KzFFem5FNkFodGFWLzZXWFViMjJCS0VpaCtuRVQ0Mm1GZWhXTWhoSDZ6SFMxMW9qZ2RQVjFwTDR0UUNJUGh4RXVrTFE2T1hYWU9XR0I1N2ZCY01tUlAyYzN1Z1FTZ3dCVkxGU0VYUzZLS0NNSmtDMmxSRGdFcktXb1ZldXZWekVaOWZyanV5cWNZekVuOXZzNHVJcUVXcHBSRW1HNTlZNHdZeDQ0cksrSXhmb0oycmhwalRPT2N3Q1lzUXRMVkQxZTJHdXd5S050RWEvQWF5SzljbnNCZ3hZYTU4YnpVaU9yeGdkWlE1TUdWNWR4cWlrbGNEeWRyaFRwYlQxY042OExmbVRCdm5TOWREclY2endyaklzbHlzZlF4bUZZWTR4TklaM1g2WFNNZ1A2enlYdz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfeVJ1N2dSWFN2UXJra2JlZXZreldUdTIzVGFrY2hGQzciIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi42MzZaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNi42MzZaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTYuNjM2WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuNjM2WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/testdata/saml.oktadev.com/response_9 ================================================ PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfMmQ4MDM0NmQyZmU4MGEzZjdjNDIiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPmpqM1ZOb2pRbzRoQnhFZVhiQW81ZG5EVU5GSjdieVNIYmpjK1Zwa1BDREk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkJFVVBxb3JZNGFPNG5wRExFYklYMmFNaytWOGZ6U0UxeWdSSFMzc2pJRVI3eUJkNURDNjQzY055V2RYa2FabDBUVTRjQXU4d1NuQlJxeVl1bVE0V3dtbXRDR3dueXhyS0RMaE81QXVNRjdHMjZpQ1Ftcm55ZE90a1BoeDRBNjhUNDRHL0FWWE91NWJLa1pMbEdZODRXYThEWVVFMFkrQlNBYzFNRnJ2eFp1cXpCSmhnVnFFd2FqQ0ljb3RYMStacFpTbWRVM2RjUE4zMU5yVmpOZ0MrTnBkTzJOdmFtYTU3QlVWWmZtY1g4RWNGa01Xb3d6blZnQ2VmVmQwRktydThTNldBZHhHdXFHZjV3VHdLa3RqKzZqWTIycURtUGlBdEU1eElTeHpFcDZKcnMrWU92RVNKYU0yVW9HMjdrMitxU0JrRHNEUHYrdnhSUU43UnlkMUNjZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfS2NDYURJalV2VHlaWWFMOHZrbnM3VGRVbjgzckJZZ0QiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi44NTdaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE2Ljg1N1oiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTYuODU3WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuODU3WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4= ================================================ FILE: providertests/utils.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package providertests import ( "crypto/tls" "crypto/x509" "encoding/base64" "encoding/pem" "encoding/xml" "fmt" "io/ioutil" "sort" "testing" "time" "github.com/jonboulle/clockwork" "github.com/russellhaering/gosaml2" "github.com/russellhaering/gosaml2/types" "github.com/russellhaering/goxmldsig" "github.com/stretchr/testify/require" ) func scenarioIndexes(errs map[int]string, warns map[int]scenarioWarnings) (idxs []int) { for idx, _ := range errs { idxs = append(idxs, idx) } for idx, _ := range warns { idxs = append(idxs, idx) } sort.Ints(idxs) return } type scenarioWarnings struct { InvalidTime bool NotInAudience bool } func scenarioErrorChecker(i int, scenarioErrors map[int]string) func(*testing.T, error) { return func(t *testing.T, err error) { if msg, ok := scenarioErrors[i]; ok && msg != "" { require.EqualError(t, err, msg, "Expected error message") } else { require.NoError(t, err) } } } func scenarioWarningChecker(i int, scenarioWarns map[int]scenarioWarnings) func(*testing.T, *saml2.WarningInfo) { return func(t *testing.T, warningInfo *saml2.WarningInfo) { expectedWarnings := scenarioWarns[i] require.Equal(t, expectedWarnings.InvalidTime, warningInfo.InvalidTime, "InvalidTime mismatch") require.Equal(t, expectedWarnings.NotInAudience, warningInfo.NotInAudience, "NotInAudience mismatch") } } func LoadXMLResponse(path string) string { xml, err := ioutil.ReadFile(path) if err != nil { panic(err) } return base64.StdEncoding.EncodeToString(xml) } func LoadRawResponse(path string) string { data, err := ioutil.ReadFile(path) if err != nil { panic(err) } return string(data) } func LoadKeyStore(certPath, keyPath string) (ks dsig.TLSCertKeyStore) { if certBytes, err := ioutil.ReadFile(certPath); err != nil { panic(fmt.Errorf("%v: cannot read: %v", certPath, err)) } else if keyBytes, err := ioutil.ReadFile(keyPath); err != nil { panic(fmt.Errorf("%v: cannot read: %v", keyPath, err)) } else if cert, err := tls.X509KeyPair(certBytes, keyBytes); err != nil { panic(fmt.Errorf("%v/%v: cannot create key pair: %v", certPath, keyPath, err)) } else { ks = dsig.TLSCertKeyStore(cert) } return } func LoadCertificateStore(path string) dsig.X509CertificateStore { encoded, err := ioutil.ReadFile(path) if err != nil { panic(err) } block, _ := pem.Decode(encoded) if block == nil { panic("no certificate block found") } cert, err := x509.ParseCertificate(block.Bytes) if err != nil { panic(err) } return &dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{cert}, } } type ProviderTestScenario struct { ScenarioName string Response string ServiceProvider *saml2.SAMLServiceProvider CheckError func(*testing.T, error) CheckWarningInfo func(*testing.T, *saml2.WarningInfo) } func getAtTime(idx int, scenarioAtTimes map[int]string) (atTime time.Time) { if strAtTime, ok := scenarioAtTimes[idx]; ok && strAtTime != "" { if atm, err := time.Parse(time.RFC3339, strAtTime); err == nil { return atm } } return // zero time } func spAtTime(template *saml2.SAMLServiceProvider, atTime time.Time, rawResp string) *saml2.SAMLServiceProvider { resp := &types.Response{} if rawResp == "" { panic(fmt.Errorf("empty rawResp")) } var respBytes []byte var err error if respBytes, err = base64.StdEncoding.DecodeString(rawResp); err != nil { respBytes = []byte(rawResp) } if err := xml.Unmarshal(respBytes, resp); err != nil { panic(fmt.Errorf("cannot parse Response XML: %v", err)) } var sp saml2.SAMLServiceProvider sp = *template // copy most fields template, we only set the clock below if atTime.IsZero() { // Prefer more official Assertion IssueInstant over Response IssueIntant // (Assertion will be signed, either individually or as part of Response) if len(resp.Assertions) > 0 && !resp.Assertions[0].IssueInstant.IsZero() { atTime = resp.Assertions[0].IssueInstant } else if !resp.IssueInstant.IsZero() { atTime = resp.IssueInstant } else { panic(fmt.Errorf("could not determine atTime")) } } sp.Clock = dsig.NewFakeClock(clockwork.NewFakeClockAt(atTime)) return &sp } ================================================ FILE: retrieve_assertion.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import "fmt" //ErrMissingElement is the error type that indicates an element and/or attribute is //missing. It provides a structured error that can be more appropriately acted //upon. type ErrMissingElement struct { Tag, Attribute string } type ErrVerification struct { Cause error } func (e ErrVerification) Error() string { return fmt.Sprintf("error validating response: %s", e.Cause.Error()) } //ErrMissingAssertion indicates that an appropriate assertion element could not //be found in the SAML Response var ( ErrMissingAssertion = ErrMissingElement{Tag: AssertionTag} ) func (e ErrMissingElement) Error() string { if e.Attribute != "" { return fmt.Sprintf("missing %s attribute on %s element", e.Attribute, e.Tag) } return fmt.Sprintf("missing %s element", e.Tag) } //RetrieveAssertionInfo takes an encoded response and returns the AssertionInfo //contained, or an error message if an error has been encountered. func (sp *SAMLServiceProvider) RetrieveAssertionInfo(encodedResponse string) (*AssertionInfo, error) { assertionInfo := &AssertionInfo{ Values: make(Values), } response, err := sp.ValidateEncodedResponse(encodedResponse) if err != nil { return nil, ErrVerification{Cause: err} } // TODO: Support multiple assertions if len(response.Assertions) == 0 { return nil, ErrMissingAssertion } assertion := response.Assertions[0] assertionInfo.Assertions = response.Assertions assertionInfo.ResponseSignatureValidated = response.SignatureValidated warningInfo, err := sp.VerifyAssertionConditions(&assertion) if err != nil { return nil, err } //Get the NameID subject := assertion.Subject if subject == nil { return nil, ErrMissingElement{Tag: SubjectTag} } nameID := subject.NameID if nameID == nil { return nil, ErrMissingElement{Tag: NameIdTag} } assertionInfo.NameID = nameID.Value //Get the actual assertion attributes attributeStatement := assertion.AttributeStatement if attributeStatement == nil && !sp.AllowMissingAttributes { return nil, ErrMissingElement{Tag: AttributeStatementTag} } if attributeStatement != nil { for _, attribute := range attributeStatement.Attributes { assertionInfo.Values[attribute.Name] = attribute } } if assertion.AuthnStatement != nil { if assertion.AuthnStatement.AuthnInstant != nil { assertionInfo.AuthnInstant = assertion.AuthnStatement.AuthnInstant } if assertion.AuthnStatement.SessionNotOnOrAfter != nil { assertionInfo.SessionNotOnOrAfter = assertion.AuthnStatement.SessionNotOnOrAfter } assertionInfo.SessionIndex = assertion.AuthnStatement.SessionIndex } assertionInfo.WarningInfo = warningInfo return assertionInfo, nil } ================================================ FILE: run_test.sh ================================================ #!/bin/bash cd `dirname $0` DIRS=`git grep -l 'func Test' | xargs dirname | sort -u` for DIR in $DIRS do echo echo "dir: $DIR" echo "======================================" pushd $DIR >/dev/null go test -v || exit 1 popd >/dev/null done ================================================ FILE: s2example/demo.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package main import ( "crypto/x509" "fmt" "net/http" "io/ioutil" "encoding/base64" "encoding/xml" saml2 "github.com/russellhaering/gosaml2" "github.com/russellhaering/gosaml2/types" dsig "github.com/russellhaering/goxmldsig" ) func main() { res, err := http.Get("http://idp.oktadev.com/metadata") if err != nil { panic(err) } rawMetadata, err := ioutil.ReadAll(res.Body) if err != nil { panic(err) } metadata := &types.EntityDescriptor{} err = xml.Unmarshal(rawMetadata, metadata) if err != nil { panic(err) } certStore := dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{}, } for _, kd := range metadata.IDPSSODescriptor.KeyDescriptors { for idx, xcert := range kd.KeyInfo.X509Data.X509Certificates { if xcert.Data == "" { panic(fmt.Errorf("metadata certificate(%d) must not be empty", idx)) } certData, err := base64.StdEncoding.DecodeString(xcert.Data) if err != nil { panic(err) } idpCert, err := x509.ParseCertificate(certData) if err != nil { panic(err) } certStore.Roots = append(certStore.Roots, idpCert) } } // We sign the AuthnRequest with a random key because Okta doesn't seem // to verify these. randomKeyStore := dsig.RandomKeyStoreForTest() sp := &saml2.SAMLServiceProvider{ IdentityProviderSSOURL: metadata.IDPSSODescriptor.SingleSignOnServices[0].Location, IdentityProviderIssuer: metadata.EntityID, ServiceProviderIssuer: "http://example.com/saml/acs/example", AssertionConsumerServiceURL: "http://localhost:8080/v1/_saml_callback", SignAuthnRequests: true, AudienceURI: "http://example.com/saml/acs/example", IDPCertificateStore: &certStore, SPKeyStore: randomKeyStore, } http.HandleFunc("/v1/_saml_callback", func(rw http.ResponseWriter, req *http.Request) { err := req.ParseForm() if err != nil { rw.WriteHeader(http.StatusBadRequest) return } assertionInfo, err := sp.RetrieveAssertionInfo(req.FormValue("SAMLResponse")) if err != nil { rw.WriteHeader(http.StatusForbidden) return } if assertionInfo.WarningInfo.InvalidTime { rw.WriteHeader(http.StatusForbidden) return } if assertionInfo.WarningInfo.NotInAudience { rw.WriteHeader(http.StatusForbidden) return } fmt.Fprintf(rw, "NameID: %s\n", assertionInfo.NameID) fmt.Fprintf(rw, "Assertions:\n") for key, val := range assertionInfo.Values { fmt.Fprintf(rw, " %s: %+v\n", key, val) } fmt.Fprintf(rw, "\n") fmt.Fprintf(rw, "Warnings:\n") fmt.Fprintf(rw, "%+v\n", assertionInfo.WarningInfo) }) println("Visit this URL To Authenticate:") authURL, err := sp.BuildAuthURL("") if err != nil { panic(err) } println(authURL) println("Supply:") fmt.Printf(" SP ACS URL : %s\n", sp.AssertionConsumerServiceURL) err = http.ListenAndServe(":8080", nil) if err != nil { panic(err) } } ================================================ FILE: saml.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "crypto" "encoding/base64" "sync" "time" "github.com/russellhaering/gosaml2/types" dsig "github.com/russellhaering/goxmldsig" dsigtypes "github.com/russellhaering/goxmldsig/types" ) type ErrSaml struct { Message string System error } func (serr ErrSaml) Error() string { if serr.Message != "" { return serr.Message } return "SAML error" } type SAMLServiceProvider struct { IdentityProviderSSOURL string IdentityProviderSSOBinding string IdentityProviderSLOURL string IdentityProviderSLOBinding string IdentityProviderIssuer string AssertionConsumerServiceURL string ServiceProviderSLOURL string ServiceProviderIssuer string SignAuthnRequests bool SignAuthnRequestsAlgorithm string SignAuthnRequestsCanonicalizer dsig.Canonicalizer // ForceAuthn attribute in authentication request forces the identity provider to // re-authenticate the presenter directly rather than rely on a previous security context. // NOTE: If both ForceAuthn and IsPassive are "true", the identity provider MUST NOT freshly // authenticate the presenter unless the constraints of IsPassive can be met. ForceAuthn bool // IsPassive attribute in authentication request requires that the identity provider and the // user agent itself MUST NOT visibly take control of the user interface from the requester // and interact with the presenter in a noticeable fashion. IsPassive bool // RequestedAuthnContext allows service providers to require that the identity // provider use specific authentication mechanisms. Leaving this unset will // permit the identity provider to choose the auth method. To maximize compatibility // with identity providers it is recommended to leave this unset. RequestedAuthnContext *RequestedAuthnContext AudienceURI string IDPCertificateStore dsig.X509CertificateStore NameIdFormat string ValidateEncryptionCert bool SkipSignatureValidation bool AllowMissingAttributes bool Clock *dsig.Clock // Required encryption key and default signing key. // Deprecated: Use SetSPKeyStore instead of setting or reading this field. SPKeyStore dsig.X509KeyStore // Optional signing key. // Deprecated: Use SetSPSigningKeyStore instead of setting or reading this field. SPSigningKeyStore dsig.X509KeyStore spKeyStoreOverride *KeyStore // When set via SetSPKeyStore, this field is used instead of SPKeyStore spSigningKeyStoreOverride *KeyStore // When set via SetSPSigningKeyStore, this field is used instead of SPSigningKeyStore // MaximumDecompressedBodySize is the maximum size to which a compressed // SAML document will be decompressed. If a compresed document is exceeds // this size during decompression an error will be returned. MaximumDecompressedBodySize int64 signingContextMu sync.RWMutex signingContext *dsig.SigningContext } // SetSPKeyStore sets the encryption key to be used. // It is required to either call this method (recommended) or // set SPKeyStore directly (deprecated). func (sp *SAMLServiceProvider) SetSPKeyStore(ks *KeyStore) error { if ks != nil && ks.Signer == nil { return ErrSaml{Message: "SP key store signer can't be nil"} } sp.spKeyStoreOverride = ks return nil } // SetSPSigningKeyStore sets the signing key to be used. func (sp *SAMLServiceProvider) SetSPSigningKeyStore(ks *KeyStore) error { if ks != nil && ks.Signer == nil { return ErrSaml{Message: "SP signing key store signer can't be nil"} } sp.spSigningKeyStoreOverride = ks return nil } type KeyStore struct { Signer crypto.Signer Cert []byte } // RequestedAuthnContext controls which authentication mechanisms are requested of // the identity provider. It is generally sufficient to omit this and let the // identity provider select an authentication mechansim. type RequestedAuthnContext struct { // The RequestedAuthnContext comparison policy to use. See the section 3.3.2.2.1 // of the SAML 2.0 specification for details. Constants named AuthnPolicyMatch* // contain standardized values. Comparison string // Contexts will be passed as AuthnContextClassRefs. For example, to force password // authentication on some identity providers, Contexts should have a value of // []string{AuthnContextPasswordProtectedTransport}, and Comparison should have a // value of AuthnPolicyMatchExact. Contexts []string } func (sp *SAMLServiceProvider) Metadata() (*types.EntityDescriptor, error) { keyDescriptors := make([]types.KeyDescriptor, 0, 2) if sp.GetSigningKey() != nil { signingCertBytes, err := sp.GetSigningCertBytes() if err != nil { return nil, err } keyDescriptors = append(keyDescriptors, types.KeyDescriptor{ Use: "signing", KeyInfo: dsigtypes.KeyInfo{ X509Data: dsigtypes.X509Data{ X509Certificates: []dsigtypes.X509Certificate{dsigtypes.X509Certificate{ Data: base64.StdEncoding.EncodeToString(signingCertBytes), }}, }, }, }) } encryptionCertBytes, err := sp.GetEncryptionCertBytes() if err != nil { return nil, err } if encryptionCertBytes != nil { keyDescriptors = append(keyDescriptors, types.KeyDescriptor{ Use: "encryption", KeyInfo: dsigtypes.KeyInfo{ X509Data: dsigtypes.X509Data{ X509Certificates: []dsigtypes.X509Certificate{{ Data: base64.StdEncoding.EncodeToString(encryptionCertBytes), }}, }, }, EncryptionMethods: []types.EncryptionMethod{ {Algorithm: types.MethodAES128GCM}, {Algorithm: types.MethodAES192GCM}, {Algorithm: types.MethodAES256GCM}, {Algorithm: types.MethodAES128CBC}, {Algorithm: types.MethodAES256CBC}, }, }) } return &types.EntityDescriptor{ ValidUntil: sp.Clock.Now().UTC().Add(time.Hour * 24 * 7), // 7 days EntityID: sp.ServiceProviderIssuer, SPSSODescriptor: &types.SPSSODescriptor{ AuthnRequestsSigned: sp.SignAuthnRequests, WantAssertionsSigned: !sp.SkipSignatureValidation, ProtocolSupportEnumeration: SAMLProtocolNamespace, KeyDescriptors: keyDescriptors, AssertionConsumerServices: []types.IndexedEndpoint{{ Binding: BindingHttpPost, Location: sp.AssertionConsumerServiceURL, Index: 1, }}, }, }, nil } func (sp *SAMLServiceProvider) MetadataWithSLO(validityHours int64) (*types.EntityDescriptor, error) { signingCertBytes, err := sp.GetSigningCertBytes() if err != nil { return nil, err } encryptionCertBytes, err := sp.GetEncryptionCertBytes() if err != nil { return nil, err } if validityHours <= 0 { // By default let's keep it to 7 days. validityHours = int64(time.Hour * 24 * 7) } return &types.EntityDescriptor{ ValidUntil: sp.Clock.Now().UTC().Add(time.Duration(validityHours)), // default 7 days EntityID: sp.ServiceProviderIssuer, SPSSODescriptor: &types.SPSSODescriptor{ AuthnRequestsSigned: sp.SignAuthnRequests, WantAssertionsSigned: !sp.SkipSignatureValidation, ProtocolSupportEnumeration: SAMLProtocolNamespace, KeyDescriptors: []types.KeyDescriptor{ { Use: "signing", KeyInfo: dsigtypes.KeyInfo{ X509Data: dsigtypes.X509Data{ X509Certificates: []dsigtypes.X509Certificate{{ Data: base64.StdEncoding.EncodeToString(signingCertBytes), }}, }, }, }, { Use: "encryption", KeyInfo: dsigtypes.KeyInfo{ X509Data: dsigtypes.X509Data{ X509Certificates: []dsigtypes.X509Certificate{{ Data: base64.StdEncoding.EncodeToString(encryptionCertBytes), }}, }, }, EncryptionMethods: []types.EncryptionMethod{ {Algorithm: types.MethodAES128GCM, DigestMethod: nil}, {Algorithm: types.MethodAES192GCM, DigestMethod: nil}, {Algorithm: types.MethodAES256GCM, DigestMethod: nil}, {Algorithm: types.MethodAES128CBC, DigestMethod: nil}, {Algorithm: types.MethodAES256CBC, DigestMethod: nil}, }, }, }, AssertionConsumerServices: []types.IndexedEndpoint{{ Binding: BindingHttpPost, Location: sp.AssertionConsumerServiceURL, Index: 1, }}, SingleLogoutServices: []types.Endpoint{{ Binding: BindingHttpPost, Location: sp.ServiceProviderSLOURL, }}, }, }, nil } // Deprecated: This method won't return the correct value if SetSPKeyStore is used. func (sp *SAMLServiceProvider) GetEncryptionKey() dsig.X509KeyStore { return sp.SPKeyStore } // Deprecated: This method won't return the correct value if SetSPSigningKeyStore is used. func (sp *SAMLServiceProvider) GetSigningKey() dsig.X509KeyStore { if sp.SPSigningKeyStore == nil { return sp.GetEncryptionKey() // Default is signing key is same as encryption key } return sp.SPSigningKeyStore } func (sp *SAMLServiceProvider) getEncryptionCert() ([]byte, error) { if sp.spKeyStoreOverride != nil { return sp.spKeyStoreOverride.Cert, nil } if sp.SPKeyStore != nil { _, cert, err := sp.SPKeyStore.GetKeyPair() return cert, err } return nil, nil } func (sp *SAMLServiceProvider) GetEncryptionCertBytes() ([]byte, error) { cert, err := sp.getEncryptionCert() if err != nil { return nil, err } if len(cert) < 1 { return nil, ErrSaml{Message: "empty SP encryption certificate"} } return cert, nil } func (sp *SAMLServiceProvider) getSigningCert() ([]byte, error) { if sp.spSigningKeyStoreOverride != nil { return sp.spSigningKeyStoreOverride.Cert, nil } if sp.SPSigningKeyStore != nil { _, cert, err := sp.SPSigningKeyStore.GetKeyPair() return cert, err } return sp.getEncryptionCert() } func (sp *SAMLServiceProvider) GetSigningCertBytes() ([]byte, error) { cert, err := sp.getSigningCert() if err != nil { return nil, err } if len(cert) < 1 { return nil, ErrSaml{Message: "empty SP signing certificate"} } return cert, nil } func (sp *SAMLServiceProvider) getSignerCert() (crypto.Signer, []byte, error) { if s := sp.spSigningKeyStoreOverride; s != nil { return s.Signer, s.Cert, nil } if s := sp.SPSigningKeyStore; s != nil { return s.GetKeyPair() } return nil, nil, nil } func (sp *SAMLServiceProvider) SigningContext() *dsig.SigningContext { sp.signingContextMu.RLock() signingContext := sp.signingContext sp.signingContextMu.RUnlock() if signingContext != nil { return signingContext } sp.signingContextMu.Lock() defer sp.signingContextMu.Unlock() signing := sp.spSigningKeyStoreOverride if signing == nil { signing = sp.spKeyStoreOverride } var err error if signing != nil { sp.signingContext, err = dsig.NewSigningContext(signing.Signer, [][]byte{signing.Cert}) if err != nil { // Ideally this function should return the error, but updating the function // signature would be backward incompatible. Returning nil avoids the previous // panic while preserving the existing API contract. In practice, this error // should never happen because NewSigningContext only errors when passed a nil // signer, and sp.spSigningKeyStoreOverride only gets set after checking to // ensure the signer is not nil. return nil } } else { sp.signingContext = dsig.NewDefaultSigningContext(sp.GetSigningKey()) } sp.signingContext.SetSignatureMethod(sp.SignAuthnRequestsAlgorithm) if sp.SignAuthnRequestsCanonicalizer != nil { sp.signingContext.Canonicalizer = sp.SignAuthnRequestsCanonicalizer } return sp.signingContext } type ProxyRestriction struct { Count int Audience []string } type WarningInfo struct { OneTimeUse bool ProxyRestriction *ProxyRestriction NotInAudience bool InvalidTime bool } type AssertionInfo struct { NameID string Values Values WarningInfo *WarningInfo SessionIndex string AuthnInstant *time.Time SessionNotOnOrAfter *time.Time Assertions []types.Assertion ResponseSignatureValidated bool } ================================================ FILE: saml_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "bytes" "compress/flate" "crypto" "crypto/rand" "crypto/rsa" "crypto/tls" "crypto/x509" "encoding/base64" "encoding/hex" "encoding/pem" "encoding/xml" "fmt" "io/ioutil" "log" "math/big" "testing" "time" "github.com/beevik/etree" "github.com/jonboulle/clockwork" "github.com/russellhaering/gosaml2/types" dsig "github.com/russellhaering/goxmldsig" "github.com/stretchr/testify/require" ) var cert tls.Certificate var pk crypto.PrivateKey func init() { var err error pfx := "./testdata/test" cert, err = tls.LoadX509KeyPair(fmt.Sprintf("%s.crt", pfx), fmt.Sprintf("%s.key", pfx)) if err != nil { log.Fatal(err) } pk = cert.PrivateKey } func TestDecode(t *testing.T) { f, err := ioutil.ReadFile("./testdata/saml.post") if err != nil { t.Fatalf("could not open test file: %v\n", err) } decoded := make([]byte, len(f)) base64.StdEncoding.Decode(decoded, f) response := &types.Response{} err = xml.Unmarshal(decoded, response) if err != nil { t.Fatalf("error decoding test saml: %v", err) } ea := response.EncryptedAssertions[0] k, err := ea.EncryptedKey.DecryptSymmetricKey(&cert) if err != nil { t.Fatalf("could not get symmetric key: %v\n", err) } if k == nil { t.Fatalf("no symmetric key") } assertion, err := ea.Decrypt(&cert) if err != nil { t.Fatalf("error decrypting saml data: %v\n", err) } f2, err := ioutil.ReadFile("./testdata/saml.xml") if err != nil { t.Fatalf("could not read expected output") } expected := &types.Assertion{} err = xml.Unmarshal(f2, expected) require.EqualValues(t, expected, assertion, "decrypted assertion did not match expectation") } type testKeyStoreImpl struct { key *rsa.PrivateKey cert []byte } func (ks *testKeyStoreImpl) GetKeyPair() (*rsa.PrivateKey, []byte, error) { return ks.key, ks.cert, nil } // testKeyStore generates an RSA key pair with a certificate valid at the given // time, suitable for use with a fake clock in tests. func testKeyStore(t *testing.T, validAt time.Time) dsig.X509KeyStore { t.Helper() key, err := rsa.GenerateKey(rand.Reader, 1024) require.NoError(t, err) template := &x509.Certificate{ SerialNumber: big.NewInt(0), NotBefore: validAt.Add(-time.Hour), NotAfter: validAt.Add(365 * 24 * time.Hour), KeyUsage: x509.KeyUsageDigitalSignature, BasicConstraintsValid: true, } certBytes, err := x509.CreateCertificate(rand.Reader, template, template, &key.PublicKey, key) require.NoError(t, err) return &testKeyStoreImpl{key: key, cert: certBytes} } func signResponse(t *testing.T, resp string, sp *SAMLServiceProvider) string { doc := etree.NewDocument() err := doc.ReadFromBytes([]byte(resp)) require.NoError(t, err) el := doc.Root() // Strip existing signatures signatures := el.FindElements("//Signature") for _, sig := range signatures { parent := sig.Parent() parent.RemoveChild(sig) } el, err = sp.SigningContext().SignEnveloped(el) require.NoError(t, err) doc0 := etree.NewDocument() doc0.SetRoot(el) doc0.WriteSettings = etree.WriteSettings{ CanonicalAttrVal: true, CanonicalEndTags: true, CanonicalText: true, } str, err := doc0.WriteToString() require.NoError(t, err) return str } // getSAMLServiceProvider returns a SAMLServiceProvider that needs to either // set SPKeyStore or call SetSPKeyStore. func getSAMLServiceProvider(t *testing.T, _cert []byte) *SAMLServiceProvider { t.Helper() block, _ := pem.Decode([]byte(idpCertificate)) require.NotEmpty(t, block) cert, err := x509.ParseCertificate(block.Bytes) require.NoError(t, err) require.NotEmpty(t, cert) cert0, err := x509.ParseCertificate(_cert) require.NoError(t, err) require.NotEmpty(t, cert0) certStore := dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{cert, cert0}, } return &SAMLServiceProvider{ IdentityProviderSSOURL: "https://dev-116807.oktapreview.com/app/scaleftdev116807_scaleft_1/exk5zt0r12Edi4rD20h7/sso/saml", IdentityProviderIssuer: "http://www.okta.com/exk5zt0r12Edi4rD20h7", AssertionConsumerServiceURL: "http://localhost:8080/v1/_saml_callback", SignAuthnRequests: true, AudienceURI: "123", IDPCertificateStore: &certStore, NameIdFormat: NameIdFormatPersistent, Clock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC))), } } func TestSAML(t *testing.T) { ks := testKeyStore(t, time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC)) _, _cert, err := ks.GetKeyPair() require.NoError(t, err) sp := getSAMLServiceProvider(t, _cert) sp.SPKeyStore = ks testSAMLServiceProvider(t, sp) } func TestSAMLUsingSetSPKeyStore(t *testing.T) { ks := testKeyStore(t, time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC)) privateKey, _cert, err := ks.GetKeyPair() require.NoError(t, err) sp := getSAMLServiceProvider(t, _cert) sp.SetSPKeyStore(&KeyStore{ Cert: _cert, Signer: privateKey, }) testSAMLServiceProvider(t, sp) } func testSAMLServiceProvider(t *testing.T, sp *SAMLServiceProvider) { t.Helper() authRequestURL, err := sp.BuildAuthURL("/some/link/here") require.NoError(t, err) require.NotEmpty(t, authRequestURL) authRequestString, err := sp.BuildAuthRequest() require.NoError(t, err) require.NotEmpty(t, authRequestString) // Note (Phoebe): The sample responses we acquired expired fairly quickly, meaning that our validation will fail // because we check the expiration time; // I've modified them to expire in ~100 years and removed their signatures, since those hash values are no longer // valid. We have to re-sign them here before validating them raw := signResponse(t, rawResponse, sp) el, err := sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(raw))) require.NoError(t, err) require.NotEmpty(t, el) assertionInfo, err := sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(raw))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.NotNil(t, assertionInfo.WarningInfo) // always set when err == nil require.False(t, assertionInfo.WarningInfo.OneTimeUse) require.False(t, assertionInfo.WarningInfo.NotInAudience) require.False(t, assertionInfo.WarningInfo.InvalidTime) require.Nil(t, assertionInfo.WarningInfo.ProxyRestriction) require.Equal(t, "phoebe.simon@scaleft.com", assertionInfo.NameID) require.Equal(t, "phoebe.simon@scaleft.com", assertionInfo.Values.Get("Email")) require.Equal(t, "Phoebe", assertionInfo.Values.Get("FirstName")) require.Equal(t, "Simon", assertionInfo.Values.Get("LastName")) require.Equal(t, "phoebesimon", assertionInfo.Values.Get("Login")) assertionInfoModifiedAudience := signResponse(t, assertionInfoModifiedAudienceResponse, sp) assertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoModifiedAudience))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.True(t, assertionInfo.WarningInfo.NotInAudience) assertionInfoOneTimeUse := signResponse(t, assertionInfoOneTimeUseResponse, sp) assertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoOneTimeUse))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.True(t, assertionInfo.WarningInfo.OneTimeUse) assertionInfoProxyRestriction := signResponse(t, assertionInfoProxyRestrictionResponse, sp) assertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoProxyRestriction))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.NotEmpty(t, assertionInfo.WarningInfo.ProxyRestriction) require.Equal(t, 3, assertionInfo.WarningInfo.ProxyRestriction.Count) require.Equal(t, []string{"123"}, assertionInfo.WarningInfo.ProxyRestriction.Audience) assertionInfoProxyRestrictionNoCount := signResponse(t, assertionInfoProxyRestrictionNoCountResponse, sp) assertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoProxyRestrictionNoCount))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.NotEmpty(t, assertionInfo.WarningInfo.ProxyRestriction) require.Equal(t, 0, assertionInfo.WarningInfo.ProxyRestriction.Count) require.Equal(t, []string{"123"}, assertionInfo.WarningInfo.ProxyRestriction.Audience) assertionInfoProxyRestrictionNoAudience := signResponse(t, assertionInfoProxyRestrictionNoAudienceResponse, sp) assertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoProxyRestrictionNoAudience))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.NotEmpty(t, assertionInfo.WarningInfo.ProxyRestriction) require.Equal(t, 3, assertionInfo.WarningInfo.ProxyRestriction.Count) require.Equal(t, []string{}, assertionInfo.WarningInfo.ProxyRestriction.Audience) assertionInfoResp := signResponse(t, assertionInfoResponse, sp) assertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoResp))) require.NoError(t, err) require.NotEmpty(t, assertionInfo) require.NotEmpty(t, assertionInfo.Values) require.Equal(t, "phoebe.simon@scaleft.com", assertionInfo.Values.Get("Email")) require.Equal(t, "Phoebe", assertionInfo.Values.Get("FirstName")) require.Equal(t, "Simon", assertionInfo.Values.Get("LastName")) require.Equal(t, "phoebe.simon@scaleft.com", assertionInfo.Values.Get("Login")) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(manInTheMiddledResponse))) require.Error(t, err) require.Equal(t, "Signature could not be verified", err.Error()) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredReferenceURIResponse))) require.Error(t, err) // require.IsType(t, ErrInvalidValue{}, err, err.Error()) require.Equal(t, "Could not verify certificate against trusted certs", err.Error()) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredSignedInfoResponse))) require.Error(t, err) require.Equal(t, "Could not verify certificate against trusted certs", err.Error()) alteredRecipient := signResponse(t, alteredRecipientResponse, sp) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredRecipient))) require.Error(t, err) require.IsType(t, err, ErrInvalidValue{}) require.Contains(t, err.Error(), "Recipient") alteredDestination := signResponse(t, alteredDestinationResponse, sp) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredDestination))) require.Error(t, err) require.IsType(t, err, ErrInvalidValue{}) require.Equal(t, err.(ErrInvalidValue).Key, "Destination") alteredSubjectConfirmationMethod := signResponse(t, alteredSubjectConfirmationMethodResponse, sp) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredSubjectConfirmationMethod))) require.Error(t, err) require.IsType(t, err, ErrInvalidValue{}) require.Equal(t, err.(ErrInvalidValue).Reason, ReasonUnsupported) require.Equal(t, err.(ErrInvalidValue).Key, SubjectConfirmationTag) alteredVersion := signResponse(t, alteredVersionResponse, sp) _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredVersion))) require.Error(t, err) require.IsType(t, err, ErrInvalidValue{}) require.Equal(t, err.(ErrInvalidValue).Reason, ReasonUnsupported) require.Equal(t, err.(ErrInvalidValue).Key, "SAML version") require.Contains(t, err.Error(), "Unsupported SAML version") _, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(missingIDResponse))) require.Error(t, err) require.Equal(t, "Signature could not be verified", err.Error()) } func TestInvalidResponseBadBase64(t *testing.T) { sp := &SAMLServiceProvider{} response, err := sp.ValidateEncodedResponse("invalid-base64") require.EqualError(t, err, "illegal base64 data at input byte 7") require.Nil(t, response) } func TestInvalidResponseBadCompression(t *testing.T) { sp := &SAMLServiceProvider{} // Value from: https://github.com/golang/go/blob/23416315060bf7601e5779c3a6a2529d4d604584/src/compress/flate/flate_test.go#L219 rawResponse, err := hex.DecodeString("33180700") require.NoError(t, err) b64Response := base64.StdEncoding.EncodeToString(rawResponse) response, err := sp.ValidateEncodedResponse(b64Response) require.EqualError(t, err, "flate: corrupt input before offset 3") require.Nil(t, response) } func TestInvalidResponseBadXML(t *testing.T) { sp := &SAMLServiceProvider{} compressed := &bytes.Buffer{} compressor, err := flate.NewWriter(compressed, flate.BestCompression) require.NoError(t, err) compressor.Write([]byte(">Definitely&Invalid XML")) compressor.Close() b64Response := base64.StdEncoding.EncodeToString(compressed.Bytes()) response, err := sp.ValidateEncodedResponse(b64Response) require.EqualError(t, err, "XML syntax error on line 1: invalid character entity &Invalid (no semicolon)") require.Nil(t, response) } func TestInvalidResponseNoElement(t *testing.T) { sp := &SAMLServiceProvider{} b64Response := base64.StdEncoding.EncodeToString([]byte("no-element-here")) response, err := sp.ValidateEncodedResponse(b64Response) require.EqualError(t, err, "unable to parse response") require.Nil(t, response) } func TestSAMLCommentInjection(t *testing.T) { /* Explanation: See: https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations The TLDR is that XML canonicalization may result in a different value being signed from the one being retrieved. The target of this is the NameID in the Subject of the SAMLResponse Assertion Example: The following Subject ``` user@user.com.evil.com ``` would get canonicalized to ``` user@user.com.evil.com ``` Many XML parsers have a behavior where they pull the first text element, so in the example with the comment, a vulnerable XML parser would return `user@user.com`, ignoring the text after the comment. Knowing this, a user (user@user.com.evil.com) can attack a vulnerable SP by manipulating their signed SAMLResponse with a comment that turns their username into another one. */ // To show that we are not vulnerable, we want to prove that we get the canonicalized value using our parser _, el, err := parseResponse([]byte(commentInjectionAttackResponse), 0) require.NoError(t, err) decodedResponse := &types.Response{} err = xmlUnmarshalElement(el, decodedResponse) require.NoError(t, err) require.Equal(t, "phoebe.simon@scaleft.com.evil.com", decodedResponse.Assertions[0].Subject.NameID.Value, "The full, canonacalized NameID should be returned.") } ================================================ FILE: test_constants.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 var idpCertificate = ` -----BEGIN CERTIFICATE----- MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+a -----END CERTIFICATE----- ` const rawResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebesimon` const manInTheMiddledResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7ijTqmVmDy7ssK+rvmJaCQ6AQaFaXz+HIN/r6O37B0eQ=G09fAYXGDLK+/jAekHsNL0RLo40Xm6+VwXmUj0IDIrvIIv/mJU5VD6ylOLnPezLDBVY9BJst1YCz+8krdvmQ8Stkd6qiN2bN/5KpCdika111YGpeNdMmg/E57ZG3S895hTNJQYOfCwhPFUtQuXLkspOaw81pcqOTr+bVSofJ8uQP7cVQa/ANxbjKAj0fhAuxAvZfiqPms5Stv4sNGpzULUDJl87CoEleHExGmpTsI7Qt3EvGToPMZXPHF4MGvuC0Z2ZD4iI6Pr7xk98t54PJtAX2qJu1tZqBJmL0Qcq5spl9W3yC1tAZuDeFLm1C4/T9crO2Q5WILP/tkw/yJ+ZttQ==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+ahttp://www.okta.com/exk5zt0r12Edi4rD20h7zln6sheEO2JBdanrT5mZtJZ192tGHavuBpCFHQsJFVg=dHh6TWbnjtImyrfjPTX5QzE/6Vm/HsRWVvWWlvFAddf/CvhO4Kc5j8C7hvQoYMLhYuZMFFSReGysuDy5IscOJwTGhhcvb238qHSGGs6q8OUBCsmLSDAbIaGA++LV/tkUZ2ridGIi0yT81UOl1oT1batlHsK3eMyxkpnFmvBzIm4tGTzRkOPpYRLeiM9bxbKI+DM/623DCXyBCLYBzJo1O6QE02aLajwRMi/vmiV4LSiGlFcY9TtDCafdVJRv0tIQ25BQoT4feuHdr6S8xOSpGgRYH5ECamVOt4e079XdEkVUiSzQokiUkgDlTXEyerPLOVsOk4PW5nRs86sXIiGL5w==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiH9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.com` const alteredReferenceURIResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7ijTqmVmDy7ssK+rvmJaCQ6AQaFaXz+HIN/r6O37B0eQ=G09fAYXGDLK+/jAekHsNL0RLo40Xm6+VwXmUj0IDIrvIIv/mJU5VD6ylOLnPezLDBVY9BJst1YCz+8krdvmQ8Stkd6qiN2bN/5KpCdika111YGpeNdMmg/E57ZG3S895hTNJQYOfCwhPFUtQuXLkspOaw81pcqOTr+bVSofJ8uQP7cVQa/ANxbjKAj0fhAuxAvZfiqPms5Stv4sNGpzULUDJl87CoEleHExGmpTsI7Qt3EvGToPMZXPHF4MGvuC0Z2ZD4iI6Pr7xk98t54PJtAX2qJu1tZqBJmL0Qcq5spl9W3yC1tAZuDeFLm1C4/T9crO2Q5WILP/tkw/yJ+ZttQ==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+ahttp://www.okta.com/exk5zt0r12Edi4rD20h7zln6sheEO2JBdanrT5mZtJZ192tGHavuBpCFHQsJFVg=dHh6TWbnjtImyrfjPTX5QzE/6Vm/HsRWVvWWlvFAddf/CvhO4Kc5j8C7hvQoYMLhYuZMFFSReGysuDy5IscOJwTGhhcvb238qHSGGs6q8OUBCsmLSDAbIaGA++LV/tkUZ2ridGIi0yT81UOl1oT1batlHsK3eMyxkpnFmvBzIm4tGTzRkOPpYRLeiM9bxbKI+DM/623DCXyBCLYBzJo1O6QE02aLajwRMi/vmiV4LSiGlFcY9TtDCafdVJRv0tIQ25BQoT4feuHdr6S8xOSpGgRYH5ECamVOt4e079XdEkVUiSzQokiUkgDlTXEyerPLOVsOk4PW5nRs86sXIiGL5w==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiH9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.com` const alteredSignedInfoResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7ijTqmVmDy7ssK+rvmJaCQ6AQaFaXz+HIN/r6O37B0eQ=G09fAYXGDLK+/jAekHsNL0RLo40Xm6+VwXmUj0IDIrvIIv/mJU5VD6ylOLnPezLDBVY9BJst1YCz+8krdvmQ8Stkd6qiN2bN/5KpCdika111YGpeNdMmg/E57ZG3S895hTNJQYOfCwhPFUtQuXLkspOaw81pcqOTr+bVSofJ8uQP7cVQa/ANxbjKAj0fhAuxAvZfiqPms5Stv4sNGpzULUDJl87CoEleHExGmpTsI7Qt3EvGToPMZXPHF4MGvuC0Z2ZD4iI6Pr7xk98t54PJtAX2qJu1tZqBJmL0Qcq5spl9W3yC1tAZuDeFLm1C4/T9crO2Q5WILP/tkw/yJ+ZttQ==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEV MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+ahttp://www.okta.com/exk5zt0r12Edi4rD20h7zln6sheEO2JBdanrT5mZtJZ192tGHavuBpCFHQsJFVg=dHh6TWbnjtImyrfjPTX5QzE/6Vm/HsRWVvWWlvFAddf/CvhO4Kc5j8C7hvQoYMLhYuZMFFSReGysuDy5IscOJwTGhhcvb238qHSGGs6q8OUBCsmLSDAbIaGA++LV/tkUZ2ridGIi0yT81UOl1oT1batlHsK3eMyxkpnFmvBzIm4tGTzRkOPpYRLeiM9bxbKI+DM/623DCXyBCLYBzJo1O6QE02aLajwRMi/vmiV4LSiGlFcY9TtDCafdVJRv0tIQ25BQoT4feuHdr6S8xOSpGgRYH5ECamVOt4e079XdEkVUiSzQokiUkgDlTXEyerPLOVsOk4PW5nRs86sXIiGL5w==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiH9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.com` const alteredRecipientResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const alteredSubjectConfirmationMethodResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const alteredDestinationResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const alteredVersionResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const missingIDResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7mj+xyS5DtKVNbbFq4caWhGcrirqNzv7mIHNzHQH/f60=GA1URoMOE5EFfkHYimGXm7Ecph/m0s135VyF9Wut6NSpuZdQ2crM1IslvKCRjkE09rZgagQQMAThUcOFuX35dZPz9J4Ihpt1juhfGv1AV8I8jiOKFETj65MiPabDEi8+P6YWf4qNujAJXHKJIa/MFXBqoKR/imLQT8eu1nhVBQGYqWwZePddfXO2JYk2ce7mtnyMT0dUVb+o+tlEDYa7ri9fj4JL/z1XX7yrbVZxn2mdKPJtSSP8uHNOWSM6j1vp4oK+KSDviBfiVLlVA58noz5GyFtp642h+LV2quKbncMFfnfB1kfHLK/xaz9UaDBy+bHK4oGzSpVhZqcOzzliKA==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+ahttp://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const assertionInfoResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const assertionInfoModifiedAudienceResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com124urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const assertionInfoOneTimeUseResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const assertionInfoProxyRestrictionResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const assertionInfoProxyRestrictionNoCountResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const assertionInfoProxyRestrictionNoAudienceResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebe.simon@scaleft.com` const exampleBase64 = `PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL19zYW1sX2NhbGxiYWNrIiBJRD0iaWQxMDM1MzI4MDQ2NDc3ODc5NzUzODEzMjUiIEluUmVzcG9uc2VUbz0iXzg2OTljNjU1LWM0ODItNDUxYS05YjdmLTYxNjY4ZjE0MGI0NyIgSXNzdWVJbnN0YW50PSIyMDE2LTAzLTE2VDAxOjAyOjU3LjY4MloiIFZlcnNpb249IjIuMCI+PHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHA6Ly93d3cub2t0YS5jb20vZXhrNXp0MHIxMkVkaTRyRDIwaDc8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiNpZDEwMzUzMjgwNDY0Nzc4Nzk3NTM4MTMyNSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPm5wVEFsNmtyYWtzQmxDUmx1bmJ5RDZuSUNUY2ZzRGFIalBYVnhvRFBydzA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlNiQjAzZkkxVFZzdEo3cTFCNlh4OFlSR2tEcE5ROGFyNHpGM3AzYWlra2NxOFRUUzBlUjI4Rm9RdU4xSFg3MlBuMnJjY0U0T05pellOUzYvcnZybHlWL1NsWFhtQzltaFRMUlBlSno1bXJ4anFPNVFZRDFZM0l6bW5rZlE2S3V0dWtrY0dPSkVwYTN2WWVzZjVKS1JTKzBXR1J0ek9TNHdKRjE4b0dJWitiYThQNmd4bU1yeUE4eEIvZUpneHBmcm1VYkJqUEhMU2ZsamViaDg4RWlOSUQwODhYdVNHeWQrM0RtcFc1QjUyRFFCOGNBeXlPQlJrUlJjcUxGSWd4aWJtdnRJaWVxdVUwYTJuY29qcHUwKzRvamwrNHdEQ1dkR09FeXF0Sm9UUVhDNHNLUmFVNzlGSzVJRmZFaVlNcXZpRkQwb2F1NHNQajBnbkZDRUY1Rmw0dz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEcERDQ0FveWdBd0lCQWdJR0FWTElCaEF3TUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdTTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHCkExVUVDQXdLUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnd3TlUyRnVJRVp5WVc1amFYTmpiekVOTUFzR0ExVUVDZ3dFVDJ0MFlURVUKTUJJR0ExVUVDd3dMVTFOUFVISnZkbWxrWlhJeEV6QVJCZ05WQkFNTUNtUmxkaTB4TVRZNE1EY3hIREFhQmdrcWhraUc5dzBCQ1FFVwpEV2x1Wm05QWIydDBZUzVqYjIwd0hoY05NVFl3TWpBNU1qRTFNakEyV2hjTk1qWXdNakE1TWpFMU16QTJXakNCa2pFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURWTmhiaUJHY21GdVkybHpZMjh4RFRBTEJnTlYKQkFvTUJFOXJkR0V4RkRBU0JnTlZCQXNNQzFOVFQxQnliM1pwWkdWeU1STXdFUVlEVlFRRERBcGtaWFl0TVRFMk9EQTNNUnd3R2dZSgpLb1pJaHZjTkFRa0JGZzFwYm1adlFHOXJkR0V1WTI5dE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBCm10akJPWjhNbWhVeWk4Y0drNGRVWTZGajFNRkR0L3EzRkZpYVFwTHp1My9xNWxSVlVOVUJiQXRxUVd3WTEwZHpmWmd1SE91dkE1cDUKUXlpVkR2VWhlK1hrVndOMlIyV2ZBclFKUlRQbkljT2FIcnhxUWYzbzVjQ0lHMjFadHlzRkhKU284Y2xQU09lKzBWc29SZ2NKMWFGNAoyck9Ed2dxUlJaZE85V2gzNTAyWGxKNzk5REpRMjNJQzdYYXNLRXNHS3pKcWhsUnJmZC9GeUl1WlQwc0ZIREtSejVzblNKaG05Z3BOCnVRbENtazdPTloxc1hxdHQrbkJJZldJcWVvWVF1YlBXN3BUNUdUYzd3b3VXcTRUQ2pISmlLOWsySGl5TnhXMEUzSlgwOHN3RVppMisKTFZEamdMek5jNGx3alNZSWozQU90UFpzOHM2MDZvQmRJQm5pNHdJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJNeFNrSgpUeGtYeHNvS05XMGF3Sk5wV1JiVTgxUXBoZU1GZkVOSXpMYW00SXRjLzVrU1pBYVN5LzllMlFLZm80akJvL01NYkNxMnZNOVR5ZUpRCkRKcFJhaW9VVGQybEdoNFRMVXhBeEN4dFVrL3Bhc2NMKzNObjkzNkxGbVVDTHhheG5iZUd6UE9YQWhzY0N0VTFIMG5Gc1hSbkt4NWEKY1BYWVNLRlpaWmt0aWVTa3d3Mk9pOGRnMkRZYVFoR1FNU0ZNVnFnVmZ3RXU0YnZDUkJ2ZFNpTlhkV0dDWlFtRlZ6QlpaLzlyT0x6UApwdlRGVFBucGthdkptODFGTGxVaGlFL29GZ0tsQ0RMV0RrblNwWEFJMHVaR0VSY3dQY2E2eHZJTWg4NkxqUUtqYlZjaTlGWURTdFhDCnFSbnFRK1RjY1N1L0I2dU9ORnNERW5nR2NYU0tmQithPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPjxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1sMnA6U3RhdHVzPjxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJpZDEwMzUzMjgwNDY1MjY1ODg5MDAwODk0MjQiIElzc3VlSW5zdGFudD0iMjAxNi0wMy0xNlQwMTowMjo1Ny42ODJaIiBWZXJzaW9uPSIyLjAiPjxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vd3d3Lm9rdGEuY29tL2V4azV6dDByMTJFZGk0ckQyMGg3PC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIjaWQxMDM1MzI4MDQ2NTI2NTg4OTAwMDg5NDI0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+Tm8xVnlRbGs4WGlmNEZpSitoYVZpd0VReVNJekJhMTRsR3kwY29DbjBjOD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+VlNWOFZ3NDdxN24vWFp3YVFPUFdRZUtJNVpBNjlmbkdaeUVGaGV4NHh1YUlmQytMT1luZmQ4cThxY1pzbTFNNmt2NDdIL2RSNllYUklNalBLWFpleVgvTUtjbUdQQ2FkcVdGVDdFV0Z2enVPL3V5L0FCL0NMNVpDUWlZOUgvYU9oRHlzTzhnbHNlMVMrWTJLMEN3dnNvUndNZkZpTzJYT1loVk9zbmdVU2tDQmRMSUI2T3E0Zitac0swcncvRTc5bjlRVWQ4b3dEcTNkVkMxOFNGWVlkY0lWRGhRcHBnbHl1QkVaZnUydEcwNmdEOWpsczdaRTh2amNNZkhtaHVIdHhsSDNvdk5MQjM1TkZPL1ZyQ05kRnFtRDc2R25FQTk4Zm9pSnhDWDh2ek5IRjRyUFVGWEFFZGlTNE9kUUF4YjdqTk5Wb0tWWXVhZHVuTHlneXNaR1NnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURwRENDQW95Z0F3SUJBZ0lHQVZMSUJoQXdNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JR1NNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUcKQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCd3dOVTJGdUlFWnlZVzVqYVhOamJ6RU5NQXNHQTFVRUNnd0VUMnQwWVRFVQpNQklHQTFVRUN3d0xVMU5QVUhKdmRtbGtaWEl4RXpBUkJnTlZCQU1NQ21SbGRpMHhNVFk0TURjeEhEQWFCZ2txaGtpRzl3MEJDUUVXCkRXbHVabTlBYjJ0MFlTNWpiMjB3SGhjTk1UWXdNakE1TWpFMU1qQTJXaGNOTWpZd01qQTVNakUxTXpBMldqQ0JrakVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNNRFZOaGJpQkdjbUZ1WTJselkyOHhEVEFMQmdOVgpCQW9NQkU5cmRHRXhGREFTQmdOVkJBc01DMU5UVDFCeWIzWnBaR1Z5TVJNd0VRWURWUVFEREFwa1pYWXRNVEUyT0RBM01Sd3dHZ1lKCktvWklodmNOQVFrQkZnMXBibVp2UUc5cmRHRXVZMjl0TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKbXRqQk9aOE1taFV5aThjR2s0ZFVZNkZqMU1GRHQvcTNGRmlhUXBMenUzL3E1bFJWVU5VQmJBdHFRV3dZMTBkemZaZ3VIT3V2QTVwNQpReWlWRHZVaGUrWGtWd04yUjJXZkFyUUpSVFBuSWNPYUhyeHFRZjNvNWNDSUcyMVp0eXNGSEpTbzhjbFBTT2UrMFZzb1JnY0oxYUY0CjJyT0R3Z3FSUlpkTzlXaDM1MDJYbEo3OTlESlEyM0lDN1hhc0tFc0dLekpxaGxScmZkL0Z5SXVaVDBzRkhES1J6NXNuU0pobTlncE4KdVFsQ21rN09OWjFzWHF0dCtuQklmV0lxZW9ZUXViUFc3cFQ1R1RjN3dvdVdxNFRDakhKaUs5azJIaXlOeFcwRTNKWDA4c3dFWmkyKwpMVkRqZ0x6TmM0bHdqU1lJajNBT3RQWnM4czYwNm9CZElCbmk0d0lEQVFBQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQk14U2tKClR4a1h4c29LTlcwYXdKTnBXUmJVODFRcGhlTUZmRU5JekxhbTRJdGMvNWtTWkFhU3kvOWUyUUtmbzRqQm8vTU1iQ3Eydk05VHllSlEKREpwUmFpb1VUZDJsR2g0VExVeEF4Q3h0VWsvcGFzY0wrM05uOTM2TEZtVUNMeGF4bmJlR3pQT1hBaHNjQ3RVMUgwbkZzWFJuS3g1YQpjUFhZU0tGWlpaa3RpZVNrd3cyT2k4ZGcyRFlhUWhHUU1TRk1WcWdWZndFdTRidkNSQnZkU2lOWGRXR0NaUW1GVnpCWlovOXJPTHpQCnB2VEZUUG5wa2F2Sm04MUZMbFVoaUUvb0ZnS2xDRExXRGtuU3BYQUkwdVpHRVJjd1BjYTZ4dklNaDg2TGpRS2piVmNpOUZZRFN0WEMKcVJucVErVGNjU3UvQjZ1T05Gc0RFbmdHY1hTS2ZCK2E8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5ydXNzZWxsLmhhZXJpbmdAc2NhbGVmdC5jb208L3NhbWwyOk5hbWVJRD48c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89Il84Njk5YzY1NS1jNDgyLTQ1MWEtOWI3Zi02MTY2OGYxNDBiNDciIE5vdE9uT3JBZnRlcj0iMjAxNi0wMy0xNlQwMTowNzo1Ny42ODJaIiBSZWNpcGllbnQ9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWwyOlN1YmplY3Q+PHNhbWwyOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE2LTAzLTE2VDAwOjU3OjU3LjY4MloiIE5vdE9uT3JBZnRlcj0iMjAxNi0wMy0xNlQwMTowNzo1Ny42ODJaIiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWwyOkF1ZGllbmNlPjEyMzwvc2FtbDI6QXVkaWVuY2U+PC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDI6Q29uZGl0aW9ucz48c2FtbDI6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE2LTAzLTE2VDAxOjAyOjU3LjY4MloiIFNlc3Npb25JbmRleD0iXzg2OTljNjU1LWM0ODItNDUxYS05YjdmLTYxNjY4ZjE0MGI0NyIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sMjpBdXRobkNvbnRleHQ+PHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWwyOkF1dGhuQ29udGV4dD48L3NhbWwyOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDI6QXNzZXJ0aW9uPjwvc2FtbDJwOlJlc3BvbnNlPg==` const exampleBase64_2 = `PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL19zYW1sX2NhbGxiYWNrIiBJRD0iaWQyMTI4MjQ4OTI5NTEwNjcwODM0NTU5MTg1IiBJblJlc3BvbnNlVG89Il9kYTIxM2RmOC1lZjk1LTQxZDAtYjliZi03MWQyNzE3MzVjZDciIElzc3VlSW5zdGFudD0iMjAxNi0wMy0yOFQxNjozODoxOC41NjVaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHA6Ly93d3cub2t0YS5jb20vZXhrNXp0MHIxMkVkaTRyRDIwaDc8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiNpZDIxMjgyNDg5Mjk1MTA2NzA4MzQ1NTkxODUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjxlYzpJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zOmVjPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9InhzIi8+PC9kczpUcmFuc2Zvcm0+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+V3ZnVy9KZlA0bWpVKy8xd3R5WDA2RTlFR3hZTnNvQ1UrcmJTWm5Bdmoycz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+R0ExVVJvTU9FNUVGZmtIWWltR1htN0VjcGgvbTBzMTM1VnlGOVd1dDZOU3B1WmRRMmNyTTFJc2x2S0NSamtFMDlyWmdhZ1FRTUFUaFVjT0Z1WDM1ZFpQejlKNElocHQxanVoZkd2MUFWOEk4amlPS0ZFVGo2NU1pUGFiREVpOCtQNllXZjRxTnVqQUpYSEtKSWEvTUZYQnFvS1IvaW1MUVQ4ZXUxbmhWQlFHWXFXd1plUGRkZlhPMkpZazJjZTdtdG55TVQwZFVWYitvK3RsRURZYTdyaTlmajRKTC96MVhYN3lyYlZaeG4ybWRLUEp0U1NQOHVITk9XU002ajF2cDRvSytLU0R2aUJmaVZMbFZBNThub3o1R3lGdHA2NDJoK0xWMnF1S2JuY01GZm5mQjFrZkhMSy94YXo5VWFEQnkrYkhLNG9HelNwVmhacWNPenpsaUtBPT08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURwRENDQW95Z0F3SUJBZ0lHQVZMSUJoQXdNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JR1NNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUcKQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCd3dOVTJGdUlFWnlZVzVqYVhOamJ6RU5NQXNHQTFVRUNnd0VUMnQwWVRFVQpNQklHQTFVRUN3d0xVMU5QVUhKdmRtbGtaWEl4RXpBUkJnTlZCQU1NQ21SbGRpMHhNVFk0TURjeEhEQWFCZ2txaGtpRzl3MEJDUUVXCkRXbHVabTlBYjJ0MFlTNWpiMjB3SGhjTk1UWXdNakE1TWpFMU1qQTJXaGNOTWpZd01qQTVNakUxTXpBMldqQ0JrakVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNNRFZOaGJpQkdjbUZ1WTJselkyOHhEVEFMQmdOVgpCQW9NQkU5cmRHRXhGREFTQmdOVkJBc01DMU5UVDFCeWIzWnBaR1Z5TVJNd0VRWURWUVFEREFwa1pYWXRNVEUyT0RBM01Sd3dHZ1lKCktvWklodmNOQVFrQkZnMXBibVp2UUc5cmRHRXVZMjl0TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKbXRqQk9aOE1taFV5aThjR2s0ZFVZNkZqMU1GRHQvcTNGRmlhUXBMenUzL3E1bFJWVU5VQmJBdHFRV3dZMTBkemZaZ3VIT3V2QTVwNQpReWlWRHZVaGUrWGtWd04yUjJXZkFyUUpSVFBuSWNPYUhyeHFRZjNvNWNDSUcyMVp0eXNGSEpTbzhjbFBTT2UrMFZzb1JnY0oxYUY0CjJyT0R3Z3FSUlpkTzlXaDM1MDJYbEo3OTlESlEyM0lDN1hhc0tFc0dLekpxaGxScmZkL0Z5SXVaVDBzRkhES1J6NXNuU0pobTlncE4KdVFsQ21rN09OWjFzWHF0dCtuQklmV0lxZW9ZUXViUFc3cFQ1R1RjN3dvdVdxNFRDakhKaUs5azJIaXlOeFcwRTNKWDA4c3dFWmkyKwpMVkRqZ0x6TmM0bHdqU1lJajNBT3RQWnM4czYwNm9CZElCbmk0d0lEQVFBQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQk14U2tKClR4a1h4c29LTlcwYXdKTnBXUmJVODFRcGhlTUZmRU5JekxhbTRJdGMvNWtTWkFhU3kvOWUyUUtmbzRqQm8vTU1iQ3Eydk05VHllSlEKREpwUmFpb1VUZDJsR2g0VExVeEF4Q3h0VWsvcGFzY0wrM05uOTM2TEZtVUNMeGF4bmJlR3pQT1hBaHNjQ3RVMUgwbkZzWFJuS3g1YQpjUFhZU0tGWlpaa3RpZVNrd3cyT2k4ZGcyRFlhUWhHUU1TRk1WcWdWZndFdTRidkNSQnZkU2lOWGRXR0NaUW1GVnpCWlovOXJPTHpQCnB2VEZUUG5wa2F2Sm04MUZMbFVoaUUvb0ZnS2xDRExXRGtuU3BYQUkwdVpHRVJjd1BjYTZ4dklNaDg2TGpRS2piVmNpOUZZRFN0WEMKcVJucVErVGNjU3UvQjZ1T05Gc0RFbmdHY1hTS2ZCK2E8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWwycDpTdGF0dXM+PHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9ImlkMjEyODI0ODkyOTU3NzY3ODIxMjY0NjgzMTkiIElzc3VlSW5zdGFudD0iMjAxNi0wMy0yOFQxNjozODoxOC41NjVaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly93d3cub2t0YS5jb20vZXhrNXp0MHIxMkVkaTRyRDIwaDc8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiNpZDIxMjgyNDg5Mjk1Nzc2NzgyMTI2NDY4MzE5Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48ZWM6SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxuczplYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSJ4cyIvPjwvZHM6VHJhbnNmb3JtPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPkZzV0dDQkMrdC9MYVZrVUtVdlJRcHp5WlRtbHhVenc0UjlGT3pYUFBKUnc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmhTNTBXZ1lzL2NuM3V4bWhyemEvMC8wUVczSDdid2RqUFoyaFFtRzdJZVNkN2F3VE9naEJxZHJqdmFQZlE3dFJXK1VLNmV3TWdJQlZLRzZqVjNxWUFXZVcyVTcwaE1iN2hFOXFKcUJLeVl5aW1taFZXVUx4MUhCMlltbFUxd21pc3B5d29QbFhRNmdqMGlXYUwyUkZJODN2VXA3WDUwZVo2ZEVMcW9KVlpwelFJMDY1VHQwVEc3VXVLVVcxZmxZc2JpUzlOYVhudXcrbWNyQlcyNVpBOUY1Q0xlUEhraTAxWnpVdytYdE5tS3RoRWI3U1IzMG16UG9qMDhEamkyMmRhWXZHdTgySVIwMXdJWlBvUUpQQ0dNVDZ5MnhDL3BRUHFHbGpBZy92VWErZ2FZZ2FNYUFWWXhoay9oZmdNVUJsT2VLQUNCYUdUbXlnYWIxTno1S3ZQZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEcERDQ0FveWdBd0lCQWdJR0FWTElCaEF3TUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdTTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHCkExVUVDQXdLUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnd3TlUyRnVJRVp5WVc1amFYTmpiekVOTUFzR0ExVUVDZ3dFVDJ0MFlURVUKTUJJR0ExVUVDd3dMVTFOUFVISnZkbWxrWlhJeEV6QVJCZ05WQkFNTUNtUmxkaTB4TVRZNE1EY3hIREFhQmdrcWhraUc5dzBCQ1FFVwpEV2x1Wm05QWIydDBZUzVqYjIwd0hoY05NVFl3TWpBNU1qRTFNakEyV2hjTk1qWXdNakE1TWpFMU16QTJXakNCa2pFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURWTmhiaUJHY21GdVkybHpZMjh4RFRBTEJnTlYKQkFvTUJFOXJkR0V4RkRBU0JnTlZCQXNNQzFOVFQxQnliM1pwWkdWeU1STXdFUVlEVlFRRERBcGtaWFl0TVRFMk9EQTNNUnd3R2dZSgpLb1pJaHZjTkFRa0JGZzFwYm1adlFHOXJkR0V1WTI5dE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBCm10akJPWjhNbWhVeWk4Y0drNGRVWTZGajFNRkR0L3EzRkZpYVFwTHp1My9xNWxSVlVOVUJiQXRxUVd3WTEwZHpmWmd1SE91dkE1cDUKUXlpVkR2VWhlK1hrVndOMlIyV2ZBclFKUlRQbkljT2FIcnhxUWYzbzVjQ0lHMjFadHlzRkhKU284Y2xQU09lKzBWc29SZ2NKMWFGNAoyck9Ed2dxUlJaZE85V2gzNTAyWGxKNzk5REpRMjNJQzdYYXNLRXNHS3pKcWhsUnJmZC9GeUl1WlQwc0ZIREtSejVzblNKaG05Z3BOCnVRbENtazdPTloxc1hxdHQrbkJJZldJcWVvWVF1YlBXN3BUNUdUYzd3b3VXcTRUQ2pISmlLOWsySGl5TnhXMEUzSlgwOHN3RVppMisKTFZEamdMek5jNGx3alNZSWozQU90UFpzOHM2MDZvQmRJQm5pNHdJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJNeFNrSgpUeGtYeHNvS05XMGF3Sk5wV1JiVTgxUXBoZU1GZkVOSXpMYW00SXRjLzVrU1pBYVN5LzllMlFLZm80akJvL01NYkNxMnZNOVR5ZUpRCkRKcFJhaW9VVGQybEdoNFRMVXhBeEN4dFVrL3Bhc2NMKzNObjkzNkxGbVVDTHhheG5iZUd6UE9YQWhzY0N0VTFIMG5Gc1hSbkt4NWEKY1BYWVNLRlpaWmt0aWVTa3d3Mk9pOGRnMkRZYVFoR1FNU0ZNVnFnVmZ3RXU0YnZDUkJ2ZFNpTlhkV0dDWlFtRlZ6QlpaLzlyT0x6UApwdlRGVFBucGthdkptODFGTGxVaGlFL29GZ0tsQ0RMV0RrblNwWEFJMHVaR0VSY3dQY2E2eHZJTWg4NkxqUUtqYlZjaTlGWURTdFhDCnFSbnFRK1RjY1N1L0I2dU9ORnNERW5nR2NYU0tmQithPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnBob2ViZS5zaW1vbkBzY2FsZWZ0LmNvbTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2RhMjEzZGY4LWVmOTUtNDFkMC1iOWJmLTcxZDI3MTczNWNkNyIgTm90T25PckFmdGVyPSIyMDE2LTAzLTI4VDE2OjQzOjE4LjU2NVoiIFJlY2lwaWVudD0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDI6U3ViamVjdD48c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTYtMDMtMjhUMTY6MzM6MTguNTY1WiIgTm90T25PckFmdGVyPSIyMDE2LTAzLTI4VDE2OjQzOjE4LjU2NVoiIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj48c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDI6QXVkaWVuY2U+MTIzPC9zYW1sMjpBdWRpZW5jZT48L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sMjpDb25kaXRpb25zPjxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTYtMDMtMjhUMTY6Mzg6MTguNTY1WiIgU2Vzc2lvbkluZGV4PSJfZGEyMTNkZjgtZWY5NS00MWQwLWI5YmYtNzFkMjcxNzM1Y2Q3IiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+PHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlBob2ViZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+PC9zYW1sMjpBdHRyaWJ1dGU+PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U2ltb248L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDI6QXR0cmlidXRlPjxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnBob2ViZS5zaW1vbkBzY2FsZWZ0LmNvbTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+PC9zYW1sMjpBdHRyaWJ1dGU+PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJMb2dpbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cGhvZWJlLnNpbW9uQHNjYWxlZnQuY29tPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT48L3NhbWwyOkF0dHJpYnV0ZT48L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWwyOkFzc2VydGlvbj48L3NhbWwycDpSZXNwb25zZT4=` const commentInjectionAttackResponse = ` http://www.okta.com/exk5zt0r12Edi4rD20h7http://www.okta.com/exk5zt0r12Edi4rD20h7FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW DWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV BAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ KoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA mtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5 QyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4 2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN uQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+ LVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ TxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ DJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a cPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP pvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC qRnqQ+TccSu/B6uONFsDEngGcXSKfB+aphoebe.simon@scaleft.com.evil.com123urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportPhoebeSimonphoebe.simon@scaleft.comphoebesimon` const doubleColonAssertionInjectionAttackResponse = ` https://app.onelogin.com/saml/metadata/634027 <::Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2.0" ID="x" IssueInstant="2017-03-08T07:53:39Z">https://app.onelogin.com/saml/metadata/634027gd5V090n/m4JRrtpo5WgrwPyyy0=what@launchdarkly.com{audience}urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport https://app.onelogin.com/saml/metadata/634027gd5V090n/m4JRrtpo5WgrwPyyy0=SLzvdNM+1R1+3XsXpC+/RIvb5L4Lhy7Eb7caPG2CLMPYhzbKLAwIiT7/0fEMO/xL7rdIgEShbcU9iu5PX4hGYBhirsFIZvdHytns5+JKHnlVBmHm4TsSU1z+dGMXBa//L0KFSrvdgBUpsr5vs50SuYnnVp61VN+zCLMqO221CQfP95QyMcSQ+fiyq4GOmWLwQy1m1+NV3U8zlapp6FIH5stW/dp4OqpRdafV96rVwmmR4yeUw7VAzbJuMrPgkXO9nUbHeMUTgQxkQ4ThzG5jt6fT+Ro1NOYS4zpVtzqlQwGzqWxQVRLEqXIf500/Qi0NuFQOW42ZAUiXDgdLENTVGA==MIIEJjCCAw6gAwIBAgIUOHrykO4ce1TbjvGgXXVVnR4NsqMwDQYJKoZIhvcNAQEFBQAwXTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDExhdW5jaERhcmtseTEVMBMGA1UECwwMT25lTG9naW4gSWRQMSAwHgYDVQQDDBdPbmVMb2dpbiBBY2NvdW50IDEwMjEyNzAeFw0xNzAzMDYwMjQ2NTNaFw0yMjAzMDcwMjQ2NTNaMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaJ02AnJe5vq+zzkmrIHhRy8V/UxJogbJGEJW6nqrEmO7Q4sXO7dLIKxGccCEz0KAavGKWzSX9uhVvKpazpD4bW80wPQIgFxN3CjiA3qlYIfhhh4emSZo2AnaTuG4BPVGFNPx0jxXGAhh/3xkpIsqARJFPB6njT2+MwFctm3fockx3Yp4e1xoUD8qQR0f/8oq1LjrYd2Vlckmmw7qrzSqS8POHW/I1jx9Y/vAjTPWDKXmbmLcTe3188PDrthSyoBuaAGBRVTP9WTuYMh4kGvmfX6sNvIDGejUcUCq6IObRr4xLSZiGy5uoyqsQc9agAhQm+26Gpq0R3NSvN91JdbZHAgMBAAGjgd0wgdowDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUnbxBsHgNVq3OSXEuG5EkR0Jd1UswgZoGA1UdIwSBkjCBj4AUnbxBsHgNVq3OSXEuG5EkR0Jd1UuhYaRfMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjeCFDh68pDuHHtU247xoF11VZ0eDbKjMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAL/6j2qpMCrnolwKT7mfPEpA6btbtl0R0t6zSwYUVU9T3PK0/P3LKXvbjSySov0E4R9d5qlOcyj5CbYiuqAO2aON3xy82s0dN3FHRiO6kcjoRPwVIIF0S8x7tpzcPKa42zSPfBqMRw4ezUEzTijFriepkSWST1Btr3QeK2Cxhr0fC1xmw/YK82BV0/oVRslGL27ro+v3/dNY0A0r32Xe2+THomrY/YaZaDCPCjHo8dlxrX3D/mPfoiiKSkm2mGagQXT0giTHVo3oIq+u+KdrBcQn65EBcjfFKDIeFCdiVmO0xPl9mmWskVRLy2/wpuDIp6hnAphl9lj5DY48eBsrEXQ==arun@launchdarkly.com{audience}urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport ` ================================================ FILE: testdata/assertion.xml ================================================ https://idp.astuart.co/idp/shibboleth AAdzZWNyZXQx6UL9kX1rPkSRwv/pFpk49idUCREsqJRkBQvfzT1Fd2ZsVQbw+QXIzXhBUhmPdydrqqXIC0NEMBWriN5zl1A+q761LIFNcElBcPKrolxyzuPt oauth.astuart.co urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport astuart member andrew.stuart2@gmail.com ================================================ FILE: testdata/idp.crt ================================================ -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIUDPz+OwougAXSuQmKDyAEL46KlPgwDQYJKoZIhvcNAQEL BQAwHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MB4XDTE1MDYwNDIyMTA0 NFoXDTM1MDYwNDIyMTA0NFowHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApa0K3OtkHwOnBKSJ7PxT 7zry+p8kpu20d+whJs9mHW8w+DikLQ2orLPDZA34Xor0QdR6Y6+gqezIJqqpvuaj YTneQQtXD3neCGD9pPemyF4efEnl21YHryt6Juy6VXIcB6ytHGhmaWg41btdxweD li0b6M7Z6KAW5FjJUoqA+GqFY8rvdm0HZQN+ko4KRK7zTft6ZaPOSbQd7vMtU8bj Msh2XGLWx9G10jvCOFDUbsCNQ3xeFkV30rlUgjb6p2eRUSDWcVPs2Q/FG3t8TVfJ dDtRYps7QW0GDaCPM5hYnlSm+gXwkS8V0j8bGPjv7TfxxK3VMx6okIVsKga7swuZ 4QIDAQABo3AwbjAdBgNVHQ4EFgQUT56D4cLSoNxs17FBY+evwXvL2jowTQYDVR0R BEYwRIISY29sbGVnZS5jY2N0Y2EuZWR1hi5odHRwczovL2NvbGxlZ2UuY2NjdGNh LmVkdTo4NDQzL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBAQBiG0Nw KxslU74tcgjK8CBVahTs5s9Nh2s/En9lP6iWqS2wOHotZ19qqp+AJoIG0pJJpQ6o fRSHdWD2uHmF0F7Uzu1XBxxbV3oG8DmbhzUw2TAOsn0Czt8V30Tfn9U+auNW2XSb z27FACHplll7/T+pycCW6vUcw+boDJIG92TxqIMzlBQOzDGGOTGf/OaKXLb48rWT kEfMv//2Kh735TytX0bJsPmmCLlI9kLcrBNKgHGPNB7oeQNGnYOu+ALxSIugZ7MW LRx2jHND7RSVTetgfEEkkSzsebCxNKMdhIL62Z8VZgYUGD07EeV/3RZ0eV0q5Yf8 BhBA6Owk2P264O4R -----END CERTIFICATE----- ================================================ FILE: testdata/saml.post ================================================ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNhbWwycDpSZXNwb25zZSBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sMi50ZXN0LmFzdHVhcnQuY28vc3NvL3NhbWwyIiBJRD0iX2I5ZThlNmJkZGIxZjYwNDgzODAyYzdhZTRhYTkyMmE2IiBJc3N1ZUluc3RhbnQ9IjIwMTYtMDQtMjhUMjI6NDE6NDkuNjU1WiIgVmVyc2lvbj0iMi4wIiB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cHM6Ly9pZHAuYXN0dWFydC5jby9pZHAvc2hpYmJvbGV0aDwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8ZHM6U2lnbmVkSW5mbz4KPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz4KPGRzOlJlZmVyZW5jZSBVUkk9IiNfYjllOGU2YmRkYjFmNjA0ODM4MDJjN2FlNGFhOTIyYTYiPgo8ZHM6VHJhbnNmb3Jtcz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPC9kczpUcmFuc2Zvcm1zPgo8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+CjxkczpEaWdlc3RWYWx1ZT4wYkZ5Q1IxdVdiNnQydW91RzJIbXFzaEtzclI1cVNOVmZOaml4WFBzdmxzPTwvZHM6RGlnZXN0VmFsdWU+CjwvZHM6UmVmZXJlbmNlPgo8L2RzOlNpZ25lZEluZm8+CjxkczpTaWduYXR1cmVWYWx1ZT4KRThjRnVlOXp3eithTjVIZU9JNmJLWnd2QkJEY3lhOGFhYUFvNkNRbjF4SzMyQjhhbFdCaEkzOFdTMDZqc2NEOEhOdlFDUTIrZ0ZIegoza3ZmM0hjR2o1TkxzZUhnV2xMbVpCOEtlb3dadE4vbkhGNlVSL2I4czFWaUx3YTFEcVF4VVkra29lR3NrL1JTSjVFaVY5L3JQOHdGCkFCQ2hOQ1dvSWlJWHM3Y0s1U2VlbmJWWmNJUVBHMEZNOERUaVVuTHVzS2szdVlodzFNZUpKTEVjSWdoRWxQT0lldlVEYjA1dktRYi8KTC83Vk1MZTFJN280RW5CV1lSSGdpZ1R5a2RwdDNNTzJVYTdvVi9oOW1IWmxUMWZPWENKM2d4QzM3cHVKN1pvMHZjcmVnZE5iSUoxUQowN0RYSjBCMEo0MS9jRERQZHNSRjRRVFN0ZFFuTjJyNkVjQlp0UT09CjwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURPRENDQWlDZ0F3SUJBZ0lVUUg1NGt5eWVhY1U2OUoyaXd6OWJ6ZUxtTWFzd0RRWUpLb1pJaHZjTkFRRUxCUUF3SFRFYk1Ca0cKQTFVRUF3d1NZMjlzYkdWblpTNWpZMk4wWTJFdVpXUjFNQjRYRFRFMU1EWXdOREl5TVRBek1Wb1hEVE0xTURZd05ESXlNVEF6TVZvdwpIVEViTUJrR0ExVUVBd3dTWTI5c2JHVm5aUzVqWTJOMFkyRXVaV1IxTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCCkNnS0NBUUVBbEpoTjIwbmcyVk4vY1RyV3RxVUlOYVVzckhDa1lYYm0yeTFQVE40YjZmSkk1aGJ2Y3YrTFdDdUxrTGkzK2lQR2xCcGMKSEhmcmRKY3lobUJIUkhROVNvczNSSUg1THNuMUlnaldlM2h4UVFtVmVFaTV4VnhudzJZWkdIYWVYNFluSTFURUJKd2h0Sm15aXRrNwo0TEh5YlBHRXFPSmRBcFVuTHo1NEw3SSsyNTJHL2NPZkVxVUhNYnh4dG1IU2MvOWNoRjhiQnhROE96SWJKc0J5SG5xaWF3UUh3dHN0CnRyZTduMzI4Z1ZxbWYxVkhFMjdjZkFZaVNqdUs1cENzeC8xa3VKTUJOK2tnLzNHZzlvaTZhUjUwV1gxVlVGM0lCY25URGVpQVhSejMKUGdzVDhGbFZab3U2SWs5TlQvWTVJSE9aVkdrNjRTUkRhRzhGdUd4TGV4WHJzd0lEQVFBQm8zQXdiakFkQmdOVkhRNEVGZ1FValF3YQpBb1kzdS9pVG9JRTNBRGVORVcrVXUzNHdUUVlEVlIwUkJFWXdSSUlTWTI5c2JHVm5aUzVqWTJOMFkyRXVaV1IxaGk1b2RIUndjem92CkwyTnZiR3hsWjJVdVkyTmpkR05oTG1Wa2RUbzRORFF6TDJsa2NDOXphR2xpWW05c1pYUm9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUIKQVFCMjZyZHhwaE4xWUthZDN5RGhMZzZZMVp3Ym1BamMrbDRRQjFLU0wrY0xxaERuNWlNeTRWZFdoOEhwU0tScUN3b2ZMdGx3M3FPdwpvc3BqK21KYWd1WFJNcGpZT0RSUWFLUmtUckNHeEpodU5yUXhEWEwvYjZGT0VJSm5VWWVuYlBldnVOZ1JKYzFWblJFaFdVVVhUNDRLCk41WVV6OUZFaUcwQnNCSzhlY0NQS0J6VFEvaHdhY3pocHF3NnVxVk1xeEphVEdjbmxDVUhKQWhWSGlBOGxXSjd2YU5Qc0o4NnhCRnMKL0Y3NkV3eUZYSUtRYXJ1dmN2Q2hVN0dOTlNZZE5KQmE2SE85OVFXZEdicjVhTlE0ZGl1bm5CUWRyZGpnYlFJd3loS1RmYkZXYTJsNQp2YnFFS0RjMGR3dVBhNmMyNWw4cnVxeHFDUTFDRjhaRERKMFhWNkFiPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWwycDpTdGF0dXM+PHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWwycDpTdGF0dXM+PHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHhlbmM6RW5jcnlwdGVkRGF0YSBJZD0iX2Q2ZWEzNDRkMGIzMGFkN2Y3OWU1MDZjY2EwNjczZDJmIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxMjgtY2JjIiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiLz48ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PHhlbmM6RW5jcnlwdGVkS2V5IElkPSJfZGYxNTllZTY1ZTI1ZDkyNDk1ZmQ4YTMzY2MyMDVkMjUiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sMi50ZXN0LmFzdHVhcnQuY28vc3NvL3NhbWwyIiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCIgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRDJ6Q0NBc09nQXdJQkFnSUpBTmZEMmh5alc3MmxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0RNUXN3Q1FZRFZRUUdFd0phV2pFVQpNQklHQTFVRUNBd0xWSEpoYm5GMWFXeHBkSGt4SVRBZkJnTlZCQW9NR0VsdWRHVnlibVYwSUZkcFpHZHBkSE1nVUhSNUlFeDBaREVTCk1CQUdBMVVFQXd3SmMyRnRiQzUwWlhOME1TY3dKUVlKS29aSWh2Y05BUWtCRmhoaGJtUnlaWGN1YzNSMVlYSjBNa0JuYldGcGJDNWoKYjIwd0hoY05NVFl3TkRJNE1qSXpPREU1V2hjTk1UWXdOVEk0TWpJek9ERTVXakNCZ3pFTE1Ba0dBMVVFQmhNQ1dsb3hGREFTQmdOVgpCQWdNQzFSeVlXNXhkV2xzYVhSNU1TRXdId1lEVlFRS0RCaEpiblJsY201bGRDQlhhV1JuYVhSeklGQjBlU0JNZEdReEVqQVFCZ05WCkJBTU1DWE5oYld3dWRHVnpkREVuTUNVR0NTcUdTSWIzRFFFSkFSWVlZVzVrY21WM0xuTjBkV0Z5ZERKQVoyMWhhV3d1WTI5dE1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXB3dGc5MWZHbTdOWkJBU3JBZEFTbUs4Nk5zaDFmTkZzNnB6NApGRmZDd3lVSHVsSlRLQ2s2UGgwVG9HUmNPRmhWZ1BXdFBZa0N3TDZpVW1KVFB6ajV1b0IwWTNlRjJNTSt0a2l4OGY0UlVyV3pwcXlNCmhFQ3RzdjRyekY3THBaWENXZEpIbk45WjZ6d0ZkTHh1YjZWMDFQR21JaHRHeWY5bUVxWjJxb25TSVBBem9SQnpaU3RQdTRTSmtKekkKTjNCdHR2SFZSVkYrRTVBS3hZTHZrQlR0bDVKekNzaXZzK2hUcnJEZy96d2lxN3lYT3dvWmh6UHJBSHJpWVBPTG0vc1B1d1RJQnhBSAptS3dwMGloREhwRUM1ZU5BWHZDaGtVWWNHOERkRE5wU3hqcEg2dWZ5Vkx4ZktXdEhVY0huSkNHbncvTFVnSTFTMWJkbGpleVplS0ZCCk13SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVpdWNlWnVYZkZ1azFhQy9KMVJRVllRdHpsejR3SHdZRFZSMGpCQmd3Rm9BVWl1Y2UKWnVYZkZ1azFhQy9KMVJRVllRdHpsejR3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFuM1NoWFZVbApjYU04Ym10bHBGNnN0R0IwMGJOaW5WZmtHUTFPV1lWYjhKN2wzUVBiMnBLMGFvY2NiNk15RGhtdGhZWWVTTmNMVlVLNkoweUhDUVVDCjJjRmEveTdqd1pIaG5iNVJvTUxqWWFuMDcxMEZaeTI3WThMWVZOcGR0VDNSS3hQSHpXSVc4RUVMc1NoSFExVWZHTlBRbytPeGRWbGoKelFHcERqak5QaUZLSkZSdDdBNFhVUkhmUzQzZDVtTWo2em5HSGNzUDRYcGNRTFpYcFF3Rit1N1R5SHRBWHdLT0lhblJ1R3J3b0J0QQpXdlpCZ0VKMDQ3S2RIWkd5eGE0MnlXSUxGVytmcmFLNFZ4NndvNTZMTGx3b1RFSEI4WUx1SEF1b0Z0WXhxNGZPL09SSlBseEVOc3pUCnhwaFhhWVVvcnlSeVBDaXVNT0tvNzcwd2ErNEQrZz09PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkNpcGhlclZhbHVlPmJLSUpoUC95MW9weFlENGlOWGJOSCt3RVFFdnBFZjhrM1ZsTjBaQnRydit3VGh3U0JoRjBvcEdsaWhZb3lvNXdZMUhQTjR6cXpRTVUKQUJ3OHpLRDVwVmYyeURIbEJ1VWljbUFVeU5LOS9OTFQwOHk0elUxMk9ES0k2U0tuaFY5UVRwZTBRdmRnUk90TUdGZUp2T2JGWnBIKwp4TmNHUHpzSjgvQmhZczQwK2JUVUk2ZVRNQkVjaTM2MGJOc0ZONHlBT3g1S0dTejVpQis4cFphLytCVlltSkd3RjBxenlhQ3haL1RKCnZEVDhML0dEc0QxT1J2OXFjSjR3SEUvaTNZUTBiRnBRNFZrbEFZb0s1enkrRjAxczFqTU9vWjZ3N3VXZmdQMkRZSGcyQi9ndm9SN3UKdERTbkY4R1V3NG1WSkRZSEVQalBNNXE5R0hXTzErWlY1UzIvcGc9PTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkS2V5PjwvZHM6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+PHhlbmM6Q2lwaGVyVmFsdWU+anpFU2tPWjg0TFQzK2d6bktCT1NiQ2g2bTF3d2w1emVSYzZCS2xSMnpldzlaMXo2NFY5RngzbEFzbFZNcTJ4VmtRaTlTNWI3bTI5VAppSDZPejVCNXdqL1NCaU4vcmlnSUp1eFltRGtJSHZoaURVdXhxSkFyT09aZlVuL0JUOXJsbHRiZ01UcDlNUWVEcGo3cTA0K1o0aDlUCjdYaTlnMzh2V2t5cDg3V011SHFkcUxTQzdJZmlhL25iNUcwbE1hRTZnUi9zSm1oTWYycFFzcnR2YlpET1hIWVRlRDc1YjhVZE5oQTYKakhZV25jOTFNd1dISkREZXdKRVdnWDAzdzJ0N2pZSDBUdDM2dXBzSGFFaUxEYzBBa1hFRVpCMVY0SlBUTTBLT211MWt1blFEaWpSRgpjSXA2bk5WbWxRamFaaEJ0ODh5R1BvNWxwUUtXRkpUeEM1WENtWllnbi9GRm50RDhCUld4WGt5WDV1eVZTTmlxckhENkltRTNYclEvCkp6VC9NM2M5SU9KMm9LUVJzWEhwK1JrOHdOVHNaT0c0a0ZYMUhjMmZROFJWNlZSc1pydnFTbzJKZGt2Vnp5d0NWY1dRWjBvNXQ1UjUKT1RqUDQ3MlpzTzVZdnRKd1l3djlXNGFzcm1WNmlpZjRGcHJZUTdjOThDRXNaaFBSTERoSERRdzVJcVc3VTI1VGRyLy9YQ0RnV2JrVQpSd1A0VTF2emM5ZnpSOWpjdzlrZjBEc2x1M0JSRDZTRzI2QU1Ec3BJaG5ycXZ5Q25hc2ZvRm9KZVlJRnRCYnRlak4xN3NWVXp1cWtXCkc3Y0lYWWtOYUFNcWlMbFNYV3pIU25DTjRhc2RyUHFFVDgxLzd0YTZXeTVVOHNnbkdXRnd5Mk9OUUFBTmRiZC9KVHVRcFpteTBhdHIKVmViQUpEbmc5MUJ2Rmc5Z0FiUWQ5cVNZZHpRVlFnekpSY1NiYWwzZ284R0FQU2FKTmNFMXExZU53VjdmVWU3VDRrbGR6RXZ1Mks0RAp0YzBpaG1kSnFYMXRNUXd2Tk9BTzZKdDQxdVIrZ2NDMkhMQzIwMVJjN3R5NDdyY0ZIdlNOMnJnQjRwVTluZm9LSDhWL2REWXdYY0JTClgrMlp4TG80d3B0NmtFL3JOSWtzTjBFMzFzN3dzakRYODlNL0pJTFNPL1A0ZHhpVU1aU3VDOUJ5T2NVNURLR1pRUDBGSXBWeFJOT3cKQ1IyK0RjNjJsa0JBbHVFdXJ4V0RvdVZxUXZOOEJPN252dUR0Ylg2ZzFseXpvVWNwb3h5MEcyZjU3Y1E1RzRHZGhMTHZoNmlMSDVLRgpoankxbWVNNktuYktqYW8xVm4yZ3B2ZkszaUpuaDQ0WTBaNENMVlo0UnRhZ3ZYd1VmY2ZmWHg2QXJ5UEJabnpPdjY3c01NdkJyVzFECmN1Y1VKdjNCUXBXZkU2TG44K3ZtRHVCSUJmWllsMWhreDB0akFSTE9odklkekVRcGRuV2lkak9sRWZ1MUcrV2F5QjBEM2xmUHhVeGEKT3o0ZFN3ZDJHV1Z1UTdocTgwcElaYmtUMGVxR3NmdDJNYVpRTTdZb3JnOWd3MExuY0d6V1FTaE9SWG93UitkSnVmQ3NKc2hrM3JNRApoNXhuOFkwSXpSZFRyQTZIMG5vTmhhdkIxUlpkd0dRMHJ3T0R0eC9Qekk0ZzZMN1NVdDVlNGFSUmwrK3F1QkdYU2dhWWNqb2taemdjCmVQUndQWlRyNGZRYTFNdlNYenBIcUl6emRBc2lmczZMRFZBdU5hZkt4T1h5Qjd3YzlTTkk3b2RrcGxNeDNiMFdhNngzdjZ0emY2OFMKeEVJWlBVL09ZdE0xSnFTMElIbVREQ2tHb21IYkd6WXFmV3FhUG5meUV2S0VEc2krWC93ZWtMdVNoYllvdVkzejQ1bEd5R1VKVmRGcwpLOVhieUxaS3A0WlZtV1g1anV1eGgrcWF1QlUyc0Z6R2phcVUxS0hXRmNFSGo0Nmo5OVpXajR1RlZXZ0ZFbVpsZXFKUThhTTM1UzA5ClBlaVk1aU9vWW00SnlDbXdRcFlaNzlnZGpzN2J5bGN4RmFmOUp3dHlYakhQUEt2TDRkYy9zN2djaDFoQk1yaU5NTWsybGcxN0wzamUKTjg2WitNMy9OQWgwZXhiUUI2QXRrOHhDcGhWR0hsd1lQSU5UWCtod0d3cmZWaTM0NmEwZG93VUh1ckxSUlBOWUpTVTBZOUoxS3MwMApXSlBSQnZpUlppQUJDYTJqOGpDb3gxejgweE9HOHduOGhCZGJyUFBzUjF3SDZzR3Q3dzJPalROam14eGZWSmVzWTZqeTlzaE5FUUJiClhvSlREY1BaS21tVGxadjI3eDdpTWNIa1cxVHZXemlKTndoTjFiMW1pTnJkU3JuQ3QrREV0Uy9wa3FaNVdzMUxtM1p5NlFlYmVaSUQKOThCNjI0cXZZMU5idFBkRlIyR3JLMTZrUEdCNjlVU0pRWk9NT3pNc3MvQmM3L3YwWTYvU0NnYkxBbTJCT21xWGt1RVlvWmhBYVNtUQpaRkhrWHFVVTJlZ21HMEtIQ2hLd21rd0ZZdG0wanVkbTJQL3kzaUtFSzBEMmhwSXhZSVErWktta1drS2ZaMkdJTGZkSkI3UWN5ZDZrCjNiV1hWdHdMeXA1ZWdSRlYxT1U3Ti9kQ2lUWEdtSG12b1ZTSjhHN0xkY0RoMGNwQityd1ZGYXRSbStVLzVldmVOQXF3ZkV4dnlaZVkKQ3NmOFNXWVVVaERUK3FTaW4yck5aREJnWnVncHBYUFVFOGwra1JKSGJKR3hiZWpuKzlxRWl1Q0hhN1FzNW43VnpFL1RnR2ZXSDVtUQo3eDZKZFh6a1IzeUVCaHFpOU1OQkF3QUxQQm04SFlSVzRaUFZtcVU0R0ZGY1ZJbDdHVVJybkViUU90VlE5TWFyS0JSMWpUYkcrbWduCmdBVGR1eGVTMWcwZnowYzA2ckZaQVZ5bU5GS0s2OExsWG9CQ2tVdTl6SmIyeEVFL1IwSDd4RC9OVExSL1I0cXNMUXVRbHFnZmYxS2MKdzlRd05IWlBDVWwreTV0VDNzL3lrMitwTnU0c25oREpza0ZmSTZiNTNtSEU4OEV5V2ljQUthS3FjdnNGSVh5ME1QbE51Y0REUHhPMApsVksyNzJneHl6WEgyYWwva0paaU5kclRZZWphV2c2TFdpeGpxSzFxYWZIVXVmb2xWOUhsbUNTOXdmWlpJU3FHQ1BpcUM0ZGh3NXFxCnppSTlYalB1L0t5RmYwUk1WWlQ1K08xMjhhKytaSVkrWnhxS05lSG1ZazJTeTN4Y3hVQzBtUEtvcVQ1eHhNRUE1N21ueWdhMjdpOWMKVGwyYUlveXB4YjFzNVI5V3AzT2k5cEltcVBwT2ZmTmFVbXZlMGp4TXl0RXdMbWJWeXE0R2FpUjBnV0JEVjh5dXRaY0NRQU9EZmI2WgpTMjAraG53T0JmYWhkZWRZOU9pNUtnWHJSd2NZN3RwalkvNXYra21jb0UzamVFNHhoNGxySmo5UzVMWkppcEQ2OUhraTlmNzdiTzAxCnVjcWN1Z3RwS1dLUGowNUtQdXB4QjFwaEZYRWZSemJDczhqZXczd3d5YzRGVnlVQnN6OFE1RjJYTTcweFVLK0duekNzWko3T3JEQ3YKNnowMjNXZjFyMHJvQytycUEwaUdsMlYzR3pIeG42RDVQL3JIekhJTGxhZTdSMnVDMGNHL1dJYkExRUpYMlU2a01OVmxidVM3cG84UgoxWEdLbExSTHlmT1QrcHNBWHREVHErU28vM21HV0VMUHA2TXRMeVlSM0pRR2I2OVJGUEhTS09SMDJ5M2h5b3d6MjV1eUNNNThCdU9oCldrWkxWVUJSaUhFZTJabC9DZWhLL0VtMnRmTFV2UnJSaDllRGZlWU9qeVFPVWNidjlsOHkvZC85S2NjbU16UnJFN0JUQUNiakFlYmQKdE1kL2QycWtxWE9LTFBvTzdNdlRnRW4rYXZEREoyM1BPZlhVSmdzeXRRYkUwdjNiM0pnRXVkOUoxT0t3cnUxOWlhdXkwM3FHdTRpSgpZUlVTR1JwazB3Z1djRWo5YlZTeldhLzVtYUlLU2Jmd3ZJc3hJdEpuS2xPV2pvVElYczY4WG9uRFJUSXc1c0ZsV3M3R2NXdTBsTnVsClhCRm9saHlHU3ZzamE1dklHQ05PRGM5cmJwS25OR0ZicnRVTzBTSGZUalM0M0lOQm00akY3UVBmZGVPWW1tNE44QVdoWUIzS2o4dmoKSTN0bWZLbGtYOWprTzM2blA0cTdJMTJBaTVjRGNEempydzBrazN0UE85MGhUdmozSGh4WVdZSHE4b3BTcExnR0tqVS93Uk0wcnptagpvdUJsbm5tVGdUcitMUnNvQWZudlFSb0x4UWc3d2laMlpsR3p5TjZUa3JEcFRSUEJSQmNhcFpZVnZVRWNTRENUQW4xYWpHT3dKMy9OCmxISGtrZGUzQlRWYStUdWpxUTF3bGgzUEhXeXRQdHpqcFRXQWsrT1QwL1lIQ0tUOVBOd05JcXNXN3IwbzFEckVFaVhtaE9XNG9XV3gKOEJ1VEJtaWZ6RWl5ZTlUMGsydndmRXpEZ0o5U04wWWZqVnNUSWJ6dXArci8yNFM1bnFKUkc4ckFSc09Kem9xMkVOcU5KNU9XQ3podwpNR1pQRXVLZ0tLc0JYaHJjL1VqRWF4dHJEWFpqcytJTldOUVU5alRDMUo4TnVtaXhDZXNaZ05aaExzcWxMcTFkRUowVHVUZkRiYTI3ClkrR0Y3OGZSMDRuc0FTbEVSN2JFdlgzSHAwdGdpaUcra2UyWVArVCtDRmIzS2FvTVpVTUY1RXhOOG9wZk1JY0NxTU9vcm0vZkFyRk0KMGlDMVNwZ3Fnb2RsK2U4c3RhSzBkYm1hU3laY0lIVnYxTFZyUXhrd2hiYk9LSFd4d0JZYmFkVW9ZeWFXeXplNGFkZGp2cGtPdGMxTgoyVU1kNnozaEtvU1c5RzhGMGRBbldldE9mMXRxUXU3cXh5YmkxU3AvdjZsK2E2Q1RTMVdJZUdIbnEvWTRDc0Q2L0luV2V2cEhyR1N5CkU1VjBBSFQ1WE4xZ243dTlkYUo4cWxWMzVLWnRvdXYrTFk2NEhTbEhoUmtlQ1RsZ1FHTmNqYjdRWm1GWFg0VlQzUWlnQmMxQlJJSzQKb090NFhBN0ZaRnp2SS9SR1Y1djRPRDJUbXVPeHlmYWlvbGtLT25kTC9aUmFKdHZ0MmtWc3NMemR6d2RlSURBTEkzNGp1bEZDRFZvbApHejhiczEzUUxBZVRNKzdRSXJZOEFhK09UN2dPMkVweHdXbHo4M3cxLzU5VnpGbDVJNDRkWGZnUmY2cFVPOTRDYkxES0tLamVXa0o2CnRRVjJZYUIrY1U3aHVGdGUzazdOejRXbVg2WStIS1l4dzR3MGFxa1VvMEV4aGVBVEZHOW5MVCtxb2xCSXNrOHMvR1VUdTNZRGl6cWIKMm4wVlpoSnZ4SnBOc3dIWUN5Y0JGRFptRHlrbFBoa0poM3I0U2hSSllnS2g1OTZtdjVZMlhXUjlBdmN4NDd2NlNJL1E3S2pxYWlxLwo1NkFUR2JiWUVTQ2pkcDZUVmtFUnVGbEczeUdrbnlBVkRydHJPaFdQT095VTk5eVJlQnBxQjZ0Qm0rUHIrbGREUlpxM0htcHlKWVFDClY2cm9pNmNRQXk1OHp5TThkUlRoNUZwMnpIK3BDNGpQY0x4dTVmSUMrMGRrSFJpT2RaOVFsNFBDUGJHSmM3T0dZUHR2ci9GTHQxYlgKTXNnTEtmNS9TZm1oUGhFMnVlMkMrcGxwSmtWNkZkU09OWXpMek9Lb282USt6OXE1QTB5am5TbWpMak84Uk1oMmlYa0k4Y0J3SkJTcQpVWGtWL0c5WmhiT09ySjFrT003ZFN2R1UxSFQvVE5jeUFLK2laajRuQTRMa2xxUndWZnU5U2xhNUJualRRUjQySEtsV2JydDg5dDhUCituN2RxdjV2SmVxLytEZ3MzbytOVENhTUd2Y2RnR0FKd2h3RVhiWjlONnBaME5BMXhBYXFsYkpIcVIxTlJCRFpTc1Q5VlNPT3lBNkMKbFhweGVtaXZ1MEFVcE44dTlPd0U1S0FxZEkrMVM1UlNLSGtWU1kyYng2MFAwVllPd0VmVG1hOGx2YzFkQXl4YUtkVU9JUnN0QnlXMApvZGdrSUxtMEZkb0RjREhKenc1dGY4V1dHcFlaMUZaL0VZeExFeUNKVzgxQ1lhVG9ZUXF3amRBYzZDQ0lrcjhtYitac3UyTEF5VUJQCldGTVowTkFzWk5HWG1WMVBrZFdmbG8zdGhLOHd4VWVZNkVUSTdRcFpSYlJPdk1mR2IyV1d4ckpvaFIrZVBZSm5aYWIwZ29PdTFpeEYKaHd4SHUwdVBWL1VhSEloTUtXS0VYWnhqT2pXVTFCQjd6MGtWU0d0MjJiTGFVcDlFNDkyKzJBSmJmNG1jZjFPSXVVTFBaSzVSYlBsbQpVZy9rOGRCeEVHSzFBajFiYWZBOUFSMld5b0YwTlkvc3hMYTg1Q01uRmlxM3dSaHN3dm05WnZrdlZTRU9vZlV5OHgzVGZtMkxYQVpuClNPUE9icHNKL0E0c2lCbllicCs3TVlOSUZUbEljRm9MbzZwS29CenpoSlF0WStpVytSVHRnK251NmNWTVJXdWRtb3hEVkFGQUx2TVcKaEZCMWxNbElBdVNzNXVTK2NGekp3MTBabUZKR1BtVTk4STVHM1daYURlMGhPSktRZWpEV05nczljOFJZYzJRY0prRlY0WEJlNUlFMQpTSlhQVDd3cXI4RGVnZlNKRnFqU0tSVlRmZzRubDczWm0wV21tdFNldUx3YW9NTGluR29xRXo1M0xGZ0RlaUFKVkV3cnJIcWZLeEFpClRPNzdmTUlQTXh0MkJ1Yk50YzVHc3B4UlFoajdxSmhUTlFPdHJySEJaSENPL1JRZVQvdHdxTCtkSXJxbnpPZ29Fa0tZSTd5RFVPcmoKTmQwT01SMzVUT0dLMW9qSU9EUWpQYi8rTVJoYnJHdWF2MitpbVRLaEtlZFR6dm0yTnhZcTI5ZnlyZHFxbytEeS9yTXh0NGcxV3Z4RQpJdEI0OGRMcmVvaCs3b2diVnp6MjEwVkVjRVlkRTZQZEV0bDFEWjNXUUlYb0hrTDlGREtYcU1ETDlZOGFHSHQ0Ukl0TVN2M0FLRUF5CnM2V3E3WmlHNmpaazA0U1IwZndWR1I1dmV3aldsbnZVRG1lMDQrejU3Mi9VNTJ5TkJuMXJSY05QemsvMlo3MklQN3cvcm9lNEVWM08KcDk2UmoyemhLOW1Fdi9jMGJ6SWc4ampHLzd0SmRackhDcTl6QzNvdDN1alRwMTJCR2dxUThNcTJ1bEdxSnBvOGh4aFlvR05relNYMAoyTWpjVWZxdnBtbDk0Y2lHQU4xMzRtZWN2NlI3UXF2eVdFanVSU0E0TDhUVHBiZ2JxWmNlaTlEa1lrV1hJbW5OeDFxVWdjTWVoUmdYCjZFTHJOUFkyMENmYmtXVGl3UW1lNGJTZ3ZjK3RDbDVqRjFucXVYa2RUcGoxUFdTREwyUDNUam4zeitma3NUcUZIODJaaE5pbzhuN2kKdVpxM3NzOFdPTWlML2tEUVFsUDkxVS9EWkE1VFRDaVpTcE12RnNpZExFSzZFMGFjajArNXdoK1lkdHBhVSt0cXhLRmZkWEttcytYSQppRXdLcW1aT1VGVzZBQy9WOGVacyt0K0pzY0tWNXR6SjNUanh1d0d5UENTWnk0YmFDdkxTb1htTE5FUk84S3hCNnBLdWw1L24zQlN0CjJJOGpWRmoxUFdCYy96Z1NvZ1RUMVcva1NScEVNMC9OL2N5ZC9sVFBCd0xxck03MitDL1YwYXp1ak42OFRpWk5wN1NsMEJEY0ZQVDAKdy9uNjcrZVV0V2F4Ymc0anVaVERyZ0p5R2VZdlpHRFByMm5LWXZVcFFZVWJVOTk4MzY5UUNSU0YrUlNvckJzdjluWFJOT1psWGFtcApXOTZpdUtKU3JaOCs4SURialNadFIvY2ZaYUtqRmFGbGNvRFp5OUJBK2sxU1BJWU45aG5wQm0vMThUR2lSSDRBMktSblgrVTN3ZS9TCkVRcCtIb1lMaTNCS3piVmlVYmZnSHM2N2thUnVWOTJNa09pSXJqV01HSGdFMWV1MjRTcHZqajNCcWx3L29RWjJyZjQ5bEwrQ2dCdUcKWWdWazdackpVOWVNZ3Y2U2NTSVF6RUI4OEpQK3NmTE1aanFUeWgrL1MzdXloZkMwZlRWVHNURmk3ellaVGVwTEVvWThRTTliT3NnNgpPdDhLOFpZcDJDMGhoV1NVdFVkU3dVUzVOSjhOQnFKVzFmREZ4WG9talRMbGxGRVpvQk4wMjFDVWVjUWhGOVZyeE9kbldyemEydUJVCldqRHk5YUZWaHZLRTJWS3VzSzk1MnlOQkt3amxDWmJCd1AvdXk4OWJBbk1LNW5DbEEyUjgrWnRyMzRZYnJqV1NibE1MT1lFM3U0NXAKTmlUTktVcEM2a0pQQ1RzMUVnbGNFVm5NdGRPMXFXMEFUVm9hVjdPNzNKOHhPbFVoVWdJV0tjbnp5dXJ4NFhGZUh4dHJ0TmdLVVJyTgp3c1VLOUlnR3d4dXpqUksrWE12NDdtaUZOMUoxb1JHdHRaang3WlJURVhOL0lGLy92T0hQdnlseTZhWnlzeDZrWE0zbkphdHBDT3hSCkM0OGRTK25rWENPRmE1T1FGQUxQdkVnamJXQXlMMi8xV2lyNHEvbXV0QXUxN0d4MDlFK2tZMWovemR0ajVIOTNmSmZXTy9Jd0tpeXMKYVl0TUVpdHJ6aHlOOXVCem54SHUzVHFVSGxMN1kyL1c2enE3SmRkdm1qOHdqS2dvdW5KeUJHclNVSGhvcGR4eFA3c0tKSnNqQ0lRbApVdndoa1BidXhmeTg0SlE4R2dOaUtqQzhweE9sc0RXSVNSZ1Q0UEJSekF4N3U0YXc1U3pLbk5KVUMrVmRMZDFNT1hyTlBUM1M0S2IwClJWT09kNlJzVGlYcWNndGd6QnN2bzdaL1hCRkY2QUE1ZklzWG1wejZ0RkFoWThRUk1NcDR1NG5vNVpZN1g2RHMyc1QvVU1xSTZ0YnoKdlB3b1BvczBnNzIwelNYQlBneFhUWkRweHRLZHVnVFNUVGpHbG1RVzVxeWJoQ1N4aC80T1AxWFBiTVNvVk9yT21yWEhnZXYvY0lRcQp4ZGpFZVFMTFlMSzFpRkd4MkF1bkhJNUw5dzZQT1ZveFM3ejAvTWt3VUJGNGNlVkNWbFJLbVZ0WU9pbDFWV0VUSmloZnRlOG0zd2VzCjlrb01pQVFlcnJPc3lueElEVEs3bk5ySTZZOWwxQzJ4MURPbElZYnNJTkVVRWxraUdGQVhXc1Vrem15ZDNFZE1tTkF3NDk1b3hrM2oKaDQ2enBnay9WUmkwUjNrdlFidk1pU2VSM091ZTV6eGRYaHJZTWlpMm9vWmFCaklGZ3pKY0ZJN0kyU1AvZ1plcUJMVGQxY25yK1hGZAppR0FjS1RSNTYzNHhzMkFJMlNJVTJyVkhBVzN0dVlPaVNtalVKOG82VnpaREZmemhOYVR1UmpsbUE2Rm9jTUlNb3RyK25GZThsWlRLClp0VEphWVlnSHVUamZZNDFwQW1UQlpSaHZsWitHVVZ2bTFnSm1SNzBTcmFPL1NRSzFpYkVzM1RjOGFzcVJVWTBiUCt1UlNjanJaVysKZ1h1U0Y4eGFUY2dVUlhTaEx5bGtQSDI2WmZlQ09Od2creEh5SVl2SkdvU3ZPQUxxTm9YbWhGdGVMRjJlVnZMTldYa0ZEdzdTTWFoNgppMFZseElCdVgxVEJwV05HRWE0TWs3Qnh4Z0xlSGN1NFpib2FRZWxCK01CMGtPVEtqZG5ZaTJ4ajM0TVFGV2pidlZETzdNd1dPazVyCmdhRkZqdlVmY1NHUG9lNFN1cFV2ZzU5NnRzUHprUEJ4TVBEMjBueWx6RktGSWhoaVFqbXVwdERsNHl3dG1wdnEzM1lUdWIwRVpWc3EKRXpzRjkxUkxWVFN4dHhUOVlJSEVFNVJkWTUyeEQ1Q0V3amtoVllWMEo0aUF2bGlVem55U3FvUlZyenBqeW50aCtJc1pjM2lNTVlZWQplRFNjcWpRNkpKeDN3UmVLL2phTEpqR1FKemNvYVgrMGh1SEhGRlg5OUphNFN5RlE1QlhKaGxGd3E0alkvN1liUiswcVVxRm96NDFPCkV5WGpWV0VsR3drQUFrSlk4NXZtMENCc1U3ZE9mdC9LUDUvK3l2ZGJuUkwyRENGZEJJWmUzWFdEazlZVGs0NDE5MkYveVVqUHI0N0YKQ21XcEp2dTFWTzREMGFoclpJZnphdE5WcDJzYjV1cnRZWVVOSWMzWDB3ekFFdVNCZkRNMHZQQTYyaUhVVW5rNGdLL3h4Q2ZKYzRMbwpDQm8xalZ5TkFvaUUrY1lCN285K1FLSHRRTmt5aXNxaG9EUFdxNDUrUnpNUW1VZkFVVHg4ZmN2bVlWN1pWSm1HVW9DTFB1MnQ4UmVmCkdiVlUzV2lSTElOODgxS3dhZWNWdFlEQW1HVWNIMkdDWllLQ0JCMnYyTHpYN2JBSUlHMTloVGJRRUFHNVROYm8zbHZNaXloUWZQb2wKdFlBSVhXbWcwYWdkWEVGQ1k1cWt6RzR2QjMzYkdEU2xjNFZ4NXFpaDhOQjVlUWNydFJUSVRPaDAvcTVlU1ZQcUt3Ly9QamZCVHNpSgphVlVKQWJWRkhqVnFKalRoY2NkYWdudHJOY2lybWt0QmQ0NEtia3pJM3N5YTh0WjhKRU9LUmhPekJZUEY5eWxqcm5icnBIL085aTY2ClBYY002N09LMVA4dng2ajNzTVZJMnBwTVVXVlpJc2NXa1o4S0JQSmV4QldRQkJ5Y2dBTlZFbldKczlCUnU0a3lEeVd6YjlMTjR3Y04KTFh1YUJ4UXlWZEttZm5DcFd5V0JFM1dCUU1LUkNxZzJiL2NLczdBamdlUk5waGRCYmY3K3Q4bU0vUkZzVUhSb0dEeUlEbXA3SDBLVgpHVHovSGxDRi9GU2ZLdElnOHdrTmk0TnJBbFFrb1B0NEkrcUlqYlB5d2grL05IQVk1L3NzWFZnWEM4Zk01MEdQd1BQdUkxU1BwMFN6Ci85R3hIOHdFVm5TVy9lcEkrdXhsSHA4dEpKZ3hrVjFENERwK0YyRHFYL1RkSHVadDJUSUR3T1FEUkJHT084SG9xWnJMSng2V3BOK2wKSXlLdUR3TitlenBZdlZlVlFmOGFEN0VHQ2VHc3Q5NnlXM05kNW40NEExVkdlb0ZHckNFTTdIWm1QZEpsUE45YW9YL29UMHZsYUwyYwo0c2tCMnhmZW9ueE16N2dOU0dFY1p4SVhlTDhmRWE2cVI4Kyt3OTdLQXExQ29laHduS3NxZ0dPTmJzeTdLZEU5elJvbEcwZG5nTzIzCnBKUFkzejdnaGtnNk01Nk1FbmlkR3Fic3d4S0lqek1EbWlDTlRrZkYxbmpuKzFlck9zN3ZtOWtaZmF4Z3Z4Q0xyenVKS1c4SUZ4YWgKVitkRjNJV1BoQXNUU0N4S2tSRT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+PC9zYW1sMnA6UmVzcG9uc2U+ ================================================ FILE: testdata/saml.xml ================================================ https://idp.astuart.co/idp/shibboleth njFuiDnD41G6xI2DUPqLG24GWBYuzrYurVWNH6CXHlA= TUg7S7GdqWUYm7EkdBkH/k3CnqUm78c4IQxyB1MPMpcMAswjHQnUOY4f3P4EssYZRkTvk5Xazi2O r7DcN3f9U7FXtWAVD0HzBkbVKNM+jPCSKxd66zRUUFINJbYi/WJePiIveuSaUiK/8JJgFXr5z9GR EQtCuJTBAIf4JNUv0lhLWTACwrEYirtsrKrJMT0qd3Ff1iNuw9ufcMXuUJCiWGa3x3hTbV6XFmGY aMDv43aKAI64ytRd4URtJtKR1L6zt85ncF3FVwMdE9XVTzzKhaqDKafa4H8obZsIUwUDsY/k4qlc wt2/lVq6JE8I2v2oXPY817b2v0aP/Z8SyImgCQ== MIIDODCCAiCgAwIBAgIUQH54kyyeacU69J2iwz9bzeLmMaswDQYJKoZIhvcNAQELBQAwHTEbMBkG A1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MB4XDTE1MDYwNDIyMTAzMVoXDTM1MDYwNDIyMTAzMVow HTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAlJhN20ng2VN/cTrWtqUINaUsrHCkYXbm2y1PTN4b6fJI5hbvcv+LWCuLkLi3+iPGlBpc HHfrdJcyhmBHRHQ9Sos3RIH5Lsn1IgjWe3hxQQmVeEi5xVxnw2YZGHaeX4YnI1TEBJwhtJmyitk7 4LHybPGEqOJdApUnLz54L7I+252G/cOfEqUHMbxxtmHSc/9chF8bBxQ8OzIbJsByHnqiawQHwtst tre7n328gVqmf1VHE27cfAYiSjuK5pCsx/1kuJMBN+kg/3Gg9oi6aR50WX1VUF3IBcnTDeiAXRz3 PgsT8FlVZou6Ik9NT/Y5IHOZVGk64SRDaG8FuGxLexXrswIDAQABo3AwbjAdBgNVHQ4EFgQUjQwa AoY3u/iToIE3ADeNEW+Uu34wTQYDVR0RBEYwRIISY29sbGVnZS5jY2N0Y2EuZWR1hi5odHRwczov L2NvbGxlZ2UuY2NjdGNhLmVkdTo4NDQzL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IB AQB26rdxphN1YKad3yDhLg6Y1ZwbmAjc+l4QB1KSL+cLqhDn5iMy4VdWh8HpSKRqCwofLtlw3qOw ospj+mJaguXRMpjYODRQaKRkTrCGxJhuNrQxDXL/b6FOEIJnUYenbPevuNgRJc1VnREhWUUXT44K N5YUz9FEiG0BsBK8ecCPKBzTQ/hwaczhpqw6uqVMqxJaTGcnlCUHJAhVHiA8lWJ7vaNPsJ86xBFs /F76EwyFXIKQaruvcvChU7GNNSYdNJBa6HO99QWdGbr5aNQ4diunnBQdrdjgbQIwyhKTfbFWa2l5 vbqEKDc0dwuPa6c25l8ruqxqCQ1CF8ZDDJ0XV6AbAAdzZWNyZXQxAVyT8pMdokSCQIwZcewBdiLGv/UGZX4UNVpUI5QqkXPxy/s2H7BHxnT9AnVoDdLcKVhMcZrqHsnx6rB7YHOCQFymgctznZPosV/kNb85pM6ptKly1SqxBOw9iicrUwVrBOlbqZpRJufAGG8/dT0Qhttps://saml2.test.astuart.co/sso/saml2urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportpcollegeadminportalCollegeAdmin000portalCollegeAdminCollegeadminPeter CollegeadminPeterpcollegeadmin@democollege.edu ================================================ FILE: testdata/saml_compressed.post ================================================ zVhbd6q6Gv0rDtejo+Um3kbbcbgqKiICKr6cwSXKPQhBkV+/QVt329O1dtc65+G8xS9fZmZmvoQZn3IrjtLRCuQpTHLQKuMoyUfX4HO7yJIRtHI/HyVWDPIRckYaI89H5CM+SjOIoAOjdkvin9v/pvs4TeH7AT6gBi5JE65LgXZrDbLch8lzux5RJ+Z5AaQkR1aC6hBO9B9w6oHo6yQ1IvsjnNi1WzzIkZ9Y6DrKQyjNRxi2J/YNovOYHDIYPvoQs1Ify3OINURJzHJyjB441t7F6T7ldvdUn7YHoI+DAWi/PDVJo+vk2bv1/Xp5Vp6DrGHRfrGesHcIN7h0pCELFfnHXxx0QWttRQX4NXh+zR5pheOAPG9jL7cZPoKOmDcKf0D6s/LNFqnbgotSOPARH5KkrOoLQeF8NhqKprpGZfCNDXqkaXL3UdH/kEfzD/X+FdlrLd12sd7E8/n8eKYeYXbASBzHMXyI1Qlu7h9+tG+jgCsle/jyxFkJTHzHivzqWggyQB50W0x0gJmPvPgnkARG4A3kAyidB4foJj8aZe90vonygViWWw+5ZxEN0ArsQQYSB7SMlfTc/vHPer486ZmV5HuYxfm79u9RAMkJRDAF7kP+tpKGzffRvpYFe0+N9w/1sfsTgd7EuSFcS/9FcdD8QEmmsDfkgUdpWsGMu0wn4/fS8xP2PvMJu4tat9+XwH3Xbon8kmGoUFQohUV2eoEskBTg4qqidzppuNpivR5eZrnDp8o6C/go2okXOKEvqc+tF0Waj217GVSLYiPiw2LClia8aB65rm+wowh9MzA3PkzTcQ/jdpMOl9IrUuuS2xm/wBRZpXGX8jiyNNCK2FQ2M6WXfH0iVLGDyqrEQ2JWeqaBlNMkcZbjcSpS0czp6Zyyuez6+2CG7YFhSDDMMZ4xEDjZm60278Il5ZcSczylHX/b2YS7oCK3dmzI/WCykgs5vgwk17M3kJiLYZIKk4XoTZerE7J7M6nSCkqy8T019wOF7hxwdYkHWCfaOauCDuwVEuzZYLpWgkMx1MMQHebOaU4k+8W6r1HLIcTVYhgfnp9vor8T+mkGLrcd2NL4kLeQdWtxzb2yr88kAi+yJPFLnuMYX+U4lb+404MS5dXRrpgFewiPXuiPh2ecZVRDZHj2IKv5mVNNfq2qY+E8XRuVoMusMGYIQ+BYeaaSYm5tdicnplNTFzYyq1772FJeGKRYSMLuYm7owNouArsSVJnp3sZ68kSLxcKiIr6OazLLXONMKU/t8bDe1BLa1AKX2e6W1wVc5uVSDgR6wZuVTMA6JlGyLpSKfo+dTV6Yy0x4m9+TufVaLoWKWbGHxZplDjoXLjx7HMU2NS2sjVCKAWPc+hydX9d9Pjt2ak4mGVUmOSgFnlFu/VBn8dSzY0SrTTxg1Ftc1rlNeTIbDcbDym101aQzr5rTGdxJ3slZMKrAsirDHw7Ckmn6VcjV7Xro+DRNV7pu5StDWx4d+8iNO7tEZ+pvRIGf1qk0HkaVUCYeQUCMHcdV0Y/YzmU+cQT3nM1YNk5ByrNLzizTtRWcCsHbuTOxxET30gvoeEJl2QZnPaxyqR4HjVp/25tc9ADIfXFBXkSqGEbOpbCLk1JlFEsdtr2edJ5GRrfXOVeOuvY0JZJDEm1Xnb00U2vBMqWYDZG9paYSaxwllEqdScLAc1NkiUxQ3fx0Hix1cR6u6uPoyMeE3/MzIh4OqeUFcoTZWXS3w23oabGgQiZiJkuJnk+yU1EE9fDkhODaPM1MGPQ151DEYbpZCKdtjybn+62SzMwoZAe7i12UsbiXwgq4amZP84vi7ec45cgCx5wFhtG/qGVGqbUXGDA5V8dzUo2FsAwqje/2/Xhr6UdkXgR9B8/97Zl18J0lajR+XIlT4zDTmXimEaXKLrHjJNVQvlJ0iuaNcsoIvYVJzOwjtbO5whtDLTLxeX9drXUapUVXMAcd/ogVpBCs4tiD874R5uFJ2pEJwbvCCrkd05B1cDSjoQO7lJPvznwCMWkGY7Cgj9bSoYbSLvDDaScxuF64FGegwKhgmB0mi2hVezippxGii8RqqOxkNUozfGobiNSpUsNMqE6TngP5eDqnx7rvz+Seo4COkRHrc6URU4G3NY3UNxuvOg5gMHdrW2jOx+5wquRQ9YQorjpI3nNiLeBcKP1kyVwufXMSaf56S1DqhNzqBearanMZfb5pbpHbLYTdb6a/76xXI6IVdgAc9PprUdsiiW+J9afNQj/3S8QjcY347sP+mjoqkjwFTj03cGvTlxVJB4bI+ldkFYnjuVYWRpdHB8avduc2zUcGHEz2foPVmLbb5/TXhs2JRzawMpC1fw7ULL+1gEhJlIzZI5C9c2YDHcffO7PWql5A6oPGvv1PzPObNf2K2Keu1xXUGa7fdOcNaRbU4oJfeMnvruzNExeu39iF+r2CMt+50fjQ82K/0roHPv3+MBT7xPkNDNUpdoFAY8hBXOv56sHLn/lZAtvKc83xQGy177n+Pyc/+Fe77dzfKfepW02F/U791mh+xLhu1rwpPqNdP++tmtIIXdIatsxHVnLR6/Y3av0jysvn6E+YCw2f/wciop/lqGn+FhmmJvNfTTu3/mBW1rOiyPruvNhPqvV+JpCX/F3C15/fft5ds+uTgUCJvghxUf3arO37yy8fpM7IafLq8Lvb9X4gv0D7ou9D7N0SsY+v5Psj+u2/jJe/AA== ================================================ FILE: testdata/test.crt ================================================ -----BEGIN CERTIFICATE----- MIID2zCCAsOgAwIBAgIJANfD2hyjW72lMA0GCSqGSIb3DQEBCwUAMIGDMQswCQYD VQQGEwJaWjEUMBIGA1UECAwLVHJhbnF1aWxpdHkxITAfBgNVBAoMGEludGVybmV0 IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJc2FtbC50ZXN0MScwJQYJKoZIhvcN AQkBFhhhbmRyZXcuc3R1YXJ0MkBnbWFpbC5jb20wHhcNMTYwNDI4MjIzODE5WhcN MTYwNTI4MjIzODE5WjCBgzELMAkGA1UEBhMCWloxFDASBgNVBAgMC1RyYW5xdWls aXR5MSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMM CXNhbWwudGVzdDEnMCUGCSqGSIb3DQEJARYYYW5kcmV3LnN0dWFydDJAZ21haWwu Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApwtg91fGm7NZBASr AdASmK86Nsh1fNFs6pz4FFfCwyUHulJTKCk6Ph0ToGRcOFhVgPWtPYkCwL6iUmJT Pzj5uoB0Y3eF2MM+tkix8f4RUrWzpqyMhECtsv4rzF7LpZXCWdJHnN9Z6zwFdLxu b6V01PGmIhtGyf9mEqZ2qonSIPAzoRBzZStPu4SJkJzIN3BttvHVRVF+E5AKxYLv kBTtl5JzCsivs+hTrrDg/zwiq7yXOwoZhzPrAHriYPOLm/sPuwTIBxAHmKwp0ihD HpEC5eNAXvChkUYcG8DdDNpSxjpH6ufyVLxfKWtHUcHnJCGnw/LUgI1S1bdljeyZ eKFBMwIDAQABo1AwTjAdBgNVHQ4EFgQUiuceZuXfFuk1aC/J1RQVYQtzlz4wHwYD VR0jBBgwFoAUiuceZuXfFuk1aC/J1RQVYQtzlz4wDAYDVR0TBAUwAwEB/zANBgkq hkiG9w0BAQsFAAOCAQEAn3ShXVUlcaM8bmtlpF6stGB00bNinVfkGQ1OWYVb8J7l 3QPb2pK0aoccb6MyDhmthYYeSNcLVUK6J0yHCQUC2cFa/y7jwZHhnb5RoMLjYan0 710FZy27Y8LYVNpdtT3RKxPHzWIW8EELsShHQ1UfGNPQo+OxdVljzQGpDjjNPiFK JFRt7A4XURHfS43d5mMj6znGHcsP4XpcQLZXpQwF+u7TyHtAXwKOIanRuGrwoBtA WvZBgEJ047KdHZGyxa42yWILFW+fraK4Vx6wo56LLlwoTEHB8YLuHAuoFtYxq4fO /ORJPlxENszTxphXaYUoryRyPCiuMOKo770wa+4D+g== -----END CERTIFICATE----- ================================================ FILE: testdata/test.key ================================================ -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCnC2D3V8abs1kE BKsB0BKYrzo2yHV80WzqnPgUV8LDJQe6UlMoKTo+HROgZFw4WFWA9a09iQLAvqJS YlM/OPm6gHRjd4XYwz62SLHx/hFStbOmrIyEQK2y/ivMXsullcJZ0kec31nrPAV0 vG5vpXTU8aYiG0bJ/2YSpnaqidIg8DOhEHNlK0+7hImQnMg3cG228dVFUX4TkArF gu+QFO2XknMKyK+z6FOusOD/PCKrvJc7ChmHM+sAeuJg84ub+w+7BMgHEAeYrCnS KEMekQLl40Be8KGRRhwbwN0M2lLGOkfq5/JUvF8pa0dRweckIafD8tSAjVLVt2WN 7Jl4oUEzAgMBAAECggEANODrPyEwI9WwVg9MOvStDlxZ50Gpv2tkORibh4UIiFHO knLBFDOI1mTJ87oRX1zHJF2hC5u1nWI7bCzoAVl95EYJkfsiCa40yetVOS+eODqA tkBk8vCui7zeDIHtoWs47MoeFVC23DpR19RWeU09ILOmTaGo1QTeQQUlB3M9a2Nb LZcJmxqQyFg5G0oDs/Xo3rlGw/MWm1gsRuBEW42xuAUKyBcUEHvIAPozXBfEnwAv cf0+VLoxGsHwY8Rbz2R886ex0/sKnSD673dM3LRQv8S2i/5UtLBYX0BqDKzuLO4K JS/uDJtPDmErjgA4p74ytqJFYmSnGnmluKR0OE9KgQKBgQDbXa4oEcdoGN15FoTb g3hiy5zi4xw2NQrofKmHeFOFfgDOF0RxRQVCIiKFu619oalVJE5wqq0vt61W3mQ7 /OikHdlwXipcZ8LKEIeViT6KNrU4UTXL7aR2YiMTkBnbfDLhiMDOyKwyySmF7+hD WR7gq1CuJXmjFsPlw9RwIAoVIQKBgQDC8NprSK1ggQ0riBj5PY/JUD6LTp1MO223 wU2OvjfA7L3cK33GpPx7fRRcnh3sv5UqUgEtfTuCu2bD+u/cvdfzUxLXk89mh9zD Fe4E+SLSd5Vo6Wpe8W7LamK2i3Lc/rRdby7GM+qEQ22vhkegyFW+klDOXYULo2ZO OsEB+Q/30wKBgQCKfMPb7A11fG0lasAJTSCNTnoHCtXeqvHt//WO3rnrxrZ/ZVUC JU7Ch4Y/41INxCeA5uDWZAnd3BmEg/XHoUzFf0qsk+YuXBsvMexGzVQ8MXmKykoq KibvzdjTGuAYHnqIw6rlYO7FSRX7xo9dJUBHGiBfMK1v9olJ3q2Y88EpwQKBgQCE qRGKxuet78S9ph2Qp9NM5X3aoYIsGZk93p9gD5Szhqhhx3sNjsN/agxMRxIIRgxF w46nnTy9Z7i0j/VhnBP0s8jzydPva2/Rlv/mhICtB9I2lfncaKLEbT6GCXn+aJrn pr0HBteGcLiZJWFjSlIHoVy6QyxCUk1R2Wv1Yr/6HwKBgD4IrY33kSHCpElzLY2Q q4ysjYF1XfWvji+SOhwM97KMXz0U+Pk4GIik0WZVZbvyU48EQaKf+hupPou8EdMR YD5XYh7Owjg2FY354XX5kl2SzI+00EDnZiEC6mLPsVEsIayty1QxozFzkCZgmb59 9Nqhywrrbsnv7kDX3QBxZMkn -----END PRIVATE KEY----- ================================================ FILE: types/encrypted_assertion.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "bytes" "crypto/cipher" "crypto/tls" "encoding/base64" "encoding/xml" "fmt" ) type EncryptedAssertion struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion EncryptedAssertion"` EncryptionMethod EncryptionMethod `xml:"EncryptedData>EncryptionMethod"` EncryptedKey EncryptedKey `xml:"EncryptedData>KeyInfo>EncryptedKey"` DetEncryptedKey EncryptedKey `xml:"EncryptedKey"` // detached EncryptedKey element CipherValue string `xml:"EncryptedData>CipherData>CipherValue"` } func (ea *EncryptedAssertion) DecryptBytes(cert *tls.Certificate) ([]byte, error) { data, err := base64.StdEncoding.DecodeString(ea.CipherValue) if err != nil { return nil, err } // EncryptedKey must include CipherValue. EncryptedKey may be part of EncryptedData. ek := &ea.EncryptedKey if ek.CipherValue == "" { // Use detached EncryptedKey element (sibling of EncryptedData). See: // https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Extensions-to-KeyInfo ek = &ea.DetEncryptedKey } k, err := ek.DecryptSymmetricKey(cert) if err != nil { return nil, fmt.Errorf("cannot decrypt, error retrieving private key: %s", err) } switch ea.EncryptionMethod.Algorithm { case MethodAES128GCM, MethodAES192GCM, MethodAES256GCM: c, err := cipher.NewGCM(k) if err != nil { return nil, fmt.Errorf("cannot create AES-GCM: %s", err) } nonce, data := data[:c.NonceSize()], data[c.NonceSize():] plainText, err := c.Open(nil, nonce, data, nil) if err != nil { return nil, fmt.Errorf("cannot open AES-GCM: %s", err) } return plainText, nil case MethodAES128CBC, MethodAES256CBC, MethodTripleDESCBC: if len(data)%k.BlockSize() != 0 { return nil, fmt.Errorf("encrypted data is not a multiple of the expected CBC block size %d: actual size %d", k.BlockSize(), len(data)) } nonce, data := data[:k.BlockSize()], data[k.BlockSize():] c := cipher.NewCBCDecrypter(k, nonce) c.CryptBlocks(data, data) // Remove zero bytes data = bytes.TrimRight(data, "\x00") if len(data) == 0 { return nil, fmt.Errorf("CBC decrypted data is empty after trimming zero bytes") } // Validate and remove padding. The pad length byte indicates // how many bytes to strip. Bounds-check to prevent panics from // crafted ciphertext. padLength := int(data[len(data)-1]) if padLength == 0 || padLength > len(data) || padLength > k.BlockSize() { return nil, fmt.Errorf("invalid CBC padding length: %d (data length: %d, block size: %d)", padLength, len(data), k.BlockSize()) } return data[:len(data)-padLength], nil default: return nil, fmt.Errorf("unknown symmetric encryption method %#v", ea.EncryptionMethod.Algorithm) } } // Decrypt decrypts and unmarshals the EncryptedAssertion. func (ea *EncryptedAssertion) Decrypt(cert *tls.Certificate) (*Assertion, error) { plaintext, err := ea.DecryptBytes(cert) if err != nil { return nil, fmt.Errorf("Error decrypting assertion: %v", err) } assertion := &Assertion{} err = xml.Unmarshal(plaintext, assertion) if err != nil { return nil, fmt.Errorf("Error unmarshaling assertion: %v", err) } return assertion, nil } ================================================ FILE: types/encrypted_key.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/rand" "crypto/rsa" "crypto/sha1" "crypto/sha256" "crypto/sha512" "crypto/tls" "encoding/base64" "encoding/hex" "fmt" "hash" "strings" ) //EncryptedKey contains the decryption key data from the saml2 core and xmlenc //standards. type EncryptedKey struct { // EncryptionMethod string `xml:"EncryptionMethod>Algorithm"` X509Data string `xml:"KeyInfo>X509Data>X509Certificate"` CipherValue string `xml:"CipherData>CipherValue"` EncryptionMethod EncryptionMethod } //EncryptionMethod specifies the type of encryption that was used. type EncryptionMethod struct { Algorithm string `xml:",attr,omitempty"` //Digest method is present for algorithms like RSA-OAEP. //See https://www.w3.org/TR/xmlenc-core1/. //To convey the digest methods an entity supports, //DigestMethod in extensions element is used. //See http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-algsupport.html. DigestMethod *DigestMethod `xml:",omitempty"` } //DigestMethod is a digest type specification type DigestMethod struct { Algorithm string `xml:",attr,omitempty"` } //Well-known public-key encryption methods const ( MethodRSAOAEP = "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" MethodRSAOAEP2 = "http://www.w3.org/2009/xmlenc11#rsa-oaep" MethodRSAv1_5 = "http://www.w3.org/2001/04/xmlenc#rsa-1_5" ) //Well-known private key encryption methods const ( MethodAES128GCM = "http://www.w3.org/2009/xmlenc11#aes128-gcm" MethodAES192GCM = "http://www.w3.org/2009/xmlenc11#aes192-gcm" MethodAES256GCM = "http://www.w3.org/2009/xmlenc11#aes256-gcm" MethodAES128CBC = "http://www.w3.org/2001/04/xmlenc#aes128-cbc" MethodAES256CBC = "http://www.w3.org/2001/04/xmlenc#aes256-cbc" MethodTripleDESCBC = "http://www.w3.org/2001/04/xmlenc#tripledes-cbc" ) //Well-known hash methods const ( MethodSHA1 = "http://www.w3.org/2000/09/xmldsig#sha1" MethodSHA256 = "http://www.w3.org/2000/09/xmldsig#sha256" MethodSHA512 = "http://www.w3.org/2000/09/xmldsig#sha512" ) //SHA-1 is commonly used for certificate fingerprints (openssl -fingerprint and ADFS thumbprint). //SHA-1 is sufficient for our purposes here (error message). func debugKeyFp(keyBytes []byte) string { if len(keyBytes) < 1 { return "" } hashFunc := sha1.New() hashFunc.Write(keyBytes) sum := strings.ToLower(hex.EncodeToString(hashFunc.Sum(nil))) var ret string for idx := 0; idx+1 < len(sum); idx += 2 { if idx == 0 { ret += sum[idx : idx+2] } else { ret += ":" + sum[idx:idx+2] } } return ret } //DecryptSymmetricKey returns the private key contained in the EncryptedKey document func (ek *EncryptedKey) DecryptSymmetricKey(cert *tls.Certificate) (cipher.Block, error) { if len(cert.Certificate) < 1 { return nil, fmt.Errorf("decryption tls.Certificate has no public certs attached") } // The EncryptedKey may or may not include X509Data (certificate). // If included, the EncryptedKey certificate: // - is FYI only (fail if it does not match the SP certificate) // - is NOT used to decrypt CipherData if ek.X509Data != "" { if encCert, err := base64.StdEncoding.DecodeString(ek.X509Data); err != nil { return nil, fmt.Errorf("error decoding EncryptedKey certificate: %v", err) } else if !bytes.Equal(cert.Certificate[0], encCert) { return nil, fmt.Errorf("key decryption attempted with mismatched cert, SP cert(%.11s), assertion cert(%.11s)", debugKeyFp(cert.Certificate[0]), debugKeyFp(encCert)) } } cipherText, err := base64.StdEncoding.DecodeString(ek.CipherValue) if err != nil { return nil, err } switch pk := cert.PrivateKey.(type) { case *rsa.PrivateKey: var h hash.Hash if ek.EncryptionMethod.DigestMethod == nil { //if digest method is not present lets set default method to SHA1. //Digest method is used by methods like RSA-OAEP. h = sha1.New() } else { switch ek.EncryptionMethod.DigestMethod.Algorithm { case "", MethodSHA1: h = sha1.New() // default case MethodSHA256: h = sha256.New() case MethodSHA512: h = sha512.New() default: return nil, fmt.Errorf("unsupported digest algorithm: %v", ek.EncryptionMethod.DigestMethod.Algorithm) } } switch ek.EncryptionMethod.Algorithm { case "": return nil, fmt.Errorf("missing encryption algorithm") case MethodRSAOAEP, MethodRSAOAEP2: pt, err := rsa.DecryptOAEP(h, rand.Reader, pk, cipherText, nil) if err != nil { return nil, fmt.Errorf("rsa internal error: %v", err) } b, err := aes.NewCipher(pt) if err != nil { return nil, err } return b, nil case MethodRSAv1_5: pt, err := rsa.DecryptPKCS1v15(rand.Reader, pk, cipherText) if err != nil { return nil, fmt.Errorf("rsa internal error: %v", err) } //From https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf the xml encryption //methods to be supported are from http://www.w3.org/2001/04/xmlenc#Element. //https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#Element. //https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/#sec-Algorithms //Sec 5.4 Key Transport: //The RSA v1.5 Key Transport algorithm given below are those used in conjunction with TRIPLEDES //Please also see https://www.w3.org/TR/xmlenc-core/#sec-Algorithms and //https://www.w3.org/TR/xmlenc-core/#rsav15note. b, err := aes.NewCipher(pt) if err != nil { return nil, err } return b, nil default: return nil, fmt.Errorf("unsupported encryption algorithm: %s", ek.EncryptionMethod.Algorithm) } } return nil, fmt.Errorf("no cipher for decoding symmetric key") } ================================================ FILE: types/metadata.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "encoding/xml" "time" dsigtypes "github.com/russellhaering/goxmldsig/types" ) type EntityDescriptor struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata EntityDescriptor"` ValidUntil time.Time `xml:"validUntil,attr"` // SAML 2.0 8.3.6 Entity Identifier could be used to represent issuer EntityID string `xml:"entityID,attr"` SPSSODescriptor *SPSSODescriptor `xml:"SPSSODescriptor,omitempty"` IDPSSODescriptor *IDPSSODescriptor `xml:"IDPSSODescriptor,omitempty"` Extensions *Extensions `xml:"Extensions,omitempty"` } type Endpoint struct { Binding string `xml:"Binding,attr"` Location string `xml:"Location,attr"` ResponseLocation string `xml:"ResponseLocation,attr,omitempty"` } type IndexedEndpoint struct { Binding string `xml:"Binding,attr"` Location string `xml:"Location,attr"` Index int `xml:"index,attr"` } type SPSSODescriptor struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata SPSSODescriptor"` AuthnRequestsSigned bool `xml:"AuthnRequestsSigned,attr"` WantAssertionsSigned bool `xml:"WantAssertionsSigned,attr"` ProtocolSupportEnumeration string `xml:"protocolSupportEnumeration,attr"` KeyDescriptors []KeyDescriptor `xml:"KeyDescriptor"` SingleLogoutServices []Endpoint `xml:"SingleLogoutService"` NameIDFormats []string `xml:"NameIDFormat"` AssertionConsumerServices []IndexedEndpoint `xml:"AssertionConsumerService"` Extensions *Extensions `xml:"Extensions,omitempty"` } type IDPSSODescriptor struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata IDPSSODescriptor"` WantAuthnRequestsSigned bool `xml:"WantAuthnRequestsSigned,attr"` KeyDescriptors []KeyDescriptor `xml:"KeyDescriptor"` NameIDFormats []NameIDFormat `xml:"NameIDFormat"` SingleSignOnServices []SingleSignOnService `xml:"SingleSignOnService"` SingleLogoutServices []SingleLogoutService `xml:"SingleLogoutService"` Attributes []Attribute `xml:"Attribute"` Extensions *Extensions `xml:"Extensions,omitempty"` } type KeyDescriptor struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata KeyDescriptor"` Use string `xml:"use,attr"` KeyInfo dsigtypes.KeyInfo `xml:"KeyInfo"` EncryptionMethods []EncryptionMethod `xml:"EncryptionMethod"` } type NameIDFormat struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata NameIDFormat"` Value string `xml:",chardata"` } type SingleSignOnService struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata SingleSignOnService"` Binding string `xml:"Binding,attr"` Location string `xml:"Location,attr"` } type SingleLogoutService struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:metadata SingleLogoutService"` Binding string `xml:"Binding,attr"` Location string `xml:"Location,attr"` } type SigningMethod struct { Algorithm string `xml:",attr"` MinKeySize string `xml:"MinKeySize,attr,omitempty"` MaxKeySize string `xml:"MaxKeySize,attr,omitempty"` } type Extensions struct { DigestMethod *DigestMethod `xml:",omitempty"` SigningMethod *SigningMethod `xml:",omitempty"` } ================================================ FILE: types/response.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "encoding/xml" "time" ) // UnverifiedBaseResponse extracts several basic attributes of a SAML Response // which may be useful in deciding how to validate the Response. An UnverifiedBaseResponse // is parsed by this library prior to any validation of the Response, so the // values it contains may have been supplied by an attacker and should not be // trusted as authoritative from the IdP. type UnverifiedBaseResponse struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:protocol Response"` ID string `xml:"ID,attr"` InResponseTo string `xml:"InResponseTo,attr"` Destination string `xml:"Destination,attr"` Version string `xml:"Version,attr"` Issuer *Issuer `xml:"Issuer"` } type Response struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:protocol Response"` ID string `xml:"ID,attr"` InResponseTo string `xml:"InResponseTo,attr"` Destination string `xml:"Destination,attr"` Version string `xml:"Version,attr"` IssueInstant time.Time `xml:"IssueInstant,attr"` Status *Status `xml:"Status"` Issuer *Issuer `xml:"Issuer"` Assertions []Assertion `xml:"Assertion"` EncryptedAssertions []EncryptedAssertion `xml:"EncryptedAssertion"` SignatureValidated bool `xml:"-"` // not read, not dumped } type LogoutResponse struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:protocol LogoutResponse"` ID string `xml:"ID,attr"` InResponseTo string `xml:"InResponseTo,attr"` Destination string `xml:"Destination,attr"` Version string `xml:"Version,attr"` IssueInstant time.Time `xml:"IssueInstant,attr"` Status *Status `xml:"Status"` Issuer *Issuer `xml:"Issuer"` SignatureValidated bool `xml:"-"` // not read, not dumped } type Status struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:protocol Status"` StatusCode *StatusCode `xml:"StatusCode"` } type StatusCode struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:protocol StatusCode"` Value string `xml:"Value,attr"` } type Issuer struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion Issuer"` Value string `xml:",chardata"` } type Signature struct { SignatureDocument []byte `xml:",innerxml"` } type Assertion struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion Assertion"` Version string `xml:"Version,attr"` ID string `xml:"ID,attr"` IssueInstant time.Time `xml:"IssueInstant,attr"` Issuer *Issuer `xml:"Issuer"` Signature *Signature `xml:"Signature"` Subject *Subject `xml:"Subject"` Conditions *Conditions `xml:"Conditions"` AttributeStatement *AttributeStatement `xml:"AttributeStatement"` AuthnStatement *AuthnStatement `xml:"AuthnStatement"` SignatureValidated bool `xml:"-"` // not read, not dumped } type Subject struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion Subject"` NameID *NameID `xml:"NameID"` SubjectConfirmation *SubjectConfirmation `xml:"SubjectConfirmation"` } type AuthnContext struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion AuthnContext"` AuthnContextClassRef *AuthnContextClassRef `xml:"AuthnContextClassRef"` } type AuthnContextClassRef struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion AuthnContextClassRef"` Value string `xml:",chardata"` } type NameID struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion NameID"` Value string `xml:",chardata"` } type SubjectConfirmation struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion SubjectConfirmation"` Method string `xml:"Method,attr"` SubjectConfirmationData *SubjectConfirmationData `xml:"SubjectConfirmationData"` } type SubjectConfirmationData struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion SubjectConfirmationData"` NotOnOrAfter string `xml:"NotOnOrAfter,attr"` Recipient string `xml:"Recipient,attr"` InResponseTo string `xml:"InResponseTo,attr"` } type Conditions struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion Conditions"` NotBefore string `xml:"NotBefore,attr"` NotOnOrAfter string `xml:"NotOnOrAfter,attr"` AudienceRestrictions []AudienceRestriction `xml:"AudienceRestriction"` OneTimeUse *OneTimeUse `xml:"OneTimeUse"` ProxyRestriction *ProxyRestriction `xml:"ProxyRestriction"` } type AudienceRestriction struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion AudienceRestriction"` Audiences []Audience `xml:"Audience"` } type Audience struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion Audience"` Value string `xml:",chardata"` } type OneTimeUse struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion OneTimeUse"` } type ProxyRestriction struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion ProxyRestriction"` Count int `xml:"Count,attr"` Audience []Audience `xml:"Audience"` } type AttributeStatement struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion AttributeStatement"` Attributes []Attribute `xml:"Attribute"` } type Attribute struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion Attribute"` FriendlyName string `xml:"FriendlyName,attr"` Name string `xml:"Name,attr"` NameFormat string `xml:"NameFormat,attr"` Values []AttributeValue `xml:"AttributeValue"` } type AttributeValue struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion AttributeValue"` Type string `xml:"xsi:type,attr"` Value string `xml:",chardata"` } type AuthnStatement struct { XMLName xml.Name `xml:"urn:oasis:names:tc:SAML:2.0:assertion AuthnStatement"` //Section 4.1.4.2 - https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf //If the identity provider supports the Single Logout profile, defined in Section 4.4 //, any such authentication statements MUST include a SessionIndex attribute to enable //per-session logout requests by the service provider. SessionIndex string `xml:"SessionIndex,attr,omitempty"` AuthnInstant *time.Time `xml:"AuthnInstant,attr,omitempty"` SessionNotOnOrAfter *time.Time `xml:"SessionNotOnOrAfter,attr,omitempty"` AuthnContext *AuthnContext `xml:"AuthnContext"` } ================================================ FILE: uuid/uuid.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package uuid // relevant bits from https://github.com/abneptis/GoUUID/blob/master/uuid.go import ( "crypto/rand" "fmt" ) type UUID [16]byte // NewV4 returns random generated UUID. func NewV4() *UUID { u := &UUID{} _, err := rand.Read(u[:16]) if err != nil { panic(err) } u[8] = (u[8] | 0x80) & 0xBf u[6] = (u[6] | 0x40) & 0x4f return u } func (u *UUID) String() string { return fmt.Sprintf("%x-%x-%x-%x-%x", u[:4], u[4:6], u[6:8], u[8:10], u[10:]) } ================================================ FILE: uuid/uuid_test.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package uuid import ( "testing" ) func TestUUID(t *testing.T) { s := NewV4() s2 := NewV4() if len(s) != 16 { t.Errorf("Expecting len of 16, got %d\n", len(s)) } if len(s.String()) != 36 { t.Errorf("Expecting uuid hex string len of 36, got %d\n", len(s.String())) } if s == s2 { t.Errorf("Expecting different UUIDs to be different, but they are the same.\n") } } ================================================ FILE: validate.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 import ( "fmt" "time" "github.com/russellhaering/gosaml2/types" ) //ErrParsing indicates that the value present in an assertion could not be //parsed. It can be inspected for the specific tag name, the contents, and the //intended type. type ErrParsing struct { Tag, Value, Type string } func (ep ErrParsing) Error() string { return fmt.Sprintf("Error parsing %s tag value as type %s", ep.Tag, ep.Value) } //Oft-used messages const ( ReasonUnsupported = "Unsupported" ReasonExpired = "Expired" ) //ErrInvalidValue indicates that the expected value did not match the received //value. type ErrInvalidValue struct { Key, Expected, Actual string Reason string } func (e ErrInvalidValue) Error() string { if e.Reason == "" { e.Reason = "Unrecognized" } return fmt.Sprintf("%s %s value, Expected: %s, Actual: %s", e.Reason, e.Key, e.Expected, e.Actual) } //Well-known methods of subject confirmation const ( SubjMethodBearer = "urn:oasis:names:tc:SAML:2.0:cm:bearer" ) //VerifyAssertionConditions inspects an assertion element and makes sure that //all SAML2 contracts are upheld. func (sp *SAMLServiceProvider) VerifyAssertionConditions(assertion *types.Assertion) (*WarningInfo, error) { warningInfo := &WarningInfo{} now := sp.Clock.Now() conditions := assertion.Conditions if conditions == nil { return nil, ErrMissingElement{Tag: ConditionsTag} } if conditions.NotBefore == "" { return nil, ErrMissingElement{Tag: ConditionsTag, Attribute: NotBeforeAttr} } notBefore, err := time.Parse(time.RFC3339, conditions.NotBefore) if err != nil { return nil, ErrParsing{Tag: NotBeforeAttr, Value: conditions.NotBefore, Type: "time.RFC3339"} } if now.Before(notBefore) { warningInfo.InvalidTime = true } if conditions.NotOnOrAfter == "" { return nil, ErrMissingElement{Tag: ConditionsTag, Attribute: NotOnOrAfterAttr} } notOnOrAfter, err := time.Parse(time.RFC3339, conditions.NotOnOrAfter) if err != nil { return nil, ErrParsing{Tag: NotOnOrAfterAttr, Value: conditions.NotOnOrAfter, Type: "time.RFC3339"} } if now.After(notOnOrAfter) { warningInfo.InvalidTime = true } for _, audienceRestriction := range conditions.AudienceRestrictions { matched := false for _, audience := range audienceRestriction.Audiences { if audience.Value == sp.AudienceURI { matched = true break } } if !matched { warningInfo.NotInAudience = true break } } if conditions.OneTimeUse != nil { warningInfo.OneTimeUse = true } proxyRestriction := conditions.ProxyRestriction if proxyRestriction != nil { proxyRestrictionInfo := &ProxyRestriction{ Count: proxyRestriction.Count, Audience: []string{}, } for _, audience := range proxyRestriction.Audience { proxyRestrictionInfo.Audience = append(proxyRestrictionInfo.Audience, audience.Value) } warningInfo.ProxyRestriction = proxyRestrictionInfo } return warningInfo, nil } //Validate ensures that the assertion passed is valid for the current Service //Provider. func (sp *SAMLServiceProvider) Validate(response *types.Response) error { err := sp.validateResponseAttributes(response) if err != nil { return err } if len(response.Assertions) == 0 { return ErrMissingAssertion } issuer := response.Issuer if issuer == nil { // FIXME?: SAML Core 2.0 Section 3.2.2 has Response.Issuer as [Optional] return ErrMissingElement{Tag: IssuerTag} } if sp.IdentityProviderIssuer != "" && response.Issuer.Value != sp.IdentityProviderIssuer { return ErrInvalidValue{ Key: IssuerTag, Expected: sp.IdentityProviderIssuer, Actual: response.Issuer.Value, } } status := response.Status if status == nil { return ErrMissingElement{Tag: StatusTag} } statusCode := status.StatusCode if statusCode == nil { return ErrMissingElement{Tag: StatusCodeTag} } if statusCode.Value != StatusCodeSuccess { return ErrInvalidValue{ Key: StatusCodeTag, Expected: StatusCodeSuccess, Actual: statusCode.Value, } } for _, assertion := range response.Assertions { issuer = assertion.Issuer if issuer == nil { return ErrMissingElement{Tag: IssuerTag} } if sp.IdentityProviderIssuer != "" && assertion.Issuer.Value != sp.IdentityProviderIssuer { return ErrInvalidValue{ Key: IssuerTag, Expected: sp.IdentityProviderIssuer, Actual: issuer.Value, } } subject := assertion.Subject if subject == nil { return ErrMissingElement{Tag: SubjectTag} } subjectConfirmation := subject.SubjectConfirmation if subjectConfirmation == nil { return ErrMissingElement{Tag: SubjectConfirmationTag} } if subjectConfirmation.Method != SubjMethodBearer { return ErrInvalidValue{ Reason: ReasonUnsupported, Key: SubjectConfirmationTag, Expected: SubjMethodBearer, Actual: subjectConfirmation.Method, } } subjectConfirmationData := subjectConfirmation.SubjectConfirmationData if subjectConfirmationData == nil { return ErrMissingElement{Tag: SubjectConfirmationDataTag} } if subjectConfirmationData.Recipient != sp.AssertionConsumerServiceURL { return ErrInvalidValue{ Key: RecipientAttr, Expected: sp.AssertionConsumerServiceURL, Actual: subjectConfirmationData.Recipient, } } if subjectConfirmationData.NotOnOrAfter == "" { return ErrMissingElement{Tag: SubjectConfirmationDataTag, Attribute: NotOnOrAfterAttr} } notOnOrAfter, err := time.Parse(time.RFC3339, subjectConfirmationData.NotOnOrAfter) if err != nil { return ErrParsing{Tag: NotOnOrAfterAttr, Value: subjectConfirmationData.NotOnOrAfter, Type: "time.RFC3339"} } now := sp.Clock.Now() if now.After(notOnOrAfter) { return ErrInvalidValue{ Reason: ReasonExpired, Key: NotOnOrAfterAttr, Expected: now.Format(time.RFC3339), Actual: subjectConfirmationData.NotOnOrAfter, } } } return nil } func (sp *SAMLServiceProvider) ValidateDecodedLogoutResponse(response *types.LogoutResponse) error { err := sp.validateLogoutResponseAttributes(response) if err != nil { return err } issuer := response.Issuer if issuer == nil { // FIXME?: SAML Core 2.0 Section 3.2.2 has Response.Issuer as [Optional] return ErrMissingElement{Tag: IssuerTag} } if sp.IdentityProviderIssuer != "" && response.Issuer.Value != sp.IdentityProviderIssuer { return ErrInvalidValue{ Key: IssuerTag, Expected: sp.IdentityProviderIssuer, Actual: response.Issuer.Value, } } status := response.Status if status == nil { return ErrMissingElement{Tag: StatusTag} } statusCode := status.StatusCode if statusCode == nil { return ErrMissingElement{Tag: StatusCodeTag} } if statusCode.Value != StatusCodeSuccess { return ErrInvalidValue{ Key: StatusCodeTag, Expected: StatusCodeSuccess, Actual: statusCode.Value, } } return nil } func (sp *SAMLServiceProvider) ValidateDecodedLogoutRequest(request *LogoutRequest) error { err := sp.validateLogoutRequestAttributes(request) if err != nil { return err } issuer := request.Issuer if issuer == nil { // FIXME?: SAML Core 2.0 Section 3.2.2 has Response.Issuer as [Optional] return ErrMissingElement{Tag: IssuerTag} } if sp.IdentityProviderIssuer != "" && request.Issuer.Value != sp.IdentityProviderIssuer { return ErrInvalidValue{ Key: IssuerTag, Expected: sp.IdentityProviderIssuer, Actual: request.Issuer.Value, } } return nil } ================================================ FILE: xml_constants.go ================================================ // Copyright 2016 Russell Haering et al. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package saml2 const ( ResponseTag = "Response" AssertionTag = "Assertion" EncryptedAssertionTag = "EncryptedAssertion" SubjectTag = "Subject" NameIdTag = "NameID" SubjectConfirmationTag = "SubjectConfirmation" SubjectConfirmationDataTag = "SubjectConfirmationData" AttributeStatementTag = "AttributeStatement" AttributeValueTag = "AttributeValue" ConditionsTag = "Conditions" AudienceRestrictionTag = "AudienceRestriction" AudienceTag = "Audience" OneTimeUseTag = "OneTimeUse" ProxyRestrictionTag = "ProxyRestriction" IssuerTag = "Issuer" StatusTag = "Status" StatusCodeTag = "StatusCode" ) const ( DestinationAttr = "Destination" VersionAttr = "Version" IdAttr = "ID" MethodAttr = "Method" RecipientAttr = "Recipient" NameAttr = "Name" NotBeforeAttr = "NotBefore" NotOnOrAfterAttr = "NotOnOrAfter" CountAttr = "Count" ) const ( NameIdFormatPersistent = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameIdFormatTransient = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient" NameIdFormatEmailAddress = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" NameIdFormatUnspecified = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" NameIdFormatX509SubjectName = "urn:oasis:names:tc:SAML:1.1:nameid-format:x509SubjectName" AuthnContextPasswordProtectedTransport = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" AuthnPolicyMatchExact = "exact" AuthnPolicyMatchMinimum = "minimum" AuthnPolicyMatchMaximum = "maximum" AuthnPolicyMatchBetter = "better" StatusCodeSuccess = "urn:oasis:names:tc:SAML:2.0:status:Success" StatusCodePartialLogout = "urn:oasis:names:tc:SAML:2.0:status:PartialLogout" StatusCodeUnknownPrincipal = "urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal" BindingHttpPost = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" BindingHttpRedirect = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" ) const ( SAMLAssertionNamespace = "urn:oasis:names:tc:SAML:2.0:assertion" SAMLProtocolNamespace = "urn:oasis:names:tc:SAML:2.0:protocol" )