diff --git a/README.md b/README.md new file mode 100644 index 0000000..3d5bc7f --- /dev/null +++ b/README.md @@ -0,0 +1,147 @@ +# Lab 0: Go tutorial + +In this tutorial, we will briefly go over the most important concepts of the Go programming language. You will create a dashboard application visualizing data of the Massachusetts Bay Transportation Authority (MBTA). The main goal of the lab and the linked tutorials is to have you play around with Go --- familiarizing yourself with the covered concepts will come in handy for future labs! :) + +## Installation + +1. Follow [these instructions](https://go.dev/doc/install) to install Go. + + 2. We recommend using VisualStudio Code to work on the labs. VisualStudio Code can be downloaded [from here](https://code.visualstudio.com/download). After installation, make sure to add Go extensions and tools: Open VS Code, open the extension manager by pressing `Ctrl + Shift + x`, type "go" into the search bar and hit enter, find the Go extension by the GO team at Google and install it, open the command palette by pressing `Ctrl + Shift + p`, run `Go: Install/Update Tools`, select all tools and click ok. + + 3. Clone this github repository: In a directory of your choice, run `git clone https://github.com/MIT-DB-Class/lab0`. + + 4. [Download the database file](https://www.dropbox.com/s/37k6lrqd9uq52aa/mbta.sqlite?dl=1) `mbta.sqlite` and place it in the `lab0` directory (where `main.go` is). + + 5. You should be all set! You can run the code by typing `go run main.go` in your terminal from the `lab0` directory or clicking on "Run and Debug" in VS Code (on the very left, click on the icon with the bug and the triangle and then on "Run and Debug"). + +## Lab and Go walk through + +In the following, we walk you through the lab and want to point your attention towards some Go features. After the installation, the structure of your project should look as follows: + +``` + . + ├─ handlers/ + | ├─ handlers_test.go + │ ├─ handlers.go + | └─ template.html + ├─ ridership_db/ + | ├─ csv_ridership_db.go + │ ├─ interface_ridership_db.go + | ├─ ridership_db_test.go + | └─ sqlite_ridership_db.go + ├─ utils/ + │ └─ render_chart.go + ├─ main.go + ├─ mbta.csv + ├─ mbta.sqlite # TODO: download using link above + ├─ go.mod + ├─ go.sum + └─ README.md +``` + +### Hello world + +In this lab you will implement a simple http server that visualizes ridership data from Boston's MBTA metro system. Go provides many tutorials with small sample applications that are a great way to play around with features of the language. For example, [this tutorial](https://go.dev/tour/basics/1) gives an introduction on Go's basic syntax, from structuring your files to writing a "Hello world" program. + +Please use the linked tutorials and documentation to familiarize yourself with the Go language, which we will use for all labs in this course. The tutorials and documentation linked in this lab should allow you to fill out the missing functions required for the web app. + +Please look at [this documentation](https://pkg.go.dev/net/http#hdr-Servers) for an overview on how http servers are created in Go. + + +### Error handling + +Open `ridership_db/sqlite_ridership_db.go`. In line 14, we connect to a Sqlite database. This may fail because of various reasons, for example if the database file `mbta.sqlite` is not present. Go has a built-in `error` type which is used for error handling, and many methods in Go will return an error in addition to their normal return value. This is unlike the use of exceptions for error handling in Python and Java. [This tutorial](https://go.dev/doc/tutorial/handle-errors) discusses error handling in Go in more detail. + + +### Control flow +You've seen `if` statements when handling errors. `ridership_db/sqlite_ridership_db.go` also implements a very simple iteration logic. In line 33, we run a query against sqlite which returns `rows`, a pointer to the result set. In lines 40-47, we use the `next` and `scan` methods of `rows` to iterate through the result set and add the returned rows to a slice ("a list"). Both slices and pointers are explained in the next subsection --- for now, focus on familiarizing yourself with Go's control flow syntax. + +Check out [this tutorial](https://go.dev/tour/flowcontrol/1) to make yourself familiar with control flow in Go. + +### Pointers, structs, slices and maps + +Now, go to `ridership_db/csv_ridership_db.go` and look at lines 10 to 15. You can see how we define the `CsvRidershipDB` struct (like we have previously defined the `SqliteRidershipDB` struct). + +Note that when defining the struct, the asterisks ("\*") in lines 12 and 13 declare that `csvFile` is a *pointer* to an `os.File` and `csvReader` is a *pointer* to a `csv.Reader`. These pointer variables are used to store the memory addresses where the actual `os.File` and `csv.Reader` reside in memory. +The main use of pointers in Go is to "pass by reference" -- if a function takes a pointer argument and makes a change to the passed value, that value will also be seen by the caller (similarly if a function returns a pointer argument, the returned value may be changed by the caller). If the "\*" is omitted, this is "pass by value"; pass-by-value arguments to functions receive a copy of the value, and thus any changes made to them will be made on a copy and not seen by the caller. + +In line 11, you can see how we define a *map*, which is Go's analog to a Python dictionary or a C++ unordered_map. +You will have to implement the `GetRidershipMethod` for `CsvRidershipDB`, which returns an int64 *slice* (`[]int64`) and an error. Slices are Go's analog to a Python list or a C++ vector. Note that slices and maps are always passed by reference in Go. + +Look at [this tutorial](https://go.dev/tour/moretypes/1) to make yourself familiar with pointers, structs, slices and maps. If you want additional material on pointers, have a look at [this tutorial](https://www.geeksforgeeks.org/pointers-in-golang/?ref=lbp). + + +### Methods and interfaces + +Both the `SqliteRidershipDB` type and the `CsvRidershipDB` type implement the `RidershipDB` interface, which is defined in `ridership_db/interface_ridership_db.go`. A type implements an interface by implementing all of its methods. Note that this is usually implicit -- nowhere do we explicitly indicate that the two ridership types implement `RidershipDB`. Interfaces allow us to simply use the `RidershipDB` type in lines 23-24 in `handlers.go`, without needing to distinguish which of the two implementations we are using (`SqliteRidershipDB` or `CsvRidershipDB`). + +[This tutorial](https://go.dev/tour/methods/1) gives more detail on methods and interfaces. + +### It doesn't stop here + +The above resources provide a very brief overview of the most important features of the Go language. However, there are many more resources online as Go has a large and supportive community. We strongly encourage you to explore these resources and gain more experience with Go. If you find any tutorials particularly useful, please send them to us! :) 65830-staff [at] mit [dot] edu + + +## The Assignment + +Complete the following two tasks for this lab: + +### 1. Start an http server and handle requests + +This task requires you to start up the http server in `main.go` and handle the user's GET requests by filling out the `HomeHandler` method in `handlers/handlers.go`. + +The final web app looks like in the screenshot below, where users can select a T line (e.g. red line) and display its ridership statistics in a bar chart. The `HomeHandler` function first checks which line the user has selected in the drop down menu and then queries ridership numbers for that line from a `RiderhipDB` instance. The returned values are then displayed in a bar chart. You don't need to write code to plot the bar chart yourself, you can simply use the `GenerateBarChart` function in `utils/render_chart.go`. + +After completing this task, you should be able to start the web server by running `go run main.go` and see the web app in your browser by going to http://localhost:PORT (where PORT is the port number you specified): + +![Screenshot of web app](screenshot.png) + +You should also be able to pass the test in `handlers_test.go`: When running `go test` from the `handlers` directory, you should get a similar output to this: + +``` +PASS +ok main/handlers 0.246s +``` + +### 2. Run a query over a CSV file + +This task requires you to implement the missing methods in `ridership_db/csv_ridership_db.go` + +Instead of issuing the query against sqlite, `CsvRidershipDB` directly runs it over the `mbta.csv` CSV file. MBTA divides a day into nine different time periods (*time_period_01*, ..., *time_period_09*). The CSV file contains how many passengers boarded trains during a specific time period, at a specific station and for a specific line and direction. For the queried line (passed to `GetRidership`) compute the total number of passengers that boarded a train for each given time period (for each time period, sum over all stations and directions). The sum for each time period should be an entry in the returned `int64` slice. Make sure to use the `idIdxMap` map to map the time period id strings (e.g. *time_period_01*) to the correct index in the `boardings` slice (e.g. 0). + +To use your CSV implementation in the web app, instantiate RidershipDB to be a `CsvRidershipDB` instead of a `SqliteRidershipDB` in lines 23-24 in `handlers/handlers.go`: + +``` +// instantiate ridershipDB +// var db rdb.RidershipDB = &rdb.SqliteRidershipDB{} // Sqlite implementation +var db rdb.RidershipDB = &rdb.CsvRidershipDB{} // CSV implementation +``` + +You should also be able to pass the tests in `ridership_db/ridership_db_test.go`: When running `go test` from the `ridership_db` directory, you should get a similar output to this: + +``` +=== RUN TestRidershipDBsMatch +=== RUN TestRidershipDBsMatch/red +--- PASS: TestRidershipDBsMatch/red (0.00s) +=== RUN TestRidershipDBsMatch/green +--- PASS: TestRidershipDBsMatch/green (0.00s) +=== RUN TestRidershipDBsMatch/blue +--- PASS: TestRidershipDBsMatch/blue (0.00s) +=== RUN TestRidershipDBsMatch/orange +--- PASS: TestRidershipDBsMatch/orange (0.00s) +--- PASS: TestRidershipDBsMatch (0.01s) +PASS +ok main/ridership_db 0.226s +``` + +## Submission + +50% of the grade is determined by an autograder, which checks if your code passes the test cases. The remaining 50% comes from us inspecting your code. + +To submit your code, please do the following: + +1. In the `lab0` directory, run `zip -r submission.zip handlers utils ridership_db main.go`. + +2. Submit the generated zip to [the autograder](https://www.gradescope.com/courses/583077/assignments/3263816/). + +3. The autograder should give you a score, based on whether your code passes the test cases. We will release the remaining 50% of the grade later. diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c91a912 --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module main + +go 1.20 + +require ( + github.com/gorilla/mux v1.8.0 + github.com/mattn/go-sqlite3 v1.14.17 + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect + github.com/wcharczuk/go-chart v2.0.1+incompatible // indirect + golang.org/x/image v0.11.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..58cc185 --- /dev/null +++ b/go.sum @@ -0,0 +1,41 @@ +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= +github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/wcharczuk/go-chart v2.0.1+incompatible h1:0pz39ZAycJFF7ju/1mepnk26RLVLBCWz1STcD3doU0A= +github.com/wcharczuk/go-chart v2.0.1+incompatible/go.mod h1:PF5tmL4EIx/7Wf+hEkpCqYi5He4u90sw+0+6FhrryuE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/image v0.11.0 h1:ds2RoQvBvYTiJkwpSFDwCcDFNX7DqjL2WsUgTNk0Ooo= +golang.org/x/image v0.11.0/go.mod h1:bglhjqbqVuEb9e9+eNR45Jfu7D+T4Qan+NhQk8Ck2P8= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/handlers/handlers.go b/handlers/handlers.go new file mode 100644 index 0000000..ed29aaa --- /dev/null +++ b/handlers/handlers.go @@ -0,0 +1,62 @@ +package handlers + +import ( + "encoding/base64" + "fmt" + "html/template" + rdb "main/ridership_db" + "main/utils" + "net/http" + "os" + "path/filepath" + "runtime" +) + +func HomeHandler(w http.ResponseWriter, r *http.Request) { + // Get the selected chart from the query parameter + selectedChart := r.URL.Query().Get("line") + if selectedChart == "" { + selectedChart = "red" + } + + // instantiate ridershipDB + var db rdb.RidershipDB = &rdb.SqliteRidershipDB{} // Sqlite implementation + // var db rdb.RidershipDB = &rdb.CsvRidershipDB{} // CSV implementation + + // TODO: some code goes here + // Get the chart data from RidershipDB + + // TODO: some code goes here + // Plot the bar chart using utils.GenerateBarChart. The function will return the bar chart + // as PNG byte slice. Convert the bytes to a base64 string, which is used to embed images in HTML. + + // Get path to the HTML template for our web app + _, currentFilePath, _, _ := runtime.Caller(0) + templateFile := filepath.Join(filepath.Dir(currentFilePath), "template.html") + + // Read and parse the HTML so we can use it as our web app template + html, err := os.ReadFile(templateFile) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + tmpl, err := template.New("line").Parse(string(html)) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + // TODO: some code goes here + // We now want to create a struct to hold the values we want to embed in the HTML + data := struct { + Image string + Chart string + }{ + Image: "", // TODO: base64 string + Chart: selectedChart, + } + + // TODO: some code goes here + // Use tmpl.Execute to generate the final HTML output and send it as a response + // to the client's request. +} diff --git a/handlers/handlers_test.go b/handlers/handlers_test.go new file mode 100644 index 0000000..9338734 --- /dev/null +++ b/handlers/handlers_test.go @@ -0,0 +1,28 @@ +package handlers + +import ( + "net/http" + "net/http/httptest" + "testing" +) + +func TestHomeHandler(t *testing.T) { + // Create a mock server + srv := httptest.NewServer(http.HandlerFunc(HomeHandler)) + defer srv.Close() + + // Create an HTTP client + client := &http.Client{} + + // Send a request to the mock server + resp, err := client.Get(srv.URL) + if err != nil { + t.Fatalf("Failed to send request: %s", err) + } + defer resp.Body.Close() + + // Check the response + if resp.StatusCode != http.StatusOK { + t.Errorf("Expected status %d; got %d", http.StatusOK, resp.StatusCode) + } +} diff --git a/handlers/template.html b/handlers/template.html new file mode 100644 index 0000000..25149cb --- /dev/null +++ b/handlers/template.html @@ -0,0 +1,24 @@ + + + +Lab 0 + + + +
+ +
+ Bar Chart + + + diff --git a/main.go b/main.go new file mode 100644 index 0000000..cbdfd9e --- /dev/null +++ b/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "fmt" + "main/handlers" + "net/http" +) + +func main() { + // TODO: some code goes here + // Fill out the HomeHandler function in handlers/handlers.go which handles the user's GET request. + // Start an http server using http.ListenAndServe that handles requests using HomeHandler. +} diff --git a/mbta.csv b/mbta.csv new file mode 100644 index 0000000..fad32be --- /dev/null +++ b/mbta.csv @@ -0,0 +1,2143 @@ +line_id,direction,time_period_id,station_id,total_ons +blue,0,time_period_01,place-aport,24671 +blue,0,time_period_01,place-aqucl,321 +blue,0,time_period_01,place-bmmnl,17937 +blue,0,time_period_01,place-bomnl,0 +blue,0,time_period_01,place-gover,8 +blue,0,time_period_01,place-mvbcl,38544 +blue,0,time_period_01,place-orhte,23284 +blue,0,time_period_01,place-rbmnl,18921 +blue,0,time_period_01,place-sdmnl,1578 +blue,0,time_period_01,place-state,220 +blue,0,time_period_01,place-wimnl,10790 +blue,0,time_period_01,place-wondl,28742 +blue,0,time_period_02,place-aport,42976 +blue,0,time_period_02,place-aqucl,1297 +blue,0,time_period_02,place-bmmnl,30553 +blue,0,time_period_02,place-bomnl,0 +blue,0,time_period_02,place-gover,37 +blue,0,time_period_02,place-mvbcl,81438 +blue,0,time_period_02,place-orhte,37523 +blue,0,time_period_02,place-rbmnl,28265 +blue,0,time_period_02,place-sdmnl,4531 +blue,0,time_period_02,place-state,483 +blue,0,time_period_02,place-wimnl,19373 +blue,0,time_period_02,place-wondl,65393 +blue,0,time_period_03,place-aport,110241 +blue,0,time_period_03,place-aqucl,6181 +blue,0,time_period_03,place-bmmnl,90806 +blue,0,time_period_03,place-bomnl,0 +blue,0,time_period_03,place-gover,144 +blue,0,time_period_03,place-mvbcl,239147 +blue,0,time_period_03,place-orhte,110837 +blue,0,time_period_03,place-rbmnl,69149 +blue,0,time_period_03,place-sdmnl,15114 +blue,0,time_period_03,place-state,1614 +blue,0,time_period_03,place-wimnl,46719 +blue,0,time_period_03,place-wondl,233063 +blue,0,time_period_04,place-aport,113660 +blue,0,time_period_04,place-aqucl,14096 +blue,0,time_period_04,place-bmmnl,55352 +blue,0,time_period_04,place-bomnl,0 +blue,0,time_period_04,place-gover,345 +blue,0,time_period_04,place-mvbcl,189320 +blue,0,time_period_04,place-orhte,73674 +blue,0,time_period_04,place-rbmnl,62431 +blue,0,time_period_04,place-sdmnl,9494 +blue,0,time_period_04,place-state,4286 +blue,0,time_period_04,place-wimnl,33851 +blue,0,time_period_04,place-wondl,121823 +blue,0,time_period_05,place-aport,82284 +blue,0,time_period_05,place-aqucl,19909 +blue,0,time_period_05,place-bmmnl,29239 +blue,0,time_period_05,place-bomnl,0 +blue,0,time_period_05,place-gover,298 +blue,0,time_period_05,place-mvbcl,111056 +blue,0,time_period_05,place-orhte,37192 +blue,0,time_period_05,place-rbmnl,36408 +blue,0,time_period_05,place-sdmnl,5002 +blue,0,time_period_05,place-state,4516 +blue,0,time_period_05,place-wimnl,22986 +blue,0,time_period_05,place-wondl,49182 +blue,0,time_period_06,place-aport,68093 +blue,0,time_period_06,place-aqucl,29958 +blue,0,time_period_06,place-bmmnl,20536 +blue,0,time_period_06,place-bomnl,0 +blue,0,time_period_06,place-gover,350 +blue,0,time_period_06,place-mvbcl,94665 +blue,0,time_period_06,place-orhte,32137 +blue,0,time_period_06,place-rbmnl,27789 +blue,0,time_period_06,place-sdmnl,4588 +blue,0,time_period_06,place-state,8479 +blue,0,time_period_06,place-wimnl,22650 +blue,0,time_period_06,place-wondl,39459 +blue,0,time_period_07,place-aport,44374 +blue,0,time_period_07,place-aqucl,12136 +blue,0,time_period_07,place-bmmnl,9505 +blue,0,time_period_07,place-bomnl,0 +blue,0,time_period_07,place-gover,179 +blue,0,time_period_07,place-mvbcl,42648 +blue,0,time_period_07,place-orhte,14014 +blue,0,time_period_07,place-rbmnl,11137 +blue,0,time_period_07,place-sdmnl,1858 +blue,0,time_period_07,place-state,3432 +blue,0,time_period_07,place-wimnl,8251 +blue,0,time_period_07,place-wondl,23938 +blue,0,time_period_08,place-aport,21030 +blue,0,time_period_08,place-aqucl,4375 +blue,0,time_period_08,place-bmmnl,3293 +blue,0,time_period_08,place-bomnl,0 +blue,0,time_period_08,place-gover,29 +blue,0,time_period_08,place-mvbcl,10278 +blue,0,time_period_08,place-orhte,5584 +blue,0,time_period_08,place-rbmnl,3885 +blue,0,time_period_08,place-sdmnl,320 +blue,0,time_period_08,place-state,745 +blue,0,time_period_08,place-wimnl,3863 +blue,0,time_period_08,place-wondl,9082 +blue,0,time_period_09,place-aport,2512 +blue,0,time_period_09,place-aqucl,686 +blue,0,time_period_09,place-bmmnl,254 +blue,0,time_period_09,place-bomnl,0 +blue,0,time_period_09,place-gover,9 +blue,0,time_period_09,place-mvbcl,1360 +blue,0,time_period_09,place-orhte,656 +blue,0,time_period_09,place-rbmnl,497 +blue,0,time_period_09,place-sdmnl,32 +blue,0,time_period_09,place-state,237 +blue,0,time_period_09,place-wimnl,671 +blue,0,time_period_09,place-wondl,876 +blue,1,time_period_01,place-aport,1215 +blue,1,time_period_01,place-aqucl,736 +blue,1,time_period_01,place-bmmnl,367 +blue,1,time_period_01,place-bomnl,195 +blue,1,time_period_01,place-gover,4983 +blue,1,time_period_01,place-mvbcl,2701 +blue,1,time_period_01,place-orhte,345 +blue,1,time_period_01,place-rbmnl,72 +blue,1,time_period_01,place-sdmnl,32 +blue,1,time_period_01,place-state,8708 +blue,1,time_period_01,place-wimnl,633 +blue,1,time_period_01,place-wondl,0 +blue,1,time_period_02,place-aport,2879 +blue,1,time_period_02,place-aqucl,3097 +blue,1,time_period_02,place-bmmnl,434 +blue,1,time_period_02,place-bomnl,850 +blue,1,time_period_02,place-gover,16398 +blue,1,time_period_02,place-mvbcl,6082 +blue,1,time_period_02,place-orhte,854 +blue,1,time_period_02,place-rbmnl,242 +blue,1,time_period_02,place-sdmnl,72 +blue,1,time_period_02,place-state,30919 +blue,1,time_period_02,place-wimnl,936 +blue,1,time_period_02,place-wondl,0 +blue,1,time_period_03,place-aport,5943 +blue,1,time_period_03,place-aqucl,6418 +blue,1,time_period_03,place-bmmnl,1783 +blue,1,time_period_03,place-bomnl,4450 +blue,1,time_period_03,place-gover,37279 +blue,1,time_period_03,place-mvbcl,14181 +blue,1,time_period_03,place-orhte,2612 +blue,1,time_period_03,place-rbmnl,724 +blue,1,time_period_03,place-sdmnl,165 +blue,1,time_period_03,place-state,57670 +blue,1,time_period_03,place-wimnl,1926 +blue,1,time_period_03,place-wondl,0 +blue,1,time_period_04,place-aport,12307 +blue,1,time_period_04,place-aqucl,22948 +blue,1,time_period_04,place-bmmnl,3227 +blue,1,time_period_04,place-bomnl,21972 +blue,1,time_period_04,place-gover,115203 +blue,1,time_period_04,place-mvbcl,23233 +blue,1,time_period_04,place-orhte,4694 +blue,1,time_period_04,place-rbmnl,1307 +blue,1,time_period_04,place-sdmnl,737 +blue,1,time_period_04,place-state,148621 +blue,1,time_period_04,place-wimnl,2850 +blue,1,time_period_04,place-wondl,0 +blue,1,time_period_05,place-aport,18092 +blue,1,time_period_05,place-aqucl,54445 +blue,1,time_period_05,place-bmmnl,2722 +blue,1,time_period_05,place-bomnl,35496 +blue,1,time_period_05,place-gover,191799 +blue,1,time_period_05,place-mvbcl,26091 +blue,1,time_period_05,place-orhte,4470 +blue,1,time_period_05,place-rbmnl,1188 +blue,1,time_period_05,place-sdmnl,833 +blue,1,time_period_05,place-state,235362 +blue,1,time_period_05,place-wimnl,4251 +blue,1,time_period_05,place-wondl,0 +blue,1,time_period_06,place-aport,17420 +blue,1,time_period_06,place-aqucl,114850 +blue,1,time_period_06,place-bmmnl,2287 +blue,1,time_period_06,place-bomnl,74788 +blue,1,time_period_06,place-gover,319292 +blue,1,time_period_06,place-mvbcl,29881 +blue,1,time_period_06,place-orhte,5335 +blue,1,time_period_06,place-rbmnl,1204 +blue,1,time_period_06,place-sdmnl,1028 +blue,1,time_period_06,place-state,405163 +blue,1,time_period_06,place-wimnl,4940 +blue,1,time_period_06,place-wondl,0 +blue,1,time_period_07,place-aport,25165 +blue,1,time_period_07,place-aqucl,65584 +blue,1,time_period_07,place-bmmnl,2048 +blue,1,time_period_07,place-bomnl,24632 +blue,1,time_period_07,place-gover,230197 +blue,1,time_period_07,place-mvbcl,22465 +blue,1,time_period_07,place-orhte,3913 +blue,1,time_period_07,place-rbmnl,625 +blue,1,time_period_07,place-sdmnl,424 +blue,1,time_period_07,place-state,212073 +blue,1,time_period_07,place-wimnl,2505 +blue,1,time_period_07,place-wondl,0 +blue,1,time_period_08,place-aport,13270 +blue,1,time_period_08,place-aqucl,43867 +blue,1,time_period_08,place-bmmnl,596 +blue,1,time_period_08,place-bomnl,12157 +blue,1,time_period_08,place-gover,156766 +blue,1,time_period_08,place-mvbcl,6126 +blue,1,time_period_08,place-orhte,1492 +blue,1,time_period_08,place-rbmnl,289 +blue,1,time_period_08,place-sdmnl,153 +blue,1,time_period_08,place-state,96722 +blue,1,time_period_08,place-wimnl,1770 +blue,1,time_period_08,place-wondl,0 +blue,1,time_period_09,place-aport,2807 +blue,1,time_period_09,place-aqucl,9141 +blue,1,time_period_09,place-bmmnl,96 +blue,1,time_period_09,place-bomnl,1301 +blue,1,time_period_09,place-gover,35583 +blue,1,time_period_09,place-mvbcl,1688 +blue,1,time_period_09,place-orhte,302 +blue,1,time_period_09,place-rbmnl,12 +blue,1,time_period_09,place-sdmnl,49 +blue,1,time_period_09,place-state,20222 +blue,1,time_period_09,place-wimnl,274 +blue,1,time_period_09,place-wondl,0 +green,0,time_period_01,place-alsgr,0 +green,0,time_period_01,place-armnl,1082 +green,0,time_period_01,place-babck,1 +green,0,time_period_01,place-bckhl,0 +green,0,time_period_01,place-bcnfd,13 +green,0,time_period_01,place-bcnwa,0 +green,0,time_period_01,place-bland,51 +green,0,time_period_01,place-bndhl,0 +green,0,time_period_01,place-boyls,1397 +green,0,time_period_01,place-brico,0 +green,0,time_period_01,place-brkhl,39 +green,0,time_period_01,place-brmnl,16 +green,0,time_period_01,place-bucen,34 +green,0,time_period_01,place-buest,8 +green,0,time_period_01,place-buwst,1 +green,0,time_period_01,place-bvmnl,467 +green,0,time_period_01,place-chhil,1 +green,0,time_period_01,place-chill,0 +green,0,time_period_01,place-chswk,0 +green,0,time_period_01,place-clmnl,0 +green,0,time_period_01,place-coecl,1763 +green,0,time_period_01,place-cool,0 +green,0,time_period_01,place-denrd,0 +green,0,time_period_01,place-eliot,0 +green,0,time_period_01,place-engav,0 +green,0,time_period_01,place-fbkst,0 +green,0,time_period_01,place-fenwd,20 +green,0,time_period_01,place-fenwy,38 +green,0,time_period_01,place-gover,32583 +green,0,time_period_01,place-grigg,0 +green,0,time_period_01,place-haecl,21729 +green,0,time_period_01,place-harvd,3 +green,0,time_period_01,place-hsmnl,0 +green,0,time_period_01,place-hwsst,0 +green,0,time_period_01,place-hymnl,779 +green,0,time_period_01,place-kencl,330 +green,0,time_period_01,place-kntst,0 +green,0,time_period_01,place-lake,0 +green,0,time_period_01,place-lech,5860 +green,0,time_period_01,place-lngmd,61 +green,0,time_period_01,place-longw,59 +green,0,time_period_01,place-mfa,44 +green,0,time_period_01,place-mispk,19 +green,0,time_period_01,place-newtn,8 +green,0,time_period_01,place-newto,4 +green,0,time_period_01,place-north,4979 +green,0,time_period_01,place-nuniv,120 +green,0,time_period_01,place-pktrm,13521 +green,0,time_period_01,place-plsgr,0 +green,0,time_period_01,place-prmnl,308 +green,0,time_period_01,place-river,0 +green,0,time_period_01,place-rsmnl,78 +green,0,time_period_01,place-rvrwy,9 +green,0,time_period_01,place-smary,0 +green,0,time_period_01,place-sougr,0 +green,0,time_period_01,place-spmnl,492 +green,0,time_period_01,place-sthld,0 +green,0,time_period_01,place-stpul,0 +green,0,time_period_01,place-sumav,0 +green,0,time_period_01,place-symcl,383 +green,0,time_period_01,place-tapst,0 +green,0,time_period_01,place-waban,3 +green,0,time_period_01,place-wascm,0 +green,0,time_period_01,place-woodl,0 +green,0,time_period_01,place-wrnst,0 +green,0,time_period_02,place-alsgr,444 +green,0,time_period_02,place-armnl,6295 +green,0,time_period_02,place-babck,53 +green,0,time_period_02,place-bckhl,72 +green,0,time_period_02,place-bcnfd,596 +green,0,time_period_02,place-bcnwa,99 +green,0,time_period_02,place-bland,129 +green,0,time_period_02,place-bndhl,48 +green,0,time_period_02,place-boyls,5858 +green,0,time_period_02,place-brico,131 +green,0,time_period_02,place-brkhl,254 +green,0,time_period_02,place-brmnl,115 +green,0,time_period_02,place-bucen,113 +green,0,time_period_02,place-buest,67 +green,0,time_period_02,place-buwst,25 +green,0,time_period_02,place-bvmnl,3305 +green,0,time_period_02,place-chhil,130 +green,0,time_period_02,place-chill,67 +green,0,time_period_02,place-chswk,27 +green,0,time_period_02,place-clmnl,0 +green,0,time_period_02,place-coecl,10750 +green,0,time_period_02,place-cool,321 +green,0,time_period_02,place-denrd,4 +green,0,time_period_02,place-eliot,78 +green,0,time_period_02,place-engav,5 +green,0,time_period_02,place-fbkst,16 +green,0,time_period_02,place-fenwd,41 +green,0,time_period_02,place-fenwy,583 +green,0,time_period_02,place-gover,81165 +green,0,time_period_02,place-grigg,247 +green,0,time_period_02,place-haecl,31181 +green,0,time_period_02,place-harvd,1282 +green,0,time_period_02,place-hsmnl,0 +green,0,time_period_02,place-hwsst,27 +green,0,time_period_02,place-hymnl,3989 +green,0,time_period_02,place-kencl,4515 +green,0,time_period_02,place-kntst,7 +green,0,time_period_02,place-lake,0 +green,0,time_period_02,place-lech,12632 +green,0,time_period_02,place-lngmd,179 +green,0,time_period_02,place-longw,633 +green,0,time_period_02,place-mfa,186 +green,0,time_period_02,place-mispk,88 +green,0,time_period_02,place-newtn,370 +green,0,time_period_02,place-newto,303 +green,0,time_period_02,place-north,29947 +green,0,time_period_02,place-nuniv,658 +green,0,time_period_02,place-pktrm,69815 +green,0,time_period_02,place-plsgr,45 +green,0,time_period_02,place-prmnl,1076 +green,0,time_period_02,place-river,0 +green,0,time_period_02,place-rsmnl,2328 +green,0,time_period_02,place-rvrwy,117 +green,0,time_period_02,place-smary,78 +green,0,time_period_02,place-sougr,0 +green,0,time_period_02,place-spmnl,2637 +green,0,time_period_02,place-sthld,55 +green,0,time_period_02,place-stpul,59 +green,0,time_period_02,place-sumav,123 +green,0,time_period_02,place-symcl,1040 +green,0,time_period_02,place-tapst,57 +green,0,time_period_02,place-waban,104 +green,0,time_period_02,place-wascm,358 +green,0,time_period_02,place-woodl,0 +green,0,time_period_02,place-wrnst,303 +green,0,time_period_03,place-alsgr,2213 +green,0,time_period_03,place-armnl,27282 +green,0,time_period_03,place-babck,770 +green,0,time_period_03,place-bckhl,331 +green,0,time_period_03,place-bcnfd,3587 +green,0,time_period_03,place-bcnwa,866 +green,0,time_period_03,place-bland,1125 +green,0,time_period_03,place-bndhl,536 +green,0,time_period_03,place-boyls,29855 +green,0,time_period_03,place-brico,1413 +green,0,time_period_03,place-brkhl,2925 +green,0,time_period_03,place-brmnl,506 +green,0,time_period_03,place-bucen,867 +green,0,time_period_03,place-buest,613 +green,0,time_period_03,place-buwst,277 +green,0,time_period_03,place-bvmnl,9878 +green,0,time_period_03,place-chhil,1127 +green,0,time_period_03,place-chill,270 +green,0,time_period_03,place-chswk,265 +green,0,time_period_03,place-clmnl,0 +green,0,time_period_03,place-coecl,76339 +green,0,time_period_03,place-cool,2830 +green,0,time_period_03,place-denrd,125 +green,0,time_period_03,place-eliot,488 +green,0,time_period_03,place-engav,0 +green,0,time_period_03,place-fbkst,319 +green,0,time_period_03,place-fenwd,112 +green,0,time_period_03,place-fenwy,5434 +green,0,time_period_03,place-gover,228113 +green,0,time_period_03,place-grigg,2204 +green,0,time_period_03,place-haecl,93483 +green,0,time_period_03,place-harvd,3507 +green,0,time_period_03,place-hsmnl,0 +green,0,time_period_03,place-hwsst,355 +green,0,time_period_03,place-hymnl,18791 +green,0,time_period_03,place-kencl,22719 +green,0,time_period_03,place-kntst,365 +green,0,time_period_03,place-lake,0 +green,0,time_period_03,place-lech,86982 +green,0,time_period_03,place-lngmd,783 +green,0,time_period_03,place-longw,5251 +green,0,time_period_03,place-mfa,770 +green,0,time_period_03,place-mispk,245 +green,0,time_period_03,place-newtn,935 +green,0,time_period_03,place-newto,1243 +green,0,time_period_03,place-north,175125 +green,0,time_period_03,place-nuniv,2090 +green,0,time_period_03,place-pktrm,372177 +green,0,time_period_03,place-plsgr,427 +green,0,time_period_03,place-prmnl,5156 +green,0,time_period_03,place-river,0 +green,0,time_period_03,place-rsmnl,11263 +green,0,time_period_03,place-rvrwy,402 +green,0,time_period_03,place-smary,1234 +green,0,time_period_03,place-sougr,1 +green,0,time_period_03,place-spmnl,21286 +green,0,time_period_03,place-sthld,766 +green,0,time_period_03,place-stpul,674 +green,0,time_period_03,place-sumav,1948 +green,0,time_period_03,place-symcl,3913 +green,0,time_period_03,place-tapst,171 +green,0,time_period_03,place-waban,507 +green,0,time_period_03,place-wascm,2146 +green,0,time_period_03,place-woodl,6 +green,0,time_period_03,place-wrnst,2514 +green,0,time_period_04,place-alsgr,2258 +green,0,time_period_04,place-armnl,45676 +green,0,time_period_04,place-babck,2139 +green,0,time_period_04,place-bckhl,293 +green,0,time_period_04,place-bcnfd,2481 +green,0,time_period_04,place-bcnwa,796 +green,0,time_period_04,place-bland,10227 +green,0,time_period_04,place-bndhl,400 +green,0,time_period_04,place-boyls,72322 +green,0,time_period_04,place-brico,5992 +green,0,time_period_04,place-brkhl,3701 +green,0,time_period_04,place-brmnl,1661 +green,0,time_period_04,place-bucen,12169 +green,0,time_period_04,place-buest,11065 +green,0,time_period_04,place-buwst,2621 +green,0,time_period_04,place-bvmnl,11894 +green,0,time_period_04,place-chhil,1161 +green,0,time_period_04,place-chill,498 +green,0,time_period_04,place-chswk,449 +green,0,time_period_04,place-clmnl,0 +green,0,time_period_04,place-coecl,102971 +green,0,time_period_04,place-cool,10352 +green,0,time_period_04,place-denrd,228 +green,0,time_period_04,place-eliot,517 +green,0,time_period_04,place-engav,35 +green,0,time_period_04,place-fbkst,432 +green,0,time_period_04,place-fenwd,489 +green,0,time_period_04,place-fenwy,8863 +green,0,time_period_04,place-gover,227882 +green,0,time_period_04,place-grigg,2582 +green,0,time_period_04,place-haecl,105043 +green,0,time_period_04,place-harvd,8934 +green,0,time_period_04,place-hsmnl,0 +green,0,time_period_04,place-hwsst,1264 +green,0,time_period_04,place-hymnl,41987 +green,0,time_period_04,place-kencl,44540 +green,0,time_period_04,place-kntst,1226 +green,0,time_period_04,place-lake,0 +green,0,time_period_04,place-lech,90601 +green,0,time_period_04,place-lngmd,2569 +green,0,time_period_04,place-longw,8367 +green,0,time_period_04,place-mfa,2199 +green,0,time_period_04,place-mispk,606 +green,0,time_period_04,place-newtn,1127 +green,0,time_period_04,place-newto,1959 +green,0,time_period_04,place-north,121909 +green,0,time_period_04,place-nuniv,7151 +green,0,time_period_04,place-pktrm,439145 +green,0,time_period_04,place-plsgr,2586 +green,0,time_period_04,place-prmnl,9293 +green,0,time_period_04,place-river,0 +green,0,time_period_04,place-rsmnl,9467 +green,0,time_period_04,place-rvrwy,550 +green,0,time_period_04,place-smary,5465 +green,0,time_period_04,place-sougr,17 +green,0,time_period_04,place-spmnl,30430 +green,0,time_period_04,place-sthld,1051 +green,0,time_period_04,place-stpul,1408 +green,0,time_period_04,place-sumav,3346 +green,0,time_period_04,place-symcl,7103 +green,0,time_period_04,place-tapst,602 +green,0,time_period_04,place-waban,657 +green,0,time_period_04,place-wascm,3519 +green,0,time_period_04,place-woodl,88 +green,0,time_period_04,place-wrnst,3100 +green,0,time_period_05,place-alsgr,1243 +green,0,time_period_05,place-armnl,36122 +green,0,time_period_05,place-babck,1837 +green,0,time_period_05,place-bckhl,168 +green,0,time_period_05,place-bcnfd,1295 +green,0,time_period_05,place-bcnwa,710 +green,0,time_period_05,place-bland,9243 +green,0,time_period_05,place-bndhl,199 +green,0,time_period_05,place-boyls,59490 +green,0,time_period_05,place-brico,5236 +green,0,time_period_05,place-brkhl,5745 +green,0,time_period_05,place-brmnl,1868 +green,0,time_period_05,place-bucen,11276 +green,0,time_period_05,place-buest,9290 +green,0,time_period_05,place-buwst,3027 +green,0,time_period_05,place-bvmnl,6905 +green,0,time_period_05,place-chhil,1572 +green,0,time_period_05,place-chill,379 +green,0,time_period_05,place-chswk,194 +green,0,time_period_05,place-clmnl,0 +green,0,time_period_05,place-coecl,82072 +green,0,time_period_05,place-cool,8962 +green,0,time_period_05,place-denrd,91 +green,0,time_period_05,place-eliot,222 +green,0,time_period_05,place-engav,11 +green,0,time_period_05,place-fbkst,209 +green,0,time_period_05,place-fenwd,559 +green,0,time_period_05,place-fenwy,9433 +green,0,time_period_05,place-gover,159965 +green,0,time_period_05,place-grigg,1626 +green,0,time_period_05,place-haecl,69113 +green,0,time_period_05,place-harvd,8492 +green,0,time_period_05,place-hsmnl,0 +green,0,time_period_05,place-hwsst,910 +green,0,time_period_05,place-hymnl,41431 +green,0,time_period_05,place-kencl,33764 +green,0,time_period_05,place-kntst,913 +green,0,time_period_05,place-lake,0 +green,0,time_period_05,place-lech,67752 +green,0,time_period_05,place-lngmd,2112 +green,0,time_period_05,place-longw,12394 +green,0,time_period_05,place-mfa,1754 +green,0,time_period_05,place-mispk,338 +green,0,time_period_05,place-newtn,539 +green,0,time_period_05,place-newto,1312 +green,0,time_period_05,place-north,58313 +green,0,time_period_05,place-nuniv,6506 +green,0,time_period_05,place-pktrm,264047 +green,0,time_period_05,place-plsgr,2024 +green,0,time_period_05,place-prmnl,6350 +green,0,time_period_05,place-river,0 +green,0,time_period_05,place-rsmnl,4205 +green,0,time_period_05,place-rvrwy,283 +green,0,time_period_05,place-smary,5685 +green,0,time_period_05,place-sougr,9 +green,0,time_period_05,place-spmnl,25542 +green,0,time_period_05,place-sthld,387 +green,0,time_period_05,place-stpul,846 +green,0,time_period_05,place-sumav,1727 +green,0,time_period_05,place-symcl,4291 +green,0,time_period_05,place-tapst,469 +green,0,time_period_05,place-waban,291 +green,0,time_period_05,place-wascm,1571 +green,0,time_period_05,place-woodl,12 +green,0,time_period_05,place-wrnst,2238 +green,0,time_period_06,place-alsgr,1573 +green,0,time_period_06,place-armnl,74596 +green,0,time_period_06,place-babck,2253 +green,0,time_period_06,place-bckhl,174 +green,0,time_period_06,place-bcnfd,1325 +green,0,time_period_06,place-bcnwa,946 +green,0,time_period_06,place-bland,9255 +green,0,time_period_06,place-bndhl,279 +green,0,time_period_06,place-boyls,97585 +green,0,time_period_06,place-brico,6634 +green,0,time_period_06,place-brkhl,3317 +green,0,time_period_06,place-brmnl,2909 +green,0,time_period_06,place-bucen,10302 +green,0,time_period_06,place-buest,8875 +green,0,time_period_06,place-buwst,4109 +green,0,time_period_06,place-bvmnl,7000 +green,0,time_period_06,place-chhil,2225 +green,0,time_period_06,place-chill,543 +green,0,time_period_06,place-chswk,238 +green,0,time_period_06,place-clmnl,0 +green,0,time_period_06,place-coecl,155972 +green,0,time_period_06,place-cool,13587 +green,0,time_period_06,place-denrd,153 +green,0,time_period_06,place-eliot,343 +green,0,time_period_06,place-engav,37 +green,0,time_period_06,place-fbkst,333 +green,0,time_period_06,place-fenwd,987 +green,0,time_period_06,place-fenwy,11866 +green,0,time_period_06,place-gover,244037 +green,0,time_period_06,place-grigg,2026 +green,0,time_period_06,place-haecl,82627 +green,0,time_period_06,place-harvd,10738 +green,0,time_period_06,place-hsmnl,0 +green,0,time_period_06,place-hwsst,1266 +green,0,time_period_06,place-hymnl,89261 +green,0,time_period_06,place-kencl,57995 +green,0,time_period_06,place-kntst,1385 +green,0,time_period_06,place-lake,0 +green,0,time_period_06,place-lech,125002 +green,0,time_period_06,place-lngmd,2779 +green,0,time_period_06,place-longw,17731 +green,0,time_period_06,place-mfa,2514 +green,0,time_period_06,place-mispk,397 +green,0,time_period_06,place-newtn,1039 +green,0,time_period_06,place-newto,1689 +green,0,time_period_06,place-north,102516 +green,0,time_period_06,place-nuniv,7982 +green,0,time_period_06,place-pktrm,461955 +green,0,time_period_06,place-plsgr,2777 +green,0,time_period_06,place-prmnl,9592 +green,0,time_period_06,place-river,0 +green,0,time_period_06,place-rsmnl,4523 +green,0,time_period_06,place-rvrwy,406 +green,0,time_period_06,place-smary,9148 +green,0,time_period_06,place-sougr,1 +green,0,time_period_06,place-spmnl,49300 +green,0,time_period_06,place-sthld,376 +green,0,time_period_06,place-stpul,1096 +green,0,time_period_06,place-sumav,2181 +green,0,time_period_06,place-symcl,6192 +green,0,time_period_06,place-tapst,799 +green,0,time_period_06,place-waban,445 +green,0,time_period_06,place-wascm,2339 +green,0,time_period_06,place-woodl,8 +green,0,time_period_06,place-wrnst,1856 +green,0,time_period_07,place-alsgr,1888 +green,0,time_period_07,place-armnl,48114 +green,0,time_period_07,place-babck,3095 +green,0,time_period_07,place-bckhl,84 +green,0,time_period_07,place-bcnfd,1006 +green,0,time_period_07,place-bcnwa,956 +green,0,time_period_07,place-bland,11535 +green,0,time_period_07,place-bndhl,186 +green,0,time_period_07,place-boyls,89516 +green,0,time_period_07,place-brico,9637 +green,0,time_period_07,place-brkhl,2119 +green,0,time_period_07,place-brmnl,1760 +green,0,time_period_07,place-bucen,17700 +green,0,time_period_07,place-buest,12347 +green,0,time_period_07,place-buwst,5864 +green,0,time_period_07,place-bvmnl,6443 +green,0,time_period_07,place-chhil,1242 +green,0,time_period_07,place-chill,552 +green,0,time_period_07,place-chswk,207 +green,0,time_period_07,place-clmnl,0 +green,0,time_period_07,place-coecl,119093 +green,0,time_period_07,place-cool,15991 +green,0,time_period_07,place-denrd,164 +green,0,time_period_07,place-eliot,162 +green,0,time_period_07,place-engav,18 +green,0,time_period_07,place-fbkst,218 +green,0,time_period_07,place-fenwd,655 +green,0,time_period_07,place-fenwy,15046 +green,0,time_period_07,place-gover,112343 +green,0,time_period_07,place-grigg,2615 +green,0,time_period_07,place-haecl,58158 +green,0,time_period_07,place-harvd,13582 +green,0,time_period_07,place-hsmnl,0 +green,0,time_period_07,place-hwsst,1186 +green,0,time_period_07,place-hymnl,86034 +green,0,time_period_07,place-kencl,52764 +green,0,time_period_07,place-kntst,971 +green,0,time_period_07,place-lake,0 +green,0,time_period_07,place-lech,75905 +green,0,time_period_07,place-lngmd,2073 +green,0,time_period_07,place-longw,17129 +green,0,time_period_07,place-mfa,2054 +green,0,time_period_07,place-mispk,279 +green,0,time_period_07,place-newtn,491 +green,0,time_period_07,place-newto,1231 +green,0,time_period_07,place-north,61452 +green,0,time_period_07,place-nuniv,10523 +green,0,time_period_07,place-pktrm,279417 +green,0,time_period_07,place-plsgr,5292 +green,0,time_period_07,place-prmnl,8930 +green,0,time_period_07,place-river,0 +green,0,time_period_07,place-rsmnl,3437 +green,0,time_period_07,place-rvrwy,172 +green,0,time_period_07,place-smary,10224 +green,0,time_period_07,place-sougr,0 +green,0,time_period_07,place-spmnl,26684 +green,0,time_period_07,place-sthld,362 +green,0,time_period_07,place-stpul,1178 +green,0,time_period_07,place-sumav,2068 +green,0,time_period_07,place-symcl,5868 +green,0,time_period_07,place-tapst,974 +green,0,time_period_07,place-waban,246 +green,0,time_period_07,place-wascm,2131 +green,0,time_period_07,place-woodl,23 +green,0,time_period_07,place-wrnst,1775 +green,0,time_period_08,place-alsgr,368 +green,0,time_period_08,place-armnl,13362 +green,0,time_period_08,place-babck,969 +green,0,time_period_08,place-bckhl,27 +green,0,time_period_08,place-bcnfd,186 +green,0,time_period_08,place-bcnwa,152 +green,0,time_period_08,place-bland,2278 +green,0,time_period_08,place-bndhl,45 +green,0,time_period_08,place-boyls,30947 +green,0,time_period_08,place-brico,1915 +green,0,time_period_08,place-brkhl,309 +green,0,time_period_08,place-brmnl,348 +green,0,time_period_08,place-bucen,5815 +green,0,time_period_08,place-buest,2183 +green,0,time_period_08,place-buwst,1551 +green,0,time_period_08,place-bvmnl,1270 +green,0,time_period_08,place-chhil,291 +green,0,time_period_08,place-chill,56 +green,0,time_period_08,place-chswk,3 +green,0,time_period_08,place-clmnl,0 +green,0,time_period_08,place-coecl,22029 +green,0,time_period_08,place-cool,1894 +green,0,time_period_08,place-denrd,5 +green,0,time_period_08,place-eliot,4 +green,0,time_period_08,place-engav,0 +green,0,time_period_08,place-fbkst,31 +green,0,time_period_08,place-fenwd,100 +green,0,time_period_08,place-fenwy,3358 +green,0,time_period_08,place-gover,27574 +green,0,time_period_08,place-grigg,702 +green,0,time_period_08,place-haecl,19491 +green,0,time_period_08,place-harvd,4377 +green,0,time_period_08,place-hsmnl,0 +green,0,time_period_08,place-hwsst,142 +green,0,time_period_08,place-hymnl,24229 +green,0,time_period_08,place-kencl,19089 +green,0,time_period_08,place-kntst,169 +green,0,time_period_08,place-lake,0 +green,0,time_period_08,place-lech,15923 +green,0,time_period_08,place-lngmd,486 +green,0,time_period_08,place-longw,2071 +green,0,time_period_08,place-mfa,498 +green,0,time_period_08,place-mispk,71 +green,0,time_period_08,place-newtn,123 +green,0,time_period_08,place-newto,257 +green,0,time_period_08,place-north,46218 +green,0,time_period_08,place-nuniv,2983 +green,0,time_period_08,place-pktrm,58851 +green,0,time_period_08,place-plsgr,1964 +green,0,time_period_08,place-prmnl,1674 +green,0,time_period_08,place-river,0 +green,0,time_period_08,place-rsmnl,850 +green,0,time_period_08,place-rvrwy,78 +green,0,time_period_08,place-smary,1779 +green,0,time_period_08,place-sougr,0 +green,0,time_period_08,place-spmnl,5323 +green,0,time_period_08,place-sthld,45 +green,0,time_period_08,place-stpul,219 +green,0,time_period_08,place-sumav,258 +green,0,time_period_08,place-symcl,1814 +green,0,time_period_08,place-tapst,175 +green,0,time_period_08,place-waban,17 +green,0,time_period_08,place-wascm,429 +green,0,time_period_08,place-woodl,1 +green,0,time_period_08,place-wrnst,461 +green,0,time_period_09,place-alsgr,112 +green,0,time_period_09,place-armnl,1697 +green,0,time_period_09,place-babck,219 +green,0,time_period_09,place-bckhl,0 +green,0,time_period_09,place-bcnfd,17 +green,0,time_period_09,place-bcnwa,3 +green,0,time_period_09,place-bland,403 +green,0,time_period_09,place-bndhl,1 +green,0,time_period_09,place-boyls,5128 +green,0,time_period_09,place-brico,303 +green,0,time_period_09,place-brkhl,20 +green,0,time_period_09,place-brmnl,41 +green,0,time_period_09,place-bucen,1322 +green,0,time_period_09,place-buest,729 +green,0,time_period_09,place-buwst,184 +green,0,time_period_09,place-bvmnl,198 +green,0,time_period_09,place-chhil,24 +green,0,time_period_09,place-chill,7 +green,0,time_period_09,place-chswk,3 +green,0,time_period_09,place-clmnl,0 +green,0,time_period_09,place-coecl,3357 +green,0,time_period_09,place-cool,242 +green,0,time_period_09,place-denrd,0 +green,0,time_period_09,place-eliot,4 +green,0,time_period_09,place-engav,0 +green,0,time_period_09,place-fbkst,0 +green,0,time_period_09,place-fenwd,21 +green,0,time_period_09,place-fenwy,887 +green,0,time_period_09,place-gover,4683 +green,0,time_period_09,place-grigg,190 +green,0,time_period_09,place-haecl,2589 +green,0,time_period_09,place-harvd,1097 +green,0,time_period_09,place-hsmnl,0 +green,0,time_period_09,place-hwsst,15 +green,0,time_period_09,place-hymnl,4600 +green,0,time_period_09,place-kencl,3696 +green,0,time_period_09,place-kntst,4 +green,0,time_period_09,place-lake,0 +green,0,time_period_09,place-lech,1790 +green,0,time_period_09,place-lngmd,74 +green,0,time_period_09,place-longw,362 +green,0,time_period_09,place-mfa,98 +green,0,time_period_09,place-mispk,5 +green,0,time_period_09,place-newtn,8 +green,0,time_period_09,place-newto,110 +green,0,time_period_09,place-north,2916 +green,0,time_period_09,place-nuniv,488 +green,0,time_period_09,place-pktrm,9928 +green,0,time_period_09,place-plsgr,253 +green,0,time_period_09,place-prmnl,223 +green,0,time_period_09,place-river,0 +green,0,time_period_09,place-rsmnl,238 +green,0,time_period_09,place-rvrwy,1 +green,0,time_period_09,place-smary,212 +green,0,time_period_09,place-sougr,0 +green,0,time_period_09,place-spmnl,495 +green,0,time_period_09,place-sthld,0 +green,0,time_period_09,place-stpul,32 +green,0,time_period_09,place-sumav,16 +green,0,time_period_09,place-symcl,301 +green,0,time_period_09,place-tapst,3 +green,0,time_period_09,place-waban,4 +green,0,time_period_09,place-wascm,36 +green,0,time_period_09,place-woodl,0 +green,0,time_period_09,place-wrnst,98 +green,1,time_period_01,place-alsgr,1269 +green,1,time_period_01,place-armnl,605 +green,1,time_period_01,place-babck,426 +green,1,time_period_01,place-bckhl,79 +green,1,time_period_01,place-bcnfd,932 +green,1,time_period_01,place-bcnwa,1039 +green,1,time_period_01,place-bland,19 +green,1,time_period_01,place-bndhl,281 +green,1,time_period_01,place-boyls,582 +green,1,time_period_01,place-brico,714 +green,1,time_period_01,place-brkhl,705 +green,1,time_period_01,place-brmnl,528 +green,1,time_period_01,place-bucen,153 +green,1,time_period_01,place-buest,19 +green,1,time_period_01,place-buwst,131 +green,1,time_period_01,place-bvmnl,1496 +green,1,time_period_01,place-chhil,1656 +green,1,time_period_01,place-chill,448 +green,1,time_period_01,place-chswk,1032 +green,1,time_period_01,place-clmnl,622 +green,1,time_period_01,place-coecl,2366 +green,1,time_period_01,place-cool,1308 +green,1,time_period_01,place-denrd,318 +green,1,time_period_01,place-eliot,1446 +green,1,time_period_01,place-engav,919 +green,1,time_period_01,place-fbkst,589 +green,1,time_period_01,place-fenwd,156 +green,1,time_period_01,place-fenwy,388 +green,1,time_period_01,place-gover,1787 +green,1,time_period_01,place-grigg,1467 +green,1,time_period_01,place-haecl,1517 +green,1,time_period_01,place-harvd,2059 +green,1,time_period_01,place-hsmnl,569 +green,1,time_period_01,place-hwsst,72 +green,1,time_period_01,place-hymnl,1578 +green,1,time_period_01,place-kencl,4429 +green,1,time_period_01,place-kntst,207 +green,1,time_period_01,place-lake,295 +green,1,time_period_01,place-lech,0 +green,1,time_period_01,place-lngmd,266 +green,1,time_period_01,place-longw,200 +green,1,time_period_01,place-mfa,128 +green,1,time_period_01,place-mispk,360 +green,1,time_period_01,place-newtn,1171 +green,1,time_period_01,place-newto,1729 +green,1,time_period_01,place-north,235 +green,1,time_period_01,place-nuniv,247 +green,1,time_period_01,place-pktrm,5067 +green,1,time_period_01,place-plsgr,86 +green,1,time_period_01,place-prmnl,435 +green,1,time_period_01,place-river,917 +green,1,time_period_01,place-rsmnl,1631 +green,1,time_period_01,place-rvrwy,251 +green,1,time_period_01,place-smary,581 +green,1,time_period_01,place-sougr,235 +green,1,time_period_01,place-spmnl,4 +green,1,time_period_01,place-sthld,1343 +green,1,time_period_01,place-stpul,616 +green,1,time_period_01,place-sumav,640 +green,1,time_period_01,place-symcl,328 +green,1,time_period_01,place-tapst,924 +green,1,time_period_01,place-waban,579 +green,1,time_period_01,place-wascm,2326 +green,1,time_period_01,place-woodl,1275 +green,1,time_period_01,place-wrnst,1277 +green,1,time_period_02,place-alsgr,4593 +green,1,time_period_02,place-armnl,3688 +green,1,time_period_02,place-babck,998 +green,1,time_period_02,place-bckhl,480 +green,1,time_period_02,place-bcnfd,4505 +green,1,time_period_02,place-bcnwa,2921 +green,1,time_period_02,place-bland,136 +green,1,time_period_02,place-bndhl,1069 +green,1,time_period_02,place-boyls,2383 +green,1,time_period_02,place-brico,3264 +green,1,time_period_02,place-brkhl,3231 +green,1,time_period_02,place-brmnl,2119 +green,1,time_period_02,place-bucen,233 +green,1,time_period_02,place-buest,106 +green,1,time_period_02,place-buwst,295 +green,1,time_period_02,place-bvmnl,4564 +green,1,time_period_02,place-chhil,5186 +green,1,time_period_02,place-chill,1044 +green,1,time_period_02,place-chswk,2150 +green,1,time_period_02,place-clmnl,2108 +green,1,time_period_02,place-coecl,7295 +green,1,time_period_02,place-cool,5085 +green,1,time_period_02,place-denrd,1444 +green,1,time_period_02,place-eliot,4544 +green,1,time_period_02,place-engav,2555 +green,1,time_period_02,place-fbkst,1769 +green,1,time_period_02,place-fenwd,830 +green,1,time_period_02,place-fenwy,2509 +green,1,time_period_02,place-gover,6103 +green,1,time_period_02,place-grigg,4334 +green,1,time_period_02,place-haecl,4264 +green,1,time_period_02,place-harvd,5957 +green,1,time_period_02,place-hsmnl,2024 +green,1,time_period_02,place-hwsst,533 +green,1,time_period_02,place-hymnl,7081 +green,1,time_period_02,place-kencl,10341 +green,1,time_period_02,place-kntst,890 +green,1,time_period_02,place-lake,899 +green,1,time_period_02,place-lech,0 +green,1,time_period_02,place-lngmd,1942 +green,1,time_period_02,place-longw,1121 +green,1,time_period_02,place-mfa,916 +green,1,time_period_02,place-mispk,2410 +green,1,time_period_02,place-newtn,3752 +green,1,time_period_02,place-newto,4381 +green,1,time_period_02,place-north,1505 +green,1,time_period_02,place-nuniv,1643 +green,1,time_period_02,place-pktrm,22313 +green,1,time_period_02,place-plsgr,554 +green,1,time_period_02,place-prmnl,2001 +green,1,time_period_02,place-river,2834 +green,1,time_period_02,place-rsmnl,6350 +green,1,time_period_02,place-rvrwy,1219 +green,1,time_period_02,place-smary,1551 +green,1,time_period_02,place-sougr,1046 +green,1,time_period_02,place-spmnl,32 +green,1,time_period_02,place-sthld,3624 +green,1,time_period_02,place-stpul,2380 +green,1,time_period_02,place-sumav,2553 +green,1,time_period_02,place-symcl,2813 +green,1,time_period_02,place-tapst,2311 +green,1,time_period_02,place-waban,2423 +green,1,time_period_02,place-wascm,4968 +green,1,time_period_02,place-woodl,3591 +green,1,time_period_02,place-wrnst,3520 +green,1,time_period_03,place-alsgr,19486 +green,1,time_period_03,place-armnl,21535 +green,1,time_period_03,place-babck,7333 +green,1,time_period_03,place-bckhl,2338 +green,1,time_period_03,place-bcnfd,13062 +green,1,time_period_03,place-bcnwa,13543 +green,1,time_period_03,place-bland,843 +green,1,time_period_03,place-bndhl,7765 +green,1,time_period_03,place-boyls,13798 +green,1,time_period_03,place-brico,20311 +green,1,time_period_03,place-brkhl,12427 +green,1,time_period_03,place-brmnl,16803 +green,1,time_period_03,place-bucen,1198 +green,1,time_period_03,place-buest,844 +green,1,time_period_03,place-buwst,1338 +green,1,time_period_03,place-bvmnl,12646 +green,1,time_period_03,place-chhil,11550 +green,1,time_period_03,place-chill,5724 +green,1,time_period_03,place-chswk,11394 +green,1,time_period_03,place-clmnl,13082 +green,1,time_period_03,place-coecl,57042 +green,1,time_period_03,place-cool,21029 +green,1,time_period_03,place-denrd,10811 +green,1,time_period_03,place-eliot,13274 +green,1,time_period_03,place-engav,14297 +green,1,time_period_03,place-fbkst,10463 +green,1,time_period_03,place-fenwd,4432 +green,1,time_period_03,place-fenwy,9001 +green,1,time_period_03,place-gover,23043 +green,1,time_period_03,place-grigg,19761 +green,1,time_period_03,place-haecl,13679 +green,1,time_period_03,place-harvd,30149 +green,1,time_period_03,place-hsmnl,8964 +green,1,time_period_03,place-hwsst,2986 +green,1,time_period_03,place-hymnl,49083 +green,1,time_period_03,place-kencl,69121 +green,1,time_period_03,place-kntst,4388 +green,1,time_period_03,place-lake,5048 +green,1,time_period_03,place-lech,0 +green,1,time_period_03,place-lngmd,12068 +green,1,time_period_03,place-longw,4667 +green,1,time_period_03,place-mfa,7120 +green,1,time_period_03,place-mispk,12128 +green,1,time_period_03,place-newtn,13274 +green,1,time_period_03,place-newto,15273 +green,1,time_period_03,place-north,13936 +green,1,time_period_03,place-nuniv,13327 +green,1,time_period_03,place-pktrm,96449 +green,1,time_period_03,place-plsgr,3200 +green,1,time_period_03,place-prmnl,21482 +green,1,time_period_03,place-river,10140 +green,1,time_period_03,place-rsmnl,17627 +green,1,time_period_03,place-rvrwy,12583 +green,1,time_period_03,place-smary,6646 +green,1,time_period_03,place-sougr,5833 +green,1,time_period_03,place-spmnl,305 +green,1,time_period_03,place-sthld,16573 +green,1,time_period_03,place-stpul,9984 +green,1,time_period_03,place-sumav,12699 +green,1,time_period_03,place-symcl,21320 +green,1,time_period_03,place-tapst,11376 +green,1,time_period_03,place-waban,11756 +green,1,time_period_03,place-wascm,16924 +green,1,time_period_03,place-woodl,11798 +green,1,time_period_03,place-wrnst,19568 +green,1,time_period_04,place-alsgr,25309 +green,1,time_period_04,place-armnl,64718 +green,1,time_period_04,place-babck,21369 +green,1,time_period_04,place-bckhl,2584 +green,1,time_period_04,place-bcnfd,18413 +green,1,time_period_04,place-bcnwa,16622 +green,1,time_period_04,place-bland,6581 +green,1,time_period_04,place-bndhl,5683 +green,1,time_period_04,place-boyls,34700 +green,1,time_period_04,place-brico,38634 +green,1,time_period_04,place-brkhl,18943 +green,1,time_period_04,place-brmnl,30512 +green,1,time_period_04,place-bucen,9832 +green,1,time_period_04,place-buest,7674 +green,1,time_period_04,place-buwst,9542 +green,1,time_period_04,place-bvmnl,29461 +green,1,time_period_04,place-chhil,15300 +green,1,time_period_04,place-chill,6963 +green,1,time_period_04,place-chswk,13717 +green,1,time_period_04,place-clmnl,11699 +green,1,time_period_04,place-coecl,114036 +green,1,time_period_04,place-cool,39644 +green,1,time_period_04,place-denrd,7564 +green,1,time_period_04,place-eliot,10370 +green,1,time_period_04,place-engav,8625 +green,1,time_period_04,place-fbkst,9091 +green,1,time_period_04,place-fenwd,5777 +green,1,time_period_04,place-fenwy,25928 +green,1,time_period_04,place-gover,32259 +green,1,time_period_04,place-grigg,24734 +green,1,time_period_04,place-haecl,17707 +green,1,time_period_04,place-harvd,51543 +green,1,time_period_04,place-hsmnl,13100 +green,1,time_period_04,place-hwsst,5063 +green,1,time_period_04,place-hymnl,67701 +green,1,time_period_04,place-kencl,116493 +green,1,time_period_04,place-kntst,7213 +green,1,time_period_04,place-lake,7685 +green,1,time_period_04,place-lech,0 +green,1,time_period_04,place-lngmd,35040 +green,1,time_period_04,place-longw,15238 +green,1,time_period_04,place-mfa,18507 +green,1,time_period_04,place-mispk,15007 +green,1,time_period_04,place-newtn,17185 +green,1,time_period_04,place-newto,22300 +green,1,time_period_04,place-north,12867 +green,1,time_period_04,place-nuniv,20157 +green,1,time_period_04,place-pktrm,138847 +green,1,time_period_04,place-plsgr,11368 +green,1,time_period_04,place-prmnl,38233 +green,1,time_period_04,place-river,8421 +green,1,time_period_04,place-rsmnl,28564 +green,1,time_period_04,place-rvrwy,9084 +green,1,time_period_04,place-smary,13282 +green,1,time_period_04,place-sougr,4515 +green,1,time_period_04,place-spmnl,1092 +green,1,time_period_04,place-sthld,15178 +green,1,time_period_04,place-stpul,15009 +green,1,time_period_04,place-sumav,12799 +green,1,time_period_04,place-symcl,28539 +green,1,time_period_04,place-tapst,11057 +green,1,time_period_04,place-waban,7618 +green,1,time_period_04,place-wascm,28585 +green,1,time_period_04,place-woodl,12889 +green,1,time_period_04,place-wrnst,21896 +green,1,time_period_05,place-alsgr,9577 +green,1,time_period_05,place-armnl,75768 +green,1,time_period_05,place-babck,12542 +green,1,time_period_05,place-bckhl,1062 +green,1,time_period_05,place-bcnfd,5971 +green,1,time_period_05,place-bcnwa,7388 +green,1,time_period_05,place-bland,6175 +green,1,time_period_05,place-bndhl,1395 +green,1,time_period_05,place-boyls,37116 +green,1,time_period_05,place-brico,15671 +green,1,time_period_05,place-brkhl,11789 +green,1,time_period_05,place-brmnl,27391 +green,1,time_period_05,place-bucen,11415 +green,1,time_period_05,place-buest,8293 +green,1,time_period_05,place-buwst,8508 +green,1,time_period_05,place-bvmnl,15642 +green,1,time_period_05,place-chhil,13155 +green,1,time_period_05,place-chill,3859 +green,1,time_period_05,place-chswk,5134 +green,1,time_period_05,place-clmnl,6501 +green,1,time_period_05,place-coecl,121857 +green,1,time_period_05,place-cool,20773 +green,1,time_period_05,place-denrd,2862 +green,1,time_period_05,place-eliot,4154 +green,1,time_period_05,place-engav,3018 +green,1,time_period_05,place-fbkst,2582 +green,1,time_period_05,place-fenwd,3679 +green,1,time_period_05,place-fenwy,21248 +green,1,time_period_05,place-gover,22993 +green,1,time_period_05,place-grigg,7980 +green,1,time_period_05,place-haecl,10289 +green,1,time_period_05,place-harvd,23158 +green,1,time_period_05,place-hsmnl,7829 +green,1,time_period_05,place-hwsst,2368 +green,1,time_period_05,place-hymnl,57490 +green,1,time_period_05,place-kencl,97341 +green,1,time_period_05,place-kntst,3651 +green,1,time_period_05,place-lake,7022 +green,1,time_period_05,place-lech,0 +green,1,time_period_05,place-lngmd,22980 +green,1,time_period_05,place-longw,14266 +green,1,time_period_05,place-mfa,18693 +green,1,time_period_05,place-mispk,5533 +green,1,time_period_05,place-newtn,9584 +green,1,time_period_05,place-newto,13002 +green,1,time_period_05,place-north,4782 +green,1,time_period_05,place-nuniv,16755 +green,1,time_period_05,place-pktrm,122513 +green,1,time_period_05,place-plsgr,8389 +green,1,time_period_05,place-prmnl,38300 +green,1,time_period_05,place-river,5053 +green,1,time_period_05,place-rsmnl,15605 +green,1,time_period_05,place-rvrwy,3230 +green,1,time_period_05,place-smary,7560 +green,1,time_period_05,place-sougr,1920 +green,1,time_period_05,place-spmnl,1012 +green,1,time_period_05,place-sthld,5303 +green,1,time_period_05,place-stpul,4685 +green,1,time_period_05,place-sumav,4052 +green,1,time_period_05,place-symcl,19270 +green,1,time_period_05,place-tapst,4585 +green,1,time_period_05,place-waban,3651 +green,1,time_period_05,place-wascm,11442 +green,1,time_period_05,place-woodl,7236 +green,1,time_period_05,place-wrnst,14407 +green,1,time_period_06,place-alsgr,7941 +green,1,time_period_06,place-armnl,198672 +green,1,time_period_06,place-babck,17087 +green,1,time_period_06,place-bckhl,945 +green,1,time_period_06,place-bcnfd,6999 +green,1,time_period_06,place-bcnwa,8197 +green,1,time_period_06,place-bland,11154 +green,1,time_period_06,place-bndhl,1792 +green,1,time_period_06,place-boyls,64225 +green,1,time_period_06,place-brico,15007 +green,1,time_period_06,place-brkhl,12516 +green,1,time_period_06,place-brmnl,37492 +green,1,time_period_06,place-bucen,18481 +green,1,time_period_06,place-buest,12412 +green,1,time_period_06,place-buwst,12058 +green,1,time_period_06,place-bvmnl,22886 +green,1,time_period_06,place-chhil,19803 +green,1,time_period_06,place-chill,6351 +green,1,time_period_06,place-chswk,4307 +green,1,time_period_06,place-clmnl,8773 +green,1,time_period_06,place-coecl,229380 +green,1,time_period_06,place-cool,25096 +green,1,time_period_06,place-denrd,2642 +green,1,time_period_06,place-eliot,6689 +green,1,time_period_06,place-engav,3996 +green,1,time_period_06,place-fbkst,3799 +green,1,time_period_06,place-fenwd,4221 +green,1,time_period_06,place-fenwy,30152 +green,1,time_period_06,place-gover,41592 +green,1,time_period_06,place-grigg,7458 +green,1,time_period_06,place-haecl,16268 +green,1,time_period_06,place-harvd,20319 +green,1,time_period_06,place-hsmnl,7578 +green,1,time_period_06,place-hwsst,3061 +green,1,time_period_06,place-hymnl,97042 +green,1,time_period_06,place-kencl,157072 +green,1,time_period_06,place-kntst,5177 +green,1,time_period_06,place-lake,9633 +green,1,time_period_06,place-lech,0 +green,1,time_period_06,place-lngmd,26553 +green,1,time_period_06,place-longw,19214 +green,1,time_period_06,place-mfa,20030 +green,1,time_period_06,place-mispk,5572 +green,1,time_period_06,place-newtn,17516 +green,1,time_period_06,place-newto,19882 +green,1,time_period_06,place-north,11219 +green,1,time_period_06,place-nuniv,20429 +green,1,time_period_06,place-pktrm,187478 +green,1,time_period_06,place-plsgr,12015 +green,1,time_period_06,place-prmnl,71685 +green,1,time_period_06,place-river,8881 +green,1,time_period_06,place-rsmnl,18707 +green,1,time_period_06,place-rvrwy,3855 +green,1,time_period_06,place-smary,10602 +green,1,time_period_06,place-sougr,2498 +green,1,time_period_06,place-spmnl,2495 +green,1,time_period_06,place-sthld,5526 +green,1,time_period_06,place-stpul,7305 +green,1,time_period_06,place-sumav,5697 +green,1,time_period_06,place-symcl,25252 +green,1,time_period_06,place-tapst,4801 +green,1,time_period_06,place-waban,5373 +green,1,time_period_06,place-wascm,11289 +green,1,time_period_06,place-woodl,12098 +green,1,time_period_06,place-wrnst,8572 +green,1,time_period_07,place-alsgr,4979 +green,1,time_period_07,place-armnl,89365 +green,1,time_period_07,place-babck,8806 +green,1,time_period_07,place-bckhl,700 +green,1,time_period_07,place-bcnfd,4416 +green,1,time_period_07,place-bcnwa,6061 +green,1,time_period_07,place-bland,7194 +green,1,time_period_07,place-bndhl,1003 +green,1,time_period_07,place-boyls,51983 +green,1,time_period_07,place-brico,11514 +green,1,time_period_07,place-brkhl,6386 +green,1,time_period_07,place-brmnl,22077 +green,1,time_period_07,place-bucen,11802 +green,1,time_period_07,place-buest,8957 +green,1,time_period_07,place-buwst,7502 +green,1,time_period_07,place-bvmnl,12328 +green,1,time_period_07,place-chhil,10907 +green,1,time_period_07,place-chill,4336 +green,1,time_period_07,place-chswk,3322 +green,1,time_period_07,place-clmnl,5407 +green,1,time_period_07,place-coecl,161985 +green,1,time_period_07,place-cool,20344 +green,1,time_period_07,place-denrd,2000 +green,1,time_period_07,place-eliot,3380 +green,1,time_period_07,place-engav,2215 +green,1,time_period_07,place-fbkst,2090 +green,1,time_period_07,place-fenwd,2131 +green,1,time_period_07,place-fenwy,22290 +green,1,time_period_07,place-gover,21259 +green,1,time_period_07,place-grigg,4109 +green,1,time_period_07,place-haecl,9366 +green,1,time_period_07,place-harvd,17689 +green,1,time_period_07,place-hsmnl,2521 +green,1,time_period_07,place-hwsst,1751 +green,1,time_period_07,place-hymnl,81853 +green,1,time_period_07,place-kencl,103453 +green,1,time_period_07,place-kntst,2275 +green,1,time_period_07,place-lake,8222 +green,1,time_period_07,place-lech,0 +green,1,time_period_07,place-lngmd,27718 +green,1,time_period_07,place-longw,10334 +green,1,time_period_07,place-mfa,18171 +green,1,time_period_07,place-mispk,3119 +green,1,time_period_07,place-newtn,9235 +green,1,time_period_07,place-newto,12896 +green,1,time_period_07,place-north,6295 +green,1,time_period_07,place-nuniv,24794 +green,1,time_period_07,place-pktrm,135601 +green,1,time_period_07,place-plsgr,7849 +green,1,time_period_07,place-prmnl,48518 +green,1,time_period_07,place-river,3081 +green,1,time_period_07,place-rsmnl,11672 +green,1,time_period_07,place-rvrwy,2094 +green,1,time_period_07,place-smary,8379 +green,1,time_period_07,place-sougr,1422 +green,1,time_period_07,place-spmnl,960 +green,1,time_period_07,place-sthld,4004 +green,1,time_period_07,place-stpul,5196 +green,1,time_period_07,place-sumav,3721 +green,1,time_period_07,place-symcl,24035 +green,1,time_period_07,place-tapst,3992 +green,1,time_period_07,place-waban,2448 +green,1,time_period_07,place-wascm,7686 +green,1,time_period_07,place-woodl,5066 +green,1,time_period_07,place-wrnst,4413 +green,1,time_period_08,place-alsgr,985 +green,1,time_period_08,place-armnl,23889 +green,1,time_period_08,place-babck,3131 +green,1,time_period_08,place-bckhl,119 +green,1,time_period_08,place-bcnfd,643 +green,1,time_period_08,place-bcnwa,1608 +green,1,time_period_08,place-bland,857 +green,1,time_period_08,place-bndhl,94 +green,1,time_period_08,place-boyls,23418 +green,1,time_period_08,place-brico,3064 +green,1,time_period_08,place-brkhl,667 +green,1,time_period_08,place-brmnl,5732 +green,1,time_period_08,place-bucen,2365 +green,1,time_period_08,place-buest,1520 +green,1,time_period_08,place-buwst,1532 +green,1,time_period_08,place-bvmnl,2956 +green,1,time_period_08,place-chhil,4015 +green,1,time_period_08,place-chill,1414 +green,1,time_period_08,place-chswk,773 +green,1,time_period_08,place-clmnl,1166 +green,1,time_period_08,place-coecl,47628 +green,1,time_period_08,place-cool,5168 +green,1,time_period_08,place-denrd,339 +green,1,time_period_08,place-eliot,820 +green,1,time_period_08,place-engav,282 +green,1,time_period_08,place-fbkst,277 +green,1,time_period_08,place-fenwd,562 +green,1,time_period_08,place-fenwy,4534 +green,1,time_period_08,place-gover,4198 +green,1,time_period_08,place-grigg,861 +green,1,time_period_08,place-haecl,2006 +green,1,time_period_08,place-harvd,6142 +green,1,time_period_08,place-hsmnl,1035 +green,1,time_period_08,place-hwsst,150 +green,1,time_period_08,place-hymnl,29261 +green,1,time_period_08,place-kencl,55931 +green,1,time_period_08,place-kntst,311 +green,1,time_period_08,place-lake,1340 +green,1,time_period_08,place-lech,0 +green,1,time_period_08,place-lngmd,5802 +green,1,time_period_08,place-longw,2285 +green,1,time_period_08,place-mfa,3299 +green,1,time_period_08,place-mispk,586 +green,1,time_period_08,place-newtn,2215 +green,1,time_period_08,place-newto,3738 +green,1,time_period_08,place-north,3156 +green,1,time_period_08,place-nuniv,4369 +green,1,time_period_08,place-pktrm,67027 +green,1,time_period_08,place-plsgr,4867 +green,1,time_period_08,place-prmnl,12621 +green,1,time_period_08,place-river,575 +green,1,time_period_08,place-rsmnl,2415 +green,1,time_period_08,place-rvrwy,424 +green,1,time_period_08,place-smary,2731 +green,1,time_period_08,place-sougr,270 +green,1,time_period_08,place-spmnl,222 +green,1,time_period_08,place-sthld,796 +green,1,time_period_08,place-stpul,878 +green,1,time_period_08,place-sumav,682 +green,1,time_period_08,place-symcl,11007 +green,1,time_period_08,place-tapst,1244 +green,1,time_period_08,place-waban,277 +green,1,time_period_08,place-wascm,1840 +green,1,time_period_08,place-woodl,1497 +green,1,time_period_08,place-wrnst,1170 +green,1,time_period_09,place-alsgr,88 +green,1,time_period_09,place-armnl,4036 +green,1,time_period_09,place-babck,280 +green,1,time_period_09,place-bckhl,7 +green,1,time_period_09,place-bcnfd,36 +green,1,time_period_09,place-bcnwa,132 +green,1,time_period_09,place-bland,130 +green,1,time_period_09,place-bndhl,11 +green,1,time_period_09,place-boyls,4670 +green,1,time_period_09,place-brico,357 +green,1,time_period_09,place-brkhl,32 +green,1,time_period_09,place-brmnl,575 +green,1,time_period_09,place-bucen,315 +green,1,time_period_09,place-buest,215 +green,1,time_period_09,place-buwst,237 +green,1,time_period_09,place-bvmnl,162 +green,1,time_period_09,place-chhil,213 +green,1,time_period_09,place-chill,80 +green,1,time_period_09,place-chswk,68 +green,1,time_period_09,place-clmnl,49 +green,1,time_period_09,place-coecl,6545 +green,1,time_period_09,place-cool,319 +green,1,time_period_09,place-denrd,13 +green,1,time_period_09,place-eliot,27 +green,1,time_period_09,place-engav,15 +green,1,time_period_09,place-fbkst,40 +green,1,time_period_09,place-fenwd,133 +green,1,time_period_09,place-fenwy,685 +green,1,time_period_09,place-gover,849 +green,1,time_period_09,place-grigg,79 +green,1,time_period_09,place-haecl,369 +green,1,time_period_09,place-harvd,780 +green,1,time_period_09,place-hsmnl,44 +green,1,time_period_09,place-hwsst,12 +green,1,time_period_09,place-hymnl,4555 +green,1,time_period_09,place-kencl,6399 +green,1,time_period_09,place-kntst,5 +green,1,time_period_09,place-lake,86 +green,1,time_period_09,place-lech,0 +green,1,time_period_09,place-lngmd,573 +green,1,time_period_09,place-longw,100 +green,1,time_period_09,place-mfa,416 +green,1,time_period_09,place-mispk,82 +green,1,time_period_09,place-newtn,114 +green,1,time_period_09,place-newto,130 +green,1,time_period_09,place-north,299 +green,1,time_period_09,place-nuniv,758 +green,1,time_period_09,place-pktrm,13860 +green,1,time_period_09,place-plsgr,291 +green,1,time_period_09,place-prmnl,1823 +green,1,time_period_09,place-river,37 +green,1,time_period_09,place-rsmnl,153 +green,1,time_period_09,place-rvrwy,60 +green,1,time_period_09,place-smary,286 +green,1,time_period_09,place-sougr,31 +green,1,time_period_09,place-spmnl,22 +green,1,time_period_09,place-sthld,61 +green,1,time_period_09,place-stpul,51 +green,1,time_period_09,place-sumav,16 +green,1,time_period_09,place-symcl,1241 +green,1,time_period_09,place-tapst,60 +green,1,time_period_09,place-waban,10 +green,1,time_period_09,place-wascm,134 +green,1,time_period_09,place-woodl,23 +green,1,time_period_09,place-wrnst,146 +orange,0,time_period_01,place-astao,1445 +orange,0,time_period_01,place-bbsta,756 +orange,0,time_period_01,place-ccmnl,2379 +orange,0,time_period_01,place-chncl,549 +orange,0,time_period_01,place-dwnxg,5235 +orange,0,time_period_01,place-forhl,0 +orange,0,time_period_01,place-grnst,97 +orange,0,time_period_01,place-haecl,6607 +orange,0,time_period_01,place-jaksn,690 +orange,0,time_period_01,place-masta,478 +orange,0,time_period_01,place-mlmnl,32962 +orange,0,time_period_01,place-north,955 +orange,0,time_period_01,place-ogmnl,8225 +orange,0,time_period_01,place-rcmnl,237 +orange,0,time_period_01,place-rugg,364 +orange,0,time_period_01,place-sbmnl,241 +orange,0,time_period_01,place-state,15133 +orange,0,time_period_01,place-sull,29068 +orange,0,time_period_01,place-tumnl,725 +orange,0,time_period_01,place-welln,16595 +orange,0,time_period_02,place-astao,4793 +orange,0,time_period_02,place-bbsta,6766 +orange,0,time_period_02,place-ccmnl,10519 +orange,0,time_period_02,place-chncl,2073 +orange,0,time_period_02,place-dwnxg,29584 +orange,0,time_period_02,place-forhl,0 +orange,0,time_period_02,place-grnst,626 +orange,0,time_period_02,place-haecl,20002 +orange,0,time_period_02,place-jaksn,4688 +orange,0,time_period_02,place-masta,3852 +orange,0,time_period_02,place-mlmnl,84361 +orange,0,time_period_02,place-north,25098 +orange,0,time_period_02,place-ogmnl,90419 +orange,0,time_period_02,place-rcmnl,2168 +orange,0,time_period_02,place-rugg,6108 +orange,0,time_period_02,place-sbmnl,1228 +orange,0,time_period_02,place-state,74225 +orange,0,time_period_02,place-sull,49864 +orange,0,time_period_02,place-tumnl,3618 +orange,0,time_period_02,place-welln,53137 +orange,0,time_period_03,place-astao,35801 +orange,0,time_period_03,place-bbsta,27367 +orange,0,time_period_03,place-ccmnl,43744 +orange,0,time_period_03,place-chncl,8785 +orange,0,time_period_03,place-dwnxg,147056 +orange,0,time_period_03,place-forhl,0 +orange,0,time_period_03,place-grnst,1997 +orange,0,time_period_03,place-haecl,50443 +orange,0,time_period_03,place-jaksn,12305 +orange,0,time_period_03,place-masta,12226 +orange,0,time_period_03,place-mlmnl,368627 +orange,0,time_period_03,place-north,157674 +orange,0,time_period_03,place-ogmnl,257299 +orange,0,time_period_03,place-rcmnl,7798 +orange,0,time_period_03,place-rugg,12985 +orange,0,time_period_03,place-sbmnl,3292 +orange,0,time_period_03,place-state,174121 +orange,0,time_period_03,place-sull,164287 +orange,0,time_period_03,place-tumnl,13580 +orange,0,time_period_03,place-welln,217202 +orange,0,time_period_04,place-astao,40497 +orange,0,time_period_04,place-bbsta,49540 +orange,0,time_period_04,place-ccmnl,92006 +orange,0,time_period_04,place-chncl,30388 +orange,0,time_period_04,place-dwnxg,210279 +orange,0,time_period_04,place-forhl,0 +orange,0,time_period_04,place-grnst,3648 +orange,0,time_period_04,place-haecl,82494 +orange,0,time_period_04,place-jaksn,11576 +orange,0,time_period_04,place-masta,24096 +orange,0,time_period_04,place-mlmnl,293410 +orange,0,time_period_04,place-north,101480 +orange,0,time_period_04,place-ogmnl,112082 +orange,0,time_period_04,place-rcmnl,16394 +orange,0,time_period_04,place-rugg,23138 +orange,0,time_period_04,place-sbmnl,3488 +orange,0,time_period_04,place-state,162634 +orange,0,time_period_04,place-sull,154145 +orange,0,time_period_04,place-tumnl,28233 +orange,0,time_period_04,place-welln,147265 +orange,0,time_period_05,place-astao,38657 +orange,0,time_period_05,place-bbsta,65915 +orange,0,time_period_05,place-ccmnl,74692 +orange,0,time_period_05,place-chncl,27269 +orange,0,time_period_05,place-dwnxg,185377 +orange,0,time_period_05,place-forhl,0 +orange,0,time_period_05,place-grnst,4753 +orange,0,time_period_05,place-haecl,67631 +orange,0,time_period_05,place-jaksn,10347 +orange,0,time_period_05,place-masta,27824 +orange,0,time_period_05,place-mlmnl,100967 +orange,0,time_period_05,place-north,59930 +orange,0,time_period_05,place-ogmnl,34518 +orange,0,time_period_05,place-rcmnl,33867 +orange,0,time_period_05,place-rugg,43079 +orange,0,time_period_05,place-sbmnl,3114 +orange,0,time_period_05,place-state,130717 +orange,0,time_period_05,place-sull,88521 +orange,0,time_period_05,place-tumnl,33039 +orange,0,time_period_05,place-welln,49629 +orange,0,time_period_06,place-astao,74790 +orange,0,time_period_06,place-bbsta,127288 +orange,0,time_period_06,place-ccmnl,70353 +orange,0,time_period_06,place-chncl,46475 +orange,0,time_period_06,place-dwnxg,327285 +orange,0,time_period_06,place-forhl,0 +orange,0,time_period_06,place-grnst,5212 +orange,0,time_period_06,place-haecl,104267 +orange,0,time_period_06,place-jaksn,13196 +orange,0,time_period_06,place-masta,56059 +orange,0,time_period_06,place-mlmnl,83705 +orange,0,time_period_06,place-north,135895 +orange,0,time_period_06,place-ogmnl,39066 +orange,0,time_period_06,place-rcmnl,32868 +orange,0,time_period_06,place-rugg,72146 +orange,0,time_period_06,place-sbmnl,4034 +orange,0,time_period_06,place-state,235841 +orange,0,time_period_06,place-sull,105386 +orange,0,time_period_06,place-tumnl,58933 +orange,0,time_period_06,place-welln,65643 +orange,0,time_period_07,place-astao,28853 +orange,0,time_period_07,place-bbsta,84071 +orange,0,time_period_07,place-ccmnl,45073 +orange,0,time_period_07,place-chncl,37266 +orange,0,time_period_07,place-dwnxg,200283 +orange,0,time_period_07,place-forhl,0 +orange,0,time_period_07,place-grnst,1691 +orange,0,time_period_07,place-haecl,54172 +orange,0,time_period_07,place-jaksn,8557 +orange,0,time_period_07,place-masta,38894 +orange,0,time_period_07,place-mlmnl,45088 +orange,0,time_period_07,place-north,57070 +orange,0,time_period_07,place-ogmnl,19887 +orange,0,time_period_07,place-rcmnl,16248 +orange,0,time_period_07,place-rugg,37483 +orange,0,time_period_07,place-sbmnl,2745 +orange,0,time_period_07,place-state,98434 +orange,0,time_period_07,place-sull,47354 +orange,0,time_period_07,place-tumnl,27493 +orange,0,time_period_07,place-welln,28314 +orange,0,time_period_08,place-astao,7158 +orange,0,time_period_08,place-bbsta,24319 +orange,0,time_period_08,place-ccmnl,7115 +orange,0,time_period_08,place-chncl,12320 +orange,0,time_period_08,place-dwnxg,51961 +orange,0,time_period_08,place-forhl,0 +orange,0,time_period_08,place-grnst,380 +orange,0,time_period_08,place-haecl,15854 +orange,0,time_period_08,place-jaksn,1858 +orange,0,time_period_08,place-masta,15954 +orange,0,time_period_08,place-mlmnl,9966 +orange,0,time_period_08,place-north,39133 +orange,0,time_period_08,place-ogmnl,2981 +orange,0,time_period_08,place-rcmnl,2761 +orange,0,time_period_08,place-rugg,8498 +orange,0,time_period_08,place-sbmnl,521 +orange,0,time_period_08,place-state,26822 +orange,0,time_period_08,place-sull,11666 +orange,0,time_period_08,place-tumnl,8395 +orange,0,time_period_08,place-welln,6369 +orange,0,time_period_09,place-astao,957 +orange,0,time_period_09,place-bbsta,4109 +orange,0,time_period_09,place-ccmnl,558 +orange,0,time_period_09,place-chncl,1933 +orange,0,time_period_09,place-dwnxg,6403 +orange,0,time_period_09,place-forhl,0 +orange,0,time_period_09,place-grnst,21 +orange,0,time_period_09,place-haecl,1875 +orange,0,time_period_09,place-jaksn,266 +orange,0,time_period_09,place-masta,2991 +orange,0,time_period_09,place-mlmnl,1139 +orange,0,time_period_09,place-north,2709 +orange,0,time_period_09,place-ogmnl,291 +orange,0,time_period_09,place-rcmnl,444 +orange,0,time_period_09,place-rugg,1615 +orange,0,time_period_09,place-sbmnl,100 +orange,0,time_period_09,place-state,4710 +orange,0,time_period_09,place-sull,1705 +orange,0,time_period_09,place-tumnl,1565 +orange,0,time_period_09,place-welln,763 +orange,1,time_period_01,place-astao,54 +orange,1,time_period_01,place-bbsta,1891 +orange,1,time_period_01,place-ccmnl,140 +orange,1,time_period_01,place-chncl,1071 +orange,1,time_period_01,place-dwnxg,10130 +orange,1,time_period_01,place-forhl,0 +orange,1,time_period_01,place-grnst,2991 +orange,1,time_period_01,place-haecl,4353 +orange,1,time_period_01,place-jaksn,12795 +orange,1,time_period_01,place-masta,2608 +orange,1,time_period_01,place-mlmnl,38 +orange,1,time_period_01,place-north,856 +orange,1,time_period_01,place-ogmnl,0 +orange,1,time_period_01,place-rcmnl,3449 +orange,1,time_period_01,place-rugg,9535 +orange,1,time_period_01,place-sbmnl,5099 +orange,1,time_period_01,place-state,9042 +orange,1,time_period_01,place-sull,2073 +orange,1,time_period_01,place-tumnl,2043 +orange,1,time_period_01,place-welln,259 +orange,1,time_period_02,place-astao,205 +orange,1,time_period_02,place-bbsta,25947 +orange,1,time_period_02,place-ccmnl,469 +orange,1,time_period_02,place-chncl,3511 +orange,1,time_period_02,place-dwnxg,40332 +orange,1,time_period_02,place-forhl,152520 +orange,1,time_period_02,place-grnst,16086 +orange,1,time_period_02,place-haecl,8333 +orange,1,time_period_02,place-jaksn,32250 +orange,1,time_period_02,place-masta,10175 +orange,1,time_period_02,place-mlmnl,195 +orange,1,time_period_02,place-north,5638 +orange,1,time_period_02,place-ogmnl,0 +orange,1,time_period_02,place-rcmnl,9415 +orange,1,time_period_02,place-rugg,24178 +orange,1,time_period_02,place-sbmnl,15963 +orange,1,time_period_02,place-state,25579 +orange,1,time_period_02,place-sull,4443 +orange,1,time_period_02,place-tumnl,6220 +orange,1,time_period_02,place-welln,1047 +orange,1,time_period_03,place-astao,884 +orange,1,time_period_03,place-bbsta,140544 +orange,1,time_period_03,place-ccmnl,4070 +orange,1,time_period_03,place-chncl,14675 +orange,1,time_period_03,place-dwnxg,153645 +orange,1,time_period_03,place-forhl,372413 +orange,1,time_period_03,place-grnst,99275 +orange,1,time_period_03,place-haecl,19154 +orange,1,time_period_03,place-jaksn,118228 +orange,1,time_period_03,place-masta,64542 +orange,1,time_period_03,place-mlmnl,1302 +orange,1,time_period_03,place-north,30117 +orange,1,time_period_03,place-ogmnl,0 +orange,1,time_period_03,place-rcmnl,64797 +orange,1,time_period_03,place-rugg,77553 +orange,1,time_period_03,place-sbmnl,110957 +orange,1,time_period_03,place-state,56841 +orange,1,time_period_03,place-sull,13818 +orange,1,time_period_03,place-tumnl,25026 +orange,1,time_period_03,place-welln,1954 +orange,1,time_period_04,place-astao,4171 +orange,1,time_period_04,place-bbsta,122468 +orange,1,time_period_04,place-ccmnl,21018 +orange,1,time_period_04,place-chncl,60527 +orange,1,time_period_04,place-dwnxg,224419 +orange,1,time_period_04,place-forhl,268167 +orange,1,time_period_04,place-grnst,70269 +orange,1,time_period_04,place-haecl,44829 +orange,1,time_period_04,place-jaksn,110088 +orange,1,time_period_04,place-masta,71623 +orange,1,time_period_04,place-mlmnl,1787 +orange,1,time_period_04,place-north,43035 +orange,1,time_period_04,place-ogmnl,0 +orange,1,time_period_04,place-rcmnl,65883 +orange,1,time_period_04,place-rugg,109764 +orange,1,time_period_04,place-sbmnl,76297 +orange,1,time_period_04,place-state,74954 +orange,1,time_period_04,place-sull,15537 +orange,1,time_period_04,place-tumnl,59715 +orange,1,time_period_04,place-welln,3986 +orange,1,time_period_05,place-astao,7387 +orange,1,time_period_05,place-bbsta,111501 +orange,1,time_period_05,place-ccmnl,18544 +orange,1,time_period_05,place-chncl,65067 +orange,1,time_period_05,place-dwnxg,231849 +orange,1,time_period_05,place-forhl,134593 +orange,1,time_period_05,place-grnst,29334 +orange,1,time_period_05,place-haecl,53656 +orange,1,time_period_05,place-jaksn,51848 +orange,1,time_period_05,place-masta,47314 +orange,1,time_period_05,place-mlmnl,1700 +orange,1,time_period_05,place-north,58135 +orange,1,time_period_05,place-ogmnl,0 +orange,1,time_period_05,place-rcmnl,63935 +orange,1,time_period_05,place-rugg,120476 +orange,1,time_period_05,place-sbmnl,25704 +orange,1,time_period_05,place-state,90370 +orange,1,time_period_05,place-sull,13655 +orange,1,time_period_05,place-tumnl,67528 +orange,1,time_period_05,place-welln,3201 +orange,1,time_period_06,place-astao,16932 +orange,1,time_period_06,place-bbsta,317744 +orange,1,time_period_06,place-ccmnl,34846 +orange,1,time_period_06,place-chncl,97400 +orange,1,time_period_06,place-dwnxg,464306 +orange,1,time_period_06,place-forhl,125039 +orange,1,time_period_06,place-grnst,31606 +orange,1,time_period_06,place-haecl,102520 +orange,1,time_period_06,place-jaksn,56564 +orange,1,time_period_06,place-masta,74580 +orange,1,time_period_06,place-mlmnl,2554 +orange,1,time_period_06,place-north,135489 +orange,1,time_period_06,place-ogmnl,0 +orange,1,time_period_06,place-rcmnl,46448 +orange,1,time_period_06,place-rugg,184228 +orange,1,time_period_06,place-sbmnl,30814 +orange,1,time_period_06,place-state,208606 +orange,1,time_period_06,place-sull,25273 +orange,1,time_period_06,place-tumnl,119274 +orange,1,time_period_06,place-welln,6210 +orange,1,time_period_07,place-astao,9116 +orange,1,time_period_07,place-bbsta,140270 +orange,1,time_period_07,place-ccmnl,20999 +orange,1,time_period_07,place-chncl,69410 +orange,1,time_period_07,place-dwnxg,234479 +orange,1,time_period_07,place-forhl,62758 +orange,1,time_period_07,place-grnst,15728 +orange,1,time_period_07,place-haecl,66150 +orange,1,time_period_07,place-jaksn,26938 +orange,1,time_period_07,place-masta,39360 +orange,1,time_period_07,place-mlmnl,2401 +orange,1,time_period_07,place-north,86192 +orange,1,time_period_07,place-ogmnl,0 +orange,1,time_period_07,place-rcmnl,22090 +orange,1,time_period_07,place-rugg,93208 +orange,1,time_period_07,place-sbmnl,15936 +orange,1,time_period_07,place-state,82432 +orange,1,time_period_07,place-sull,14801 +orange,1,time_period_07,place-tumnl,45758 +orange,1,time_period_07,place-welln,4273 +orange,1,time_period_08,place-astao,2272 +orange,1,time_period_08,place-bbsta,38187 +orange,1,time_period_08,place-ccmnl,2896 +orange,1,time_period_08,place-chncl,26996 +orange,1,time_period_08,place-dwnxg,68857 +orange,1,time_period_08,place-forhl,18747 +orange,1,time_period_08,place-grnst,3654 +orange,1,time_period_08,place-haecl,26604 +orange,1,time_period_08,place-jaksn,6341 +orange,1,time_period_08,place-masta,14407 +orange,1,time_period_08,place-mlmnl,817 +orange,1,time_period_08,place-north,49245 +orange,1,time_period_08,place-ogmnl,0 +orange,1,time_period_08,place-rcmnl,4545 +orange,1,time_period_08,place-rugg,16605 +orange,1,time_period_08,place-sbmnl,2826 +orange,1,time_period_08,place-state,21818 +orange,1,time_period_08,place-sull,4419 +orange,1,time_period_08,place-tumnl,14808 +orange,1,time_period_08,place-welln,1144 +orange,1,time_period_09,place-astao,332 +orange,1,time_period_09,place-bbsta,5892 +orange,1,time_period_09,place-ccmnl,322 +orange,1,time_period_09,place-chncl,3597 +orange,1,time_period_09,place-dwnxg,10145 +orange,1,time_period_09,place-forhl,2134 +orange,1,time_period_09,place-grnst,388 +orange,1,time_period_09,place-haecl,4123 +orange,1,time_period_09,place-jaksn,835 +orange,1,time_period_09,place-masta,2047 +orange,1,time_period_09,place-mlmnl,55 +orange,1,time_period_09,place-north,4983 +orange,1,time_period_09,place-ogmnl,0 +orange,1,time_period_09,place-rcmnl,567 +orange,1,time_period_09,place-rugg,1973 +orange,1,time_period_09,place-sbmnl,582 +orange,1,time_period_09,place-state,4123 +orange,1,time_period_09,place-sull,1040 +orange,1,time_period_09,place-tumnl,2687 +orange,1,time_period_09,place-welln,245 +red,0,time_period_01,place-alfcl,8270 +red,0,time_period_01,place-andrw,2598 +red,0,time_period_01,place-asmnl,0 +red,0,time_period_01,place-brdwy,1415 +red,0,time_period_01,place-brntn,0 +red,0,time_period_01,place-chmnl,848 +red,0,time_period_01,place-cntsq,7387 +red,0,time_period_01,place-davis,10814 +red,0,time_period_01,place-dwnxg,12662 +red,0,time_period_01,place-fldcr,627 +red,0,time_period_01,place-harsq,10034 +red,0,time_period_01,place-jfk,1670 +red,0,time_period_01,place-knncl,1512 +red,0,time_period_01,place-nqncy,9 +red,0,time_period_01,place-pktrm,11852 +red,0,time_period_01,place-portr,6302 +red,0,time_period_01,place-qamnl,0 +red,0,time_period_01,place-qnctr,0 +red,0,time_period_01,place-shmnl,166 +red,0,time_period_01,place-smmnl,170 +red,0,time_period_01,place-sstat,1563 +red,0,time_period_01,place-wlsta,4 +red,0,time_period_02,place-alfcl,77598 +red,0,time_period_02,place-andrw,8167 +red,0,time_period_02,place-asmnl,0 +red,0,time_period_02,place-brdwy,4584 +red,0,time_period_02,place-brntn,0 +red,0,time_period_02,place-chmnl,3632 +red,0,time_period_02,place-cntsq,24952 +red,0,time_period_02,place-davis,43809 +red,0,time_period_02,place-dwnxg,42037 +red,0,time_period_02,place-fldcr,2983 +red,0,time_period_02,place-harsq,33772 +red,0,time_period_02,place-jfk,6827 +red,0,time_period_02,place-knncl,6513 +red,0,time_period_02,place-nqncy,2526 +red,0,time_period_02,place-pktrm,30063 +red,0,time_period_02,place-portr,27046 +red,0,time_period_02,place-qamnl,122 +red,0,time_period_02,place-qnctr,1509 +red,0,time_period_02,place-shmnl,1057 +red,0,time_period_02,place-smmnl,347 +red,0,time_period_02,place-sstat,8262 +red,0,time_period_02,place-wlsta,1801 +red,0,time_period_03,place-alfcl,382728 +red,0,time_period_03,place-andrw,19202 +red,0,time_period_03,place-asmnl,0 +red,0,time_period_03,place-brdwy,15978 +red,0,time_period_03,place-brntn,0 +red,0,time_period_03,place-chmnl,34611 +red,0,time_period_03,place-cntsq,210465 +red,0,time_period_03,place-davis,388406 +red,0,time_period_03,place-dwnxg,186271 +red,0,time_period_03,place-fldcr,11218 +red,0,time_period_03,place-harsq,220528 +red,0,time_period_03,place-jfk,23171 +red,0,time_period_03,place-knncl,58931 +red,0,time_period_03,place-nqncy,7251 +red,0,time_period_03,place-pktrm,128689 +red,0,time_period_03,place-portr,257293 +red,0,time_period_03,place-qamnl,550 +red,0,time_period_03,place-qnctr,5502 +red,0,time_period_03,place-shmnl,2923 +red,0,time_period_03,place-smmnl,1234 +red,0,time_period_03,place-sstat,49104 +red,0,time_period_03,place-wlsta,5783 +red,0,time_period_04,place-alfcl,205413 +red,0,time_period_04,place-andrw,28783 +red,0,time_period_04,place-asmnl,0 +red,0,time_period_04,place-brdwy,18781 +red,0,time_period_04,place-brntn,0 +red,0,time_period_04,place-chmnl,67711 +red,0,time_period_04,place-cntsq,207775 +red,0,time_period_04,place-davis,241781 +red,0,time_period_04,place-dwnxg,247878 +red,0,time_period_04,place-fldcr,10970 +red,0,time_period_04,place-harsq,278377 +red,0,time_period_04,place-jfk,48758 +red,0,time_period_04,place-knncl,95688 +red,0,time_period_04,place-nqncy,12084 +red,0,time_period_04,place-pktrm,199844 +red,0,time_period_04,place-portr,162710 +red,0,time_period_04,place-qamnl,426 +red,0,time_period_04,place-qnctr,5890 +red,0,time_period_04,place-shmnl,3031 +red,0,time_period_04,place-smmnl,970 +red,0,time_period_04,place-sstat,83154 +red,0,time_period_04,place-wlsta,9252 +red,0,time_period_05,place-alfcl,65603 +red,0,time_period_05,place-andrw,36468 +red,0,time_period_05,place-asmnl,0 +red,0,time_period_05,place-brdwy,28316 +red,0,time_period_05,place-brntn,0 +red,0,time_period_05,place-chmnl,104850 +red,0,time_period_05,place-cntsq,105742 +red,0,time_period_05,place-davis,71632 +red,0,time_period_05,place-dwnxg,220177 +red,0,time_period_05,place-fldcr,14854 +red,0,time_period_05,place-harsq,208944 +red,0,time_period_05,place-jfk,59326 +red,0,time_period_05,place-knncl,139808 +red,0,time_period_05,place-nqncy,13219 +red,0,time_period_05,place-pktrm,220309 +red,0,time_period_05,place-portr,50146 +red,0,time_period_05,place-qamnl,544 +red,0,time_period_05,place-qnctr,3219 +red,0,time_period_05,place-shmnl,5135 +red,0,time_period_05,place-smmnl,1159 +red,0,time_period_05,place-sstat,119121 +red,0,time_period_05,place-wlsta,5236 +red,0,time_period_06,place-alfcl,154498 +red,0,time_period_06,place-andrw,48884 +red,0,time_period_06,place-asmnl,0 +red,0,time_period_06,place-brdwy,59124 +red,0,time_period_06,place-brntn,0 +red,0,time_period_06,place-chmnl,187384 +red,0,time_period_06,place-cntsq,174255 +red,0,time_period_06,place-davis,100838 +red,0,time_period_06,place-dwnxg,452105 +red,0,time_period_06,place-fldcr,15414 +red,0,time_period_06,place-harsq,309278 +red,0,time_period_06,place-jfk,78749 +red,0,time_period_06,place-knncl,362420 +red,0,time_period_06,place-nqncy,22290 +red,0,time_period_06,place-pktrm,485837 +red,0,time_period_06,place-portr,63940 +red,0,time_period_06,place-qamnl,1094 +red,0,time_period_06,place-qnctr,3856 +red,0,time_period_06,place-shmnl,5561 +red,0,time_period_06,place-smmnl,2552 +red,0,time_period_06,place-sstat,384603 +red,0,time_period_06,place-wlsta,5384 +red,0,time_period_07,place-alfcl,63146 +red,0,time_period_07,place-andrw,22660 +red,0,time_period_07,place-asmnl,0 +red,0,time_period_07,place-brdwy,34179 +red,0,time_period_07,place-brntn,0 +red,0,time_period_07,place-chmnl,78902 +red,0,time_period_07,place-cntsq,111736 +red,0,time_period_07,place-davis,76115 +red,0,time_period_07,place-dwnxg,240004 +red,0,time_period_07,place-fldcr,7607 +red,0,time_period_07,place-harsq,186363 +red,0,time_period_07,place-jfk,44413 +red,0,time_period_07,place-knncl,124270 +red,0,time_period_07,place-nqncy,8520 +red,0,time_period_07,place-pktrm,288033 +red,0,time_period_07,place-portr,54453 +red,0,time_period_07,place-qamnl,544 +red,0,time_period_07,place-qnctr,2618 +red,0,time_period_07,place-shmnl,2537 +red,0,time_period_07,place-smmnl,617 +red,0,time_period_07,place-sstat,162889 +red,0,time_period_07,place-wlsta,3593 +red,0,time_period_08,place-alfcl,12651 +red,0,time_period_08,place-andrw,7062 +red,0,time_period_08,place-asmnl,0 +red,0,time_period_08,place-brdwy,7353 +red,0,time_period_08,place-brntn,0 +red,0,time_period_08,place-chmnl,24151 +red,0,time_period_08,place-cntsq,37287 +red,0,time_period_08,place-davis,23046 +red,0,time_period_08,place-dwnxg,52227 +red,0,time_period_08,place-fldcr,1474 +red,0,time_period_08,place-harsq,59372 +red,0,time_period_08,place-jfk,6789 +red,0,time_period_08,place-knncl,26641 +red,0,time_period_08,place-nqncy,1698 +red,0,time_period_08,place-pktrm,99012 +red,0,time_period_08,place-portr,14819 +red,0,time_period_08,place-qamnl,98 +red,0,time_period_08,place-qnctr,198 +red,0,time_period_08,place-shmnl,496 +red,0,time_period_08,place-smmnl,146 +red,0,time_period_08,place-sstat,35845 +red,0,time_period_08,place-wlsta,779 +red,0,time_period_09,place-alfcl,920 +red,0,time_period_09,place-andrw,1173 +red,0,time_period_09,place-asmnl,0 +red,0,time_period_09,place-brdwy,1282 +red,0,time_period_09,place-brntn,0 +red,0,time_period_09,place-chmnl,1868 +red,0,time_period_09,place-cntsq,5228 +red,0,time_period_09,place-davis,2677 +red,0,time_period_09,place-dwnxg,8042 +red,0,time_period_09,place-fldcr,306 +red,0,time_period_09,place-harsq,6972 +red,0,time_period_09,place-jfk,1162 +red,0,time_period_09,place-knncl,3842 +red,0,time_period_09,place-nqncy,329 +red,0,time_period_09,place-pktrm,14981 +red,0,time_period_09,place-portr,1179 +red,0,time_period_09,place-qamnl,1 +red,0,time_period_09,place-qnctr,42 +red,0,time_period_09,place-shmnl,94 +red,0,time_period_09,place-smmnl,22 +red,0,time_period_09,place-sstat,5963 +red,0,time_period_09,place-wlsta,72 +red,1,time_period_01,place-alfcl,0 +red,1,time_period_01,place-andrw,13929 +red,1,time_period_01,place-asmnl,895 +red,1,time_period_01,place-brdwy,4911 +red,1,time_period_01,place-brntn,1062 +red,1,time_period_01,place-chmnl,814 +red,1,time_period_01,place-cntsq,1342 +red,1,time_period_01,place-davis,766 +red,1,time_period_01,place-dwnxg,13986 +red,1,time_period_01,place-fldcr,18432 +red,1,time_period_01,place-harsq,822 +red,1,time_period_01,place-jfk,7611 +red,1,time_period_01,place-knncl,350 +red,1,time_period_01,place-nqncy,14891 +red,1,time_period_01,place-pktrm,13215 +red,1,time_period_01,place-portr,419 +red,1,time_period_01,place-qamnl,18314 +red,1,time_period_01,place-qnctr,18943 +red,1,time_period_01,place-shmnl,7342 +red,1,time_period_01,place-smmnl,10470 +red,1,time_period_01,place-sstat,3778 +red,1,time_period_01,place-wlsta,17749 +red,1,time_period_02,place-alfcl,0 +red,1,time_period_02,place-andrw,33279 +red,1,time_period_02,place-asmnl,113034 +red,1,time_period_02,place-brdwy,18487 +red,1,time_period_02,place-brntn,108030 +red,1,time_period_02,place-chmnl,5125 +red,1,time_period_02,place-cntsq,4108 +red,1,time_period_02,place-davis,3137 +red,1,time_period_02,place-dwnxg,56379 +red,1,time_period_02,place-fldcr,42898 +red,1,time_period_02,place-harsq,3738 +red,1,time_period_02,place-jfk,21446 +red,1,time_period_02,place-knncl,1409 +red,1,time_period_02,place-nqncy,41809 +red,1,time_period_02,place-pktrm,37401 +red,1,time_period_02,place-portr,1456 +red,1,time_period_02,place-qamnl,42280 +red,1,time_period_02,place-qnctr,66625 +red,1,time_period_02,place-shmnl,15226 +red,1,time_period_02,place-smmnl,26492 +red,1,time_period_02,place-sstat,60052 +red,1,time_period_02,place-wlsta,32373 +red,1,time_period_03,place-alfcl,0 +red,1,time_period_03,place-andrw,108239 +red,1,time_period_03,place-asmnl,257146 +red,1,time_period_03,place-brdwy,109984 +red,1,time_period_03,place-brntn,131342 +red,1,time_period_03,place-chmnl,56295 +red,1,time_period_03,place-cntsq,29767 +red,1,time_period_03,place-davis,13403 +red,1,time_period_03,place-dwnxg,195194 +red,1,time_period_03,place-fldcr,103424 +red,1,time_period_03,place-harsq,18538 +red,1,time_period_03,place-jfk,101809 +red,1,time_period_03,place-knncl,14251 +red,1,time_period_03,place-nqncy,178310 +red,1,time_period_03,place-pktrm,151870 +red,1,time_period_03,place-portr,9726 +red,1,time_period_03,place-qamnl,180785 +red,1,time_period_03,place-qnctr,246223 +red,1,time_period_03,place-shmnl,65198 +red,1,time_period_03,place-smmnl,70623 +red,1,time_period_03,place-sstat,286214 +red,1,time_period_03,place-wlsta,130786 +red,1,time_period_04,place-alfcl,0 +red,1,time_period_04,place-andrw,88856 +red,1,time_period_04,place-asmnl,166240 +red,1,time_period_04,place-brdwy,61918 +red,1,time_period_04,place-brntn,53115 +red,1,time_period_04,place-chmnl,69209 +red,1,time_period_04,place-cntsq,54068 +red,1,time_period_04,place-davis,9075 +red,1,time_period_04,place-dwnxg,238415 +red,1,time_period_04,place-fldcr,90544 +red,1,time_period_04,place-harsq,40905 +red,1,time_period_04,place-jfk,138904 +red,1,time_period_04,place-knncl,56535 +red,1,time_period_04,place-nqncy,122003 +red,1,time_period_04,place-pktrm,223553 +red,1,time_period_04,place-portr,8775 +red,1,time_period_04,place-qamnl,87082 +red,1,time_period_04,place-qnctr,173360 +red,1,time_period_04,place-shmnl,44904 +red,1,time_period_04,place-smmnl,47238 +red,1,time_period_04,place-sstat,215142 +red,1,time_period_04,place-wlsta,79652 +red,1,time_period_05,place-alfcl,0 +red,1,time_period_05,place-andrw,52214 +red,1,time_period_05,place-asmnl,88490 +red,1,time_period_05,place-brdwy,35835 +red,1,time_period_05,place-brntn,28378 +red,1,time_period_05,place-chmnl,50858 +red,1,time_period_05,place-cntsq,50566 +red,1,time_period_05,place-davis,3987 +red,1,time_period_05,place-dwnxg,163502 +red,1,time_period_05,place-fldcr,49275 +red,1,time_period_05,place-harsq,51568 +red,1,time_period_05,place-jfk,123384 +red,1,time_period_05,place-knncl,74711 +red,1,time_period_05,place-nqncy,37620 +red,1,time_period_05,place-pktrm,172211 +red,1,time_period_05,place-portr,5706 +red,1,time_period_05,place-qamnl,24987 +red,1,time_period_05,place-qnctr,65521 +red,1,time_period_05,place-shmnl,20038 +red,1,time_period_05,place-smmnl,18814 +red,1,time_period_05,place-sstat,154522 +red,1,time_period_05,place-wlsta,20234 +red,1,time_period_06,place-alfcl,0 +red,1,time_period_06,place-andrw,48384 +red,1,time_period_06,place-asmnl,76800 +red,1,time_period_06,place-brdwy,67555 +red,1,time_period_06,place-brntn,42602 +red,1,time_period_06,place-chmnl,120487 +red,1,time_period_06,place-cntsq,132852 +red,1,time_period_06,place-davis,6294 +red,1,time_period_06,place-dwnxg,361736 +red,1,time_period_06,place-fldcr,39194 +red,1,time_period_06,place-harsq,116791 +red,1,time_period_06,place-jfk,126926 +red,1,time_period_06,place-knncl,252347 +red,1,time_period_06,place-nqncy,67667 +red,1,time_period_06,place-pktrm,386407 +red,1,time_period_06,place-portr,11322 +red,1,time_period_06,place-qamnl,41612 +red,1,time_period_06,place-qnctr,67544 +red,1,time_period_06,place-shmnl,15550 +red,1,time_period_06,place-smmnl,19204 +red,1,time_period_06,place-sstat,441288 +red,1,time_period_06,place-wlsta,18004 +red,1,time_period_07,place-alfcl,0 +red,1,time_period_07,place-andrw,24895 +red,1,time_period_07,place-asmnl,46257 +red,1,time_period_07,place-brdwy,42077 +red,1,time_period_07,place-brntn,18250 +red,1,time_period_07,place-chmnl,71080 +red,1,time_period_07,place-cntsq,88699 +red,1,time_period_07,place-davis,6504 +red,1,time_period_07,place-dwnxg,196301 +red,1,time_period_07,place-fldcr,20701 +red,1,time_period_07,place-harsq,81468 +red,1,time_period_07,place-jfk,62062 +red,1,time_period_07,place-knncl,124742 +red,1,time_period_07,place-nqncy,26596 +red,1,time_period_07,place-pktrm,282429 +red,1,time_period_07,place-portr,10693 +red,1,time_period_07,place-qamnl,16006 +red,1,time_period_07,place-qnctr,40240 +red,1,time_period_07,place-shmnl,8819 +red,1,time_period_07,place-smmnl,8344 +red,1,time_period_07,place-sstat,199277 +red,1,time_period_07,place-wlsta,8674 +red,1,time_period_08,place-alfcl,0 +red,1,time_period_08,place-andrw,5921 +red,1,time_period_08,place-asmnl,12900 +red,1,time_period_08,place-brdwy,11546 +red,1,time_period_08,place-brntn,3771 +red,1,time_period_08,place-chmnl,14959 +red,1,time_period_08,place-cntsq,18968 +red,1,time_period_08,place-davis,1415 +red,1,time_period_08,place-dwnxg,40269 +red,1,time_period_08,place-fldcr,6157 +red,1,time_period_08,place-harsq,18978 +red,1,time_period_08,place-jfk,6839 +red,1,time_period_08,place-knncl,16004 +red,1,time_period_08,place-nqncy,9928 +red,1,time_period_08,place-pktrm,79412 +red,1,time_period_08,place-portr,1703 +red,1,time_period_08,place-qamnl,2710 +red,1,time_period_08,place-qnctr,10307 +red,1,time_period_08,place-shmnl,1992 +red,1,time_period_08,place-smmnl,2422 +red,1,time_period_08,place-sstat,44558 +red,1,time_period_08,place-wlsta,2287 +red,1,time_period_09,place-alfcl,0 +red,1,time_period_09,place-andrw,727 +red,1,time_period_09,place-asmnl,1569 +red,1,time_period_09,place-brdwy,1738 +red,1,time_period_09,place-brntn,411 +red,1,time_period_09,place-chmnl,1963 +red,1,time_period_09,place-cntsq,3467 +red,1,time_period_09,place-davis,84 +red,1,time_period_09,place-dwnxg,4951 +red,1,time_period_09,place-fldcr,476 +red,1,time_period_09,place-harsq,3309 +red,1,time_period_09,place-jfk,654 +red,1,time_period_09,place-knncl,2992 +red,1,time_period_09,place-nqncy,1171 +red,1,time_period_09,place-pktrm,9827 +red,1,time_period_09,place-portr,255 +red,1,time_period_09,place-qamnl,170 +red,1,time_period_09,place-qnctr,1225 +red,1,time_period_09,place-shmnl,212 +red,1,time_period_09,place-smmnl,196 +red,1,time_period_09,place-sstat,7485 +red,1,time_period_09,place-wlsta,101 diff --git a/ridership_db/csv_ridership_db.go b/ridership_db/csv_ridership_db.go new file mode 100644 index 0000000..75ed571 --- /dev/null +++ b/ridership_db/csv_ridership_db.go @@ -0,0 +1,39 @@ +package ridershipDB + +import ( + "encoding/csv" + "fmt" + "os" + +) + +type CsvRidershipDB struct { + idIdxMap map[string]int + csvFile *os.File + csvReader *csv.Reader + num_intervals int +} + +func (c *CsvRidershipDB) Open(filePath string) error { + c.num_intervals = 9 + + // Create a map that maps MBTA's time period ids to indexes in the slice + c.idIdxMap = make(map[string]int) + for i := 1; i <= c.num_intervals; i++ { + timePeriodID := fmt.Sprintf("time_period_%02d", i) + c.idIdxMap[timePeriodID] = i - 1 + } + + // create csv reader + csvFile, err := os.Open(filePath) + if err != nil { + return err + } + c.csvFile = csvFile + c.csvReader = csv.NewReader(c.csvFile) + + return nil +} + +// TODO: some code goes here +// Implement the remaining RidershipDB methods diff --git a/ridership_db/interface_ridership_db.go b/ridership_db/interface_ridership_db.go new file mode 100644 index 0000000..8d392e9 --- /dev/null +++ b/ridership_db/interface_ridership_db.go @@ -0,0 +1,7 @@ +package ridershipDB + +type RidershipDB interface { + Open(filePath string) error + GetRidership(lineId string) ([]int64, error) + Close() error +} diff --git a/ridership_db/ridership_db_test.go b/ridership_db/ridership_db_test.go new file mode 100644 index 0000000..2d4c6e6 --- /dev/null +++ b/ridership_db/ridership_db_test.go @@ -0,0 +1,53 @@ +package ridershipDB + +import ( + // rdb "main/ridership_db" + "testing" +) + +func TestRidershipDBsMatch(t *testing.T) { + lineIds := []string{"red", "green", "blue", "orange"} + + for _, lineId := range lineIds { + t.Run(lineId, func(t *testing.T) { + // Create instances of CsvRidershipDB and SqliteRidershipDB + var csvDB RidershipDB = &CsvRidershipDB{} // CSV implementation + var sqliteDB RidershipDB = &SqliteRidershipDB{} // SQLite implementation + + // Open database connections + err := csvDB.Open("../mbta.csv") + if err != nil { + t.Fatal(err) + } + defer csvDB.Close() + + err = sqliteDB.Open("../mbta.sqlite") + if err != nil { + t.Fatal(err) + } + defer sqliteDB.Close() + + // Retrieve data from both implementations + csvData, err := csvDB.GetRidership(lineId) + if err != nil { + t.Fatal(err) + } + + sqliteData, err := sqliteDB.GetRidership(lineId) + if err != nil { + t.Fatal(err) + } + + // Compare the data + if len(csvData) != len(sqliteData) { + t.Errorf("Lengths of data arrays do not match") + } + + for i := 0; i < len(csvData); i++ { + if csvData[i] != sqliteData[i] { + t.Errorf("Mismatched data at index %d: Csv: %d, SQLite: %d", i, csvData[i], sqliteData[i]) + } + } + }) + } +} diff --git a/ridership_db/sqlite_ridership_db.go b/ridership_db/sqlite_ridership_db.go new file mode 100644 index 0000000..e512256 --- /dev/null +++ b/ridership_db/sqlite_ridership_db.go @@ -0,0 +1,58 @@ +package ridershipDB + +import ( + "database/sql" + + _ "github.com/mattn/go-sqlite3" +) + +type SqliteRidershipDB struct { + db *sql.DB +} + +func (s *SqliteRidershipDB) Open(filePath string) error { + db, err := sql.Open("sqlite3", filePath) + if err != nil { + return err + } + s.db = db + return nil +} + +func (s *SqliteRidershipDB) GetRidership(lineId string) ([]int64, error) { + query := ` + SELECT SUM(total_ons) + FROM rail_ridership + WHERE season = 'Fall 2017' + AND time_period_id NOT IN ('time_period_10', 'time_period_11') + AND line_id = ? + GROUP BY time_period_id + ORDER BY time_period_id; + ` + + rows, err := s.db.Query(query, lineId) + if err != nil { + return nil, err + } + defer rows.Close() + + var values []int64 + for rows.Next() { + var value int64 + err := rows.Scan(&value) + if err != nil { + return nil, err + } + values = append(values, value) + } + + if err := rows.Err(); err != nil { + return nil, err + } + + return values, nil +} + +func (s *SqliteRidershipDB) Close() error { + return s.db.Close() +} diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..5f43bf7 Binary files /dev/null and b/screenshot.png differ diff --git a/submission.zip b/submission.zip new file mode 100644 index 0000000..47ffa0b Binary files /dev/null and b/submission.zip differ diff --git a/utils/render_chart.go b/utils/render_chart.go new file mode 100644 index 0000000..31c3c0b --- /dev/null +++ b/utils/render_chart.go @@ -0,0 +1,81 @@ +package utils + +import ( + "bytes" + "fmt" + + "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart/drawing" +) + +// Generates a bar chart and returns the PNG image bytes +func GenerateBarChart(values []int64) ([]byte, error) { + // times corresponding to time_periods + labels := []string{ + "3:00 - 05:59", + "6:00 - 06:59", + "7:00 - 08:59", + "9:00 - 13:29", + "13:30 - 15:59", + "16:00 - 18:29", + "18:30 - 21:59", + "22:00 - 23:59", + "0:00 - 02:59", + } + + if len(labels) != len(values) { + fmt.Println(len(values)) + return nil, fmt.Errorf("number of labels and values must be the same") + } + + graph := chart.BarChart{ + Title: "Ridership Fall 2017", + TitleStyle: chart.StyleShow(), + Background: chart.Style{ + Padding: chart.Box{ + Top: 50, + }, + }, + Height: 400, + BarWidth: 40, + XAxis: chart.StyleShow(), + YAxis: chart.YAxis{ + Style: chart.StyleShow(), + Range: &chart.ContinuousRange{ + Min: 0, + Max: 5500000, + }, + Ticks: []chart.Tick{ + // Customize y-axis ticks to display as integers + {Value: 0, Label: "0"}, + {Value: 1000000, Label: "1,000,000"}, + {Value: 2000000, Label: "2,000,000"}, + {Value: 3000000, Label: "3,000,000"}, + {Value: 4000000, Label: "4,000,000"}, + {Value: 5000000, Label: "5,000,000"}, + }, + }, + Bars: []chart.Value{}, + } + + for i, label := range labels { + graph.Bars = append(graph.Bars, chart.Value{ + Label: label, + Value: float64(values[i]), + Style: chart.Style{ + Show: true, + FillColor: drawing.ColorBlue, + StrokeColor: drawing.ColorBlue, + }, + }) + } + + // Render the chart as PNG image bytes + buffer := bytes.NewBuffer([]byte{}) + err := graph.Render(chart.PNG, buffer) + if err != nil { + return nil, err + } + + return buffer.Bytes(), nil +}