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:----SsNJxrjTHutxyU1qIUQGT71kFta7MMUJyUciqE1FoYN1JD8WNOoSC/JzGQKj0SMIhhHldyo89hSA03D1x+o/PwAB4UjwrxuDT83MXXtvKg11jSmKTDh9g0lajOeliRv3E4jGlXGLWuaabh3t5AWMKoCCIAQeXgmru8IdbETW9gB/XE38FK6jo9Vy71qnT5X9p4Aewh+fjjqB5E+jt7wYFkQlW8WcW5A6PDY7hmizZhujv8lqU1kNivgvJJXWFtEWQp0/tCjUzzWizVxuL1DVbSTJLlEP3gwGqhKp/zt+Ab8oJPQOPAFSNlgAlBUum8yFe6RGYjcGjEZA/iBGJc+AB2V1ZD82I8dmtr1DBEoKX3SlL8XUiiIrQv/9kE/FUNI2WBRACZxpoelMC0ZXqM2MYbfuhSr79+GGnwhIpyYs/yMos5VXnL0+51XNsARN07dgc5KXT7Xz5x59V03zw2IKyQ9CdZvQsX/SHVdHNtp/5tZ/kPvL3yLOkU2jEto9NamqCUct02HnAqiRdjj2sqFJDpdQM8JrWCK6oac1xE/LoN8Cz3pT5HuWD43n+TGZ0qHjVl3YY5umM+WImqQCIJL4kOhbz0LnvbHwer+MA7lGru3z2iWmZ9O5xCkB6+Gy8y92Ppda20c+bowr8al4NCScLJ4ANVNCkBjPQlBlHjbIFaM=----ATTACHMENT:----NTQwNzU1MzIzNzQ3NTM1OCA2OTY2Njk0NzcwMDU5MDQwIDI3MDEwNTQxMTkzOTk4OTY=