From 9efc8feb6929d99f73da48a78671cb5f15d15663 Mon Sep 17 00:00:00 2001 From: Robin Beer Date: Tue, 20 Aug 2024 14:50:51 +0100 Subject: [PATCH] refactor(Update to include fares v2 data manager refs and tests): --- pom.xml | 4 +- .../datatools/manager/DataManager.java | 10 + .../validation/FaresV2ValidationTest.java | 98 ++ .../gtfs/fake-agency-with-fares-v2/agency.txt | 2 + .../gtfs/fake-agency-with-fares-v2/areas.txt | 40 + .../fake-agency-with-fares-v2/calendar.txt | 2 + .../calendar_dates.txt | 3 + .../fare_leg_rules.txt | 697 ++++++++++++++ .../fake-agency-with-fares-v2/fare_media.txt | 5 + .../fare_products.txt | 97 ++ .../fare_transfer_rules.txt | 38 + .../fake-agency-with-fares-v2/feed_info.txt | 2 + .../fake-agency-with-fares-v2/networks.txt | 2 + .../route_networks.txt | 2 + .../gtfs/fake-agency-with-fares-v2/routes.txt | 2 + .../gtfs/fake-agency-with-fares-v2/shapes.txt | 8 + .../fake-agency-with-fares-v2/stop_areas.txt | 848 ++++++++++++++++++ .../fake-agency-with-fares-v2/stop_times.txt | 7 + .../gtfs/fake-agency-with-fares-v2/stops.txt | 5 + .../fake-agency-with-fares-v2/timeframes.txt | 8 + .../gtfs/fake-agency-with-fares-v2/trips.txt | 4 + 21 files changed, 1882 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/conveyal/datatools/manager/jobs/validation/FaresV2ValidationTest.java create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/agency.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/areas.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar_dates.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_leg_rules.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_media.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_products.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_transfer_rules.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/feed_info.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/networks.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/route_networks.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/routes.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/shapes.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_areas.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_times.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stops.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/timeframes.txt create mode 100644 src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/trips.txt diff --git a/pom.xml b/pom.xml index 9c412d876..726d5ff79 100644 --- a/pom.xml +++ b/pom.xml @@ -262,7 +262,7 @@ org.mobilitydata.gtfs-validator gtfs-validator-main - 4.2.0 + 5.0.0 - a8a376c82b + 5dd609bfb5 diff --git a/src/main/java/com/conveyal/datatools/manager/DataManager.java b/src/main/java/com/conveyal/datatools/manager/DataManager.java index ed3031ea2..6738a3ae6 100644 --- a/src/main/java/com/conveyal/datatools/manager/DataManager.java +++ b/src/main/java/com/conveyal/datatools/manager/DataManager.java @@ -204,19 +204,29 @@ static void registerRoutes() throws IOException { SnapshotController.register(EDITOR_API_PREFIX); EditorLockController.register(EDITOR_API_PREFIX); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.AREAS, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.AGENCY, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.ATTRIBUTIONS, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.CALENDAR, DataManager.GTFS_DATA_SOURCE); // NOTE: fare_attributes controller handles updates to nested table fare_rules. new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_ATTRIBUTES, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_LEG_RULES, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_MEDIAS, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_PRODUCTS, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_TRANSFER_RULES, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.FEED_INFO, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.NETWORKS, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.ROUTES, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.ROUTE_NETWORKS, DataManager.GTFS_DATA_SOURCE); // NOTE: Patterns controller handles updates to nested tables shapes, pattern stops, and frequencies. new EditorControllerImpl(EDITOR_API_PREFIX, Table.PATTERNS, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.SCHEDULE_EXCEPTIONS, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.STOPS, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.STOP_AREAS, DataManager.GTFS_DATA_SOURCE); + new EditorControllerImpl(EDITOR_API_PREFIX, Table.TIME_FRAMES, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.TRANSLATIONS, DataManager.GTFS_DATA_SOURCE); new EditorControllerImpl(EDITOR_API_PREFIX, Table.TRIPS, DataManager.GTFS_DATA_SOURCE); + // TODO: Add transfers.txt controller? } diff --git a/src/test/java/com/conveyal/datatools/manager/jobs/validation/FaresV2ValidationTest.java b/src/test/java/com/conveyal/datatools/manager/jobs/validation/FaresV2ValidationTest.java new file mode 100644 index 000000000..74094bfd5 --- /dev/null +++ b/src/test/java/com/conveyal/datatools/manager/jobs/validation/FaresV2ValidationTest.java @@ -0,0 +1,98 @@ +package com.conveyal.datatools.manager.jobs.validation; + +import com.conveyal.datatools.DatatoolsTest; +import com.conveyal.datatools.manager.auth.Auth0Connection; +import com.conveyal.datatools.manager.models.FeedSource; +import com.conveyal.datatools.manager.models.FeedVersion; +import com.conveyal.datatools.manager.models.Project; +import com.conveyal.datatools.manager.persistence.Persistence; +import org.bson.Document; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Stream; + +import static com.conveyal.datatools.TestUtils.createFeedVersion; +import static com.conveyal.datatools.TestUtils.zipFolderFiles; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class FaresV2ValidationTest { + + private static Project project; + private static FeedVersion faresV2Version; + + @BeforeAll + public static void setUp() throws IOException { + // Start server if it isn't already running. + DatatoolsTest.setUp(); + Auth0Connection.setAuthDisabled(true); + // Create a project, feed sources, and feed versions to merge. + project = new Project(); + project.name = String.format("Test %s", new Date()); + Persistence.projects.create(project); + + FeedSource faresV2FeedSource = new FeedSource("fares-v2"); + faresV2FeedSource.projectId = project.id; + Persistence.feedSources.create(faresV2FeedSource); + faresV2Version = createFeedVersion( + faresV2FeedSource, + zipFolderFiles("fake-agency-with-fares-v2") + ); + Persistence.feedVersions.replace(faresV2Version.id, faresV2Version); + } + + @AfterAll + static void tearDown() { + Auth0Connection.setAuthDisabled(Auth0Connection.getDefaultAuthDisabled()); + project.delete(); + } + + @Test + void canValidateFareV2Files() { + Document summary = (Document) faresV2Version.mobilityDataResult.get("summary"); + List files = summary.getList("files", String.class); + assertTrue(files.contains("areas.txt")); + assertTrue(files.contains("fare_leg_rules.txt")); + assertTrue(files.contains("fare_media.txt")); + assertTrue(files.contains("fare_products.txt")); + assertTrue(files.contains("fare_transfer_rules.txt")); + assertTrue(files.contains("networks.txt")); + assertTrue(files.contains("route_networks.txt")); + assertTrue(files.contains("stop_areas.txt")); + assertTrue(files.contains("timeframes.txt")); + } + + /** + * This is not an exhaustive test, more of a sanity check that MobilityData can detect errors in fares v2 data. + * https://gtfs-validator.mobilitydata.org/rules.html + */ + @ParameterizedTest + @MethodSource("createValidationErrorChecks") + void canDetectValidationErrors(Set codes, String expectedCode) { + assertTrue(codes.contains(expectedCode)); + } + + private static Stream createValidationErrorChecks() { + ArrayList notices = (ArrayList) faresV2Version.mobilityDataResult.get("notices"); + Set codes = new HashSet<>(); + for (Document notice : notices) { + codes.add(notice.getString("code")); + } + return Stream.of( + Arguments.of(codes, "fare_transfer_rule_duration_limit_type_without_duration_limit"), + Arguments.of(codes, "fare_transfer_rule_duration_limit_without_type"), + Arguments.of(codes, "fare_transfer_rule_missing_transfer_count"), + Arguments.of(codes, "fare_transfer_rule_with_forbidden_transfer_count") + ); + } +} \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/agency.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/agency.txt new file mode 100644 index 000000000..5cb6afa42 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/agency.txt @@ -0,0 +1,2 @@ +agency_id,agency_name,agency_url,agency_lang,agency_phone,agency_email,agency_timezone,agency_fare_url,agency_branding_url +1,Fake Transit,http://www.fake-agency.com,,,,America/Los_Angeles,, diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/areas.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/areas.txt new file mode 100644 index 000000000..73b6734b6 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/areas.txt @@ -0,0 +1,40 @@ +area_id,area_name +area_bl,Blue Line +area_bl_airport,Blue Line - Airport Station +area_cf_zone_buzzards,CapeFLYER - Wareham/Buzzards Bay/Bourne +area_cf_zone_hyannis,CapeFLYER - Hyannis +area_commuter_rail_porter_zone_1a,Commuter Rail Zone 1A +area_commuter_rail_sumner_tunnel_zone_1a,Commuter Rail Zone 1A +area_commuter_rail_zone_1,Commuter Rail Zone 1 +area_commuter_rail_zone_10,Commuter Rail Zone 10 +area_commuter_rail_zone_1a,Commuter Rail Zone 1A +area_commuter_rail_zone_2,Commuter Rail Zone 2 +area_commuter_rail_zone_3,Commuter Rail Zone 3 +area_commuter_rail_zone_4,Commuter Rail Zone 4 +area_commuter_rail_zone_5,Commuter Rail Zone 5 +area_commuter_rail_zone_6,Commuter Rail Zone 6 +area_commuter_rail_zone_7,Commuter Rail Zone 7 +area_commuter_rail_zone_8,Commuter Rail Zone 8 +area_commuter_rail_zone_9,Commuter Rail Zone 9 +area_fairmount_line_zone_1a,Commuter Rail Zone 1A - Fairmount Line +area_gl_govt_ctr,Green Line - Government Center +area_green_b_west_of_kenmore,Green Line B - West of Kenmore +area_green_c_west_of_kenmore,Green Line C - West of Kenmore +area_green_e_west_of_symphony,Green Line E - West of Symphony +area_m_ashmont_mattapan,Mattapan Trolley - Ashmont and Mattapan +area_ol_state,Orange Line - State +area_red_south_station,Red Line - South Station +area_route_354_downtown,Route 354 - Downtown +area_route_354_outside_downtown,Route 354 - Outside Downtown +area_route_426_downtown,Route 426 - Downtown +area_route_426_outside_downtown,Route 426 - Outside Downtown +area_route_450_downtown,Route 450 - Downtown +area_route_450_outside_downtown,Route 450 - Outside Downtown +area_sl3_north_of_airport,Silver Line - North of Airport Station +area_sl_airport,Silver Line - Airport Station +area_sl_courthouse,Silver Line - Courthouse +area_sl_logan_terminal,Silver Line - Airport Terminals +area_sl_silver_line_way,Silver Line - Silver Line Way +area_sl_south_station,Silver Line - South Station +area_sl_world_trade_center,Silver Line - World Trade Center +area_ss_commuter_rail_zone_1a,Commuter Rail Zone 1A - South Station diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar.txt new file mode 100644 index 000000000..1bf13678e --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar.txt @@ -0,0 +1,2 @@ +service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +04100312-8fe1-46a5-a9f2-556f39478f57,1,1,1,1,1,1,1,20170915,20170917 \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar_dates.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar_dates.txt new file mode 100644 index 000000000..5d0a31806 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/calendar_dates.txt @@ -0,0 +1,3 @@ +service_id,date,exception_type +04100312-8fe1-46a5-a9f2-556f39478f57,20170916,2 +calendar-date-service,20170917,1 \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_leg_rules.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_leg_rules.txt new file mode 100644 index 000000000..37b60d472 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_leg_rules.txt @@ -0,0 +1,697 @@ +leg_group_id,network_id,from_area_id,to_area_id,fare_product_id,from_timeframe_group_id,to_timeframe_group_id,transfer_only +leg_airport_rapid_transit_quick_subway,rapid_transit,area_bl_airport,,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_cape_buzzards_hyannis_cash,cape_flyer,area_cf_zone_buzzards,area_cf_zone_hyannis,prod_cape_buzzards_hyannis_fare,,, +leg_cape_buzzards_hyannis_cash,cape_flyer,area_cf_zone_hyannis,area_cf_zone_buzzards,prod_cape_buzzards_hyannis_fare,,, +leg_cape_buzzards_hyannis_cash,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_8,prod_cape_buzzards_hyannis_fare,,, +leg_cape_buzzards_hyannis_cash,cape_flyer,area_commuter_rail_zone_8,area_cf_zone_hyannis,prod_cape_buzzards_hyannis_fare,,, +leg_cape_sbb_buzzards_cash,cape_flyer,area_cf_zone_buzzards,area_commuter_rail_zone_1a,prod_cape_sbb_buzzards_fare,,, +leg_cape_sbb_buzzards_cash,cape_flyer,area_cf_zone_buzzards,area_commuter_rail_zone_2,prod_cape_sbb_buzzards_fare,,, +leg_cape_sbb_buzzards_cash,cape_flyer,area_cf_zone_buzzards,area_commuter_rail_zone_4,prod_cape_sbb_buzzards_fare,,, +leg_cape_sbb_buzzards_cash,cape_flyer,area_commuter_rail_zone_1a,area_cf_zone_buzzards,prod_cape_sbb_buzzards_fare,,, +leg_cape_sbb_buzzards_cash,cape_flyer,area_commuter_rail_zone_2,area_cf_zone_buzzards,prod_cape_sbb_buzzards_fare,,, +leg_cape_sbb_buzzards_cash,cape_flyer,area_commuter_rail_zone_4,area_cf_zone_buzzards,prod_cape_sbb_buzzards_fare,,, +leg_cape_sbb_hyannis_cash,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_1a,prod_cape_sbb_hyannis_fare,,, +leg_cape_sbb_hyannis_cash,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_2,prod_cape_sbb_hyannis_fare,,, +leg_cape_sbb_hyannis_cash,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_4,prod_cape_sbb_hyannis_fare,,, +leg_cape_sbb_hyannis_cash,cape_flyer,area_commuter_rail_zone_1a,area_cf_zone_hyannis,prod_cape_sbb_hyannis_fare,,, +leg_cape_sbb_hyannis_cash,cape_flyer,area_commuter_rail_zone_2,area_cf_zone_hyannis,prod_cape_sbb_hyannis_fare,,, +leg_cape_sbb_hyannis_cash,cape_flyer,area_commuter_rail_zone_4,area_cf_zone_hyannis,prod_cape_sbb_hyannis_fare,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_sumner_tunnel_zone_1a,area_commuter_rail_sumner_tunnel_zone_1a,prod_cr_zone_1a,timeframe_sumner_tunnel_closure,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_sumner_tunnel_zone_1a,area_commuter_rail_zone_1a,prod_cr_zone_1a,timeframe_sumner_tunnel_closure,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_1,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_10,prod_cr_inter_10,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_1a,prod_cr_zone_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_2,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_3,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_4,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_5,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_6,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_7,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_8,prod_cr_inter_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_9,prod_cr_inter_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_fairmount_line_zone_1a,prod_cr_zone_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1,area_ss_commuter_rail_zone_1a,prod_cr_zone_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_1,prod_cr_inter_10,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_10,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_1a,prod_cr_zone_10,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_2,prod_cr_inter_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_3,prod_cr_inter_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_4,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_5,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_6,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_7,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_8,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_9,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_fairmount_line_zone_1a,prod_cr_zone_10,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_10,area_ss_commuter_rail_zone_1a,prod_cr_zone_10,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_sumner_tunnel_zone_1a,prod_cr_zone_1a,timeframe_sumner_tunnel_closure,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_1,prod_cr_zone_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_10,prod_cr_zone_10,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_1a,prod_cr_zone_1a,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_2,prod_cr_zone_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_3,prod_cr_zone_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_4,prod_cr_zone_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_5,prod_cr_zone_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_6,prod_cr_zone_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_7,prod_cr_zone_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_8,prod_cr_zone_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_9,prod_cr_zone_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_fairmount_line_zone_1a,prod_cr_zone_1a,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_1a,area_ss_commuter_rail_zone_1a,prod_cr_zone_1a,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_1,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_10,prod_cr_inter_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_1a,prod_cr_zone_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_2,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_3,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_4,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_5,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_6,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_7,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_8,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_9,prod_cr_inter_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_fairmount_line_zone_1a,prod_cr_zone_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_2,area_ss_commuter_rail_zone_1a,prod_cr_zone_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_1,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_10,prod_cr_inter_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_1a,prod_cr_zone_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_2,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_3,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_4,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_5,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_6,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_7,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_8,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_9,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_fairmount_line_zone_1a,prod_cr_zone_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_3,area_ss_commuter_rail_zone_1a,prod_cr_zone_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_1,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_10,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_1a,prod_cr_zone_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_2,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_3,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_4,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_5,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_6,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_7,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_8,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_9,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_fairmount_line_zone_1a,prod_cr_zone_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_4,area_ss_commuter_rail_zone_1a,prod_cr_zone_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_1,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_10,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_1a,prod_cr_zone_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_2,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_3,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_4,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_5,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_6,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_7,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_8,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_9,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_fairmount_line_zone_1a,prod_cr_zone_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_5,area_ss_commuter_rail_zone_1a,prod_cr_zone_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_1,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_10,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_1a,prod_cr_zone_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_2,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_3,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_4,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_5,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_6,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_7,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_8,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_9,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_fairmount_line_zone_1a,prod_cr_zone_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_6,area_ss_commuter_rail_zone_1a,prod_cr_zone_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_1,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_10,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_1a,prod_cr_zone_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_2,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_3,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_4,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_5,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_6,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_7,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_8,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_9,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_fairmount_line_zone_1a,prod_cr_zone_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_7,area_ss_commuter_rail_zone_1a,prod_cr_zone_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_1,prod_cr_inter_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_10,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_1a,prod_cr_zone_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_2,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_3,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_4,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_5,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_6,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_7,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_8,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_9,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_fairmount_line_zone_1a,prod_cr_zone_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_8,area_ss_commuter_rail_zone_1a,prod_cr_zone_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_1,prod_cr_inter_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_10,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_1a,prod_cr_zone_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_2,prod_cr_inter_8,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_3,prod_cr_inter_7,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_4,prod_cr_inter_6,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_5,prod_cr_inter_5,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_6,prod_cr_inter_4,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_7,prod_cr_inter_3,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_8,prod_cr_inter_2,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_9,prod_cr_inter_1,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_fairmount_line_zone_1a,prod_cr_zone_9,,, +leg_commuter_rail_cash,commuter_rail,area_commuter_rail_zone_9,area_ss_commuter_rail_zone_1a,prod_cr_zone_9,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_1,prod_cr_zone_1,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_10,prod_cr_zone_10,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_1a,prod_cr_zone_1a,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_2,prod_cr_zone_2,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_3,prod_cr_zone_3,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_4,prod_cr_zone_4,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_5,prod_cr_zone_5,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_6,prod_cr_zone_6,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_7,prod_cr_zone_7,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_8,prod_cr_zone_8,,, +leg_commuter_rail_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_9,prod_cr_zone_9,,, +leg_commuter_rail_free,commuter_rail,area_commuter_rail_porter_zone_1a,area_commuter_rail_zone_1a,prod_free_fare,timeframe_alewife_kendall_surge,, +leg_commuter_rail_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_porter_zone_1a,prod_free_fare,timeframe_alewife_kendall_surge,, +leg_express_bus_cash,express_bus,area_route_354_downtown,area_route_354_outside_downtown,prod_express_bus,,, +leg_express_bus_cash,express_bus,area_route_354_outside_downtown,area_route_354_downtown,prod_express_bus,,, +leg_express_bus_cash,express_bus,area_route_426_downtown,area_route_426_outside_downtown,prod_express_bus,,, +leg_express_bus_cash,express_bus,area_route_426_outside_downtown,area_route_426_downtown,prod_express_bus,,, +leg_express_bus_cash,express_bus,area_route_450_downtown,area_route_450_outside_downtown,prod_express_bus,,, +leg_express_bus_cash,express_bus,area_route_450_outside_downtown,area_route_450_downtown,prod_express_bus,,, +leg_express_bus_cash,express_bus_special,,,prod_express_bus,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_1,prod_cr_zone_1,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_10,prod_cr_zone_10,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_1a,prod_cr_zone_1a,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_2,prod_cr_zone_2,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_3,prod_cr_zone_3,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_4,prod_cr_zone_4,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_5,prod_cr_zone_5,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_6,prod_cr_zone_6,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_7,prod_cr_zone_7,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_8,prod_cr_zone_8,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_9,prod_cr_zone_9,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_fairmount_line_zone_1a,prod_cr_zone_1a,,, +leg_fairmount_line_cash,commuter_rail,area_fairmount_line_zone_1a,area_ss_commuter_rail_zone_1a,prod_cr_zone_1a,,, +leg_ferry_east_boston_free,ferry_east_boston,,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_ferry_east_boston_free,ferry_east_boston,,,prod_boat_zone_1a,timeframe_regular,, +leg_ferry_f1_cash,ferry_f1,,,prod_ferry_f1,,, +leg_ferry_f4_cash,ferry_f4,,,prod_ferry_f4,,, +leg_ferry_f6_cash,ferry_f6,,,prod_boat_zone_1a,timeframe_sumner_tunnel_closure,, +leg_ferry_f6_cash,ferry_f6,,,prod_boat_zone_1,timeframe_regular,, +leg_ferry_lynn_cash,ferry_lynn,,,prod_boat_zone_1a,timeframe_sumner_tunnel_closure,, +leg_ferry_lynn_cash,ferry_lynn,,,prod_boat_zone_2,timeframe_regular,, +leg_foxboro_event_cash,cr_foxboro,,,prod_foxboro_event_fare,,, +leg_local_bus_cash,express_bus,area_route_354_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,express_bus,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,express_bus,area_route_426_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,express_bus,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,express_bus,area_route_450_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,express_bus,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_downtown,,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_354_outside_downtown,,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_downtown,,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_426_outside_downtown,,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_downtown,,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,area_route_450_outside_downtown,,prod_local_bus,,, +leg_local_bus_cash,local_bus,,area_route_354_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,,area_route_354_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,,area_route_426_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,,area_route_426_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,,area_route_450_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,,area_route_450_outside_downtown,prod_local_bus,,, +leg_local_bus_cash,local_bus,,,prod_local_bus,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_downtown,,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_354_outside_downtown,,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_downtown,,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_426_outside_downtown,,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_downtown,,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,area_route_450_outside_downtown,,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,area_route_354_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,area_route_354_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,area_route_426_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,area_route_426_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,area_route_450_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,area_route_450_outside_downtown,prod_free_fare,,, +leg_local_bus_free,local_bus_free,,,prod_free_fare,,, +leg_local_bus_quick_subway,express_bus,area_route_354_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,express_bus,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,express_bus,area_route_426_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,express_bus,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,express_bus,area_route_450_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,express_bus,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_downtown,,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_354_outside_downtown,,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_downtown,,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_426_outside_downtown,,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_downtown,,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,area_route_450_outside_downtown,,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,area_route_354_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,area_route_426_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,area_route_450_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,, +leg_local_bus_quick_subway,local_bus,,,prod_rapid_transit_quick_subway,,, +leg_local_bus_restricted_cash,local_bus_restricted,,,prod_local_bus,,, +leg_mattapan_rapid_transit_cash,m_rapid_transit,,,prod_rapid_transit_cash,,, +leg_mattapan_rapid_transit_quick_subway,m_rapid_transit,area_m_ashmont_mattapan,,prod_rapid_transit_quick_subway,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_downtown,,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_354_outside_downtown,,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_downtown,,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_426_outside_downtown,,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_downtown,,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,area_route_450_outside_downtown,,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,area_route_354_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,area_route_354_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,area_route_426_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,area_route_426_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,area_route_450_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,area_route_450_outside_downtown,prod_free_fare,,, +leg_rail_replacement_free,rail_replacement_bus,,,prod_free_fare,,, +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_downtown,,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_354_outside_downtown,,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_downtown,,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_426_outside_downtown,,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_downtown,,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,area_route_450_outside_downtown,,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,area_route_354_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,area_route_354_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,area_route_426_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,area_route_426_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,area_route_450_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,area_route_450_outside_downtown,prod_rapid_transit_quick_subway,,,1 +leg_rail_replacement_quick_subway,rail_replacement_bus,,,prod_rapid_transit_quick_subway,,,1 +leg_rapid_transit_cash,rapid_transit,area_green_b_west_of_kenmore,,prod_rapid_transit_cash,,, +leg_rapid_transit_cash,rapid_transit,area_green_c_west_of_kenmore,,prod_rapid_transit_cash,,, +leg_rapid_transit_cash,rapid_transit,area_green_e_west_of_symphony,,prod_rapid_transit_cash,,, +leg_rapid_transit_cash,rapid_transit,,,prod_rapid_transit_cash,,,1 +leg_rapid_transit_free,rapid_transit,area_bl,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_rapid_transit_free,rapid_transit,area_bl_airport,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_rapid_transit_free,rapid_transit,area_gl_govt_ctr,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_rapid_transit_free,rapid_transit,area_ol_state,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_rapid_transit_free,rapid_transit,,,prod_free_fare,,,1 +leg_rapid_transit_quick_subway,rapid_transit,area_bl,,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_rapid_transit_quick_subway,rapid_transit,area_gl_govt_ctr,,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_rapid_transit_quick_subway,rapid_transit,area_ol_state,,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_rapid_transit_quick_subway,rapid_transit,,,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl3_north_of_airport,area_sl3_north_of_airport,prod_rapid_transit_cash,timeframe_regular,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl3_north_of_airport,area_sl_airport,prod_rapid_transit_cash,timeframe_regular,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl3_north_of_airport,,prod_rapid_transit_cash,timeframe_regular,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl_silver_line_way,area_sl3_north_of_airport,prod_rapid_transit_cash,timeframe_regular,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl_silver_line_way,area_sl_airport,prod_rapid_transit_cash,timeframe_regular,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl_silver_line_way,,prod_rapid_transit_cash,,, +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl_south_station,area_sl3_north_of_airport,prod_rapid_transit_cash,,,1 +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl_south_station,area_sl_airport,prod_rapid_transit_cash,,,1 +leg_sl_rapid_transit_cash,sl_rapid_transit,area_sl_south_station,,prod_rapid_transit_cash,,,1 +leg_sl_rapid_transit_cash,sl_rapid_transit,,,prod_rapid_transit_cash,,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl3_north_of_airport,area_sl3_north_of_airport,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl3_north_of_airport,area_sl_airport,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl3_north_of_airport,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl_airport,area_sl3_north_of_airport,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl_airport,,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl_logan_terminal,,prod_free_fare,,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl_silver_line_way,area_sl3_north_of_airport,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_free,sl_rapid_transit,area_sl_silver_line_way,area_sl_airport,prod_free_fare,timeframe_sumner_tunnel_closure,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_airport,area_sl3_north_of_airport,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_airport,,prod_rapid_transit_quick_subway,timeframe_regular,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_courthouse,area_sl3_north_of_airport,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_courthouse,area_sl_airport,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_courthouse,,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_south_station,area_sl3_north_of_airport,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_south_station,area_sl_airport,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_south_station,,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_world_trade_center,area_sl3_north_of_airport,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_world_trade_center,area_sl_airport,prod_rapid_transit_quick_subway,,, +leg_sl_rapid_transit_quick_subway,sl_rapid_transit,area_sl_world_trade_center,,prod_rapid_transit_quick_subway,,, +leg_ss_fairmount_line_zone_1a_cash,commuter_rail,area_ss_commuter_rail_zone_1a,area_fairmount_line_zone_1a,prod_cr_zone_1a,,, +leg_ss_rapid_transit_cash,rapid_transit,area_red_south_station,,prod_rapid_transit_cash,,,1 +leg_ss_rapid_transit_free,rapid_transit,area_red_south_station,,prod_free_fare,,,1 +leg_ss_rapid_transit_quick_subway,rapid_transit,area_red_south_station,,prod_rapid_transit_quick_subway,,, +leg_systemwide_free,cape_flyer,area_cf_zone_buzzards,area_cf_zone_hyannis,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_buzzards,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_buzzards,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_buzzards,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_hyannis,area_cf_zone_buzzards,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_cf_zone_hyannis,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_1a,area_cf_zone_buzzards,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_1a,area_cf_zone_hyannis,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_2,area_cf_zone_buzzards,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_2,area_cf_zone_hyannis,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_4,area_cf_zone_buzzards,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_4,area_cf_zone_hyannis,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cape_flyer,area_commuter_rail_zone_8,area_cf_zone_hyannis,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_10,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_1a,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_2,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_3,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_4,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_5,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_6,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_7,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_8,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_commuter_rail_zone_9,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_fairmount_line_zone_1a,area_ss_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_1,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_10,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_2,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_3,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_4,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_5,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_6,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_7,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_8,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_commuter_rail_zone_9,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,commuter_rail,area_ss_commuter_rail_zone_1a,area_fairmount_line_zone_1a,prod_free_fare,timeframe_systemwide_free,, +leg_systemwide_free,cr_foxboro,,,prod_free_fare,timeframe_systemwide_free,, diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_media.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_media.txt new file mode 100644 index 000000000..a695de634 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_media.txt @@ -0,0 +1,5 @@ +fare_media_id,fare_media_name,fare_media_type +cash,Cash,0 +credit_debit,Credit/debit card,0 +charlieticket,CharlieTicket,1 +mticket,mTicket app,4 diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_products.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_products.txt new file mode 100644 index 000000000..1138f4591 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_products.txt @@ -0,0 +1,97 @@ +fare_product_id,fare_product_name,fare_media_id,amount,currency +prod_boat_zone_1,Ferry Zone 1 one-way fare,cash,6.50,USD +prod_boat_zone_1,Ferry Zone 1 one-way fare,credit_debit,6.50,USD +prod_boat_zone_1,Ferry Zone 1 one-way fare,mticket,6.50,USD +prod_boat_zone_1a,Ferry Zone 1A one-way fare,cash,2.40,USD +prod_boat_zone_1a,Ferry Zone 1A one-way fare,credit_debit,2.40,USD +prod_boat_zone_1a,Ferry Zone 1A one-way fare,mticket,2.40,USD +prod_boat_zone_2,Ferry Zone 2 one-way fare,cash,7.00,USD +prod_boat_zone_2,Ferry Zone 2 one-way fare,credit_debit,7.00,USD +prod_boat_zone_2,Ferry Zone 2 one-way fare,mticket,7.00,USD +prod_cape_buzzards_hyannis_fare,CapeFLYER Middleborough/Lakeville one-way fare,cash,5.00,USD +prod_cape_buzzards_hyannis_fare,CapeFLYER Middleborough/Lakeville one-way fare,credit_debit,5.00,USD +prod_cape_buzzards_hyannis_fare,CapeFLYER Middleborough/Lakeville one-way fare,mticket,5.00,USD +prod_cape_sbb_buzzards_fare,CapeFLYER Bourne one-way fare,cash,20.00,USD +prod_cape_sbb_buzzards_fare,CapeFLYER Bourne one-way fare,credit_debit,20.00,USD +prod_cape_sbb_buzzards_fare,CapeFLYER Bourne one-way fare,mticket,20.00,USD +prod_cape_sbb_hyannis_fare,CapeFLYER Hyannis one-way fare,cash,22.00,USD +prod_cape_sbb_hyannis_fare,CapeFLYER Hyannis one-way fare,credit_debit,22.00,USD +prod_cape_sbb_hyannis_fare,CapeFLYER Hyannis one-way fare,mticket,22.00,USD +prod_cr_inter_1,Commuter Rail Interzone 1 one-way fare,cash,2.75,USD +prod_cr_inter_1,Commuter Rail Interzone 1 one-way fare,credit_debit,2.75,USD +prod_cr_inter_1,Commuter Rail Interzone 1 one-way fare,mticket,2.75,USD +prod_cr_inter_10,Commuter Rail Interzone 10 one-way fare,cash,7.25,USD +prod_cr_inter_10,Commuter Rail Interzone 10 one-way fare,credit_debit,7.25,USD +prod_cr_inter_10,Commuter Rail Interzone 10 one-way fare,mticket,7.25,USD +prod_cr_inter_2,Commuter Rail Interzone 2 one-way fare,cash,3.25,USD +prod_cr_inter_2,Commuter Rail Interzone 2 one-way fare,credit_debit,3.25,USD +prod_cr_inter_2,Commuter Rail Interzone 2 one-way fare,mticket,3.25,USD +prod_cr_inter_3,Commuter Rail Interzone 3 one-way fare,cash,3.50,USD +prod_cr_inter_3,Commuter Rail Interzone 3 one-way fare,credit_debit,3.50,USD +prod_cr_inter_3,Commuter Rail Interzone 3 one-way fare,mticket,3.50,USD +prod_cr_inter_4,Commuter Rail Interzone 4 one-way fare,cash,4.25,USD +prod_cr_inter_4,Commuter Rail Interzone 4 one-way fare,credit_debit,4.25,USD +prod_cr_inter_4,Commuter Rail Interzone 4 one-way fare,mticket,4.25,USD +prod_cr_inter_5,Commuter Rail Interzone 5 one-way fare,cash,4.75,USD +prod_cr_inter_5,Commuter Rail Interzone 5 one-way fare,credit_debit,4.75,USD +prod_cr_inter_5,Commuter Rail Interzone 5 one-way fare,mticket,4.75,USD +prod_cr_inter_6,Commuter Rail Interzone 6 one-way fare,cash,5.25,USD +prod_cr_inter_6,Commuter Rail Interzone 6 one-way fare,credit_debit,5.25,USD +prod_cr_inter_6,Commuter Rail Interzone 6 one-way fare,mticket,5.25,USD +prod_cr_inter_7,Commuter Rail Interzone 7 one-way fare,cash,5.75,USD +prod_cr_inter_7,Commuter Rail Interzone 7 one-way fare,credit_debit,5.75,USD +prod_cr_inter_7,Commuter Rail Interzone 7 one-way fare,mticket,5.75,USD +prod_cr_inter_8,Commuter Rail Interzone 8 one-way fare,cash,6.25,USD +prod_cr_inter_8,Commuter Rail Interzone 8 one-way fare,credit_debit,6.25,USD +prod_cr_inter_8,Commuter Rail Interzone 8 one-way fare,mticket,6.25,USD +prod_cr_inter_9,Commuter Rail Interzone 9 one-way fare,cash,6.75,USD +prod_cr_inter_9,Commuter Rail Interzone 9 one-way fare,credit_debit,6.75,USD +prod_cr_inter_9,Commuter Rail Interzone 9 one-way fare,mticket,6.75,USD +prod_cr_zone_1,Commuter Rail Zone 1 one-way fare,cash,6.50,USD +prod_cr_zone_1,Commuter Rail Zone 1 one-way fare,credit_debit,6.50,USD +prod_cr_zone_1,Commuter Rail Zone 1 one-way fare,mticket,6.50,USD +prod_cr_zone_10,Commuter Rail Zone 10 one-way fare,cash,13.25,USD +prod_cr_zone_10,Commuter Rail Zone 10 one-way fare,credit_debit,13.25,USD +prod_cr_zone_10,Commuter Rail Zone 10 one-way fare,mticket,13.25,USD +prod_cr_zone_1a,Commuter Rail Zone 1A one-way fare,cash,2.40,USD +prod_cr_zone_1a,Commuter Rail Zone 1A one-way fare,credit_debit,2.40,USD +prod_cr_zone_1a,Commuter Rail Zone 1A one-way fare,mticket,2.40,USD +prod_cr_zone_2,Commuter Rail Zone 2 one-way fare,cash,7.00,USD +prod_cr_zone_2,Commuter Rail Zone 2 one-way fare,credit_debit,7.00,USD +prod_cr_zone_2,Commuter Rail Zone 2 one-way fare,mticket,7.00,USD +prod_cr_zone_3,Commuter Rail Zone 3 one-way fare,cash,8.00,USD +prod_cr_zone_3,Commuter Rail Zone 3 one-way fare,credit_debit,8.00,USD +prod_cr_zone_3,Commuter Rail Zone 3 one-way fare,mticket,8.00,USD +prod_cr_zone_4,Commuter Rail Zone 4 one-way fare,cash,8.75,USD +prod_cr_zone_4,Commuter Rail Zone 4 one-way fare,credit_debit,8.75,USD +prod_cr_zone_4,Commuter Rail Zone 4 one-way fare,mticket,8.75,USD +prod_cr_zone_5,Commuter Rail Zone 5 one-way fare,cash,9.75,USD +prod_cr_zone_5,Commuter Rail Zone 5 one-way fare,credit_debit,9.75,USD +prod_cr_zone_5,Commuter Rail Zone 5 one-way fare,mticket,9.75,USD +prod_cr_zone_6,Commuter Rail Zone 6 one-way fare,cash,10.50,USD +prod_cr_zone_6,Commuter Rail Zone 6 one-way fare,credit_debit,10.50,USD +prod_cr_zone_6,Commuter Rail Zone 6 one-way fare,mticket,10.50,USD +prod_cr_zone_7,Commuter Rail Zone 7 one-way fare,cash,11.00,USD +prod_cr_zone_7,Commuter Rail Zone 7 one-way fare,credit_debit,11.00,USD +prod_cr_zone_7,Commuter Rail Zone 7 one-way fare,mticket,11.00,USD +prod_cr_zone_8,Commuter Rail Zone 8 one-way fare,cash,12.25,USD +prod_cr_zone_8,Commuter Rail Zone 8 one-way fare,credit_debit,12.25,USD +prod_cr_zone_8,Commuter Rail Zone 8 one-way fare,mticket,12.25,USD +prod_cr_zone_9,Commuter Rail Zone 9 one-way fare,cash,12.75,USD +prod_cr_zone_9,Commuter Rail Zone 9 one-way fare,credit_debit,12.75,USD +prod_cr_zone_9,Commuter Rail Zone 9 one-way fare,mticket,12.75,USD +prod_express_bus,Express Bus cash fare,cash,4.25,USD +prod_ferry_east_boston,East Boston Ferry one-way fare,mticket,2.40,USD +prod_ferry_f1,Hingham/Hull Ferry one-way fare,cash,9.75,USD +prod_ferry_f1,Hingham/Hull Ferry one-way fare,credit_debit,9.75,USD +prod_ferry_f1,Hingham/Hull Ferry one-way fare,mticket,9.75,USD +prod_ferry_f4,Charlestown Ferry one-way fare,cash,3.70,USD +prod_ferry_f4,Charlestown Ferry one-way fare,credit_debit,3.70,USD +prod_ferry_f4,Charlestown Ferry one-way fare,mticket,3.70,USD +prod_foxboro_event_fare,Foxboro Event Service round-trip fare,cash,20.00,USD +prod_foxboro_event_fare,Foxboro Event Service round-trip fare,credit_debit,20.00,USD +prod_foxboro_event_fare,Foxboro Event Service round-trip fare,mticket,20.00,USD +prod_free_fare,Free fare,,0.00,USD +prod_local_bus,Local Bus cash fare,cash,1.70,USD +prod_rapid_transit_cash,Subway cash fare,cash,2.40,USD +prod_rapid_transit_quick_subway,Subway Quick Ticket,charlieticket,2.40,USD diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_transfer_rules.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_transfer_rules.txt new file mode 100644 index 000000000..bccb48b0f --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/fare_transfer_rules.txt @@ -0,0 +1,38 @@ +from_leg_group_id,to_leg_group_id,transfer_count,duration_limit,duration_limit_type,fare_transfer_type,fare_product_id,filter_fare_product_id,fare_media_behavior,fare_product_behavior +leg_airport_rapid_transit_quick_subway,leg_local_bus_quick_subway,99,7200,1,0,prod_rapid_transit_quick_subway,prod_rapid_transit_quick_subway,0,1 +leg_airport_rapid_transit_quick_subway,leg_rapid_transit_quick_subway,,,1,0,prod_rapid_transit_quick_subway,prod_rapid_transit_quick_subway,0,1 +leg_mattapan_rapid_transit_quick_subway,leg_local_bus_quick_subway,,7200,1,0,prod_rapid_transit_quick_subway,prod_rapid_transit_quick_subway,0,1 +leg_mattapan_rapid_transit_quick_subway,leg_rail_replacement_quick_subway,,99,,0,,prod_rapid_transit_quick_subway,0,1 +leg_mattapan_rapid_transit_quick_subway,leg_rapid_transit_quick_subway,99999,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_mattapan_rapid_transit_quick_subway,leg_mattapan_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_airport_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_local_bus_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_mattapan_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_rail_replacement_quick_subway,-1,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_sl_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rail_replacement_quick_subway,leg_ss_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_cash,leg_rapid_transit_cash,-1,,,0,,prod_rapid_transit_cash,0,1 +leg_rapid_transit_cash,leg_sl_rapid_transit_cash,,,,0,,prod_rapid_transit_cash,0,1 +leg_rapid_transit_free,leg_rapid_transit_free,-1,,,0,,prod_free_fare,0,1 +leg_rapid_transit_free,leg_sl_rapid_transit_free,,,,0,,prod_free_fare,0,1 +leg_rapid_transit_quick_subway,leg_airport_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_quick_subway,leg_local_bus_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_quick_subway,leg_mattapan_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_quick_subway,leg_rail_replacement_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_quick_subway,leg_rapid_transit_quick_subway,-1,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_quick_subway,leg_sl_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_rapid_transit_quick_subway,leg_ss_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_sl_rapid_transit_cash,leg_ss_rapid_transit_cash,,,,0,,prod_rapid_transit_cash,0,1 +leg_sl_rapid_transit_free,leg_ss_rapid_transit_free,,,,0,,prod_free_fare,0,1 +leg_sl_rapid_transit_quick_subway,leg_airport_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_sl_rapid_transit_quick_subway,leg_local_bus_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_sl_rapid_transit_quick_subway,leg_mattapan_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_sl_rapid_transit_quick_subway,leg_rail_replacement_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_sl_rapid_transit_quick_subway,leg_ss_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_ss_rapid_transit_cash,leg_rapid_transit_cash,,,,0,,prod_rapid_transit_cash,0,1 +leg_ss_rapid_transit_free,leg_rapid_transit_free,,,,0,,prod_free_fare,0,1 +leg_ss_rapid_transit_quick_subway,leg_local_bus_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_ss_rapid_transit_quick_subway,leg_mattapan_rapid_transit_quick_subway,,7200,1,0,,prod_rapid_transit_quick_subway,0,1 +leg_ss_rapid_transit_quick_subway,leg_rail_replacement_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 +leg_ss_rapid_transit_quick_subway,leg_rapid_transit_quick_subway,,,,0,,prod_rapid_transit_quick_subway,0,1 diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/feed_info.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/feed_info.txt new file mode 100644 index 000000000..ceac60810 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/feed_info.txt @@ -0,0 +1,2 @@ +feed_id,feed_publisher_name,feed_publisher_url,feed_lang,feed_version +fake_transit,Conveyal,http://www.conveyal.com,en,1.0 \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/networks.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/networks.txt new file mode 100644 index 000000000..47a67eaad --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/networks.txt @@ -0,0 +1,2 @@ +network_id,network_name +1,Forbidden because network id is defined in routes \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/route_networks.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/route_networks.txt new file mode 100644 index 000000000..d2f8f9a9d --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/route_networks.txt @@ -0,0 +1,2 @@ +network_id,route_id +1,1 \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/routes.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/routes.txt new file mode 100644 index 000000000..dd6a30eaf --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/routes.txt @@ -0,0 +1,2 @@ +route_id,agency_id,route_short_name,route_long_name,route_desc,route_type,route_url,route_color,route_text_color,route_sort_order,route_fare_class,line_id,listed_route,network_id +1,1,,RL,RT,1,https://www.mbta.com/schedules/Red,DA291C,FFFFFF,10010,Rapid Transit,line-Red,,rapid_transit \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/shapes.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/shapes.txt new file mode 100644 index 000000000..3f2e3fd13 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/shapes.txt @@ -0,0 +1,8 @@ +shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled +5820f377-f947-4728-ac29-ac0102cbc34e,37.0612132,-122.0074332,1,0.0000000 +5820f377-f947-4728-ac29-ac0102cbc34e,37.0611720,-122.0075000,2,7.4997067 +5820f377-f947-4728-ac29-ac0102cbc34e,37.0613590,-122.0076830,3,33.8739075 +5820f377-f947-4728-ac29-ac0102cbc34e,37.0608780,-122.0082780,4,109.0402932 +5820f377-f947-4728-ac29-ac0102cbc34e,37.0603590,-122.0088280,5,184.6078298 +5820f377-f947-4728-ac29-ac0102cbc34e,37.0597610,-122.0093540,6,265.8053023 +5820f377-f947-4728-ac29-ac0102cbc34e,37.0590660,-122.0099190,7,357.8617018 diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_areas.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_areas.txt new file mode 100644 index 000000000..85cbda304 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_areas.txt @@ -0,0 +1,848 @@ +stop_id,area_id +4u6g,area_route_426_downtown +4u6g,area_route_450_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_sl_logan_terminal +4u6g,area_sl_logan_terminal +4u6g,area_sl_logan_terminal +4u6g,area_sl_logan_terminal +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_sl_logan_terminal +4u6g,area_route_426_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_downtown +4u6g,area_route_354_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_ol_state +4u6g,area_ol_state +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl_airport +4u6g,area_bl_airport +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_bl +4u6g,area_red_south_station +4u6g,area_red_south_station +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_green_b_west_of_kenmore +4u6g,area_gl_govt_ctr +4u6g,area_gl_govt_ctr +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_c_west_of_kenmore +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_green_e_west_of_symphony +4u6g,area_m_ashmont_mattapan +4u6g,area_m_ashmont_mattapan +4u6g,area_m_ashmont_mattapan +4u6g,area_bl +4u6g,area_sl_airport +4u6g,area_sl_airport +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_450_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_route_426_outside_downtown +4u6g,area_sl_south_station +4u6g,area_sl_courthouse +4u6g,area_sl_world_trade_center +4u6g,area_sl_silver_line_way +4u6g,area_sl_world_trade_center +4u6g,area_sl_courthouse +4u6g,area_sl_south_station +4u6g,area_sl_silver_line_way +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_sl3_north_of_airport +4u6g,area_route_426_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_route_426_downtown +4u6g,area_route_450_downtown +4u6g,area_route_354_outside_downtown +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_cf_zone_buzzards +4u6g,area_cf_zone_buzzards +4u6g,area_cf_zone_buzzards +4u6g,area_cf_zone_hyannis +4u6g,area_commuter_rail_zone_2 +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_fairmount_line_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_porter_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_porter_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_porter_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_sumner_tunnel_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_10 +4u6g,area_commuter_rail_zone_9 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_ss_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_8 +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1a +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_1 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_2 +4u6g,area_commuter_rail_zone_3 +4u6g,area_commuter_rail_zone_4 +4u6g,area_commuter_rail_zone_5 +4u6g,area_commuter_rail_zone_6 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 +4u6g,area_commuter_rail_zone_7 \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_times.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_times.txt new file mode 100644 index 000000000..1cfefaa49 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stop_times.txt @@ -0,0 +1,7 @@ +trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled,timepoint +a30277f8-e50a-4a85-9141-b1e0da9d429d,07:00:00,07:00:00,4u6g,1,Test stop headsign,0,0,0.0000000, +a30277f8-e50a-4a85-9141-b1e0da9d429d,07:01:00,07:01:00,johv,2,Test stop headsign 2,0,0,341.4491961, +frequency-trip,08:00:00,08:00:00,4u6g,1,Test stop headsign frequency trip,0,0,0.0000000, +frequency-trip,08:29:00,08:29:00,1234,2,Test stop headsign frequency trip 2,0,0,341.4491961, +calendar-date-trip,08:00:00,08:00:00,4u6g,1,Test stop headsign calendar date trip,0,0,0.0000000, +calendar-date-trip,08:29:00,08:29:00,1234,2,Test stop headsign calendar date trip 2,0,0,341.4491961, \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stops.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stops.txt new file mode 100644 index 000000000..ba368047e --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/stops.txt @@ -0,0 +1,5 @@ +stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,stop_url,location_type,parent_station,stop_timezone,wheelchair_boarding +4u6g,,Butler Ln,,37.0612132,-122.0074332,,,0,,, +johv,,Scotts Valley Dr & Victor Sq,,37.0590172,-122.0096058,,,0,,, +123,,Parent Station,,37.0666,-122.0777,,,1,,, +1234,,Child Stop,,37.06662,-122.07772,,,0,123,, \ No newline at end of file diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/timeframes.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/timeframes.txt new file mode 100644 index 000000000..52667abe1 --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/timeframes.txt @@ -0,0 +1,8 @@ +timeframe_group_id,start_time,end_time,service_id +timeframe_regular,,,04100312-8fe1-46a5-a9f2-556f39478f57 +timeframe_systemwide_free,,,04100312-8fe1-46a5-a9f2-556f39478f57 +timeframe_sumner_tunnel_closure,,,04100312-8fe1-46a5-a9f2-556f39478f57 +timeframe_sumner_tunnel_closure,00:00:00,02:30:00,04100312-8fe1-46a5-a9f2-556f39478f57 +timeframe_regular,02:30:00,24:00:00,04100312-8fe1-46a5-a9f2-556f39478f57 +timeframe_alewife_kendall_surge,,,04100312-8fe1-46a5-a9f2-556f39478f57 +timeframe_alewife_kendall_surge,00:00:00,02:30:00,04100312-8fe1-46a5-a9f2-556f39478f57 diff --git a/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/trips.txt b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/trips.txt new file mode 100644 index 000000000..982c01e0f --- /dev/null +++ b/src/test/resources/com/conveyal/datatools/gtfs/fake-agency-with-fares-v2/trips.txt @@ -0,0 +1,4 @@ +route_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,shape_id,bikes_allowed,wheelchair_accessible,service_id +1,a30277f8-e50a-4a85-9141-b1e0da9d429d,,,0,,5820f377-f947-4728-ac29-ac0102cbc34e,0,0,04100312-8fe1-46a5-a9f2-556f39478f57 +1,frequency-trip,,,0,,5820f377-f947-4728-ac29-ac0102cbc34e,0,0,04100312-8fe1-46a5-a9f2-556f39478f57 +1,calendar-date-trip,,,0,,5820f377-f947-4728-ac29-ac0102cbc34e,0,0,calendar-date-service \ No newline at end of file