function parsePlaces(historyStr) {
const history = JSON.parse(historyStr)
if(!history.timelineObjects) { return; }
let places = [];
let days = new Set()
history.timelineObjects.forEach(timelineObject => {
const placeVisit = timelineObject.placeVisit;
if (!placeVisit || !placeVisit.location) { return; }
if (targetAddress.length > 1 && (!placeVisit.location.address || !placeVisit.location.address.match(targetAddress))) { return; }
if (!!startDate && Date.parse(placeVisit.duration.startTimestamp) < startDate) { return; }
if (!!endDate && Date.parse(placeVisit.duration.endTimestamp) > endDate) { return; }
if (days.has(new Date(placeVisit.duration.startTimestamp).toDateString())) { return; }
days.add(new Date(placeVisit.duration.startTimestamp).toDateString())
places.push(placeVisit)
})
return places;
}