PageSourceSearch

https://www.sargentre.com/user/login/

html sargentre.com collected 2026-10-09 16:51:34 UTC 100,076 bytes, 1,107 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-us">
3	<head>
4	
4<script>
5                document.addEventListener("DOMContentLoaded", function(event) {
6                    function usmPageRenderUtil(){var e=this;e.pageCategory="",e.heroElements=[],e.fpTime=null,e.fmpTime=null,e.fmpToTti=null,e.ttiTime=null,e.checker=null,e.waitTime=5e3,e.debug=!1,e.run=function(t){var n=t.heroElementIdentifiers||[".page-hero-element"];return e.pageCategory=t.pageCategory,e.debug=t.debug||!1,new Promise(function(t,r){e.observePaint().then(function(){e.observeHeroElements(n).then(function(){e.observeLongTasks().then(function(){e.fmpToTti=e.ttiTime-e.fmpTime,e.debug&&(console.log("FP: "+e.fpTime),console.log("FMP: "+e.fmpTime),console.log("FMP to TTI: "+e.fmpToTti),console.log("TTI: "+e.ttiTime)),t(e)})})})})},e.observePaint=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var r=n.getEntries();for(var i in r){var s=r[i],o=s.name;e.fpTime=performance.now();if("first-paint"===s.name){e.debug&&(console.log(s),console.log("metricName"),console.log(o)),t();return}}});r.observe({entryTypes:["paint"]})})},e.observeHeroElements=function(t){return new Promise(function(n,r){t=t.join(),e.debug&&console.log("Hero elements: "+t),e.heroElements=[].slice.call(document.querySelectorAll(t)),e.debug&&console.log("Hero elements count: ["+e.heroElements.length+"]");var i=new MutationObserver(function(t){for(var r=0;r<e.heroElements.length;r++){var s=e.heroElements[r];document.contains(s)&&e.heroElements.splice(r,1)}e.heroElements.length<=0&&(i.disconnect(),e.fmpTime=performance.now(),e.debug&&console.log("Hero observer disconnected. ["+e.getCurrentTime(!0)+"] Unix: ["+e.getCurrentTime()+"]"),n()),e.debug&&console.log("Hero elements not displayed. ["+e.heroElements.length+"].")});i.observe(document,{attributes:!0,childList:!0,characterData:!1,subtree:!0})})},e.observeLongTasks=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var i=n.getEntries();for(var s in i){var o=i[s];o instanceof PerformanceLongTaskTiming&&(e.debug&&console.log(o),e.scheduleCheck(r,t))}});r.observe({entryTypes:["longtask"]})})},this.scheduleCheck=function(e,t){var n=this,r=performance.now();clearTimeout(this.checker),this.checker=setTimeout(function(){n.ttiTime=r,e.disconnect(),t(),n.debug&&console.log("Performance observer disconnected. ["+n.getCurrentTime(!0)+"] Unix: ["+n.getCurrentTime()+"]")},n.waitTime)},e.getCurrentTime=function(e){return e===!0?(new Date).toUTCString():(new Date).getTime()},e.getPayload=function(){return{"Time to Interactive":e.formatTime(e.ttiTime),"First Paint":e.formatTime(e.fpTime),"First Meaningful Paint":e.formatTime(e.fmpTime),"FMP to TTI":e.formatTime(e.fmpToTti),"Page Category":e.pageCategory}},e.formatTime=function(e){e/=1e3;var t=Math.pow(10,1);return Math.round(e*t)/t}};
7                    var renderUtil = new usmPageRenderUtil();
8                    var debug = false;
9                    renderUtil.run({heroElementIdentifiers: false, pageCategory: "User Login", debug: debug}).then(function (renderUtil) {
10                        if (debug) {
11                            console.log(renderUtil.getPayload());
12                        }
13                    });
14                });
15            </script>
15<script>
16window.dataLayer = window.dataLayer || [];
17window.dataLayer.push({"hasSEO":"UA-73987-39","hasGlobalRE":"UA-73987-25","hasPremium":"UA-73987-27","hasCompassV2":"UA-73987-51","NumberOfAgents":4,"NumberOfAgentWebsites":0,"MLS":["ME_MAINE_API"],"CallTracking":false,"MapSearchV2":true,"OffMarketProperty":false,"VendorsPage":false,"Blog":true,"LuxuryBuildings":false,"TownPages":false,"MarketReportTool":false,"AVMTool":false,"LeadRouter":true});
18</script>
18
19�<!-- Google Tag Manager -->
20�
20<script>
vendor: 317 bytes, line 20
20(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
20GTM-NR38L3C
vendor: 3 bytes, line 20
20');
20</script>
20
21�<!-- End Google Tag Manager -->
22�<title>Sargent Real Estate</title>
23	<meta name="description" content="" />
24	<meta name="author" content="Sargent Real Estate" />
25	<link rel="canonical" href="https://www.sargentre.com/user/login/"/>
26	<link rel="copyright" href="https://d.usmre.com/UnionStreetMediaTermsofUse.pdf"/><meta property="fb:app_id" content="4029847067250472" />
27	<meta property="og:title" content="Sargent Real Estate" />
28	<meta property="og:description" content="" />
29	<meta property="og:url" content="https://www.sargentre.com/user/login/" />
30	<meta property="og:type" content="website" />
31	<meta property="og:site_name" content="Sargent Real Estate" />
32	<meta name="twitter:card" content="summary" />
33	<meta name="twitter:title" content="Sargent Real Estate" />
34	<meta name="twitter:description" content="" />
35	<meta name="google-site-verification" content="SccCnKW8x8jTyKiSy4zJrIEkhwLTsG_nMjsGcP9NUEI" />
36	<meta name="msvalidate.01" content="7AFB407F61E561ABD1320A24E73E1F9A" />
37	<meta name="google-site-verification" content="SccCnKW8x8jTyKiSy4zJrIEkhwLTsG_nMjsGcP9NUEI" />
38	<link rel="shortcut icon" href="https://s3.amazonaws.com/files.usmre.com/9775/i/favicon.png?t=1685607286" />
39<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
40<meta name="viewport" content="width=device-width, initial-scale=1">
41<link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/9775/styles.min.css?version=1790335606" media="screen" /><link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/layouts/14/print.css?version=1740650881" media="print" />
41<script src="https://kit.fontawesome.com/c7bcd66c3f.js" crossorigin="anonymous"></script>
41<script>/** vim: et:ts=4:sw=4:sts=4
42 * @license RequireJS 2.3.3 Copyright jQuery Foundation and other contributors.
43 * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE
44 */
45var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i<e.length&&(!e[i]||!t(e[i],i,e));i+=1);}}function eachReverse(e,t){if(e){var i;for(i=e.length-1;i>-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t<e.length;t++)if(i=e[t],"."===i)e.splice(t,1),t-=1;else if(".."===i){if(0===t||1===t&&".."===e[2]||".."===e[t-1])continue;t>0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h,m,g=i&&i.split("/"),v=y.map,x=v&&v["*"];if(e&&(e=e.split("/"),d=e.length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[d])&&(e[d]=e[d].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&g&&(m=g.slice(0,g.length-1),e=m.concat(e)),t(e),e=e.join("/")),r&&v&&(g||x)){a=e.split("/");e:for(s=a.length;s>0;s-=1){if(c=a.slice(0,s).join("/"),g)for(u=g.length;u>0;u-=1)if(o=getOwn(v,g.slice(0,u).join("/")),o&&(o=getOwn(o,c))){p=o,f=s;break e}!l&&x&&getOwn(x,c)&&(l=getOwn(x,c),h=s)}!p&&l&&(p=l,f=h),p&&(a.splice(0,f,p),e=a.join("/"))}return n=getOwn(y.pkgs,e),n?n:e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):e.indexOf("!")===-1?i(e,p,n):e:(h=i(e,p,n),c=o(h),d=c[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e),n.error&&"error"===t?i(n.error):n.on(t,i)):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;
45for(d();O.length;){if(e=O.shift(),null===e[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;return this.shim?void q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()})):e.prefix?this.callPlugin():this.load()}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&(t=this.module,t?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),d=getOwn(S,o.id),void(d&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):(n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),n.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit
45("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(i.indexOf("?")===-1?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t,i;e="string"==typeof e?{name:e}:e,i=e.name,t=e.location,t&&(y.paths[i]=e.location),y.pkgs[i]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),f=s(a(null,t)),f.skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return n!==-1&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){var t=getOwn(S,e.id);t&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(i=O.shift(),null===i[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,n=e.split("/"),o=n.length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js"),s=("/"===s.charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.3",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),n=getOwn(contexts,a),n||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick="undefined"!=typeof setTimeout?function(e){setTimeout(e,4)}:function(e){e()}
45,require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return r=req.createNode(n,t,i),r.setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||mainScript.indexOf("!")!==-1||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript(),r&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")])),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout);</script>
45<script type="text/javascript">
46            var requireConfig = {"waitSeconds":20,"baseUrl":"https:\/\/d1mlo4htassgww.cloudfront.net\/shipyard\/build\/","paths":{"async":"profiles\/default","bootstrap":"profiles\/default","goog":"profiles\/default","jquery":"profiles\/default","jquery.browser":"profiles\/default","jquery.deparam":"profiles\/default","jquery.dropdownchecklist":"profiles\/default","jquery.form":"profiles\/default","jquery.history":"profiles\/default","jquery.html5-placeholder-shim":"profiles\/default","jquery.inview":"profiles\/default","jquery.usmNlsShipyard":"profiles\/default","jquery.pageitems":"profiles\/default","jquery.usmajaxtogglebutton":"profiles\/default","jquery.usmmortgageestimate":"profiles\/default","jquery.usmtruncate":"profiles\/default","jquery.validation":"profiles\/default","jquery.validation-extensions-usm":"profiles\/default","jqueryui":"profiles\/default","knockout":"knockout-2.3.0","owlcarousel":"profiles\/default","picturefill.min":"profiles\/default","propertyParser":"profiles\/default","shim.polyfills":"profiles\/default","captcha":"profiles\/default","shipyard":"profiles\/default","static-map-search":"profiles\/default","usm":"profiles\/default","usm.analytics":"profiles\/default","usm.cookie":"profiles\/default","usm.url":"profiles\/default","usm.user":"profiles\/default","usm.favorite":"profiles\/default","usm.savesearch":"profiles\/default","usm.modalform":"profiles\/default","usm.dynamicsearch":"profiles\/default","LLSDKsJS":"https:\/\/sdk.locallogic.co\/sdks-js\/1.19.30\/index.umd","webfontloader":"\/\/ajax.googleapis.com\/ajax\/libs\/webfont\/1\/webfont","Leaflet":"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.0.1\/leaflet","mapboxgl":"https:\/\/api.tiles.mapbox.com\/mapbox-gl-js\/v0.42.0\/mapbox-gl","plunk":"plunkComponents.min","emblaCarousel":"https:\/\/unpkg.com\/[email protected]\/embla-carousel.umd","emblaCarouselAutoplay":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-autoplay.umd","emblaCarouselClassNames":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-class-names.umd","emblaCarouselFade":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-fade.umd","emblaCarouselPlugins":"emblaCarouselPlugins","map.regions":"\/realestate\/regions\/?json","jquery.validationextensionsusm":"\/data\/shipyard\/js\/jquery.validation-extensions-usm","jquery.usmmortgageestimate?version=1717487422":"https:\/\/d1mlo4htassgww.cloudfront.net\/shipyard\/js\/jquery.usmmortgageestimate?version=1717487422"}};
47            requireConfig.urlArgs = function(id, url) {
48                var args = "";
49                if (url.indexOf("d1nn5t56all1qd") <= 0 && url.indexOf("dy0meowegjlo2") <= 0) {
50                    args = "version=1791562486";
51                    return (url.indexOf("?") === -1 ? "?" : "&") + args;
52                }
53
54                return "";
55            };
56
57            require.config(requireConfig);
58            </script>
58
59            
59<script type="text/javascript">require(["profiles/default", "usm", "usm.calltracking", "usm.goscript"], function    (listing, usm) {
60                if (usm.touchSupport) { require(["profiles/touch"]); }
61            });</script>
vendor: 73 bytes, line 61
61<script async src="https://www.google.com/recaptcha/enterprise.js?render=
616LeGUJEpAAAAANAraaN9hibE29n3m1fryM8cPetQ
vendor: 24 bytes, lines 61-62
61"></script>
62            
62<link rel="preconnect" href="https://www.google.com">
63            <link rel="preconnect" href="https://www.gstatic.com" crossorigin>
64</head>
65�<body class="login array1-user array1-login fall" data-site-type="shipyard" data-re-captcha-site-key="6LeGUJEpAAAAANAraaN9hibE29n3m1fryM8cPetQ">
66�<!-- Google Tag Manager (noscript) -->
vendor: 63 bytes, lines 66-67
66
67�<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
67GTM-NR38L3C
vendor: 84 bytes, lines 67-68
67" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
68�
68<!-- End Google Tag Manager (noscript) -->
69�<div class="utilBarWrap">
70    <aside id="sidebar3"><div id="image-294079" class="widget image container"><a href="/" target="_self"><img src="https://d3w216np43fnr4.cloudfront.net/9775/294079/1.png?version=1717415827" alt="Sargent Real Estate logo" width="173" height="56"/></a></div><div id="menuwidget-293942" class="widget menu menuwidget default-nav container"><h3 class="widget-title">Menu</h3><div class="widget-inner"><div class="desktop-nav"><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-293942"><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-162940"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-162940" class="dropdown-toggle" role="menuitem">Property<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-162940" role="menu"><li role="presentation" class=" menu-item-162962"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-162963"><a href="/real-estate/our-listings/" target="_self" role="menuitem">Our Listings</a></li><li role="presentation" class=" menu-item-162964"><a href="/sold-listings/" target="_self" role="menuitem">Sold Listings</a></li></ul></li><li role="presentation" class="has-children menu-item-162941"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-162941" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-162941" role="menu"><li role="presentation" class=" menu-item-162965"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-162966"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-162968"><a href="/sellers/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li></ul></li><li role="presentation" class=" menu-item-162942"><a href="/community/all-communities/" target="_self" role="menuitem">Communities</a></li><li role="presentation" class="has-children menu-item-162945"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-162945" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-162945" role="menu"><li role="presentation" class=" menu-item-162948"><a href="/our-agents/" target="_self" role="menuitem">Meet the Team</a></li><li role="presentation" class=" menu-item-162949"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li></ul></li><li role="presentation" class=" menu-item-162946"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul></div></nav></div></div><div class="mobile-nav"><button type="button" class="navbar-toggle" data-target="#navbar-mobile-293942" aria-label="Toggle navigation"><span>Menu</span><span class="fa fa-bar"></span><span class="fa fa-bar"></span><span class="fa fa-bar"></span></button><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-mobile-293942"><a href="#" class="menu-close"><i class="fa fa-times-circle-o"></i><span class="sr-only">Close Button</span></a><div class="menu-sign-on"><a class="usm-btn nav-login" href="/user/login/" rel="nofollow">Log In</a><a class="usm-btn nav-register" href="/user/register/" rel="nofollow">Sign Up</a><a class="usm-btn nav-account" href="/user/" rel="nofollow">My Account</a></div><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-162940"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-162940" class="dropdown-toggle" role="menuitem">Property<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-162940" role="menu"><li role="presentation" class=" menu-item-162962"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-162963"><a href="/real-estate/our-listings/" target="_self" role="menuitem">Our Listings</a></li><li role="presentation" class=" menu-item-162964"><a href="/sold-listings/" target="_self" role="menuitem">Sold Listings</a></li></ul></li><li role="presentation" class="has-children menu-item-162941"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-162941" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-162941" role="menu"><li role="presentation" class=" menu-item-162965"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-162966"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-162968"><a href="/sellers/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li></ul></li><li role="presentation" class=" menu-item-162942"><a href="/community/all-communities/" target="_self" role="menuitem">Communities</a></li><li role="presentation" class="has-children menu-item-162945"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-162945" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-162945" role="menu"><li role="presentation" class=" menu-item-162948"><a href="/our-agents/" target="_self" role="menuitem">Meet the Team</a></li><li role="presentation" class=" menu-item-162949"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li></ul></li><li role="presentation" class=" menu-item-162946"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul><ul class="nav navbar-nav user-nav"><li class="menu-item-saved-search" role="presentation"><a href="/realestate/searches/" rel="nofollow">Saved Searches</a></li><li class="menu-item-favorites" role="presentation"><a href="/realestate/favorites/view/" rel="nofollow">Favorites</a></li></ul></div></nav></div></div></div></div><div class="top-header-links">
71  <div class="header-user">
72    <div class="header-user-logged-in">
73      <div class="account-link"><a href="/user/" rel="nofollow">Account</a></div>
74    </div>
75    <div class="header-user-logged-out">
76      <div class="header-user-register">
77        <div class="register-link"><a href="/user/register/" rel="nofollow">Sign Up</a></div>
78      </div>
79      <span> or </span>
80      <div class="header-user-login">
81        <div class="login-link"><a href="/user/login/" rel="nofollow">Log In</a></div>
82      </div>
83    </div>
84  </div>
85  <a href="tel:207-667-2144" aria-label="Phone Number" class="contact-link-phone"><i class="fa-solid fa-phone"></i> 207-667-2144</a>
86</div><div id="menuwidget-294069" class="widget menu menuwidget default-nav container"><h3 class="widget-title">Hamburger Menu</h3><div class="widget-inner"><div class="desktop-nav"><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-294069"><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-162940"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-162940" class="dropdown-toggle" role="menuitem">Property<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-162940" role="menu"><li role="presentation" class=" menu-item-162962"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-162963"><a href="/real-estate/our-listings/" target="_self" role="menuitem">Our Listings</a></li><li role="presentation" class=" menu-item-162964"><a href="/sold-listings/" target="_self" role="menuitem">Sold Listings</a></li></ul></li><li role="presentation" class="has-children menu-item-162941"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-162941" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-162941" role="menu"><li role="presentation" class=" menu-item-162965"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-162966"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-162968"><a href="/sellers/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li></ul></li><li role="presentation" class=" menu-item-162942"><a href="/community/all-communities/" target="_self" role="menuitem">Communities</a></li><li role="presentation" class="has-children menu-item-162945"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-162945" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-162945" role="menu"><li role="presentation" class=" menu-item-162948"><a href="/our-agents/" target="_self" role="menuitem">Meet the Team</a></li><li role="presentation" class=" menu-item-162949"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li></ul></li><li role="presentation" class=" menu-item-162946"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul></div></nav></div></div><div class="mobile-nav"><button type="button" class="navbar-toggle" data-target="#navbar-mobile-294069" aria-label="Toggle navigation"><span>Menu</span><span class="fa fa-bar"></span><span class="fa fa-bar"></span><span class="fa fa-bar"></span></button><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-mobile-294069"><a href="#" class="menu-close"><i class="fa fa-times-circle-o"></i><span class="sr-only">Close Button</span></a><div class="menu-sign-on"><a class="usm-btn nav-login" href="/user/login/" rel="nofollow">Log In</a><a class="usm-btn nav-register" href="/user/register/" rel="nofollow">Sign Up</a><a class="usm-btn nav-account" href="/user/" rel="nofollow">My Account</a></div><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-162940"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-162940" class="dropdown-toggle" role="menuitem">Property<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-162940" role="menu"><li role="presentation" class=" menu-item-162962"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-162963"><a href="/real-estate/our-listings/" target="_self" role="menuitem">Our Listings</a></li><li role="presentation" class=" menu-item-162964"><a href="/sold-listings/" target="_self" role="menuitem">Sold Listings</a></li></ul></li><li role="presentation" class="has-children menu-item-162941"><a target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-162941" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-162941" role="menu"><li role="presentation" class=" menu-item-162965"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-162966"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-162968"><a href="/sellers/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li></ul></li><li role="presentation" class=" menu-item-162942"><a href="/community/all-communities/" target="_self" role="menuitem">Communities</a></li><li role="presentation" class="has-children menu-item-162945"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-162945" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-162945" role="menu"><li role="presentation" class=" menu-item-162948"><a href="/our-agents/" target="_self" role="menuitem">Meet the Team</a></li><li role="presentation" class=" menu-item-162949"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li></ul></li><li role="presentation" class=" menu-item-162946"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul><div class="navbar-phone"><a href="tel:207-667-2144"><i class="fas fa-phone-alt"></i>207-667-2144</a></div><ul class="nav navbar-nav user-nav"><li class="menu-item-saved-search" role="presentation"><a href="/realestate/searches/" rel="nofollow">Saved Searches</a></li><li class="menu-item-favorites" role="presentation"><a href="/realestate/favorites/view/" rel="nofollow">Favorites</a></li></ul></div></nav></div></div></div></div></aside>
87</div>
88<div class="topWrap">
89    <aside id="top"><div id="slideshow-293941" class="widget slideshow container"><div class="slideshow-wrapper" id="carousel-293941"><div class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt="Forest with river" fetchpriority="high" src="https://d3w216np43fnr4.cloudfront.net/1920x1080/9775/293941/1.jpg?version=1717413844" srcset="https://d3w216np43fnr4.cloudfront.net/320x320/9775/293941/1.jpg?version=1717413842 320w, https://d3w216np43fnr4.cloudfront.net/750x750/9775/293941/1.jpg?version=1717413842 750w, https://d3w216np43fnr4.cloudfront.net/970x970/9775/293941/1.jpg?version=1717413841 970w, https://d3w216np43fnr4.cloudfront.net/1170x1170/9775/293941/1.jpg?version=1717413842 1170w, https://d3w216np43fnr4.cloudfront.net/1920x1080/9775/293941/1.jpg?version=1717413844 1920w"/></div></div></div></div></div><div id="autosuggestionsearch-293995" class="widget autosuggestionsearch container"><div class="autosuggest widget-autosuggest"><div class="widget-inner"><form action="/listings/" method="get"><div class="autosuggest-title" id="autosuggest-title"><h3 class="widget-title">Buy Maine</h3></div><div class="autosuggest-searchbar"><input type="search" placeholder="Search homes by address, city, ZIP code and more" aria-label="&#10;                                Search: Search homes by address, city, ZIP code and more&#10;                                Use Up and Down to choose options,&#10;                                press Enter to select the currently focused option,&#10;                                press Escape to exit the menu,&#10;                                press Tab to select the option and exit the menu.&#10;                            " autocomplete="off" name="autosuggest-search-query" id="autosuggest-search-query-293995" maxlength="200" class="search-input form-control"/><div class="buttons"><div class="autosuggest-loader"></div><button class="usm-btn btn-search" id="autosuggest-search-button" role="button" aria-label="Search"><i class="fa fa-search"></i></button></div></div><div class="autosuggest-links"><div class="col-links"></div></div></form></div></div></div></aside>
90</div>
91<div class="sub1Wrap">
92    <aside id="group1"></aside>
93</div>
94<div class="sub2Wrap">
95    <aside id="group2"></aside>
96</div>
97<div id="wrapper">
98    <div class="content-row">
99        <div class="contentWrap">
100            <main>
101
102
103<section class="login-wrap {parentClass}">
104    <h1>Sign In</h1>
105    
106    <div class="login-left-wrap">
107        <div class="user-login-messages">
108            
109        </div>
110
111        <div class="social-opt-in-question">
112            
113        </div>
114
115        
116        <div class="google-login">
117            
118                    <style type="text/css">
119            .google-auth {
120                margin-bottom: 15px;
121            }
122            .google-auth iframe,
123            .google-auth div div div {
124                margin: 0 auto !important;
125            }
126            .question-merge-google-account {
127                text-align: center;
128            }
129            .question-merge-google-account .alert-title {
130                margin-bottom: 15px;
131            }
132            .question-merge-google-account form {
133                display: inline-block;
134                margin-right: 15px;
135            }
136        </style>
137                
137<script src="https://accounts.google.com/gsi/client" async defer></script>
137
138        
138<script type="text/javascript">
139            require(["jquery", "usm", "usm.modalform"], function ($, usm) {
140                // Dynamic protocol instead of hardcoded https: - the button only renders
141                // when SSL is on in production, but hardcoding https would break plain-http
142                // local/dev domains.
143                var loginUri = window.location.protocol + "//www.sargentre.com/user/login/login/";
144
145                function submitCredentialForm(credential) {
146                    var $form = $("<form>", {method: "POST", action: loginUri})
147                        .append($("<input>", {type: "hidden", name: "credential", value: credential}));
148                    $("body").append($form);
149                    $form.trigger("submit");
150                }
151
152                function handleCredentialResponse(response) {
153                    var $button = $("#googleAuth8211");
154                    var $loginPopup = $button.closest(".login-popup");
155
156                    if (!$loginPopup.length) {
157                        submitCredentialForm(response.credential);
158                        return;
159                    }
160
161                    $.ajax({
162                        type: "POST",
163                        url: loginUri,
164                        data: {credential: response.credential},
165                        dataType: "json"
166                    }).done(function (data) {
167                        if (data && data.action === "html") {
168                            usm.modalForm.showSocialOptIn($loginPopup, data.html);
169                        } else if (data && data.action === "redirect") {
170                            submitCredentialForm(response.credential);
171                        } else {
172                            usm.modalForm.revealSuccess($loginPopup);
173                        }
174                    }).fail(function (xhr) {
175                        usm.modalForm.showSocialError($loginPopup, xhr);
176                    });
177                }
178
179                function googleAuthInit() {
180                    google.accounts.id.initialize({
181                        client_id: "226207318787-bh1nrbdlf38hp1m9rqaedkjj7vdihj8v.apps.googleusercontent.com",
182                        context: "signin",
183                        callback: handleCredentialResponse
184                    });
185                    google.accounts.id.prompt();
186                    google.accounts.id.renderButton(document.getElementById("googleAuth8211"), {
187                        type: "standard",
188                        shape: "pill",
189                        theme: "outline",
190                        text: "signin_with",
191                        size: "large",
192                        locale: "en-US",
193                        logo_alignment: "left",
194                        width: 288
195                    });
196                }
197
198                // onGoogleLibraryLoad only fires once per page; if GSI already loaded
199                // (e.g. the modal opened after a full page load), assigning it here
200                // would never fire, so init directly instead.
201                if (window.google && window.google.accounts && window.google.accounts.id) {
202                    googleAuthInit();
203                } else {
204                    window.onGoogleLibraryLoad = googleAuthInit;
205                }
206            });
207        </script>
207
208        <div class="google-wrapper"><div class="button-wrapper"><div id="googleAuth8211" class="google-auth"></div></div></div>
209        </div>
210
211        <div class="facebook-login">
212            
212<script type="text/javascript">require(["jquery", "jqueryui", "usm", "usm.modalform"], function ($, jqueryui, usm) {
213                var appId = 4029847067250472;
214                /* Init FB */
215                window.fbAsyncInit = function() {
216                    FB.init({
217                        appId      : appId,
218                        cookie     : true,  // enable cookies to allow the server to access the session
219                        xfbml      : true,  // parse social plugins on this page
220                        version    : "v2.5" // use graph api version 2.5
221                    });
222                };
223
224                // Load the SDK asynchronously
225                (function(d, s, id) {
226                    var js, fjs = d.getElementsByTagName(s)[0];
227                    if (d.getElementById(id)) return;
228                    js = d.createElement(s); js.id = id;
229                    js.src = "//connect.facebook.net/en_US/sdk.js";
230                    fjs.parentNode.insertBefore(js, fjs);
231                }(document, "script", "facebook-jssdk"));
232
233                $(".facebook-action").on("click", function (e) {
234                    var $this = $(this);
235
236                    /* Find closest facebook form to submit. */
237                    var $fbForm = $this.closest(".facebook-wrapper").find(".facebook-form");
238
239                    FB.login(function (response) {
240                        FB.getLoginStatus(function (response) {
241                            statusChangeCallback(response, $fbForm);
242                        });
243                    }, {scope: "public_profile,email"});
244                });
245
246                function statusChangeCallback(response, facebookForm) {
247                    if (response.status === "connected") {
248                        var $loginPopup = facebookForm.closest(".login-popup");
249
250                        if ($loginPopup.length) {
251                            facebookForm.ajaxSubmit({
252                                dataType: "json",
253                                success: function (data) {
254                                    if (data && data.action === "html") {
255                                        usm.modalForm.showSocialOptIn($loginPopup, data.html);
256                                    } else if (data && data.action === "redirect") {
257                                        facebookForm.get(0).submit();
258                                    } else {
259                                        usm.modalForm.revealSuccess($loginPopup);
260                                    }
261                                },
262                                error: function (xhr) {
263                                    usm.modalForm.showSocialError($loginPopup, xhr);
264                                }
265                            });
266                        } else {
267                            facebookForm.submit();
268                        }
269                    } else {
270                        $(".facebook-info").html("Something went wrong. Please try again.");
271                    }
272                }
273            });
274        </script>
274<div class="facebook-wrapper"><div class="button-wrapper"><div><a class="btn btn-block btn-social btn-facebook facebook-action"><span class="social-icon"><i class="fa fa-facebook-official"></i></span><span class="button-text">Sign In with Facebook</span><i class="fa fa-angle-right"></i></a></div><br/><div class="or-text"><p>Or sign in with your email and password <i class="fa fa-angle-down"></i></p></div></div><div class="fields-wrapper" style="display: none"><form method="post" action="/user/login/login/" class="facebook-form social-login-form"><input name="SocialLogin" id="SocialLogin" value="Facebook" type="hidden" class="form-control"/><div class="form-group"><label for="Email">Email Address</label><input name="Email" id="Email" type="email" class="form-control"/></div><div class="form-group"><label for="FirstName">First Name</label><input name="FirstName" id="FirstName" type="text" class="form-control"/></div><div class="form-group"><label for="LastName">Last Name</label><input name="LastName" id="LastName" type="text" class="form-control"/></div><input type="submit" name="Submit" id="Submit" value="Submit" class="submit"/></form></div><div class="facebook-info"></div></div>
275        </div>
276
277        <div id="login">
278            <form method="post" action="/user/login/login/" id="login-form" class="bootstrap-validate" role="form">
279                <div class="form-group">
280                    <label for="Username">Email</label>
281                    <input type="text" name="Username" class="form-control username required" id="UserName" placeholder="*ex: [email protected]" />
282                </div>
283                <div class="form-group">
284                    <label for="Password">Password</label>
285                    <input type="password" name="Password" class="form-control password required" id="Password" placeholder="Your Password" autocomplete="new-password" />
286                </div>
287
288
289                <div class="submit-section">
290                    <div class="form-group login-submit-group">
291                        <button name="send" id="user-login" type="submit" class="btn usm-btn btn-default submit" tabindex="10" value="Sign In">Sign In</button>
292                        <a href="/user/forgot/?RedirectURL=/user/" class="forgot-password">Forgot password?</a>
293                    </div>
294
295                    <div class="account-group">
296                        <div class="text-center log-bottom">
297                            <div class="log-bottom-left">Don't have an account yet?</div>
298                            <div class="log-bottom-right">
299                                <a href="/user/register/?RedirectURL=%2Fuser%2F" id="modal-register" class="btn register-link">
300                            <span>
301                                <i class="fa fa-user"></i>
302                            </span>
303                                    Sign Up
304                                </a>
305                            </div>
306                        </div>
307                    </div>
308                </div>
309
310                <input type="hidden" name="RedirectURL" value="/user/" />
311            </form>
312        </div>
313        
314    </div>
315</section>
316
317<script type="text/javascript">
318    require(["jquery", "shipyard"], function($, shipyard) {
319        shipyard.validateForm($('.bootstrap-validate'));
320    });
321</script>
321
322</main>
323            <aside id="sidebar1"></aside>
324        </div>
325    </div>
326</div>
327<div class="sub3Wrap">
328    <aside id="group3"></aside>
329</div>
330<div class="sub4Wrap">
331    <aside id="group4"><div id="widget-ask-294075" class="widget askaquestion niceform container"><div class="widget-inner"><h3 class="widget-title">Send A Message</h3><div class="error-message-container"></div><form method="POST" action="/mail/send/sidebar_ask_a_question/" id="aaq-294075" data-pageview="/complete/ask-a-question/"><div><h4></h4><div class="contact-info"></div></div><div class="form-group form-group-firstname"><label class="sr-only" for="ask-294075-firstname">First Name</label><input type="text" name="FirstName" class="required form-control" placeholder="*First Name" id="ask-294075-firstname" required="required"/></div><div class="form-group form-group-lastname"><label class="sr-only" for="ask-294075-lastname">Last Name</label><input type="text" name="LastName" class="required form-control" placeholder="*Last Name" id="ask-294075-lastname" required="required"/></div><div class="form-group form-group-email"><label class="sr-only" for="ask-294075-email">Email</label><input type="text" name="Email" class="required form-control email" placeholder="*Email Address" id="ask-294075-email" required="required"/></div><div class="form-group form-group-phone"><label class="sr-only" for="ask-294075-phone">Phone</label><input type="text" name="Phone" class="form-control phone " placeholder="Phone" id="ask-294075-phone"/></div><div class="form-group form-group-comments"><label class="sr-only" for="ask-294075-question">Questions or Comments?</label><textarea name="Comments" id="ask-294075-question" class="form-control required" placeholder="*Questions or Comments" cols="12" rows="7"></textarea></div><div style="display:none;">Do not fill in this field:<input type="text" name="topyenoh" id="topyenoh"/></div><input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" value="initalize" class="g-recaptcha-response"/><input type="hidden" name="FormKey" id="FormKey" value="40a8853ebfeba4230bbc6266f7bad2a0"/><input type="hidden" name="Sent From" id="Sent From" value="https://www.sargentre.com/user/login/"/><input type="hidden" name="mailformid" id="mailformid" value="sidebar_ask_a_question"/><input type="hidden" name="Sent_Form" id="Sent_Form" value="sidebar_ask_a_question"/><input type="hidden" name="RealtorID" id="RealtorID" title="RealtorID"/><div class="form-group opt-in-block"><label class="show"><input type="checkbox" name="OptIn" value="1" class="required" required="required"/><span class="control-label">Opt in</span></label><p>I agree to receive marketing and customer service calls and text messages from Sargent Real Estate. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>.</p></div><div class="submit-btn"><button type="submit" name="send" class="usm-btn">Send</button></div><div class="recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.</div></form></div></div><div id="recsearch-293916" class="widget recsearchlist recsearch recommendedsearchlist tabbed container"><h3 class="widget-title">Recommended Searches</h3><div class="widget-inner"><ul class="nav nav-tabs"><li class="active recsearch-category-agent-listings"><a href="#tab-34572" data-toggle="tab">Agent Listings</a></li><li class="recsearch-category-price"><a href="#tab-34634" data-toggle="tab">Price</a></li><li class="recsearch-category-property-type"><a href="#tab-34635" data-toggle="tab">Property Type</a></li><li class="recsearch-category-popular-searches"><a href="#tab-34609" data-toggle="tab">Popular Searches</a></li></ul><div class="tab-content"><div class="tab-pane active" id="tab-34572"><ul class="category-searches"><li><a title="Listings for Amy Griffin" href="/listings/agent/amy-griffin/">Listings for Amy Griffin</a></li><li><a title="Listings for Carl Lusby" href="/listings/agent/carl-lusby/">Listings for Carl Lusby</a></li><li><a title="Listings for Dan Sargent" href="/listings/agent/dan-sargent/">Listings for Dan Sargent</a></li><li><a title="Listings for Teri Sargent Smith" href="/listings/agent/teri-sargent-smith/">Listings for Teri Sargent Smith</a></li></ul></div><div class="tab-pane" id="tab-34634"><ul class="category-searches"><li><a title="Below $100K" href="/below-100k/">Below $100K</a></li><li><a title="From $100K To $500K" href="/price/from-100k-to-500k/">From $100K To $500K</a></li><li><a title="From $500K To $750K" href="/price/from-500k-to-750k/">From $500K To $750K</a></li><li><a title="From $750K To $1M" href="/from-750k-to-1m/">From $750K To $1M</a></li><li><a title="Above $1M" href="/price/above-1m/">Above $1M</a></li></ul></div><div class="tab-pane" id="tab-34635"><ul class="category-searches"><li><a title="Commercial" href="/property-type/commercial/">Commercial</a></li><li><a title="Condo" href="/property-type/condo/">Condo</a></li><li><a title="House" href="/property-type/house/">House</a></li><li><a title="Land" href="/property-type/land/">Land</a></li><li><a title="Multi-Family" href="/property-type/multi-family/">Multi-Family</a></li></ul></div><div class="tab-pane" id="tab-34609"><ul class="category-searches"><li><a title="Downeast Maine Residential" href="/popular-searches/downeast-maine-residential-1/">Downeast Maine Residential</a></li><li><a title="Downeast Maine Waterfront" href="/popular-searches/downeast-main-waterfront/">Downeast Maine Waterfront</a></li><li><a title="Ellsworth Area Homes" href="/popular-searches/ellsworth-area-homes/">Ellsworth Area Homes</a></li><li><a title="Hancock County Residential" href="/popular-searches/hancock-county-residential/">Hancock County Residential</a></li><li><a title="Acadia National Park Region" href="/popular-searches/acadia-national-park-region/">Acadia National Park Region</a></li><li><a title="Maine Residential Properties" href="/popular-searches/maine-residential-properties/">Maine Residential Properties</a></li><li><a title="Maine Waterfront Homes" href="/popular-searches/maine-waterfront-homes/">Maine Waterfront Homes</a></li></ul></div></div><a href="/realestate/searchcategories/" title="View All Recommended Searches" class="usm-btn view-all">View all</a></div>        
332        </div></aside>
333</div>
334<div class="footWrap">
335    <aside id="footer"><div id="image-294078" class="widget image container"><a href="/" target="_self"><img src="https://d3w216np43fnr4.cloudfront.net/9775/294078/1.png?version=1717415585" alt="Footer Logo" width="173" height="56"/></a></div><ul class="footer-contact">
336  <li class="phone">
337    <p>Main Phone</p>
338    <a href="tel:207-667-2144" aria-label="Phone Number" class="phone">207-667-2144</a>
339  </li>
340  <li class="email">
341    <p>Email Address</p>
342    <a href="mailto:[email protected]" class="email">[email protected]</a>
343  </li>
344</ul><div id="sociallinks-293938" class="widget sociallinks socialinkswidget flat container"><h3 class="widget-title">Connect</h3><ul class="fa-social-links sm40"><li><a target="_blank" title="Facebook" href="https://www.facebook.com/sargentrealestate" class="fa-social-links fsml-facebook" rel="noopener nofollow"><i class="fa fa-facebook"></i><span class="sr-only">Facebook</span></a></li></ul></div><div id="menuwidget-294869" class="widget menu menuwidget bare container"><h3 class="widget-title">Properties</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-162962"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-162963"><a href="/real-estate/our-listings/" target="_self" role="menuitem">Our Listings</a></li><li role="presentation" class=" menu-item-162964"><a href="/sold-listings/" target="_self" role="menuitem">Sold Listings</a></li></ul></div></div><div id="menuwidget-294870" class="widget menu menuwidget bare container"><h3 class="widget-title">Services</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-162965"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-162966"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-162968"><a href="/sellers/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li></ul></div></div><div id="menuwidget-294871" class="widget menu menuwidget bare container"><h3 class="widget-title">About Us</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-162948"><a href="/our-agents/" target="_self" role="menuitem">Meet the Team</a></li><li role="presentation" class=" menu-item-162949"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li></ul></div></div></aside>
345</div>
346<div class="usmWrap">
347    <aside id="group5"><div id="disclaimer-294076" class="widget disclaimer container"><div class="widget-inner"><div class="disclaimer feed-disclaimer feed-Maine"><p><img alt="" src="https://s3.amazonaws.com/files.usmre.com/ME_MAINE_API.png" style="width: 75px; height: 32px;" /></p>
348
349<p>Listing data is derived in whole or in part from the Maine IDX and&nbsp;is for consumers&#39; personal, noncommercial use only. Dimensions are approximate and not guaranteed. All data should be independently verified. &copy;2026 Maine Real Estate Information System, Inc. All Rights Reserved. <img alt="equal opportunity housing logo" src="https://s3.amazonaws.com/files.usmre.com/equal_housing.png" /> &nbsp; <a href="/privacy-policy/" id="policylink">Privacy Policy</a><br />
350<br />
351Sargent Real Estate participates in &copy;2026 Maine Listings Internet Data Exchange program, allowing us to display other Maine IDX Participants&#39; listings. This website does not display complete listings. Certain listings of other real estate brokerage firms have been excluded.&nbsp;Mortgage figures are estimates. Check with your bank or proposed mortgage company for actual interest rates. This product uses the FRED&reg; API but is not endorsed or certified by the Federal Reserve Bank of St. Louis.</p>
352</div></div></div><div id="associations-293950" class="widget associations container"><div id="footer-logos" style="width: 100%"><div id="footer-logos-left-assoc"></div><div id="footer-logos-right-accred"></div><div id="footer-logos-right-custom"><img src="https://d3w216np43fnr4.cloudfront.net/9775/293950/1.jpg?version=1717412611" title="Association logos" alt="Association logos"/></div></div></div><div id="usmlogo-293949" class="widget usmlogo container"><a href="https://www.unionstreetmedia.com/?utm_campaign=passive&#38;utm_medium=usm-badge&#38;utm_source=www.sargentre.com&#38;
352utm_content=real-estate" rel="nofollow noopener" title="VT NH Real Estate Web Design" target="_blank"><img src="https://d1mlo4htassgww.cloudfront.net/i/usmtag/usm-short-white.png?version=1791558679" alt="Union Street Media Logo"/></a></div><a class="privacy-link" href="/privacy-policy/">Privacy Policy</a></aside>
353</div><div id="progress"><i class="fa fa-spinner fa-spin"></i></div>
353<script type="text/javascript">
354            require(["jquery"], function ($) {
355                var $navbarToggle = $("#menuwidget-293942 .navbar-toggle");
356
357                $navbarToggle.click(function () {
358                    var target = $(this).data("target");
359                    $(target).parent("nav").toggleClass("active");
360                    if ($(target).parent("nav").hasClass("active")) {
361                        $("body").addClass("modal-open");
362                    } else {
363                        $("body.modal-open").removeClass("modal-open");
364                    }
365                });
366
367                $("#menuwidget-293942 .menu-close").click(function (e) {
368                    $navbarToggle.click();
369                    e.preventDefault();
370                });
371
372                $("#menuwidget-293942 li.has-children ul li").click(function (event) {
373                    event.stopPropagation();
374                });
375            });
376        
377            require(["jquery"], function ($) {
378                var $navbarToggle = $("#menuwidget-294069 .navbar-toggle");
379
380                $navbarToggle.click(function () {
381                    var target = $(this).data("target");
382                    $(target).parent("nav").toggleClass("active");
383                    if ($(target).parent("nav").hasClass("active")) {
384                        $("body").addClass("modal-open");
385                    } else {
386                        $("body.modal-open").removeClass("modal-open");
387                    }
388                });
389
390                $("#menuwidget-294069 .menu-close").click(function (e) {
391                    $navbarToggle.click();
392                    e.preventDefault();
393                });
394
395                $("#menuwidget-294069 li.has-children ul li").click(function (event) {
396                    event.stopPropagation();
397                });
398            });
399        
400            require(["jquery", "bootstrap"], function ($) {
401                if ($.fn.carousel === undefined && jQuery.fn.carousel !== undefined) {
402                    $ = jQuery;
403                }
404                $("#carousel-293941 .carousel").carousel({
405                    "interval": 10000
406                });
407                $("#carousel-293941 .carousel-inner .item").each(function() {
408                        this.style["-webkit-transition-duration"] = "1s"; 
409                        this.style["-moz-transition-duration"] = "1s"; 
410                        this.style["-o-transition-duration"] = "1s"; 
411                        this.style["transition-duration"] = "1s"; 
412                });
413            });
414        
415            // Searchable suggestions with a label values for the suggestion.
416            var SEARCHABLE_SUGGESTIONS_OPTIONS = {
417                usmCityAndState: '',
418                county: ' - County',
419                stateOrProvince: '',
420                usmNeighborhood: ' - Neighborhood',
421                postalCode: ' - Zip Code',
422                listingId: ' - MLS Number',
423                usmNonMlsId: ' - Internal ID',
424                elementarySchool: ' - Elementary School',
425                middleOrJuniorSchool: ' - Middle Or Junior High School',
426                usmArea: ' - Area',
427                address: ' - Address',
428                highSchool: ' - High School',
429                highSchoolDistrict: ' - School District',
430                usmVillage: ' - Village',
431                usmSubdivision: ' - Subdivision',
432                streetName: ' - Street',
433                usmComplex: ' - Complex',
434                usmPropertyName: ' - Property Name',
435                mlsAreaMinor: ' - MLS Area Minor',
436                mlsAreaMajor: ' - MLS Area Major',
437                offMarketData: ' - Off Market',
438                title: 'title',
439                agent: ' - Agent',
440                team: ' - Team',
441            }
442
443            var displayWaterBodyNameSuggestions = '';
444            var showAgentsSearch = '0';
445
446            if (displayWaterBodyNameSuggestions) {
447                SEARCHABLE_SUGGESTIONS_OPTIONS.waterBodyName = ' - Water Body Name';
448            }
449
450            var suggestionResponse = null;
451            require(['jquery'], function($) {
452                /**
453                 * Get current search mode based on active button
454                 */
455                function getCurrentSearchMode() {
456                    if (showAgentsSearch === '1' && $('#agents-293995').hasClass('active')) {
457                        return 'agents';
458                    } else if ($('#rentals-property-types-293995').hasClass('active')) {
459                        return 'rentals';
460                    } else {
461                        return 'sales';
462                    }
463                }
464
465                /**
466                 * Filter out not supported suggestions.
467                 *
468                 * @param suggestions
469                 * @returns {[]}
470                 */
471                function sanitizeSuggestions(suggestions) {
472                    const sanitizedSuggestions = [];
473                    if (suggestions && Array.isArray(suggestions)) {
474                        for (var suggestionIndex in suggestions) {
475                            var suggestion = suggestions[suggestionIndex];
476
477                            var suggestionType = suggestion.type;
478                            // Filter out suggestions that are not currently supported
479                            if (!SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(suggestionType)) {
480                                continue;
481                            }
482
483                            sanitizedSuggestions.push(suggestion);
484                        }
485                        return sanitizedSuggestions;
486                    }
487
488                    return [];
489                }
490
491                /**
492                 * Transform agents API response to suggestions format
493                 */
494                function transformAgentsToSuggestions(responseData) {
495                    if (!Array.isArray(responseData?.agents) || !Array.isArray(responseData?.teams)) {
496                        return [];
497                    }
498                    const data = [
499                      ...responseData.agents.map(agent => ({ ...agent, type: 'agent' })),
500                      ...responseData.teams.map(team => ({ ...team, type: 'team' }))
501                    ];
502
503                    return data.map((item) => ({
504                        label: item.name,
505                        value: item.name,
506                        type: item.type,
507                        id: item.id,
508                        slug: item.slug,
509                    }));
510                }
511
512                /**
513                 * Check if the parameter looks like an address (starts with digits followed by words)
514                 */
515                function shouldReduceByAddress(value) {
516                    var addressPattern = /^\d+\s+\w+/i;
517                    return addressPattern.test(value.trim());
518                }
519
520                function fetchSuggestions(request, response) {
521                    var param = request.term;
522                    var requestPrefix = '';
523                    var isOMPEnabled = requestPrefix === 'OMP:';
524                    var searchMode = getCurrentSearchMode();
525
526                    // Restrict search length to minimum 2 characters before sending the request.
527                    if (param.length < 2) {
528                        // We do not store and show recent searches if OMP is enabled or in agents mode
529                        var isRecentSearchesDisabled = isOMPEnabled || searchMode === 'agents';
530                        var recentSearches = isRecentSearchesDisabled ? [] : JSON.parse(window.localStorage.getItem('lastSearches'));
531
532                        if (recentSearches && recentSearches.length > 0) {
533                          recentSearches.unshift({label: 'Recent Searches', value: 'Recent Searches', type: 'title'})
534                          response(recentSearches);
535                        } else {
536                          response([{label: 'The search word must be at least 3 characters long.', noResults: true}]);
537                        }
538                    } else {
539                        // Different API endpoints based on search mode
540                       var baseUrl = '';
541                       var requestData = {};
542
543                        if (searchMode === 'agents') {
544                            baseUrl = '/api/suggestions/teams/';
545                            requestData = {
546                                q: param,
547                            };
548                        } else {
549                            baseUrl = '/api/suggestions/';
550                            requestData = {
551                                q: requestPrefix + param
552                            };
553
554                            if (shouldReduceByAddress(param)) {
555                                requestData.reduce = 'usmFullAddress';
556                            }
557                        }
558
559                        $.ajax({
560                            dataType: 'json',
561                            url: baseUrl,
562                            data: requestData,
563                            type: 'GET',
564                            timeout: 10000,
565                            success: function(data) {
566                                var suggestions = [];
567
568                                if (searchMode === 'agents') {
569                                    // Transform agents response
570                                    suggestions = transformAgentsToSuggestions(data);
571                                } else {
572                                    // Regular suggestions
573                                    if (data.suggestions && data.suggestions.length > 0) {
574                                        suggestions = sanitizeSuggestions(data.suggestions);
575                                    }
576                                }
577
578                                if (suggestions.length > 0) {
579                                    // Set the suggestion response to the first suggestion
580                                    suggestionResponse = suggestions[0];
581                                    response(suggestions);
582                                } else {
583                                    // No results from API
584                                    var noResultsMessage = searchMode === 'agents' ? 'No agents found.' : 'Enter another region.';
585                                    response([{label: noResultsMessage, noResults: true}]);
586                                }
587                            },
588                            error: function() {
589                                response([{label: 'Problem contacting server, please refresh and try again.', noResults: true}]);
590                                $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse');
591                                $('.autosuggest-loader').addClass('fal fa-exclamation-triangle');
592                            }
593                        });
594                    }
595                }
596
597                $('#autosuggest-search-query-293995').autocomplete({
598                    source: function(request, response) {
599                      fetchSuggestions(request, response);
600                    },
601                    minLength: 0,
602                    open: function() {
603                        inputWidth = $('#autosuggest-search-query-293995').outerWidth();
604                        $('ul.ui-menu').css( 'width', inputWidth );
605                    },
606                    search: function(event, ui) {
607                        $('.autosuggest-loader').addClass('fal fa-spinner fa-pulse');
608                    },
609                    response: function(event, ui) {
610                        $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse');
611                    },
612                    position: {
613                        offset: '0 -6'
614                    },
615                    autoFocus: true,
616                    messages: {
617                        //These messages are for accessability and are not visible in the UI (with proper styling).
618                        noResults: 'No options found.',
619                        results: function(amount) {
620                            return amount + (amount > 1 ? ' results ' : ' result ') + 'found.'
621                        }
622                    },
623                    delay: 300
624                }).focus(function() {
625                  $(this).autocomplete('search', $(this).val());
626                }).data('ui-autocomplete')._renderItem = function(ul, item) {
627                    let txt = String(item.label);
628
629                    if (item.type) {
630                        txt = txt.replace(new RegExp(this.term, 'gi'),'<b>$&</b>');
631                    }
632
633                    var type = item.type;
634
635                    if (SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(type)) {
636                        type = SEARCHABLE_SUGGESTIONS_OPTIONS[type];
637
638                        if (type == 'listingId') {
639                            txt = txt.toUpperCase();
640                        }
641                    } else {
642                        type = '';
643                    }
644
645                    if (type === 'title') {
646                        return $('<li></li>')
647                            .append('<div class="item-title"><b>' + txt + '</b></div>')
648                            .appendTo(ul);
649                    }
650
651                    var status = '';
652                    if (item.standardStatus && item.standardStatus.length === 1 && item.standardStatus[0] === 'Closed') {
653                        status = ' <span class="ui-status">Sold</span>';
654                    }
655
656                    const itemNoResultsClassName = !!item?.noResults ? 'autosuggest-item-no-result' : '';
657
658                    return $(`<li class='${itemNoResultsClassName}'></li>`)
659                        .data('ui-autocomplete-item', item)
660                        .append('<a>' + txt + '<span>' + type + '</span>' + status + '</a>')
661                        .appendTo(ul);
662                };
663            });
664        
665            require(['jquery'], function($) {
666                var stateMap = JSON.parse('{"Alabama":"AL","Alaska":"AK","Arizona":"AZ","Arkansas":"AR","Bahamas":"BS","California":"CA","Colorado":"CO","Connecticut":"CT","Delaware":"DE","D.C.":"DC","Florida":"FL","Georgia":"GA","Hawaii":"HI","Idaho":"ID","Illinois":"IL","Indiana":"IN","Iowa":"IA","Kansas":"KS","Kentucky":"KY","Louisiana":"LA","Maine":"ME","Maryland":"MD","Massachusetts":"MA","Michigan":"MI","Minnesota":"MN","Mississippi":"MS","Missouri":"MO","Montana":"MT","Nebraska":"NE","Nevada":"NV","New Hampshire":"NH","New Jersey":"NJ","New Mexico":"NM","New York":"NY","North Carolina":"NC","North Dakota":"ND","Ohio":"OH","Oklahoma":"OK","Oregon":"OR","Pennsylvania":"PA","Rhode Island":"RI","South Carolina":"SC","South Dakota":"SD","Tennessee":"TN","Texas":"TX","Utah":"UT","Vermont":"VT","Virginia":"VA","Washington":"WA","West Virginia":"WV","Wisconsin":"WI","Wyoming":"WY","Alberta":"AB","British Columbia":"BC","Manitoba":"MB","New Brunswick":"NB","Newfoundland and Labrador":"NL","Nova Scotia":"NS","Ontario":"ON","Prince Edward Island":"PE","Quebec":"QC","Saskatchewan":"SK"}');
667                const MAX_RECENT_SEARCHES_CACHED = 5;
668                var showAgentsSearch = '0';
669
670                function getCurrentSearchMode() {
671                    if (showAgentsSearch === '1' && $('#agents-293995').hasClass('active')) {
672                        return 'agents';
673                    } else if ($('#rentals-property-types-293995').hasClass('active')) {
674                        return 'rentals';
675                    } else {
676                        return 'sales';
677                    }
678                }
679
680                /**
681                 * Update placeholder based on current search mode
682                 */
683                function updatePlaceholder() {
684                    var searchMode = getCurrentSearchMode();
685                    var searchInput = $('#autosuggest-search-query-293995');
686                    var placeholder = '';
687
688                    switch(searchMode) {
689                        case 'agents':
690                            placeholder = 'Search for agents by name';
691                            break;
692                        case 'rentals':
693                        case 'sales':
694                        default:
695                            placeholder = `Search homes by address, city, ZIP code and more`;
696                            break;
697                    }
698
699                    searchInput.attr('placeholder', placeholder);
700                }
701
702                function getStateAbbreviation(stateName) {
703                    if (!stateName) {
704                        return null;
705                    }
706
707                    if (!stateMap.hasOwnProperty(stateName)) {
708                        return null;
709                    }
710
711                    return stateMap[stateName];
712                }
713
714                function goToDetailView(filter) {
715                    var baseUrl = '/api/listings/';
716                    // We should use this replace in order to divide params into array in the ListingSearch.php in the V2
717                    filter =  filter.replace(/\S&\S/g, function (tmpVal) {
718                      return tmpVal.replace(/&/g, '#');
719                    });
720                    filter = encodeURIComponent(filter);
721                    $.ajax({
722                        dataType: 'json',
723                        url: baseUrl + '?suggestionFilter=' + filter,
724                        type: 'GET',
725                        success: function(data) {
726                            if (!Array.isArray(data.listings)) {
727                                return;
728                            }
729
730                            if (data.listings.length === 1) {
731                                window.location.href = data.listings[0].usmDetailPath;
732
733                                return;
734                            }
735
736                            if (data.listings.length > 1) {
737                                window.location.href = '/listings/' + '?suggestionFilter=' + filter;
738
739                                return;
740                            }
741                        }
742                    });
743                }
744
745                function getCityAndStatePath(value) {
746                    var array = value.split(' ');
747
748                    const state = array.pop().toLowerCase();
749                    const city = array.join('-').toLowerCase();
750
751                    return state + '/' + city + '/';
752                }
753
754                function parseFilterString(filterString) {
755                    var filters = {};
756                    if (!filterString) {
757                        return filters;
758                    }
759                    filterString.split('&').forEach(function(f) {
760                        var parts = f.split('=');
761                        if (parts.length >= 2) {
762                            var name = parts[0].match(/\[(.*?)\]/)?.[1];
763                            if (name) {
764                                filters[name] = decodeURIComponent(parts.slice(1).join('='));
765                            }
766                        }
767                    });
768                    return filters;
769                }
770
771                function getStateAbbrFromFilterValue(stateValue) {
772                    if (!stateValue) {
773                        return null;
774                    }
775                    var abbr = getStateAbbreviation(stateValue);
776                    if (abbr) {
777                        return abbr.toLowerCase();
778                    }
779                    if (stateValue.length === 2) {
780                        return stateValue.toLowerCase();
781                    }
782                    return null;
783                }
784
785                /**
786                 * Build url with path based on the selected suggestion.
787                 *
788                 */
789                function getUrlPath(suggestion) {
790                    let path = '';
791                    switch (suggestion.type) {
792                        case 'cityAndState':
793                            path += getCityAndStatePath(suggestion.value);
794
795                            return path;
796                        case 'stateOrProvince':
797                            var stateAbbreviation = getStateAbbreviation(suggestion.value);
798
799                            if (stateAbbreviation && stateAbbreviation.length == 2) {
800                                path += stateAbbreviation.toLowerCase() + '/';
801                            }
802
803                            return path;
804                        case 'neighborhood':
805                        case 'village':
806                            path += convertFilterString(suggestion.filter);
807
808                            return path;
809                        case 'county': {
810                            var filters = parseFilterString(suggestion.filter);
811                            var county = filters.county;
812                            var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince);
813                            if (county && stateAbbr) {
814                                var countySlug = county.replace(/\s+county$/i, '').toLowerCase().replace(/\s+/g, '-') + '-county';
815                                path = stateAbbr + '/' + countySlug + '/';
816                            }
817                            return path;
818                        }
819                        case 'postalCode': {
820                            var filters = parseFilterString(suggestion.filter);
821                            var postalCode = filters.postalCode;
822                            var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince);
823                            if (postalCode && stateAbbr) {
824                                path = stateAbbr + '/' + postalCode + '/';
825                            }
826                            return path;
827                        }
828                        default:
829                            return path;
830                    }
831                }
832
833                function convertFilterString(filterString) {
834                  if (!filterString) {
835                    return '';
836                  }
837
838                  const filters = filterString.split('&');
839                  const suggestionFilters = filters.map(filter => {
840                    const filterPart = filter.split('=');
841
842                    if (filterPart.length !== 2) {
843                       return null;
844                    }
845
846                    const [key, value] = filterPart;
847                    const name = key.match(/\[(.*?)\]/)?.[1];
848
849                    if (!name) return null;
850
851                    return name === 'cityAndState' || name === 'usmCityAndState'
852                    ? getCityAndStatePath(value) + '?'
853                    : name + '=' + value ;
854                  });
855
856                  return getPathFromFilters(suggestionFilters);
857                }
858
859                function getPathFromFilters(suggestionFilters) {
860                  if (!suggestionFilters || suggestionFilters.length === 0) {
861                    return '';
862                  }
863
864                  const cityAndStateItem = suggestionFilters.find(item => item.includes('/?'));
865
866                  if (!cityAndStateItem) {
867                    return '?' + suggestionFilters.join('&');
868                  }
869
870                  const filtersWithoutCityAndState = suggestionFilters.filter(item => item !== cityAndStateItem);
871
872                  return cityAndStateItem + filtersWithoutCityAndState.join('&');
873                }
874
875                function getPropertyDetailPathFromOffMarketSuggestion(suggestion) {
876                    if (!suggestion) {
877                        return '';
878                    }
879
880                    const { value, filter } = suggestion;
881                    const startIndex = filter?.indexOf('=') + 1;
882                    const usmPid = filter?.substring(startIndex);
883
884                    const address = value?.split(' ')
885                        ?.map(function(word) { return word.toLowerCase() })
886                        ?.join('-') || '';
887
888                    return '/property/' + address + '/' + usmPid + '/';
889                };
890
891                function submitSearch(e, item) {
892                    e.preventDefault();
893
894                    if (!item) {
895                        return;
896                    }
897
898                    // If the item has no type, it's an error message and shouldn't send anywhere
899                    if (!item.type) {
900                        return;
901                    }
902
903                    var searchMode = getCurrentSearchMode();
904
905                    // Finish the input in case a selection was made without completing it
906                    $('#autosuggest-search-query').val(item.type === 'listingId' ? item.value.toUpperCase() : item.label);
907
908                    if (item.type === 'agent' || item.type === 'team') {
909                        window.location.href = `/realestate/${item.type}/${item.slug}/`;
910
911                        return;
912                    }
913
914                    // Send to detail view if MLS Number
915                    if (item.type === 'listingId' || item.type === 'address' || item.type === 'usmPropertyName' || item.type === 'usmNonMlsId') {
916                        var filter = item.filter;
917
918                        if (item.standardStatus && item.standardStatus.length > 0) {
919                            var statusList = Array.isArray(item.standardStatus)
920                                ? item.standardStatus
921                                : [item.standardStatus];
922                            // It is very common for listings other than 'Active 'to being filtered out, so we need to add this filter to ensure that they are returned by the listings api
923                            filter += (filter !== '' ? '&' : '') + 'filter[standardStatus]=' + statusList.join(',');
924                        }
925                        goToDetailView(filter);
926
927                        return;
928                    } else if (item.type === 'offMarketData') {
929                        const propertyPath = getPropertyDetailPathFromOffMarketSuggestion(item);
930
931                        window.location.href = propertyPath;
932
933                        return;
934                    }
935
936                    item.type = item.type.replace('usmCityAndState', 'cityAndState')
937                        .replace('usmNeighborhood', 'neighborhood')
938                        .replace('usmVillage', 'village')
939                        .replace('usmSubdivision', 'subdivision')
940                        .replace('usmComplex', 'complex');
941
942                    if (item.type === 'cityAndState') {
943                        item.value = item.value.replace(', ', ' ');
944                    }
945
946                    path = getUrlPath(item);
947
948                    // Don't save agents to recent searches
949                    if (searchMode !== 'agents') {
950                        var searches = [Object.assign({}, item)];
951                        var storedSearches = JSON.parse(localStorage.getItem('lastSearches'));
952
953                        if (storedSearches) {
954                            searches = storedSearches.filter(function(storedSearch) {
955                                storedSearch.value !== item.value
956                            });
957                            storedSearches = searches.length <= (MAX_RECENT_SEARCHES_CACHED - 1)
958                              ? searches
959                              : searches.slice(0,-1);
960                            searches = [Object.assign({}, item), ...storedSearches];
961                        }
962
963                        localStorage.setItem('lastSearches', JSON.stringify(searches));
964                    }
965
966                    var propertyTypeFilter = '';
967                    var displaySalesRentalsToggle = '';
968
969                    if (displaySalesRentalsToggle && searchMode !== 'agents') {
970                        var forSalePropertyTypes = '';
971                        var rentalsPropertyTypes = '';
972                        var forSaleLabel = 'Sales';
973                        var rentalsLabel = 'Rentals';
974                        var agentsLabel = '';
975                        var propertyTypes = $('#sales-property-types-293995').hasClass('active') ? forSalePropertyTypes : rentalsPropertyTypes;
976
977                        if (propertyTypes) {
978                            var urlPathTypes = ['cityAndState', 'county', 'postalCode'];
979                            if (urlPathTypes.indexOf(item.type) !== -1 && !propertyTypes.includes(',')) {
980                                path = path + propertyTypes.toLowerCase() + '/';
981                            } else {
982                                propertyTypeFilter = 'propertyTypes=' + propertyTypes;
983                            }
984                        }
985                    }
986
987                    var fullPath = '';
988                    if (path.length > 0) {
989                        var separator = path.indexOf('?') !== -1 ? '&' : '?';
990                        fullPath = '/listings/' + path + separator +'' + propertyTypeFilter;
991                    } else {
992                        fullPath = '/listings/?' + item.type + '=' + encodeURIComponent(item.value) + '&' + propertyTypeFilter;
993                    }
994
995                    // Remove trailing ? or &
996                    const lastChar = fullPath.charAt(fullPath.length - 1);
997                    if (lastChar === '?' || lastChar === '&') {
998                        fullPath = fullPath.slice(0, -1);
999                    }
1000
1001                    window.location.href = fullPath;
1002                }
1003
1004                $('.widget-autosuggest').on('submit', function(e) {
1005                    submitSearch(e, suggestionResponse);
1006                });
1007
1008                $('.widget-autosuggest').on('autocompleteselect', function(e, ui) {
1009                    submitSearch(e, ui.item);
1010                });
1011
1012                var salesPropertyTypesButton = $('#sales-property-types-293995');
1013                var rentalPropertyTypesButton = $('#rentals-property-types-293995');
1014                var agentsButton = $('#agents-293995');
1015
1016                // Function to clear search and refresh autocomplete
1017                function clearSearchAndRefresh() {
1018                    $('#autosuggest-search-query-293995').val('').autocomplete('search', '');
1019                }
1020
1021                const buttons = [salesPropertyTypesButton, rentalPropertyTypesButton];
1022                if (showAgentsSearch === '1') {
1023                    buttons.push(agentsButton);
1024                }
1025
1026                function setActiveButton(activeButton, buttons) {
1027                    $.each(buttons, function(index, btn) {
1028                        btn.removeClass('active');
1029                    });
1030                    activeButton.addClass('active');
1031                    updatePlaceholder();
1032                    clearSearchAndRefresh();
1033                }
1034
1035                salesPropertyTypesButton.on('click', function() {
1036                    setActiveButton(salesPropertyTypesButton, buttons);
1037                });
1038
1039                rentalPropertyTypesButton.on('click', function() {
1040                    setActiveButton(rentalPropertyTypesButton, buttons);
1041                });
1042
1043                // Only add event handler if agents search is enabled
1044                if (showAgentsSearch === '1') {
1045                    agentsButton.on('click', function() {
1046                        setActiveButton(agentsButton, buttons);
1047                    });
1048                }
1049
1050                // Initialize placeholder on document ready
1051                $(document).ready(function() {
1052                    updatePlaceholder();
1053                });
1054            });
1055        
1056            require(["jquery", "usm", "usm.modalform", "usm.analytics"], function($, usm) {
1057                var $form = $('form#aaq-294075');
1058
1059                var options = {
1060                    postSuccess: function (e) {
1061                                                if (typeof dataLayer !== 'undefined') {
1062                            dataLayer.push({"event":"Contact_Form","form_name":"Ask A Question - General"});
1063                        }
1064                                            }
1065                };
1066
1067                usm.modalForm.addValidation($form, options);
1068            });
1069        
1070            require(["jquery", "usm", "bootstrap"], function ($, usm) {
1071                if (usm.touchSupport) {
1072                    require(["bootstraptabcollapse"], function() {
1073                        $(document).ready(function() {
1074                            var tab = $("#recsearch-293916 .nav-tabs");
1075
1076                            if (tab) {
1077                                tab.tabCollapse();
1078
1079                                //It is a specific task for adding category class for the rec search items by category name
1080                                tab.on("shown-accordion.bs.tabcollapse", function(e) {
1081                                    let tabPanel = document.querySelectorAll("#recsearch-293916 .panel-group .panel");
1082
1083                                    if (tabPanel) {
1084                                        let classList = [];
1085
1086                                        e.target.querySelectorAll("li").forEach((li) => {
1087                                            li.className.split(' ').forEach((className) => {
1088                                                if (!classList.includes(className) && className.indexOf("recsearch-category-") !== -1) {
1089                                                    classList.push(className);
1090                                                }
1091                                            });
1092                                        });
1093
1094                                        tabPanel.forEach((panel, index) => {
1095                                            if (!panel.classList.contains(classList[index])) {
1096                                                panel.classList.add(classList[index]);
1097                                            }
1098                                        });
1099                                    }
1100                                });
1101                            }
1102                        });
1103                    });
1104                }
1105            });
1106        var URI = "/user/login/";require(['usm', 'usm.user'], function (usm) { usm.user.setModal(true); });require(["jquery"], function ($) { $("body").addClass("js"); });</script>
1106<script type="text/javascript">require(["https://d1nn5t56all1qd.cloudfront.net/9775/js/custom.js?version=1719395006"]);</script>
1106</body>
1107</html><!-- You're on: Some other server - 172.18.22.9 - www.sargentre.com   Time: 0.959 -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.