{"version":3,"sources":["webpack:///D:/cjtws/workspace/r-Q46MKCSNXL/source/Mc.Web.Mvc/_Global/js/es6Source/FindDealer/index.js","webpack:///./~/timers-browserify/main.js","webpack:///./~/typeahead.js/dist/typeahead.bundle.js","webpack:///D:/cjtws/workspace/r-Q46MKCSNXL/source/Mc.Web.Mvc/_Global/js/es6Source/FindDealer/FindDealerViewModel.js","webpack:///./~/process/browser.js"],"names":["findDealer","self","errorClassName","postalCodeWrapper","$","postalCodeInput","postalCodeErrorMessage","errorContainer","language","val","overlayElementSelector","popupElementSelector","dealersMapSelector","coords","navigator","geolocation","getCurrentPosition","position","viewModelOptions","clientLocation","dealersListElement","dealersMapElement","findDealerViewModel","observable","applyBindings","init","initKo","bind","removeClass","hide","setPostalCodeContext","viewState","initialize","launchWithPostal","event","fsa","substr","css","window","scrollTop","fadeIn","addClass","show","on","evt","preventDefault","closeModal","each","indx","anchor","$anchor","attr","trigger","validation","decorateElement","insertMessages","bindingHandlers","formatNumber","update","element","valueAccessor","allBindingsAccessor","value","precision","defaultPrecision","parseFloat","toFixed","replace","lang","calculatorViewModel","form","text","formatCurrency","isNaN","defaultValue","formatPercent","fadeOut","resetForm","document","ready","jQuery","support","cors","FindDealerViewModel","options","mapZoomLevel","siteProtocol","findDealerBaseUrl","substring","trim","geodataCitiesUrl","postalCode","city","province","chosenRegion","hasError","regions","observableArray","currentUrl","selectedDealer","dealerMarkers","Array","infoWindows","map","is_ie","userAgent","indexOf","dealersViewModel","Dealers","Unit","MatchingType","HasSelection","typeAheadOptions","hint","name","minLength","maxItem","limit","caching","subscribe","selection","bindDealersByRegion","populateRegions","mapOptions","center","google","maps","LatLng","latitude","longitude","zoom","googleMap","Map","bindDealersByPostalCode","region","getCookie","length","prop","url","urlLang","getCrossDomain","provinces","Province","code","Abbreviation","err","console","log","error","dispose","dealerItemSelector","html","errMsg","undefined","urlTemplate","getDealers","bindDealersByCity","includes","cityText","split","provinceText","getProvinceCode","message","bindDealers","dealers","clearResults","viewModel","Items","index","item","viewModelDealer","generateViewModelDealer","push","Dealer","Location","Coordinate","marker","createDealerMarker","HideResults","DealerResultShowHide","Message","setMapBoundaries","Name","Matching","data","emptyMsg","sort","a","b","i","toLowerCase","splice","selectItemText","ieCompatible","getSelectedDealer","updateMap","panTo","getPosition","provinceName","dealer","extend","CityProv","computed","City","PhoneNumberFormatted","ContactInformation","Phones","areaCode","Number","firstPart","secondPart","numberTemplate","number","DistanceFormatted","DistanceToOrigin","DealerLink","link","ExportKey","isSelected","selectedChanged","dealerSelectedChangeHandler","currentDealer","close","title","open","setMap","markers","mapBounds","LatLngBounds","fitBounds","setZoom","latLng","Latitude","Longitude","Marker","icon","dealerInfoWindowTemplate","dealerLink","dealerInfoWindowMarkup","ImageUrl","Address","PostalCode","Value","infowindow","InfoWindow","content","addListener","typeahead","el","utils","unwrapObservable","citiesbh","datumTokenizer","datum","tokenizers","whitespace","queryTokenizer","remote","wildcard","highlight","accent","cache","display","ProvinceName","source","ttAdapter","templates","empty","join","suggestion","Handlebars","compile","obj","chosen","disable_search_threshold","disable_search","width","inherit_select_classes","allBindings","ErrorMessage","prepend","Option","selected"],"mappings":";;;;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AAEA,KAAIA,aAAa,IAAI,YAAY;AAC7B,SAAIC,OAAO,IAAX;AAAA,SACIC,iBAAiB,OADrB;AAAA,SAEIC,oBAAoBC,EAAE,sBAAF,CAFxB;AAAA,SAGIC,kBAAkBD,EAAE,mCAAF,CAHtB;AAAA,SAIIE,yBAAyBF,EAAE,4BAAF,CAJ7B;AAAA,SAKIG,iBAAiBH,EAAE,aAAF,CALrB;;AAOA;AACAH,UAAKO,QAAL,GAAgBJ,EAAE,mBAAF,EAAuBK,GAAvB,EAAhB;;AAEA;AACAR,UAAKS,sBAAL,GAA8B,8BAA9B;AACAT,UAAKU,oBAAL,GAA4B,oBAA5B;AACAV,UAAKW,kBAAL,GAA0B,yCAA1B;;AAEA;AACA,SAAIC,SAAS,EAAb;AACAC,eAAUC,WAAV,CAAsBC,kBAAtB,CAAyC,UAAUC,QAAV,EAAoB;AACzDJ,kBAASI,SAASJ,MAAlB;AACH,MAFD;;AAIA;AACAZ,UAAKiB,gBAAL,GAAwB;AACpBV,mBAAUP,KAAKO,QADK;AAEpBW,yBAAgBN,MAFI;AAGpBO,6BAAoBhB,EAAEH,KAAKU,oBAAP,EAA6B,CAA7B,CAHA;AAIpBU,4BAAmBjB,EAAEH,KAAKW,kBAAP,EAA2B,CAA3B;AAJC,MAAxB;;AAOA;AACAX,UAAKqB,mBAAL,GAA2B,mBAAGC,UAAH,CAAc,kCAAwBtB,KAAKiB,gBAA7B,CAAd,CAA3B;AACA,wBAAGM,aAAH,CAAiBvB,KAAKqB,mBAAtB,EAA2ClB,EAAEH,KAAKU,oBAAP,EAA6B,CAA7B,CAA3C;;AAEA;AACAV,UAAKwB,IAAL,GAAY,YAAY;AACpB;AACAxB,cAAKyB,MAAL;;AAEA;AACAtB,WAAE,6BAAF,EAAiCuB,IAAjC,CAAsC,OAAtC,EAA+C,YAAY;AACvD;AACAtB,+BAAkBD,EAAE,mCAAF,CAAlB;AACAD,+BAAkByB,WAAlB,CAA8B1B,cAA9B;AACAI,oCAAuBuB,IAAvB;;AAEA,iBAAI,kCAAkBxB,gBAAgBI,GAAhB,EAAlB,CAAJ,EAA8C;AAC1CF,gCAAeqB,WAAf,CAA2B,gBAA3B;;AAEA,+BAAIE,oBAAJ,CAAyBzB,gBAAgBI,GAAhB,EAAzB;;AAEA;AACA,qBAAI,CAACR,KAAKqB,mBAAL,GAA2BS,SAA5B,IAAyC9B,KAAKqB,mBAAL,GAA2BS,SAA3B,OAA2C,CAAxF,EAA2F;AACvF9B,0BAAKqB,mBAAL,GAA2BU,UAA3B,CAAsC3B,gBAAgBI,GAAhB,EAAtC,EAA6DR,KAAKO,QAAlE;AACH,kBAFD,MAEO;AACHP,0BAAKqB,mBAAL,GAA2BW,gBAA3B,CAA4C5B,gBAAgBI,GAAhB,EAA5C,EAAmER,KAAKO,QAAxE;AACH;AACD,sCAAW,EAAE0B,OAAO,6BAAT,EAAwCC,KAAK9B,gBAAgBI,GAAhB,GAAsB2B,MAAtB,CAA6B,CAA7B,EAAgC,CAAhC,CAA7C,EAAX;AACA;AACAhC,mBAAEH,KAAKS,sBAAL,GAA8B,IAA9B,GAAqCT,KAAKU,oBAA5C,EAAkE0B,GAAlE,CAAsE,KAAtE,EAA6EjC,EAAEkC,MAAF,EAAUC,SAAV,KAAwB,EAArG,EAAyGC,MAAzG;AACH,cAdD,MAcO;AACH;AACApC,mBAAEH,KAAKS,sBAAL,GAA8B,IAA9B,GAAqCT,KAAKU,oBAA5C,EAAkEkB,IAAlE;AACAtB,gCAAekC,QAAf,CAAwB,gBAAxB;AACAtC,mCAAkBsC,QAAlB,CAA2BvC,cAA3B;AACAI,wCAAuBoC,IAAvB;AACH;AACJ,UA3BD;;AA6BA;AACAtC,WAAE,oCAAF,EAAwCuB,IAAxC,CAA6C,OAA7C,EAAsD,YAAY;AAC9DxB,iCAAoBC,EAAE,uBAAF,CAApB;AACAC,+BAAkBD,EAAE,oCAAF,CAAlB;;AAEA;AACAA,eAAE,uBAAF,EAA2BwB,WAA3B,CAAuC,SAAvC;;AAEA;AACAzB,+BAAkByB,WAAlB,CAA8B1B,cAA9B;;AAEA;AACA,iBAAI,kCAAkBG,gBAAgBI,GAAhB,EAAlB,CAAJ,EAA8C;AAC1C,+BAAIqB,oBAAJ,CAAyBzB,gBAAgBI,GAAhB,EAAzB;AACA;AACA,sCAAW,EAAEyB,OAAO,6BAAT,EAAwCC,KAAK9B,gBAAgBI,GAAhB,GAAsB2B,MAAtB,CAA6B,CAA7B,EAAgC,CAAhC,CAA7C,EAAX;AACA;AACA,qBAAI,CAACnC,KAAKqB,mBAAL,GAA2BS,SAA5B,IAAyC9B,KAAKqB,mBAAL,GAA2BS,SAA3B,OAA2C,CAAxF,EAA2F;AACvF9B,0BAAKqB,mBAAL,GAA2BU,UAA3B,CAAsC3B,gBAAgBI,GAAhB,EAAtC,EAA6DR,KAAKO,QAAlE;AACH,kBAFD,MAEO;AACHP,0BAAKqB,mBAAL,GAA2BW,gBAA3B,CAA4C5B,gBAAgBI,GAAhB,EAA5C,EAAmER,KAAKO,QAAxE;AACH;AACD;AACAJ,mBAAEH,KAAKS,sBAAL,GAA8B,IAA9B,GAAqCT,KAAKU,oBAA5C,EAAkE0B,GAAlE,CAAsE,KAAtE,EAA6EjC,EAAEkC,MAAF,EAAUC,SAAV,KAAwB,EAArG,EAAyGC,MAAzG;AACH,cAZD,MAYO;AACH;AACApC,mBAAEH,KAAKS,sBAAL,GAA8B,IAA9B,GAAqCT,KAAKU,oBAA5C,EAAkEkB,IAAlE;AACA1B,mCAAkBsC,QAAlB,CAA2BvC,cAA3B,EAA2CuC,QAA3C,CAAoD,SAApD;AACH;AACJ,UA5BD;;AA8BA;AACArC,WAAE,oBAAF,EAAwBuC,EAAxB,CAA2B,OAA3B,EAAoC,UAAUC,GAAV,EAAe;AAC/CA,iBAAIC,cAAJ;AACA5C,kBAAK6C,UAAL;AACA,oBAAO,KAAP;AACH,UAJD;;AAMA;AACA1C,WAAE,oBAAF,EAAwB2C,IAAxB,CAA6B,UAASC,IAAT,EAAeC,MAAf,EAAuB;AAChD,iBAAIC,UAAU9C,EAAE6C,MAAF,CAAd;;AAEA,iBAAIC,QAAQC,IAAR,CAAa,MAAb,MAAyB,gBAAzB,IAA6CD,QAAQC,IAAR,CAAa,MAAb,MAAyB,yBAA1E,EAAqG;AACjGD,yBAAQC,IAAR,CAAa,MAAb,EAAqB,qBAArB;AACAD,yBAAQP,EAAR,CAAW,OAAX,EAAoB,YAAW;AAC3BvC,uBAAE,oCAAF,EAAwCgD,OAAxC,CAAgD,OAAhD;AACH,kBAFD;AAGH;AACJ,UATD;;AAWAhD,WAAE,4BAAF,EAAgCuC,EAAhC,CAAmC,OAAnC,EAA4C,YAAW;AACnDvC,eAAE,oCAAF,EAAwCgD,OAAxC,CAAgD,OAAhD;AACH,UAFD;AAGH,MAvFD;;AAyFA;AACAnD,UAAKyB,MAAL,GAAc,YAAY;AACtB,4BAAG2B,UAAH,CAAc5B,IAAd,CAAmB;AACf6B,8BAAiB,IADF;AAEfC,6BAAgB;AAFD,UAAnB;;AAKA,4BAAGC,eAAH,CAAmBC,YAAnB,GAAkC;AAC9BC,qBAAQ,gBAAUC,OAAV,EAAmBC,aAAnB,EAAkCC,mBAAlC,EAAuD;AAC3D;AACA,qBAAIC,QAAQF,eAAZ;AACA,qBAAIG,YAAYF,sBAAsBE,SAAtB,IAAmC,CAAnC,GAAuCF,sBAAsBE,SAA7D,GAAyE,mBAAGP,eAAH,CAAmBC,YAAnB,CAAgCO,gBAAzH;;AAEA;AACAF,yBAAQG,WAAWH,KAAX,EAAkBI,OAAlB,CAA0BH,SAA1B,EAAqCI,OAArC,CAA6C,6BAA7C,EAA4E,KAA5E,CAAR;;AAEA,qBAAIC,OAAOC,sBAAsBC,IAAtB,CAA2B9D,QAA3B,EAAX;AACA,qBAAI4D,QAAQ,IAAZ,EAAkB;AACdhE,uBAAEuD,OAAF,EAAWY,IAAX,CAAgBT,KAAhB;AACH,kBAFD,MAEO;AACH1D,uBAAEuD,OAAF,EAAWY,IAAX,CAAgBT,MAAMK,OAAN,CAAc,GAAd,EAAmB,GAAnB,CAAhB;AACH;AACJ,cAf6B;AAgB9BH,+BAAkB;AAhBY,UAAlC;;AAmBA,4BAAGR,eAAH,CAAmBgB,cAAnB,GAAoC;AAChCd,qBAAQ,gBAAUC,OAAV,EAAmBC,aAAnB,EAAkCC,mBAAlC,EAAuD;AAC3D;AACA,qBAAIC,QAAQF,eAAZ;AACA,qBAAIG,YAAYF,sBAAsBE,SAAtB,IAAmC,CAAnC,GAAuCF,sBAAsBE,SAA7D,GAAyE,mBAAGP,eAAH,CAAmBgB,cAAnB,CAAkCR,gBAA3H;;AAEA,qBAAIS,MAAMR,WAAWH,KAAX,CAAN,KAA4BG,WAAWH,KAAX,KAAqB,CAArD,EAAwD;AACpD1D,uBAAEuD,OAAF,EAAWY,IAAX,CAAgB,mBAAGf,eAAH,CAAmBgB,cAAnB,CAAkCE,YAAlD;AACA;AACH;;AAED;AACAZ,yBAAQG,WAAWH,KAAX,EAAkBI,OAAlB,CAA0BH,SAA1B,EAAqCI,OAArC,CAA6C,6BAA7C,EAA4E,KAA5E,CAAR;;AAEA,qBAAIC,OAAOC,sBAAsBC,IAAtB,CAA2B9D,QAA3B,EAAX;AACA,qBAAI4D,QAAQ,IAAZ,EAAkB;AACdhE,uBAAEuD,OAAF,EAAWY,IAAX,CAAgB,MAAMT,KAAtB;AACH,kBAFD,MAEO;AACH1D,uBAAEuD,OAAF,EAAWY,IAAX,CAAgBT,MAAMK,OAAN,CAAc,GAAd,EAAmB,GAAnB,IAA0B,IAA1C;AACH;AACJ,cApB+B;AAqBhCH,+BAAkB,CArBc;AAsBhCU,2BAAc;AAtBkB,UAApC;;AAyBA,4BAAGlB,eAAH,CAAmBmB,aAAnB,GAAmC;AAC/BjB,qBAAQ,gBAAUC,OAAV,EAAmBC,aAAnB,EAAkCC,mBAAlC,EAAuD;AAC3D;AACA,qBAAIC,QAAQF,eAAZ;AACA,qBAAIG,YAAYF,sBAAsBE,SAAtB,IAAmC,CAAnC,GAAuCF,sBAAsBE,SAA7D,GAAyE,mBAAGP,eAAH,CAAmBmB,aAAnB,CAAiCX,gBAA1H;;AAEA;AACAF,yBAAQG,WAAWH,KAAX,EAAkBI,OAAlB,CAA0BH,SAA1B,EAAqCI,OAArC,CAA6C,6BAA7C,EAA4E,KAA5E,CAAR;;AAEA,qBAAIC,OAAOC,sBAAsBC,IAAtB,CAA2B9D,QAA3B,EAAX;AACA,qBAAI4D,QAAQ,IAAZ,EAAkB;AACdhE,uBAAEuD,OAAF,EAAWY,IAAX,CAAgBT,QAAQ,GAAxB;AACH,kBAFD,MAEO;AACH1D,uBAAEuD,OAAF,EAAWY,IAAX,CAAgB,MAAMT,MAAMK,OAAN,CAAc,GAAd,EAAmB,GAAnB,CAAtB;AACH;AACJ,cAf8B;AAgB/BH,+BAAkB;AAhBa,UAAnC;AAkBH,MApED;;AAsEA;AACA/D,UAAK6C,UAAL,GAAkB,YAAY;AAC1B;AACA1C,WAAEH,KAAKS,sBAAL,GAA8B,IAA9B,GAAqCT,KAAKU,oBAA5C,EAAkEiE,OAAlE;;AAEA;AACA3E,cAAKqB,mBAAL,GAA2BuD,SAA3B;AACH,MAND;AAOH,EA3MgB,EAAjB,C,CATA;;;AAsNAzE,GAAE0E,QAAF,EAAYC,KAAZ,CAAkB,YAAY;AAC1B;AACA/E,gBAAWyB,IAAX;AACH,EAHD,E;;;;;;;ACtNA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,iBAAiB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA,G;;;;;;;;iIC3EA;AACA;AACA;AACA,6DAA4D;AAC5D;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,gDAA+C,EAAE;AACjD,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,yCAAwC;AACxC,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,sCAAqC,KAAK;AAC1C;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,gDAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,sBAAqB;AACrB;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,gDAA+C,EAAE;AACjD,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,yCAAwC;AACxC,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD,kBAAiB;AACjB;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,uBAAuB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,cAAa;AACb;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,0BAA0B;AACzD;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kBAAiB;AACjB;AACA;AACA,sBAAqB;AA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAqC;;AAErC;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU","file":"findDealer.js","sourcesContent":["// create the find dealer js object (singleton)\r\nimport ko from 'knockout';\r\nimport 'knockout.validation';\r\nimport Bloodhound from 'typeahead.js';\r\nimport geo from '../Common/geo';\r\nimport FindDealerViewModel from './FindDealerViewModel';\r\nimport { triggerGtm } from '../gtm';\r\nimport { isPostalCodeValid } from '../Common/utilities';\r\n\r\nvar findDealer = new function () {\r\n var self = this,\r\n errorClassName = 'error',\r\n postalCodeWrapper = $('.find-dealer-wrapper'),\r\n postalCodeInput = $('.find-dealer-wrapper .strip-input'),\r\n postalCodeErrorMessage = $('.dealer-bar .error-wrapper'),\r\n errorContainer = $('.dealer-bar');\r\n\r\n // find dealer object vars\r\n self.language = $('.current-language').val();\r\n\r\n // popup\r\n self.overlayElementSelector = '.popup-find-dealer-container';\r\n self.popupElementSelector = '.popup-find-dealer';\r\n self.dealersMapSelector = '.popup-find-dealer .dealers-map-section';\r\n\r\n // initial coords\r\n var coords = {};\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n coords = position.coords;\r\n });\r\n\r\n // Create and bind the find dealer view model\r\n self.viewModelOptions = {\r\n language: self.language,\r\n clientLocation: coords,\r\n dealersListElement: $(self.popupElementSelector)[0],\r\n dealersMapElement: $(self.dealersMapSelector)[0]\r\n };\r\n\r\n // set up a new viewmodel\r\n self.findDealerViewModel = ko.observable(new FindDealerViewModel(self.viewModelOptions));\r\n ko.applyBindings(self.findDealerViewModel, $(self.popupElementSelector)[0]);\r\n\r\n // find dealer object functions\r\n self.init = function () {\r\n // initialize knockout (ko) and ko validation\r\n self.initKo();\r\n\r\n // Hookup the dealer locator to the find dealer bar\r\n $('.find-dealer-wrapper .btn-1').bind('click', function () {\r\n // Validate postal code entered, update styles if invalid\r\n postalCodeInput = $('.find-dealer-wrapper .strip-input');\r\n postalCodeWrapper.removeClass(errorClassName);\r\n postalCodeErrorMessage.hide();\r\n\r\n if (isPostalCodeValid(postalCodeInput.val())) {\r\n errorContainer.removeClass(\"contains-error\");\r\n\r\n geo.setPostalCodeContext(postalCodeInput.val());\r\n\r\n // launch the dealer locator modal with the passed postal code via initialization if viewState = 0\r\n if (!self.findDealerViewModel().viewState || self.findDealerViewModel().viewState() === 0) {\r\n self.findDealerViewModel().initialize(postalCodeInput.val(), self.language);\r\n } else {\r\n self.findDealerViewModel().launchWithPostal(postalCodeInput.val(), self.language);\r\n }\r\n triggerGtm({ event: \"find-a-dealer-postal-search\", fsa: postalCodeInput.val().substr(0, 3) });\r\n // show the overlay and the modal popup\r\n $(self.overlayElementSelector + ', ' + self.popupElementSelector).css(\"top\", $(window).scrollTop() + 20).fadeIn();\r\n } else {\r\n // hide the overlay and the modal popup\r\n $(self.overlayElementSelector + ', ' + self.popupElementSelector).hide();\r\n errorContainer.addClass(\"contains-error\");\r\n postalCodeWrapper.addClass(errorClassName);\r\n postalCodeErrorMessage.show();\r\n }\r\n });\r\n\r\n // Hookup the dealer locator to the find dealer element in the header\r\n $('.user-dealer-dropdown .btn-1-small').bind('click', function () {\r\n postalCodeWrapper = $('.user-dealer-dropdown');\r\n postalCodeInput = $('.user-dealer-dropdown .strip-input');\r\n\r\n // close the dropdown if it is open\r\n $(\".user-dealer-dropdown\").removeClass(\"visible\");\r\n\r\n // reset error message\r\n postalCodeWrapper.removeClass(errorClassName);\r\n\r\n // Validate postal code entered, update styles if invalid\r\n if (isPostalCodeValid(postalCodeInput.val())) {\r\n geo.setPostalCodeContext(postalCodeInput.val());\r\n // gtm tag push first 3 letter of postal code.\r\n triggerGtm({ event: \"find-a-dealer-postal-search\", fsa: postalCodeInput.val().substr(0, 3) });\r\n // launch the dealer locator modal with the passed postal code\r\n if (!self.findDealerViewModel().viewState || self.findDealerViewModel().viewState() === 0) {\r\n self.findDealerViewModel().initialize(postalCodeInput.val(), self.language);\r\n } else {\r\n self.findDealerViewModel().launchWithPostal(postalCodeInput.val(), self.language);\r\n }\r\n // show the overlay and the modal popup\r\n $(self.overlayElementSelector + ', ' + self.popupElementSelector).css(\"top\", $(window).scrollTop() + 20).fadeIn();\r\n } else {\r\n // hide the overlay and the modal popup\r\n $(self.overlayElementSelector + ', ' + self.popupElementSelector).hide();\r\n postalCodeWrapper.addClass(errorClassName).addClass(\"visible\");\r\n }\r\n });\r\n\r\n // set the close modal event\r\n $(\".find-dealer-close\").on(\"click\", function (evt) {\r\n evt.preventDefault();\r\n self.closeModal();\r\n return false;\r\n });\r\n\r\n // update the footer dealer locator links to open dealer modal\r\n $(\".link-group-2-link\").each(function(indx, anchor) {\r\n var $anchor = $(anchor);\r\n\r\n if ($anchor.attr(\"href\") === '/dealerlocator' || $anchor.attr(\"href\") === '/trouver-concessionaire') {\r\n $anchor.attr(\"href\", 'javascript:void(0);');\r\n $anchor.on(\"click\", function() {\r\n $('.user-dealer-dropdown .btn-1-small').trigger(\"click\");\r\n });\r\n }\r\n });\r\n\r\n $(\".footer-bottom-find-dealer\").on(\"click\", function() {\r\n $('.user-dealer-dropdown .btn-1-small').trigger(\"click\");\r\n });\r\n }\r\n\r\n // Initialize KO validation and some binding handlers\r\n self.initKo = function () {\r\n ko.validation.init({\r\n decorateElement: true,\r\n insertMessages: false\r\n });\r\n\r\n ko.bindingHandlers.formatNumber = {\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n // First get the latest data that we're bound to\r\n var value = valueAccessor();\r\n var precision = allBindingsAccessor().precision >= 0 ? allBindingsAccessor().precision : ko.bindingHandlers.formatNumber.defaultPrecision;\r\n\r\n // Add in thousands separators\r\n value = parseFloat(value).toFixed(precision).replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1,');\r\n\r\n var lang = calculatorViewModel().form.language();\r\n if (lang == 'en') {\r\n $(element).text(value);\r\n } else {\r\n $(element).text(value.replace('.', ','));\r\n }\r\n },\r\n defaultPrecision: 2\r\n };\r\n\r\n ko.bindingHandlers.formatCurrency = {\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n // First get the latest data that we're bound to\r\n var value = valueAccessor();\r\n var precision = allBindingsAccessor().precision >= 0 ? allBindingsAccessor().precision : ko.bindingHandlers.formatCurrency.defaultPrecision;\r\n\r\n if (isNaN(parseFloat(value)) || parseFloat(value) == 0) {\r\n $(element).text(ko.bindingHandlers.formatCurrency.defaultValue);\r\n return;\r\n }\r\n\r\n // Add in thousands separators\r\n value = parseFloat(value).toFixed(precision).replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1,');\r\n\r\n var lang = calculatorViewModel().form.language();\r\n if (lang == 'en') {\r\n $(element).text('$' + value);\r\n } else {\r\n $(element).text(value.replace('.', ',') + ' $');\r\n }\r\n },\r\n defaultPrecision: 2,\r\n defaultValue: '------'\r\n };\r\n\r\n ko.bindingHandlers.formatPercent = {\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n // First get the latest data that we're bound to\r\n var value = valueAccessor();\r\n var precision = allBindingsAccessor().precision >= 0 ? allBindingsAccessor().precision : ko.bindingHandlers.formatPercent.defaultPrecision;\r\n\r\n // Add in thousands separators\r\n value = parseFloat(value).toFixed(precision).replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1,');\r\n\r\n var lang = calculatorViewModel().form.language();\r\n if (lang == 'en') {\r\n $(element).text(value + '%');\r\n } else {\r\n $(element).text('%' + value.replace('.', ','));\r\n }\r\n },\r\n defaultPrecision: 2\r\n };\r\n };\r\n\r\n // function to close the find a dealer modal\r\n self.closeModal = function () {\r\n // hide both the overlay and the modal popup\r\n $(self.overlayElementSelector + ', ' + self.popupElementSelector).fadeOut();\r\n\r\n // reset the bound form and clean up\r\n self.findDealerViewModel().resetForm();\r\n };\r\n}\r\n\r\n$(document).ready(function () {\r\n // initialize the find dealer object\r\n findDealer.init();\r\n});\n\n\n/** WEBPACK FOOTER **\n ** D:/cjtws/workspace/r-Q46MKCSNXL/source/Mc.Web.Mvc/_Global/js/es6Source/FindDealer/index.js\n **/","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/timers-browserify/main.js\n ** module id = 164\n ** module chunks = 3\n **/","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(\"bloodhound\", [ \"jquery\" ], function(a0) {\n return root[\"Bloodhound\"] = factory(a0);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"jquery\"));\n } else {\n root[\"Bloodhound\"] = factory(jQuery);\n }\n})(this, function($) {\n var _ = function() {\n \"use strict\";\n return {\n isMsie: function() {\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n },\n isBlankString: function(str) {\n return !str || /^\\s*$/.test(str);\n },\n escapeRegExChars: function(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n },\n isString: function(obj) {\n return typeof obj === \"string\";\n },\n isNumber: function(obj) {\n return typeof obj === \"number\";\n },\n isArray: $.isArray,\n isFunction: $.isFunction,\n isObject: $.isPlainObject,\n isUndefined: function(obj) {\n return typeof obj === \"undefined\";\n },\n isElement: function(obj) {\n return !!(obj && obj.nodeType === 1);\n },\n isJQuery: function(obj) {\n return obj instanceof $;\n },\n toStr: function toStr(s) {\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n },\n bind: $.proxy,\n each: function(collection, cb) {\n $.each(collection, reverseArgs);\n function reverseArgs(index, value) {\n return cb(value, index);\n }\n },\n map: $.map,\n filter: $.grep,\n every: function(obj, test) {\n var result = true;\n if (!obj) {\n return result;\n }\n $.each(obj, function(key, val) {\n if (!(result = test.call(null, val, key, obj))) {\n return false;\n }\n });\n return !!result;\n },\n some: function(obj, test) {\n var result = false;\n if (!obj) {\n return result;\n }\n $.each(obj, function(key, val) {\n if (result = test.call(null, val, key, obj)) {\n return false;\n }\n });\n return !!result;\n },\n mixin: $.extend,\n identity: function(x) {\n return x;\n },\n clone: function(obj) {\n return $.extend(true, {}, obj);\n },\n getIdGenerator: function() {\n var counter = 0;\n return function() {\n return counter++;\n };\n },\n templatify: function templatify(obj) {\n return $.isFunction(obj) ? obj : template;\n function template() {\n return String(obj);\n }\n },\n defer: function(fn) {\n setTimeout(fn, 0);\n },\n debounce: function(func, wait, immediate) {\n var timeout, result;\n return function() {\n var context = this, args = arguments, later, callNow;\n later = function() {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n }\n };\n callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n }\n return result;\n };\n },\n throttle: function(func, wait) {\n var context, args, timeout, result, previous, later;\n previous = 0;\n later = function() {\n previous = new Date();\n timeout = null;\n result = func.apply(context, args);\n };\n return function() {\n var now = new Date(), remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n },\n stringify: function(val) {\n return _.isString(val) ? val : JSON.stringify(val);\n },\n noop: function() {}\n };\n }();\n var VERSION = \"0.11.1\";\n var tokenizers = function() {\n \"use strict\";\n return {\n nonword: nonword,\n whitespace: whitespace,\n obj: {\n nonword: getObjTokenizer(nonword),\n whitespace: getObjTokenizer(whitespace)\n }\n };\n function whitespace(str) {\n str = _.toStr(str);\n return str ? str.split(/\\s+/) : [];\n }\n function nonword(str) {\n str = _.toStr(str);\n return str ? str.split(/\\W+/) : [];\n }\n function getObjTokenizer(tokenizer) {\n return function setKey(keys) {\n keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\n return function tokenize(o) {\n var tokens = [];\n _.each(keys, function(k) {\n tokens = tokens.concat(tokenizer(_.toStr(o[k])));\n });\n return tokens;\n };\n };\n }\n }();\n var LruCache = function() {\n \"use strict\";\n function LruCache(maxSize) {\n this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\n this.reset();\n if (this.maxSize <= 0) {\n this.set = this.get = $.noop;\n }\n }\n _.mixin(LruCache.prototype, {\n set: function set(key, val) {\n var tailItem = this.list.tail, node;\n if (this.size >= this.maxSize) {\n this.list.remove(tailItem);\n delete this.hash[tailItem.key];\n this.size--;\n }\n if (node = this.hash[key]) {\n node.val = val;\n this.list.moveToFront(node);\n } else {\n node = new Node(key, val);\n this.list.add(node);\n this.hash[key] = node;\n this.size++;\n }\n },\n get: function get(key) {\n var node = this.hash[key];\n if (node) {\n this.list.moveToFront(node);\n return node.val;\n }\n },\n reset: function reset() {\n this.size = 0;\n this.hash = {};\n this.list = new List();\n }\n });\n function List() {\n this.head = this.tail = null;\n }\n _.mixin(List.prototype, {\n add: function add(node) {\n if (this.head) {\n node.next = this.head;\n this.head.prev = node;\n }\n this.head = node;\n this.tail = this.tail || node;\n },\n remove: function remove(node) {\n node.prev ? node.prev.next = node.next : this.head = node.next;\n node.next ? node.next.prev = node.prev : this.tail = node.prev;\n },\n moveToFront: function(node) {\n this.remove(node);\n this.add(node);\n }\n });\n function Node(key, val) {\n this.key = key;\n this.val = val;\n this.prev = this.next = null;\n }\n return LruCache;\n }();\n var PersistentStorage = function() {\n \"use strict\";\n var LOCAL_STORAGE;\n try {\n LOCAL_STORAGE = window.localStorage;\n LOCAL_STORAGE.setItem(\"~~~\", \"!\");\n LOCAL_STORAGE.removeItem(\"~~~\");\n } catch (err) {\n LOCAL_STORAGE = null;\n }\n function PersistentStorage(namespace, override) {\n this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\n this.ttlKey = \"__ttl__\";\n this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\n this.ls = override || LOCAL_STORAGE;\n !this.ls && this._noop();\n }\n _.mixin(PersistentStorage.prototype, {\n _prefix: function(key) {\n return this.prefix + key;\n },\n _ttlKey: function(key) {\n return this._prefix(key) + this.ttlKey;\n },\n _noop: function() {\n this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\n },\n _safeSet: function(key, val) {\n try {\n this.ls.setItem(key, val);\n } catch (err) {\n if (err.name === \"QuotaExceededError\") {\n this.clear();\n this._noop();\n }\n }\n },\n get: function(key) {\n if (this.isExpired(key)) {\n this.remove(key);\n }\n return decode(this.ls.getItem(this._prefix(key)));\n },\n set: function(key, val, ttl) {\n if (_.isNumber(ttl)) {\n this._safeSet(this._ttlKey(key), encode(now() + ttl));\n } else {\n this.ls.removeItem(this._ttlKey(key));\n }\n return this._safeSet(this._prefix(key), encode(val));\n },\n remove: function(key) {\n this.ls.removeItem(this._ttlKey(key));\n this.ls.removeItem(this._prefix(key));\n return this;\n },\n clear: function() {\n var i, keys = gatherMatchingKeys(this.keyMatcher);\n for (i = keys.length; i--; ) {\n this.remove(keys[i]);\n }\n return this;\n },\n isExpired: function(key) {\n var ttl = decode(this.ls.getItem(this._ttlKey(key)));\n return _.isNumber(ttl) && now() > ttl ? true : false;\n }\n });\n return PersistentStorage;\n function now() {\n return new Date().getTime();\n }\n function encode(val) {\n return JSON.stringify(_.isUndefined(val) ? null : val);\n }\n function decode(val) {\n return $.parseJSON(val);\n }\n function gatherMatchingKeys(keyMatcher) {\n var i, key, keys = [], len = LOCAL_STORAGE.length;\n for (i = 0; i < len; i++) {\n if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\n keys.push(key.replace(keyMatcher, \"\"));\n }\n }\n return keys;\n }\n }();\n var Transport = function() {\n \"use strict\";\n var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\n function Transport(o) {\n o = o || {};\n this.cancelled = false;\n this.lastReq = null;\n this._send = o.transport;\n this._get = o.limiter ? o.limiter(this._get) : this._get;\n this._cache = o.cache === false ? new LruCache(0) : sharedCache;\n }\n Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\n maxPendingRequests = num;\n };\n Transport.resetCache = function resetCache() {\n sharedCache.reset();\n };\n _.mixin(Transport.prototype, {\n _fingerprint: function fingerprint(o) {\n o = o || {};\n return o.url + o.type + $.param(o.data || {});\n },\n _get: function(o, cb) {\n var that = this, fingerprint, jqXhr;\n fingerprint = this._fingerprint(o);\n if (this.cancelled || fingerprint !== this.lastReq) {\n return;\n }\n if (jqXhr = pendingRequests[fingerprint]) {\n jqXhr.done(done).fail(fail);\n } else if (pendingRequestsCount < maxPendingRequests) {\n pendingRequestsCount++;\n pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\n } else {\n this.onDeckRequestArgs = [].slice.call(arguments, 0);\n }\n function done(resp) {\n cb(null, resp);\n that._cache.set(fingerprint, resp);\n }\n function fail() {\n cb(true);\n }\n function always() {\n pendingRequestsCount--;\n delete pendingRequests[fingerprint];\n if (that.onDeckRequestArgs) {\n that._get.apply(that, that.onDeckRequestArgs);\n that.onDeckRequestArgs = null;\n }\n }\n },\n get: function(o, cb) {\n var resp, fingerprint;\n cb = cb || $.noop;\n o = _.isString(o) ? {\n url: o\n } : o || {};\n fingerprint = this._fingerprint(o);\n this.cancelled = false;\n this.lastReq = fingerprint;\n if (resp = this._cache.get(fingerprint)) {\n cb(null, resp);\n } else {\n this._get(o, cb);\n }\n },\n cancel: function() {\n this.cancelled = true;\n }\n });\n return Transport;\n }();\n var SearchIndex = window.SearchIndex = function() {\n \"use strict\";\n var CHILDREN = \"c\", IDS = \"i\";\n function SearchIndex(o) {\n o = o || {};\n if (!o.datumTokenizer || !o.queryTokenizer) {\n $.error(\"datumTokenizer and queryTokenizer are both required\");\n }\n this.identify = o.identify || _.stringify;\n this.datumTokenizer = o.datumTokenizer;\n this.queryTokenizer = o.queryTokenizer;\n this.reset();\n }\n _.mixin(SearchIndex.prototype, {\n bootstrap: function bootstrap(o) {\n this.datums = o.datums;\n this.trie = o.trie;\n },\n add: function(data) {\n var that = this;\n data = _.isArray(data) ? data : [ data ];\n _.each(data, function(datum) {\n var id, tokens;\n that.datums[id = that.identify(datum)] = datum;\n tokens = normalizeTokens(that.datumTokenizer(datum));\n _.each(tokens, function(token) {\n var node, chars, ch;\n node = that.trie;\n chars = token.split(\"\");\n while (ch = chars.shift()) {\n node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\n node[IDS].push(id);\n }\n });\n });\n },\n get: function get(ids) {\n var that = this;\n return _.map(ids, function(id) {\n return that.datums[id];\n });\n },\n search: function search(query) {\n var that = this, tokens, matches;\n tokens = normalizeTokens(this.queryTokenizer(query));\n _.each(tokens, function(token) {\n var node, chars, ch, ids;\n if (matches && matches.length === 0) {\n return false;\n }\n node = that.trie;\n chars = token.split(\"\");\n while (node && (ch = chars.shift())) {\n node = node[CHILDREN][ch];\n }\n if (node && chars.length === 0) {\n ids = node[IDS].slice(0);\n matches = matches ? getIntersection(matches, ids) : ids;\n } else {\n matches = [];\n return false;\n }\n });\n return matches ? _.map(unique(matches), function(id) {\n return that.datums[id];\n }) : [];\n },\n all: function all() {\n var values = [];\n for (var key in this.datums) {\n values.push(this.datums[key]);\n }\n return values;\n },\n reset: function reset() {\n this.datums = {};\n this.trie = newNode();\n },\n serialize: function serialize() {\n return {\n datums: this.datums,\n trie: this.trie\n };\n }\n });\n return SearchIndex;\n function normalizeTokens(tokens) {\n tokens = _.filter(tokens, function(token) {\n return !!token;\n });\n tokens = _.map(tokens, function(token) {\n return token.toLowerCase();\n });\n return tokens;\n }\n function newNode() {\n var node = {};\n node[IDS] = [];\n node[CHILDREN] = {};\n return node;\n }\n function unique(array) {\n var seen = {}, uniques = [];\n for (var i = 0, len = array.length; i < len; i++) {\n if (!seen[array[i]]) {\n seen[array[i]] = true;\n uniques.push(array[i]);\n }\n }\n return uniques;\n }\n function getIntersection(arrayA, arrayB) {\n var ai = 0, bi = 0, intersection = [];\n arrayA = arrayA.sort();\n arrayB = arrayB.sort();\n var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\n while (ai < lenArrayA && bi < lenArrayB) {\n if (arrayA[ai] < arrayB[bi]) {\n ai++;\n } else if (arrayA[ai] > arrayB[bi]) {\n bi++;\n } else {\n intersection.push(arrayA[ai]);\n ai++;\n bi++;\n }\n }\n return intersection;\n }\n }();\n var Prefetch = function() {\n \"use strict\";\n var keys;\n keys = {\n data: \"data\",\n protocol: \"protocol\",\n thumbprint: \"thumbprint\"\n };\n function Prefetch(o) {\n this.url = o.url;\n this.ttl = o.ttl;\n this.cache = o.cache;\n this.prepare = o.prepare;\n this.transform = o.transform;\n this.transport = o.transport;\n this.thumbprint = o.thumbprint;\n this.storage = new PersistentStorage(o.cacheKey);\n }\n _.mixin(Prefetch.prototype, {\n _settings: function settings() {\n return {\n url: this.url,\n type: \"GET\",\n dataType: \"json\"\n };\n },\n store: function store(data) {\n if (!this.cache) {\n return;\n }\n this.storage.set(keys.data, data, this.ttl);\n this.storage.set(keys.protocol, location.protocol, this.ttl);\n this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\n },\n fromCache: function fromCache() {\n var stored = {}, isExpired;\n if (!this.cache) {\n return null;\n }\n stored.data = this.storage.get(keys.data);\n stored.protocol = this.storage.get(keys.protocol);\n stored.thumbprint = this.storage.get(keys.thumbprint);\n isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\n return stored.data && !isExpired ? stored.data : null;\n },\n fromNetwork: function(cb) {\n var that = this, settings;\n if (!cb) {\n return;\n }\n settings = this.prepare(this._settings());\n this.transport(settings).fail(onError).done(onResponse);\n function onError() {\n cb(true);\n }\n function onResponse(resp) {\n cb(null, that.transform(resp));\n }\n },\n clear: function clear() {\n this.storage.clear();\n return this;\n }\n });\n return Prefetch;\n }();\n var Remote = function() {\n \"use strict\";\n function Remote(o) {\n this.url = o.url;\n this.prepare = o.prepare;\n this.transform = o.transform;\n this.transport = new Transport({\n cache: o.cache,\n limiter: o.limiter,\n transport: o.transport\n });\n }\n _.mixin(Remote.prototype, {\n _settings: function settings() {\n return {\n url: this.url,\n type: \"GET\",\n dataType: \"json\"\n };\n },\n get: function get(query, cb) {\n var that = this, settings;\n if (!cb) {\n return;\n }\n query = query || \"\";\n settings = this.prepare(query, this._settings());\n return this.transport.get(settings, onResponse);\n function onResponse(err, resp) {\n err ? cb([]) : cb(that.transform(resp));\n }\n },\n cancelLastRequest: function cancelLastRequest() {\n this.transport.cancel();\n }\n });\n return Remote;\n }();\n var oParser = function() {\n \"use strict\";\n return function parse(o) {\n var defaults, sorter;\n defaults = {\n initialize: true,\n identify: _.stringify,\n datumTokenizer: null,\n queryTokenizer: null,\n sufficient: 5,\n sorter: null,\n local: [],\n prefetch: null,\n remote: null\n };\n o = _.mixin(defaults, o || {});\n !o.datumTokenizer && $.error(\"datumTokenizer is required\");\n !o.queryTokenizer && $.error(\"queryTokenizer is required\");\n sorter = o.sorter;\n o.sorter = sorter ? function(x) {\n return x.sort(sorter);\n } : _.identity;\n o.local = _.isFunction(o.local) ? o.local() : o.local;\n o.prefetch = parsePrefetch(o.prefetch);\n o.remote = parseRemote(o.remote);\n return o;\n };\n function parsePrefetch(o) {\n var defaults;\n if (!o) {\n return null;\n }\n defaults = {\n url: null,\n ttl: 24 * 60 * 60 * 1e3,\n cache: true,\n cacheKey: null,\n thumbprint: \"\",\n prepare: _.identity,\n transform: _.identity,\n transport: null\n };\n o = _.isString(o) ? {\n url: o\n } : o;\n o = _.mixin(defaults, o);\n !o.url && $.error(\"prefetch requires url to be set\");\n o.transform = o.filter || o.transform;\n o.cacheKey = o.cacheKey || o.url;\n o.thumbprint = VERSION + o.thumbprint;\n o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n return o;\n }\n function parseRemote(o) {\n var defaults;\n if (!o) {\n return;\n }\n defaults = {\n url: null,\n cache: true,\n prepare: null,\n replace: null,\n wildcard: null,\n limiter: null,\n rateLimitBy: \"debounce\",\n rateLimitWait: 300,\n transform: _.identity,\n transport: null\n };\n o = _.isString(o) ? {\n url: o\n } : o;\n o = _.mixin(defaults, o);\n !o.url && $.error(\"remote requires url to be set\");\n o.transform = o.filter || o.transform;\n o.prepare = toRemotePrepare(o);\n o.limiter = toLimiter(o);\n o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\n delete o.replace;\n delete o.wildcard;\n delete o.rateLimitBy;\n delete o.rateLimitWait;\n return o;\n }\n function toRemotePrepare(o) {\n var prepare, replace, wildcard;\n prepare = o.prepare;\n replace = o.replace;\n wildcard = o.wildcard;\n if (prepare) {\n return prepare;\n }\n if (replace) {\n prepare = prepareByReplace;\n } else if (o.wildcard) {\n prepare = prepareByWildcard;\n } else {\n prepare = idenityPrepare;\n }\n return prepare;\n function prepareByReplace(query, settings) {\n settings.url = replace(settings.url, query);\n return settings;\n }\n function prepareByWildcard(query, settings) {\n settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\n return settings;\n }\n function idenityPrepare(query, settings) {\n return settings;\n }\n }\n function toLimiter(o) {\n var limiter, method, wait;\n limiter = o.limiter;\n method = o.rateLimitBy;\n wait = o.rateLimitWait;\n if (!limiter) {\n limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\n }\n return limiter;\n function debounce(wait) {\n return function debounce(fn) {\n return _.debounce(fn, wait);\n };\n }\n function throttle(wait) {\n return function throttle(fn) {\n return _.throttle(fn, wait);\n };\n }\n }\n function callbackToDeferred(fn) {\n return function wrapper(o) {\n var deferred = $.Deferred();\n fn(o, onSuccess, onError);\n return deferred;\n function onSuccess(resp) {\n _.defer(function() {\n deferred.resolve(resp);\n });\n }\n function onError(err) {\n _.defer(function() {\n deferred.reject(err);\n });\n }\n };\n }\n }();\n var Bloodhound = function() {\n \"use strict\";\n var old;\n old = window && window.Bloodhound;\n function Bloodhound(o) {\n o = oParser(o);\n this.sorter = o.sorter;\n this.identify = o.identify;\n this.sufficient = o.sufficient;\n this.local = o.local;\n this.remote = o.remote ? new Remote(o.remote) : null;\n this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\n this.index = new SearchIndex({\n identify: this.identify,\n datumTokenizer: o.datumTokenizer,\n queryTokenizer: o.queryTokenizer\n });\n o.initialize !== false && this.initialize();\n }\n Bloodhound.noConflict = function noConflict() {\n window && (window.Bloodhound = old);\n return Bloodhound;\n };\n Bloodhound.tokenizers = tokenizers;\n _.mixin(Bloodhound.prototype, {\n __ttAdapter: function ttAdapter() {\n var that = this;\n return this.remote ? withAsync : withoutAsync;\n function withAsync(query, sync, async) {\n return that.search(query, sync, async);\n }\n function withoutAsync(query, sync) {\n return that.search(query, sync);\n }\n },\n _loadPrefetch: function loadPrefetch() {\n var that = this, deferred, serialized;\n deferred = $.Deferred();\n if (!this.prefetch) {\n deferred.resolve();\n } else if (serialized = this.prefetch.fromCache()) {\n this.index.bootstrap(serialized);\n deferred.resolve();\n } else {\n this.prefetch.fromNetwork(done);\n }\n return deferred.promise();\n function done(err, data) {\n if (err) {\n return deferred.reject();\n }\n that.add(data);\n that.prefetch.store(that.index.serialize());\n deferred.resolve();\n }\n },\n _initialize: function initialize() {\n var that = this, deferred;\n this.clear();\n (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\n return this.initPromise;\n function addLocalToIndex() {\n that.add(that.local);\n }\n },\n initialize: function initialize(force) {\n return !this.initPromise || force ? this._initialize() : this.initPromise;\n },\n add: function add(data) {\n this.index.add(data);\n return this;\n },\n get: function get(ids) {\n ids = _.isArray(ids) ? ids : [].slice.call(arguments);\n return this.index.get(ids);\n },\n search: function search(query, sync, async) {\n var that = this, local;\n local = this.sorter(this.index.search(query));\n sync(this.remote ? local.slice() : local);\n if (this.remote && local.length < this.sufficient) {\n this.remote.get(query, processRemote);\n } else if (this.remote) {\n this.remote.cancelLastRequest();\n }\n return this;\n function processRemote(remote) {\n var nonDuplicates = [];\n _.each(remote, function(r) {\n !_.some(local, function(l) {\n return that.identify(r) === that.identify(l);\n }) && nonDuplicates.push(r);\n });\n async && async(nonDuplicates);\n }\n },\n all: function all() {\n return this.index.all();\n },\n clear: function clear() {\n this.index.reset();\n return this;\n },\n clearPrefetchCache: function clearPrefetchCache() {\n this.prefetch && this.prefetch.clear();\n return this;\n },\n clearRemoteCache: function clearRemoteCache() {\n Transport.resetCache();\n return this;\n },\n ttAdapter: function ttAdapter() {\n return this.__ttAdapter();\n }\n });\n return Bloodhound;\n }();\n return Bloodhound;\n});\n\n(function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n return factory(a0);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"jquery\"));\n } else {\n factory(jQuery);\n }\n})(this, function($) {\n var _ = function() {\n \"use strict\";\n return {\n isMsie: function() {\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n },\n isBlankString: function(str) {\n return !str || /^\\s*$/.test(str);\n },\n escapeRegExChars: function(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n },\n isString: function(obj) {\n return typeof obj === \"string\";\n },\n isNumber: function(obj) {\n return typeof obj === \"number\";\n },\n isArray: $.isArray,\n isFunction: $.isFunction,\n isObject: $.isPlainObject,\n isUndefined: function(obj) {\n return typeof obj === \"undefined\";\n },\n isElement: function(obj) {\n return !!(obj && obj.nodeType === 1);\n },\n isJQuery: function(obj) {\n return obj instanceof $;\n },\n toStr: function toStr(s) {\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n },\n bind: $.proxy,\n each: function(collection, cb) {\n $.each(collection, reverseArgs);\n function reverseArgs(index, value) {\n return cb(value, index);\n }\n },\n map: $.map,\n filter: $.grep,\n every: function(obj, test) {\n var result = true;\n if (!obj) {\n return result;\n }\n $.each(obj, function(key, val) {\n if (!(result = test.call(null, val, key, obj))) {\n return false;\n }\n });\n return !!result;\n },\n some: function(obj, test) {\n var result = false;\n if (!obj) {\n return result;\n }\n $.each(obj, function(key, val) {\n if (result = test.call(null, val, key, obj)) {\n return false;\n }\n });\n return !!result;\n },\n mixin: $.extend,\n identity: function(x) {\n return x;\n },\n clone: function(obj) {\n return $.extend(true, {}, obj);\n },\n getIdGenerator: function() {\n var counter = 0;\n return function() {\n return counter++;\n };\n },\n templatify: function templatify(obj) {\n return $.isFunction(obj) ? obj : template;\n function template() {\n return String(obj);\n }\n },\n defer: function(fn) {\n setTimeout(fn, 0);\n },\n debounce: function(func, wait, immediate) {\n var timeout, result;\n return function() {\n var context = this, args = arguments, later, callNow;\n later = function() {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n }\n };\n callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n }\n return result;\n };\n },\n throttle: function(func, wait) {\n var context, args, timeout, result, previous, later;\n previous = 0;\n later = function() {\n previous = new Date();\n timeout = null;\n result = func.apply(context, args);\n };\n return function() {\n var now = new Date(), remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n },\n stringify: function(val) {\n return _.isString(val) ? val : JSON.stringify(val);\n },\n noop: function() {}\n };\n }();\n var WWW = function() {\n \"use strict\";\n var defaultClassNames = {\n wrapper: \"twitter-typeahead\",\n input: \"tt-input\",\n hint: \"tt-hint\",\n menu: \"tt-menu\",\n dataset: \"tt-dataset\",\n suggestion: \"tt-suggestion\",\n selectable: \"tt-selectable\",\n empty: \"tt-empty\",\n open: \"tt-open\",\n cursor: \"tt-cursor\",\n highlight: \"tt-highlight\"\n };\n return build;\n function build(o) {\n var www, classes;\n classes = _.mixin({}, defaultClassNames, o);\n www = {\n css: buildCss(),\n classes: classes,\n html: buildHtml(classes),\n selectors: buildSelectors(classes)\n };\n return {\n css: www.css,\n html: www.html,\n classes: www.classes,\n selectors: www.selectors,\n mixin: function(o) {\n _.mixin(o, www);\n }\n };\n }\n function buildHtml(c) {\n return {\n wrapper: '',\n menu: '
'\n };\n }\n function buildSelectors(classes) {\n var selectors = {};\n _.each(classes, function(v, k) {\n selectors[k] = \".\" + v;\n });\n return selectors;\n }\n function buildCss() {\n var css = {\n wrapper: {\n position: \"relative\",\n display: \"inline-block\"\n },\n hint: {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n borderColor: \"transparent\",\n boxShadow: \"none\",\n opacity: \"1\"\n },\n input: {\n position: \"relative\",\n verticalAlign: \"top\",\n backgroundColor: \"transparent\"\n },\n inputWithNoHint: {\n position: \"relative\",\n verticalAlign: \"top\"\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: \"0\",\n zIndex: \"100\",\n display: \"none\"\n },\n ltr: {\n left: \"0\",\n right: \"auto\"\n },\n rtl: {\n left: \"auto\",\n right: \" 0\"\n }\n };\n if (_.isMsie()) {\n _.mixin(css.input, {\n backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n });\n }\n return css;\n }\n }();\n var EventBus = function() {\n \"use strict\";\n var namespace, deprecationMap;\n namespace = \"typeahead:\";\n deprecationMap = {\n render: \"rendered\",\n cursorchange: \"cursorchanged\",\n select: \"selected\",\n autocomplete: \"autocompleted\"\n };\n function EventBus(o) {\n if (!o || !o.el) {\n $.error(\"EventBus initialized without el\");\n }\n this.$el = $(o.el);\n }\n _.mixin(EventBus.prototype, {\n _trigger: function(type, args) {\n var $e;\n $e = $.Event(namespace + type);\n (args = args || []).unshift($e);\n this.$el.trigger.apply(this.$el, args);\n return $e;\n },\n before: function(type) {\n var args, $e;\n args = [].slice.call(arguments, 1);\n $e = this._trigger(\"before\" + type, args);\n return $e.isDefaultPrevented();\n },\n trigger: function(type) {\n var deprecatedType;\n this._trigger(type, [].slice.call(arguments, 1));\n if (deprecatedType = deprecationMap[type]) {\n this._trigger(deprecatedType, [].slice.call(arguments, 1));\n }\n }\n });\n return EventBus;\n }();\n var EventEmitter = function() {\n \"use strict\";\n var splitter = /\\s+/, nextTick = getNextTick();\n return {\n onSync: onSync,\n onAsync: onAsync,\n off: off,\n trigger: trigger\n };\n function on(method, types, cb, context) {\n var type;\n if (!cb) {\n return this;\n }\n types = types.split(splitter);\n cb = context ? bindContext(cb, context) : cb;\n this._callbacks = this._callbacks || {};\n while (type = types.shift()) {\n this._callbacks[type] = this._callbacks[type] || {\n sync: [],\n async: []\n };\n this._callbacks[type][method].push(cb);\n }\n return this;\n }\n function onAsync(types, cb, context) {\n return on.call(this, \"async\", types, cb, context);\n }\n function onSync(types, cb, context) {\n return on.call(this, \"sync\", types, cb, context);\n }\n function off(types) {\n var type;\n if (!this._callbacks) {\n return this;\n }\n types = types.split(splitter);\n while (type = types.shift()) {\n delete this._callbacks[type];\n }\n return this;\n }\n function trigger(types) {\n var type, callbacks, args, syncFlush, asyncFlush;\n if (!this._callbacks) {\n return this;\n }\n types = types.split(splitter);\n args = [].slice.call(arguments, 1);\n while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n syncFlush() && nextTick(asyncFlush);\n }\n return this;\n }\n function getFlush(callbacks, context, args) {\n return flush;\n function flush() {\n var cancelled;\n for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n cancelled = callbacks[i].apply(context, args) === false;\n }\n return !cancelled;\n }\n }\n function getNextTick() {\n var nextTickFn;\n if (window.setImmediate) {\n nextTickFn = function nextTickSetImmediate(fn) {\n setImmediate(function() {\n fn();\n });\n };\n } else {\n nextTickFn = function nextTickSetTimeout(fn) {\n setTimeout(function() {\n fn();\n }, 0);\n };\n }\n return nextTickFn;\n }\n function bindContext(fn, context) {\n return fn.bind ? fn.bind(context) : function() {\n fn.apply(context, [].slice.call(arguments, 0));\n };\n }\n }();\n var highlight = function(doc) {\n \"use strict\";\n var defaults = {\n node: null,\n pattern: null,\n tagName: \"strong\",\n className: null,\n wordsOnly: false,\n caseSensitive: false\n };\n return function hightlight(o) {\n var regex;\n o = _.mixin({}, defaults, o);\n if (!o.node || !o.pattern) {\n return;\n }\n o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n traverse(o.node, hightlightTextNode);\n function hightlightTextNode(textNode) {\n var match, patternNode, wrapperNode;\n if (match = regex.exec(textNode.data)) {\n wrapperNode = doc.createElement(o.tagName);\n o.className && (wrapperNode.className = o.className);\n patternNode = textNode.splitText(match.index);\n patternNode.splitText(match[0].length);\n wrapperNode.appendChild(patternNode.cloneNode(true));\n textNode.parentNode.replaceChild(wrapperNode, patternNode);\n }\n return !!match;\n }\n function traverse(el, hightlightTextNode) {\n var childNode, TEXT_NODE_TYPE = 3;\n for (var i = 0; i < el.childNodes.length; i++) {\n childNode = el.childNodes[i];\n if (childNode.nodeType === TEXT_NODE_TYPE) {\n i += hightlightTextNode(childNode) ? 1 : 0;\n } else {\n traverse(childNode, hightlightTextNode);\n }\n }\n }\n };\n function getRegex(patterns, caseSensitive, wordsOnly) {\n var escapedPatterns = [], regexStr;\n for (var i = 0, len = patterns.length; i < len; i++) {\n escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n }\n regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n }\n }(window.document);\n var Input = function() {\n \"use strict\";\n var specialKeyCodeMap;\n specialKeyCodeMap = {\n 9: \"tab\",\n 27: \"esc\",\n 37: \"left\",\n 39: \"right\",\n 13: \"enter\",\n 38: \"up\",\n 40: \"down\"\n };\n function Input(o, www) {\n o = o || {};\n if (!o.input) {\n $.error(\"input is missing\");\n }\n www.mixin(this);\n this.$hint = $(o.hint);\n this.$input = $(o.input);\n this.query = this.$input.val();\n this.queryWhenFocused = this.hasFocus() ? this.query : null;\n this.$overflowHelper = buildOverflowHelper(this.$input);\n this._checkLanguageDirection();\n if (this.$hint.length === 0) {\n this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n }\n }\n Input.normalizeQuery = function(str) {\n return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n };\n _.mixin(Input.prototype, EventEmitter, {\n _onBlur: function onBlur() {\n this.resetInputValue();\n this.trigger(\"blurred\");\n },\n _onFocus: function onFocus() {\n this.queryWhenFocused = this.query;\n this.trigger(\"focused\");\n },\n _onKeydown: function onKeydown($e) {\n var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n this._managePreventDefault(keyName, $e);\n if (keyName && this._shouldTrigger(keyName, $e)) {\n this.trigger(keyName + \"Keyed\", $e);\n }\n },\n _onInput: function onInput() {\n this._setQuery(this.getInputValue());\n this.clearHintIfInvalid();\n this._checkLanguageDirection();\n },\n _managePreventDefault: function managePreventDefault(keyName, $e) {\n var preventDefault;\n switch (keyName) {\n case \"up\":\n case \"down\":\n preventDefault = !withModifier($e);\n break;\n\n default:\n preventDefault = false;\n }\n preventDefault && $e.preventDefault();\n },\n _shouldTrigger: function shouldTrigger(keyName, $e) {\n var trigger;\n switch (keyName) {\n case \"tab\":\n trigger = !withModifier($e);\n break;\n\n default:\n trigger = true;\n }\n return trigger;\n },\n _checkLanguageDirection: function checkLanguageDirection() {\n var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n if (this.dir !== dir) {\n this.dir = dir;\n this.$hint.attr(\"dir\", dir);\n this.trigger(\"langDirChanged\", dir);\n }\n },\n _setQuery: function setQuery(val, silent) {\n var areEquivalent, hasDifferentWhitespace;\n areEquivalent = areQueriesEquivalent(val, this.query);\n hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n this.query = val;\n if (!silent && !areEquivalent) {\n this.trigger(\"queryChanged\", this.query);\n } else if (!silent && hasDifferentWhitespace) {\n this.trigger(\"whitespaceChanged\", this.query);\n }\n },\n bind: function() {\n var that = this, onBlur, onFocus, onKeydown, onInput;\n onBlur = _.bind(this._onBlur, this);\n onFocus = _.bind(this._onFocus, this);\n onKeydown = _.bind(this._onKeydown, this);\n onInput = _.bind(this._onInput, this);\n this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n if (!_.isMsie() || _.isMsie() > 9) {\n this.$input.on(\"input.tt\", onInput);\n } else {\n this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n return;\n }\n _.defer(_.bind(that._onInput, that, $e));\n });\n }\n return this;\n },\n focus: function focus() {\n this.$input.focus();\n },\n blur: function blur() {\n this.$input.blur();\n },\n getLangDir: function getLangDir() {\n return this.dir;\n },\n getQuery: function getQuery() {\n return this.query || \"\";\n },\n setQuery: function setQuery(val, silent) {\n this.setInputValue(val);\n this._setQuery(val, silent);\n },\n hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n return this.query !== this.queryWhenFocused;\n },\n getInputValue: function getInputValue() {\n return this.$input.val();\n },\n setInputValue: function setInputValue(value) {\n this.$input.val(value);\n this.clearHintIfInvalid();\n this._checkLanguageDirection();\n },\n resetInputValue: function resetInputValue() {\n this.setInputValue(this.query);\n },\n getHint: function getHint() {\n return this.$hint.val();\n },\n setHint: function setHint(value) {\n this.$hint.val(value);\n },\n clearHint: function clearHint() {\n this.setHint(\"\");\n },\n clearHintIfInvalid: function clearHintIfInvalid() {\n var val, hint, valIsPrefixOfHint, isValid;\n val = this.getInputValue();\n hint = this.getHint();\n valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n !isValid && this.clearHint();\n },\n hasFocus: function hasFocus() {\n return this.$input.is(\":focus\");\n },\n hasOverflow: function hasOverflow() {\n var constraint = this.$input.width() - 2;\n this.$overflowHelper.text(this.getInputValue());\n return this.$overflowHelper.width() >= constraint;\n },\n isCursorAtEnd: function() {\n var valueLength, selectionStart, range;\n valueLength = this.$input.val().length;\n selectionStart = this.$input[0].selectionStart;\n if (_.isNumber(selectionStart)) {\n return selectionStart === valueLength;\n } else if (document.selection) {\n range = document.selection.createRange();\n range.moveStart(\"character\", -valueLength);\n return valueLength === range.text.length;\n }\n return true;\n },\n destroy: function destroy() {\n this.$hint.off(\".tt\");\n this.$input.off(\".tt\");\n this.$overflowHelper.remove();\n this.$hint = this.$input = this.$overflowHelper = $(\"