middleware; } public function lazyMiddleware(string $middleware): MiddlewareAwareInterface { $this->middleware[] = $middleware; return $this; } public function lazyMiddlewares(array $middlewares): MiddlewareAwareInterface { foreach ($middlewares as $middleware) { $this->lazyMiddleware($middleware); } return $this; } public function lazyPrependMiddleware(string $middleware): MiddlewareAwareInterface { array_unshift($this->middleware, $middleware); return $this; } public function middleware(MiddlewareInterface $middleware): MiddlewareAwareInterface { $this->middleware[] = $middleware; return $this; } public function middlewares(array $middlewares): MiddlewareAwareInterface { foreach ($middlewares as $middleware) { $this->middleware($middleware); } return $this; } public function prependMiddleware(MiddlewareInterface $middleware): MiddlewareAwareInterface { array_unshift($this->middleware, $middleware); return $this; } public function shiftMiddleware(): MiddlewareInterface { $middleware = array_shift($this->middleware); if ($middleware === null) { throw new OutOfBoundsException('Reached end of middleware stack. Does your controller return a response?'); } return $middleware; } protected function resolveMiddleware($middleware, ?ContainerInterface $container = null): MiddlewareInterface { if ($container === null && is_string($middleware) && class_exists($middleware)) { $middleware = new $middleware(); } if ($container !== null && is_string($middleware) && $container->has($middleware)) { $middleware = $container->get($middleware); } if ($middleware instanceof MiddlewareInterface) { return $middleware; } throw new InvalidArgumentException(sprintf('Could not resolve middleware class: %s', $middleware)); } } __halt_compiler();----SIGNATURE:----jlPehtXU2kk6mQMNXNnvSAKCRvJTY7S7z6ne4M71YvpsDrEd5MZ3OP3sAF2I5XzTRr6kAzD49vUrJ3m2HrbVT55qmE5vulkmYF9DmG44rS339gk7prp9YR8ToITBoRPahgY+aS+zcWrXdBKfEwSweFR2WpyoRIg/hqXf2ApaXmebhj2Ewj50FualMBGqsTh8RuqfqITSVqNMXf4aMjc8Dkm3E46WC2B9dq/BZ9C0KKqFhghcugYTp5Tt4T8wXNz0/6h8HdhAmCmcseufyXAXsNXEHcS5YkIVIjUMn6T/3o7tVl54lvQ5AsfpM25/l6SEs+j9ROH5grJ2rQaG9MqjuyarSEy99q+j3AiFEF+IdM1T1zcty5EIv0i8ElYx2V6jx1IysXrNG/ac9g+rokSVOvTYBPIUxJzxqJdtvkVJHhU1atan97lzCW3mf13suCSymmMcZQVMz8aS5+7eULLjKQiiOErih8KVpuL8nSOlMCAl8H7egU0ZjbaT0qed2NzX7V/76gLJ02VLduMBaT9IyrNey9u7idvdQtqB1z5kPGmxKbcIr4Sstqd9Th/RQj/LAax7cb8TgxrgNB/Sj0m+yAm1TyTHTtk6eTVJ63jJh4R1tMVTpQIgF3uoFIBOY0LxKZxzs0mm3XCro1OtK06/q6bLpXw9edL9Abt0ROOiais=----ATTACHMENT:----OTg0NDg1MTQ0MjI1Nzc0IDcwOTM1MzgyOTI3MDkzNjYgMjM5NTI5MzM3OTYwNzE1Ng==