Mon, Jul 6WeatherBangor, ME
Maine Lottery
Latest draws loading
Maine News Now

Live Now: Maine statewide and local election results

Live Now: Maine statewide and local election results
100%
[![Maine Matters 2026](https://www.pressherald.com/wp-content/uploads/sites/4/2026/03/MaineMatters_vert_3d2342.png?w=300)](https://www.pressherald.com/tag/election-2026/) _[Read all of our coverage](https://www.pressherald.com/tag/election-2026/) of Maine's 2026 election or stay up to date with the latest developments through the [Maine Political Report](https://www.pressherald.com/mprnewsletter/) in your inbox or [text messages](https://www.pressherald.com/2026/01/11/maine-political-news-sent-right-to-your-phone-sign-up-for-text-alerts-from-our-editor/) from politics editor Kirby Wilson._ **Election Day is here.** Follow [our live reporting](https://www.pressherald.com/2026/06/09/mainers-head-to-the-polls-on-primary-election-day/) and visit our [Voter Guide](/voter-guide) for everything you need before you vote. Results will begin posting in real time below after polls close at 8 p.m. Select a race type: [Governor](#container-governor) [US Senate](#container-us-senate) [US House](#container-us-house) ✓ Win **Source:** Associated Press and the staff of the Portland Press Herald, Kennebec Journal, Morning Sentinel, and Lewiston Sun Journal. **VoteHub and the Press Herald are breaking down town-by-town elections results for the [Democratic Primary](https://www.pressherald.com/how-maine-voted-in-the-democratic-governor-primary-race/) and [Republican Primary](https://www.pressherald.com/how-maine-voted-in-the-republican-governor-primary-race-town-by-town/) for Governor in detailed maps.** **VoteHub and the Press Herald are breaking down town-by-town elections results for the [U.S. Senate Democratic Primary in detailed maps](https://www.pressherald.com/how-maine-voted-in-the-democratic-u-s-senate-primary/).** **VoteHub and the Press Herald are breaking down town-by-town elections results for the [U.S. District 2 Democratic Primary in detailed maps](https://www.pressherald.com/how-maine-voted-in-the-democratic-district2-house-primary/).** **Find your Maine legislative districts** Enter your address to see your House and Senate districts. Find .region-container a{color:#a7282d;}.mdl-banner{width: 100%;box-sizing: border-box;padding: 10px 12px;border: 1px solid #ddd;border-radius: 8px;font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;display: flex;align-items: center;gap: 14px;position: relative;background: #fff;}.mdl-banner-text{flex: 0 0 auto;display: flex;flex-direction: column;line-height: 1.2;min-width: 230px;}.mdl-banner-text strong{font-size: 0.98rem;}.mdl-banner-text span{font-size: 0.82rem;color: #555;}.mdl-banner-form{flex: 1;display: flex;align-items: center;gap: 8px;margin: 0;}.mdl-autocomplete-wrap{flex: 1;position: relative;}.mdl-banner input{width: 100%;box-sizing: border-box;padding: 9px 10px;font-size: 0.95rem;border: 1px solid #aaa;border-radius: 6px;margin: 0;}.mdl-banner button{padding: 9px 14px;font-size: 0.95rem;font-weight: 700;border: 0;border-radius: 6px;cursor: pointer;background: #111;color: #fff;white-space: nowrap;}.mdl-banner button:hover,.mdl-banner button:focus{background: #333;}.mdl-suggestions{position: absolute;top: 42px;left: 0;right: 0;z-index: 9999;background: #fff;border: 1px solid #ccc;border-radius: 6px;box-shadow: 0 4px 12px rgba(0,0,0,.12);overflow: hidden;}.mdl-suggestion{padding: 8px 10px;cursor: pointer;border-bottom: 1px solid #eee;font-size: 0.9rem;line-height: 1.25;}.mdl-suggestion:last-child{border-bottom: 0;}.mdl-suggestion:hover,.mdl-suggestion:focus{background: #f2f2f2;}#mdl-status{font-size: 0.85rem;color: #555;white-space: nowrap;}#mdl-results{position: absolute;top: calc(100% + 8px);left: 0;right: 0;z-index: 9998;}.mdl-card{padding: 12px 14px;border: 1px solid #ddd;border-radius: 8px;background: #fff;box-shadow: 0 4px 14px rgba(0,0,0,.12);}.mdl-card h3{margin: 0 0 8px;font-size: 1rem;}.mdl-result-line{font-size: 0.95rem;margin: 4px 0;}.mdl-card p{margin: 5px 0;}.mdl-card a{color: #111;font-weight: 700;text-decoration: underline;}.mdl-small{font-size: 0.78rem;line-height: 1.3;color: #555;}@media (max-width: 700px){.mdl-banner{flex-direction: column;align-items: stretch;gap: 8px;}.mdl-banner-text{min-width: 0;}.mdl-banner-form{width: 100%;}#mdl-status{white-space: normal;}} {{#if notes}}

{{{notes}}} {{/if}}
{{else}} {{/if}}

{{question}} Precincts Reporting: {{{reporting}}} {{#if eevp}}Est vote: {{{eevp}}}%{{/if}} {{#if raceNote}}

{{raceNote}} {{/if}}
Votes Pct {{#if possibilities.\[0\].elect\_votes}}EV{{/if}} {{#each possibilities}} {{#if isWinner}}
{{#if isWinner}}{{/if}} {{fname}} {{lname}} {{#if party}}({{party}}){{/if}} {{#if isIncumbent}}(i){{/if}} {{votes}} {{#if pct}} {{pct}}%
  {{else}}
0%
  {{/if}} {{#if elect\_votes}}
{{elect\_votes}}{{/if}} {{/each}} #full-container{-color-accent: #c62828;-color-accent-dark: #991f1f;-color-win: #b8860b;-color-border: #ddd;-color-bg-active: #f5f5f5;-color-bg-winner: #fdfaf2;-color-text: #111;-color-text-muted: #666;-font-sans: "Open Sans",sans-serif;-font-serif: Georgia,"Times New Roman",serif;}#full-container{max-width: 1200px;width: 100%;margin: 20px auto 100px;font-size: 16px;font-family: var(-font-sans);color: var(-color-text);}#full-container p{font-size: 16px;}.race-type{display: block;font-size: 11px;font-weight: 700;letter-spacing: 0.08em;text-transform: uppercase;color: var(-color-text-muted);font-family: var(-font-sans);margin-bottom: 8px;}.regions .region-titles{display: flex;flex-wrap: wrap;gap: 6px;margin-bottom: 4px;}.regions .region-titles>div{display: inline-block;font-size: 12px;font-weight: 700;letter-spacing: 0.06em;text-transform: uppercase;font-family: var(-font-sans);padding: 7px 14px;border: 2px solid #222;border-bottom: 3px solid #222;background: #fff;color: #222;cursor: pointer;transition: border-color 0.15s,color 0.15s,background 0.15s;}.regions .region-titles>div:hover{border-color: var(-color-accent);color: var(-color-accent);background: #fdf2f2;}.regions .active-button{background: var(-color-bg-active) !important;border-color: var(-color-accent) !important;border-bottom-color: var(-color-bg-active) !important;color: var(-color-accent) !important;}.region-titles a{color: inherit;text-decoration: none;}.key{display: flex;flex-wrap: wrap;align-items: center;gap: 6px 16px;font-family: var(-font-sans);font-size: 13px;color: var(-color-text-muted);padding: 10px 0 12px;border-top: 1px solid var(-color-border);margin-top: 8px;}.key-item{font-weight: 700;color: var(-color-win);}.key-source{color: var(-color-text-muted);}.notes a{color: #0070c0;}.regions .region-container{margin: 16px 0 0;display: none;}.regions .region-container.active{display: block;}.region-container .notes{display: none;}.regions .region-container>div:first-child .notes{display: block;padding: 10px 14px;background: #f7f7f7;border-left: 3px solid var(-color-accent);font-size: 15px;font-weight: 400;margin-bottom: 16px;}.regions .region-container>div:first-child .notes a{color: var(-color-accent);text-decoration: underline;}.regions .region-container>div:first-child .notes a:hover{text-decoration: none;}.grid-container{display: grid;grid-template-columns: 1fr 1fr;gap: 20px;max-width: 1200px;margin: 0 auto;}.grid-item{background: #fff;padding: 8px 20px 20px;border-radius: 4px;border: 1px solid var(-color-border);min-height: 600px;}.grid-item iframe,.ap-embed{display: block;width: 100%;min-height: 600px;}.regions table{width: 100%;margin: 16px 0 8px;font-family: var(-font-sans);border-collapse: collapse;}.race{width: 100%;margin: 0;}.race table th,.race table td,.race table tr{border: none;word-break: keep-all;}.regions .race{margin: 0;}.regions .race-title>th{padding: 0 0 10px;border-bottom: 2px solid #111;}.regions .race-title>th h2{font-family: var(-font-serif);font-weight: 700;margin: 0 0 4px;font-size: 20px;line-height: 1.2;word-break: normal;color: var(-color-text);}.regions .race-title>th h2 span{display: block;}.race-title h2+div{color: var(-color-text-muted);}.reporting{display: inline-block;font-size: 12px;font-weight: 600;letter-spacing: 0.04em;text-transform: uppercase;color: var(-color-text-muted);margin-top: 2px;}.eevp{float: right;font-size: 12px;font-weight: 600;text-transform: uppercase;letter-spacing: 0.04em;color: var(-color-text-muted);}.raceid-251 .reporting::after{content: "%";}.regions tr td.th{font-size: 11px;font-weight: 700;letter-spacing: 0.06em;text-transform: uppercase;color: var(-color-text-muted);padding: 8px 5px 6px;border-bottom: 1px solid var(-color-border);}.th.graph{border: 0;}.regions td,.regions th{text-align: left;padding: 8px 6px;vertical-align: middle;}.regions td p,.regions th p{padding: 0;margin: 0;font-family: var(-font-sans);font-size: 16px;}.regions tr td{width: 25%;}.regions tr td.name{width: 40%;padding-left: 10px;}.regions tr td.votes{width: 16%;text-align: right;padding-right: 10px;font-variant-numeric: tabular-nums;}.regions tr td.pct{width: 6%;text-align: right;font-variant-numeric: tabular-nums;}.regions tr td.graph{width: 30%;padding-right: 6px;}.regions tr.in-running,.regions tr.winner{border-bottom: 1px solid #f0f0f0;transition: background 0.1s;}.regions tr.in-running:hover{background: #fafafa;}.regions tr.winner{background: var(-color-bg-winner);}.out-of-race{text-decoration: line-through;color: var(-color-text-muted);}.inactive{display: none;}.regions .fa-check{display: inline-block;margin-right: 6px;color: var(-color-win);font-size: 12px;}.regions .graph{position: relative;height: 8px;border-radius: 2px;background: #e8e8e8;overflow: hidden;}.regions .graph>div{height: 100%;background: #444;border-radius: 2px;transition: width 1s ease-in-out;}.winner .graph>div{background: var(-color-win);}.races-container{display: grid;grid-template-columns: repeat(2,1fr);gap: 32px;clear: both;}.races-container div:first-child .notes{display: block;font-weight: 400;font-size: 15px;line-height: 1.5;}.container-state-house .race,.container-state-senate .race{min-height: 250px;}.container-state-house select{font-size: 15px;margin-left: 12px;padding: 4px 8px;border: 1px solid var(-color-border);border-radius: 3px;}.container-state-house label{font-family: var(-font-sans);}.rtown{display: inline-block;padding: 3px 8px;color: #fff;background: #555;border-radius: 3px;margin: 0 4px 4px 0;cursor: pointer;font-size: 12px;font-family: var(-font-sans);}.rtown:hover{background: var(-color-accent);}.notes{max-width: 1000px;}.clearBoth{clear: both;}.fa-circle-notch{font-size: 36px;margin: 24px auto;display: block;text-align: center;color: var(-color-text-muted);}@media (max-width: 900px){.grid-container{grid-template-columns: 1fr;}.races-container{grid-template-columns: 1fr;gap: 20px;}}@media (max-width: 700px){.regions .region-titles{flex-direction: column;gap: 4px;}.regions .region-titles>div{width: 100%;text-align: center;border-bottom-width: 2px;}.regions .active-button{border-bottom-width: 2px !important;border-left: 3px solid var(-color-accent) !important;}.graph,.graphContainer{display: none;}.regions tr td.name{width: 55%;}.regions tr td.votes{width: 25%;}.regions tr td.pct{width: 20%;}.regions tr td.graph{display: none;}.race{width: 100%;}}@media (max-width: 480px){#full-container{font-size: 15px;}.regions .race-title>th h2{font-size: 17px;}.key{font-size: 12px;}}@media screen and (max-width: 800px){.races-container > div{grid-template-columns: 1fr !important;}}.container-city-and-town .races-container,.container-state-senate .races-container,.container-state-house .races-container{display: block;margin-top: 2em;}.container-city-and-town .races-container>div,.container-state-senate .races-container>div,.container-state-house .races-container>div{display: grid;grid-template-columns: 1fr 1fr;gap: 2em;border-top: 3px solid var(-color-accent-dark);margin-bottom: 3em;padding: 2em 0 0;position: relative;}.container-city-and-town .races-container>div::before,.container-state-senate .races-container>div::before,.container-state-house .races-container>div::before{content: attr(data-city-name);position: absolute;left: 0;top: 0;background-color: var(-color-accent-dark);color: white;padding: .25em .5em;text-transform: uppercase;}.container-city-and-town .races-container>div::before,.container-state-senate .races-container>div::before,.container-state-house .races-container>div::before{background-color: white;color: var(-color-accent-dark);border: 2px solid var(-color-accent-dark);left: 1em;top: -1.25em;}.container-city-and-town .races-container>div h2{}.container-state-senate .races-container>div>h2,.container-state-house .races-container>div>h2{width: 1px;height: 1px;position: absolute;top: -100px;left: -100px;overflow: hidden;}.container-state-senate .district-town,.container-state-house .district-town{display: none;visibility: hidden;}.container-state-senate .races-container>div>div:first-child,.container-state-house .races-container>div>div:first-child{grid-column: 1/-1;}.mdl-result-line{display: none;}.container-state-senate.active .mdl-result-line.state-senate-display{display: block;}.container-state-house.active .mdl-result-line.state-house-display{display: block;} document.querySelectorAll('.region-titles a').forEach(function (link) { link.target = '\_self'; }); (function () { const MAPBOX\_TOKEN = "pk.eyJ1IjoibWZ1bHQ4MjUiLCJhIjoiY21wdzA2c2cyMmdqZDJxb2lsOWRvdzI5aCJ9.b-sjugbo9XA9Krkr035ASw"; /\* Maine GIS district layers. These are the district boundary lookup endpoints used after Mapbox converts the user's address into latitude/longitude. \*/ // const HOUSE\_LAYER = "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/MaineSociety/FeatureServer/11/query"; // const SENATE\_LAYER = "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/ArcGIS/rest/services/MaineVotingDistricts2021StateSenate/FeatureServer/2/query"; const HOUSE\_LAYER = "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/MaineVotingDistricts2021House/FeatureServer/0/query"; const SENATE\_LAYER = "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/ArcGIS/rest/services/MaineVotingDistricts2021StateSenate/FeatureServer/2/query"; const input = document.getElementById("mdl-address"); const suggestionsBox = document.getElementById("mdl-suggestions"); const form = document.getElementById("mdl-form"); const status = document.getElementById("mdl-status"); const results = document.getElementById("mdl-results"); let selectedPoint = null; let debounceTimer = null; input.addEventListener("input", function () { selectedPoint = null; results.innerHTML = ""; clearTimeout(debounceTimer); const query = input.value.trim(); if (query.length < 3) { hideSuggestions(); return; } debounceTimer = setTimeout(function () { fetchAddressSuggestions(query); }, 250); }); document.addEventListener("click", function (event) { if (!event.target.closest(".mdl-autocomplete-wrap")) { hideSuggestions(); } }); form.addEventListener("submit", async function (event) { event.preventDefault(); results.innerHTML = ""; try { status.textContent = "Looking up."; let point = selectedPoint; if (!point) { const features = await getMapboxSuggestions(input.value.trim()); if (!features.length) { status.textContent = "Address not found. Try adding town and ZIP."; return; } point = featureToPoint(features\[0\]); input.value = features\[0\].place\_name; } const \[house, senate\] = await Promise.all(\[ queryDistrictLayer(HOUSE\_LAYER, point.lon, point.lat), queryDistrictLayer(SENATE\_LAYER, point.lon, point.lat) \]); const houseDistrict = extractDistrictNumber(house, \[ "DISTRICT", "DIST", "HOUSE", "HD", "NAME" \]); const senateDistrict = extractDistrictNumber(senate, \[ "DISTRICT", "DIST", "SENATE", "SD", "NAME" \]); status.textContent = ""; if (!houseDistrict) { if (!senateDistrict) { results.innerHTML = '

No district match found

We found the address, but could not match it to a Maine legislative district.

Try entering a full street address, town and ZIP code.'; return; } } let houseLink = houseDistrict.replace(' ', '-').toLowerCase(); let senateLink = senateDistrict.replace(' ', '-').toLowerCase(); results.innerHTML = \`

Your district

House: District ${houseDistrict || "Not found"}

Senate: District ${senateDistrict || "Not found"} \`; } catch (error) { console.error(error); status.textContent = "Something went wrong. Please try again."; } }); async function fetchAddressSuggestions(query) { try { const features = await getMapboxSuggestions(query); renderSuggestions(features); } catch (error) { console.error(error); hideSuggestions(); } } async function getMapboxSuggestions(query) { const params = new URLSearchParams({ access\_token: MAPBOX\_TOKEN, autocomplete: "true", country: "us", types: "address", limit: "5", /\* Rough bounding box around Maine: west, south, east, north \*/ bbox: "-71.2,42.9,-66.8,47.5" }); const url = "https://api.mapbox.com/geocoding/v5/mapbox.places/" + encodeURIComponent(query) + ".json?" + params.toString(); const response = await fetch(url); const data = await response.json(); return data.features || \[\]; } function renderSuggestions(features) { suggestionsBox.innerHTML = ""; if (!features.length) { hideSuggestions(); return; } features.forEach(function (feature) { const item = document.createElement("div"); item.className = "mdl-suggestion"; item.tabIndex = 0; item.textContent = feature.place\_name; item.addEventListener("click", function () { selectSuggestion(feature); }); item.addEventListener("keydown", function (event) { if (event.key "Enter") { selectSuggestion(feature); } }); suggestionsBox.appendChild(item); }); suggestionsBox.hidden = false; } function selectSuggestion(feature) { input.value = feature.place\_name; selectedPoint = featureToPoint(feature); hideSuggestions(); } function featureToPoint(feature) { return { lon: feature.center\[0\], lat: feature.center\[1\] }; } function hideSuggestions() { suggestionsBox.hidden = true; suggestionsBox.innerHTML = ""; } async function queryDistrictLayer(layerUrl, lon, lat) { const params = new URLSearchParams({ f: "json", geometry: lon + "," + lat, geometryType: "esriGeometryPoint", inSR: "4326", spatialRel: "esriSpatialRelIntersects", outFields: "\*", returnGeometry: "false" }); const response = await fetch(layerUrl + "?" + params.toString()); const data = await response.json(); if (data.error) { console.error("ArcGIS error:", data.error); return null; } return data.features?.\[0\]?.attributes || null; } function extractDistrictNumber(attributes, preferredKeys) { if (!attributes) return null; const keys = Object.keys(attributes); for (const preferred of preferredKeys) { const key = keys.find(function (k) { return k.toUpperCase() preferred.toUpperCase(); }); if ( key && attributes\[key\] != null && attributes\[key\] != undefined && attributes\[key\] != "" ) { return cleanDistrictValue(attributes\[key\]); } } const fuzzyKey = keys.find(function (k) { return /district|dist|house|senate|hd|sd|name/i.test(k); }); if (fuzzyKey) { return cleanDistrictValue(attributes\[fuzzyKey\]); } console.log("District attributes found, but no district field matched:", attributes); return null; } function cleanDistrictValue(value) { const text = String(value); const numberMatch = text.match(/\\d+/); if (numberMatch) { return numberMatch\[0\].replace(/^0+/, ""); } return text; } })(); let MTMDistrictIdentifier = (function () { let d = { "senate": \[{ "district": 1, "towns": \["Allagash", "Ashland", "Caribou", "Castle Hill", "Caswell", "Chapman", "Connor Township", "Cyr Plantation", "Eagle Lake", "Fort Fairfield", "Fort Kent", "Frenchville", "Garfield Plantation", "Grand Isle", "Hamlin", "Limestone", "Madawaska", "Mapleton", "Masardis", "Nashville Plantation", "New Canada", "New Sweden", "Northwest Aroostook", "Perham", "Portage Lake", "Square Lake", "St. Agatha", "St. Francis", "St. John Plantation", "Stockholm", "Van Buren", "Wade", "Wallagrass", "Washburn", "Westmanland", "Winterville Plantation", "Woodland"\] }, { "district": 2, "towns": \["Amity", "Blaine", "Bridgewater", "Central Aroostook", "Crystal", "Dyer Brook", "Easton", "Glenwood Plantation", "Hammond", "Haynesville", "Hersey", "Hodgdon", "Houlton", "Island Falls", "Linneus", "Littleton", "Ludlow", "Macwahoc Plantation", "Mars Hill", "Merrill", "Monticello", "Moro Plantation", "New Limerick", "Oakfield", "Orient", "Presque Isle", "Reed Plantation", "Sherman", "Smyrna", "South Aroostook", "Westfield", "Weston", "Chester", "Drew Plantation", "East Millinocket", "Kingman Township", "Mattawamkeag", "Maxfield", "Medway", "Millinocket", "Mount Chase", "North Penobscot", "Patten", "Seboeis Plantation", "Stacyville", "Woodville"\] }, { "district": 3, "towns": \["Benton", "Clinton", "Unity Township", "Dixmont", "Etna", "Newport", "Plymouth", "Stetson", "Canaan", "Detroit", "Madison", "Norridgewock", "Palmyra", "Pittsfield", "Skowhegan"\] }, { "district": 4, "towns": \["Bradford", "Charleston", "Corinna", "Corinth", "Dexter", "Exeter", "Garland", "Glenburn", "Hudson", "Kenduskeag", "Levant", "Abbot", "Atkinson", "Beaver Cove", "Blanchard", "Bowerbank", "Brownville", "Dover-Foxcroft", "Greenville", "Guilford", "Kingsbury Plantation", "Lake View Plantation", "Medford", "Milo", "Monson", "Northeast Piscataquis", "Northwest Piscataquis", "Orneville Township", "Parkman", "Sangerville", "Sebec", "Shirley", "Southeast Piscataquis", "Wellington", "Willimantic"\] }, { "district": 5, "towns": \["Carrabassett Valley", "Chesterville", "East Central Franklin", "Farmington", "Industry", "Kingfield", "New Sharon", "New Vineyard", "Strong", "Wilton", "Wyman Township", "Rome", "Vienna", "Anson", "Athens", "Bingham", "Brighton Plantation", "Cambridge", "Caratunk", "Central Somerset", "Concord Township", "Cornville", "Dennistown Plantation", "Embden", "Harmony", "Hartland", "Highland Plantation", "Jackman", "Lexington Township", "Mercer", "Moose River", "Moscow", "New Portland", "Northeast Somerset", "Northwest Somerset", "Pleasant Ridge Plantation", "Ripley", "Seboomook Lake", "Smithfield", "Solon", "St. Albans", "Starks", "The Forks Plantation", "West Forks Plantation"\] }, { "district": 6, "towns": \["Amherst", "Aurora", "Central Hancock", "East Hancock", "Eastbrook", "Franklin", "Gouldsboro", "Great Pond", "Hancock", "Mariaville", "Northwest Hancock", "Osborn", "Sorrento", "Sullivan", "Waltham", "Winter Harbor", "Addison", "Alexander", "Baileyville", "Baring Plantation", "Beals", "Beddington", "Brookton Township", "Calais", "Cathance Township", "Centerville Township", "Charlotte", "Cherryfield", "Codyville Township", "Columbia", "Columbia Falls", "Cooper", "Crawford", "Cutler", "Danforth", "Deblois", "Dennysville", "Drew Township", "East Central Washington", "East Machias", "Eastport", "Edmunds Township", "Grand Lake Stream Plantation", "Greenlaw Chopping Township", "Harrington", "Jonesboro", "Jonesport", "Lubec", "Machiasport", "Machias", "Marshfield", "Meddybemps", "Milbridge", "North Washington", "Northfield", "Passamaquoddy Indian Township", "Passamaquoddy Pleasant Point", "Pembroke", "Perry", "Princeton", "Robbinston", "Roque Bluffs", "Talmadge", "Topsfield", "Vanceboro", "Waite", "Wesley", "Whiting", "Whitneyville"\] }, { "district": 7, "towns": \["Bar Harbor", "Blue Hill", "Brooklin", "Brooksville", "Castine", "Cranberry Isles", "Deer Isle", "Ellsworth", "Frenchboro", "Lamoine", "Marshall Island", "Mount Desert", "Orland", "Penobscot", "Sedgwick", "Southwest Harbor", "Stonington", "Surry", "Swan's Island", "Tremont", "Trenton", "Verona Island", "Isle au Haut"\] }, { "district": 8, "towns": \["Alton", "Argyle Township", "Burlington", "Carroll Plantation", "East Central Penobscot", "Edinburg", "Enfield", "Greenbush", "Howland", "Lagrange", "Lakeville", "Lee", "Lincoln", "Lowell", "Milford", "Old Town", "Orono", "Passadumkeag", "Penobscot Indian Island", "Prentiss Township", "Springfield", "Twombly Ridge Township", "Veazie", "Webster Plantation", "Whitney Township", "Winn"\] }, { "district": 9, "towns": \["Bangor", "Hermon"\] }, { "district": 10, "towns": \["Bucksport", "Dedham", "Otis", "Bradley", "Brewer", "Carmel", "Clifton", "Eddington", "Hampden", "Holden", "Newburgh", "Orrington"\] }, { "district": 11, "towns": \["Belfast", "Belmont", "Brooks", "Burnham", "Frankfort", "Freedom", "Islesboro", "Jackson", "Knox", "Liberty", "Lincolnville", "Monroe", "Montville", "Morrill", "Northport", "Palermo", "Prospect", "Searsmont", "Searsport", "Stockton Springs", "Swanville", "Thorndike", "Troy", "Unity", "Waldo", "Winterport"\] }, { "district": 12, "towns": \["Appleton", "Camden", "Criehaven", "Cushing", "Friendship", "Hope", "Matinicus Isle Plantation", "Muscle Ridge Islands", "North Haven", "Owls Head", "Rockland", "Rockport", "South Thomaston", "St. George", "Thomaston", "Union", "Vinalhaven", "Warren"\] }, { "district": 13, "towns": \["Windsor", "Alna", "Boothbay", "Boothbay Harbor", "Bremen", "Bristol", "Damariscotta", "Edgecomb", "Hibberts Gore", "Jefferson", "Louds Island", "Monhegan Plantation", "Newcastle", "Nobleboro", "Somerville", "South Bristol", "Southport", "Waldoboro", "Washington", "Westport Island", "Whitefield", "Wiscasset"\] }, { "district": 14, "towns": \["Chelsea", "Farmingdale", "Gardiner", "Hallowell", "Manchester", "Monmouth", "Pittston", "Randolph", "Readfield", "Wayne", "West Gardiner", "Winthrop"\] }, { "district": 15, "towns": \["Augusta", "Belgrade", "China", "Mount Vernon", "Sidney", "Vassalboro"\] }, { "district": 16, "towns": \["Albion", "Oakland", "Waterville", "Winslow", "Fairfield"\] }, { "district": 17, "towns": \["Greene", "Leeds", "Lisbon", "Livermore", "Livermore Falls", "Sabattus", "Turner", "Wales", "Fayette", "Litchfield"\] }, { "district": 18, "towns": \["Mechanic Falls", "Minot", "Bridgton", "Harrison", "Brownfield", "Denmark", "Fryeburg", "Hebron", "Norway", "Otisfield", "Oxford", "Paris", "Sweden", "Waterford"\] }, { "district": 19, "towns": \["Avon", "Carthage", "Coplin Plantation", "Dallas Plantation", "Eustis", "Jay", "North Franklin", "Phillips", "Rangeley", "Rangeley Plantation", "Sandy River Plantation", "South Franklin", "Temple", "Weld", "West Central Franklin", "Andover", "Bethel", "Buckfield", "Byron", "Canton", "Dixfield", "Gilead", "Greenwood", "Hanover", "Hartford", "Lincoln Plantation", "Lovell", "Magalloway Plantation", "Mexico", "Milton Township", "Newry", "North Oxford", "Peru", "Roxbury", "Rumford", "South Oxford", "Stoneham", "Stow", "Sumner", "Upton", "West Paris", "Woodstock"\] }, { "district": 20, "towns": \["Auburn", "Durham", "Poland", "New Gloucester"\] }, { "district": 21, "towns": \["Lewiston"\] }, { "district": 22, "towns": \["Baldwin", "Naples", "Sebago", "Standish", "Hiram", "Porter", "Acton", "Cornish", "Limerick", "Limington", "Newfield", "Parsonsfield", "Shapleigh"\] }, { "district": 23, "towns": \["Brunswick", "Chebeague Island", "Freeport", "Harpswell", "Pownal", "Yarmouth Part"\] }, { "district": 24, "towns": \["Dresden", "Arrowsic", "Bath", "Bowdoin", "Bowdoinham", "Georgetown", "Perkins Township", "Phippsburg", "Richmond", "Topsham", "West Bath", "Woolwich"\] }, { "district": 25, "towns": \["Cumberland", "Falmouth", "Gray", "North Yarmouth", "Long Island Part", "Yarmouth Part"\] }, { "district": 26, "towns": \["Casco", "Frye Island", "Raymond", "Windham", "Westbrook Part"\] }, { "district": 27, "towns": \["Portland Part", "Westbrook Part"\] }, { "district": 28, "towns": \["Portland Part"\] }, { "district": 29, "towns": \["Cape Elizabeth", "South Portland", "Scarborough Part"\] }, { "district": 30, "towns": \["Gorham", "Scarborough Part"\] }, { "district": 31, "towns": \["Buxton", "Old Orchard Beach", "Saco"\] }, { "district": 32, "towns": \["Arundel", "Biddeford", "Dayton", "Hollis", "Lyman"\] }, { "district": 33, "towns": \["Alfred", "Lebanon", "Sanford", "Waterboro"\] }, { "district": 34, "towns": \["Berwick", "Kennebunk", "Kennebunkport", "North Berwick", "Wells"\] }, { "district": 35, "towns": \["Eliot", "Kittery", "Ogunquit", "South Berwick", "York"\] }\], "house": \[{ "district": 1, "towns": \["Allagash", "Ashland", "Eagle Lake", "Fort Kent", "Garfield Plantation", "Masardis", "Nashville Plantation", "New Canada", "Northwest Aroostook", "Portage Lake", "St. Francis", "St. John Plantation", "Wallagrass", "Winterville Plantation"\] }, { "district": 2, "towns": \["Cross Lake Township", "Frenchville", "Grand Isle", "Madawaska", "Madawaska Lake Township", "Perham", "Square Lake", "St. Agatha", "T15 R6 WELS Township", "Van Buren"\] }, { "district": 3, "towns": \["Caswell", "Connor", "Cyr", "Easton", "Fort Fairfield", "Hamlin", "Limestone", "New Sweden", "Stockholm", "Westmanland", "Woodland"\] }, { "district": 4, "towns": \["Caribou", "Wade", "Washburn"\] }, { "district": 5, "towns": \["Presque Isle"\] }, { "district": 6, "towns": \["Blaine", "Bridgewater", "Castle Hill", "Central Aroostook", "Chapman", "Dyer Brook", "E Township", "Hammond", "Hersey", "Littleton", "Mapleton", "Mars Hill", "Merrill", "Monticello", "Moro", "Oxbow North Township", "Smyrna", "T11 R4 WELS", "T7 R5 WELS", "TD R2 WELS", "Westfield"\] }, { "district": 7, "towns": \["Houlton", "Linneus", "Ludlow", "New Limerick", "Oakfield"\] }, { "district": 8, "towns": \["Amity", "Bancroft Township", "Benedicta Township", "Brookton Township", "Carroll", "Cary Township", "Codyville Township", "Crystal", "Danforth", "Drew Township", "Glenwood", "Haynesville", "Hodgdon", "Island Falls", "Kingman Township", "Lakeville", "Lee", "Macwahoc", "Mattawamkeag", "North Washington Part", "Orient", "Prentiss Township", "Reed", "Sherman", "Silver Ridge Township", "South Aroostook", "Springfield", "Stacyville", "Talmadge", "Topsfield", "Twombly Ridge Township", "Vanceboro", "Waite", "Webster", "Weston", "Whitney (Pukakon) Township"\] }, { "district": 9, "towns": \["Baileyville", "Baring", "Calais", "Eastport", "Grand Lake Stream", "Meddybemps", "Passamaquoddy Indian Township", "Passamaquoddy Pleasant Point", "Perry", "Robbinston"\] }, { "district": 10, "towns": \["Alexander", "Cathance Township", "Charlotte", "Cooper", "Crawford", "Cutler", "Dennysville", "East Central Washington", "East Machias", "Edmunds Township", "Greenlaw Chopping Township", "Lubec", "Machiasport", "Marshfield", "North Washington Part", "Northfield", "Pembroke", "Princeton", "Wesley", "Whiting"\] }, { "district": 11, "towns": \["Addison", "Beals", "Centerville Township", "Columbia", "Columbia Falls", "Harrington", "Jonesboro", "Jonesport", "Machias", "Milbridge", "North Washington Part", "Roque Bluffs", "Whitneyville"\] }, { "district": 12, "towns": \["Franklin", "Gouldsboro", "Hancock", "Sorrento", "Steuben", "Sullivan", "Winter Harbor"\] }, { "district": 13, "towns": \["Central Hancock", "Ellsworth", "Fletchers Landing Township", "Waltham"\] }, { "district": 14, "towns": \["Bar Harbor", "Cranberry Isles", "Lamoine", "Mount Desert"\] }, { "district": 15, "towns": \["Brooklin", "Deer Isle", "Frenchboro", "Isle au Haut", "Marshall Island", "Southwest Harbor", "Stonington", "Swan's Island", "Tremont", "Vinalhaven"\] }, { "district": 16, "towns": \["Blue Hill", "Brooksville", "Castine", "Sedgwick", "Surry", "Trenton"\] }, { "district": 17, "towns": \["Bucksport", "Orland", "Penobscot", "Verona Island"\] }, { "district": 18, "towns": \["Amherst", "Aurora", "Beddington", "Burlington", "Cherryfield", "Clifton", "Day Block Township", "Deblois", "Dedham", "East Central Penobscot", "East Hancock", "Eastbrook", "Great Pond", "Greenbush", "Greenfield Township", "Lowell", "Mariaville", "North Washington Part", "Northwest Hancock", "Osborn", "Otis", "Passadumkeag", "Sakon Township", "Summit Townships", "T10 SD TWP", "T22 MD TWP", "T3 ND TWP", "T7 SD TWP", "T9 SD TWP"\] }, { "district": 19, "towns": \["Eddington", "Holden", "Orrington"\] }, { "district": 20, "towns": \["Brewer Part"\] }, { "district": 21, "towns": \["Bangor Part"\] }, { "district": 22, "towns": \["Bangor Part"\] }, { "district": 23, "towns": \["Bangor Part"\] }, { "district": 24, "towns": \["Bangor Part", "Brewer Part", "Orono Part", "Veazie"\] }, { "district": 25, "towns": \["Orono Part"\] }, { "district": 26, "towns": \["Bradley", "Old Town", "Penobscot Indian Island", "Penobscot Nation Voting District"\] }, { "district": 27, "towns": \["Alton", "Argyle Township", "Bradford Part", "Corinth", "Hudson", "Milford"\] }, { "district": 28, "towns": \["Edinburg", "Enfield", "Howland", "Lagrange", "Lincoln", "Mattamiscontis", "Maxfield", "North Penobscot", "Seboeis", "Winn"\] }, { "district": 29, "towns": \["Chester", "East Millinocket", "Herseytown Township", "Medway", "Millinocket", "Mount Chase", "North Penobscot", "Patten", "Woodville"\] }, { "district": 30, "towns": \["Abbot", "Beaver Cove", "Blanchard", "Bowerbank", "Brighton", "Brownville", "Cambridge", "Greenville", "Guilford", "Kingsbury", "Monson", "Northeast Piscataquis", "Northwest Piscataquis", "Parkman", "Sangerville", "Sebec", "Shirley", "Wellington", "Willimantic"\] }, { "district": 31, "towns": \["Atkinson", "Brownville", "Dover-Foxcroft", "Lake View", "Medford", "Milo", "Orneville Township", "Southeast Piscataquis"\] }, { "district": 32, "towns": \["Bradford Part", "Charleston", "Dexter", "Exeter", "Garland", "Stetson"\] }, { "district": 33, "towns": \["Corinna", "Dixmont", "Etna", "Newport", "Plymouth"\] }, { "district": 34, "towns": \["Glenburn", "Kenduskeag", "Levant"\] }, { "district": 35, "towns": \["Carmel", "Hermon"\] }, { "district": 36, "towns": \["Hampden", "Newburgh"\] }, { "district": 37, "towns": \["Frankfort Part", "Prospect", "Searsport", "Stockton Springs", "Winterport"\] }, { "district": 38, "towns": \["Brooks", "Frankfort Part", "Jackson", "Knox", "Monroe", "Swanville", "Thorndike", "Unity", "Waldo"\] }, { "district": 39, "towns": \["Belfast", "Belmont", "Northport"\] }, { "district": 40, "towns": \["Appleton", "Islesboro", "Liberty", "Lincolnville", "Montville", "Morrill", "Searsmont"\] }, { "district": 41, "towns": \["Camden", "Rockport"\] }, { "district": 42, "towns": \["Criehaven Township", "Matinicus Isle", "Muscle Ridge Islands", "North Haven", "Owls Head Part", "Rockland"\] }, { "district": 43, "towns": \["Cushing", "Owls Head Part", "South Thomaston", "St. George", "Thomaston"\] }, { "district": 44, "towns": \["Hope", "Union", "Warren"\] }, { "district": 45, "towns": \["Bremen", "Friendship", "Louds Island Township", "Waldoboro", "Washington"\] }, { "district": 46, "towns": \["Bristol", "Damariscotta", "Monhegan", "Newcastle", "Nobleboro"\] }, { "district": 47, "towns": \["Alna", "Jefferson", "Whitefield", "Wiscasset"\] }, { "district": 48, "towns": \["Boothbay", "Boothbay Harbor", "Edgecomb", "South Bristol", "Southport", "Westport Island"\] }, { "district": 49, "towns": \["Arrowsic", "Georgetown", "Phippsburg", "West Bath", "Woolwich"\] }, { "district": 50, "towns": \["Bath"\] }, { "district": 51, "towns": \["Topsham Part"\] }, { "district": 52, "towns": \["Bowdoin Part", "Bowdoinham", "Perkins Island Township", "Richmond"\] }, { "district": 53, "towns": \["Chelsea", "Dresden", "Pittston", "Randolph"\] }, { "district": 54, "towns": \["Farmingdale", "Gardiner"\] }, { "district": 55, "towns": \["Hallowell", "Manchester", "West Gardiner"\] }, { "district": 56, "towns": \["Litchfield", "Monmouth", "Wales"\] }, { "district": 57, "towns": \["Readfield", "Winthrop"\] }, { "district": 58, "towns": \["Belgrade", "Fayette", "Mount Vernon", "New Sharon", "Rome", "Vienna"\] }, { "district": 59, "towns": \["Augusta Part"\] }, { "district": 60, "towns": \["Augusta Part"\] }, { "district": 61, "towns": \["Sidney Part", "Vassalboro"\] }, { "district": 62, "towns": \["China", "Hibberts Gore Township", "Palermo", "Somerville", "Windsor"\] }, { "district": 63, "towns": \["Albion", "Freedom", "Unity Township", "Winslow Part"\] }, { "district": 64, "towns": \["Waterville Part", "Winslow Part"\] }, { "district": 65, "towns": \["Waterville Part"\] }, { "district": 66, "towns": \["Mercer", "Oakland", "Sidney Part", "Smithfield", "Starks"\] }, { "district": 67, "towns": \["Benton", "Fairfield"\] }, { "district": 68, "towns": \["Burnham", "Clinton", "Pittsfield", "Troy"\] }, { "district": 69, "towns": \["Canaan", "Detroit", "Hartland", "Palmyra", "St. Albans"\] }, { "district": 70, "towns": \["Skowhegan"\] }, { "district": 71, "towns": \["Cornville", "Madison", "Norridgewock"\] }, { "district": 72, "towns": \["Anson", "Athens", "Bingham", "Caratunk", "Central Somerset", "Concord Township", "Embden", "Harmony", "Lexington Township", "Moscow", "Moxie Gore Township", "Northeast Somerset", "Pleasant Ridge", "Ripley", "Rockwood Strip T1", "Seboomook Lake", "Solon"\] }, { "district": 73, "towns": \["Andover", "Attean Township", "Bowtown Township", "Carrabassett Valley", "Carrying Place Township", "Coplin", "Dallas", "Dennistown", "East Central Franklin", "Eustis", "Freeman Township", "Gilead", "Highland", "Jackman", "Kingfield", "Lincoln Plantation", "Madrid Township", "Magalloway Township", "Moose River", "Moscow", "Newry", "North Franklin", "North Oxford", "Northwest Somerset", "Phillips", "Rangeley", "Salem Township", "Sandy River", "The Forks", "Upton", "West Central Franklin", "West Forks", "Wyman Township"\] }, { "district": 74, "towns": \["Avon", "Carthage", "Industry", "New Portland", "New Vineyard", "South Franklin", "Strong", "Temple", "Weld", "Wilton"\] }, { "district": 75, "towns": \["Chesterville", "Farmington"\] }, { "district": 76, "towns": \["Jay", "Livermore Part", "Livermore Falls"\] }, { "district": 77, "towns": \["Canton", "Dixfield", "Hartford", "Livermore Part", "Mexico", "Peru"\] }, { "district": 78, "towns": \["Bethel", "Byron", "Hanover", "Milton Township", "Roxbury", "Rumford"\] }, { "district": 79, "towns": \["Paris", "Sumner", "West Paris", "Woodstock"\] }, { "district": 80, "towns": \["Buckfield", "Hebron", "Otisfield", "Oxford"\] }, { "district": 81, "towns": \["Albany Township", "Greenwood", "Locke Mills", "Mason Township", "Norway", "South Oxford", "Stoneham", "Stow", "Sweden", "Waterford"\] }, { "district": 82, "towns": \["Brownfield", "Fryeburg", "Hiram", "Lovell", "Porter"\] }, { "district": 83, "towns": \["Bridgton", "Denmark", "Harrison"\] }, { "district": 84, "towns": \["Baldwin", "Naples", "Sebago", "Standish Part"\] }, { "district": 85, "towns": \["Standish Part"\] }, { "district": 86, "towns": \["Casco", "Frye Island", "Poland Part", "Raymond"\] }, { "district": 87, "towns": \["Mechanic Falls", "Poland Part"\] }, { "district": 88, "towns": \["Auburn Part"\] }, { "district": 89, "towns": \["Auburn Part"\] }, { "district": 90, "towns": \["Auburn Part", "Minot"\] }, { "district": 91, "towns": \["Leeds", "Turner", "Wayne"\] }, { "district": 92, "towns": \["Greene", "Sabattus"\] }, { "district": 93, "towns": \["Lewiston Part"\] }, { "district": 94, "towns": \["Lewiston Part"\] }, { "district": 95, "towns": \["Lewiston Part"\] }, { "district": 96, "towns": \["Lewiston Part"\] }, { "district": 97, "towns": \["Lisbon Part"\] }, { "district": 98, "towns": \["Bowdoin Part", "Durham", "Lisbon Part", "Pownal", "Topsham Part"\] }, { "district": 99, "towns": \["Brunswick Part", "Harpswell"\] }, { "district": 100, "towns": \["Brunswick Part"\] }, { "district": 101, "towns": \["Brunswick Part"\] }, { "district": 102, "towns": \["Freeport"\] }, { "district": 103, "towns": \["Yarmouth"\] }, { "district": 104, "towns": \["Gray Part", "New Gloucester"\] }, { "district": 105, "towns": \["Gray Part", "North Yarmouth"\] }, { "district": 106, "towns": \["Windham Part"\] }, { "district": 107, "towns": \["Windham Part"\] }, { "district": 108, "towns": \["Gorham Part"\] }, { "district": 109, "towns": \["Gorham Part"\] }, { "district": 110, "towns": \["Chebeague Island", "Cumberland", "Long Island"\] }, { "district": 111, "towns": \["Falmouth Part"\] }, { "district": 112, "towns": \["Falmouth Part", "Portland Part"\] }, { "district": 113, "towns": \["Portland Part"\] }, { "district": 114, "towns": \["Portland Part"\] }, { "district": 115, "towns": \["Portland Part"\] }, { "district": 116, "towns": \["Portland Part"\] }, { "district": 117, "towns": \["Portland Part"\] }, { "district": 118, "towns": \["Portland Part"\] }, { "district": 119, "towns": \["Peaks Island", "Portland Part"\] }, { "district": 120, "towns": \["South Portland Part"\] }, { "district": 121, "towns": \["Cape Elizabeth Part", "South Portland Part"\] }, { "district": 122, "towns": \["South Portland Part"\] }, { "district": 123, "towns": \["Cape Elizabeth Part"\] }, { "district": 124, "towns": \["Scarborough Part"\] }, { "district": 125, "towns": \["Scarborough Part"\] }, { "district": 126, "towns": \["Saco Part", "Scarborough Part", "Westbrook Part"\] }, { "district": 127, "towns": \["Westbrook Part"\] }, { "district": 128, "towns": \["Westbrook Part"\] }, { "district": 129, "towns": \["Saco Part"\] }, { "district": 130, "towns": \["Saco Part"\] }, { "district": 131, "towns": \["Old Orchard Beach"\] }, { "district": 132, "towns": \["Biddeford Part"\] }, { "district": 133, "towns": \["Biddeford Part"\] }, { "district": 134, "towns": \["Biddeford Part", "Kennebunk Part", "Kennebunkport"\] }, { "district": 135, "towns": \["Kennebunk Part"\] }, { "district": 136, "towns": \["Alfred", "Lyman Part", "Waterboro Part"\] }, { "district": 137, "towns": \["Buxton Part", "Hollis Part"\] }, { "district": 138, "towns": \["Buxton Part", "Cornish", "Hollis Part", "Limington"\] }, { "district": 139, "towns": \["Limerick", "Parsonsfield", "Waterboro Part"\] }, { "district": 140, "towns": \["Arundel", "Dayton", "Lyman Part"\] }, { "district": 141, "towns": \["Newfield", "Sanford Part", "Shapleigh", "Springvale Part"\] }, { "district": 142, "towns": \["Sanford Part", "Springvale Part"\] }, { "district": 143, "towns": \["Sanford Part"\] }, { "district": 144, "towns": \["Acton", "Lebanon"\] }, { "district": 145, "towns": \["Wells Part"\] }, { "district": 146, "towns": \["Ogunquit", "Wells Part", "York Part"\] }, { "district": 147, "towns": \["York Part"\] }, { "district": 148, "towns": \["Berwick", "North Berwick Part"\] }, { "district": 149, "towns": \["North Berwick Part", "South Berwick Part"\] }, { "district": 150, "towns": \["Eliot", "Kittery Part", "South Berwick Part"\] }, { "district": 151, "towns": \["Kittery Part"\] }\] }; let m = /(district \\d+)/i; let houseMap = {}; let senMap = {}; let sortGenerator = (container) => { return (item) => { let distName = 'District ' + item.district; let r = {}; container\[distName\] = item.towns.join(', '); }; }; let appendTownsGen = (objectMap) => { return (race) => { let matches = race.innerText.match(m); if (matches.length > 1) { let matchingDist = objectMap\[matches\[1\]\]; let d = document.createElement('div'); d.innerText = matchingDist; d.classList.add('district-town'); race.parentElement.insertAdjacentElement('beforeend', d); } } }; d.house.forEach(sortGenerator(houseMap)); d.senate.forEach(sortGenerator(senMap)); let doSetup = (e) => { console.log('parsing town and districts.'); if (document.querySelector('.district-town')) { console.log('Found existing district mapping. exiting.'); return; } document .querySelectorAll('.container-state-house .race-title h2') .forEach(appendTownsGen(houseMap)); document .querySelectorAll('.container-state-senate .race-title h2') .forEach(appendTownsGen(senMap)); }; return doSetup; }()); #maine-district-lookup{flex-wrap: wrap;}#maine-district-lookup #mdl-results{position: relative;width:100%;} Copy the Story Link Tagged: [election 2026](https://www.pressherald.com/tag/election-2026/)

Related Stories

Trump set to deliver 'historic' speech celebrating America's 250th anniversary
NATIONALpolitics1 day ago

Trump set to deliver 'historic' speech celebrating America's 250th anniversary

Collins’ Kavanaugh vote should cost her Senate seat | Letter
politics1 day ago

Collins’ Kavanaugh vote should cost her Senate seat | Letter

Maine Legislature must act quickly to regulate AI | Letter
politics1 day ago

Maine Legislature must act quickly to regulate AI | Letter