From 22186c7045cd39e8c3a3ef6ca6b203217836d360 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 8 Oct 2018 20:42:28 -0700 Subject: [PATCH] [Routing] simplify PhpMatcherDumper by splitting code logic from route data --- .../Matcher/Dumper/PhpMatcherDumper.php | 449 +--- .../Matcher/Dumper/PhpMatcherTrait.php | 156 ++ .../Tests/Fixtures/dumper/url_matcher0.php | 23 +- .../Tests/Fixtures/dumper/url_matcher1.php | 236 +- .../Tests/Fixtures/dumper/url_matcher10.php | 2066 ++++++++--------- .../Tests/Fixtures/dumper/url_matcher11.php | 129 +- .../Tests/Fixtures/dumper/url_matcher12.php | 78 +- .../Tests/Fixtures/dumper/url_matcher13.php | 57 +- .../Tests/Fixtures/dumper/url_matcher2.php | 275 +-- .../Tests/Fixtures/dumper/url_matcher3.php | 107 +- .../Tests/Fixtures/dumper/url_matcher4.php | 82 +- .../Tests/Fixtures/dumper/url_matcher5.php | 156 +- .../Tests/Fixtures/dumper/url_matcher6.php | 125 +- .../Tests/Fixtures/dumper/url_matcher7.php | 160 +- .../Tests/Fixtures/dumper/url_matcher8.php | 72 +- .../Tests/Fixtures/dumper/url_matcher9.php | 49 +- 16 files changed, 1503 insertions(+), 2717 deletions(-) create mode 100644 src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherTrait.php diff --git a/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php index 1e939a8607d1..8907fb464fb8 100644 --- a/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php +++ b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php @@ -13,7 +13,6 @@ use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; -use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface; use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; @@ -56,13 +55,11 @@ public function dump(array $options = array()) // trailing slash support is only enabled if we know how to redirect the user $interfaces = class_implements($options['base_class']); - $supportsRedirections = isset($interfaces[RedirectableUrlMatcherInterface::class]); return <<context = \$context; - } - -{$this->generateMatchMethod($supportsRedirections)} +{$this->generateProperties()} } } EOF; @@ -90,7 +87,7 @@ public function addExpressionLanguageProvider(ExpressionFunctionProviderInterfac /** * Generates the code for the match method implementing UrlMatcherInterface. */ - private function generateMatchMethod(bool $supportsRedirections): string + private function generateProperties(): string { // Group hosts by same-suffix, re-order when possible $matchHost = false; @@ -103,86 +100,25 @@ private function generateMatchMethod(bool $supportsRedirections): string $routes->addRoute($host ?: '/(.*)', array($name, $route)); } - $routes = $matchHost ? $routes->populateCollection(new RouteCollection()) : $this->getRoutes(); - - $code = rtrim($this->compileRoutes($routes, $matchHost), "\n"); - $fetchHost = $matchHost ? " \$host = strtolower(\$context->getHost());\n" : ''; - - $code = <<context; - \$requestMethod = \$canonicalMethod = \$context->getMethod(); -{$fetchHost} - if ('HEAD' === \$requestMethod) { - \$canonicalMethod = 'GET'; - } - -$code - -EOF; - - if ($supportsRedirections) { - return <<<'EOF' - public function match($pathinfo) - { - $allow = $allowSchemes = array(); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $ret; - } - if ($allow) { - throw new MethodNotAllowedException(array_keys($allow)); - } - if (!in_array($this->context->getMethod(), array('HEAD', 'GET'), true)) { - // no-op - } elseif ($allowSchemes) { - redirect_scheme: - $scheme = $this->context->getScheme(); - $this->context->setScheme(key($allowSchemes)); - try { - if ($ret = $this->doMatch($pathinfo)) { - return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret; - } - } finally { - $this->context->setScheme($scheme); - } - } elseif ('/' !== $pathinfo) { - $pathinfo = '/' !== $pathinfo[-1] ? $pathinfo.'/' : substr($pathinfo, 0, -1); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $this->redirect($pathinfo, $ret['_route']) + $ret; - } - if ($allowSchemes) { - goto redirect_scheme; - } - } - - throw new ResourceNotFoundException(); - } - private function doMatch(string $rawPathinfo, array &$allow = array(), array &$allowSchemes = array()): ?array - -EOF - .$code."\n return null;\n }"; + if ($matchHost) { + $code = '$this->matchHost = true;'."\n"; + $routes = $routes->populateCollection(new RouteCollection()); + } else { + $code = ''; + $routes = $this->getRoutes(); } - return " public function match(\$rawPathinfo)\n".$code."\n throw \$allow ? new MethodNotAllowedException(array_keys(\$allow)) : new ResourceNotFoundException();\n }"; - } - - /** - * Generates PHP code to match a RouteCollection with all its routes. - */ - private function compileRoutes(RouteCollection $routes, bool $matchHost): string - { list($staticRoutes, $dynamicRoutes) = $this->groupStaticRoutes($routes); - $code = $this->compileStaticRoutes($staticRoutes, $matchHost); + $conditions = array(null); + $code .= $this->compileStaticRoutes($staticRoutes, $conditions); $chunkLimit = \count($dynamicRoutes); while (true) { try { $this->signalingException = new \RuntimeException('preg_match(): Compilation failed: regular expression is too large'); - $code .= $this->compileDynamicRoutes($dynamicRoutes, $matchHost, $chunkLimit); + $code .= $this->compileDynamicRoutes($dynamicRoutes, $matchHost, $chunkLimit, $conditions); break; } catch (\Exception $e) { if (1 < $chunkLimit && $this->signalingException === $e) { @@ -193,12 +129,24 @@ private function compileRoutes(RouteCollection $routes, bool $matchHost): string } } - // used to display the Welcome Page in apps that don't define a homepage - $code .= " if ('/' === \$pathinfo && !\$allow && !\$allowSchemes) {\n"; - $code .= " throw new Symfony\Component\Routing\Exception\NoConfigurationException();\n"; - $code .= " }\n"; + unset($conditions[0]); - return $code; + if (!$conditions) { + return $this->indent($code, 2); + } + + foreach ($conditions as $expression => $condition) { + $conditions[$expression] = "case {$condition}: return {$expression};"; + } + + return $this->indent($code, 2).<<checkCondition = static function (\$condition, \$context, \$request) { + switch (\$condition) { +{$this->indent(implode("\n", $conditions), 4)} + } + }; + +EOF; } /** @@ -242,58 +190,26 @@ private function groupStaticRoutes(RouteCollection $collection): array * * @throws \LogicException */ - private function compileStaticRoutes(array $staticRoutes, bool $matchHost): string + private function compileStaticRoutes(array $staticRoutes, array &$conditions): string { if (!$staticRoutes) { return ''; } - $code = $default = ''; + $code = ''; foreach ($staticRoutes as $url => $routes) { - if (1 === \count($routes)) { - foreach ($routes as $name => $route) { - } - - if (!$route->getCondition()) { - $defaults = $route->getDefaults(); - if (isset($defaults['_canonical_route'])) { - $name = $defaults['_canonical_route']; - unset($defaults['_canonical_route']); - } - $default .= sprintf( - "%s => array(%s, %s, %s, %s),\n", - self::export($url), - self::export(array('_route' => $name) + $defaults), - self::export(!$route->compile()->getHostVariables() ? $route->getHost() : $route->compile()->getHostRegex() ?: null), - self::export(array_flip($route->getMethods()) ?: null), - self::export(array_flip($route->getSchemes()) ?: null) - ); - continue; - } - } - - $code .= sprintf(" case %s:\n", self::export($url)); + $code .= self::export($url)." => array(\n"; foreach ($routes as $name => $route) { - $code .= $this->compileRoute($route, $name, true); + $code .= $this->compileRoute($route, $name, !$route->compile()->getHostVariables() ? $route->getHost() : $route->compile()->getHostRegex() ?: null, $conditions); } - $code .= " break;\n"; + $code .= "),\n"; } - if ($default) { - $code .= <<indent($default, 4)} ); - - if (!isset(\$routes[\$pathinfo])) { - break; - } - list(\$ret, \$requiredHost, \$requiredMethods, \$requiredSchemes) = \$routes[\$pathinfo]; -{$this->compileSwitchDefault(false, $matchHost)} -EOF; + if ($code) { + return "\$this->staticRoutes = array(\n{$this->indent($code, 1)});\n"; } - return sprintf(" switch (\$pathinfo) {\n%s }\n\n", $this->indent($code)); + return $code; } /** @@ -314,7 +230,7 @@ private function compileStaticRoutes(array $staticRoutes, bool $matchHost): stri * matching-but-failing subpattern is blacklisted by replacing its name by "(*F)", which forces a failure-to-match. * To ease this backlisting operation, the name of subpatterns is also the string offset where the replacement should occur. */ - private function compileDynamicRoutes(RouteCollection $collection, bool $matchHost, int $chunkLimit): string + private function compileDynamicRoutes(RouteCollection $collection, bool $matchHost, int $chunkLimit, array &$conditions): string { if (!$collection->all()) { return ''; @@ -322,8 +238,7 @@ private function compileDynamicRoutes(RouteCollection $collection, bool $matchHo $code = ''; $state = (object) array( 'regex' => '', - 'switch' => '', - 'default' => '', + 'routes' => '', 'mark' => 0, 'markTail' => 0, 'hostVars' => array(), @@ -367,7 +282,7 @@ private function compileDynamicRoutes(RouteCollection $collection, bool $matchHo } $prev = false; $rx = '{^(?'; - $code .= "\n {$state->mark} => ".self::export($rx); + $code .= "\n {$state->mark} => ".self::export($rx); $state->mark += \strlen($rx); $state->regex = $rx; @@ -383,7 +298,7 @@ private function compileDynamicRoutes(RouteCollection $collection, bool $matchHo $state->hostVars = array(); } $state->mark += \strlen($rx = ($prev ? ')' : '')."|{$hostRegex}(?"); - $code .= "\n .".self::export($rx); + $code .= "\n .".self::export($rx); $state->regex .= $rx; $prev = true; } @@ -397,14 +312,14 @@ private function compileDynamicRoutes(RouteCollection $collection, bool $matchHo $tree->addRoute($regex, array($name, $regex, $state->vars, $route)); } - $code .= $this->compileStaticPrefixCollection($tree, $state); + $code .= $this->compileStaticPrefixCollection($tree, $state, 0, $conditions); } if ($matchHost) { - $code .= "\n .')'"; + $code .= "\n .')'"; $state->regex .= ')'; } $rx = ")$}{$modifiers}"; - $code .= "\n .'{$rx}',"; + $code .= "\n .'{$rx}',"; $state->regex .= $rx; $state->markTail = 0; @@ -417,39 +332,10 @@ private function compileDynamicRoutes(RouteCollection $collection, bool $matchHo } } - if ($state->default) { - $state->switch .= <<indent($state->default, 4)} ); - - list(\$ret, \$vars, \$requiredMethods, \$requiredSchemes) = \$routes[\$m]; -{$this->compileSwitchDefault(true, $matchHost)} -EOF; - } - - $matchedPathinfo = $matchHost ? '$host.\'.\'.$pathinfo' : '$pathinfo'; unset($state->getVars); - return << \$regex) { - while (preg_match(\$regex, \$matchedPathinfo, \$matches)) { - switch (\$m = (int) \$matches['MARK']) { -{$this->indent($state->switch, 3)} } - - if ({$state->mark} === \$m) { - break; - } - \$regex = substr_replace(\$regex, 'F', \$m - \$offset, 1 + strlen(\$m)); - \$offset += strlen(\$m); - } - } - -EOF; + return "\$this->regexpList = array({$code}\n);\n" + ."\$this->dynamicRoutes = array(\n{$this->indent($state->routes, 1)});\n"; } /** @@ -458,7 +344,7 @@ private function compileDynamicRoutes(RouteCollection $collection, bool $matchHo * @param \stdClass $state A simple state object that keeps track of the progress of the compilation, * and gathers the generated switch's "case" and "default" statements */ - private function compileStaticPrefixCollection(StaticPrefixCollection $tree, \stdClass $state, int $prefixLen = 0): string + private function compileStaticPrefixCollection(StaticPrefixCollection $tree, \stdClass $state, int $prefixLen, array &$conditions): string { $code = ''; $prevRegex = null; @@ -469,10 +355,10 @@ private function compileStaticPrefixCollection(StaticPrefixCollection $tree, \st $prevRegex = null; $prefix = substr($route->getPrefix(), $prefixLen); $state->mark += \strlen($rx = "|{$prefix}(?"); - $code .= "\n .".self::export($rx); + $code .= "\n .".self::export($rx); $state->regex .= $rx; - $code .= $this->indent($this->compileStaticPrefixCollection($route, $state, $prefixLen + \strlen($prefix))); - $code .= "\n .')'"; + $code .= $this->indent($this->compileStaticPrefixCollection($route, $state, $prefixLen + \strlen($prefix), $conditions)); + $code .= "\n .')'"; $state->regex .= ')'; ++$state->markTail; continue; @@ -480,244 +366,53 @@ private function compileStaticPrefixCollection(StaticPrefixCollection $tree, \st list($name, $regex, $vars, $route) = $route; $compiledRoute = $route->compile(); + $vars = array_merge($state->hostVars, $vars); if ($compiledRoute->getRegex() === $prevRegex) { - $state->switch = substr_replace($state->switch, $this->compileRoute($route, $name, false)."\n", -19, 0); + $state->routes = substr_replace($state->routes, $this->compileRoute($route, $name, $vars, $conditions), -3, 0); continue; } $state->mark += 3 + $state->markTail + \strlen($regex) - $prefixLen; $state->markTail = 2 + \strlen($state->mark); $rx = sprintf('|%s(*:%s)', substr($regex, $prefixLen), $state->mark); - $code .= "\n .".self::export($rx); + $code .= "\n .".self::export($rx); $state->regex .= $rx; - $vars = array_merge($state->hostVars, $vars); - if (!$route->getCondition() && (!\is_array($next = $routes[1 + $i] ?? null) || $regex !== $next[1])) { - $prevRegex = null; - $defaults = $route->getDefaults(); - if (isset($defaults['_canonical_route'])) { - $name = $defaults['_canonical_route']; - unset($defaults['_canonical_route']); - } - $state->default .= sprintf( - "%s => array(%s, %s, %s, %s),\n", - $state->mark, - self::export(array('_route' => $name) + $defaults), - self::export($vars), - self::export(array_flip($route->getMethods()) ?: null), - self::export(array_flip($route->getSchemes()) ?: null) - ); - } else { - $prevRegex = $compiledRoute->getRegex(); - $combine = ' $matches = array('; - foreach ($vars as $j => $m) { - $combine .= sprintf('%s => $matches[%d] ?? null, ', self::export($m), 1 + $j); - } - $combine = $vars ? substr_replace($combine, ");\n\n", -2) : ''; - - $state->switch .= <<mark}: -{$combine}{$this->compileRoute($route, $name, false)} - break; - -EOF; - } + $prevRegex = $compiledRoute->getRegex(); + $state->routes .= sprintf("%s => array(\n%s),\n", $state->mark, $this->compileRoute($route, $name, $vars, $conditions)); } return $code; } - /** - * A simple helper to compiles the switch's "default" for both static and dynamic routes. - */ - private function compileSwitchDefault(bool $hasVars, bool $matchHost): string - { - if ($hasVars) { - $code = << \$v) { - if (isset(\$matches[1 + \$i])) { - \$ret[\$v] = \$matches[1 + \$i]; - } - } - -EOF; - } elseif ($matchHost) { - $code = <<mergeDefaults(\$hostMatches, \$ret); - } - } - -EOF; - } else { - $code = ''; - } - - $code .= <<getScheme()]); - if (\$requiredMethods && !isset(\$requiredMethods[\$canonicalMethod]) && !isset(\$requiredMethods[\$requestMethod])) { - if (\$hasRequiredScheme) { - \$allow += \$requiredMethods; - } - break; - } - if (!\$hasRequiredScheme) { - \$allowSchemes += \$requiredSchemes; - break; - } - - return \$ret; - -EOF; - - return $code; - } - /** * Compiles a single Route to PHP code used to match it against the path info. - * - * @throws \LogicException */ - private function compileRoute(Route $route, string $name, bool $checkHost): string + private function compileRoute(Route $route, string $name, $vars, array &$conditions): string { - $code = ''; - $compiledRoute = $route->compile(); - $conditions = array(); - $matches = (bool) $compiledRoute->getPathVariables(); - $hostMatches = (bool) $compiledRoute->getHostVariables(); - $methods = array_flip($route->getMethods()); - - if ($route->getCondition()) { - $expression = $this->getExpressionLanguage()->compile($route->getCondition(), array('context', 'request')); - - if (false !== strpos($expression, '$request')) { - $conditions[] = '($request = $request ?? $this->request ?: $this->createRequest($pathinfo))'; - } - $conditions[] = $expression; - } - - if (!$checkHost || !$compiledRoute->getHostRegex()) { - // no-op - } elseif ($hostMatches) { - $conditions[] = sprintf('preg_match(%s, $host, $hostMatches)', self::export($compiledRoute->getHostRegex())); - } else { - $conditions[] = sprintf('%s === $host', self::export($route->getHost())); - } - - $conditions = implode(' && ', $conditions); - - if ($conditions) { - $code .= <<getDefaults(); + if (isset($defaults['_canonical_route'])) { $name = $defaults['_canonical_route']; unset($defaults['_canonical_route']); } - // optimize parameters array - if ($matches || $hostMatches) { - $vars = array("array('_route' => '$name')"); - if ($matches || ($hostMatches && !$checkHost)) { - $vars[] = '$matches'; - } - if ($hostMatches && $checkHost) { - $vars[] = '$hostMatches'; - } - - $code .= sprintf( - " \$ret = \$this->mergeDefaults(%s, %s);\n", - implode(' + ', $vars), - self::export($defaults) - ); - } elseif ($defaults) { - $code .= sprintf(" \$ret = %s;\n", self::export(array('_route' => $name) + $defaults)); + if ($condition = $route->getCondition()) { + $condition = $this->getExpressionLanguage()->compile($condition, array('context', 'request')); + $condition = $conditions[$condition] ?? $conditions[$condition] = ((false !== strpos($condition, '$request')) - 1) * \count($conditions); } else { - $code .= sprintf(" \$ret = array('_route' => '%s');\n", $name); - } - - if ($methods) { - $methodVariable = isset($methods['GET']) ? '$canonicalMethod' : '$requestMethod'; - $methods = self::export($methods); + $condition = 'null'; } - if ($schemes = $route->getSchemes()) { - $schemes = self::export(array_flip($schemes)); - if ($methods) { - $code .= <<getScheme()]); - if (!isset((\$a = {$methods})[{$methodVariable}])) { - if (\$hasRequiredScheme) { - \$allow += \$a; - } - goto $gotoname; - } - if (!\$hasRequiredScheme) { - \$allowSchemes += \$requiredSchemes; - goto $gotoname; - } - - -EOF; - } else { - $code .= <<getScheme()])) { - \$allowSchemes += \$requiredSchemes; - goto $gotoname; - } - - -EOF; - } - } elseif ($methods) { - $code .= <<indent($code) : $code; + return sprintf( + " array(%s, %s, %s, %s, %s),\n", + self::export(array('_route' => $name) + $defaults), + self::export($vars), + self::export(array_flip($route->getMethods()) ?: null), + self::export(array_flip($route->getSchemes()) ?: null), + $condition + ); } private function getExpressionLanguage() @@ -734,6 +429,8 @@ private function getExpressionLanguage() private function indent($code, $level = 1) { + $code = preg_replace('/ => array\(\n (array\(.+),\n\),/', ' => array($1),', $code); + return preg_replace('/^./m', str_repeat(' ', $level).'$0', $code); } diff --git a/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherTrait.php b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherTrait.php new file mode 100644 index 000000000000..93d7b55a222c --- /dev/null +++ b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherTrait.php @@ -0,0 +1,156 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Routing\Matcher\Dumper; + +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +use Symfony\Component\Routing\Exception\NoConfigurationException; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface; + +/** + * @author Nicolas Grekas + * + * @internal + */ +trait PhpMatcherTrait +{ + private $matchHost = false; + private $staticRoutes = array(); + private $regexpList = array(); + private $dynamicRoutes = array(); + private $checkCondition; + + public function match($pathinfo) + { + $allow = $allowSchemes = array(); + if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { + return $ret; + } + if ($allow) { + throw new MethodNotAllowedException(array_keys($allow)); + } + if (!$this instanceof RedirectableUrlMatcherInterface) { + throw new ResourceNotFoundException(); + } + if (!\in_array($this->context->getMethod(), array('HEAD', 'GET'), true)) { + // no-op + } elseif ($allowSchemes) { + redirect_scheme: + $scheme = $this->context->getScheme(); + $this->context->setScheme(key($allowSchemes)); + try { + if ($ret = $this->doMatch($pathinfo)) { + return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret; + } + } finally { + $this->context->setScheme($scheme); + } + } elseif ('/' !== $pathinfo) { + $pathinfo = '/' !== $pathinfo[-1] ? $pathinfo.'/' : substr($pathinfo, 0, -1); + if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { + return $this->redirect($pathinfo, $ret['_route']) + $ret; + } + if ($allowSchemes) { + goto redirect_scheme; + } + } + + throw new ResourceNotFoundException(); + } + + private function doMatch(string $rawPathinfo, array &$allow = array(), array &$allowSchemes = array()): ?array + { + $allow = $allowSchemes = array(); + $pathinfo = rawurldecode($rawPathinfo); + $context = $this->context; + $requestMethod = $canonicalMethod = $context->getMethod(); + + if ($this->matchHost) { + $host = strtolower($context->getHost()); + } + + if ('HEAD' === $requestMethod) { + $canonicalMethod = 'GET'; + } + + foreach ($this->staticRoutes[$pathinfo] ?? array() as list($ret, $requiredHost, $requiredMethods, $requiredSchemes, $condition)) { + if ($condition && !($this->checkCondition)($condition, $context, 0 < $condition ? $request ?? $request = $this->request ?: $this->createRequest($pathinfo) : null)) { + continue; + } + + if ($requiredHost) { + if ('#' !== $requiredHost[0] ? $requiredHost !== $host : !preg_match($requiredHost, $host, $hostMatches)) { + continue; + } + if ('#' === $requiredHost[0] && $hostMatches) { + $hostMatches['_route'] = $ret['_route']; + $ret = $this->mergeDefaults($hostMatches, $ret); + } + } + + $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); + if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { + if ($hasRequiredScheme) { + $allow += $requiredMethods; + } + continue; + } + if (!$hasRequiredScheme) { + $allowSchemes += $requiredSchemes; + continue; + } + + return $ret; + } + + $matchedPathinfo = $this->matchHost ? $host.'.'.$pathinfo : $pathinfo; + + foreach ($this->regexpList as $offset => $regex) { + while (preg_match($regex, $matchedPathinfo, $matches)) { + foreach ($this->dynamicRoutes[$m = (int) $matches['MARK']] as list($ret, $vars, $requiredMethods, $requiredSchemes, $condition)) { + if ($condition && !($this->checkCondition)($condition, $context, 0 < $condition ? $request ?? $request = $this->request ?: $this->createRequest($pathinfo) : null)) { + continue; + } + + foreach ($vars as $i => $v) { + if (isset($matches[1 + $i])) { + $ret[$v] = $matches[1 + $i]; + } + } + + $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); + if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { + if ($hasRequiredScheme) { + $allow += $requiredMethods; + } + continue; + } + if (!$hasRequiredScheme) { + $allowSchemes += $requiredSchemes; + continue; + } + + return $ret; + } + + $regex = substr_replace($regex, 'F', $m - $offset, 1 + \strlen($m)); + $offset += \strlen($m); + } + } + + if ('/' === $pathinfo && !$allow && !$allowSchemes) { + throw new NoConfigurationException(); + } + + return null; + } +} diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher0.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher0.php index e7c0765003b2..e1466356faa2 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher0.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher0.php @@ -1,7 +1,6 @@ context = $context; } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); - } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher1.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher1.php index 68e7741b5218..8abcb8f0c991 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher1.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher1.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - $host = strtolower($context->getHost()); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - default: - $routes = array( - '/test/baz' => array(array('_route' => 'baz'), null, null, null), - '/test/baz.html' => array(array('_route' => 'baz2'), null, null, null), - '/test/baz3/' => array(array('_route' => 'baz3'), null, null, null), - '/foofoo' => array(array('_route' => 'foofoo', 'def' => 'test'), null, null, null), - '/spa ce' => array(array('_route' => 'space'), null, null, null), - '/multi/new' => array(array('_route' => 'overridden2'), null, null, null), - '/multi/hey/' => array(array('_route' => 'hey'), null, null, null), - '/ababa' => array(array('_route' => 'ababa'), null, null, null), - '/route1' => array(array('_route' => 'route1'), 'a.example.com', null, null), - '/c2/route2' => array(array('_route' => 'route2'), 'a.example.com', null, null), - '/route4' => array(array('_route' => 'route4'), 'a.example.com', null, null), - '/c2/route3' => array(array('_route' => 'route3'), 'b.example.com', null, null), - '/route5' => array(array('_route' => 'route5'), 'c.example.com', null, null), - '/route6' => array(array('_route' => 'route6'), null, null, null), - '/route11' => array(array('_route' => 'route11'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null), - '/route12' => array(array('_route' => 'route12', 'var1' => 'val'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null), - '/route17' => array(array('_route' => 'route17'), null, null, null), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - if ($requiredHost) { - if ('#' !== $requiredHost[0] ? $requiredHost !== $host : !preg_match($requiredHost, $host, $hostMatches)) { - break; - } - if ('#' === $requiredHost[0] && $hostMatches) { - $hostMatches['_route'] = $ret['_route']; - $ret = $this->mergeDefaults($hostMatches, $ret); - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - $matchedPathinfo = $host.'.'.$pathinfo; - $regexList = array( + $this->matchHost = true; + $this->staticRoutes = array( + '/test/baz' => array(array(array('_route' => 'baz'), null, null, null, null)), + '/test/baz.html' => array(array(array('_route' => 'baz2'), null, null, null, null)), + '/test/baz3/' => array(array(array('_route' => 'baz3'), null, null, null, null)), + '/foofoo' => array(array(array('_route' => 'foofoo', 'def' => 'test'), null, null, null, null)), + '/spa ce' => array(array(array('_route' => 'space'), null, null, null, null)), + '/multi/new' => array(array(array('_route' => 'overridden2'), null, null, null, null)), + '/multi/hey/' => array(array(array('_route' => 'hey'), null, null, null, null)), + '/ababa' => array(array(array('_route' => 'ababa'), null, null, null, null)), + '/route1' => array(array(array('_route' => 'route1'), 'a.example.com', null, null, null)), + '/c2/route2' => array(array(array('_route' => 'route2'), 'a.example.com', null, null, null)), + '/route4' => array(array(array('_route' => 'route4'), 'a.example.com', null, null, null)), + '/c2/route3' => array(array(array('_route' => 'route3'), 'b.example.com', null, null, null)), + '/route5' => array(array(array('_route' => 'route5'), 'c.example.com', null, null, null)), + '/route6' => array(array(array('_route' => 'route6'), null, null, null, null)), + '/route11' => array(array(array('_route' => 'route11'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null, null)), + '/route12' => array(array(array('_route' => 'route12', 'var1' => 'val'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null, null)), + '/route17' => array(array(array('_route' => 'route17'), null, null, null, null)), + ); + $this->regexpList = array( 0 => '{^(?' .'|(?:(?:[^./]*+\\.)++)(?' .'|/foo/(baz|symfony)(*:47)' @@ -128,120 +82,32 @@ public function match($rawPathinfo) .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - case 116: - $matches = array('foo' => $matches[1] ?? null); - - // baz4 - return $this->mergeDefaults(array('_route' => 'baz4') + $matches, array()); - - // baz5 - $ret = $this->mergeDefaults(array('_route' => 'baz5') + $matches, array()); - if (!isset(($a = array('POST' => 0))[$requestMethod])) { - $allow += $a; - goto not_baz5; - } - - return $ret; - not_baz5: - - // baz.baz6 - $ret = $this->mergeDefaults(array('_route' => 'baz.baz6') + $matches, array()); - if (!isset(($a = array('PUT' => 0))[$requestMethod])) { - $allow += $a; - goto not_bazbaz6; - } - - return $ret; - not_bazbaz6: - - break; - case 161: - $matches = array('foo' => $matches[1] ?? null); - - // foo1 - $ret = $this->mergeDefaults(array('_route' => 'foo1') + $matches, array()); - if (!isset(($a = array('PUT' => 0))[$requestMethod])) { - $allow += $a; - goto not_foo1; - } - - return $ret; - not_foo1: - - break; - case 205: - $matches = array('foo1' => $matches[1] ?? null); - - // foo2 - return $this->mergeDefaults(array('_route' => 'foo2') + $matches, array()); - - break; - case 280: - $matches = array('_locale' => $matches[1] ?? null, 'foo' => $matches[2] ?? null); - - // foo3 - return $this->mergeDefaults(array('_route' => 'foo3') + $matches, array()); - - break; - default: - $routes = array( - 47 => array(array('_route' => 'foo', 'def' => 'test'), array('bar'), null, null), - 70 => array(array('_route' => 'bar'), array('foo'), array('GET' => 0, 'HEAD' => 1), null), - 90 => array(array('_route' => 'barhead'), array('foo'), array('GET' => 0), null), - 132 => array(array('_route' => 'quoter'), array('quoter'), null, null), - 169 => array(array('_route' => 'bar1'), array('bar'), null, null), - 182 => array(array('_route' => 'overridden'), array('var'), null, null), - 213 => array(array('_route' => 'bar2'), array('bar1'), null, null), - 249 => array(array('_route' => 'helloWorld', 'who' => 'World!'), array('who'), null, null), - 288 => array(array('_route' => 'bar3'), array('_locale', 'bar'), null, null), - 310 => array(array('_route' => 'foo4'), array('foo'), null, null), - 372 => array(array('_route' => 'route13'), array('var1', 'name'), null, null), - 390 => array(array('_route' => 'route14', 'var1' => 'val'), array('var1', 'name'), null, null), - 442 => array(array('_route' => 'route15'), array('name'), null, null), - 490 => array(array('_route' => 'route16', 'var1' => 'val'), array('name'), null, null), - 511 => array(array('_route' => 'a'), array(), null, null), - 532 => array(array('_route' => 'b'), array('var'), null, null), - 550 => array(array('_route' => 'c'), array('var'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (550 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->dynamicRoutes = array( + 47 => array(array(array('_route' => 'foo', 'def' => 'test'), array('bar'), null, null, null)), + 70 => array(array(array('_route' => 'bar'), array('foo'), array('GET' => 0, 'HEAD' => 1), null, null)), + 90 => array(array(array('_route' => 'barhead'), array('foo'), array('GET' => 0), null, null)), + 116 => array( + array(array('_route' => 'baz4'), array('foo'), null, null, null), + array(array('_route' => 'baz5'), array('foo'), array('POST' => 0), null, null), + array(array('_route' => 'baz.baz6'), array('foo'), array('PUT' => 0), null, null), + ), + 132 => array(array(array('_route' => 'quoter'), array('quoter'), null, null, null)), + 161 => array(array(array('_route' => 'foo1'), array('foo'), array('PUT' => 0), null, null)), + 169 => array(array(array('_route' => 'bar1'), array('bar'), null, null, null)), + 182 => array(array(array('_route' => 'overridden'), array('var'), null, null, null)), + 205 => array(array(array('_route' => 'foo2'), array('foo1'), null, null, null)), + 213 => array(array(array('_route' => 'bar2'), array('bar1'), null, null, null)), + 249 => array(array(array('_route' => 'helloWorld', 'who' => 'World!'), array('who'), null, null, null)), + 280 => array(array(array('_route' => 'foo3'), array('_locale', 'foo'), null, null, null)), + 288 => array(array(array('_route' => 'bar3'), array('_locale', 'bar'), null, null, null)), + 310 => array(array(array('_route' => 'foo4'), array('foo'), null, null, null)), + 372 => array(array(array('_route' => 'route13'), array('var1', 'name'), null, null, null)), + 390 => array(array(array('_route' => 'route14', 'var1' => 'val'), array('var1', 'name'), null, null, null)), + 442 => array(array(array('_route' => 'route15'), array('name'), null, null, null)), + 490 => array(array(array('_route' => 'route16', 'var1' => 'val'), array('name'), null, null, null)), + 511 => array(array(array('_route' => 'a'), array(), null, null, null)), + 532 => array(array(array('_route' => 'b'), array('var'), null, null, null)), + 550 => array(array(array('_route' => 'c'), array('var'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher10.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher10.php index 2f5cc3fc5aa5..80143a43c78f 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher10.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher10.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->regexpList = array( 0 => '{^(?' .'|/c(?' .'|f(?' @@ -1783,1048 +1770,1007 @@ public function match($rawPathinfo) .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 54 => array(array('_route' => '_0'), array('a', 'b', 'c'), null, null), - 102 => array(array('_route' => '_190'), array('a', 'b', 'c'), null, null), - 147 => array(array('_route' => '_478'), array('a', 'b', 'c'), null, null), - 194 => array(array('_route' => '_259'), array('a', 'b', 'c'), null, null), - 240 => array(array('_route' => '_368'), array('a', 'b', 'c'), null, null), - 291 => array(array('_route' => '_1'), array('a', 'b', 'c'), null, null), - 337 => array(array('_route' => '_116'), array('a', 'b', 'c'), null, null), - 383 => array(array('_route' => '_490'), array('a', 'b', 'c'), null, null), - 434 => array(array('_route' => '_2'), array('a', 'b', 'c'), null, null), - 480 => array(array('_route' => '_124'), array('a', 'b', 'c'), null, null), - 526 => array(array('_route' => '_389'), array('a', 'b', 'c'), null, null), - 577 => array(array('_route' => '_8'), array('a', 'b', 'c'), null, null), - 623 => array(array('_route' => '_104'), array('a', 'b', 'c'), null, null), - 677 => array(array('_route' => '_12'), array('a', 'b', 'c'), null, null), - 722 => array(array('_route' => '_442'), array('a', 'b', 'c'), null, null), - 769 => array(array('_route' => '_253'), array('a', 'b', 'c'), null, null), - 820 => array(array('_route' => '_13'), array('a', 'b', 'c'), null, null), - 866 => array(array('_route' => '_254'), array('a', 'b', 'c'), null, null), - 912 => array(array('_route' => '_347'), array('a', 'b', 'c'), null, null), - 963 => array(array('_route' => '_16'), array('a', 'b', 'c'), null, null), - 1009 => array(array('_route' => '_87'), array('a', 'b', 'c'), null, null), - 1058 => array(array('_route' => '_31'), array('a', 'b', 'c'), null, null), - 1109 => array(array('_route' => '_50'), array('a', 'b', 'c'), null, null), - 1156 => array(array('_route' => '_219'), array('a', 'b', 'c'), null, null), - 1203 => array(array('_route' => '_332'), array('a', 'b', 'c'), null, null), - 1250 => array(array('_route' => '_359'), array('a', 'b', 'c'), null, null), - 1302 => array(array('_route' => '_183'), array('a', 'b', 'c'), null, null), - 1349 => array(array('_route' => '_500'), array('a', 'b', 'c'), null, null), - 1401 => array(array('_route' => '_214'), array('a', 'b', 'c'), null, null), - 1448 => array(array('_route' => '_321'), array('a', 'b', 'c'), null, null), - 1497 => array(array('_route' => '_243'), array('a', 'b', 'c'), null, null), - 1545 => array(array('_route' => '_328'), array('a', 'b', 'c'), null, null), - 1596 => array(array('_route' => '_362'), array('a', 'b', 'c'), null, null), - 1643 => array(array('_route' => '_488'), array('a', 'b', 'c'), null, null), - 1701 => array(array('_route' => '_3'), array('a', 'b', 'c'), null, null), - 1751 => array(array('_route' => '_102'), array('a', 'b', 'c'), null, null), - 1797 => array(array('_route' => '_220'), array('a', 'b', 'c'), null, null), - 1845 => array(array('_route' => '_127'), array('a', 'b', 'c'), null, null), - 1897 => array(array('_route' => '_5'), array('a', 'b', 'c'), null, null), - 1944 => array(array('_route' => '_242'), array('a', 'b', 'c'), null, null), - 1991 => array(array('_route' => '_397'), array('a', 'b', 'c'), null, null), - 2038 => array(array('_route' => '_454'), array('a', 'b', 'c'), null, null), - 2090 => array(array('_route' => '_34'), array('a', 'b', 'c'), null, null), - 2137 => array(array('_route' => '_281'), array('a', 'b', 'c'), null, null), - 2189 => array(array('_route' => '_64'), array('a', 'b', 'c'), null, null), - 2236 => array(array('_route' => '_205'), array('a', 'b', 'c'), null, null), - 2291 => array(array('_route' => '_71'), array('a', 'b', 'c'), null, null), - 2337 => array(array('_route' => '_203'), array('a', 'b', 'c'), null, null), - 2385 => array(array('_route' => '_97'), array('a', 'b', 'c'), null, null), - 2437 => array(array('_route' => '_98'), array('a', 'b', 'c'), null, null), - 2484 => array(array('_route' => '_267'), array('a', 'b', 'c'), null, null), - 2531 => array(array('_route' => '_309'), array('a', 'b', 'c'), null, null), - 2586 => array(array('_route' => '_117'), array('a', 'b', 'c'), null, null), - 2631 => array(array('_route' => '_211'), array('a', 'b', 'c'), null, null), - 2679 => array(array('_route' => '_484'), array('a', 'b', 'c'), null, null), - 2731 => array(array('_route' => '_139'), array('a', 'b', 'c'), null, null), - 2778 => array(array('_route' => '_421'), array('a', 'b', 'c'), null, null), - 2830 => array(array('_route' => '_185'), array('a', 'b', 'c'), null, null), - 2877 => array(array('_route' => '_439'), array('a', 'b', 'c'), null, null), - 2926 => array(array('_route' => '_218'), array('a', 'b', 'c'), null, null), - 2977 => array(array('_route' => '_233'), array('a', 'b', 'c'), null, null), - 3024 => array(array('_route' => '_483'), array('a', 'b', 'c'), null, null), - 3073 => array(array('_route' => '_265'), array('a', 'b', 'c'), null, null), - 3124 => array(array('_route' => '_299'), array('a', 'b', 'c'), null, null), - 3171 => array(array('_route' => '_351'), array('a', 'b', 'c'), null, null), - 3218 => array(array('_route' => '_472'), array('a', 'b', 'c'), null, null), - 3267 => array(array('_route' => '_360'), array('a', 'b', 'c'), null, null), - 3315 => array(array('_route' => '_466'), array('a', 'b', 'c'), null, null), - 3372 => array(array('_route' => '_4'), array('a', 'b', 'c'), null, null), - 3419 => array(array('_route' => '_142'), array('a', 'b', 'c'), null, null), - 3466 => array(array('_route' => '_151'), array('a', 'b', 'c'), null, null), - 3513 => array(array('_route' => '_308'), array('a', 'b', 'c'), null, null), - 3560 => array(array('_route' => '_440'), array('a', 'b', 'c'), null, null), - 3612 => array(array('_route' => '_14'), array('a', 'b', 'c'), null, null), - 3659 => array(array('_route' => '_358'), array('a', 'b', 'c'), null, null), - 3711 => array(array('_route' => '_37'), array('a', 'b', 'c'), null, null), - 3758 => array(array('_route' => '_38'), array('a', 'b', 'c'), null, null), - 3805 => array(array('_route' => '_146'), array('a', 'b', 'c'), null, null), - 3852 => array(array('_route' => '_194'), array('a', 'b', 'c'), null, null), - 3899 => array(array('_route' => '_487'), array('a', 'b', 'c'), null, null), - 3948 => array(array('_route' => '_42'), array('a', 'b', 'c'), null, null), - 3999 => array(array('_route' => '_54'), array('a', 'b', 'c'), null, null), - 4046 => array(array('_route' => '_326'), array('a', 'b', 'c'), null, null), - 4098 => array(array('_route' => '_68'), array('a', 'b', 'c'), null, null), - 4145 => array(array('_route' => '_108'), array('a', 'b', 'c'), null, null), - 4197 => array(array('_route' => '_74'), array('a', 'b', 'c'), null, null), - 4244 => array(array('_route' => '_315'), array('a', 'b', 'c'), null, null), - 4291 => array(array('_route' => '_374'), array('a', 'b', 'c'), null, null), - 4343 => array(array('_route' => '_99'), array('a', 'b', 'c'), null, null), - 4390 => array(array('_route' => '_238'), array('a', 'b', 'c'), null, null), - 4442 => array(array('_route' => '_107'), array('a', 'b', 'c'), null, null), - 4489 => array(array('_route' => '_409'), array('a', 'b', 'c'), null, null), - 4541 => array(array('_route' => '_122'), array('a', 'b', 'c'), null, null), - 4588 => array(array('_route' => '_379'), array('a', 'b', 'c'), null, null), - 4635 => array(array('_route' => '_390'), array('a', 'b', 'c'), null, null), - 4687 => array(array('_route' => '_171'), array('a', 'b', 'c'), null, null), - 4734 => array(array('_route' => '_260'), array('a', 'b', 'c'), null, null), - 4781 => array(array('_route' => '_434'), array('a', 'b', 'c'), null, null), - 4830 => array(array('_route' => '_189'), array('a', 'b', 'c'), null, null), - 4878 => array(array('_route' => '_467'), array('a', 'b', 'c'), null, null), - 4935 => array(array('_route' => '_6'), array('a', 'b', 'c'), null, null), - 4982 => array(array('_route' => '_286'), array('a', 'b', 'c'), null, null), - 5029 => array(array('_route' => '_438'), array('a', 'b', 'c'), null, null), - 5081 => array(array('_route' => '_19'), array('a', 'b', 'c'), null, null), - 5131 => array(array('_route' => '_24'), array('a', 'b', 'c'), null, null), - 5177 => array(array('_route' => '_172'), array('a', 'b', 'c'), null, null), - 5230 => array(array('_route' => '_33'), array('a', 'b', 'c'), null, null), - 5277 => array(array('_route' => '_400'), array('a', 'b', 'c'), null, null), - 5324 => array(array('_route' => '_427'), array('a', 'b', 'c'), null, null), - 5376 => array(array('_route' => '_35'), array('a', 'b', 'c'), null, null), - 5423 => array(array('_route' => '_156'), array('a', 'b', 'c'), null, null), - 5475 => array(array('_route' => '_36'), array('a', 'b', 'c'), null, null), - 5522 => array(array('_route' => '_251'), array('a', 'b', 'c'), null, null), - 5574 => array(array('_route' => '_43'), array('a', 'b', 'c'), null, null), - 5621 => array(array('_route' => '_292'), array('a', 'b', 'c'), null, null), - 5668 => array(array('_route' => '_411'), array('a', 'b', 'c'), null, null), - 5720 => array(array('_route' => '_69'), array('a', 'b', 'c'), null, null), - 5767 => array(array('_route' => '_159'), array('a', 'b', 'c'), null, null), - 5814 => array(array('_route' => '_170'), array('a', 'b', 'c'), null, null), - 5861 => array(array('_route' => '_376'), array('a', 'b', 'c'), null, null), - 5913 => array(array('_route' => '_131'), array('a', 'b', 'c'), null, null), - 5960 => array(array('_route' => '_446'), array('a', 'b', 'c'), null, null), - 6015 => array(array('_route' => '_140'), array('a', 'b', 'c'), null, null), - 6061 => array(array('_route' => '_353'), array('a', 'b', 'c'), null, null), - 6112 => array(array('_route' => '_224'), array('a', 'b', 'c'), null, null), - 6158 => array(array('_route' => '_346'), array('a', 'b', 'c'), null, null), - 6204 => array(array('_route' => '_443'), array('a', 'b', 'c'), null, null), - 6254 => array(array('_route' => '_154'), array('a', 'b', 'c'), null, null), - 6305 => array(array('_route' => '_212'), array('a', 'b', 'c'), null, null), - 6352 => array(array('_route' => '_313'), array('a', 'b', 'c'), null, null), - 6399 => array(array('_route' => '_395'), array('a', 'b', 'c'), null, null), - 6446 => array(array('_route' => '_441'), array('a', 'b', 'c'), null, null), - 6498 => array(array('_route' => '_223'), array('a', 'b', 'c'), null, null), - 6545 => array(array('_route' => '_303'), array('a', 'b', 'c'), null, null), - 6594 => array(array('_route' => '_410'), array('a', 'b', 'c'), null, null), - 6642 => array(array('_route' => '_494'), array('a', 'b', 'c'), null, null), - 6702 => array(array('_route' => '_7'), array('a', 'b', 'c'), null, null), - 6748 => array(array('_route' => '_268'), array('a', 'b', 'c'), null, null), - 6796 => array(array('_route' => '_178'), array('a', 'b', 'c'), null, null), - 6843 => array(array('_route' => '_179'), array('a', 'b', 'c'), null, null), - 6890 => array(array('_route' => '_416'), array('a', 'b', 'c'), null, null), - 6942 => array(array('_route' => '_25'), array('a', 'b', 'c'), null, null), - 6989 => array(array('_route' => '_307'), array('a', 'b', 'c'), null, null), - 7036 => array(array('_route' => '_387'), array('a', 'b', 'c'), null, null), - 7083 => array(array('_route' => '_471'), array('a', 'b', 'c'), null, null), - 7132 => array(array('_route' => '_90'), array('a', 'b', 'c'), null, null), - 7183 => array(array('_route' => '_95'), array('a', 'b', 'c'), null, null), - 7230 => array(array('_route' => '_338'), array('a', 'b', 'c'), null, null), - 7277 => array(array('_route' => '_401'), array('a', 'b', 'c'), null, null), - 7329 => array(array('_route' => '_147'), array('a', 'b', 'c'), null, null), - 7376 => array(array('_route' => '_319'), array('a', 'b', 'c'), null, null), - 7423 => array(array('_route' => '_354'), array('a', 'b', 'c'), null, null), - 7470 => array(array('_route' => '_428'), array('a', 'b', 'c'), null, null), - 7522 => array(array('_route' => '_162'), array('a', 'b', 'c'), null, null), - 7572 => array(array('_route' => '_175'), array('a', 'b', 'c'), null, null), - 7618 => array(array('_route' => '_455'), array('a', 'b', 'c'), null, null), - 7666 => array(array('_route' => '_355'), array('a', 'b', 'c'), null, null), - 7718 => array(array('_route' => '_197'), array('a', 'b', 'c'), null, null), - 7768 => array(array('_route' => '_202'), array('a', 'b', 'c'), null, null), - 7813 => array(array('_route' => '_489'), array('a', 'b', 'c'), null, null), - 7863 => array(array('_route' => '_199'), array('a', 'b', 'c'), null, null), - 7914 => array(array('_route' => '_263'), array('a', 'b', 'c'), null, null), - 7961 => array(array('_route' => '_406'), array('a', 'b', 'c'), null, null), - 8010 => array(array('_route' => '_289'), array('a', 'b', 'c'), null, null), - 8058 => array(array('_route' => '_325'), array('a', 'b', 'c'), null, null), - 8106 => array(array('_route' => '_378'), array('a', 'b', 'c'), null, null), - 8154 => array(array('_route' => '_468'), array('a', 'b', 'c'), null, null), - 8211 => array(array('_route' => '_9'), array('a', 'b', 'c'), null, null), - 8258 => array(array('_route' => '_216'), array('a', 'b', 'c'), null, null), - 8307 => array(array('_route' => '_26'), array('a', 'b', 'c'), null, null), - 8355 => array(array('_route' => '_62'), array('a', 'b', 'c'), null, null), - 8406 => array(array('_route' => '_81'), array('a', 'b', 'c'), null, null), - 8453 => array(array('_route' => '_318'), array('a', 'b', 'c'), null, null), - 8505 => array(array('_route' => '_121'), array('a', 'b', 'c'), null, null), - 8551 => array(array('_route' => '_182'), array('a', 'b', 'c'), null, null), - 8603 => array(array('_route' => '_136'), array('a', 'b', 'c'), null, null), - 8650 => array(array('_route' => '_415'), array('a', 'b', 'c'), null, null), - 8697 => array(array('_route' => '_457'), array('a', 'b', 'c'), null, null), - 8744 => array(array('_route' => '_463'), array('a', 'b', 'c'), null, null), - 8796 => array(array('_route' => '_148'), array('a', 'b', 'c'), null, null), - 8843 => array(array('_route' => '_273'), array('a', 'b', 'c'), null, null), - 8892 => array(array('_route' => '_284'), array('a', 'b', 'c'), null, null), - 8940 => array(array('_route' => '_288'), array('a', 'b', 'c'), null, null), - 8991 => array(array('_route' => '_295'), array('a', 'b', 'c'), null, null), - 9038 => array(array('_route' => '_305'), array('a', 'b', 'c'), null, null), - 9085 => array(array('_route' => '_453'), array('a', 'b', 'c'), null, null), - 9134 => array(array('_route' => '_340'), array('a', 'b', 'c'), null, null), - 9185 => array(array('_route' => '_371'), array('a', 'b', 'c'), null, null), - 9232 => array(array('_route' => '_417'), array('a', 'b', 'c'), null, null), - 9284 => array(array('_route' => '_382'), array('a', 'b', 'c'), null, null), - 9331 => array(array('_route' => '_404'), array('a', 'b', 'c'), null, null), - 9389 => array(array('_route' => '_10'), array('a', 'b', 'c'), null, null), - 9436 => array(array('_route' => '_279'), array('a', 'b', 'c'), null, null), - 9483 => array(array('_route' => '_377'), array('a', 'b', 'c'), null, null), - 9535 => array(array('_route' => '_39'), array('a', 'b', 'c'), null, null), - 9582 => array(array('_route' => '_40'), array('a', 'b', 'c'), null, null), - 9629 => array(array('_route' => '_264'), array('a', 'b', 'c'), null, null), - 9676 => array(array('_route' => '_449'), array('a', 'b', 'c'), null, null), - 9728 => array(array('_route' => '_46'), array('a', 'b', 'c'), null, null), - 9775 => array(array('_route' => '_257'), array('a', 'b', 'c'), null, null), - 9822 => array(array('_route' => '_274'), array('a', 'b', 'c'), null, null), - 9869 => array(array('_route' => '_388'), array('a', 'b', 'c'), null, null), - 9921 => array(array('_route' => '_53'), array('a', 'b', 'c'), null, null), - 9968 => array(array('_route' => '_345'), array('a', 'b', 'c'), null, null), - 10020 => array(array('_route' => '_73'), array('a', 'b', 'c'), null, null), - 10068 => array(array('_route' => '_296'), array('a', 'b', 'c'), null, null), - 10121 => array(array('_route' => '_75'), array('a', 'b', 'c'), null, null), - 10169 => array(array('_route' => '_458'), array('a', 'b', 'c'), null, null), - 10225 => array(array('_route' => '_79'), array('a', 'b', 'c'), null, null), - 10272 => array(array('_route' => '_129'), array('a', 'b', 'c'), null, null), - 10319 => array(array('_route' => '_418'), array('a', 'b', 'c'), null, null), - 10368 => array(array('_route' => '_225'), array('a', 'b', 'c'), null, null), - 10416 => array(array('_route' => '_479'), array('a', 'b', 'c'), null, null), - 10466 => array(array('_route' => '_120'), array('a', 'b', 'c'), null, null), - 10515 => array(array('_route' => '_276'), array('a', 'b', 'c'), null, null), - 10564 => array(array('_route' => '_370'), array('a', 'b', 'c'), null, null), - 10616 => array(array('_route' => '_385'), array('a', 'b', 'c'), null, null), - 10664 => array(array('_route' => '_469'), array('a', 'b', 'c'), null, null), - 10714 => array(array('_route' => '_435'), array('a', 'b', 'c'), null, null), - 10772 => array(array('_route' => '_11'), array('a', 'b', 'c'), null, null), - 10820 => array(array('_route' => '_105'), array('a', 'b', 'c'), null, null), - 10868 => array(array('_route' => '_132'), array('a', 'b', 'c'), null, null), - 10921 => array(array('_route' => '_18'), array('a', 'b', 'c'), null, null), - 10969 => array(array('_route' => '_210'), array('a', 'b', 'c'), null, null), - 11017 => array(array('_route' => '_329'), array('a', 'b', 'c'), null, null), - 11073 => array(array('_route' => '_29'), array('a', 'b', 'c'), null, null), - 11120 => array(array('_route' => '_480'), array('a', 'b', 'c'), null, null), - 11169 => array(array('_route' => '_426'), array('a', 'b', 'c'), null, null), - 11222 => array(array('_route' => '_32'), array('a', 'b', 'c'), null, null), - 11270 => array(array('_route' => '_217'), array('a', 'b', 'c'), null, null), - 11318 => array(array('_route' => '_275'), array('a', 'b', 'c'), null, null), - 11371 => array(array('_route' => '_45'), array('a', 'b', 'c'), null, null), - 11419 => array(array('_route' => '_157'), array('a', 'b', 'c'), null, null), - 11467 => array(array('_route' => '_184'), array('a', 'b', 'c'), null, null), - 11515 => array(array('_route' => '_250'), array('a', 'b', 'c'), null, null), - 11563 => array(array('_route' => '_356'), array('a', 'b', 'c'), null, null), - 11616 => array(array('_route' => '_47'), array('a', 'b', 'c'), null, null), - 11664 => array(array('_route' => '_445'), array('a', 'b', 'c'), null, null), - 11714 => array(array('_route' => '_48'), array('a', 'b', 'c'), null, null), - 11766 => array(array('_route' => '_58'), array('a', 'b', 'c'), null, null), - 11814 => array(array('_route' => '_414'), array('a', 'b', 'c'), null, null), - 11862 => array(array('_route' => '_431'), array('a', 'b', 'c'), null, null), - 11915 => array(array('_route' => '_84'), array('a', 'b', 'c'), null, null), - 11963 => array(array('_route' => '_294'), array('a', 'b', 'c'), null, null), - 12011 => array(array('_route' => '_336'), array('a', 'b', 'c'), null, null), - 12059 => array(array('_route' => '_465'), array('a', 'b', 'c'), null, null), - 12112 => array(array('_route' => '_103'), array('a', 'b', 'c'), null, null), - 12160 => array(array('_route' => '_111'), array('a', 'b', 'c'), null, null), - 12208 => array(array('_route' => '_207'), array('a', 'b', 'c'), null, null), - 12256 => array(array('_route' => '_402'), array('a', 'b', 'c'), null, null), - 12309 => array(array('_route' => '_230'), array('a', 'b', 'c'), null, null), - 12356 => array(array('_route' => '_331'), array('a', 'b', 'c'), null, null), - 12406 => array(array('_route' => '_248'), array('a', 'b', 'c'), null, null), - 12455 => array(array('_route' => '_282'), array('a', 'b', 'c'), null, null), - 12513 => array(array('_route' => '_15'), array('a', 'b', 'c'), null, null), - 12561 => array(array('_route' => '_130'), array('a', 'b', 'c'), null, null), - 12609 => array(array('_route' => '_231'), array('a', 'b', 'c'), null, null), - 12657 => array(array('_route' => '_365'), array('a', 'b', 'c'), null, null), - 12705 => array(array('_route' => '_448'), array('a', 'b', 'c'), null, null), - 12758 => array(array('_route' => '_20'), array('a', 'b', 'c'), null, null), - 12806 => array(array('_route' => '_93'), array('a', 'b', 'c'), null, null), - 12854 => array(array('_route' => '_186'), array('a', 'b', 'c'), null, null), - 12902 => array(array('_route' => '_460'), array('a', 'b', 'c'), null, null), - 12955 => array(array('_route' => '_52'), array('a', 'b', 'c'), null, null), - 13003 => array(array('_route' => '_447'), array('a', 'b', 'c'), null, null), - 13056 => array(array('_route' => '_56'), array('a', 'b', 'c'), null, null), - 13104 => array(array('_route' => '_133'), array('a', 'b', 'c'), null, null), - 13152 => array(array('_route' => '_297'), array('a', 'b', 'c'), null, null), - 13205 => array(array('_route' => '_82'), array('a', 'b', 'c'), null, null), - 13253 => array(array('_route' => '_165'), array('a', 'b', 'c'), null, null), - 13301 => array(array('_route' => '_213'), array('a', 'b', 'c'), null, null), - 13351 => array(array('_route' => '_86'), array('a', 'b', 'c'), null, null), - 13403 => array(array('_route' => '_92'), array('a', 'b', 'c'), null, null), - 13450 => array(array('_route' => '_280'), array('a', 'b', 'c'), null, null), - 13500 => array(array('_route' => '_143'), array('a', 'b', 'c'), null, null), - 13549 => array(array('_route' => '_177'), array('a', 'b', 'c'), null, null), - 13601 => array(array('_route' => '_188'), array('a', 'b', 'c'), null, null), - 13649 => array(array('_route' => '_311'), array('a', 'b', 'c'), null, null), - 13697 => array(array('_route' => '_350'), array('a', 'b', 'c'), null, null), - 13750 => array(array('_route' => '_226'), array('a', 'b', 'c'), null, null), - 13798 => array(array('_route' => '_291'), array('a', 'b', 'c'), null, null), - 13851 => array(array('_route' => '_244'), array('a', 'b', 'c'), null, null), - 13898 => array(array('_route' => '_287'), array('a', 'b', 'c'), null, null), - 13951 => array(array('_route' => '_300'), array('a', 'b', 'c'), null, null), - 13999 => array(array('_route' => '_451'), array('a', 'b', 'c'), null, null), - 14047 => array(array('_route' => '_452'), array('a', 'b', 'c'), null, null), - 14095 => array(array('_route' => '_481'), array('a', 'b', 'c'), null, null), - 14145 => array(array('_route' => '_312'), array('a', 'b', 'c'), null, null), - 14203 => array(array('_route' => '_17'), array('a', 'b', 'c'), null, null), - 14251 => array(array('_route' => '_227'), array('a', 'b', 'c'), null, null), - 14299 => array(array('_route' => '_393'), array('a', 'b', 'c'), null, null), - 14349 => array(array('_route' => '_57'), array('a', 'b', 'c'), null, null), - 14401 => array(array('_route' => '_61'), array('a', 'b', 'c'), null, null), - 14449 => array(array('_route' => '_112'), array('a', 'b', 'c'), null, null), - 14500 => array(array('_route' => '_135'), array('a', 'b', 'c'), null, null), - 14547 => array(array('_route' => '_271'), array('a', 'b', 'c'), null, null), - 14596 => array(array('_route' => '_459'), array('a', 'b', 'c'), null, null), - 14649 => array(array('_route' => '_67'), array('a', 'b', 'c'), null, null), - 14697 => array(array('_route' => '_113'), array('a', 'b', 'c'), null, null), - 14745 => array(array('_route' => '_497'), array('a', 'b', 'c'), null, null), - 14795 => array(array('_route' => '_70'), array('a', 'b', 'c'), null, null), - 14847 => array(array('_route' => '_89'), array('a', 'b', 'c'), null, null), - 14895 => array(array('_route' => '_128'), array('a', 'b', 'c'), null, null), - 14948 => array(array('_route' => '_150'), array('a', 'b', 'c'), null, null), - 14996 => array(array('_route' => '_166'), array('a', 'b', 'c'), null, null), - 15047 => array(array('_route' => '_206'), array('a', 'b', 'c'), null, null), - 15094 => array(array('_route' => '_419'), array('a', 'b', 'c'), null, null), - 15148 => array(array('_route' => '_201'), array('a', 'b', 'c'), null, null), - 15196 => array(array('_route' => '_314'), array('a', 'b', 'c'), null, null), - 15244 => array(array('_route' => '_429'), array('a', 'b', 'c'), null, null), - 15297 => array(array('_route' => '_228'), array('a', 'b', 'c'), null, null), - 15345 => array(array('_route' => '_477'), array('a', 'b', 'c'), null, null), - 15395 => array(array('_route' => '_272'), array('a', 'b', 'c'), null, null), - 15444 => array(array('_route' => '_486'), array('a', 'b', 'c'), null, null), - 15502 => array(array('_route' => '_21'), array('a', 'b', 'c'), null, null), - 15550 => array(array('_route' => '_247'), array('a', 'b', 'c'), null, null), - 15598 => array(array('_route' => '_424'), array('a', 'b', 'c'), null, null), - 15646 => array(array('_route' => '_499'), array('a', 'b', 'c'), null, null), - 15699 => array(array('_route' => '_23'), array('a', 'b', 'c'), null, null), - 15747 => array(array('_route' => '_152'), array('a', 'b', 'c'), null, null), - 15795 => array(array('_route' => '_304'), array('a', 'b', 'c'), null, null), - 15843 => array(array('_route' => '_352'), array('a', 'b', 'c'), null, null), - 15896 => array(array('_route' => '_28'), array('a', 'b', 'c'), null, null), - 15944 => array(array('_route' => '_240'), array('a', 'b', 'c'), null, null), - 16000 => array(array('_route' => '_30'), array('a', 'b', 'c'), null, null), - 16047 => array(array('_route' => '_41'), array('a', 'b', 'c'), null, null), - 16096 => array(array('_route' => '_301'), array('a', 'b', 'c'), null, null), - 16149 => array(array('_route' => '_66'), array('a', 'b', 'c'), null, null), - 16197 => array(array('_route' => '_72'), array('a', 'b', 'c'), null, null), - 16245 => array(array('_route' => '_320'), array('a', 'b', 'c'), null, null), - 16298 => array(array('_route' => '_78'), array('a', 'b', 'c'), null, null), - 16346 => array(array('_route' => '_337'), array('a', 'b', 'c'), null, null), - 16394 => array(array('_route' => '_399'), array('a', 'b', 'c'), null, null), - 16442 => array(array('_route' => '_495'), array('a', 'b', 'c'), null, null), - 16492 => array(array('_route' => '_85'), array('a', 'b', 'c'), null, null), - 16544 => array(array('_route' => '_101'), array('a', 'b', 'c'), null, null), - 16592 => array(array('_route' => '_176'), array('a', 'b', 'c'), null, null), - 16640 => array(array('_route' => '_246'), array('a', 'b', 'c'), null, null), - 16693 => array(array('_route' => '_125'), array('a', 'b', 'c'), null, null), - 16741 => array(array('_route' => '_341'), array('a', 'b', 'c'), null, null), - 16794 => array(array('_route' => '_137'), array('a', 'b', 'c'), null, null), - 16842 => array(array('_route' => '_270'), array('a', 'b', 'c'), null, null), - 16890 => array(array('_route' => '_386'), array('a', 'b', 'c'), null, null), - 16943 => array(array('_route' => '_169'), array('a', 'b', 'c'), null, null), - 16991 => array(array('_route' => '_200'), array('a', 'b', 'c'), null, null), - 17039 => array(array('_route' => '_262'), array('a', 'b', 'c'), null, null), - 17092 => array(array('_route' => '_187'), array('a', 'b', 'c'), null, null), - 17140 => array(array('_route' => '_333'), array('a', 'b', 'c'), null, null), - 17190 => array(array('_route' => '_215'), array('a', 'b', 'c'), null, null), - 17239 => array(array('_route' => '_316'), array('a', 'b', 'c'), null, null), - 17288 => array(array('_route' => '_343'), array('a', 'b', 'c'), null, null), - 17346 => array(array('_route' => '_22'), array('a', 'b', 'c'), null, null), - 17394 => array(array('_route' => '_420'), array('a', 'b', 'c'), null, null), - 17447 => array(array('_route' => '_55'), array('a', 'b', 'c'), null, null), - 17494 => array(array('_route' => '_496'), array('a', 'b', 'c'), null, null), - 17547 => array(array('_route' => '_153'), array('a', 'b', 'c'), null, null), - 17595 => array(array('_route' => '_344'), array('a', 'b', 'c'), null, null), - 17648 => array(array('_route' => '_160'), array('a', 'b', 'c'), null, null), - 17696 => array(array('_route' => '_398'), array('a', 'b', 'c'), null, null), - 17749 => array(array('_route' => '_161'), array('a', 'b', 'c'), null, null), - 17797 => array(array('_route' => '_193'), array('a', 'b', 'c'), null, null), - 17847 => array(array('_route' => '_174'), array('a', 'b', 'c'), null, null), - 17899 => array(array('_route' => '_209'), array('a', 'b', 'c'), null, null), - 17947 => array(array('_route' => '_261'), array('a', 'b', 'c'), null, null), - 18000 => array(array('_route' => '_222'), array('a', 'b', 'c'), null, null), - 18048 => array(array('_route' => '_323'), array('a', 'b', 'c'), null, null), - 18096 => array(array('_route' => '_380'), array('a', 'b', 'c'), null, null), - 18149 => array(array('_route' => '_232'), array('a', 'b', 'c'), null, null), - 18197 => array(array('_route' => '_383'), array('a', 'b', 'c'), null, null), - 18247 => array(array('_route' => '_306'), array('a', 'b', 'c'), null, null), - 18296 => array(array('_route' => '_327'), array('a', 'b', 'c'), null, null), - 18345 => array(array('_route' => '_364'), array('a', 'b', 'c'), null, null), - 18397 => array(array('_route' => '_403'), array('a', 'b', 'c'), null, null), - 18445 => array(array('_route' => '_405'), array('a', 'b', 'c'), null, null), - 18495 => array(array('_route' => '_412'), array('a', 'b', 'c'), null, null), - 18553 => array(array('_route' => '_27'), array('a', 'b', 'c'), null, null), - 18601 => array(array('_route' => '_134'), array('a', 'b', 'c'), null, null), - 18649 => array(array('_route' => '_245'), array('a', 'b', 'c'), null, null), - 18702 => array(array('_route' => '_59'), array('a', 'b', 'c'), null, null), - 18750 => array(array('_route' => '_208'), array('a', 'b', 'c'), null, null), - 18803 => array(array('_route' => '_60'), array('a', 'b', 'c'), null, null), - 18851 => array(array('_route' => '_119'), array('a', 'b', 'c'), null, null), - 18902 => array(array('_route' => '_163'), array('a', 'b', 'c'), null, null), - 18949 => array(array('_route' => '_249'), array('a', 'b', 'c'), null, null), - 18998 => array(array('_route' => '_278'), array('a', 'b', 'c'), null, null), - 19051 => array(array('_route' => '_63'), array('a', 'b', 'c'), null, null), - 19099 => array(array('_route' => '_195'), array('a', 'b', 'c'), null, null), - 19147 => array(array('_route' => '_252'), array('a', 'b', 'c'), null, null), - 19195 => array(array('_route' => '_461'), array('a', 'b', 'c'), null, null), - 19248 => array(array('_route' => '_126'), array('a', 'b', 'c'), null, null), - 19296 => array(array('_route' => '_158'), array('a', 'b', 'c'), null, null), - 19344 => array(array('_route' => '_221'), array('a', 'b', 'c'), null, null), - 19392 => array(array('_route' => '_269'), array('a', 'b', 'c'), null, null), - 19440 => array(array('_route' => '_310'), array('a', 'b', 'c'), null, null), - 19496 => array(array('_route' => '_138'), array('a', 'b', 'c'), null, null), - 19543 => array(array('_route' => '_348'), array('a', 'b', 'c'), null, null), - 19592 => array(array('_route' => '_236'), array('a', 'b', 'c'), null, null), - 19640 => array(array('_route' => '_433'), array('a', 'b', 'c'), null, null), - 19693 => array(array('_route' => '_141'), array('a', 'b', 'c'), null, null), - 19741 => array(array('_route' => '_283'), array('a', 'b', 'c'), null, null), - 19794 => array(array('_route' => '_144'), array('a', 'b', 'c'), null, null), - 19842 => array(array('_route' => '_191'), array('a', 'b', 'c'), null, null), - 19895 => array(array('_route' => '_168'), array('a', 'b', 'c'), null, null), - 19943 => array(array('_route' => '_363'), array('a', 'b', 'c'), null, null), - 19991 => array(array('_route' => '_381'), array('a', 'b', 'c'), null, null), - 20044 => array(array('_route' => '_180'), array('a', 'b', 'c'), null, null), - 20092 => array(array('_route' => '_339'), array('a', 'b', 'c'), null, null), - 20142 => array(array('_route' => '_196'), array('a', 'b', 'c'), null, null), - 20194 => array(array('_route' => '_198'), array('a', 'b', 'c'), null, null), - 20242 => array(array('_route' => '_285'), array('a', 'b', 'c'), null, null), - 20292 => array(array('_route' => '_349'), array('a', 'b', 'c'), null, null), - 20344 => array(array('_route' => '_367'), array('a', 'b', 'c'), null, null), - 20392 => array(array('_route' => '_384'), array('a', 'b', 'c'), null, null), - 20440 => array(array('_route' => '_498'), array('a', 'b', 'c'), null, null), - 20490 => array(array('_route' => '_369'), array('a', 'b', 'c'), null, null), - 20542 => array(array('_route' => '_408'), array('a', 'b', 'c'), null, null), - 20590 => array(array('_route' => '_413'), array('a', 'b', 'c'), null, null), - 20652 => array(array('_route' => '_44'), array('a', 'b', 'c'), null, null), - 20699 => array(array('_route' => '_256'), array('a', 'b', 'c'), null, null), - 20748 => array(array('_route' => '_173'), array('a', 'b', 'c'), null, null), - 20796 => array(array('_route' => '_266'), array('a', 'b', 'c'), null, null), - 20844 => array(array('_route' => '_392'), array('a', 'b', 'c'), null, null), - 20892 => array(array('_route' => '_430'), array('a', 'b', 'c'), null, null), - 20940 => array(array('_route' => '_482'), array('a', 'b', 'c'), null, null), - 20993 => array(array('_route' => '_49'), array('a', 'b', 'c'), null, null), - 21041 => array(array('_route' => '_94'), array('a', 'b', 'c'), null, null), - 21089 => array(array('_route' => '_407'), array('a', 'b', 'c'), null, null), - 21142 => array(array('_route' => '_65'), array('a', 'b', 'c'), null, null), - 21190 => array(array('_route' => '_181'), array('a', 'b', 'c'), null, null), - 21238 => array(array('_route' => '_437'), array('a', 'b', 'c'), null, null), - 21291 => array(array('_route' => '_76'), array('a', 'b', 'c'), null, null), - 21339 => array(array('_route' => '_357'), array('a', 'b', 'c'), null, null), - 21392 => array(array('_route' => '_80'), array('a', 'b', 'c'), null, null), - 21440 => array(array('_route' => '_106'), array('a', 'b', 'c'), null, null), - 21493 => array(array('_route' => '_83'), array('a', 'b', 'c'), null, null), - 21541 => array(array('_route' => '_255'), array('a', 'b', 'c'), null, null), - 21589 => array(array('_route' => '_330'), array('a', 'b', 'c'), null, null), - 21642 => array(array('_route' => '_100'), array('a', 'b', 'c'), null, null), - 21690 => array(array('_route' => '_396'), array('a', 'b', 'c'), null, null), - 21738 => array(array('_route' => '_422'), array('a', 'b', 'c'), null, null), - 21791 => array(array('_route' => '_149'), array('a', 'b', 'c'), null, null), - 21839 => array(array('_route' => '_324'), array('a', 'b', 'c'), null, null), - 21892 => array(array('_route' => '_164'), array('a', 'b', 'c'), null, null), - 21940 => array(array('_route' => '_423'), array('a', 'b', 'c'), null, null), - 21990 => array(array('_route' => '_241'), array('a', 'b', 'c'), null, null), - 22042 => array(array('_route' => '_290'), array('a', 'b', 'c'), null, null), - 22090 => array(array('_route' => '_335'), array('a', 'b', 'c'), null, null), - 22140 => array(array('_route' => '_373'), array('a', 'b', 'c'), null, null), - 22189 => array(array('_route' => '_375'), array('a', 'b', 'c'), null, null), - 22238 => array(array('_route' => '_450'), array('a', 'b', 'c'), null, null), - 22287 => array(array('_route' => '_464'), array('a', 'b', 'c'), null, null), - 22345 => array(array('_route' => '_51'), array('a', 'b', 'c'), null, null), - 22393 => array(array('_route' => '_77'), array('a', 'b', 'c'), null, null), - 22441 => array(array('_route' => '_234'), array('a', 'b', 'c'), null, null), - 22489 => array(array('_route' => '_394'), array('a', 'b', 'c'), null, null), - 22542 => array(array('_route' => '_88'), array('a', 'b', 'c'), null, null), - 22590 => array(array('_route' => '_155'), array('a', 'b', 'c'), null, null), - 22643 => array(array('_route' => '_96'), array('a', 'b', 'c'), null, null), - 22691 => array(array('_route' => '_298'), array('a', 'b', 'c'), null, null), - 22739 => array(array('_route' => '_470'), array('a', 'b', 'c'), null, null), - 22792 => array(array('_route' => '_109'), array('a', 'b', 'c'), null, null), - 22840 => array(array('_route' => '_204'), array('a', 'b', 'c'), null, null), - 22893 => array(array('_route' => '_115'), array('a', 'b', 'c'), null, null), - 22941 => array(array('_route' => '_145'), array('a', 'b', 'c'), null, null), - 22994 => array(array('_route' => '_123'), array('a', 'b', 'c'), null, null), - 23042 => array(array('_route' => '_277'), array('a', 'b', 'c'), null, null), - 23090 => array(array('_route' => '_473'), array('a', 'b', 'c'), null, null), - 23143 => array(array('_route' => '_334'), array('a', 'b', 'c'), null, null), - 23191 => array(array('_route' => '_493'), array('a', 'b', 'c'), null, null), - 23244 => array(array('_route' => '_372'), array('a', 'b', 'c'), null, null), - 23292 => array(array('_route' => '_432'), array('a', 'b', 'c'), null, null), - 23340 => array(array('_route' => '_436'), array('a', 'b', 'c'), null, null), - 23393 => array(array('_route' => '_425'), array('a', 'b', 'c'), null, null), - 23441 => array(array('_route' => '_456'), array('a', 'b', 'c'), null, null), - 23489 => array(array('_route' => '_474'), array('a', 'b', 'c'), null, null), - 23539 => array(array('_route' => '_485'), array('a', 'b', 'c'), null, null), - 23594 => array(array('_route' => '_91'), array('a', 'b', 'c'), null, null), - 23646 => array(array('_route' => '_110'), array('a', 'b', 'c'), null, null), - 23694 => array(array('_route' => '_114'), array('a', 'b', 'c'), null, null), - 23750 => array(array('_route' => '_118'), array('a', 'b', 'c'), null, null), - 23796 => array(array('_route' => '_475'), array('a', 'b', 'c'), null, null), - 23844 => array(array('_route' => '_366'), array('a', 'b', 'c'), null, null), - 23897 => array(array('_route' => '_167'), array('a', 'b', 'c'), null, null), - 23945 => array(array('_route' => '_192'), array('a', 'b', 'c'), null, null), - 23993 => array(array('_route' => '_342'), array('a', 'b', 'c'), null, null), - 24046 => array(array('_route' => '_229'), array('a', 'b', 'c'), null, null), - 24097 => array(array('_route' => '_235'), array('a', 'b', 'c'), null, null), - 24144 => array(array('_route' => '_302'), array('a', 'b', 'c'), null, null), - 24193 => array(array('_route' => '_322'), array('a', 'b', 'c'), null, null), - 24246 => array(array('_route' => '_237'), array('a', 'b', 'c'), null, null), - 24294 => array(array('_route' => '_293'), array('a', 'b', 'c'), null, null), - 24347 => array(array('_route' => '_239'), array('a', 'b', 'c'), null, null), - 24395 => array(array('_route' => '_444'), array('a', 'b', 'c'), null, null), - 24443 => array(array('_route' => '_491'), array('a', 'b', 'c'), null, null), - 24491 => array(array('_route' => '_492'), array('a', 'b', 'c'), null, null), - 24541 => array(array('_route' => '_258'), array('a', 'b', 'c'), null, null), - 24590 => array(array('_route' => '_317'), array('a', 'b', 'c'), null, null), - 24639 => array(array('_route' => '_361'), array('a', 'b', 'c'), null, null), - 24688 => array(array('_route' => '_391'), array('a', 'b', 'c'), null, null), - 24737 => array(array('_route' => '_462'), array('a', 'b', 'c'), null, null), - 24786 => array(array('_route' => '_476'), array('a', 'b', 'c'), null, null), - 24837 => array(array('_route' => '_501'), array('a', 'b', 'c'), null, null), - 24889 => array(array('_route' => '_514'), array('a', 'b', 'c'), null, null), - 24937 => array(array('_route' => '_731'), array('a', 'b', 'c'), null, null), - 24990 => array(array('_route' => '_522'), array('a', 'b', 'c'), null, null), - 25038 => array(array('_route' => '_693'), array('a', 'b', 'c'), null, null), - 25091 => array(array('_route' => '_537'), array('a', 'b', 'c'), null, null), - 25139 => array(array('_route' => '_554'), array('a', 'b', 'c'), null, null), - 25187 => array(array('_route' => '_645'), array('a', 'b', 'c'), null, null), - 25235 => array(array('_route' => '_862'), array('a', 'b', 'c'), null, null), - 25288 => array(array('_route' => '_539'), array('a', 'b', 'c'), null, null), - 25336 => array(array('_route' => '_729'), array('a', 'b', 'c'), null, null), - 25384 => array(array('_route' => '_897'), array('a', 'b', 'c'), null, null), - 25437 => array(array('_route' => '_561'), array('a', 'b', 'c'), null, null), - 25485 => array(array('_route' => '_615'), array('a', 'b', 'c'), null, null), - 25533 => array(array('_route' => '_764'), array('a', 'b', 'c'), null, null), - 25581 => array(array('_route' => '_948'), array('a', 'b', 'c'), null, null), - 25634 => array(array('_route' => '_617'), array('a', 'b', 'c'), null, null), - 25682 => array(array('_route' => '_671'), array('a', 'b', 'c'), null, null), - 25735 => array(array('_route' => '_649'), array('a', 'b', 'c'), null, null), - 25783 => array(array('_route' => '_651'), array('a', 'b', 'c'), null, null), - 25831 => array(array('_route' => '_684'), array('a', 'b', 'c'), null, null), - 25884 => array(array('_route' => '_669'), array('a', 'b', 'c'), null, null), - 25932 => array(array('_route' => '_743'), array('a', 'b', 'c'), null, null), - 25980 => array(array('_route' => '_962'), array('a', 'b', 'c'), null, null), - 26033 => array(array('_route' => '_694'), array('a', 'b', 'c'), null, null), - 26081 => array(array('_route' => '_985'), array('a', 'b', 'c'), null, null), - 26134 => array(array('_route' => '_707'), array('a', 'b', 'c'), null, null), - 26182 => array(array('_route' => '_718'), array('a', 'b', 'c'), null, null), - 26235 => array(array('_route' => '_720'), array('a', 'b', 'c'), null, null), - 26283 => array(array('_route' => '_745'), array('a', 'b', 'c'), null, null), - 26333 => array(array('_route' => '_874'), array('a', 'b', 'c'), null, null), - 26391 => array(array('_route' => '_502'), array('a', 'b', 'c'), null, null), - 26439 => array(array('_route' => '_667'), array('a', 'b', 'c'), null, null), - 26487 => array(array('_route' => '_911'), array('a', 'b', 'c'), null, null), - 26535 => array(array('_route' => '_942'), array('a', 'b', 'c'), null, null), - 26585 => array(array('_route' => '_504'), array('a', 'b', 'c'), null, null), - 26637 => array(array('_route' => '_524'), array('a', 'b', 'c'), null, null), - 26685 => array(array('_route' => '_732'), array('a', 'b', 'c'), null, null), - 26738 => array(array('_route' => '_596'), array('a', 'b', 'c'), null, null), - 26786 => array(array('_route' => '_601'), array('a', 'b', 'c'), null, null), - 26839 => array(array('_route' => '_620'), array('a', 'b', 'c'), null, null), - 26887 => array(array('_route' => '_631'), array('a', 'b', 'c'), null, null), - 26935 => array(array('_route' => '_771'), array('a', 'b', 'c'), null, null), - 26983 => array(array('_route' => '_937'), array('a', 'b', 'c'), null, null), - 27031 => array(array('_route' => '_999'), array('a', 'b', 'c'), null, null), - 27084 => array(array('_route' => '_657'), array('a', 'b', 'c'), null, null), - 27132 => array(array('_route' => '_701'), array('a', 'b', 'c'), null, null), - 27185 => array(array('_route' => '_662'), array('a', 'b', 'c'), null, null), - 27233 => array(array('_route' => '_797'), array('a', 'b', 'c'), null, null), - 27281 => array(array('_route' => '_924'), array('a', 'b', 'c'), null, null), - 27334 => array(array('_route' => '_702'), array('a', 'b', 'c'), null, null), - 27382 => array(array('_route' => '_750'), array('a', 'b', 'c'), null, null), - 27435 => array(array('_route' => '_749'), array('a', 'b', 'c'), null, null), - 27483 => array(array('_route' => '_837'), array('a', 'b', 'c'), null, null), - 27533 => array(array('_route' => '_758'), array('a', 'b', 'c'), null, null), - 27585 => array(array('_route' => '_810'), array('a', 'b', 'c'), null, null), - 27633 => array(array('_route' => '_902'), array('a', 'b', 'c'), null, null), - 27683 => array(array('_route' => '_845'), array('a', 'b', 'c'), null, null), - 27741 => array(array('_route' => '_503'), array('a', 'b', 'c'), null, null), - 27792 => array(array('_route' => '_756'), array('a', 'b', 'c'), null, null), - 27839 => array(array('_route' => '_799'), array('a', 'b', 'c'), null, null), - 27888 => array(array('_route' => '_769'), array('a', 'b', 'c'), null, null), - 27936 => array(array('_route' => '_981'), array('a', 'b', 'c'), null, null), - 27989 => array(array('_route' => '_507'), array('a', 'b', 'c'), null, null), - 28037 => array(array('_route' => '_672'), array('a', 'b', 'c'), null, null), - 28085 => array(array('_route' => '_790'), array('a', 'b', 'c'), null, null), - 28138 => array(array('_route' => '_515'), array('a', 'b', 'c'), null, null), - 28186 => array(array('_route' => '_523'), array('a', 'b', 'c'), null, null), - 28234 => array(array('_route' => '_957'), array('a', 'b', 'c'), null, null), - 28282 => array(array('_route' => '_995'), array('a', 'b', 'c'), null, null), - 28335 => array(array('_route' => '_532'), array('a', 'b', 'c'), null, null), - 28383 => array(array('_route' => '_642'), array('a', 'b', 'c'), null, null), - 28433 => array(array('_route' => '_579'), array('a', 'b', 'c'), null, null), - 28485 => array(array('_route' => '_625'), array('a', 'b', 'c'), null, null), - 28533 => array(array('_route' => '_916'), array('a', 'b', 'c'), null, null), - 28586 => array(array('_route' => '_633'), array('a', 'b', 'c'), null, null), - 28634 => array(array('_route' => '_656'), array('a', 'b', 'c'), null, null), - 28687 => array(array('_route' => '_658'), array('a', 'b', 'c'), null, null), - 28735 => array(array('_route' => '_943'), array('a', 'b', 'c'), null, null), - 28788 => array(array('_route' => '_664'), array('a', 'b', 'c'), null, null), - 28836 => array(array('_route' => '_852'), array('a', 'b', 'c'), null, null), - 28884 => array(array('_route' => '_870'), array('a', 'b', 'c'), null, null), - 28937 => array(array('_route' => '_683'), array('a', 'b', 'c'), null, null), - 28985 => array(array('_route' => '_915'), array('a', 'b', 'c'), null, null), - 29038 => array(array('_route' => '_719'), array('a', 'b', 'c'), null, null), - 29086 => array(array('_route' => '_859'), array('a', 'b', 'c'), null, null), - 29134 => array(array('_route' => '_912'), array('a', 'b', 'c'), null, null), - 29182 => array(array('_route' => '_978'), array('a', 'b', 'c'), null, null), - 29235 => array(array('_route' => '_738'), array('a', 'b', 'c'), null, null), - 29283 => array(array('_route' => '_883'), array('a', 'b', 'c'), null, null), - 29333 => array(array('_route' => '_741'), array('a', 'b', 'c'), null, null), - 29382 => array(array('_route' => '_760'), array('a', 'b', 'c'), null, null), - 29431 => array(array('_route' => '_895'), array('a', 'b', 'c'), null, null), - 29489 => array(array('_route' => '_505'), array('a', 'b', 'c'), null, null), - 29537 => array(array('_route' => '_935'), array('a', 'b', 'c'), null, null), - 29590 => array(array('_route' => '_509'), array('a', 'b', 'c'), null, null), - 29638 => array(array('_route' => '_820'), array('a', 'b', 'c'), null, null), - 29686 => array(array('_route' => '_910'), array('a', 'b', 'c'), null, null), - 29739 => array(array('_route' => '_518'), array('a', 'b', 'c'), null, null), - 29787 => array(array('_route' => '_618'), array('a', 'b', 'c'), null, null), - 29840 => array(array('_route' => '_546'), array('a', 'b', 'c'), null, null), - 29888 => array(array('_route' => '_740'), array('a', 'b', 'c'), null, null), - 29936 => array(array('_route' => '_867'), array('a', 'b', 'c'), null, null), - 29989 => array(array('_route' => '_572'), array('a', 'b', 'c'), null, null), - 30037 => array(array('_route' => '_952'), array('a', 'b', 'c'), null, null), - 30090 => array(array('_route' => '_573'), array('a', 'b', 'c'), null, null), - 30138 => array(array('_route' => '_692'), array('a', 'b', 'c'), null, null), - 30186 => array(array('_route' => '_700'), array('a', 'b', 'c'), null, null), - 30234 => array(array('_route' => '_772'), array('a', 'b', 'c'), null, null), - 30284 => array(array('_route' => '_653'), array('a', 'b', 'c'), null, null), - 30336 => array(array('_route' => '_695'), array('a', 'b', 'c'), null, null), - 30384 => array(array('_route' => '_748'), array('a', 'b', 'c'), null, null), - 30437 => array(array('_route' => '_710'), array('a', 'b', 'c'), null, null), - 30485 => array(array('_route' => '_716'), array('a', 'b', 'c'), null, null), - 30533 => array(array('_route' => '_969'), array('a', 'b', 'c'), null, null), - 30586 => array(array('_route' => '_734'), array('a', 'b', 'c'), null, null), - 30634 => array(array('_route' => '_742'), array('a', 'b', 'c'), null, null), - 30682 => array(array('_route' => '_844'), array('a', 'b', 'c'), null, null), - 30735 => array(array('_route' => '_763'), array('a', 'b', 'c'), null, null), - 30783 => array(array('_route' => '_965'), array('a', 'b', 'c'), null, null), - 30836 => array(array('_route' => '_778'), array('a', 'b', 'c'), null, null), - 30884 => array(array('_route' => '_813'), array('a', 'b', 'c'), null, null), - 30932 => array(array('_route' => '_831'), array('a', 'b', 'c'), null, null), - 30982 => array(array('_route' => '_955'), array('a', 'b', 'c'), null, null), - 31031 => array(array('_route' => '_997'), array('a', 'b', 'c'), null, null), - 31089 => array(array('_route' => '_506'), array('a', 'b', 'c'), null, null), - 31137 => array(array('_route' => '_575'), array('a', 'b', 'c'), null, null), - 31190 => array(array('_route' => '_516'), array('a', 'b', 'c'), null, null), - 31238 => array(array('_route' => '_553'), array('a', 'b', 'c'), null, null), - 31291 => array(array('_route' => '_528'), array('a', 'b', 'c'), null, null), - 31339 => array(array('_route' => '_847'), array('a', 'b', 'c'), null, null), - 31387 => array(array('_route' => '_904'), array('a', 'b', 'c'), null, null), - 31440 => array(array('_route' => '_574'), array('a', 'b', 'c'), null, null), - 31488 => array(array('_route' => '_818'), array('a', 'b', 'c'), null, null), - 31538 => array(array('_route' => '_577'), array('a', 'b', 'c'), null, null), - 31590 => array(array('_route' => '_584'), array('a', 'b', 'c'), null, null), - 31638 => array(array('_route' => '_905'), array('a', 'b', 'c'), null, null), - 31691 => array(array('_route' => '_612'), array('a', 'b', 'c'), null, null), - 31739 => array(array('_route' => '_688'), array('a', 'b', 'c'), null, null), - 31787 => array(array('_route' => '_854'), array('a', 'b', 'c'), null, null), - 31840 => array(array('_route' => '_613'), array('a', 'b', 'c'), null, null), - 31888 => array(array('_route' => '_767'), array('a', 'b', 'c'), null, null), - 31941 => array(array('_route' => '_666'), array('a', 'b', 'c'), null, null), - 31989 => array(array('_route' => '_759'), array('a', 'b', 'c'), null, null), - 32037 => array(array('_route' => '_827'), array('a', 'b', 'c'), null, null), - 32085 => array(array('_route' => '_840'), array('a', 'b', 'c'), null, null), - 32138 => array(array('_route' => '_680'), array('a', 'b', 'c'), null, null), - 32186 => array(array('_route' => '_784'), array('a', 'b', 'c'), null, null), - 32234 => array(array('_route' => '_842'), array('a', 'b', 'c'), null, null), - 32282 => array(array('_route' => '_860'), array('a', 'b', 'c'), null, null), - 32332 => array(array('_route' => '_704'), array('a', 'b', 'c'), null, null), - 32381 => array(array('_route' => '_727'), array('a', 'b', 'c'), null, null), - 32430 => array(array('_route' => '_777'), array('a', 'b', 'c'), null, null), - 32482 => array(array('_route' => '_838'), array('a', 'b', 'c'), null, null), - 32530 => array(array('_route' => '_861'), array('a', 'b', 'c'), null, null), - 32583 => array(array('_route' => '_849'), array('a', 'b', 'c'), null, null), - 32631 => array(array('_route' => '_982'), array('a', 'b', 'c'), null, null), - 32679 => array(array('_route' => '_986'), array('a', 'b', 'c'), null, null), - 32741 => array(array('_route' => '_508'), array('a', 'b', 'c'), null, null), - 32788 => array(array('_route' => '_517'), array('a', 'b', 'c'), null, null), - 32837 => array(array('_route' => '_622'), array('a', 'b', 'c'), null, null), - 32890 => array(array('_route' => '_513'), array('a', 'b', 'c'), null, null), - 32938 => array(array('_route' => '_655'), array('a', 'b', 'c'), null, null), - 32986 => array(array('_route' => '_843'), array('a', 'b', 'c'), null, null), - 33034 => array(array('_route' => '_939'), array('a', 'b', 'c'), null, null), - 33084 => array(array('_route' => '_529'), array('a', 'b', 'c'), null, null), - 33136 => array(array('_route' => '_535'), array('a', 'b', 'c'), null, null), - 33184 => array(array('_route' => '_685'), array('a', 'b', 'c'), null, null), - 33240 => array(array('_route' => '_559'), array('a', 'b', 'c'), null, null), - 33287 => array(array('_route' => '_661'), array('a', 'b', 'c'), null, null), - 33336 => array(array('_route' => '_768'), array('a', 'b', 'c'), null, null), - 33389 => array(array('_route' => '_589'), array('a', 'b', 'c'), null, null), - 33437 => array(array('_route' => '_647'), array('a', 'b', 'c'), null, null), - 33485 => array(array('_route' => '_652'), array('a', 'b', 'c'), null, null), - 33533 => array(array('_route' => '_834'), array('a', 'b', 'c'), null, null), - 33586 => array(array('_route' => '_591'), array('a', 'b', 'c'), null, null), - 33634 => array(array('_route' => '_599'), array('a', 'b', 'c'), null, null), - 33687 => array(array('_route' => '_787'), array('a', 'b', 'c'), null, null), - 33734 => array(array('_route' => '_848'), array('a', 'b', 'c'), null, null), - 33787 => array(array('_route' => '_796'), array('a', 'b', 'c'), null, null), - 33835 => array(array('_route' => '_877'), array('a', 'b', 'c'), null, null), - 33885 => array(array('_route' => '_809'), array('a', 'b', 'c'), null, null), - 33934 => array(array('_route' => '_817'), array('a', 'b', 'c'), null, null), - 33986 => array(array('_route' => '_819'), array('a', 'b', 'c'), null, null), - 34034 => array(array('_route' => '_865'), array('a', 'b', 'c'), null, null), - 34084 => array(array('_route' => '_919'), array('a', 'b', 'c'), null, null), - 34133 => array(array('_route' => '_949'), array('a', 'b', 'c'), null, null), - 34191 => array(array('_route' => '_510'), array('a', 'b', 'c'), null, null), - 34239 => array(array('_route' => '_590'), array('a', 'b', 'c'), null, null), - 34287 => array(array('_route' => '_597'), array('a', 'b', 'c'), null, null), - 34335 => array(array('_route' => '_682'), array('a', 'b', 'c'), null, null), - 34383 => array(array('_route' => '_723'), array('a', 'b', 'c'), null, null), - 34436 => array(array('_route' => '_521'), array('a', 'b', 'c'), null, null), - 34484 => array(array('_route' => '_594'), array('a', 'b', 'c'), null, null), - 34532 => array(array('_route' => '_689'), array('a', 'b', 'c'), null, null), - 34580 => array(array('_route' => '_713'), array('a', 'b', 'c'), null, null), - 34628 => array(array('_route' => '_889'), array('a', 'b', 'c'), null, null), - 34681 => array(array('_route' => '_531'), array('a', 'b', 'c'), null, null), - 34729 => array(array('_route' => '_639'), array('a', 'b', 'c'), null, null), - 34780 => array(array('_route' => '_646'), array('a', 'b', 'c'), null, null), - 34827 => array(array('_route' => '_659'), array('a', 'b', 'c'), null, null), - 34876 => array(array('_route' => '_959'), array('a', 'b', 'c'), null, null), - 34929 => array(array('_route' => '_550'), array('a', 'b', 'c'), null, null), - 34977 => array(array('_route' => '_833'), array('a', 'b', 'c'), null, null), - 35025 => array(array('_route' => '_899'), array('a', 'b', 'c'), null, null), - 35081 => array(array('_route' => '_580'), array('a', 'b', 'c'), null, null), - 35128 => array(array('_route' => '_762'), array('a', 'b', 'c'), null, null), - 35177 => array(array('_route' => '_896'), array('a', 'b', 'c'), null, null), - 35230 => array(array('_route' => '_595'), array('a', 'b', 'c'), null, null), - 35278 => array(array('_route' => '_933'), array('a', 'b', 'c'), null, null), - 35328 => array(array('_route' => '_610'), array('a', 'b', 'c'), null, null), - 35380 => array(array('_route' => '_629'), array('a', 'b', 'c'), null, null), - 35428 => array(array('_route' => '_744'), array('a', 'b', 'c'), null, null), - 35481 => array(array('_route' => '_674'), array('a', 'b', 'c'), null, null), - 35529 => array(array('_route' => '_726'), array('a', 'b', 'c'), null, null), - 35577 => array(array('_route' => '_929'), array('a', 'b', 'c'), null, null), - 35627 => array(array('_route' => '_696'), array('a', 'b', 'c'), null, null), - 35679 => array(array('_route' => '_841'), array('a', 'b', 'c'), null, null), - 35727 => array(array('_route' => '_890'), array('a', 'b', 'c'), null, null), - 35777 => array(array('_route' => '_885'), array('a', 'b', 'c'), null, null), - 35826 => array(array('_route' => '_888'), array('a', 'b', 'c'), null, null), - 35875 => array(array('_route' => '_996'), array('a', 'b', 'c'), null, null), - 35933 => array(array('_route' => '_511'), array('a', 'b', 'c'), null, null), - 35981 => array(array('_route' => '_576'), array('a', 'b', 'c'), null, null), - 36029 => array(array('_route' => '_623'), array('a', 'b', 'c'), null, null), - 36082 => array(array('_route' => '_560'), array('a', 'b', 'c'), null, null), - 36129 => array(array('_route' => '_585'), array('a', 'b', 'c'), null, null), - 36182 => array(array('_route' => '_570'), array('a', 'b', 'c'), null, null), - 36230 => array(array('_route' => '_578'), array('a', 'b', 'c'), null, null), - 36281 => array(array('_route' => '_780'), array('a', 'b', 'c'), null, null), - 36328 => array(array('_route' => '_808'), array('a', 'b', 'c'), null, null), - 36382 => array(array('_route' => '_593'), array('a', 'b', 'c'), null, null), - 36430 => array(array('_route' => '_900'), array('a', 'b', 'c'), null, null), - 36483 => array(array('_route' => '_632'), array('a', 'b', 'c'), null, null), - 36531 => array(array('_route' => '_654'), array('a', 'b', 'c'), null, null), - 36579 => array(array('_route' => '_721'), array('a', 'b', 'c'), null, null), - 36627 => array(array('_route' => '_836'), array('a', 'b', 'c'), null, null), - 36680 => array(array('_route' => '_637'), array('a', 'b', 'c'), null, null), - 36728 => array(array('_route' => '_737'), array('a', 'b', 'c'), null, null), - 36784 => array(array('_route' => '_699'), array('a', 'b', 'c'), null, null), - 36831 => array(array('_route' => '_822'), array('a', 'b', 'c'), null, null), - 36880 => array(array('_route' => '_853'), array('a', 'b', 'c'), null, null), - 36933 => array(array('_route' => '_708'), array('a', 'b', 'c'), null, null), - 36981 => array(array('_route' => '_871'), array('a', 'b', 'c'), null, null), - 37034 => array(array('_route' => '_752'), array('a', 'b', 'c'), null, null), - 37082 => array(array('_route' => '_989'), array('a', 'b', 'c'), null, null), - 37132 => array(array('_route' => '_855'), array('a', 'b', 'c'), null, null), - 37184 => array(array('_route' => '_858'), array('a', 'b', 'c'), null, null), - 37232 => array(array('_route' => '_898'), array('a', 'b', 'c'), null, null), - 37282 => array(array('_route' => '_903'), array('a', 'b', 'c'), null, null), - 37331 => array(array('_route' => '_909'), array('a', 'b', 'c'), null, null), - 37380 => array(array('_route' => '_950'), array('a', 'b', 'c'), null, null), - 37441 => array(array('_route' => '_512'), array('a', 'b', 'c'), null, null), - 37488 => array(array('_route' => '_691'), array('a', 'b', 'c'), null, null), - 37537 => array(array('_route' => '_686'), array('a', 'b', 'c'), null, null), - 37587 => array(array('_route' => '_527'), array('a', 'b', 'c'), null, null), - 37639 => array(array('_route' => '_541'), array('a', 'b', 'c'), null, null), - 37687 => array(array('_route' => '_956'), array('a', 'b', 'c'), null, null), - 37740 => array(array('_route' => '_555'), array('a', 'b', 'c'), null, null), - 37788 => array(array('_route' => '_681'), array('a', 'b', 'c'), null, null), - 37841 => array(array('_route' => '_556'), array('a', 'b', 'c'), null, null), - 37889 => array(array('_route' => '_802'), array('a', 'b', 'c'), null, null), - 37939 => array(array('_route' => '_558'), array('a', 'b', 'c'), null, null), - 37991 => array(array('_route' => '_564'), array('a', 'b', 'c'), null, null), - 38039 => array(array('_route' => '_670'), array('a', 'b', 'c'), null, null), - 38087 => array(array('_route' => '_884'), array('a', 'b', 'c'), null, null), - 38140 => array(array('_route' => '_627'), array('a', 'b', 'c'), null, null), - 38187 => array(array('_route' => '_746'), array('a', 'b', 'c'), null, null), - 38240 => array(array('_route' => '_668'), array('a', 'b', 'c'), null, null), - 38291 => array(array('_route' => '_712'), array('a', 'b', 'c'), null, null), - 38338 => array(array('_route' => '_863'), array('a', 'b', 'c'), null, null), - 38387 => array(array('_route' => '_801'), array('a', 'b', 'c'), null, null), - 38440 => array(array('_route' => '_709'), array('a', 'b', 'c'), null, null), - 38488 => array(array('_route' => '_850'), array('a', 'b', 'c'), null, null), - 38536 => array(array('_route' => '_918'), array('a', 'b', 'c'), null, null), - 38586 => array(array('_route' => '_803'), array('a', 'b', 'c'), null, null), - 38638 => array(array('_route' => '_864'), array('a', 'b', 'c'), null, null), - 38686 => array(array('_route' => '_880'), array('a', 'b', 'c'), null, null), - 38734 => array(array('_route' => '_927'), array('a', 'b', 'c'), null, null), - 38787 => array(array('_route' => '_930'), array('a', 'b', 'c'), null, null), - 38835 => array(array('_route' => '_951'), array('a', 'b', 'c'), null, null), - 38883 => array(array('_route' => '_963'), array('a', 'b', 'c'), null, null), - 38942 => array(array('_route' => '_519'), array('a', 'b', 'c'), null, null), - 38990 => array(array('_route' => '_823'), array('a', 'b', 'c'), null, null), - 39038 => array(array('_route' => '_954'), array('a', 'b', 'c'), null, null), - 39091 => array(array('_route' => '_525'), array('a', 'b', 'c'), null, null), - 39139 => array(array('_route' => '_991'), array('a', 'b', 'c'), null, null), - 39189 => array(array('_route' => '_536'), array('a', 'b', 'c'), null, null), - 39241 => array(array('_route' => '_545'), array('a', 'b', 'c'), null, null), - 39289 => array(array('_route' => '_944'), array('a', 'b', 'c'), null, null), - 39342 => array(array('_route' => '_557'), array('a', 'b', 'c'), null, null), - 39390 => array(array('_route' => '_783'), array('a', 'b', 'c'), null, null), - 39438 => array(array('_route' => '_807'), array('a', 'b', 'c'), null, null), - 39491 => array(array('_route' => '_586'), array('a', 'b', 'c'), null, null), - 39539 => array(array('_route' => '_711'), array('a', 'b', 'c'), null, null), - 39592 => array(array('_route' => '_598'), array('a', 'b', 'c'), null, null), - 39640 => array(array('_route' => '_635'), array('a', 'b', 'c'), null, null), - 39688 => array(array('_route' => '_983'), array('a', 'b', 'c'), null, null), - 39741 => array(array('_route' => '_634'), array('a', 'b', 'c'), null, null), - 39789 => array(array('_route' => '_641'), array('a', 'b', 'c'), null, null), - 39840 => array(array('_route' => '_779'), array('a', 'b', 'c'), null, null), - 39887 => array(array('_route' => '_876'), array('a', 'b', 'c'), null, null), - 39936 => array(array('_route' => '_811'), array('a', 'b', 'c'), null, null), - 39984 => array(array('_route' => '_824'), array('a', 'b', 'c'), null, null), - 40037 => array(array('_route' => '_660'), array('a', 'b', 'c'), null, null), - 40085 => array(array('_route' => '_789'), array('a', 'b', 'c'), null, null), - 40138 => array(array('_route' => '_733'), array('a', 'b', 'c'), null, null), - 40186 => array(array('_route' => '_735'), array('a', 'b', 'c'), null, null), - 40234 => array(array('_route' => '_882'), array('a', 'b', 'c'), null, null), - 40282 => array(array('_route' => '_967'), array('a', 'b', 'c'), null, null), - 40332 => array(array('_route' => '_736'), array('a', 'b', 'c'), null, null), - 40381 => array(array('_route' => '_753'), array('a', 'b', 'c'), null, null), - 40430 => array(array('_route' => '_786'), array('a', 'b', 'c'), null, null), - 40479 => array(array('_route' => '_907'), array('a', 'b', 'c'), null, null), - 40528 => array(array('_route' => '_920'), array('a', 'b', 'c'), null, null), - 40577 => array(array('_route' => '_971'), array('a', 'b', 'c'), null, null), - 40635 => array(array('_route' => '_520'), array('a', 'b', 'c'), null, null), - 40683 => array(array('_route' => '_891'), array('a', 'b', 'c'), null, null), - 40739 => array(array('_route' => '_534'), array('a', 'b', 'c'), null, null), - 40785 => array(array('_route' => '_602'), array('a', 'b', 'c'), null, null), - 40834 => array(array('_route' => '_605'), array('a', 'b', 'c'), null, null), - 40882 => array(array('_route' => '_979'), array('a', 'b', 'c'), null, null), - 40932 => array(array('_route' => '_547'), array('a', 'b', 'c'), null, null), - 40987 => array(array('_route' => '_549'), array('a', 'b', 'c'), null, null), - 41034 => array(array('_route' => '_755'), array('a', 'b', 'c'), null, null), - 41083 => array(array('_route' => '_922'), array('a', 'b', 'c'), null, null), - 41131 => array(array('_route' => '_977'), array('a', 'b', 'c'), null, null), - 41184 => array(array('_route' => '_565'), array('a', 'b', 'c'), null, null), - 41232 => array(array('_route' => '_926'), array('a', 'b', 'c'), null, null), - 41282 => array(array('_route' => '_571'), array('a', 'b', 'c'), null, null), - 41331 => array(array('_route' => '_581'), array('a', 'b', 'c'), null, null), - 41380 => array(array('_route' => '_619'), array('a', 'b', 'c'), null, null), - 41429 => array(array('_route' => '_636'), array('a', 'b', 'c'), null, null), - 41481 => array(array('_route' => '_679'), array('a', 'b', 'c'), null, null), - 41529 => array(array('_route' => '_866'), array('a', 'b', 'c'), null, null), - 41577 => array(array('_route' => '_973'), array('a', 'b', 'c'), null, null), - 41630 => array(array('_route' => '_690'), array('a', 'b', 'c'), null, null), - 41678 => array(array('_route' => '_775'), array('a', 'b', 'c'), null, null), - 41731 => array(array('_route' => '_722'), array('a', 'b', 'c'), null, null), - 41779 => array(array('_route' => '_906'), array('a', 'b', 'c'), null, null), - 41827 => array(array('_route' => '_946'), array('a', 'b', 'c'), null, null), - 41877 => array(array('_route' => '_788'), array('a', 'b', 'c'), null, null), - 41929 => array(array('_route' => '_828'), array('a', 'b', 'c'), null, null), - 41977 => array(array('_route' => '_892'), array('a', 'b', 'c'), null, null), - 42025 => array(array('_route' => '_972'), array('a', 'b', 'c'), null, null), - 42075 => array(array('_route' => '_829'), array('a', 'b', 'c'), null, null), - 42127 => array(array('_route' => '_923'), array('a', 'b', 'c'), null, null), - 42175 => array(array('_route' => '_947'), array('a', 'b', 'c'), null, null), - 42234 => array(array('_route' => '_526'), array('a', 'b', 'c'), null, null), - 42282 => array(array('_route' => '_614'), array('a', 'b', 'c'), null, null), - 42330 => array(array('_route' => '_621'), array('a', 'b', 'c'), null, null), - 42383 => array(array('_route' => '_543'), array('a', 'b', 'c'), null, null), - 42431 => array(array('_route' => '_812'), array('a', 'b', 'c'), null, null), - 42487 => array(array('_route' => '_548'), array('a', 'b', 'c'), null, null), - 42534 => array(array('_route' => '_747'), array('a', 'b', 'c'), null, null), - 42583 => array(array('_route' => '_715'), array('a', 'b', 'c'), null, null), - 42631 => array(array('_route' => '_940'), array('a', 'b', 'c'), null, null), - 42684 => array(array('_route' => '_563'), array('a', 'b', 'c'), null, null), - 42732 => array(array('_route' => '_611'), array('a', 'b', 'c'), null, null), - 42780 => array(array('_route' => '_830'), array('a', 'b', 'c'), null, null), - 42833 => array(array('_route' => '_569'), array('a', 'b', 'c'), null, null), - 42881 => array(array('_route' => '_908'), array('a', 'b', 'c'), null, null), - 42929 => array(array('_route' => '_913'), array('a', 'b', 'c'), null, null), - 42982 => array(array('_route' => '_644'), array('a', 'b', 'c'), null, null), - 43030 => array(array('_route' => '_776'), array('a', 'b', 'c'), null, null), - 43078 => array(array('_route' => '_856'), array('a', 'b', 'c'), null, null), - 43131 => array(array('_route' => '_650'), array('a', 'b', 'c'), null, null), - 43179 => array(array('_route' => '_761'), array('a', 'b', 'c'), null, null), - 43232 => array(array('_route' => '_663'), array('a', 'b', 'c'), null, null), - 43280 => array(array('_route' => '_754'), array('a', 'b', 'c'), null, null), - 43333 => array(array('_route' => '_665'), array('a', 'b', 'c'), null, null), - 43381 => array(array('_route' => '_805'), array('a', 'b', 'c'), null, null), - 43429 => array(array('_route' => '_846'), array('a', 'b', 'c'), null, null), - 43477 => array(array('_route' => '_857'), array('a', 'b', 'c'), null, null), - 43530 => array(array('_route' => '_675'), array('a', 'b', 'c'), null, null), - 43578 => array(array('_route' => '_839'), array('a', 'b', 'c'), null, null), - 43626 => array(array('_route' => '_968'), array('a', 'b', 'c'), null, null), - 43676 => array(array('_route' => '_697'), array('a', 'b', 'c'), null, null), - 43728 => array(array('_route' => '_725'), array('a', 'b', 'c'), null, null), - 43776 => array(array('_route' => '_794'), array('a', 'b', 'c'), null, null), - 43829 => array(array('_route' => '_773'), array('a', 'b', 'c'), null, null), - 43877 => array(array('_route' => '_992'), array('a', 'b', 'c'), null, null), - 43930 => array(array('_route' => '_901'), array('a', 'b', 'c'), null, null), - 43978 => array(array('_route' => '_970'), array('a', 'b', 'c'), null, null), - 44028 => array(array('_route' => '_964'), array('a', 'b', 'c'), null, null), - 44086 => array(array('_route' => '_530'), array('a', 'b', 'c'), null, null), - 44134 => array(array('_route' => '_703'), array('a', 'b', 'c'), null, null), - 44187 => array(array('_route' => '_533'), array('a', 'b', 'c'), null, null), - 44235 => array(array('_route' => '_739'), array('a', 'b', 'c'), null, null), - 44283 => array(array('_route' => '_791'), array('a', 'b', 'c'), null, null), - 44331 => array(array('_route' => '_987'), array('a', 'b', 'c'), null, null), - 44384 => array(array('_route' => '_566'), array('a', 'b', 'c'), null, null), - 44432 => array(array('_route' => '_592'), array('a', 'b', 'c'), null, null), - 44488 => array(array('_route' => '_568'), array('a', 'b', 'c'), null, null), - 44534 => array(array('_route' => '_868'), array('a', 'b', 'c'), null, null), - 44583 => array(array('_route' => '_878'), array('a', 'b', 'c'), null, null), - 44636 => array(array('_route' => '_588'), array('a', 'b', 'c'), null, null), - 44684 => array(array('_route' => '_793'), array('a', 'b', 'c'), null, null), - 44732 => array(array('_route' => '_917'), array('a', 'b', 'c'), null, null), - 44785 => array(array('_route' => '_600'), array('a', 'b', 'c'), null, null), - 44833 => array(array('_route' => '_728'), array('a', 'b', 'c'), null, null), - 44886 => array(array('_route' => '_603'), array('a', 'b', 'c'), null, null), - 44934 => array(array('_route' => '_765'), array('a', 'b', 'c'), null, null), - 44987 => array(array('_route' => '_607'), array('a', 'b', 'c'), null, null), - 45035 => array(array('_route' => '_676'), array('a', 'b', 'c'), null, null), - 45083 => array(array('_route' => '_804'), array('a', 'b', 'c'), null, null), - 45136 => array(array('_route' => '_609'), array('a', 'b', 'c'), null, null), - 45184 => array(array('_route' => '_961'), array('a', 'b', 'c'), null, null), - 45232 => array(array('_route' => '_980'), array('a', 'b', 'c'), null, null), - 45282 => array(array('_route' => '_714'), array('a', 'b', 'c'), null, null), - 45334 => array(array('_route' => '_730'), array('a', 'b', 'c'), null, null), - 45382 => array(array('_route' => '_806'), array('a', 'b', 'c'), null, null), - 45430 => array(array('_route' => '_825'), array('a', 'b', 'c'), null, null), - 45478 => array(array('_route' => '_879'), array('a', 'b', 'c'), null, null), - 45526 => array(array('_route' => '_893'), array('a', 'b', 'c'), null, null), - 45576 => array(array('_route' => '_928'), array('a', 'b', 'c'), null, null), - 45628 => array(array('_route' => '_932'), array('a', 'b', 'c'), null, null), - 45676 => array(array('_route' => '_958'), array('a', 'b', 'c'), null, null), - 45726 => array(array('_route' => '_984'), array('a', 'b', 'c'), null, null), - 45784 => array(array('_route' => '_538'), array('a', 'b', 'c'), null, null), - 45832 => array(array('_route' => '_993'), array('a', 'b', 'c'), null, null), - 45882 => array(array('_route' => '_542'), array('a', 'b', 'c'), null, null), - 45934 => array(array('_route' => '_551'), array('a', 'b', 'c'), null, null), - 45982 => array(array('_route' => '_687'), array('a', 'b', 'c'), null, null), - 46030 => array(array('_route' => '_724'), array('a', 'b', 'c'), null, null), - 46078 => array(array('_route' => '_925'), array('a', 'b', 'c'), null, null), - 46131 => array(array('_route' => '_587'), array('a', 'b', 'c'), null, null), - 46179 => array(array('_route' => '_914'), array('a', 'b', 'c'), null, null), - 46229 => array(array('_route' => '_616'), array('a', 'b', 'c'), null, null), - 46284 => array(array('_route' => '_677'), array('a', 'b', 'c'), null, null), - 46331 => array(array('_route' => '_815'), array('a', 'b', 'c'), null, null), - 46380 => array(array('_route' => '_781'), array('a', 'b', 'c'), null, null), - 46430 => array(array('_route' => '_717'), array('a', 'b', 'c'), null, null), - 46482 => array(array('_route' => '_782'), array('a', 'b', 'c'), null, null), - 46530 => array(array('_route' => '_832'), array('a', 'b', 'c'), null, null), - 46583 => array(array('_route' => '_795'), array('a', 'b', 'c'), null, null), - 46631 => array(array('_route' => '_887'), array('a', 'b', 'c'), null, null), - 46681 => array(array('_route' => '_800'), array('a', 'b', 'c'), null, null), - 46730 => array(array('_route' => '_826'), array('a', 'b', 'c'), null, null), - 46779 => array(array('_route' => '_881'), array('a', 'b', 'c'), null, null), - 46828 => array(array('_route' => '_886'), array('a', 'b', 'c'), null, null), - 46877 => array(array('_route' => '_938'), array('a', 'b', 'c'), null, null), - 46935 => array(array('_route' => '_540'), array('a', 'b', 'c'), null, null), - 46983 => array(array('_route' => '_643'), array('a', 'b', 'c'), null, null), - 47033 => array(array('_route' => '_544'), array('a', 'b', 'c'), null, null), - 47082 => array(array('_route' => '_552'), array('a', 'b', 'c'), null, null), - 47134 => array(array('_route' => '_567'), array('a', 'b', 'c'), null, null), - 47182 => array(array('_route' => '_608'), array('a', 'b', 'c'), null, null), - 47230 => array(array('_route' => '_698'), array('a', 'b', 'c'), null, null), - 47278 => array(array('_route' => '_988'), array('a', 'b', 'c'), null, null), - 47331 => array(array('_route' => '_583'), array('a', 'b', 'c'), null, null), - 47379 => array(array('_route' => '_998'), array('a', 'b', 'c'), null, null), - 47432 => array(array('_route' => '_604'), array('a', 'b', 'c'), null, null), - 47480 => array(array('_route' => '_630'), array('a', 'b', 'c'), null, null), - 47528 => array(array('_route' => '_706'), array('a', 'b', 'c'), null, null), - 47576 => array(array('_route' => '_976'), array('a', 'b', 'c'), null, null), - 47629 => array(array('_route' => '_673'), array('a', 'b', 'c'), null, null), - 47677 => array(array('_route' => '_678'), array('a', 'b', 'c'), null, null), - 47725 => array(array('_route' => '_931'), array('a', 'b', 'c'), null, null), - 47775 => array(array('_route' => '_751'), array('a', 'b', 'c'), null, null), - 47824 => array(array('_route' => '_766'), array('a', 'b', 'c'), null, null), - 47876 => array(array('_route' => '_792'), array('a', 'b', 'c'), null, null), - 47924 => array(array('_route' => '_814'), array('a', 'b', 'c'), null, null), - 47974 => array(array('_route' => '_798'), array('a', 'b', 'c'), null, null), - 48026 => array(array('_route' => '_851'), array('a', 'b', 'c'), null, null), - 48074 => array(array('_route' => '_941'), array('a', 'b', 'c'), null, null), - 48122 => array(array('_route' => '_953'), array('a', 'b', 'c'), null, null), - 48170 => array(array('_route' => '_975'), array('a', 'b', 'c'), null, null), - 48220 => array(array('_route' => '_873'), array('a', 'b', 'c'), null, null), - 48269 => array(array('_route' => '_936'), array('a', 'b', 'c'), null, null), - 48318 => array(array('_route' => '_994'), array('a', 'b', 'c'), null, null), - 48376 => array(array('_route' => '_562'), array('a', 'b', 'c'), null, null), - 48424 => array(array('_route' => '_770'), array('a', 'b', 'c'), null, null), - 48475 => array(array('_route' => '_774'), array('a', 'b', 'c'), null, null), - 48522 => array(array('_route' => '_966'), array('a', 'b', 'c'), null, null), - 48573 => array(array('_route' => '_582'), array('a', 'b', 'c'), null, null), - 48625 => array(array('_route' => '_606'), array('a', 'b', 'c'), null, null), - 48673 => array(array('_route' => '_648'), array('a', 'b', 'c'), null, null), - 48723 => array(array('_route' => '_624'), array('a', 'b', 'c'), null, null), - 48775 => array(array('_route' => '_626'), array('a', 'b', 'c'), null, null), - 48823 => array(array('_route' => '_821'), array('a', 'b', 'c'), null, null), - 48873 => array(array('_route' => '_628'), array('a', 'b', 'c'), null, null), - 48922 => array(array('_route' => '_638'), array('a', 'b', 'c'), null, null), - 48974 => array(array('_route' => '_640'), array('a', 'b', 'c'), null, null), - 49022 => array(array('_route' => '_990'), array('a', 'b', 'c'), null, null), - 49072 => array(array('_route' => '_705'), array('a', 'b', 'c'), null, null), - 49121 => array(array('_route' => '_757'), array('a', 'b', 'c'), null, null), - 49176 => array(array('_route' => '_785'), array('a', 'b', 'c'), null, null), - 49223 => array(array('_route' => '_875'), array('a', 'b', 'c'), null, null), - 49270 => array(array('_route' => '_894'), array('a', 'b', 'c'), null, null), - 49319 => array(array('_route' => '_945'), array('a', 'b', 'c'), null, null), - 49375 => array(array('_route' => '_816'), array('a', 'b', 'c'), null, null), - 49422 => array(array('_route' => '_872'), array('a', 'b', 'c'), null, null), - 49471 => array(array('_route' => '_921'), array('a', 'b', 'c'), null, null), - 49519 => array(array('_route' => '_960'), array('a', 'b', 'c'), null, null), - 49567 => array(array('_route' => '_974'), array('a', 'b', 'c'), null, null), - 49620 => array(array('_route' => '_835'), array('a', 'b', 'c'), null, null), - 49668 => array(array('_route' => '_934'), array('a', 'b', 'c'), null, null), - 49718 => array(array('_route' => '_869'), array('a', 'b', 'c'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (49718 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->dynamicRoutes = array( + 54 => array(array(array('_route' => '_0'), array('a', 'b', 'c'), null, null, null)), + 102 => array(array(array('_route' => '_190'), array('a', 'b', 'c'), null, null, null)), + 147 => array(array(array('_route' => '_478'), array('a', 'b', 'c'), null, null, null)), + 194 => array(array(array('_route' => '_259'), array('a', 'b', 'c'), null, null, null)), + 240 => array(array(array('_route' => '_368'), array('a', 'b', 'c'), null, null, null)), + 291 => array(array(array('_route' => '_1'), array('a', 'b', 'c'), null, null, null)), + 337 => array(array(array('_route' => '_116'), array('a', 'b', 'c'), null, null, null)), + 383 => array(array(array('_route' => '_490'), array('a', 'b', 'c'), null, null, null)), + 434 => array(array(array('_route' => '_2'), array('a', 'b', 'c'), null, null, null)), + 480 => array(array(array('_route' => '_124'), array('a', 'b', 'c'), null, null, null)), + 526 => array(array(array('_route' => '_389'), array('a', 'b', 'c'), null, null, null)), + 577 => array(array(array('_route' => '_8'), array('a', 'b', 'c'), null, null, null)), + 623 => array(array(array('_route' => '_104'), array('a', 'b', 'c'), null, null, null)), + 677 => array(array(array('_route' => '_12'), array('a', 'b', 'c'), null, null, null)), + 722 => array(array(array('_route' => '_442'), array('a', 'b', 'c'), null, null, null)), + 769 => array(array(array('_route' => '_253'), array('a', 'b', 'c'), null, null, null)), + 820 => array(array(array('_route' => '_13'), array('a', 'b', 'c'), null, null, null)), + 866 => array(array(array('_route' => '_254'), array('a', 'b', 'c'), null, null, null)), + 912 => array(array(array('_route' => '_347'), array('a', 'b', 'c'), null, null, null)), + 963 => array(array(array('_route' => '_16'), array('a', 'b', 'c'), null, null, null)), + 1009 => array(array(array('_route' => '_87'), array('a', 'b', 'c'), null, null, null)), + 1058 => array(array(array('_route' => '_31'), array('a', 'b', 'c'), null, null, null)), + 1109 => array(array(array('_route' => '_50'), array('a', 'b', 'c'), null, null, null)), + 1156 => array(array(array('_route' => '_219'), array('a', 'b', 'c'), null, null, null)), + 1203 => array(array(array('_route' => '_332'), array('a', 'b', 'c'), null, null, null)), + 1250 => array(array(array('_route' => '_359'), array('a', 'b', 'c'), null, null, null)), + 1302 => array(array(array('_route' => '_183'), array('a', 'b', 'c'), null, null, null)), + 1349 => array(array(array('_route' => '_500'), array('a', 'b', 'c'), null, null, null)), + 1401 => array(array(array('_route' => '_214'), array('a', 'b', 'c'), null, null, null)), + 1448 => array(array(array('_route' => '_321'), array('a', 'b', 'c'), null, null, null)), + 1497 => array(array(array('_route' => '_243'), array('a', 'b', 'c'), null, null, null)), + 1545 => array(array(array('_route' => '_328'), array('a', 'b', 'c'), null, null, null)), + 1596 => array(array(array('_route' => '_362'), array('a', 'b', 'c'), null, null, null)), + 1643 => array(array(array('_route' => '_488'), array('a', 'b', 'c'), null, null, null)), + 1701 => array(array(array('_route' => '_3'), array('a', 'b', 'c'), null, null, null)), + 1751 => array(array(array('_route' => '_102'), array('a', 'b', 'c'), null, null, null)), + 1797 => array(array(array('_route' => '_220'), array('a', 'b', 'c'), null, null, null)), + 1845 => array(array(array('_route' => '_127'), array('a', 'b', 'c'), null, null, null)), + 1897 => array(array(array('_route' => '_5'), array('a', 'b', 'c'), null, null, null)), + 1944 => array(array(array('_route' => '_242'), array('a', 'b', 'c'), null, null, null)), + 1991 => array(array(array('_route' => '_397'), array('a', 'b', 'c'), null, null, null)), + 2038 => array(array(array('_route' => '_454'), array('a', 'b', 'c'), null, null, null)), + 2090 => array(array(array('_route' => '_34'), array('a', 'b', 'c'), null, null, null)), + 2137 => array(array(array('_route' => '_281'), array('a', 'b', 'c'), null, null, null)), + 2189 => array(array(array('_route' => '_64'), array('a', 'b', 'c'), null, null, null)), + 2236 => array(array(array('_route' => '_205'), array('a', 'b', 'c'), null, null, null)), + 2291 => array(array(array('_route' => '_71'), array('a', 'b', 'c'), null, null, null)), + 2337 => array(array(array('_route' => '_203'), array('a', 'b', 'c'), null, null, null)), + 2385 => array(array(array('_route' => '_97'), array('a', 'b', 'c'), null, null, null)), + 2437 => array(array(array('_route' => '_98'), array('a', 'b', 'c'), null, null, null)), + 2484 => array(array(array('_route' => '_267'), array('a', 'b', 'c'), null, null, null)), + 2531 => array(array(array('_route' => '_309'), array('a', 'b', 'c'), null, null, null)), + 2586 => array(array(array('_route' => '_117'), array('a', 'b', 'c'), null, null, null)), + 2631 => array(array(array('_route' => '_211'), array('a', 'b', 'c'), null, null, null)), + 2679 => array(array(array('_route' => '_484'), array('a', 'b', 'c'), null, null, null)), + 2731 => array(array(array('_route' => '_139'), array('a', 'b', 'c'), null, null, null)), + 2778 => array(array(array('_route' => '_421'), array('a', 'b', 'c'), null, null, null)), + 2830 => array(array(array('_route' => '_185'), array('a', 'b', 'c'), null, null, null)), + 2877 => array(array(array('_route' => '_439'), array('a', 'b', 'c'), null, null, null)), + 2926 => array(array(array('_route' => '_218'), array('a', 'b', 'c'), null, null, null)), + 2977 => array(array(array('_route' => '_233'), array('a', 'b', 'c'), null, null, null)), + 3024 => array(array(array('_route' => '_483'), array('a', 'b', 'c'), null, null, null)), + 3073 => array(array(array('_route' => '_265'), array('a', 'b', 'c'), null, null, null)), + 3124 => array(array(array('_route' => '_299'), array('a', 'b', 'c'), null, null, null)), + 3171 => array(array(array('_route' => '_351'), array('a', 'b', 'c'), null, null, null)), + 3218 => array(array(array('_route' => '_472'), array('a', 'b', 'c'), null, null, null)), + 3267 => array(array(array('_route' => '_360'), array('a', 'b', 'c'), null, null, null)), + 3315 => array(array(array('_route' => '_466'), array('a', 'b', 'c'), null, null, null)), + 3372 => array(array(array('_route' => '_4'), array('a', 'b', 'c'), null, null, null)), + 3419 => array(array(array('_route' => '_142'), array('a', 'b', 'c'), null, null, null)), + 3466 => array(array(array('_route' => '_151'), array('a', 'b', 'c'), null, null, null)), + 3513 => array(array(array('_route' => '_308'), array('a', 'b', 'c'), null, null, null)), + 3560 => array(array(array('_route' => '_440'), array('a', 'b', 'c'), null, null, null)), + 3612 => array(array(array('_route' => '_14'), array('a', 'b', 'c'), null, null, null)), + 3659 => array(array(array('_route' => '_358'), array('a', 'b', 'c'), null, null, null)), + 3711 => array(array(array('_route' => '_37'), array('a', 'b', 'c'), null, null, null)), + 3758 => array(array(array('_route' => '_38'), array('a', 'b', 'c'), null, null, null)), + 3805 => array(array(array('_route' => '_146'), array('a', 'b', 'c'), null, null, null)), + 3852 => array(array(array('_route' => '_194'), array('a', 'b', 'c'), null, null, null)), + 3899 => array(array(array('_route' => '_487'), array('a', 'b', 'c'), null, null, null)), + 3948 => array(array(array('_route' => '_42'), array('a', 'b', 'c'), null, null, null)), + 3999 => array(array(array('_route' => '_54'), array('a', 'b', 'c'), null, null, null)), + 4046 => array(array(array('_route' => '_326'), array('a', 'b', 'c'), null, null, null)), + 4098 => array(array(array('_route' => '_68'), array('a', 'b', 'c'), null, null, null)), + 4145 => array(array(array('_route' => '_108'), array('a', 'b', 'c'), null, null, null)), + 4197 => array(array(array('_route' => '_74'), array('a', 'b', 'c'), null, null, null)), + 4244 => array(array(array('_route' => '_315'), array('a', 'b', 'c'), null, null, null)), + 4291 => array(array(array('_route' => '_374'), array('a', 'b', 'c'), null, null, null)), + 4343 => array(array(array('_route' => '_99'), array('a', 'b', 'c'), null, null, null)), + 4390 => array(array(array('_route' => '_238'), array('a', 'b', 'c'), null, null, null)), + 4442 => array(array(array('_route' => '_107'), array('a', 'b', 'c'), null, null, null)), + 4489 => array(array(array('_route' => '_409'), array('a', 'b', 'c'), null, null, null)), + 4541 => array(array(array('_route' => '_122'), array('a', 'b', 'c'), null, null, null)), + 4588 => array(array(array('_route' => '_379'), array('a', 'b', 'c'), null, null, null)), + 4635 => array(array(array('_route' => '_390'), array('a', 'b', 'c'), null, null, null)), + 4687 => array(array(array('_route' => '_171'), array('a', 'b', 'c'), null, null, null)), + 4734 => array(array(array('_route' => '_260'), array('a', 'b', 'c'), null, null, null)), + 4781 => array(array(array('_route' => '_434'), array('a', 'b', 'c'), null, null, null)), + 4830 => array(array(array('_route' => '_189'), array('a', 'b', 'c'), null, null, null)), + 4878 => array(array(array('_route' => '_467'), array('a', 'b', 'c'), null, null, null)), + 4935 => array(array(array('_route' => '_6'), array('a', 'b', 'c'), null, null, null)), + 4982 => array(array(array('_route' => '_286'), array('a', 'b', 'c'), null, null, null)), + 5029 => array(array(array('_route' => '_438'), array('a', 'b', 'c'), null, null, null)), + 5081 => array(array(array('_route' => '_19'), array('a', 'b', 'c'), null, null, null)), + 5131 => array(array(array('_route' => '_24'), array('a', 'b', 'c'), null, null, null)), + 5177 => array(array(array('_route' => '_172'), array('a', 'b', 'c'), null, null, null)), + 5230 => array(array(array('_route' => '_33'), array('a', 'b', 'c'), null, null, null)), + 5277 => array(array(array('_route' => '_400'), array('a', 'b', 'c'), null, null, null)), + 5324 => array(array(array('_route' => '_427'), array('a', 'b', 'c'), null, null, null)), + 5376 => array(array(array('_route' => '_35'), array('a', 'b', 'c'), null, null, null)), + 5423 => array(array(array('_route' => '_156'), array('a', 'b', 'c'), null, null, null)), + 5475 => array(array(array('_route' => '_36'), array('a', 'b', 'c'), null, null, null)), + 5522 => array(array(array('_route' => '_251'), array('a', 'b', 'c'), null, null, null)), + 5574 => array(array(array('_route' => '_43'), array('a', 'b', 'c'), null, null, null)), + 5621 => array(array(array('_route' => '_292'), array('a', 'b', 'c'), null, null, null)), + 5668 => array(array(array('_route' => '_411'), array('a', 'b', 'c'), null, null, null)), + 5720 => array(array(array('_route' => '_69'), array('a', 'b', 'c'), null, null, null)), + 5767 => array(array(array('_route' => '_159'), array('a', 'b', 'c'), null, null, null)), + 5814 => array(array(array('_route' => '_170'), array('a', 'b', 'c'), null, null, null)), + 5861 => array(array(array('_route' => '_376'), array('a', 'b', 'c'), null, null, null)), + 5913 => array(array(array('_route' => '_131'), array('a', 'b', 'c'), null, null, null)), + 5960 => array(array(array('_route' => '_446'), array('a', 'b', 'c'), null, null, null)), + 6015 => array(array(array('_route' => '_140'), array('a', 'b', 'c'), null, null, null)), + 6061 => array(array(array('_route' => '_353'), array('a', 'b', 'c'), null, null, null)), + 6112 => array(array(array('_route' => '_224'), array('a', 'b', 'c'), null, null, null)), + 6158 => array(array(array('_route' => '_346'), array('a', 'b', 'c'), null, null, null)), + 6204 => array(array(array('_route' => '_443'), array('a', 'b', 'c'), null, null, null)), + 6254 => array(array(array('_route' => '_154'), array('a', 'b', 'c'), null, null, null)), + 6305 => array(array(array('_route' => '_212'), array('a', 'b', 'c'), null, null, null)), + 6352 => array(array(array('_route' => '_313'), array('a', 'b', 'c'), null, null, null)), + 6399 => array(array(array('_route' => '_395'), array('a', 'b', 'c'), null, null, null)), + 6446 => array(array(array('_route' => '_441'), array('a', 'b', 'c'), null, null, null)), + 6498 => array(array(array('_route' => '_223'), array('a', 'b', 'c'), null, null, null)), + 6545 => array(array(array('_route' => '_303'), array('a', 'b', 'c'), null, null, null)), + 6594 => array(array(array('_route' => '_410'), array('a', 'b', 'c'), null, null, null)), + 6642 => array(array(array('_route' => '_494'), array('a', 'b', 'c'), null, null, null)), + 6702 => array(array(array('_route' => '_7'), array('a', 'b', 'c'), null, null, null)), + 6748 => array(array(array('_route' => '_268'), array('a', 'b', 'c'), null, null, null)), + 6796 => array(array(array('_route' => '_178'), array('a', 'b', 'c'), null, null, null)), + 6843 => array(array(array('_route' => '_179'), array('a', 'b', 'c'), null, null, null)), + 6890 => array(array(array('_route' => '_416'), array('a', 'b', 'c'), null, null, null)), + 6942 => array(array(array('_route' => '_25'), array('a', 'b', 'c'), null, null, null)), + 6989 => array(array(array('_route' => '_307'), array('a', 'b', 'c'), null, null, null)), + 7036 => array(array(array('_route' => '_387'), array('a', 'b', 'c'), null, null, null)), + 7083 => array(array(array('_route' => '_471'), array('a', 'b', 'c'), null, null, null)), + 7132 => array(array(array('_route' => '_90'), array('a', 'b', 'c'), null, null, null)), + 7183 => array(array(array('_route' => '_95'), array('a', 'b', 'c'), null, null, null)), + 7230 => array(array(array('_route' => '_338'), array('a', 'b', 'c'), null, null, null)), + 7277 => array(array(array('_route' => '_401'), array('a', 'b', 'c'), null, null, null)), + 7329 => array(array(array('_route' => '_147'), array('a', 'b', 'c'), null, null, null)), + 7376 => array(array(array('_route' => '_319'), array('a', 'b', 'c'), null, null, null)), + 7423 => array(array(array('_route' => '_354'), array('a', 'b', 'c'), null, null, null)), + 7470 => array(array(array('_route' => '_428'), array('a', 'b', 'c'), null, null, null)), + 7522 => array(array(array('_route' => '_162'), array('a', 'b', 'c'), null, null, null)), + 7572 => array(array(array('_route' => '_175'), array('a', 'b', 'c'), null, null, null)), + 7618 => array(array(array('_route' => '_455'), array('a', 'b', 'c'), null, null, null)), + 7666 => array(array(array('_route' => '_355'), array('a', 'b', 'c'), null, null, null)), + 7718 => array(array(array('_route' => '_197'), array('a', 'b', 'c'), null, null, null)), + 7768 => array(array(array('_route' => '_202'), array('a', 'b', 'c'), null, null, null)), + 7813 => array(array(array('_route' => '_489'), array('a', 'b', 'c'), null, null, null)), + 7863 => array(array(array('_route' => '_199'), array('a', 'b', 'c'), null, null, null)), + 7914 => array(array(array('_route' => '_263'), array('a', 'b', 'c'), null, null, null)), + 7961 => array(array(array('_route' => '_406'), array('a', 'b', 'c'), null, null, null)), + 8010 => array(array(array('_route' => '_289'), array('a', 'b', 'c'), null, null, null)), + 8058 => array(array(array('_route' => '_325'), array('a', 'b', 'c'), null, null, null)), + 8106 => array(array(array('_route' => '_378'), array('a', 'b', 'c'), null, null, null)), + 8154 => array(array(array('_route' => '_468'), array('a', 'b', 'c'), null, null, null)), + 8211 => array(array(array('_route' => '_9'), array('a', 'b', 'c'), null, null, null)), + 8258 => array(array(array('_route' => '_216'), array('a', 'b', 'c'), null, null, null)), + 8307 => array(array(array('_route' => '_26'), array('a', 'b', 'c'), null, null, null)), + 8355 => array(array(array('_route' => '_62'), array('a', 'b', 'c'), null, null, null)), + 8406 => array(array(array('_route' => '_81'), array('a', 'b', 'c'), null, null, null)), + 8453 => array(array(array('_route' => '_318'), array('a', 'b', 'c'), null, null, null)), + 8505 => array(array(array('_route' => '_121'), array('a', 'b', 'c'), null, null, null)), + 8551 => array(array(array('_route' => '_182'), array('a', 'b', 'c'), null, null, null)), + 8603 => array(array(array('_route' => '_136'), array('a', 'b', 'c'), null, null, null)), + 8650 => array(array(array('_route' => '_415'), array('a', 'b', 'c'), null, null, null)), + 8697 => array(array(array('_route' => '_457'), array('a', 'b', 'c'), null, null, null)), + 8744 => array(array(array('_route' => '_463'), array('a', 'b', 'c'), null, null, null)), + 8796 => array(array(array('_route' => '_148'), array('a', 'b', 'c'), null, null, null)), + 8843 => array(array(array('_route' => '_273'), array('a', 'b', 'c'), null, null, null)), + 8892 => array(array(array('_route' => '_284'), array('a', 'b', 'c'), null, null, null)), + 8940 => array(array(array('_route' => '_288'), array('a', 'b', 'c'), null, null, null)), + 8991 => array(array(array('_route' => '_295'), array('a', 'b', 'c'), null, null, null)), + 9038 => array(array(array('_route' => '_305'), array('a', 'b', 'c'), null, null, null)), + 9085 => array(array(array('_route' => '_453'), array('a', 'b', 'c'), null, null, null)), + 9134 => array(array(array('_route' => '_340'), array('a', 'b', 'c'), null, null, null)), + 9185 => array(array(array('_route' => '_371'), array('a', 'b', 'c'), null, null, null)), + 9232 => array(array(array('_route' => '_417'), array('a', 'b', 'c'), null, null, null)), + 9284 => array(array(array('_route' => '_382'), array('a', 'b', 'c'), null, null, null)), + 9331 => array(array(array('_route' => '_404'), array('a', 'b', 'c'), null, null, null)), + 9389 => array(array(array('_route' => '_10'), array('a', 'b', 'c'), null, null, null)), + 9436 => array(array(array('_route' => '_279'), array('a', 'b', 'c'), null, null, null)), + 9483 => array(array(array('_route' => '_377'), array('a', 'b', 'c'), null, null, null)), + 9535 => array(array(array('_route' => '_39'), array('a', 'b', 'c'), null, null, null)), + 9582 => array(array(array('_route' => '_40'), array('a', 'b', 'c'), null, null, null)), + 9629 => array(array(array('_route' => '_264'), array('a', 'b', 'c'), null, null, null)), + 9676 => array(array(array('_route' => '_449'), array('a', 'b', 'c'), null, null, null)), + 9728 => array(array(array('_route' => '_46'), array('a', 'b', 'c'), null, null, null)), + 9775 => array(array(array('_route' => '_257'), array('a', 'b', 'c'), null, null, null)), + 9822 => array(array(array('_route' => '_274'), array('a', 'b', 'c'), null, null, null)), + 9869 => array(array(array('_route' => '_388'), array('a', 'b', 'c'), null, null, null)), + 9921 => array(array(array('_route' => '_53'), array('a', 'b', 'c'), null, null, null)), + 9968 => array(array(array('_route' => '_345'), array('a', 'b', 'c'), null, null, null)), + 10020 => array(array(array('_route' => '_73'), array('a', 'b', 'c'), null, null, null)), + 10068 => array(array(array('_route' => '_296'), array('a', 'b', 'c'), null, null, null)), + 10121 => array(array(array('_route' => '_75'), array('a', 'b', 'c'), null, null, null)), + 10169 => array(array(array('_route' => '_458'), array('a', 'b', 'c'), null, null, null)), + 10225 => array(array(array('_route' => '_79'), array('a', 'b', 'c'), null, null, null)), + 10272 => array(array(array('_route' => '_129'), array('a', 'b', 'c'), null, null, null)), + 10319 => array(array(array('_route' => '_418'), array('a', 'b', 'c'), null, null, null)), + 10368 => array(array(array('_route' => '_225'), array('a', 'b', 'c'), null, null, null)), + 10416 => array(array(array('_route' => '_479'), array('a', 'b', 'c'), null, null, null)), + 10466 => array(array(array('_route' => '_120'), array('a', 'b', 'c'), null, null, null)), + 10515 => array(array(array('_route' => '_276'), array('a', 'b', 'c'), null, null, null)), + 10564 => array(array(array('_route' => '_370'), array('a', 'b', 'c'), null, null, null)), + 10616 => array(array(array('_route' => '_385'), array('a', 'b', 'c'), null, null, null)), + 10664 => array(array(array('_route' => '_469'), array('a', 'b', 'c'), null, null, null)), + 10714 => array(array(array('_route' => '_435'), array('a', 'b', 'c'), null, null, null)), + 10772 => array(array(array('_route' => '_11'), array('a', 'b', 'c'), null, null, null)), + 10820 => array(array(array('_route' => '_105'), array('a', 'b', 'c'), null, null, null)), + 10868 => array(array(array('_route' => '_132'), array('a', 'b', 'c'), null, null, null)), + 10921 => array(array(array('_route' => '_18'), array('a', 'b', 'c'), null, null, null)), + 10969 => array(array(array('_route' => '_210'), array('a', 'b', 'c'), null, null, null)), + 11017 => array(array(array('_route' => '_329'), array('a', 'b', 'c'), null, null, null)), + 11073 => array(array(array('_route' => '_29'), array('a', 'b', 'c'), null, null, null)), + 11120 => array(array(array('_route' => '_480'), array('a', 'b', 'c'), null, null, null)), + 11169 => array(array(array('_route' => '_426'), array('a', 'b', 'c'), null, null, null)), + 11222 => array(array(array('_route' => '_32'), array('a', 'b', 'c'), null, null, null)), + 11270 => array(array(array('_route' => '_217'), array('a', 'b', 'c'), null, null, null)), + 11318 => array(array(array('_route' => '_275'), array('a', 'b', 'c'), null, null, null)), + 11371 => array(array(array('_route' => '_45'), array('a', 'b', 'c'), null, null, null)), + 11419 => array(array(array('_route' => '_157'), array('a', 'b', 'c'), null, null, null)), + 11467 => array(array(array('_route' => '_184'), array('a', 'b', 'c'), null, null, null)), + 11515 => array(array(array('_route' => '_250'), array('a', 'b', 'c'), null, null, null)), + 11563 => array(array(array('_route' => '_356'), array('a', 'b', 'c'), null, null, null)), + 11616 => array(array(array('_route' => '_47'), array('a', 'b', 'c'), null, null, null)), + 11664 => array(array(array('_route' => '_445'), array('a', 'b', 'c'), null, null, null)), + 11714 => array(array(array('_route' => '_48'), array('a', 'b', 'c'), null, null, null)), + 11766 => array(array(array('_route' => '_58'), array('a', 'b', 'c'), null, null, null)), + 11814 => array(array(array('_route' => '_414'), array('a', 'b', 'c'), null, null, null)), + 11862 => array(array(array('_route' => '_431'), array('a', 'b', 'c'), null, null, null)), + 11915 => array(array(array('_route' => '_84'), array('a', 'b', 'c'), null, null, null)), + 11963 => array(array(array('_route' => '_294'), array('a', 'b', 'c'), null, null, null)), + 12011 => array(array(array('_route' => '_336'), array('a', 'b', 'c'), null, null, null)), + 12059 => array(array(array('_route' => '_465'), array('a', 'b', 'c'), null, null, null)), + 12112 => array(array(array('_route' => '_103'), array('a', 'b', 'c'), null, null, null)), + 12160 => array(array(array('_route' => '_111'), array('a', 'b', 'c'), null, null, null)), + 12208 => array(array(array('_route' => '_207'), array('a', 'b', 'c'), null, null, null)), + 12256 => array(array(array('_route' => '_402'), array('a', 'b', 'c'), null, null, null)), + 12309 => array(array(array('_route' => '_230'), array('a', 'b', 'c'), null, null, null)), + 12356 => array(array(array('_route' => '_331'), array('a', 'b', 'c'), null, null, null)), + 12406 => array(array(array('_route' => '_248'), array('a', 'b', 'c'), null, null, null)), + 12455 => array(array(array('_route' => '_282'), array('a', 'b', 'c'), null, null, null)), + 12513 => array(array(array('_route' => '_15'), array('a', 'b', 'c'), null, null, null)), + 12561 => array(array(array('_route' => '_130'), array('a', 'b', 'c'), null, null, null)), + 12609 => array(array(array('_route' => '_231'), array('a', 'b', 'c'), null, null, null)), + 12657 => array(array(array('_route' => '_365'), array('a', 'b', 'c'), null, null, null)), + 12705 => array(array(array('_route' => '_448'), array('a', 'b', 'c'), null, null, null)), + 12758 => array(array(array('_route' => '_20'), array('a', 'b', 'c'), null, null, null)), + 12806 => array(array(array('_route' => '_93'), array('a', 'b', 'c'), null, null, null)), + 12854 => array(array(array('_route' => '_186'), array('a', 'b', 'c'), null, null, null)), + 12902 => array(array(array('_route' => '_460'), array('a', 'b', 'c'), null, null, null)), + 12955 => array(array(array('_route' => '_52'), array('a', 'b', 'c'), null, null, null)), + 13003 => array(array(array('_route' => '_447'), array('a', 'b', 'c'), null, null, null)), + 13056 => array(array(array('_route' => '_56'), array('a', 'b', 'c'), null, null, null)), + 13104 => array(array(array('_route' => '_133'), array('a', 'b', 'c'), null, null, null)), + 13152 => array(array(array('_route' => '_297'), array('a', 'b', 'c'), null, null, null)), + 13205 => array(array(array('_route' => '_82'), array('a', 'b', 'c'), null, null, null)), + 13253 => array(array(array('_route' => '_165'), array('a', 'b', 'c'), null, null, null)), + 13301 => array(array(array('_route' => '_213'), array('a', 'b', 'c'), null, null, null)), + 13351 => array(array(array('_route' => '_86'), array('a', 'b', 'c'), null, null, null)), + 13403 => array(array(array('_route' => '_92'), array('a', 'b', 'c'), null, null, null)), + 13450 => array(array(array('_route' => '_280'), array('a', 'b', 'c'), null, null, null)), + 13500 => array(array(array('_route' => '_143'), array('a', 'b', 'c'), null, null, null)), + 13549 => array(array(array('_route' => '_177'), array('a', 'b', 'c'), null, null, null)), + 13601 => array(array(array('_route' => '_188'), array('a', 'b', 'c'), null, null, null)), + 13649 => array(array(array('_route' => '_311'), array('a', 'b', 'c'), null, null, null)), + 13697 => array(array(array('_route' => '_350'), array('a', 'b', 'c'), null, null, null)), + 13750 => array(array(array('_route' => '_226'), array('a', 'b', 'c'), null, null, null)), + 13798 => array(array(array('_route' => '_291'), array('a', 'b', 'c'), null, null, null)), + 13851 => array(array(array('_route' => '_244'), array('a', 'b', 'c'), null, null, null)), + 13898 => array(array(array('_route' => '_287'), array('a', 'b', 'c'), null, null, null)), + 13951 => array(array(array('_route' => '_300'), array('a', 'b', 'c'), null, null, null)), + 13999 => array(array(array('_route' => '_451'), array('a', 'b', 'c'), null, null, null)), + 14047 => array(array(array('_route' => '_452'), array('a', 'b', 'c'), null, null, null)), + 14095 => array(array(array('_route' => '_481'), array('a', 'b', 'c'), null, null, null)), + 14145 => array(array(array('_route' => '_312'), array('a', 'b', 'c'), null, null, null)), + 14203 => array(array(array('_route' => '_17'), array('a', 'b', 'c'), null, null, null)), + 14251 => array(array(array('_route' => '_227'), array('a', 'b', 'c'), null, null, null)), + 14299 => array(array(array('_route' => '_393'), array('a', 'b', 'c'), null, null, null)), + 14349 => array(array(array('_route' => '_57'), array('a', 'b', 'c'), null, null, null)), + 14401 => array(array(array('_route' => '_61'), array('a', 'b', 'c'), null, null, null)), + 14449 => array(array(array('_route' => '_112'), array('a', 'b', 'c'), null, null, null)), + 14500 => array(array(array('_route' => '_135'), array('a', 'b', 'c'), null, null, null)), + 14547 => array(array(array('_route' => '_271'), array('a', 'b', 'c'), null, null, null)), + 14596 => array(array(array('_route' => '_459'), array('a', 'b', 'c'), null, null, null)), + 14649 => array(array(array('_route' => '_67'), array('a', 'b', 'c'), null, null, null)), + 14697 => array(array(array('_route' => '_113'), array('a', 'b', 'c'), null, null, null)), + 14745 => array(array(array('_route' => '_497'), array('a', 'b', 'c'), null, null, null)), + 14795 => array(array(array('_route' => '_70'), array('a', 'b', 'c'), null, null, null)), + 14847 => array(array(array('_route' => '_89'), array('a', 'b', 'c'), null, null, null)), + 14895 => array(array(array('_route' => '_128'), array('a', 'b', 'c'), null, null, null)), + 14948 => array(array(array('_route' => '_150'), array('a', 'b', 'c'), null, null, null)), + 14996 => array(array(array('_route' => '_166'), array('a', 'b', 'c'), null, null, null)), + 15047 => array(array(array('_route' => '_206'), array('a', 'b', 'c'), null, null, null)), + 15094 => array(array(array('_route' => '_419'), array('a', 'b', 'c'), null, null, null)), + 15148 => array(array(array('_route' => '_201'), array('a', 'b', 'c'), null, null, null)), + 15196 => array(array(array('_route' => '_314'), array('a', 'b', 'c'), null, null, null)), + 15244 => array(array(array('_route' => '_429'), array('a', 'b', 'c'), null, null, null)), + 15297 => array(array(array('_route' => '_228'), array('a', 'b', 'c'), null, null, null)), + 15345 => array(array(array('_route' => '_477'), array('a', 'b', 'c'), null, null, null)), + 15395 => array(array(array('_route' => '_272'), array('a', 'b', 'c'), null, null, null)), + 15444 => array(array(array('_route' => '_486'), array('a', 'b', 'c'), null, null, null)), + 15502 => array(array(array('_route' => '_21'), array('a', 'b', 'c'), null, null, null)), + 15550 => array(array(array('_route' => '_247'), array('a', 'b', 'c'), null, null, null)), + 15598 => array(array(array('_route' => '_424'), array('a', 'b', 'c'), null, null, null)), + 15646 => array(array(array('_route' => '_499'), array('a', 'b', 'c'), null, null, null)), + 15699 => array(array(array('_route' => '_23'), array('a', 'b', 'c'), null, null, null)), + 15747 => array(array(array('_route' => '_152'), array('a', 'b', 'c'), null, null, null)), + 15795 => array(array(array('_route' => '_304'), array('a', 'b', 'c'), null, null, null)), + 15843 => array(array(array('_route' => '_352'), array('a', 'b', 'c'), null, null, null)), + 15896 => array(array(array('_route' => '_28'), array('a', 'b', 'c'), null, null, null)), + 15944 => array(array(array('_route' => '_240'), array('a', 'b', 'c'), null, null, null)), + 16000 => array(array(array('_route' => '_30'), array('a', 'b', 'c'), null, null, null)), + 16047 => array(array(array('_route' => '_41'), array('a', 'b', 'c'), null, null, null)), + 16096 => array(array(array('_route' => '_301'), array('a', 'b', 'c'), null, null, null)), + 16149 => array(array(array('_route' => '_66'), array('a', 'b', 'c'), null, null, null)), + 16197 => array(array(array('_route' => '_72'), array('a', 'b', 'c'), null, null, null)), + 16245 => array(array(array('_route' => '_320'), array('a', 'b', 'c'), null, null, null)), + 16298 => array(array(array('_route' => '_78'), array('a', 'b', 'c'), null, null, null)), + 16346 => array(array(array('_route' => '_337'), array('a', 'b', 'c'), null, null, null)), + 16394 => array(array(array('_route' => '_399'), array('a', 'b', 'c'), null, null, null)), + 16442 => array(array(array('_route' => '_495'), array('a', 'b', 'c'), null, null, null)), + 16492 => array(array(array('_route' => '_85'), array('a', 'b', 'c'), null, null, null)), + 16544 => array(array(array('_route' => '_101'), array('a', 'b', 'c'), null, null, null)), + 16592 => array(array(array('_route' => '_176'), array('a', 'b', 'c'), null, null, null)), + 16640 => array(array(array('_route' => '_246'), array('a', 'b', 'c'), null, null, null)), + 16693 => array(array(array('_route' => '_125'), array('a', 'b', 'c'), null, null, null)), + 16741 => array(array(array('_route' => '_341'), array('a', 'b', 'c'), null, null, null)), + 16794 => array(array(array('_route' => '_137'), array('a', 'b', 'c'), null, null, null)), + 16842 => array(array(array('_route' => '_270'), array('a', 'b', 'c'), null, null, null)), + 16890 => array(array(array('_route' => '_386'), array('a', 'b', 'c'), null, null, null)), + 16943 => array(array(array('_route' => '_169'), array('a', 'b', 'c'), null, null, null)), + 16991 => array(array(array('_route' => '_200'), array('a', 'b', 'c'), null, null, null)), + 17039 => array(array(array('_route' => '_262'), array('a', 'b', 'c'), null, null, null)), + 17092 => array(array(array('_route' => '_187'), array('a', 'b', 'c'), null, null, null)), + 17140 => array(array(array('_route' => '_333'), array('a', 'b', 'c'), null, null, null)), + 17190 => array(array(array('_route' => '_215'), array('a', 'b', 'c'), null, null, null)), + 17239 => array(array(array('_route' => '_316'), array('a', 'b', 'c'), null, null, null)), + 17288 => array(array(array('_route' => '_343'), array('a', 'b', 'c'), null, null, null)), + 17346 => array(array(array('_route' => '_22'), array('a', 'b', 'c'), null, null, null)), + 17394 => array(array(array('_route' => '_420'), array('a', 'b', 'c'), null, null, null)), + 17447 => array(array(array('_route' => '_55'), array('a', 'b', 'c'), null, null, null)), + 17494 => array(array(array('_route' => '_496'), array('a', 'b', 'c'), null, null, null)), + 17547 => array(array(array('_route' => '_153'), array('a', 'b', 'c'), null, null, null)), + 17595 => array(array(array('_route' => '_344'), array('a', 'b', 'c'), null, null, null)), + 17648 => array(array(array('_route' => '_160'), array('a', 'b', 'c'), null, null, null)), + 17696 => array(array(array('_route' => '_398'), array('a', 'b', 'c'), null, null, null)), + 17749 => array(array(array('_route' => '_161'), array('a', 'b', 'c'), null, null, null)), + 17797 => array(array(array('_route' => '_193'), array('a', 'b', 'c'), null, null, null)), + 17847 => array(array(array('_route' => '_174'), array('a', 'b', 'c'), null, null, null)), + 17899 => array(array(array('_route' => '_209'), array('a', 'b', 'c'), null, null, null)), + 17947 => array(array(array('_route' => '_261'), array('a', 'b', 'c'), null, null, null)), + 18000 => array(array(array('_route' => '_222'), array('a', 'b', 'c'), null, null, null)), + 18048 => array(array(array('_route' => '_323'), array('a', 'b', 'c'), null, null, null)), + 18096 => array(array(array('_route' => '_380'), array('a', 'b', 'c'), null, null, null)), + 18149 => array(array(array('_route' => '_232'), array('a', 'b', 'c'), null, null, null)), + 18197 => array(array(array('_route' => '_383'), array('a', 'b', 'c'), null, null, null)), + 18247 => array(array(array('_route' => '_306'), array('a', 'b', 'c'), null, null, null)), + 18296 => array(array(array('_route' => '_327'), array('a', 'b', 'c'), null, null, null)), + 18345 => array(array(array('_route' => '_364'), array('a', 'b', 'c'), null, null, null)), + 18397 => array(array(array('_route' => '_403'), array('a', 'b', 'c'), null, null, null)), + 18445 => array(array(array('_route' => '_405'), array('a', 'b', 'c'), null, null, null)), + 18495 => array(array(array('_route' => '_412'), array('a', 'b', 'c'), null, null, null)), + 18553 => array(array(array('_route' => '_27'), array('a', 'b', 'c'), null, null, null)), + 18601 => array(array(array('_route' => '_134'), array('a', 'b', 'c'), null, null, null)), + 18649 => array(array(array('_route' => '_245'), array('a', 'b', 'c'), null, null, null)), + 18702 => array(array(array('_route' => '_59'), array('a', 'b', 'c'), null, null, null)), + 18750 => array(array(array('_route' => '_208'), array('a', 'b', 'c'), null, null, null)), + 18803 => array(array(array('_route' => '_60'), array('a', 'b', 'c'), null, null, null)), + 18851 => array(array(array('_route' => '_119'), array('a', 'b', 'c'), null, null, null)), + 18902 => array(array(array('_route' => '_163'), array('a', 'b', 'c'), null, null, null)), + 18949 => array(array(array('_route' => '_249'), array('a', 'b', 'c'), null, null, null)), + 18998 => array(array(array('_route' => '_278'), array('a', 'b', 'c'), null, null, null)), + 19051 => array(array(array('_route' => '_63'), array('a', 'b', 'c'), null, null, null)), + 19099 => array(array(array('_route' => '_195'), array('a', 'b', 'c'), null, null, null)), + 19147 => array(array(array('_route' => '_252'), array('a', 'b', 'c'), null, null, null)), + 19195 => array(array(array('_route' => '_461'), array('a', 'b', 'c'), null, null, null)), + 19248 => array(array(array('_route' => '_126'), array('a', 'b', 'c'), null, null, null)), + 19296 => array(array(array('_route' => '_158'), array('a', 'b', 'c'), null, null, null)), + 19344 => array(array(array('_route' => '_221'), array('a', 'b', 'c'), null, null, null)), + 19392 => array(array(array('_route' => '_269'), array('a', 'b', 'c'), null, null, null)), + 19440 => array(array(array('_route' => '_310'), array('a', 'b', 'c'), null, null, null)), + 19496 => array(array(array('_route' => '_138'), array('a', 'b', 'c'), null, null, null)), + 19543 => array(array(array('_route' => '_348'), array('a', 'b', 'c'), null, null, null)), + 19592 => array(array(array('_route' => '_236'), array('a', 'b', 'c'), null, null, null)), + 19640 => array(array(array('_route' => '_433'), array('a', 'b', 'c'), null, null, null)), + 19693 => array(array(array('_route' => '_141'), array('a', 'b', 'c'), null, null, null)), + 19741 => array(array(array('_route' => '_283'), array('a', 'b', 'c'), null, null, null)), + 19794 => array(array(array('_route' => '_144'), array('a', 'b', 'c'), null, null, null)), + 19842 => array(array(array('_route' => '_191'), array('a', 'b', 'c'), null, null, null)), + 19895 => array(array(array('_route' => '_168'), array('a', 'b', 'c'), null, null, null)), + 19943 => array(array(array('_route' => '_363'), array('a', 'b', 'c'), null, null, null)), + 19991 => array(array(array('_route' => '_381'), array('a', 'b', 'c'), null, null, null)), + 20044 => array(array(array('_route' => '_180'), array('a', 'b', 'c'), null, null, null)), + 20092 => array(array(array('_route' => '_339'), array('a', 'b', 'c'), null, null, null)), + 20142 => array(array(array('_route' => '_196'), array('a', 'b', 'c'), null, null, null)), + 20194 => array(array(array('_route' => '_198'), array('a', 'b', 'c'), null, null, null)), + 20242 => array(array(array('_route' => '_285'), array('a', 'b', 'c'), null, null, null)), + 20292 => array(array(array('_route' => '_349'), array('a', 'b', 'c'), null, null, null)), + 20344 => array(array(array('_route' => '_367'), array('a', 'b', 'c'), null, null, null)), + 20392 => array(array(array('_route' => '_384'), array('a', 'b', 'c'), null, null, null)), + 20440 => array(array(array('_route' => '_498'), array('a', 'b', 'c'), null, null, null)), + 20490 => array(array(array('_route' => '_369'), array('a', 'b', 'c'), null, null, null)), + 20542 => array(array(array('_route' => '_408'), array('a', 'b', 'c'), null, null, null)), + 20590 => array(array(array('_route' => '_413'), array('a', 'b', 'c'), null, null, null)), + 20652 => array(array(array('_route' => '_44'), array('a', 'b', 'c'), null, null, null)), + 20699 => array(array(array('_route' => '_256'), array('a', 'b', 'c'), null, null, null)), + 20748 => array(array(array('_route' => '_173'), array('a', 'b', 'c'), null, null, null)), + 20796 => array(array(array('_route' => '_266'), array('a', 'b', 'c'), null, null, null)), + 20844 => array(array(array('_route' => '_392'), array('a', 'b', 'c'), null, null, null)), + 20892 => array(array(array('_route' => '_430'), array('a', 'b', 'c'), null, null, null)), + 20940 => array(array(array('_route' => '_482'), array('a', 'b', 'c'), null, null, null)), + 20993 => array(array(array('_route' => '_49'), array('a', 'b', 'c'), null, null, null)), + 21041 => array(array(array('_route' => '_94'), array('a', 'b', 'c'), null, null, null)), + 21089 => array(array(array('_route' => '_407'), array('a', 'b', 'c'), null, null, null)), + 21142 => array(array(array('_route' => '_65'), array('a', 'b', 'c'), null, null, null)), + 21190 => array(array(array('_route' => '_181'), array('a', 'b', 'c'), null, null, null)), + 21238 => array(array(array('_route' => '_437'), array('a', 'b', 'c'), null, null, null)), + 21291 => array(array(array('_route' => '_76'), array('a', 'b', 'c'), null, null, null)), + 21339 => array(array(array('_route' => '_357'), array('a', 'b', 'c'), null, null, null)), + 21392 => array(array(array('_route' => '_80'), array('a', 'b', 'c'), null, null, null)), + 21440 => array(array(array('_route' => '_106'), array('a', 'b', 'c'), null, null, null)), + 21493 => array(array(array('_route' => '_83'), array('a', 'b', 'c'), null, null, null)), + 21541 => array(array(array('_route' => '_255'), array('a', 'b', 'c'), null, null, null)), + 21589 => array(array(array('_route' => '_330'), array('a', 'b', 'c'), null, null, null)), + 21642 => array(array(array('_route' => '_100'), array('a', 'b', 'c'), null, null, null)), + 21690 => array(array(array('_route' => '_396'), array('a', 'b', 'c'), null, null, null)), + 21738 => array(array(array('_route' => '_422'), array('a', 'b', 'c'), null, null, null)), + 21791 => array(array(array('_route' => '_149'), array('a', 'b', 'c'), null, null, null)), + 21839 => array(array(array('_route' => '_324'), array('a', 'b', 'c'), null, null, null)), + 21892 => array(array(array('_route' => '_164'), array('a', 'b', 'c'), null, null, null)), + 21940 => array(array(array('_route' => '_423'), array('a', 'b', 'c'), null, null, null)), + 21990 => array(array(array('_route' => '_241'), array('a', 'b', 'c'), null, null, null)), + 22042 => array(array(array('_route' => '_290'), array('a', 'b', 'c'), null, null, null)), + 22090 => array(array(array('_route' => '_335'), array('a', 'b', 'c'), null, null, null)), + 22140 => array(array(array('_route' => '_373'), array('a', 'b', 'c'), null, null, null)), + 22189 => array(array(array('_route' => '_375'), array('a', 'b', 'c'), null, null, null)), + 22238 => array(array(array('_route' => '_450'), array('a', 'b', 'c'), null, null, null)), + 22287 => array(array(array('_route' => '_464'), array('a', 'b', 'c'), null, null, null)), + 22345 => array(array(array('_route' => '_51'), array('a', 'b', 'c'), null, null, null)), + 22393 => array(array(array('_route' => '_77'), array('a', 'b', 'c'), null, null, null)), + 22441 => array(array(array('_route' => '_234'), array('a', 'b', 'c'), null, null, null)), + 22489 => array(array(array('_route' => '_394'), array('a', 'b', 'c'), null, null, null)), + 22542 => array(array(array('_route' => '_88'), array('a', 'b', 'c'), null, null, null)), + 22590 => array(array(array('_route' => '_155'), array('a', 'b', 'c'), null, null, null)), + 22643 => array(array(array('_route' => '_96'), array('a', 'b', 'c'), null, null, null)), + 22691 => array(array(array('_route' => '_298'), array('a', 'b', 'c'), null, null, null)), + 22739 => array(array(array('_route' => '_470'), array('a', 'b', 'c'), null, null, null)), + 22792 => array(array(array('_route' => '_109'), array('a', 'b', 'c'), null, null, null)), + 22840 => array(array(array('_route' => '_204'), array('a', 'b', 'c'), null, null, null)), + 22893 => array(array(array('_route' => '_115'), array('a', 'b', 'c'), null, null, null)), + 22941 => array(array(array('_route' => '_145'), array('a', 'b', 'c'), null, null, null)), + 22994 => array(array(array('_route' => '_123'), array('a', 'b', 'c'), null, null, null)), + 23042 => array(array(array('_route' => '_277'), array('a', 'b', 'c'), null, null, null)), + 23090 => array(array(array('_route' => '_473'), array('a', 'b', 'c'), null, null, null)), + 23143 => array(array(array('_route' => '_334'), array('a', 'b', 'c'), null, null, null)), + 23191 => array(array(array('_route' => '_493'), array('a', 'b', 'c'), null, null, null)), + 23244 => array(array(array('_route' => '_372'), array('a', 'b', 'c'), null, null, null)), + 23292 => array(array(array('_route' => '_432'), array('a', 'b', 'c'), null, null, null)), + 23340 => array(array(array('_route' => '_436'), array('a', 'b', 'c'), null, null, null)), + 23393 => array(array(array('_route' => '_425'), array('a', 'b', 'c'), null, null, null)), + 23441 => array(array(array('_route' => '_456'), array('a', 'b', 'c'), null, null, null)), + 23489 => array(array(array('_route' => '_474'), array('a', 'b', 'c'), null, null, null)), + 23539 => array(array(array('_route' => '_485'), array('a', 'b', 'c'), null, null, null)), + 23594 => array(array(array('_route' => '_91'), array('a', 'b', 'c'), null, null, null)), + 23646 => array(array(array('_route' => '_110'), array('a', 'b', 'c'), null, null, null)), + 23694 => array(array(array('_route' => '_114'), array('a', 'b', 'c'), null, null, null)), + 23750 => array(array(array('_route' => '_118'), array('a', 'b', 'c'), null, null, null)), + 23796 => array(array(array('_route' => '_475'), array('a', 'b', 'c'), null, null, null)), + 23844 => array(array(array('_route' => '_366'), array('a', 'b', 'c'), null, null, null)), + 23897 => array(array(array('_route' => '_167'), array('a', 'b', 'c'), null, null, null)), + 23945 => array(array(array('_route' => '_192'), array('a', 'b', 'c'), null, null, null)), + 23993 => array(array(array('_route' => '_342'), array('a', 'b', 'c'), null, null, null)), + 24046 => array(array(array('_route' => '_229'), array('a', 'b', 'c'), null, null, null)), + 24097 => array(array(array('_route' => '_235'), array('a', 'b', 'c'), null, null, null)), + 24144 => array(array(array('_route' => '_302'), array('a', 'b', 'c'), null, null, null)), + 24193 => array(array(array('_route' => '_322'), array('a', 'b', 'c'), null, null, null)), + 24246 => array(array(array('_route' => '_237'), array('a', 'b', 'c'), null, null, null)), + 24294 => array(array(array('_route' => '_293'), array('a', 'b', 'c'), null, null, null)), + 24347 => array(array(array('_route' => '_239'), array('a', 'b', 'c'), null, null, null)), + 24395 => array(array(array('_route' => '_444'), array('a', 'b', 'c'), null, null, null)), + 24443 => array(array(array('_route' => '_491'), array('a', 'b', 'c'), null, null, null)), + 24491 => array(array(array('_route' => '_492'), array('a', 'b', 'c'), null, null, null)), + 24541 => array(array(array('_route' => '_258'), array('a', 'b', 'c'), null, null, null)), + 24590 => array(array(array('_route' => '_317'), array('a', 'b', 'c'), null, null, null)), + 24639 => array(array(array('_route' => '_361'), array('a', 'b', 'c'), null, null, null)), + 24688 => array(array(array('_route' => '_391'), array('a', 'b', 'c'), null, null, null)), + 24737 => array(array(array('_route' => '_462'), array('a', 'b', 'c'), null, null, null)), + 24786 => array(array(array('_route' => '_476'), array('a', 'b', 'c'), null, null, null)), + 24837 => array(array(array('_route' => '_501'), array('a', 'b', 'c'), null, null, null)), + 24889 => array(array(array('_route' => '_514'), array('a', 'b', 'c'), null, null, null)), + 24937 => array(array(array('_route' => '_731'), array('a', 'b', 'c'), null, null, null)), + 24990 => array(array(array('_route' => '_522'), array('a', 'b', 'c'), null, null, null)), + 25038 => array(array(array('_route' => '_693'), array('a', 'b', 'c'), null, null, null)), + 25091 => array(array(array('_route' => '_537'), array('a', 'b', 'c'), null, null, null)), + 25139 => array(array(array('_route' => '_554'), array('a', 'b', 'c'), null, null, null)), + 25187 => array(array(array('_route' => '_645'), array('a', 'b', 'c'), null, null, null)), + 25235 => array(array(array('_route' => '_862'), array('a', 'b', 'c'), null, null, null)), + 25288 => array(array(array('_route' => '_539'), array('a', 'b', 'c'), null, null, null)), + 25336 => array(array(array('_route' => '_729'), array('a', 'b', 'c'), null, null, null)), + 25384 => array(array(array('_route' => '_897'), array('a', 'b', 'c'), null, null, null)), + 25437 => array(array(array('_route' => '_561'), array('a', 'b', 'c'), null, null, null)), + 25485 => array(array(array('_route' => '_615'), array('a', 'b', 'c'), null, null, null)), + 25533 => array(array(array('_route' => '_764'), array('a', 'b', 'c'), null, null, null)), + 25581 => array(array(array('_route' => '_948'), array('a', 'b', 'c'), null, null, null)), + 25634 => array(array(array('_route' => '_617'), array('a', 'b', 'c'), null, null, null)), + 25682 => array(array(array('_route' => '_671'), array('a', 'b', 'c'), null, null, null)), + 25735 => array(array(array('_route' => '_649'), array('a', 'b', 'c'), null, null, null)), + 25783 => array(array(array('_route' => '_651'), array('a', 'b', 'c'), null, null, null)), + 25831 => array(array(array('_route' => '_684'), array('a', 'b', 'c'), null, null, null)), + 25884 => array(array(array('_route' => '_669'), array('a', 'b', 'c'), null, null, null)), + 25932 => array(array(array('_route' => '_743'), array('a', 'b', 'c'), null, null, null)), + 25980 => array(array(array('_route' => '_962'), array('a', 'b', 'c'), null, null, null)), + 26033 => array(array(array('_route' => '_694'), array('a', 'b', 'c'), null, null, null)), + 26081 => array(array(array('_route' => '_985'), array('a', 'b', 'c'), null, null, null)), + 26134 => array(array(array('_route' => '_707'), array('a', 'b', 'c'), null, null, null)), + 26182 => array(array(array('_route' => '_718'), array('a', 'b', 'c'), null, null, null)), + 26235 => array(array(array('_route' => '_720'), array('a', 'b', 'c'), null, null, null)), + 26283 => array(array(array('_route' => '_745'), array('a', 'b', 'c'), null, null, null)), + 26333 => array(array(array('_route' => '_874'), array('a', 'b', 'c'), null, null, null)), + 26391 => array(array(array('_route' => '_502'), array('a', 'b', 'c'), null, null, null)), + 26439 => array(array(array('_route' => '_667'), array('a', 'b', 'c'), null, null, null)), + 26487 => array(array(array('_route' => '_911'), array('a', 'b', 'c'), null, null, null)), + 26535 => array(array(array('_route' => '_942'), array('a', 'b', 'c'), null, null, null)), + 26585 => array(array(array('_route' => '_504'), array('a', 'b', 'c'), null, null, null)), + 26637 => array(array(array('_route' => '_524'), array('a', 'b', 'c'), null, null, null)), + 26685 => array(array(array('_route' => '_732'), array('a', 'b', 'c'), null, null, null)), + 26738 => array(array(array('_route' => '_596'), array('a', 'b', 'c'), null, null, null)), + 26786 => array(array(array('_route' => '_601'), array('a', 'b', 'c'), null, null, null)), + 26839 => array(array(array('_route' => '_620'), array('a', 'b', 'c'), null, null, null)), + 26887 => array(array(array('_route' => '_631'), array('a', 'b', 'c'), null, null, null)), + 26935 => array(array(array('_route' => '_771'), array('a', 'b', 'c'), null, null, null)), + 26983 => array(array(array('_route' => '_937'), array('a', 'b', 'c'), null, null, null)), + 27031 => array(array(array('_route' => '_999'), array('a', 'b', 'c'), null, null, null)), + 27084 => array(array(array('_route' => '_657'), array('a', 'b', 'c'), null, null, null)), + 27132 => array(array(array('_route' => '_701'), array('a', 'b', 'c'), null, null, null)), + 27185 => array(array(array('_route' => '_662'), array('a', 'b', 'c'), null, null, null)), + 27233 => array(array(array('_route' => '_797'), array('a', 'b', 'c'), null, null, null)), + 27281 => array(array(array('_route' => '_924'), array('a', 'b', 'c'), null, null, null)), + 27334 => array(array(array('_route' => '_702'), array('a', 'b', 'c'), null, null, null)), + 27382 => array(array(array('_route' => '_750'), array('a', 'b', 'c'), null, null, null)), + 27435 => array(array(array('_route' => '_749'), array('a', 'b', 'c'), null, null, null)), + 27483 => array(array(array('_route' => '_837'), array('a', 'b', 'c'), null, null, null)), + 27533 => array(array(array('_route' => '_758'), array('a', 'b', 'c'), null, null, null)), + 27585 => array(array(array('_route' => '_810'), array('a', 'b', 'c'), null, null, null)), + 27633 => array(array(array('_route' => '_902'), array('a', 'b', 'c'), null, null, null)), + 27683 => array(array(array('_route' => '_845'), array('a', 'b', 'c'), null, null, null)), + 27741 => array(array(array('_route' => '_503'), array('a', 'b', 'c'), null, null, null)), + 27792 => array(array(array('_route' => '_756'), array('a', 'b', 'c'), null, null, null)), + 27839 => array(array(array('_route' => '_799'), array('a', 'b', 'c'), null, null, null)), + 27888 => array(array(array('_route' => '_769'), array('a', 'b', 'c'), null, null, null)), + 27936 => array(array(array('_route' => '_981'), array('a', 'b', 'c'), null, null, null)), + 27989 => array(array(array('_route' => '_507'), array('a', 'b', 'c'), null, null, null)), + 28037 => array(array(array('_route' => '_672'), array('a', 'b', 'c'), null, null, null)), + 28085 => array(array(array('_route' => '_790'), array('a', 'b', 'c'), null, null, null)), + 28138 => array(array(array('_route' => '_515'), array('a', 'b', 'c'), null, null, null)), + 28186 => array(array(array('_route' => '_523'), array('a', 'b', 'c'), null, null, null)), + 28234 => array(array(array('_route' => '_957'), array('a', 'b', 'c'), null, null, null)), + 28282 => array(array(array('_route' => '_995'), array('a', 'b', 'c'), null, null, null)), + 28335 => array(array(array('_route' => '_532'), array('a', 'b', 'c'), null, null, null)), + 28383 => array(array(array('_route' => '_642'), array('a', 'b', 'c'), null, null, null)), + 28433 => array(array(array('_route' => '_579'), array('a', 'b', 'c'), null, null, null)), + 28485 => array(array(array('_route' => '_625'), array('a', 'b', 'c'), null, null, null)), + 28533 => array(array(array('_route' => '_916'), array('a', 'b', 'c'), null, null, null)), + 28586 => array(array(array('_route' => '_633'), array('a', 'b', 'c'), null, null, null)), + 28634 => array(array(array('_route' => '_656'), array('a', 'b', 'c'), null, null, null)), + 28687 => array(array(array('_route' => '_658'), array('a', 'b', 'c'), null, null, null)), + 28735 => array(array(array('_route' => '_943'), array('a', 'b', 'c'), null, null, null)), + 28788 => array(array(array('_route' => '_664'), array('a', 'b', 'c'), null, null, null)), + 28836 => array(array(array('_route' => '_852'), array('a', 'b', 'c'), null, null, null)), + 28884 => array(array(array('_route' => '_870'), array('a', 'b', 'c'), null, null, null)), + 28937 => array(array(array('_route' => '_683'), array('a', 'b', 'c'), null, null, null)), + 28985 => array(array(array('_route' => '_915'), array('a', 'b', 'c'), null, null, null)), + 29038 => array(array(array('_route' => '_719'), array('a', 'b', 'c'), null, null, null)), + 29086 => array(array(array('_route' => '_859'), array('a', 'b', 'c'), null, null, null)), + 29134 => array(array(array('_route' => '_912'), array('a', 'b', 'c'), null, null, null)), + 29182 => array(array(array('_route' => '_978'), array('a', 'b', 'c'), null, null, null)), + 29235 => array(array(array('_route' => '_738'), array('a', 'b', 'c'), null, null, null)), + 29283 => array(array(array('_route' => '_883'), array('a', 'b', 'c'), null, null, null)), + 29333 => array(array(array('_route' => '_741'), array('a', 'b', 'c'), null, null, null)), + 29382 => array(array(array('_route' => '_760'), array('a', 'b', 'c'), null, null, null)), + 29431 => array(array(array('_route' => '_895'), array('a', 'b', 'c'), null, null, null)), + 29489 => array(array(array('_route' => '_505'), array('a', 'b', 'c'), null, null, null)), + 29537 => array(array(array('_route' => '_935'), array('a', 'b', 'c'), null, null, null)), + 29590 => array(array(array('_route' => '_509'), array('a', 'b', 'c'), null, null, null)), + 29638 => array(array(array('_route' => '_820'), array('a', 'b', 'c'), null, null, null)), + 29686 => array(array(array('_route' => '_910'), array('a', 'b', 'c'), null, null, null)), + 29739 => array(array(array('_route' => '_518'), array('a', 'b', 'c'), null, null, null)), + 29787 => array(array(array('_route' => '_618'), array('a', 'b', 'c'), null, null, null)), + 29840 => array(array(array('_route' => '_546'), array('a', 'b', 'c'), null, null, null)), + 29888 => array(array(array('_route' => '_740'), array('a', 'b', 'c'), null, null, null)), + 29936 => array(array(array('_route' => '_867'), array('a', 'b', 'c'), null, null, null)), + 29989 => array(array(array('_route' => '_572'), array('a', 'b', 'c'), null, null, null)), + 30037 => array(array(array('_route' => '_952'), array('a', 'b', 'c'), null, null, null)), + 30090 => array(array(array('_route' => '_573'), array('a', 'b', 'c'), null, null, null)), + 30138 => array(array(array('_route' => '_692'), array('a', 'b', 'c'), null, null, null)), + 30186 => array(array(array('_route' => '_700'), array('a', 'b', 'c'), null, null, null)), + 30234 => array(array(array('_route' => '_772'), array('a', 'b', 'c'), null, null, null)), + 30284 => array(array(array('_route' => '_653'), array('a', 'b', 'c'), null, null, null)), + 30336 => array(array(array('_route' => '_695'), array('a', 'b', 'c'), null, null, null)), + 30384 => array(array(array('_route' => '_748'), array('a', 'b', 'c'), null, null, null)), + 30437 => array(array(array('_route' => '_710'), array('a', 'b', 'c'), null, null, null)), + 30485 => array(array(array('_route' => '_716'), array('a', 'b', 'c'), null, null, null)), + 30533 => array(array(array('_route' => '_969'), array('a', 'b', 'c'), null, null, null)), + 30586 => array(array(array('_route' => '_734'), array('a', 'b', 'c'), null, null, null)), + 30634 => array(array(array('_route' => '_742'), array('a', 'b', 'c'), null, null, null)), + 30682 => array(array(array('_route' => '_844'), array('a', 'b', 'c'), null, null, null)), + 30735 => array(array(array('_route' => '_763'), array('a', 'b', 'c'), null, null, null)), + 30783 => array(array(array('_route' => '_965'), array('a', 'b', 'c'), null, null, null)), + 30836 => array(array(array('_route' => '_778'), array('a', 'b', 'c'), null, null, null)), + 30884 => array(array(array('_route' => '_813'), array('a', 'b', 'c'), null, null, null)), + 30932 => array(array(array('_route' => '_831'), array('a', 'b', 'c'), null, null, null)), + 30982 => array(array(array('_route' => '_955'), array('a', 'b', 'c'), null, null, null)), + 31031 => array(array(array('_route' => '_997'), array('a', 'b', 'c'), null, null, null)), + 31089 => array(array(array('_route' => '_506'), array('a', 'b', 'c'), null, null, null)), + 31137 => array(array(array('_route' => '_575'), array('a', 'b', 'c'), null, null, null)), + 31190 => array(array(array('_route' => '_516'), array('a', 'b', 'c'), null, null, null)), + 31238 => array(array(array('_route' => '_553'), array('a', 'b', 'c'), null, null, null)), + 31291 => array(array(array('_route' => '_528'), array('a', 'b', 'c'), null, null, null)), + 31339 => array(array(array('_route' => '_847'), array('a', 'b', 'c'), null, null, null)), + 31387 => array(array(array('_route' => '_904'), array('a', 'b', 'c'), null, null, null)), + 31440 => array(array(array('_route' => '_574'), array('a', 'b', 'c'), null, null, null)), + 31488 => array(array(array('_route' => '_818'), array('a', 'b', 'c'), null, null, null)), + 31538 => array(array(array('_route' => '_577'), array('a', 'b', 'c'), null, null, null)), + 31590 => array(array(array('_route' => '_584'), array('a', 'b', 'c'), null, null, null)), + 31638 => array(array(array('_route' => '_905'), array('a', 'b', 'c'), null, null, null)), + 31691 => array(array(array('_route' => '_612'), array('a', 'b', 'c'), null, null, null)), + 31739 => array(array(array('_route' => '_688'), array('a', 'b', 'c'), null, null, null)), + 31787 => array(array(array('_route' => '_854'), array('a', 'b', 'c'), null, null, null)), + 31840 => array(array(array('_route' => '_613'), array('a', 'b', 'c'), null, null, null)), + 31888 => array(array(array('_route' => '_767'), array('a', 'b', 'c'), null, null, null)), + 31941 => array(array(array('_route' => '_666'), array('a', 'b', 'c'), null, null, null)), + 31989 => array(array(array('_route' => '_759'), array('a', 'b', 'c'), null, null, null)), + 32037 => array(array(array('_route' => '_827'), array('a', 'b', 'c'), null, null, null)), + 32085 => array(array(array('_route' => '_840'), array('a', 'b', 'c'), null, null, null)), + 32138 => array(array(array('_route' => '_680'), array('a', 'b', 'c'), null, null, null)), + 32186 => array(array(array('_route' => '_784'), array('a', 'b', 'c'), null, null, null)), + 32234 => array(array(array('_route' => '_842'), array('a', 'b', 'c'), null, null, null)), + 32282 => array(array(array('_route' => '_860'), array('a', 'b', 'c'), null, null, null)), + 32332 => array(array(array('_route' => '_704'), array('a', 'b', 'c'), null, null, null)), + 32381 => array(array(array('_route' => '_727'), array('a', 'b', 'c'), null, null, null)), + 32430 => array(array(array('_route' => '_777'), array('a', 'b', 'c'), null, null, null)), + 32482 => array(array(array('_route' => '_838'), array('a', 'b', 'c'), null, null, null)), + 32530 => array(array(array('_route' => '_861'), array('a', 'b', 'c'), null, null, null)), + 32583 => array(array(array('_route' => '_849'), array('a', 'b', 'c'), null, null, null)), + 32631 => array(array(array('_route' => '_982'), array('a', 'b', 'c'), null, null, null)), + 32679 => array(array(array('_route' => '_986'), array('a', 'b', 'c'), null, null, null)), + 32741 => array(array(array('_route' => '_508'), array('a', 'b', 'c'), null, null, null)), + 32788 => array(array(array('_route' => '_517'), array('a', 'b', 'c'), null, null, null)), + 32837 => array(array(array('_route' => '_622'), array('a', 'b', 'c'), null, null, null)), + 32890 => array(array(array('_route' => '_513'), array('a', 'b', 'c'), null, null, null)), + 32938 => array(array(array('_route' => '_655'), array('a', 'b', 'c'), null, null, null)), + 32986 => array(array(array('_route' => '_843'), array('a', 'b', 'c'), null, null, null)), + 33034 => array(array(array('_route' => '_939'), array('a', 'b', 'c'), null, null, null)), + 33084 => array(array(array('_route' => '_529'), array('a', 'b', 'c'), null, null, null)), + 33136 => array(array(array('_route' => '_535'), array('a', 'b', 'c'), null, null, null)), + 33184 => array(array(array('_route' => '_685'), array('a', 'b', 'c'), null, null, null)), + 33240 => array(array(array('_route' => '_559'), array('a', 'b', 'c'), null, null, null)), + 33287 => array(array(array('_route' => '_661'), array('a', 'b', 'c'), null, null, null)), + 33336 => array(array(array('_route' => '_768'), array('a', 'b', 'c'), null, null, null)), + 33389 => array(array(array('_route' => '_589'), array('a', 'b', 'c'), null, null, null)), + 33437 => array(array(array('_route' => '_647'), array('a', 'b', 'c'), null, null, null)), + 33485 => array(array(array('_route' => '_652'), array('a', 'b', 'c'), null, null, null)), + 33533 => array(array(array('_route' => '_834'), array('a', 'b', 'c'), null, null, null)), + 33586 => array(array(array('_route' => '_591'), array('a', 'b', 'c'), null, null, null)), + 33634 => array(array(array('_route' => '_599'), array('a', 'b', 'c'), null, null, null)), + 33687 => array(array(array('_route' => '_787'), array('a', 'b', 'c'), null, null, null)), + 33734 => array(array(array('_route' => '_848'), array('a', 'b', 'c'), null, null, null)), + 33787 => array(array(array('_route' => '_796'), array('a', 'b', 'c'), null, null, null)), + 33835 => array(array(array('_route' => '_877'), array('a', 'b', 'c'), null, null, null)), + 33885 => array(array(array('_route' => '_809'), array('a', 'b', 'c'), null, null, null)), + 33934 => array(array(array('_route' => '_817'), array('a', 'b', 'c'), null, null, null)), + 33986 => array(array(array('_route' => '_819'), array('a', 'b', 'c'), null, null, null)), + 34034 => array(array(array('_route' => '_865'), array('a', 'b', 'c'), null, null, null)), + 34084 => array(array(array('_route' => '_919'), array('a', 'b', 'c'), null, null, null)), + 34133 => array(array(array('_route' => '_949'), array('a', 'b', 'c'), null, null, null)), + 34191 => array(array(array('_route' => '_510'), array('a', 'b', 'c'), null, null, null)), + 34239 => array(array(array('_route' => '_590'), array('a', 'b', 'c'), null, null, null)), + 34287 => array(array(array('_route' => '_597'), array('a', 'b', 'c'), null, null, null)), + 34335 => array(array(array('_route' => '_682'), array('a', 'b', 'c'), null, null, null)), + 34383 => array(array(array('_route' => '_723'), array('a', 'b', 'c'), null, null, null)), + 34436 => array(array(array('_route' => '_521'), array('a', 'b', 'c'), null, null, null)), + 34484 => array(array(array('_route' => '_594'), array('a', 'b', 'c'), null, null, null)), + 34532 => array(array(array('_route' => '_689'), array('a', 'b', 'c'), null, null, null)), + 34580 => array(array(array('_route' => '_713'), array('a', 'b', 'c'), null, null, null)), + 34628 => array(array(array('_route' => '_889'), array('a', 'b', 'c'), null, null, null)), + 34681 => array(array(array('_route' => '_531'), array('a', 'b', 'c'), null, null, null)), + 34729 => array(array(array('_route' => '_639'), array('a', 'b', 'c'), null, null, null)), + 34780 => array(array(array('_route' => '_646'), array('a', 'b', 'c'), null, null, null)), + 34827 => array(array(array('_route' => '_659'), array('a', 'b', 'c'), null, null, null)), + 34876 => array(array(array('_route' => '_959'), array('a', 'b', 'c'), null, null, null)), + 34929 => array(array(array('_route' => '_550'), array('a', 'b', 'c'), null, null, null)), + 34977 => array(array(array('_route' => '_833'), array('a', 'b', 'c'), null, null, null)), + 35025 => array(array(array('_route' => '_899'), array('a', 'b', 'c'), null, null, null)), + 35081 => array(array(array('_route' => '_580'), array('a', 'b', 'c'), null, null, null)), + 35128 => array(array(array('_route' => '_762'), array('a', 'b', 'c'), null, null, null)), + 35177 => array(array(array('_route' => '_896'), array('a', 'b', 'c'), null, null, null)), + 35230 => array(array(array('_route' => '_595'), array('a', 'b', 'c'), null, null, null)), + 35278 => array(array(array('_route' => '_933'), array('a', 'b', 'c'), null, null, null)), + 35328 => array(array(array('_route' => '_610'), array('a', 'b', 'c'), null, null, null)), + 35380 => array(array(array('_route' => '_629'), array('a', 'b', 'c'), null, null, null)), + 35428 => array(array(array('_route' => '_744'), array('a', 'b', 'c'), null, null, null)), + 35481 => array(array(array('_route' => '_674'), array('a', 'b', 'c'), null, null, null)), + 35529 => array(array(array('_route' => '_726'), array('a', 'b', 'c'), null, null, null)), + 35577 => array(array(array('_route' => '_929'), array('a', 'b', 'c'), null, null, null)), + 35627 => array(array(array('_route' => '_696'), array('a', 'b', 'c'), null, null, null)), + 35679 => array(array(array('_route' => '_841'), array('a', 'b', 'c'), null, null, null)), + 35727 => array(array(array('_route' => '_890'), array('a', 'b', 'c'), null, null, null)), + 35777 => array(array(array('_route' => '_885'), array('a', 'b', 'c'), null, null, null)), + 35826 => array(array(array('_route' => '_888'), array('a', 'b', 'c'), null, null, null)), + 35875 => array(array(array('_route' => '_996'), array('a', 'b', 'c'), null, null, null)), + 35933 => array(array(array('_route' => '_511'), array('a', 'b', 'c'), null, null, null)), + 35981 => array(array(array('_route' => '_576'), array('a', 'b', 'c'), null, null, null)), + 36029 => array(array(array('_route' => '_623'), array('a', 'b', 'c'), null, null, null)), + 36082 => array(array(array('_route' => '_560'), array('a', 'b', 'c'), null, null, null)), + 36129 => array(array(array('_route' => '_585'), array('a', 'b', 'c'), null, null, null)), + 36182 => array(array(array('_route' => '_570'), array('a', 'b', 'c'), null, null, null)), + 36230 => array(array(array('_route' => '_578'), array('a', 'b', 'c'), null, null, null)), + 36281 => array(array(array('_route' => '_780'), array('a', 'b', 'c'), null, null, null)), + 36328 => array(array(array('_route' => '_808'), array('a', 'b', 'c'), null, null, null)), + 36382 => array(array(array('_route' => '_593'), array('a', 'b', 'c'), null, null, null)), + 36430 => array(array(array('_route' => '_900'), array('a', 'b', 'c'), null, null, null)), + 36483 => array(array(array('_route' => '_632'), array('a', 'b', 'c'), null, null, null)), + 36531 => array(array(array('_route' => '_654'), array('a', 'b', 'c'), null, null, null)), + 36579 => array(array(array('_route' => '_721'), array('a', 'b', 'c'), null, null, null)), + 36627 => array(array(array('_route' => '_836'), array('a', 'b', 'c'), null, null, null)), + 36680 => array(array(array('_route' => '_637'), array('a', 'b', 'c'), null, null, null)), + 36728 => array(array(array('_route' => '_737'), array('a', 'b', 'c'), null, null, null)), + 36784 => array(array(array('_route' => '_699'), array('a', 'b', 'c'), null, null, null)), + 36831 => array(array(array('_route' => '_822'), array('a', 'b', 'c'), null, null, null)), + 36880 => array(array(array('_route' => '_853'), array('a', 'b', 'c'), null, null, null)), + 36933 => array(array(array('_route' => '_708'), array('a', 'b', 'c'), null, null, null)), + 36981 => array(array(array('_route' => '_871'), array('a', 'b', 'c'), null, null, null)), + 37034 => array(array(array('_route' => '_752'), array('a', 'b', 'c'), null, null, null)), + 37082 => array(array(array('_route' => '_989'), array('a', 'b', 'c'), null, null, null)), + 37132 => array(array(array('_route' => '_855'), array('a', 'b', 'c'), null, null, null)), + 37184 => array(array(array('_route' => '_858'), array('a', 'b', 'c'), null, null, null)), + 37232 => array(array(array('_route' => '_898'), array('a', 'b', 'c'), null, null, null)), + 37282 => array(array(array('_route' => '_903'), array('a', 'b', 'c'), null, null, null)), + 37331 => array(array(array('_route' => '_909'), array('a', 'b', 'c'), null, null, null)), + 37380 => array(array(array('_route' => '_950'), array('a', 'b', 'c'), null, null, null)), + 37441 => array(array(array('_route' => '_512'), array('a', 'b', 'c'), null, null, null)), + 37488 => array(array(array('_route' => '_691'), array('a', 'b', 'c'), null, null, null)), + 37537 => array(array(array('_route' => '_686'), array('a', 'b', 'c'), null, null, null)), + 37587 => array(array(array('_route' => '_527'), array('a', 'b', 'c'), null, null, null)), + 37639 => array(array(array('_route' => '_541'), array('a', 'b', 'c'), null, null, null)), + 37687 => array(array(array('_route' => '_956'), array('a', 'b', 'c'), null, null, null)), + 37740 => array(array(array('_route' => '_555'), array('a', 'b', 'c'), null, null, null)), + 37788 => array(array(array('_route' => '_681'), array('a', 'b', 'c'), null, null, null)), + 37841 => array(array(array('_route' => '_556'), array('a', 'b', 'c'), null, null, null)), + 37889 => array(array(array('_route' => '_802'), array('a', 'b', 'c'), null, null, null)), + 37939 => array(array(array('_route' => '_558'), array('a', 'b', 'c'), null, null, null)), + 37991 => array(array(array('_route' => '_564'), array('a', 'b', 'c'), null, null, null)), + 38039 => array(array(array('_route' => '_670'), array('a', 'b', 'c'), null, null, null)), + 38087 => array(array(array('_route' => '_884'), array('a', 'b', 'c'), null, null, null)), + 38140 => array(array(array('_route' => '_627'), array('a', 'b', 'c'), null, null, null)), + 38187 => array(array(array('_route' => '_746'), array('a', 'b', 'c'), null, null, null)), + 38240 => array(array(array('_route' => '_668'), array('a', 'b', 'c'), null, null, null)), + 38291 => array(array(array('_route' => '_712'), array('a', 'b', 'c'), null, null, null)), + 38338 => array(array(array('_route' => '_863'), array('a', 'b', 'c'), null, null, null)), + 38387 => array(array(array('_route' => '_801'), array('a', 'b', 'c'), null, null, null)), + 38440 => array(array(array('_route' => '_709'), array('a', 'b', 'c'), null, null, null)), + 38488 => array(array(array('_route' => '_850'), array('a', 'b', 'c'), null, null, null)), + 38536 => array(array(array('_route' => '_918'), array('a', 'b', 'c'), null, null, null)), + 38586 => array(array(array('_route' => '_803'), array('a', 'b', 'c'), null, null, null)), + 38638 => array(array(array('_route' => '_864'), array('a', 'b', 'c'), null, null, null)), + 38686 => array(array(array('_route' => '_880'), array('a', 'b', 'c'), null, null, null)), + 38734 => array(array(array('_route' => '_927'), array('a', 'b', 'c'), null, null, null)), + 38787 => array(array(array('_route' => '_930'), array('a', 'b', 'c'), null, null, null)), + 38835 => array(array(array('_route' => '_951'), array('a', 'b', 'c'), null, null, null)), + 38883 => array(array(array('_route' => '_963'), array('a', 'b', 'c'), null, null, null)), + 38942 => array(array(array('_route' => '_519'), array('a', 'b', 'c'), null, null, null)), + 38990 => array(array(array('_route' => '_823'), array('a', 'b', 'c'), null, null, null)), + 39038 => array(array(array('_route' => '_954'), array('a', 'b', 'c'), null, null, null)), + 39091 => array(array(array('_route' => '_525'), array('a', 'b', 'c'), null, null, null)), + 39139 => array(array(array('_route' => '_991'), array('a', 'b', 'c'), null, null, null)), + 39189 => array(array(array('_route' => '_536'), array('a', 'b', 'c'), null, null, null)), + 39241 => array(array(array('_route' => '_545'), array('a', 'b', 'c'), null, null, null)), + 39289 => array(array(array('_route' => '_944'), array('a', 'b', 'c'), null, null, null)), + 39342 => array(array(array('_route' => '_557'), array('a', 'b', 'c'), null, null, null)), + 39390 => array(array(array('_route' => '_783'), array('a', 'b', 'c'), null, null, null)), + 39438 => array(array(array('_route' => '_807'), array('a', 'b', 'c'), null, null, null)), + 39491 => array(array(array('_route' => '_586'), array('a', 'b', 'c'), null, null, null)), + 39539 => array(array(array('_route' => '_711'), array('a', 'b', 'c'), null, null, null)), + 39592 => array(array(array('_route' => '_598'), array('a', 'b', 'c'), null, null, null)), + 39640 => array(array(array('_route' => '_635'), array('a', 'b', 'c'), null, null, null)), + 39688 => array(array(array('_route' => '_983'), array('a', 'b', 'c'), null, null, null)), + 39741 => array(array(array('_route' => '_634'), array('a', 'b', 'c'), null, null, null)), + 39789 => array(array(array('_route' => '_641'), array('a', 'b', 'c'), null, null, null)), + 39840 => array(array(array('_route' => '_779'), array('a', 'b', 'c'), null, null, null)), + 39887 => array(array(array('_route' => '_876'), array('a', 'b', 'c'), null, null, null)), + 39936 => array(array(array('_route' => '_811'), array('a', 'b', 'c'), null, null, null)), + 39984 => array(array(array('_route' => '_824'), array('a', 'b', 'c'), null, null, null)), + 40037 => array(array(array('_route' => '_660'), array('a', 'b', 'c'), null, null, null)), + 40085 => array(array(array('_route' => '_789'), array('a', 'b', 'c'), null, null, null)), + 40138 => array(array(array('_route' => '_733'), array('a', 'b', 'c'), null, null, null)), + 40186 => array(array(array('_route' => '_735'), array('a', 'b', 'c'), null, null, null)), + 40234 => array(array(array('_route' => '_882'), array('a', 'b', 'c'), null, null, null)), + 40282 => array(array(array('_route' => '_967'), array('a', 'b', 'c'), null, null, null)), + 40332 => array(array(array('_route' => '_736'), array('a', 'b', 'c'), null, null, null)), + 40381 => array(array(array('_route' => '_753'), array('a', 'b', 'c'), null, null, null)), + 40430 => array(array(array('_route' => '_786'), array('a', 'b', 'c'), null, null, null)), + 40479 => array(array(array('_route' => '_907'), array('a', 'b', 'c'), null, null, null)), + 40528 => array(array(array('_route' => '_920'), array('a', 'b', 'c'), null, null, null)), + 40577 => array(array(array('_route' => '_971'), array('a', 'b', 'c'), null, null, null)), + 40635 => array(array(array('_route' => '_520'), array('a', 'b', 'c'), null, null, null)), + 40683 => array(array(array('_route' => '_891'), array('a', 'b', 'c'), null, null, null)), + 40739 => array(array(array('_route' => '_534'), array('a', 'b', 'c'), null, null, null)), + 40785 => array(array(array('_route' => '_602'), array('a', 'b', 'c'), null, null, null)), + 40834 => array(array(array('_route' => '_605'), array('a', 'b', 'c'), null, null, null)), + 40882 => array(array(array('_route' => '_979'), array('a', 'b', 'c'), null, null, null)), + 40932 => array(array(array('_route' => '_547'), array('a', 'b', 'c'), null, null, null)), + 40987 => array(array(array('_route' => '_549'), array('a', 'b', 'c'), null, null, null)), + 41034 => array(array(array('_route' => '_755'), array('a', 'b', 'c'), null, null, null)), + 41083 => array(array(array('_route' => '_922'), array('a', 'b', 'c'), null, null, null)), + 41131 => array(array(array('_route' => '_977'), array('a', 'b', 'c'), null, null, null)), + 41184 => array(array(array('_route' => '_565'), array('a', 'b', 'c'), null, null, null)), + 41232 => array(array(array('_route' => '_926'), array('a', 'b', 'c'), null, null, null)), + 41282 => array(array(array('_route' => '_571'), array('a', 'b', 'c'), null, null, null)), + 41331 => array(array(array('_route' => '_581'), array('a', 'b', 'c'), null, null, null)), + 41380 => array(array(array('_route' => '_619'), array('a', 'b', 'c'), null, null, null)), + 41429 => array(array(array('_route' => '_636'), array('a', 'b', 'c'), null, null, null)), + 41481 => array(array(array('_route' => '_679'), array('a', 'b', 'c'), null, null, null)), + 41529 => array(array(array('_route' => '_866'), array('a', 'b', 'c'), null, null, null)), + 41577 => array(array(array('_route' => '_973'), array('a', 'b', 'c'), null, null, null)), + 41630 => array(array(array('_route' => '_690'), array('a', 'b', 'c'), null, null, null)), + 41678 => array(array(array('_route' => '_775'), array('a', 'b', 'c'), null, null, null)), + 41731 => array(array(array('_route' => '_722'), array('a', 'b', 'c'), null, null, null)), + 41779 => array(array(array('_route' => '_906'), array('a', 'b', 'c'), null, null, null)), + 41827 => array(array(array('_route' => '_946'), array('a', 'b', 'c'), null, null, null)), + 41877 => array(array(array('_route' => '_788'), array('a', 'b', 'c'), null, null, null)), + 41929 => array(array(array('_route' => '_828'), array('a', 'b', 'c'), null, null, null)), + 41977 => array(array(array('_route' => '_892'), array('a', 'b', 'c'), null, null, null)), + 42025 => array(array(array('_route' => '_972'), array('a', 'b', 'c'), null, null, null)), + 42075 => array(array(array('_route' => '_829'), array('a', 'b', 'c'), null, null, null)), + 42127 => array(array(array('_route' => '_923'), array('a', 'b', 'c'), null, null, null)), + 42175 => array(array(array('_route' => '_947'), array('a', 'b', 'c'), null, null, null)), + 42234 => array(array(array('_route' => '_526'), array('a', 'b', 'c'), null, null, null)), + 42282 => array(array(array('_route' => '_614'), array('a', 'b', 'c'), null, null, null)), + 42330 => array(array(array('_route' => '_621'), array('a', 'b', 'c'), null, null, null)), + 42383 => array(array(array('_route' => '_543'), array('a', 'b', 'c'), null, null, null)), + 42431 => array(array(array('_route' => '_812'), array('a', 'b', 'c'), null, null, null)), + 42487 => array(array(array('_route' => '_548'), array('a', 'b', 'c'), null, null, null)), + 42534 => array(array(array('_route' => '_747'), array('a', 'b', 'c'), null, null, null)), + 42583 => array(array(array('_route' => '_715'), array('a', 'b', 'c'), null, null, null)), + 42631 => array(array(array('_route' => '_940'), array('a', 'b', 'c'), null, null, null)), + 42684 => array(array(array('_route' => '_563'), array('a', 'b', 'c'), null, null, null)), + 42732 => array(array(array('_route' => '_611'), array('a', 'b', 'c'), null, null, null)), + 42780 => array(array(array('_route' => '_830'), array('a', 'b', 'c'), null, null, null)), + 42833 => array(array(array('_route' => '_569'), array('a', 'b', 'c'), null, null, null)), + 42881 => array(array(array('_route' => '_908'), array('a', 'b', 'c'), null, null, null)), + 42929 => array(array(array('_route' => '_913'), array('a', 'b', 'c'), null, null, null)), + 42982 => array(array(array('_route' => '_644'), array('a', 'b', 'c'), null, null, null)), + 43030 => array(array(array('_route' => '_776'), array('a', 'b', 'c'), null, null, null)), + 43078 => array(array(array('_route' => '_856'), array('a', 'b', 'c'), null, null, null)), + 43131 => array(array(array('_route' => '_650'), array('a', 'b', 'c'), null, null, null)), + 43179 => array(array(array('_route' => '_761'), array('a', 'b', 'c'), null, null, null)), + 43232 => array(array(array('_route' => '_663'), array('a', 'b', 'c'), null, null, null)), + 43280 => array(array(array('_route' => '_754'), array('a', 'b', 'c'), null, null, null)), + 43333 => array(array(array('_route' => '_665'), array('a', 'b', 'c'), null, null, null)), + 43381 => array(array(array('_route' => '_805'), array('a', 'b', 'c'), null, null, null)), + 43429 => array(array(array('_route' => '_846'), array('a', 'b', 'c'), null, null, null)), + 43477 => array(array(array('_route' => '_857'), array('a', 'b', 'c'), null, null, null)), + 43530 => array(array(array('_route' => '_675'), array('a', 'b', 'c'), null, null, null)), + 43578 => array(array(array('_route' => '_839'), array('a', 'b', 'c'), null, null, null)), + 43626 => array(array(array('_route' => '_968'), array('a', 'b', 'c'), null, null, null)), + 43676 => array(array(array('_route' => '_697'), array('a', 'b', 'c'), null, null, null)), + 43728 => array(array(array('_route' => '_725'), array('a', 'b', 'c'), null, null, null)), + 43776 => array(array(array('_route' => '_794'), array('a', 'b', 'c'), null, null, null)), + 43829 => array(array(array('_route' => '_773'), array('a', 'b', 'c'), null, null, null)), + 43877 => array(array(array('_route' => '_992'), array('a', 'b', 'c'), null, null, null)), + 43930 => array(array(array('_route' => '_901'), array('a', 'b', 'c'), null, null, null)), + 43978 => array(array(array('_route' => '_970'), array('a', 'b', 'c'), null, null, null)), + 44028 => array(array(array('_route' => '_964'), array('a', 'b', 'c'), null, null, null)), + 44086 => array(array(array('_route' => '_530'), array('a', 'b', 'c'), null, null, null)), + 44134 => array(array(array('_route' => '_703'), array('a', 'b', 'c'), null, null, null)), + 44187 => array(array(array('_route' => '_533'), array('a', 'b', 'c'), null, null, null)), + 44235 => array(array(array('_route' => '_739'), array('a', 'b', 'c'), null, null, null)), + 44283 => array(array(array('_route' => '_791'), array('a', 'b', 'c'), null, null, null)), + 44331 => array(array(array('_route' => '_987'), array('a', 'b', 'c'), null, null, null)), + 44384 => array(array(array('_route' => '_566'), array('a', 'b', 'c'), null, null, null)), + 44432 => array(array(array('_route' => '_592'), array('a', 'b', 'c'), null, null, null)), + 44488 => array(array(array('_route' => '_568'), array('a', 'b', 'c'), null, null, null)), + 44534 => array(array(array('_route' => '_868'), array('a', 'b', 'c'), null, null, null)), + 44583 => array(array(array('_route' => '_878'), array('a', 'b', 'c'), null, null, null)), + 44636 => array(array(array('_route' => '_588'), array('a', 'b', 'c'), null, null, null)), + 44684 => array(array(array('_route' => '_793'), array('a', 'b', 'c'), null, null, null)), + 44732 => array(array(array('_route' => '_917'), array('a', 'b', 'c'), null, null, null)), + 44785 => array(array(array('_route' => '_600'), array('a', 'b', 'c'), null, null, null)), + 44833 => array(array(array('_route' => '_728'), array('a', 'b', 'c'), null, null, null)), + 44886 => array(array(array('_route' => '_603'), array('a', 'b', 'c'), null, null, null)), + 44934 => array(array(array('_route' => '_765'), array('a', 'b', 'c'), null, null, null)), + 44987 => array(array(array('_route' => '_607'), array('a', 'b', 'c'), null, null, null)), + 45035 => array(array(array('_route' => '_676'), array('a', 'b', 'c'), null, null, null)), + 45083 => array(array(array('_route' => '_804'), array('a', 'b', 'c'), null, null, null)), + 45136 => array(array(array('_route' => '_609'), array('a', 'b', 'c'), null, null, null)), + 45184 => array(array(array('_route' => '_961'), array('a', 'b', 'c'), null, null, null)), + 45232 => array(array(array('_route' => '_980'), array('a', 'b', 'c'), null, null, null)), + 45282 => array(array(array('_route' => '_714'), array('a', 'b', 'c'), null, null, null)), + 45334 => array(array(array('_route' => '_730'), array('a', 'b', 'c'), null, null, null)), + 45382 => array(array(array('_route' => '_806'), array('a', 'b', 'c'), null, null, null)), + 45430 => array(array(array('_route' => '_825'), array('a', 'b', 'c'), null, null, null)), + 45478 => array(array(array('_route' => '_879'), array('a', 'b', 'c'), null, null, null)), + 45526 => array(array(array('_route' => '_893'), array('a', 'b', 'c'), null, null, null)), + 45576 => array(array(array('_route' => '_928'), array('a', 'b', 'c'), null, null, null)), + 45628 => array(array(array('_route' => '_932'), array('a', 'b', 'c'), null, null, null)), + 45676 => array(array(array('_route' => '_958'), array('a', 'b', 'c'), null, null, null)), + 45726 => array(array(array('_route' => '_984'), array('a', 'b', 'c'), null, null, null)), + 45784 => array(array(array('_route' => '_538'), array('a', 'b', 'c'), null, null, null)), + 45832 => array(array(array('_route' => '_993'), array('a', 'b', 'c'), null, null, null)), + 45882 => array(array(array('_route' => '_542'), array('a', 'b', 'c'), null, null, null)), + 45934 => array(array(array('_route' => '_551'), array('a', 'b', 'c'), null, null, null)), + 45982 => array(array(array('_route' => '_687'), array('a', 'b', 'c'), null, null, null)), + 46030 => array(array(array('_route' => '_724'), array('a', 'b', 'c'), null, null, null)), + 46078 => array(array(array('_route' => '_925'), array('a', 'b', 'c'), null, null, null)), + 46131 => array(array(array('_route' => '_587'), array('a', 'b', 'c'), null, null, null)), + 46179 => array(array(array('_route' => '_914'), array('a', 'b', 'c'), null, null, null)), + 46229 => array(array(array('_route' => '_616'), array('a', 'b', 'c'), null, null, null)), + 46284 => array(array(array('_route' => '_677'), array('a', 'b', 'c'), null, null, null)), + 46331 => array(array(array('_route' => '_815'), array('a', 'b', 'c'), null, null, null)), + 46380 => array(array(array('_route' => '_781'), array('a', 'b', 'c'), null, null, null)), + 46430 => array(array(array('_route' => '_717'), array('a', 'b', 'c'), null, null, null)), + 46482 => array(array(array('_route' => '_782'), array('a', 'b', 'c'), null, null, null)), + 46530 => array(array(array('_route' => '_832'), array('a', 'b', 'c'), null, null, null)), + 46583 => array(array(array('_route' => '_795'), array('a', 'b', 'c'), null, null, null)), + 46631 => array(array(array('_route' => '_887'), array('a', 'b', 'c'), null, null, null)), + 46681 => array(array(array('_route' => '_800'), array('a', 'b', 'c'), null, null, null)), + 46730 => array(array(array('_route' => '_826'), array('a', 'b', 'c'), null, null, null)), + 46779 => array(array(array('_route' => '_881'), array('a', 'b', 'c'), null, null, null)), + 46828 => array(array(array('_route' => '_886'), array('a', 'b', 'c'), null, null, null)), + 46877 => array(array(array('_route' => '_938'), array('a', 'b', 'c'), null, null, null)), + 46935 => array(array(array('_route' => '_540'), array('a', 'b', 'c'), null, null, null)), + 46983 => array(array(array('_route' => '_643'), array('a', 'b', 'c'), null, null, null)), + 47033 => array(array(array('_route' => '_544'), array('a', 'b', 'c'), null, null, null)), + 47082 => array(array(array('_route' => '_552'), array('a', 'b', 'c'), null, null, null)), + 47134 => array(array(array('_route' => '_567'), array('a', 'b', 'c'), null, null, null)), + 47182 => array(array(array('_route' => '_608'), array('a', 'b', 'c'), null, null, null)), + 47230 => array(array(array('_route' => '_698'), array('a', 'b', 'c'), null, null, null)), + 47278 => array(array(array('_route' => '_988'), array('a', 'b', 'c'), null, null, null)), + 47331 => array(array(array('_route' => '_583'), array('a', 'b', 'c'), null, null, null)), + 47379 => array(array(array('_route' => '_998'), array('a', 'b', 'c'), null, null, null)), + 47432 => array(array(array('_route' => '_604'), array('a', 'b', 'c'), null, null, null)), + 47480 => array(array(array('_route' => '_630'), array('a', 'b', 'c'), null, null, null)), + 47528 => array(array(array('_route' => '_706'), array('a', 'b', 'c'), null, null, null)), + 47576 => array(array(array('_route' => '_976'), array('a', 'b', 'c'), null, null, null)), + 47629 => array(array(array('_route' => '_673'), array('a', 'b', 'c'), null, null, null)), + 47677 => array(array(array('_route' => '_678'), array('a', 'b', 'c'), null, null, null)), + 47725 => array(array(array('_route' => '_931'), array('a', 'b', 'c'), null, null, null)), + 47775 => array(array(array('_route' => '_751'), array('a', 'b', 'c'), null, null, null)), + 47824 => array(array(array('_route' => '_766'), array('a', 'b', 'c'), null, null, null)), + 47876 => array(array(array('_route' => '_792'), array('a', 'b', 'c'), null, null, null)), + 47924 => array(array(array('_route' => '_814'), array('a', 'b', 'c'), null, null, null)), + 47974 => array(array(array('_route' => '_798'), array('a', 'b', 'c'), null, null, null)), + 48026 => array(array(array('_route' => '_851'), array('a', 'b', 'c'), null, null, null)), + 48074 => array(array(array('_route' => '_941'), array('a', 'b', 'c'), null, null, null)), + 48122 => array(array(array('_route' => '_953'), array('a', 'b', 'c'), null, null, null)), + 48170 => array(array(array('_route' => '_975'), array('a', 'b', 'c'), null, null, null)), + 48220 => array(array(array('_route' => '_873'), array('a', 'b', 'c'), null, null, null)), + 48269 => array(array(array('_route' => '_936'), array('a', 'b', 'c'), null, null, null)), + 48318 => array(array(array('_route' => '_994'), array('a', 'b', 'c'), null, null, null)), + 48376 => array(array(array('_route' => '_562'), array('a', 'b', 'c'), null, null, null)), + 48424 => array(array(array('_route' => '_770'), array('a', 'b', 'c'), null, null, null)), + 48475 => array(array(array('_route' => '_774'), array('a', 'b', 'c'), null, null, null)), + 48522 => array(array(array('_route' => '_966'), array('a', 'b', 'c'), null, null, null)), + 48573 => array(array(array('_route' => '_582'), array('a', 'b', 'c'), null, null, null)), + 48625 => array(array(array('_route' => '_606'), array('a', 'b', 'c'), null, null, null)), + 48673 => array(array(array('_route' => '_648'), array('a', 'b', 'c'), null, null, null)), + 48723 => array(array(array('_route' => '_624'), array('a', 'b', 'c'), null, null, null)), + 48775 => array(array(array('_route' => '_626'), array('a', 'b', 'c'), null, null, null)), + 48823 => array(array(array('_route' => '_821'), array('a', 'b', 'c'), null, null, null)), + 48873 => array(array(array('_route' => '_628'), array('a', 'b', 'c'), null, null, null)), + 48922 => array(array(array('_route' => '_638'), array('a', 'b', 'c'), null, null, null)), + 48974 => array(array(array('_route' => '_640'), array('a', 'b', 'c'), null, null, null)), + 49022 => array(array(array('_route' => '_990'), array('a', 'b', 'c'), null, null, null)), + 49072 => array(array(array('_route' => '_705'), array('a', 'b', 'c'), null, null, null)), + 49121 => array(array(array('_route' => '_757'), array('a', 'b', 'c'), null, null, null)), + 49176 => array(array(array('_route' => '_785'), array('a', 'b', 'c'), null, null, null)), + 49223 => array(array(array('_route' => '_875'), array('a', 'b', 'c'), null, null, null)), + 49270 => array(array(array('_route' => '_894'), array('a', 'b', 'c'), null, null, null)), + 49319 => array(array(array('_route' => '_945'), array('a', 'b', 'c'), null, null, null)), + 49375 => array(array(array('_route' => '_816'), array('a', 'b', 'c'), null, null, null)), + 49422 => array(array(array('_route' => '_872'), array('a', 'b', 'c'), null, null, null)), + 49471 => array(array(array('_route' => '_921'), array('a', 'b', 'c'), null, null, null)), + 49519 => array(array(array('_route' => '_960'), array('a', 'b', 'c'), null, null, null)), + 49567 => array(array(array('_route' => '_974'), array('a', 'b', 'c'), null, null, null)), + 49620 => array(array(array('_route' => '_835'), array('a', 'b', 'c'), null, null, null)), + 49668 => array(array(array('_route' => '_934'), array('a', 'b', 'c'), null, null, null)), + 49718 => array(array(array('_route' => '_869'), array('a', 'b', 'c'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher11.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher11.php index 173cc15279f2..f1d9f5bbdae9 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher11.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher11.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($pathinfo) - { - $allow = $allowSchemes = array(); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $ret; - } - if ($allow) { - throw new MethodNotAllowedException(array_keys($allow)); - } - if (!in_array($this->context->getMethod(), array('HEAD', 'GET'), true)) { - // no-op - } elseif ($allowSchemes) { - redirect_scheme: - $scheme = $this->context->getScheme(); - $this->context->setScheme(key($allowSchemes)); - try { - if ($ret = $this->doMatch($pathinfo)) { - return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret; - } - } finally { - $this->context->setScheme($scheme); - } - } elseif ('/' !== $pathinfo) { - $pathinfo = '/' !== $pathinfo[-1] ? $pathinfo.'/' : substr($pathinfo, 0, -1); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $this->redirect($pathinfo, $ret['_route']) + $ret; - } - if ($allowSchemes) { - goto redirect_scheme; - } - } - - throw new ResourceNotFoundException(); - } - - private function doMatch(string $rawPathinfo, array &$allow = array(), array &$allowSchemes = array()): ?array - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->regexpList = array( 0 => '{^(?' .'|/(en|fr)/(?' .'|admin/post/(?' @@ -90,62 +42,21 @@ private function doMatch(string $rawPathinfo, array &$allow = array(), array &$a .'|/(en|fr)?(*:256)' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 33 => array(array('_route' => 'a', '_locale' => 'en'), array('_locale'), null, null), - 43 => array(array('_route' => 'b', '_locale' => 'en'), array('_locale'), null, null), - 55 => array(array('_route' => 'c', '_locale' => 'en'), array('_locale', 'id'), null, null), - 72 => array(array('_route' => 'd', '_locale' => 'en'), array('_locale', 'id'), null, null), - 91 => array(array('_route' => 'e', '_locale' => 'en'), array('_locale', 'id'), null, null), - 107 => array(array('_route' => 'f', '_locale' => 'en'), array('_locale'), null, null), - 123 => array(array('_route' => 'g', '_locale' => 'en'), array('_locale'), null, null), - 147 => array(array('_route' => 'h', '_locale' => 'en'), array('_locale', 'page'), null, null), - 168 => array(array('_route' => 'i', '_locale' => 'en'), array('_locale', 'page'), null, null), - 195 => array(array('_route' => 'j', '_locale' => 'en'), array('_locale', 'id'), null, null), - 209 => array(array('_route' => 'k', '_locale' => 'en'), array('_locale'), null, null), - 226 => array(array('_route' => 'l', '_locale' => 'en'), array('_locale'), null, null), - 237 => array(array('_route' => 'm', '_locale' => 'en'), array('_locale'), null, null), - 256 => array(array('_route' => 'n', '_locale' => 'en'), array('_locale'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (256 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - return null; + $this->dynamicRoutes = array( + 33 => array(array(array('_route' => 'a', '_locale' => 'en'), array('_locale'), null, null, null)), + 43 => array(array(array('_route' => 'b', '_locale' => 'en'), array('_locale'), null, null, null)), + 55 => array(array(array('_route' => 'c', '_locale' => 'en'), array('_locale', 'id'), null, null, null)), + 72 => array(array(array('_route' => 'd', '_locale' => 'en'), array('_locale', 'id'), null, null, null)), + 91 => array(array(array('_route' => 'e', '_locale' => 'en'), array('_locale', 'id'), null, null, null)), + 107 => array(array(array('_route' => 'f', '_locale' => 'en'), array('_locale'), null, null, null)), + 123 => array(array(array('_route' => 'g', '_locale' => 'en'), array('_locale'), null, null, null)), + 147 => array(array(array('_route' => 'h', '_locale' => 'en'), array('_locale', 'page'), null, null, null)), + 168 => array(array(array('_route' => 'i', '_locale' => 'en'), array('_locale', 'page'), null, null, null)), + 195 => array(array(array('_route' => 'j', '_locale' => 'en'), array('_locale', 'id'), null, null, null)), + 209 => array(array(array('_route' => 'k', '_locale' => 'en'), array('_locale'), null, null, null)), + 226 => array(array(array('_route' => 'l', '_locale' => 'en'), array('_locale'), null, null, null)), + 237 => array(array(array('_route' => 'm', '_locale' => 'en'), array('_locale'), null, null, null)), + 256 => array(array(array('_route' => 'n', '_locale' => 'en'), array('_locale'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher12.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher12.php index eba4c8ace32a..2c6b5753846e 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher12.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher12.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->regexpList = array( 0 => '{^(?' .'|/abc([^/]++)/(?' .'|1(?' @@ -47,54 +34,13 @@ public function match($rawPathinfo) .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 27 => array(array('_route' => 'r1'), array('foo'), null, null), - 38 => array(array('_route' => 'r10'), array('foo'), null, null), - 46 => array(array('_route' => 'r100'), array('foo'), null, null), - 59 => array(array('_route' => 'r2'), array('foo'), null, null), - 70 => array(array('_route' => 'r20'), array('foo'), null, null), - 78 => array(array('_route' => 'r200'), array('foo'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (78 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->dynamicRoutes = array( + 27 => array(array(array('_route' => 'r1'), array('foo'), null, null, null)), + 38 => array(array(array('_route' => 'r10'), array('foo'), null, null, null)), + 46 => array(array(array('_route' => 'r100'), array('foo'), null, null, null)), + 59 => array(array(array('_route' => 'r2'), array('foo'), null, null, null)), + 70 => array(array(array('_route' => 'r20'), array('foo'), null, null, null)), + 78 => array(array(array('_route' => 'r200'), array('foo'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher13.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher13.php index 5cda7753dac6..ee92fb41a3d8 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher13.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher13.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - $host = strtolower($context->getHost()); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - $matchedPathinfo = $host.'.'.$pathinfo; - $regexList = array( + $this->matchHost = true; + $this->regexpList = array( 0 => '{^(?' .'|(?i:([^\\.]++)\\.exampple\\.com)\\.(?' .'|/abc([^/]++)(?' @@ -37,33 +24,11 @@ public function match($rawPathinfo) .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - case 56: - $matches = array('foo' => $matches[1] ?? null, 'foo' => $matches[2] ?? null); - - // r1 - return $this->mergeDefaults(array('_route' => 'r1') + $matches, array()); - - // r2 - return $this->mergeDefaults(array('_route' => 'r2') + $matches, array()); - - break; - } - - if (56 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->dynamicRoutes = array( + 56 => array( + array(array('_route' => 'r1'), array('foo', 'foo'), null, null, null), + array(array('_route' => 'r2'), array('foo', 'foo'), null, null, null), + ), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher2.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher2.php index 5aec5db0179a..469b146ac31b 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher2.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher2.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($pathinfo) - { - $allow = $allowSchemes = array(); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $ret; - } - if ($allow) { - throw new MethodNotAllowedException(array_keys($allow)); - } - if (!in_array($this->context->getMethod(), array('HEAD', 'GET'), true)) { - // no-op - } elseif ($allowSchemes) { - redirect_scheme: - $scheme = $this->context->getScheme(); - $this->context->setScheme(key($allowSchemes)); - try { - if ($ret = $this->doMatch($pathinfo)) { - return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret; - } - } finally { - $this->context->setScheme($scheme); - } - } elseif ('/' !== $pathinfo) { - $pathinfo = '/' !== $pathinfo[-1] ? $pathinfo.'/' : substr($pathinfo, 0, -1); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $this->redirect($pathinfo, $ret['_route']) + $ret; - } - if ($allowSchemes) { - goto redirect_scheme; - } - } - - throw new ResourceNotFoundException(); - } - - private function doMatch(string $rawPathinfo, array &$allow = array(), array &$allowSchemes = array()): ?array - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - $host = strtolower($context->getHost()); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - default: - $routes = array( - '/test/baz' => array(array('_route' => 'baz'), null, null, null), - '/test/baz.html' => array(array('_route' => 'baz2'), null, null, null), - '/test/baz3/' => array(array('_route' => 'baz3'), null, null, null), - '/foofoo' => array(array('_route' => 'foofoo', 'def' => 'test'), null, null, null), - '/spa ce' => array(array('_route' => 'space'), null, null, null), - '/multi/new' => array(array('_route' => 'overridden2'), null, null, null), - '/multi/hey/' => array(array('_route' => 'hey'), null, null, null), - '/ababa' => array(array('_route' => 'ababa'), null, null, null), - '/route1' => array(array('_route' => 'route1'), 'a.example.com', null, null), - '/c2/route2' => array(array('_route' => 'route2'), 'a.example.com', null, null), - '/route4' => array(array('_route' => 'route4'), 'a.example.com', null, null), - '/c2/route3' => array(array('_route' => 'route3'), 'b.example.com', null, null), - '/route5' => array(array('_route' => 'route5'), 'c.example.com', null, null), - '/route6' => array(array('_route' => 'route6'), null, null, null), - '/route11' => array(array('_route' => 'route11'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null), - '/route12' => array(array('_route' => 'route12', 'var1' => 'val'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null), - '/route17' => array(array('_route' => 'route17'), null, null, null), - '/secure' => array(array('_route' => 'secure'), null, null, array('https' => 0)), - '/nonsecure' => array(array('_route' => 'nonsecure'), null, null, array('http' => 0)), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - if ($requiredHost) { - if ('#' !== $requiredHost[0] ? $requiredHost !== $host : !preg_match($requiredHost, $host, $hostMatches)) { - break; - } - if ('#' === $requiredHost[0] && $hostMatches) { - $hostMatches['_route'] = $ret['_route']; - $ret = $this->mergeDefaults($hostMatches, $ret); - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - $matchedPathinfo = $host.'.'.$pathinfo; - $regexList = array( + $this->matchHost = true; + $this->staticRoutes = array( + '/test/baz' => array(array(array('_route' => 'baz'), null, null, null, null)), + '/test/baz.html' => array(array(array('_route' => 'baz2'), null, null, null, null)), + '/test/baz3/' => array(array(array('_route' => 'baz3'), null, null, null, null)), + '/foofoo' => array(array(array('_route' => 'foofoo', 'def' => 'test'), null, null, null, null)), + '/spa ce' => array(array(array('_route' => 'space'), null, null, null, null)), + '/multi/new' => array(array(array('_route' => 'overridden2'), null, null, null, null)), + '/multi/hey/' => array(array(array('_route' => 'hey'), null, null, null, null)), + '/ababa' => array(array(array('_route' => 'ababa'), null, null, null, null)), + '/route1' => array(array(array('_route' => 'route1'), 'a.example.com', null, null, null)), + '/c2/route2' => array(array(array('_route' => 'route2'), 'a.example.com', null, null, null)), + '/route4' => array(array(array('_route' => 'route4'), 'a.example.com', null, null, null)), + '/c2/route3' => array(array(array('_route' => 'route3'), 'b.example.com', null, null, null)), + '/route5' => array(array(array('_route' => 'route5'), 'c.example.com', null, null, null)), + '/route6' => array(array(array('_route' => 'route6'), null, null, null, null)), + '/route11' => array(array(array('_route' => 'route11'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null, null)), + '/route12' => array(array(array('_route' => 'route12', 'var1' => 'val'), '#^(?P[^\\.]++)\\.example\\.com$#sDi', null, null, null)), + '/route17' => array(array(array('_route' => 'route17'), null, null, null, null)), + '/secure' => array(array(array('_route' => 'secure'), null, null, array('https' => 0), null)), + '/nonsecure' => array(array(array('_route' => 'nonsecure'), null, null, array('http' => 0), null)), + ); + $this->regexpList = array( 0 => '{^(?' .'|(?:(?:[^./]*+\\.)++)(?' .'|/foo/(baz|symfony)(*:47)' @@ -165,120 +84,32 @@ private function doMatch(string $rawPathinfo, array &$allow = array(), array &$a .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - case 116: - $matches = array('foo' => $matches[1] ?? null); - - // baz4 - return $this->mergeDefaults(array('_route' => 'baz4') + $matches, array()); - - // baz5 - $ret = $this->mergeDefaults(array('_route' => 'baz5') + $matches, array()); - if (!isset(($a = array('POST' => 0))[$requestMethod])) { - $allow += $a; - goto not_baz5; - } - - return $ret; - not_baz5: - - // baz.baz6 - $ret = $this->mergeDefaults(array('_route' => 'baz.baz6') + $matches, array()); - if (!isset(($a = array('PUT' => 0))[$requestMethod])) { - $allow += $a; - goto not_bazbaz6; - } - - return $ret; - not_bazbaz6: - - break; - case 161: - $matches = array('foo' => $matches[1] ?? null); - - // foo1 - $ret = $this->mergeDefaults(array('_route' => 'foo1') + $matches, array()); - if (!isset(($a = array('PUT' => 0))[$requestMethod])) { - $allow += $a; - goto not_foo1; - } - - return $ret; - not_foo1: - - break; - case 205: - $matches = array('foo1' => $matches[1] ?? null); - - // foo2 - return $this->mergeDefaults(array('_route' => 'foo2') + $matches, array()); - - break; - case 280: - $matches = array('_locale' => $matches[1] ?? null, 'foo' => $matches[2] ?? null); - - // foo3 - return $this->mergeDefaults(array('_route' => 'foo3') + $matches, array()); - - break; - default: - $routes = array( - 47 => array(array('_route' => 'foo', 'def' => 'test'), array('bar'), null, null), - 70 => array(array('_route' => 'bar'), array('foo'), array('GET' => 0, 'HEAD' => 1), null), - 90 => array(array('_route' => 'barhead'), array('foo'), array('GET' => 0), null), - 132 => array(array('_route' => 'quoter'), array('quoter'), null, null), - 169 => array(array('_route' => 'bar1'), array('bar'), null, null), - 182 => array(array('_route' => 'overridden'), array('var'), null, null), - 213 => array(array('_route' => 'bar2'), array('bar1'), null, null), - 249 => array(array('_route' => 'helloWorld', 'who' => 'World!'), array('who'), null, null), - 288 => array(array('_route' => 'bar3'), array('_locale', 'bar'), null, null), - 310 => array(array('_route' => 'foo4'), array('foo'), null, null), - 372 => array(array('_route' => 'route13'), array('var1', 'name'), null, null), - 390 => array(array('_route' => 'route14', 'var1' => 'val'), array('var1', 'name'), null, null), - 442 => array(array('_route' => 'route15'), array('name'), null, null), - 490 => array(array('_route' => 'route16', 'var1' => 'val'), array('name'), null, null), - 511 => array(array('_route' => 'a'), array(), null, null), - 532 => array(array('_route' => 'b'), array('var'), null, null), - 550 => array(array('_route' => 'c'), array('var'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (550 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - return null; + $this->dynamicRoutes = array( + 47 => array(array(array('_route' => 'foo', 'def' => 'test'), array('bar'), null, null, null)), + 70 => array(array(array('_route' => 'bar'), array('foo'), array('GET' => 0, 'HEAD' => 1), null, null)), + 90 => array(array(array('_route' => 'barhead'), array('foo'), array('GET' => 0), null, null)), + 116 => array( + array(array('_route' => 'baz4'), array('foo'), null, null, null), + array(array('_route' => 'baz5'), array('foo'), array('POST' => 0), null, null), + array(array('_route' => 'baz.baz6'), array('foo'), array('PUT' => 0), null, null), + ), + 132 => array(array(array('_route' => 'quoter'), array('quoter'), null, null, null)), + 161 => array(array(array('_route' => 'foo1'), array('foo'), array('PUT' => 0), null, null)), + 169 => array(array(array('_route' => 'bar1'), array('bar'), null, null, null)), + 182 => array(array(array('_route' => 'overridden'), array('var'), null, null, null)), + 205 => array(array(array('_route' => 'foo2'), array('foo1'), null, null, null)), + 213 => array(array(array('_route' => 'bar2'), array('bar1'), null, null, null)), + 249 => array(array(array('_route' => 'helloWorld', 'who' => 'World!'), array('who'), null, null, null)), + 280 => array(array(array('_route' => 'foo3'), array('_locale', 'foo'), null, null, null)), + 288 => array(array(array('_route' => 'bar3'), array('_locale', 'bar'), null, null, null)), + 310 => array(array(array('_route' => 'foo4'), array('foo'), null, null, null)), + 372 => array(array(array('_route' => 'route13'), array('var1', 'name'), null, null, null)), + 390 => array(array(array('_route' => 'route14', 'var1' => 'val'), array('var1', 'name'), null, null, null)), + 442 => array(array(array('_route' => 'route15'), array('name'), null, null, null)), + 490 => array(array(array('_route' => 'route16', 'var1' => 'val'), array('name'), null, null, null)), + 511 => array(array(array('_route' => 'a'), array(), null, null, null)), + 532 => array(array(array('_route' => 'b'), array('var'), null, null, null)), + 550 => array(array(array('_route' => 'c'), array('var'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher3.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher3.php index 6f1c45aa9e8d..2a3ed0715354 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher3.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher3.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - case '/with-condition': - // with-condition - if (($context->getMethod() == "GET")) { - return array('_route' => 'with-condition'); - } - break; - default: - $routes = array( - '/rootprefix/test' => array(array('_route' => 'static'), null, null, null), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->staticRoutes = array( + '/rootprefix/test' => array(array(array('_route' => 'static'), null, null, null, null)), + '/with-condition' => array(array(array('_route' => 'with-condition'), null, null, null, -1)), + ); + $this->regexpList = array( 0 => '{^(?' .'|/rootprefix/([^/]++)(*:27)' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 27 => array(array('_route' => 'dynamic'), array('var'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (27 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); + $this->dynamicRoutes = array( + 27 => array(array(array('_route' => 'dynamic'), array('var'), null, null, null)), + ); + $this->checkCondition = static function ($condition, $context, $request) { + switch ($condition) { + case -1: return ($context->getMethod() == "GET"); } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + }; } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher4.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher4.php index 418f8e0b14ab..604e1a1dbf42 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher4.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher4.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - case '/put_and_post': - // put_and_post - $ret = array('_route' => 'put_and_post'); - if (!isset(($a = array('PUT' => 0, 'POST' => 1))[$requestMethod])) { - $allow += $a; - goto not_put_and_post; - } - - return $ret; - not_put_and_post: - // put_and_get_and_head - $ret = array('_route' => 'put_and_get_and_head'); - if (!isset(($a = array('PUT' => 0, 'GET' => 1, 'HEAD' => 2))[$canonicalMethod])) { - $allow += $a; - goto not_put_and_get_and_head; - } - - return $ret; - not_put_and_get_and_head: - break; - default: - $routes = array( - '/just_head' => array(array('_route' => 'just_head'), null, array('HEAD' => 0), null), - '/head_and_get' => array(array('_route' => 'head_and_get'), null, array('HEAD' => 0, 'GET' => 1), null), - '/get_and_head' => array(array('_route' => 'get_and_head'), null, array('GET' => 0, 'HEAD' => 1), null), - '/post_and_head' => array(array('_route' => 'post_and_head'), null, array('POST' => 0, 'HEAD' => 1), null), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->staticRoutes = array( + '/just_head' => array(array(array('_route' => 'just_head'), null, array('HEAD' => 0), null, null)), + '/head_and_get' => array(array(array('_route' => 'head_and_get'), null, array('HEAD' => 0, 'GET' => 1), null, null)), + '/get_and_head' => array(array(array('_route' => 'get_and_head'), null, array('GET' => 0, 'HEAD' => 1), null, null)), + '/post_and_head' => array(array(array('_route' => 'post_and_head'), null, array('POST' => 0, 'HEAD' => 1), null, null)), + '/put_and_post' => array( + array(array('_route' => 'put_and_post'), null, array('PUT' => 0, 'POST' => 1), null, null), + array(array('_route' => 'put_and_get_and_head'), null, array('PUT' => 0, 'GET' => 1, 'HEAD' => 2), null, null), + ), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher5.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher5.php index 976a25fbee62..0f189e397f2d 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher5.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher5.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($pathinfo) - { - $allow = $allowSchemes = array(); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $ret; - } - if ($allow) { - throw new MethodNotAllowedException(array_keys($allow)); - } - if (!in_array($this->context->getMethod(), array('HEAD', 'GET'), true)) { - // no-op - } elseif ($allowSchemes) { - redirect_scheme: - $scheme = $this->context->getScheme(); - $this->context->setScheme(key($allowSchemes)); - try { - if ($ret = $this->doMatch($pathinfo)) { - return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret; - } - } finally { - $this->context->setScheme($scheme); - } - } elseif ('/' !== $pathinfo) { - $pathinfo = '/' !== $pathinfo[-1] ? $pathinfo.'/' : substr($pathinfo, 0, -1); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $this->redirect($pathinfo, $ret['_route']) + $ret; - } - if ($allowSchemes) { - goto redirect_scheme; - } - } - - throw new ResourceNotFoundException(); - } - - private function doMatch(string $rawPathinfo, array &$allow = array(), array &$allowSchemes = array()): ?array - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - default: - $routes = array( - '/a/11' => array(array('_route' => 'a_first'), null, null, null), - '/a/22' => array(array('_route' => 'a_second'), null, null, null), - '/a/333' => array(array('_route' => 'a_third'), null, null, null), - '/a/44/' => array(array('_route' => 'a_fourth'), null, null, null), - '/a/55/' => array(array('_route' => 'a_fifth'), null, null, null), - '/a/66/' => array(array('_route' => 'a_sixth'), null, null, null), - '/nested/group/a/' => array(array('_route' => 'nested_a'), null, null, null), - '/nested/group/b/' => array(array('_route' => 'nested_b'), null, null, null), - '/nested/group/c/' => array(array('_route' => 'nested_c'), null, null, null), - '/slashed/group/' => array(array('_route' => 'slashed_a'), null, null, null), - '/slashed/group/b/' => array(array('_route' => 'slashed_b'), null, null, null), - '/slashed/group/c/' => array(array('_route' => 'slashed_c'), null, null, null), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->staticRoutes = array( + '/a/11' => array(array(array('_route' => 'a_first'), null, null, null, null)), + '/a/22' => array(array(array('_route' => 'a_second'), null, null, null, null)), + '/a/333' => array(array(array('_route' => 'a_third'), null, null, null, null)), + '/a/44/' => array(array(array('_route' => 'a_fourth'), null, null, null, null)), + '/a/55/' => array(array(array('_route' => 'a_fifth'), null, null, null, null)), + '/a/66/' => array(array(array('_route' => 'a_sixth'), null, null, null, null)), + '/nested/group/a/' => array(array(array('_route' => 'nested_a'), null, null, null, null)), + '/nested/group/b/' => array(array(array('_route' => 'nested_b'), null, null, null, null)), + '/nested/group/c/' => array(array(array('_route' => 'nested_c'), null, null, null, null)), + '/slashed/group/' => array(array(array('_route' => 'slashed_a'), null, null, null, null)), + '/slashed/group/b/' => array(array(array('_route' => 'slashed_b'), null, null, null, null)), + '/slashed/group/c/' => array(array(array('_route' => 'slashed_c'), null, null, null, null)), + ); + $this->regexpList = array( 0 => '{^(?' .'|/([^/]++)(*:16)' .'|/nested/([^/]++)(*:39)' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 16 => array(array('_route' => 'a_wildcard'), array('param'), null, null), - 39 => array(array('_route' => 'nested_wildcard'), array('param'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (39 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - return null; + $this->dynamicRoutes = array( + 16 => array(array(array('_route' => 'a_wildcard'), array('param'), null, null, null)), + 39 => array(array(array('_route' => 'nested_wildcard'), array('param'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher6.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher6.php index 9cebf2d929d0..2656206feab0 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher6.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher6.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - default: - $routes = array( - '/trailing/simple/no-methods/' => array(array('_route' => 'simple_trailing_slash_no_methods'), null, null, null), - '/trailing/simple/get-method/' => array(array('_route' => 'simple_trailing_slash_GET_method'), null, array('GET' => 0), null), - '/trailing/simple/head-method/' => array(array('_route' => 'simple_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null), - '/trailing/simple/post-method/' => array(array('_route' => 'simple_trailing_slash_POST_method'), null, array('POST' => 0), null), - '/not-trailing/simple/no-methods' => array(array('_route' => 'simple_not_trailing_slash_no_methods'), null, null, null), - '/not-trailing/simple/get-method' => array(array('_route' => 'simple_not_trailing_slash_GET_method'), null, array('GET' => 0), null), - '/not-trailing/simple/head-method' => array(array('_route' => 'simple_not_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null), - '/not-trailing/simple/post-method' => array(array('_route' => 'simple_not_trailing_slash_POST_method'), null, array('POST' => 0), null), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->staticRoutes = array( + '/trailing/simple/no-methods/' => array(array(array('_route' => 'simple_trailing_slash_no_methods'), null, null, null, null)), + '/trailing/simple/get-method/' => array(array(array('_route' => 'simple_trailing_slash_GET_method'), null, array('GET' => 0), null, null)), + '/trailing/simple/head-method/' => array(array(array('_route' => 'simple_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null, null)), + '/trailing/simple/post-method/' => array(array(array('_route' => 'simple_trailing_slash_POST_method'), null, array('POST' => 0), null, null)), + '/not-trailing/simple/no-methods' => array(array(array('_route' => 'simple_not_trailing_slash_no_methods'), null, null, null, null)), + '/not-trailing/simple/get-method' => array(array(array('_route' => 'simple_not_trailing_slash_GET_method'), null, array('GET' => 0), null, null)), + '/not-trailing/simple/head-method' => array(array(array('_route' => 'simple_not_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null, null)), + '/not-trailing/simple/post-method' => array(array(array('_route' => 'simple_not_trailing_slash_POST_method'), null, array('POST' => 0), null, null)), + ); + $this->regexpList = array( 0 => '{^(?' .'|/trailing/regex/(?' .'|no\\-methods/([^/]++)/(*:47)' @@ -76,56 +40,15 @@ public function match($rawPathinfo) .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 47 => array(array('_route' => 'regex_trailing_slash_no_methods'), array('param'), null, null), - 75 => array(array('_route' => 'regex_trailing_slash_GET_method'), array('param'), array('GET' => 0), null), - 104 => array(array('_route' => 'regex_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null), - 134 => array(array('_route' => 'regex_trailing_slash_POST_method'), array('param'), array('POST' => 0), null), - 187 => array(array('_route' => 'regex_not_trailing_slash_no_methods'), array('param'), null, null), - 215 => array(array('_route' => 'regex_not_trailing_slash_GET_method'), array('param'), array('GET' => 0), null), - 244 => array(array('_route' => 'regex_not_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null), - 273 => array(array('_route' => 'regex_not_trailing_slash_POST_method'), array('param'), array('POST' => 0), null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (273 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->dynamicRoutes = array( + 47 => array(array(array('_route' => 'regex_trailing_slash_no_methods'), array('param'), null, null, null)), + 75 => array(array(array('_route' => 'regex_trailing_slash_GET_method'), array('param'), array('GET' => 0), null, null)), + 104 => array(array(array('_route' => 'regex_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null, null)), + 134 => array(array(array('_route' => 'regex_trailing_slash_POST_method'), array('param'), array('POST' => 0), null, null)), + 187 => array(array(array('_route' => 'regex_not_trailing_slash_no_methods'), array('param'), null, null, null)), + 215 => array(array(array('_route' => 'regex_not_trailing_slash_GET_method'), array('param'), array('GET' => 0), null, null)), + 244 => array(array(array('_route' => 'regex_not_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null, null)), + 273 => array(array(array('_route' => 'regex_not_trailing_slash_POST_method'), array('param'), array('POST' => 0), null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher7.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher7.php index b2b707213555..1973fe5a2ba9 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher7.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher7.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($pathinfo) - { - $allow = $allowSchemes = array(); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $ret; - } - if ($allow) { - throw new MethodNotAllowedException(array_keys($allow)); - } - if (!in_array($this->context->getMethod(), array('HEAD', 'GET'), true)) { - // no-op - } elseif ($allowSchemes) { - redirect_scheme: - $scheme = $this->context->getScheme(); - $this->context->setScheme(key($allowSchemes)); - try { - if ($ret = $this->doMatch($pathinfo)) { - return $this->redirect($pathinfo, $ret['_route'], $this->context->getScheme()) + $ret; - } - } finally { - $this->context->setScheme($scheme); - } - } elseif ('/' !== $pathinfo) { - $pathinfo = '/' !== $pathinfo[-1] ? $pathinfo.'/' : substr($pathinfo, 0, -1); - if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) { - return $this->redirect($pathinfo, $ret['_route']) + $ret; - } - if ($allowSchemes) { - goto redirect_scheme; - } - } - - throw new ResourceNotFoundException(); - } - - private function doMatch(string $rawPathinfo, array &$allow = array(), array &$allowSchemes = array()): ?array - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - default: - $routes = array( - '/trailing/simple/no-methods/' => array(array('_route' => 'simple_trailing_slash_no_methods'), null, null, null), - '/trailing/simple/get-method/' => array(array('_route' => 'simple_trailing_slash_GET_method'), null, array('GET' => 0), null), - '/trailing/simple/head-method/' => array(array('_route' => 'simple_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null), - '/trailing/simple/post-method/' => array(array('_route' => 'simple_trailing_slash_POST_method'), null, array('POST' => 0), null), - '/not-trailing/simple/no-methods' => array(array('_route' => 'simple_not_trailing_slash_no_methods'), null, null, null), - '/not-trailing/simple/get-method' => array(array('_route' => 'simple_not_trailing_slash_GET_method'), null, array('GET' => 0), null), - '/not-trailing/simple/head-method' => array(array('_route' => 'simple_not_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null), - '/not-trailing/simple/post-method' => array(array('_route' => 'simple_not_trailing_slash_POST_method'), null, array('POST' => 0), null), - ); - - if (!isset($routes[$pathinfo])) { - break; - } - list($ret, $requiredHost, $requiredMethods, $requiredSchemes) = $routes[$pathinfo]; - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->staticRoutes = array( + '/trailing/simple/no-methods/' => array(array(array('_route' => 'simple_trailing_slash_no_methods'), null, null, null, null)), + '/trailing/simple/get-method/' => array(array(array('_route' => 'simple_trailing_slash_GET_method'), null, array('GET' => 0), null, null)), + '/trailing/simple/head-method/' => array(array(array('_route' => 'simple_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null, null)), + '/trailing/simple/post-method/' => array(array(array('_route' => 'simple_trailing_slash_POST_method'), null, array('POST' => 0), null, null)), + '/not-trailing/simple/no-methods' => array(array(array('_route' => 'simple_not_trailing_slash_no_methods'), null, null, null, null)), + '/not-trailing/simple/get-method' => array(array(array('_route' => 'simple_not_trailing_slash_GET_method'), null, array('GET' => 0), null, null)), + '/not-trailing/simple/head-method' => array(array(array('_route' => 'simple_not_trailing_slash_HEAD_method'), null, array('HEAD' => 0), null, null)), + '/not-trailing/simple/post-method' => array(array(array('_route' => 'simple_not_trailing_slash_POST_method'), null, array('POST' => 0), null, null)), + ); + $this->regexpList = array( 0 => '{^(?' .'|/trailing/regex/(?' .'|no\\-methods/([^/]++)/(*:47)' @@ -111,56 +40,15 @@ private function doMatch(string $rawPathinfo, array &$allow = array(), array &$a .')' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 47 => array(array('_route' => 'regex_trailing_slash_no_methods'), array('param'), null, null), - 75 => array(array('_route' => 'regex_trailing_slash_GET_method'), array('param'), array('GET' => 0), null), - 104 => array(array('_route' => 'regex_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null), - 134 => array(array('_route' => 'regex_trailing_slash_POST_method'), array('param'), array('POST' => 0), null), - 187 => array(array('_route' => 'regex_not_trailing_slash_no_methods'), array('param'), null, null), - 215 => array(array('_route' => 'regex_not_trailing_slash_GET_method'), array('param'), array('GET' => 0), null), - 244 => array(array('_route' => 'regex_not_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null), - 273 => array(array('_route' => 'regex_not_trailing_slash_POST_method'), array('param'), array('POST' => 0), null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (273 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - return null; + $this->dynamicRoutes = array( + 47 => array(array(array('_route' => 'regex_trailing_slash_no_methods'), array('param'), null, null, null)), + 75 => array(array(array('_route' => 'regex_trailing_slash_GET_method'), array('param'), array('GET' => 0), null, null)), + 104 => array(array(array('_route' => 'regex_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null, null)), + 134 => array(array(array('_route' => 'regex_trailing_slash_POST_method'), array('param'), array('POST' => 0), null, null)), + 187 => array(array(array('_route' => 'regex_not_trailing_slash_no_methods'), array('param'), null, null, null)), + 215 => array(array(array('_route' => 'regex_not_trailing_slash_GET_method'), array('param'), array('GET' => 0), null, null)), + 244 => array(array(array('_route' => 'regex_not_trailing_slash_HEAD_method'), array('param'), array('HEAD' => 0), null, null)), + 273 => array(array(array('_route' => 'regex_not_trailing_slash_POST_method'), array('param'), array('POST' => 0), null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher8.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher8.php index 38bbfa224937..f7554fcb8e4c 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher8.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher8.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - $matchedPathinfo = $pathinfo; - $regexList = array( + $this->regexpList = array( 0 => '{^(?' .'|/(a)(*:11)' .')$}sD', @@ -38,51 +25,10 @@ public function match($rawPathinfo) .'|/(.)(*:33)' .')$}sD', ); - - foreach ($regexList as $offset => $regex) { - while (preg_match($regex, $matchedPathinfo, $matches)) { - switch ($m = (int) $matches['MARK']) { - default: - $routes = array( - 11 => array(array('_route' => 'a'), array('a'), null, null), - 22 => array(array('_route' => 'b'), array('a'), null, null), - 33 => array(array('_route' => 'c'), array('a'), null, null), - ); - - list($ret, $vars, $requiredMethods, $requiredSchemes) = $routes[$m]; - - foreach ($vars as $i => $v) { - if (isset($matches[1 + $i])) { - $ret[$v] = $matches[1 + $i]; - } - } - - $hasRequiredScheme = !$requiredSchemes || isset($requiredSchemes[$context->getScheme()]); - if ($requiredMethods && !isset($requiredMethods[$canonicalMethod]) && !isset($requiredMethods[$requestMethod])) { - if ($hasRequiredScheme) { - $allow += $requiredMethods; - } - break; - } - if (!$hasRequiredScheme) { - $allowSchemes += $requiredSchemes; - break; - } - - return $ret; - } - - if (33 === $m) { - break; - } - $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); - $offset += strlen($m); - } - } - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->dynamicRoutes = array( + 11 => array(array(array('_route' => 'a'), array('a'), null, null, null)), + 22 => array(array(array('_route' => 'b'), array('a'), null, null, null)), + 33 => array(array(array('_route' => 'c'), array('a'), null, null, null)), + ); } } diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher9.php b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher9.php index cfcd1d440c9a..a1e443c4c3fb 100644 --- a/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher9.php +++ b/src/Symfony/Component/Routing/Tests/Fixtures/dumper/url_matcher9.php @@ -1,7 +1,6 @@ context = $context; - } - - public function match($rawPathinfo) - { - $allow = $allowSchemes = array(); - $pathinfo = rawurldecode($rawPathinfo); - $context = $this->context; - $requestMethod = $canonicalMethod = $context->getMethod(); - $host = strtolower($context->getHost()); - - if ('HEAD' === $requestMethod) { - $canonicalMethod = 'GET'; - } - - switch ($pathinfo) { - case '/': - // a - if (preg_match('#^(?P[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', $host, $hostMatches)) { - return $this->mergeDefaults(array('_route' => 'a') + $hostMatches, array()); - } - // c - if (preg_match('#^(?P[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', $host, $hostMatches)) { - return $this->mergeDefaults(array('_route' => 'c') + $hostMatches, array()); - } - // b - if ('d.c.b.a' === $host) { - return array('_route' => 'b'); - } - break; - } - - if ('/' === $pathinfo && !$allow && !$allowSchemes) { - throw new Symfony\Component\Routing\Exception\NoConfigurationException(); - } - - throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); + $this->matchHost = true; + $this->staticRoutes = array( + '/' => array( + array(array('_route' => 'a'), '#^(?P[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, null), + array(array('_route' => 'c'), '#^(?P[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, null), + array(array('_route' => 'b'), 'd.c.b.a', null, null, null), + ), + ); } }