PKõ@¬Zš‘ZÃ99PublicUrlGenerator.phpnuW+A„¶count = count($prefixes); if ($this->count === 0) { throw new InvalidArgumentException('At least one prefix is required.'); } $this->prefixes = array_map(static fn (string $prefix) => new PathPrefixer($prefix, '/'), $prefixes); } public function publicUrl(string $path, Config $config): string { $index = abs(crc32($path)) % $this->count; return $this->prefixes[$index]->prefixPath($path); } } PKõ@¬Z(y™ëëChainedPublicUrlGenerator.phpnuW+A„¶generators as $generator) { try { return $generator->publicUrl($path, $config); } catch (UnableToGeneratePublicUrl) { } } throw new UnableToGeneratePublicUrl('No supported public url generator found.', $path); } } PKõ@¬ZX«3XóóPrefixPublicUrlGenerator.phpnuW+A„¶prefixer = new PathPrefixer($urlPrefix, '/'); } public function publicUrl(string $path, Config $config): string { return $this->prefixer->prefixPath($path); } } PKõ@¬Z`K…ÑyyTemporaryUrlGenerator.phpnuW+A„¶