-declaregen Index => qr'^index$';
-declaregen Log => qr'^log/index$';
-declaregen 'Log::Entry' => qr'^log/.*/index$';
-declaregen Submit => qr'^submit$';
-declaregen Pb => qr'^pb/index$';
-declaregen 'Pb::Entry' => qr'^pb/.*/index$';
+{
+ my $component = qr'[^/]+';
+ my $contest = qr,(?:ct/$component/)?,;
+ declaregen Index => qr,^index$,;
+ declaregen Ct => qr,^ct/index$,;
+ declaregen 'Ct::Entry' => qr,^ct/$component/index$,;
+ declaregen St => qr,^ct/$component/log/st$,;
+ declaregen Log => qr,^${contest}log/index$,;
+ declaregen 'Log::Entry' => qr,^${contest}log/$component/index$,;
+ declaregen Submit => qr,^${contest}submit$,;
+ declaregen Pb => qr,^${contest}pb/index$,;
+ declaregen 'Pb::Entry' => qr,^${contest}pb/$component/index$,;
+}