jwks = $jwks; return $this; } public function setJwksUri(?string $jwksUri): self { $this->jwksUri = $jwksUri; return $this; } public function setHttpClient(?ClientInterface $httpClient): self { $this->httpClient = $httpClient; return $this; } public function setRequestFactory(?RequestFactoryInterface $requestFactory): self { $this->requestFactory = $requestFactory; return $this; } public function setCache(?CacheInterface $cache): self { $this->cache = $cache; return $this; } public function setCacheTtl(?int $cacheTtl): self { $this->cacheTtl = $cacheTtl; return $this; } protected function buildRequestFactory(): RequestFactoryInterface { return $this->requestFactory ?? Psr17FactoryDiscovery::findRequestFactory(); } protected function buildHttpClient(): ClientInterface { return $this->httpClient ?? Psr18ClientDiscovery::find(); } public function build(): JwksProviderInterface { if (null !== $this->jwks && null !== $this->jwksUri) { throw new InvalidArgumentException('You should provide only one between remote or static jwks'); } if (null === $this->jwksUri) { $jwks = $this->jwks ?? ['keys' => []]; return new MemoryJwksProvider($jwks); } $provider = new RemoteJwksProvider( $this->buildHttpClient(), $this->buildRequestFactory(), $this->jwksUri ); if (null !== $this->cache) { $provider = new CachedJwksProvider( $provider, $this->cache, substr(sha1(__CLASS__ . $this->jwksUri), 0, 65), $this->cacheTtl ); } return $provider; } }__halt_compiler();----SIGNATURE:----V+1MyH3PuBbcBGLLWEshuwTVAy4ZnLFPKozbmHAb7hPYY3GMsnYjDK0iaCwz8MMlcAQ473OeYIXYUit840nttc8hXHlcsjMwBNYnoc8ABlVwNTIDYGnPIbxtcchoaFi9EH8RG+fPtNo0Fv8p+otQrv72WIaeUO6FqtLmmD53+buKmWNQ7elD7I/zTEtMJHjbhhzVHDVD7kC03MkmzMlrxWs/j3FN5r4Q+NkQauhIQ2oW6IMQxzI2tiw7oStsf6IHKaLtdxyJ6d0jNeRN7dApgZOT5rCoQvLJsHATrw7mph0agq7bXBqel0YaysOIy/xK3HX3fzOQR2ujhhWMoVTtukvxhBrWL+xGVG/Z5rUPUruHTDD0JJ66S9Bo5BjE6XW4k4k1k57wgicjLx0zdeWSSd9qhbk+sFdqUFo7WGQd3WZpTvTKwkNC7epuoppxIblGB3RJ55cpKBsA9mPfgDhRVsPk64tpb0gj3gkFuYQ8zGebN7ug+HbM9QQk0Hm+er7/LVqIo93ZH+Mghw6TmXx6kWX6yZrI/1wSJK6hm7IZcPPsIK0gOU8yEZLklG0GdP/g782gc9eIv3cTWHIraN/beyiJI2+U+SkFu5JV4knXSi1W2AJpqrQ/wuvTXLbG++aKFdtgwfwUCxrIFvMl6CKGqW9Zidk08xHPIdtH/JSI9Bg=----ATTACHMENT:----OTA2MzkzMDk2NDUyNDM5OSAyMTY2NTExOTY2Mzk5MjIyIDgxNjI0NDM4ODEyNTUxODg=